- 博客(187)
- 资源 (1)
- 问答 (1)
- 收藏
- 关注
原创 第3节 IOC与门面Facade
单例模式私有的构造函数静态成员变量来保持类的实例访问这个实例的静态方法class A { static public $instance = null; private function __construct() { } public static function getInstance() { if(!self::$instance){ self::$ins...
2020-05-05 15:07:52
329
原创 第1节 自动加载Loader深度分析
1.入口文件/public/index.php2.加载框架引导文件/thinkphp/start.php3. 引入基础文件 /thinkphp/bash.php定义环境常量载入Loader类(下文着重记录Loader)加载环境变量配置文件.env注册自动加载注册错误和异常处理机制加载惯例配置文件(就是框架自身的配置文件)define('THINK_VERSION', '5...
2020-05-04 09:11:28
396
原创 第7章 分布式消息服务中间件
7.1 分布式消息服务中间件简介队列模型一组消费者和一组发布者通过一个队列联系起来,队列中的消息有序,中间件保证有且只有一个消费者收到消息。发布者-订阅者模型一组消费者和一组发布者通过一个主题(topic)联系起来。7.2 分布式消息服务中间件的实现原理Kafka是领英(LinkedIn)开源的一款非常优秀的、支持大批量消息的分布式消息服务中间件7.2.1 消息模型Kafk...
2020-05-02 22:06:35
341
原创 第6章 分布式服务调用中间件
远程过程调用(Remote Proredure Call, RPC)是一种非常传统的技术,通过它,可以跨进程、跨机器(操作系统可以相同,也可以不同)进程过程调用6.1 分布式服务调用中间件简介RPC的基础是序列化(marshalling)和反序列化(unmarshalling),因为一切RPC消息、参数、返回值和异常等都需要被序列化后才能跨节点传递。gRPC是谷歌公司根据自己的原有产品Pr...
2020-05-02 21:03:18
784
原创 Redis分布式缓存
1.使用memcached作为本地缓存,使用Redis作为分布式缓存,还会涉及缓存一致性、缓存穿透/击穿、缓存雪崩、热点数据集中失效等问题。2.引入反向代理实现负载均衡,还会涉及session共享、文件上传下载的问题3.数据库读写分离,Mycat,它是数据库中间件,可通过它来组织数据库的分离读写和分库分表,客户端通过它来访问下层数据库,还会涉及数据同步,数据一致性的问题。4.数据库按业务分库...
2020-04-30 14:48:36
279
原创 第5章 关系型数据库访问中间件
5.1 数据库访问中间件的形式客户端程序库如:Java Jar包,阿里巴巴的TDDL(Taobao Distributed Database Layer)[dɪˈstrɪbjuːtɪd] [ler]优点是性能高、缺点是对应用有侵入数据库代理服务器如:阿里巴巴的Cobar、MyCat、Heisenberg优点是对应用零侵入、缺点是性能低。5.2 数据访问中间件的工作原理...
2020-04-29 16:58:53
552
原创 第4章 分布式同步服务中间件
分布式同步服务就是提供分布式同步服务的组件,它对外提供的功能就如同一个单机的锁服务一样,当其内部是由多个结点组成的,而且节点之间通过某种分布式一致性协议(Paxos、Raft)来协调彼此的状态。如果其中一个节点崩溃了,其他节点就自动接管其功能,继续对外提供服务,好像什么都没有发生过一样。4.1 分布式一致性协议基于状态机的复制协议,又称主动复制协议(如Paxos、Raft)集群中的每...
2020-04-29 15:03:34
566
原创 第3章 反向代理和负载均衡
3.1 反向代理负载均衡:按一定策略转发web请求服务加速:缓存静态内容、解压缩请求信息请求鉴权:3.1.1 Nginx作为Apache Web服务器的反向代理使用。Nginx是专为高并发情况而设计的,其设计思路是采用Linux/UNIX提供的非阻塞的事件处理机制(epoll)来处理请求。这样,有限的线程就可以处理数量巨大的请求。Nginx的工作线程由多个请求共享,所以其每个...
2020-04-29 15:02:33
188
原创 第2章 Web框架的实现原理
CDN(Content Delivery Network),即内容分发网络。用于缓存静态数据,减轻对Web服务器的压力负载均衡器。分发请求Web服务器集群在线存储层:存储的是Web应用处理的实时数据(热数据)离线存储层:数据落地...
2020-04-29 15:01:24
237
原创 第1章 分布式系统概述
第一部分 分布式系统概述淘宝的管理海量小文件的分布式存储系统TFS阿里巴巴开源的分布式调用框架Dubbo阿里巴巴开源的数据库中间件Cobar为了存储大量的网站索引,谷歌设计了GFS分布式文件存储系统和基于列存储的Bigtable NoSQL数据库系统为了计算PageRank算法中的页面Rank值,谷歌又设计了MapReduce分布式计算系统为了方便分布式系统中不同主机间的协调,谷歌又...
2020-04-27 11:11:32
383
转载 docker配置nginx+php各种坑
docker部署nginx+php的介绍很多,我也是安装上面的来部署,发现各种坑,在这给列举下,供大家参考。1、安装好docker的nignx 和php2、修改nginx.conf配置,加上php解析其中location ~ .php$ {include fastcgi_params;fastcgi_param SCRIPT_FILENAME documentroot document...
2020-01-05 08:51:39
917
原创 docker 初识
由docker菜鸟教程整理笔记我认为笔记的意义在于有的放矢,而不是像字典一样的详细。所以我后期的笔记风格都会以言简意赅为主,如果有什么不懂得地方,直接百度。Docker 容器的使用获取镜像docker pull ubuntu启动容器docker run -it ubuntu /bin/bash查看所有的容器docker ps -a启动已停止的容器docker start 容器i...
2020-01-03 14:54:56
368
原创 常用状态码
200 OK:请求已正常处理。301 Moved Permanently永久性重定向302 Found:临时性重定向。304 Not Modified:资源已找到,但未符合条件请求。401 Unauthorized:未授权。403 Forbidden:禁止访问404 Not Found:找不到资源。500 Internal Server Error :服务器错误502 Bad G...
2019-12-18 22:53:38
154
原创 Nginx面试
1.请解释一下什么是 Nginx ?Nginx ,是一个 Web 服务器和反向代理服务器,用于 HTTP、HTTPS、SMTP、POP3 和 IMAP 协议。Nginx 的主要功能如下:作为 http server (代替 Apache ,对 PHP 需要 FastCGI 处理器支持)FastCGI:Nginx 本身不支持 PHP 等语言,但是它可以通过 FastCGI 来将请求...
2019-12-18 22:22:00
160
原创 微信公众号的面试题
一.微信有哪九大高级接口语音识别客服接口OAuth2.0网页授权生成带参数二维码获取用户地理位置获取用户基本信息获取关注者列表用户分组接口上传下载多媒体二.OAuth2.0认证流程?与微信OAuth2.0认证流程有什么不同?OAuth2.0处理流程a.获得用户许可,得到授权码codeb.根据code获得access tokenc.通过access token获得...
2019-12-18 21:30:39
2370
原创 在项目中,你遇到过哪些问题,是如何解决的
1.客户投诉:接口报错搭建sentry,实时业务监控,异常邮件告警。2.如果是代码问题:断点思考百度google试验优化提测3.如果是业务逻辑问题暂停找PM核对再核对4.没有需求文档、没有业务流程图、没有数据字典,没有注释跑一条业务跟踪数据流向分析代码用途整理业务逻辑整理数据走向,表间关系至于解决问题,下班后多看书,遇到问题,知道去哪个方...
2019-12-18 20:28:34
7256
原创 RESTful API接口设计标准及规范
URI规范不用大写;用中杠-不用下杠_;参数列表要encode;URI中的名词表示资源集合,使用复数形式。方法GET:查询POST:创建单个资源PUT:全量更新PATCH/pætʃ/ :部分更新DELETE:删除...
2019-12-18 20:28:22
1202
1
原创 ThinkPHP5、Swoole、 Laravel、,Phalcon,并理解其生命周期
ThinkPHP51、入口文件 虚拟主机目录/public/index.php2、引入启动文件 虚拟主机目录/thinkphp/start.php3、运行App下面的run方法 虚拟主机目录/thinkphp/library/think/App.php -> run() #694、实例化$request对象 虚拟主机目录/thinkphp/librar...
2019-12-18 20:28:04
816
原创 MySQL数据库设计及性能优化经验
一.SQL优化二.键索引、去外键、批处理三.引入内存缓存四.主从复制、读写分离五.分库分表分区六.向上扩展(扩展硬件)CPU 内存 SSD七.集群八.大数据超过千亿级的数据,抛弃关系型数据库,引入大数据的解决方案。...
2019-12-18 20:27:34
267
原创 深入理解 PHP 面向对象编程(OOP)
一.魔术方法魔术方法作用__construct()当一个对象创建时调用此方法__destruct()PHP将在对象被销毁前(即从内存中清除前)调用这个方法__call()当调用一个未定义的方法是调用此访求__callStatic()当无法通过静态方法访问时自动触发__get()当调用一个未定义的属性时访问此方法__set()给一个未定...
2019-12-18 20:26:45
629
原创 Linux常用命令
关机 (系统的关机、重启以及登出 )shutdown -h now 关闭系统shutdown -r now 重启reboot 重启logout 注销网络 - (以太网和WIFI无线)ifconfig eth0 显示一个以太网卡的配置文件和目录cdpwd 显示工作路径lstree 显示文件和目录由根目录开始的树形结构lstree 显示文件和目录由根目录开...
2019-12-18 20:26:23
188
原创 Nginx、Apache、PHP、MySQL各自的底层工作原理
Nginx的底层工作原理一、Nginx工作原理与模块介绍1、Nginx基本工作原理NGINX以高性能的负载均衡器,缓存,和web服务器闻名。Nginx由内核和模块组成,当它接到一个HTTP请求时,仅仅通过查找配置文件将客户端请求映射到一个location block,而在这个location中所配置的每个指令将会启动不同的模块去完成相应的工作。因此模块可以看做Nginx真正的劳动工作者。通...
2019-12-16 07:41:47
1293
原创 Swoole面试
1.swoole搭建图文直播课和聊天室的业务逻辑2.使用swoole遇到了哪些问题a.进程隔离:多进程之间会产生进程隔离,global无效,不能共用一个mysql,redis连接,所以每个进程单独开一个数据库连接如何解决:redis 、swoole_tableb.是否可以共用1个redis或mysql连接不可以,无法确定返回处理的reactor的idc. 为什么客户端请求一...
2019-12-15 11:02:08
10701
原创 打造扛得住的MySQL数据库
数据库性能的参数影响数据库性能的因素大表带来的问题数据库性能的参数QPSTPSCPU内存并发量:同一时间处理的请求数量磁盘IO数据库连接数(max_connections默认100)影响数据库性能的因素sql查询速度大多数的性能都能通过sql优化来解决网卡流量减少从服务器的数量进行分级缓存避免使用“select *”进行查询分离业务网络和服务器网络...
2019-12-03 22:30:01
374
原创 从原理到场景系统讲解PHP缓存技术
缓存CDN缓存原理数据库查询数据缓存全页面静态化从页面片段缓存到facebook的BigPige技术集群方案redis官方集群解决方案redis配置集群...
2019-12-02 22:29:56
389
原创 H5 代码规范
1.文档类型声明 <! doctype html>2.元素名小写3.关闭所有html元素 <p></p>4.关闭空的html元素 <meta charset=“utf-8” />5.属性名小写6.属性值引号7.图片属性alt8.等号左右不用空格9.避免代码过长(80字符)10.缩进2个空格11.尽量补全html、body、he...
2019-01-22 11:08:59
593
原创 基础班:第三节
一.用数组结构实现双端队列什么是双端队列(或双向队列)Deque,全名double-ended queue?即元素可以在队列的任意一段入队或出队,如果我们把这些方法叫做insertLeft()和insertRight(),以及removeLeft()和removeRight()。如果严格禁止调用insertLeft()和removeLeft()方法(或禁用右段的操作),双端队列功能就和栈一...
2018-10-11 13:53:21
248
原创 基础班:第二节
一.荷兰国旗问题1.1给定一个数组Arr,和一个数num,请把小于等于num的数放在数组的左边,大于num的数放在数组的右边。要求额外空间复杂度O(1),时间复杂度O(N)1.2 荷兰国旗问题给定一个数组Arr,和一个数num,请把小于num的数放在数组的左边,等于num的数放在数组的中间,大于num的数放在数组的右边。要求额外空间复杂度O(1),时间复杂度O(N)...
2018-10-07 16:11:26
354
原创 基础班:第一节
一. 算法的衡量标准1.1 时间复杂度在计算机科学中,算法的时间复杂度是一个函数,它定性描述了该算法的运行时间。这是一个关于代表算法输入值的字符串的长度的函数。时间复杂度常用大O符号表述,不包括这个函数的低阶项和首项系数。1.2 空间复杂度空间复杂度(Space Complexity)是对一个算法在运行过程中临时占用存储空间大小的量度,记做S(n)=O(f(n))。比如直接插入排序的...
2018-10-04 22:57:01
279
原创 前言
本次笔记为了记录第一次学习数据结构和算法。来源网站牛客网:左神《数据结构和算法》本人真心感觉左神讲的内容很实用,讲的也很有逻辑性,很值得大家学习。向左神致敬!!!...
2018-10-04 22:12:50
277
原创 第三章:进程线程模型
提高CPU的利用率进程是对正在运行程序的一个抽象。通过进程,可以使系统具有支持并发操作的能力,可将一个单独的CPU变成多个虚拟的CPU线程是进程中的运行实体3.1 多道程序设计模型1.1 程序的执行顺序程序:一个在时间上按严格次序前后相继的机器指令或高级语言编写的语句的操作序列特点 :顺序性 程序和机器执行的活动严格按顺序执行封闭性 资源的状态只有程序本...
2018-09-03 22:44:40
1219
原创 第三章:Process & Event IO 实践
转载地址一.进程通信1.共享内存共享内存就是允许两个不相关的进程访问同一个逻辑内存。共享内存是在两个正在运行的进程之间共享和传递数据的一种非常有效的方式。不同进程之间共享的内存通常安排为同一段物理内存。进程可以将同一段共享内存连接到它们自己的地址空间中,所有进程都可以访问共享内存中的地址,就好像它们是由用C语言函数malloc分配的内存一样。而如果某个进程向共享内存写入数据,所...
2018-08-31 20:20:20
280
PHP开发晋升课程 BAT资深工程师解析Tp5+Tp6底层源码
2020-05-05
在centos下安装php扩展redis成功后,无法连接redis,求安装过的大神指教
2016-11-20
TA创建的收藏夹 TA关注的收藏夹
TA关注的人