一个php技术栈后端猿的知识储备仓库
前言
基础不牢,地动山摇,谨以此句提醒自己。
备注
状态, 含义
---------, -------
not-start, 当前未开始总结
doing, 总结中
α, 目前仅供参考未修正和发布
done, 总结完毕
fixing, 查漏补缺修改中
目录
- 
PHP基础学习(done) 
- 
PHP深入学习(doing) - 理解yield
- php的协程
- 生命周期
- 垃圾回收
- 扩展开发
 
- 
网络编程(doing) - php实现web服务器
- go实现web服务器
- c实现web服务器
- php扩展实现web服务器
 
- 
问题排查(doing) - nginx/php/业务日志
- 问题排查实例分析
 
- 
Mysql(doing) 
- 
- InnoDB
- MyISAM
- Memory
- Archive
- Blackhole\CSV\Federated\merge\NDB
 
- 
- 原子性(Atomicity)
- 一致性(Consistency)
- 隔离性(Isolation)
- READ UNCOMMITTED:未提交读
- READ COMMITTED:提交读/不可重复读
- REPEATABLE READ:可重复读(MYSQL默认事务隔离级别)
- SERIALIZEABLE:可串行化
 
- 持久性(Durability)
 
- 
- 建立表结构时添加的索引
- 主键唯一索引
- 唯一索引
- 普通索引
- 联合索引
- 最左匹配原则
 
 
- 依据是否聚簇区分
- 聚簇索引
- 非聚簇索引
 
- 索引底层数据结构
- hash索引
- b-tree索引
- b+tree索引
 
 
- 建立表结构时添加的索引
- 
- 悲观锁
- 乐观锁
 
- 
分表 - 垂直分表
- 水平分表
 
- 
sql优化 
- 
主从配置 
 
- 
Redis(doing) 
- 
Docker 
- 
设计模式(done/fixing) 
- 
- 数组
- 堆/栈
- 树
- 队列
- 链表
- 图
- 散列表
 
- 
算法(doing) 
- 
网络基础(doing) - 互联网协议概述
- client和nginx简易交互过程
- nginx和php-fpm简易交互过程
- http
- 报文
- 报文头部
- 报文体
 
- 常见13种状态码
- 方法method
- https
- http2
- websocket
 
- 报文
 
- 
计算机基础(doing) - linux常用命令
- shell
 
- 
高并发相关(not-start) 
- 
golang进阶(doing) - go框架源码阅读&解析
- golang框架解析-beego
- golang框架解析-iris
- golang框架解析-gin
- golang框架解析-echo
- golang框架解析-revel
- golang框架解析-Martini
 
- go常用包解析
- go常用包解析-fasthttp
 
 
- go框架源码阅读&解析
测试用例
设计模式
运行脚本: php patterns/[文件夹名称]/test.php
例如,
测试责任链模式: 运行 php patterns/chainOfResponsibility/test.php
运行结果:
请求5850c8354b298: 令牌校验通过~
请求5850c8354b298: 请求频率校验通过~
请求5850c8354b298: 参数校验通过~
请求5850c8354b298: 签名校验通过~
请求5850c8354b298: 权限校验通过~
算法
运行脚本: php algorithm/test.php [算法名称|空获取列表]
例如,
测试冒泡排序: 运行 php algorithm/test.php bubble
运行结果:
==========================冒泡排序=========================
Array
(
    [0] => 11
    [1] => 67
    [2] => 3
    [3] => 121
    [4] => 71
    [5] => 6
    [6] => 100
    [7] => 45
    [8] => 2
)
=========上为初始值==================下为排序后值=============
Array
(
    [0] => 2
    [1] => 3
    [2] => 6
    [3] => 11
    [4] => 45
    [5] => 67
    [6] => 71
    [7] => 100
    [8] => 121
)
常见redis运用实现
运行脚本: php redis/test.php [名称|空获取列表]
例如,
测试悲观锁: 运行 php redis/test.php p-lock
运行结果:
执行count加1操作~
count值为:1
纠错
如果大家发现有什么不对的地方,可以发起一个issue或者pull request,我会及时纠正,THX~
补充:发起pull request的commit message请参考文章Commit message编写指南
英文版
因为国外开发者的要求和个人的时间有限,征集大家有兴趣的可以把本项目进行英文版翻译。希望国外的developer也可以受益于这个项目~
翻译文件认领申请:https://github.com/TIGERB/easy-tips/issues/36
赞赏
Contributors
This project exists thanks to all the people who contribute.
Backers
Thank you to all our backers! ? [Become a backer]
Sponsors
Support this project by becoming a sponsor. Your logo will show up here with a link to your website. [Become a sponsor]
 該所有者的項目
                                                                (
                                                                該所有者的項目
                                                                (