自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(166)
  • 收藏
  • 关注

原创 分布式架构的一个概述

现在的架构很多,各种各样的,如高并发架构、异地多活架构、容器化架构、微服务架构、高可用架构、弹性化架构等,还有和这些架构相关的管理型的技术方法,如 DevOps、应用监控、自动化运维、SOA 服务治理、去 IOE 等等,还有很多。那什么是分布式系统?分布式系统是支持分布式处理的软件系统,是由通信网络互联的多处理机体系结构上执行任务的系统。包括分布式操作系统、分布式程序设计语言及其编译系统、分布...

2019-02-11 12:54:25 8364 6

原创 laravel所有底层源码解析链接

 Laravel Passport——OAuth2 API 认证系统源码解析(下)laravel源码解析  Laravel Passport——OAuth2 API 认证系统源码解析(上)laravel源码解析  Laravel Broadcast——广播系统源码剖析laravel源码解析  Laravel Queue——消息队列任务处理器源码剖析laravel源码解析  La...

2019-01-17 12:01:02 3870

原创 Laravel 源码分析之Eloquent 的工作原理简析

对象 职责 Model 1. 调用的入口 2. 提供数组->Models的转化方法 Eloquent\Builder 传递人(传递调用的方法, 传递执行的结果等) Query\Builder 1. 记录一些临时信息(where, order等) 2. 执行sql获取结果 总结不是还有insert\update\delete吗?——这些原理也是一...

2019-01-17 08:01:18 506

原创 单点登录实现原理(SSO)

简介单点登录是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统的保护资源,若用户在某个应用系统中进行注销登录,所有的应用系统都不能再直接访问保护资源,像一些知名的大型网站,如:淘宝与天猫、新浪微博与新浪博客等都用到了这个技术。 原理 单点登录 有一个独立的认证中心,只有认证中心才能接受用户的用户名和密码等信息进行认证,其他系统不提供登录入口,只接受认证中心的间接授...

2019-01-16 07:11:34 309 1

原创 ES架构及原理

Elasticsearch 是一个兼有搜索引擎和NoSQL数据库功能的开源系统,基于Java/Lucene构建,可以用于全文搜索,结构化搜索以及近实时分析。说明: Lucene:只是一个框架,要充分利用它的功能,需要使用JAVA,并且在程序中集成Lucene,学习成本高,Lucene确实非常复杂。 Elasticsearch 是 面向文档型数据库,这意味着它存储的是整个对象或者 文档,它不...

2019-01-15 14:53:03 10676 1

原创 ajax 同步和异步区别?

ajax 同步和异步区别?我们在使用 ajax 一般都会使用异步处理。异步处理呢就是我们通过事件触发到 ajax,请求服务器,在这个期间无论服务器有没有响应,客户端的其他代码一样可以运行。同步处理:我们通过实践触发 ajax,请求服务器,在这个期间等待服务器处理请求, 在这个期间客户端不能做任何处理。当 ajax 执行完毕才会继续执行其他代码。 同步:提交请求->等待服务...

2019-01-09 08:57:06 63719

原创 php在线支付之支付宝

 在电商类的网站实现的过程中,我们经常会涉及到支付的功能,目前比较流行的第三方支付是支付宝和微信,所谓第三方支付,就是一些和各大银行签约、并具备一定实力和信誉保障的第三方独立机构提供的交易支持平台。在通过第三方支付平台的交易中,买方选购商品后,使用第三方平台提供的账户进行货款支付,由第三方通知卖家货款到达。本文以支付宝的接入为案例。一.基本流程图支付流程二.详细步骤分析:(1)...

2019-01-06 20:54:17 1040 6

原创 php开发支付宝支付

前言前端时间自己开发了一个drupal的支付宝模块,现在整理一下过程,因为支付宝官方网站提供的接口及文档都是新接口的,而且使用新接口的过程比较麻烦一点,所以整理一下1.支付宝的账号必须经过企业资格的审核才可以进行正式环境的支付。不过不是企业也可以过一把支付宝开发的瘾,因为支付宝提供了沙箱环境,供你(对,就是还不具备企业资格或者审查没通过的你)测试2.支付宝新的开发接口和老的不太一样,以...

2019-01-06 20:51:54 1272 8

原创 laravel实现第三方登陆

首先composer安装依赖: 在cmd里面 【确保自己已经安装能使用composer】composer require socialiteproviders/qq注册服务提供者(同时注释掉原有的Socialite提供者): config下的app.php'providers' => [ // 移除 'Laravel\Socialite\SocialiteServic...

2018-12-17 11:58:42 870 1

原创 数据库的性能优化以及数据库日志

1、sql语句的执行计划是否正常2、减少应用和数据库的交互次数、同一个sql语句的执行次数3、数据库实体的碎片的整理(特别是对某些表经常进行insert和delete动作,尤其注意,索引字段为系列字段、自增长字段、时间字段,对于业务比较频繁的系统,最好一个月重建一次)4、减少表之间的关联,特别对于批量数据处理,尽量单表查询数据,统一在内存中进行逻辑处理,减少数据库压力(java处理批量数据不...

2018-12-04 21:01:43 6564 4

原创 必须知道的十种基础算法

算法一:快速排序算法快速排序是由东尼·霍尔所发展的一种排序算法。在平均状况下,排序 n 个项目要Ο(n log n)次比较。在最坏状况下则需要Ο(n2)次比较,但这种状况并不常见。事实上,快速排序通常明显比其他Ο(n log n) 算法更快,因为它的内部循环(inner loop)可以在大部分的架构上很有效率地被实现出来。快速排序使用分治法(Divide and conquer)策略来把一...

2019-02-20 21:38:25 617

原创 分布式锁的作用及实现(Redis)

一、什么是分布式锁?要介绍分布式锁,首先要提到与分布式锁相对应的是线程锁、进程锁。线程锁:主要用来给方法、代码块加锁。当某个方法或代码使用锁,在同一时刻仅有一个线程执行该方法或该代码段。线程锁只在同一JVM中有效果,因为线程锁的实现在根本上是依靠线程之间共享内存实现的,比如synchronized是共享对象头,显示锁Lock是共享某个变量(state)。进程锁:为了控制同一操作系统中多...

2019-02-20 21:35:27 510

原创 SQL语句优化

SQL语句优化  怎么加快查询速度,优化查询效率,主要原则就是应尽量避免全表扫描,应该考虑在where及order by 涉及的列上建立索引。  建立索引不是建的越多越好,原则是:  第一:一个表的索引不是越多越好,也没有一个具体的数字,根据以往的经验,一个表的索引最多不能超过6个,因为索引越多,对update和insert操作也会有性能的影响,涉及到索引的新建和重建操作。  第二...

2019-02-20 21:32:51 558 2

原创 数据结构:八大数据结构分类

本文目录:数据结构分类数据结构分类 1、数组 2、栈 3、队列 4、链表 5、树 6、散列表 7、堆 8、图数据结构分类数据结构是指相互之间存在着一种或多种关系的数据元素的集合和该集合中数据元素之间的关系组成 。 常用的数据结构有:数组,栈,链表,队列,树,图,堆,散列表等,如图所示:  每一种数据结构都有着独特的数据存储方式,下面为大家介绍它们的结构和优缺...

2019-02-20 21:30:47 478 1

原创 安全架构平台设计

1.Web 安全常见攻击手段(基本知识)详细:XSS(脚本注入)、 SQL 注入、防盗链、CSRF(Token 伪造)、上传漏洞、等。彻底分析根据不同的业务场景,分析如何彻底防御 Token 伪造请求2.信息加密与密钥管理详细:单向散列、对称加密、非对称加密、密钥管理等,详细谈到各种加密算法优缺点及应用场景。3.互联网 API 接口安全设计详细:针对互联网 API 接口,如何保证接...

2019-02-12 10:34:30 1378

原创 redis实现高并发下的抢购/秒杀功能

抢购/秒杀是如今很常见的一个应用场景,那么高并发竞争下如何解决超抢(或超卖库存不足为负数的问题)呢?常规写法:查询出对应商品的库存,看是否大于0,然后执行生成订单等操作,但是在判断库存是否大于0处,如果在高并发下就会有问题,导致库存量出现负数这里我就只谈redis的解决方案吧...我们先来看以下代码(这里我以laravel为例吧)是否能正确解决超抢/卖的问题:<?php...

2019-01-22 20:33:42 392

原创 php抽奖概率算法(适合大转盘等概率)

<?php/* * 经典的概率算法, * $proArr是一个预先设置的数组, * 假设数组为:array(100,200,300,400), * 开始是从1,1000 这个概率范围内筛选第一个数是否在他的出现概率范围之内, * 如果不在,则将概率空间,也就是k的值减去刚刚的那个数字的概率空间, * 在本例当中就是减去100,也就是说第二个数是在1,900这个范围内筛选的。...

2019-01-22 19:47:37 952

原创 PHP四种基础算法详解

1.冒泡排序介绍:冒泡排序(Bubble Sort,台湾译为:泡沫排序或气泡排序)是一种简单的排序算法。它重复地走访过要排序的数列,依次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。步骤:比较相邻的元素。如果第一个比第二个大,就交换他们两...

2019-01-22 19:38:39 229

原创 版本控制--码云 安装以及使用

下载安装Git这里选择的是客户端安装版,地址:https://git-scm.com/download/win。 一直下一步即可,安装完成后,桌面右键如下:Git GUI Here(客户端) 和GIT Batch Here(终端) 注册码云打开设置-SSH公钥,如下图:本机生成公钥在Git终端依次输入:1、cd ~/.ssh,显示 bash: cd: /c/User...

2019-01-21 21:05:16 513

原创 MySQL监控系统Lepus的搭建

MySQL监控系统Lepus的搭建   现在流行的监控系统很多,选择一个合适自己的就可以了,例如Zabbix、Nagios;监控MySQL为主的有MySQLMTOP、Lepus。本文主要介绍快速部署lepus以及监控MySQL,因为作为DBA我们还是注重MySQL的监控,当然系统状态也非常重要,监控成为我们日常工作不可缺少,废话就不多说了,下面开始环境搭建。官方网站:http://www....

2019-01-20 09:15:00 771 1

原创 zabbix的原理详解及其搭建

一.Zabbix简介   Zabbix 是一款功能强大的分布式开源监控系统,线上用的也比较多,个人感觉是cacti和nagios的整合,又天生自带分布式监控,大批量主机运维监控优势明显        zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。       zabbix由zabbix server与可选组件zabbix agent两部...

2019-01-20 09:10:25 585

原创 lumen登陆 注册 API实例

一、准备工作1、Lumen环境搭建可参考上篇文章《Lumen安装配置使用入门》一文。 2、数据库信息数据库地址:localhost数据库名称:lumenauth数据库用户:root数据库密码:****** 二、初始化Lumenlumen new LumenAuth三、配置1、数据库配置在命令行进入项目所在文件夹,执行命令:copy ....

2019-01-19 22:48:37 1122

原创 电商产品之订单拆分规则与流程

什么是订单拆分用户提交的订单在物理上并不是一个不可拆分的单元,也即:它不是一个颗粒度最小的实体,可以进行多种形式的分解,具体如何分解根据不同的业务场景,可以进行不同形式的拆分。为什么要订单拆分之所以要订单拆分,一般会有以下几个原因:1. 仓库原因一些大型电商公司(京东、考拉等),都有自建仓库,商品会根据以往出货量数据在各个不同的仓库进行备货,用户的订单如果包含多个仓库的商品,那...

2019-01-19 22:30:45 8164 1

原创 charles作用讲解

简介Charles 是在 Mac 下常用的网络封包截取工具,在做移动开发时,我们为了调试与服务器端的网络通讯协议,常常需要截取网络封包来分析。Charles 通过将自己设置成系统的网络访问代理服务器,使得所有的网络访问请求都通过它来完成,从而实现了网络封包的截取和分析。除了在做移动开发中调试端口外,Charles 也可以用于分析第三方应用的通讯协议。配合 Charles 的 SS...

2019-01-19 21:54:10 1754

原创 Charles使用详解

一、主界面介绍    二、网页抓包启动 Charles 后,需要将 Charles 设置成系统代理,选择菜单中的 “Proxy” –> “macOS Proxy” 来将 Charles 设置成系统代理。如下所示: 这样你会发现,你通过浏览器请求的网址都会出现在这里。点击某一个网址后,你会发现右边会出现这个网址请求的大概信息,点击具体的请求后会出现...

2019-01-19 21:39:50 403

转载 微信企业付款到个人用户提现功能实现

1.基本配置//公众账号appid $data["mch_appid"] = 'appid'; //商户号 $data["mchid"] = ''; //随机字符串 $data["nonce_str"] = 'suiji'.mt_rand(100,999); //商户订单号 $data["partner_trade_no"]=date('YmdHis').mt_ra...

2019-01-18 10:53:09 4350

原创 PHP处理Ajax请求与Ajax跨域

PHP判断是否为Ajax请求我们知道,在发送ajax请求的时候,可以通过XMLHttpRequest这个对象,创建自定义的header头信息, 在jquery框架中,对于通过它的$.ajax, $.get, 或者$.post方法请求网页内容时,它会向服务器传递一个HTTP_X_REQUESTED_WITH的参数,php中就是在header一层判断是否是ajax请求,对应的根据$_SERVER[...

2019-01-18 08:49:07 230

原创 Redis 的 5 个常见应用场景

前言Redis 是一个强大的内存型存储,具有丰富的数据结构,使其可以应用于很多方面,包括作为数据库、缓存、消息队列等等。如果你的印象中Redis只是一个 key-value 存储,那就错过了Redis很多强大的功能,下面就是实际应用场景中5个最普遍的案例。1. 全页面缓存如果你使用的是服务器端内容渲染,你又不想为每个请求重新渲染每个页面,就可以使用 Redis 把常被请求的内容缓存...

2019-01-18 08:42:52 324

原创 PHP 中九大缓存技术总结

1、全页面静态化缓存也就是将页面全部生成html静态页面,用户访问时直接访问的静态页面,而不会去走php服务器解析的流程。此种方式,在CMS系统中比较常见,比如dedecms;一种比较常用的实现方式是用输出缓存:Ob_start()******要运行的代码*******$content = Ob_get_contents();****将缓存内容写入html文件*****Ob_end_...

2019-01-18 08:39:19 252

原创 常用负载均衡

HTTP 重定向对于HTTP 重定向,你一定不陌生,它可以将 HTTP 请求进行转移,在 Web 开发中我们经常会用它来完成自动跳转,比如用户登录成功后跳转到相应的管理页面。 这种重定向完全由HTTP 定义,并且由HTTP 代理和Web 服务器共同实现。很简单,当HTTP 代理(比如浏览器)向Web服务器请求某个URL后,Web 服务器可以通过HTTP 响应头信息中的Location 标记来返...

2019-01-18 08:37:10 458

原创 项目中常用的19条MySQL优化

一、EXPLAIN做MySQL优化,我们要善用 EXPLAIN 查看SQL执行计划。下面来个简单的示例,标注(1,2,3,4,5)我们要重点关注的数据type列,连接类型。一个好的sql语句至少要达到range级别。杜绝出现all级别 key列,使用到的索引名。如果没有选择索引,值是NULL。可以采取强制索引方式 key_len列,索引长度 rows列,扫描行数。该值是个预估...

2019-01-18 08:35:49 240 1

转载 10 件在 PHP 7 中不要做的事情

1. 不要使用mysql_函数这一天终于来了,从此你不仅仅“不应该”使用mysql_函数。PHP 7 已经把它们从核心中全部移除了,也就是说你需要迁移到好得多的mysqli_函数,或者更灵活的 PDO 实现。2. 不要编写垃圾代码这一条可能易于理解,但是会变得越来越重要,因为 PHP 7 的速度提升可能会隐藏你的一些问题。不要仅仅满足于你的站点速度,因为迁移到 PHP 7 才让它变快。...

2019-01-18 08:34:03 338

原创 PHP采集利器snoopy讲解

Snoopy是一个php类,用来模拟浏览器的功能,可以获取网页内容,发送表单。Snoopy正确运行需要你的服务器的PHP版本在4以上, 并且支持PCRE(Perl Compatible Regular Expressions),基本的LAMP服务都支持。一、Snoopy的一些特点1.抓取网页的内容 fetch2.抓取网页的文本内容 (去除HTML标签) fetchtext3.抓取网页的链...

2019-01-17 21:32:31 968

原创 Redis知识点

介绍:Redis 是一个开源的使用 ANSI C 语言编写、遵守 BSD 协议、支持网络、可基于内存亦可持久化的日志型、Key-Value 数据库,并提供多种语言的 API的非关系型数据库。传统数据库遵循 ACID 规则。而 Nosql(Not Only SQL 的缩写,是对不同于传统的关系型数据库的数据库管理系统的统称) 一般为分布式而分布式一般遵循 CAP 定理。Github 源码:h...

2019-01-17 21:28:01 196

原创 电商中的秒杀实现思路

秒杀与其他业务最大的区别在于:秒杀的瞬间,(1)系统的并发量会非常的大(2)并发量大的同时,网络的流量也会瞬间最常用的办法就是做页面静态化,也就是常说的前后端分离,把静态页面直接缓存到用户的浏览器端,所需要的数据从服务端接口动态获取。这样会大大节省网络的流量,再加上CDN,一般不会有大问题。这里的核心问题就在于如何在大并发的情况下能保证DB能扛得住压力,因为大并发的瓶颈在于DB。如果...

2019-01-17 21:20:18 485

原创 lnmp线上项目上传配置

此项目为laravel  我的是laravel5.7这个配置还是有些麻烦的!!!首先你的阿里云服务器的安全组要配置相关的端口范围这就你们自己搞定吧!然后按照lnmp提供官网  https://lnmp.org/install.html 安装lnmp的时候不要把数据库密码忘了!!!密码忘记了网站:https://www.cnblogs.com/SmartNing/p/5178628.h...

2019-01-17 21:13:14 189

原创 Thinkphp5.0和laravel之间的区别

Thinkphp:$this->display()Laravel:return view()跨站方式:Thinkphp:需要手动完成防止跨站攻击的代码Laravel:考虑到跨转请求伪造,使用form表单以post方式传值,且要在form表单中加入{{ csrf_field() }}来完成,不加会显示token令牌错误路由性:Thinkphp(3.2):必要要填写控制器...

2019-01-17 15:19:33 671

原创 oAuth协议的好处

1、OAuth产生的背景 随着互联网的深入发展,一些互联网巨头积累了海量的用户和数据。对于平台级软件厂商来说,用户的需求多种多样,变化万千以一己之力予以充分满足,难免疲于本命。因此将数据以接口的形式开放的众多的第三方开发者,便成了必然的趋势。第三方开发者经过二次开发,满足一小部分用户的独特需求,即能够是自己获取利益,也能够让数据流动起来,在大平台周围形成一个良性的生态环境能够,最终达到用户,平...

2019-01-17 12:01:00 708

原创 FTP协议及工作原理详解

1. FTP协议 什么是FTP呢?FTP 是 TCP/IP 协议组中的协议之一,是英文File Transfer Protocol的缩写。该协议是Internet文件传送的基础,它由一系列规格说明文档组成,目标是提高文件的共享性,提供非直接使用远程计算机,使存储介质对用户透明和可靠高效地传送数据。简单的说,FTP就是完成两台计算机之间的拷贝,从远程计算机拷贝文件至自己的计算机上,称之为“下...

2019-01-17 08:38:24 1046

原创 sphinx全文检索引擎

讲解Sphinx是一个全文检索引擎。主要为其他应用提供高速、低空间占用、高结果 相关度的全文搜索功能。Sphinx可以非常容易的与SQL数据库和脚本语言集成。当前系统内置MySQL和PostgreSQL 数据库数据源的支持,也支持从标准输入读取特定格式 的XML数据。通过修改源代码,用户可以自行增加新的数据源(例如:其他类型的DBMS 的原生支持)Sphinx的特性?高速的...

2019-01-17 07:57:51 191

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除