一个php技术栈后端猿的知识储备大纲
<h1 align="center">Easy Tips</h1>
<p align="center">
<a href="https://github.com/TIGERB/easy-tips#目录">
  <img src="https://img.shields.io/badge/php-done-brightgreen.svg" alt="php">
</a>
<a href="https://github.com/TIGERB/easy-tips/tree/master/mysql">
  <img src="https://img.shields.io/badge/mysql-doing-blue.svg" alt="mysql">
</a>
<a href="https://github.com/TIGERB/easy-tips/tree/master/redis">
  <img src="https://img.shields.io/badge/redis-doing-blue.svg" alt="redis">
</a>
<a href="https://github.com/TIGERB/easy-tips/tree/master/patterns">
  <img src="https://img.shields.io/badge/patterns-done-brightgreen.svg" alt="patterns">
</a>
<a href="https://github.com/TIGERB/easy-tips/tree/master/algorithm">
  <img src="https://img.shields.io/badge/algorithm-%CE%B1-yellowgreen.svg" alt="algorithm">
</a>
<a href="https://github.com/TIGERB/easy-tips/tree/master/data-structure">
  <img src="https://img.shields.io/badge/data--structure-doing-blue.svg" alt="data-structure">
</a>
<a href="https://github.com/TIGERB/easy-tips/tree/master/network">
  <img src="https://img.shields.io/badge/network-doing-blue.svg" alt="network">
</a>
</p>
<br>
> 一个php技术栈后端猿的知识储备大纲
## 前言
为什么把php,mysql,redis放在前三位?因为php/mysql/redis基础是一个当代phper的根基。
## 备注
状态        | 含义
--------- | -------
not-start | 当前未开始总结
doing     | 总结中
α         | 目前仅供参考未修正和发布
done      | 总结完毕
fixing    | 查漏补缺修改中
## 目录
- PHP(doing)
  - 符合PSR的PHP编程规范(含个人建议)
    - [实例](https://github.com/TIGERB/easy-tips/blob/master/php/standard.php)
    - [文档](https://github.com/TIGERB/easy-tips/blob/master/php/standard.md)
    - [经验](https://github.com/TIGERB/easy-tips/blob/master/php/artisan.md)
  - 基础知识[读(R)好(T)文(F)档(M)]
    - [数据类型](http://php.net/manual/zh/language.types.php)
    - [运算符优先级](http://php.net/manual/zh/language.operators.precedence.php)
    - [string函数](http://php.net/ref.strings.php)
    - [array函数](http://php.net/manual/zh/ref.array.php)
    - [math函数](http://php.net/manual/zh/ref.math.php)
    - [面向对象](http://php.net/manual/zh/language.oop5.php)
    - 版本新特性
      - [7.1](http://php.net/manual/zh/migration71.new-features.php)
      - [7.0](http://php.net/manual/zh/migration70.new-features.php)
      - [5.6](http://php.net/manual/zh/migration56.new-features.php)
      - [5.5](http://php.net/manual/zh/migration55.new-features.php)
      - [5.4](http://php.net/manual/zh/migration54.new-features.php)
      - [5.3](http://php.net/manual/zh/migration53.new-features.php)
  - [记一些坑](https://github.com/TIGERB/easy-tips/blob/master/pit.md#记一些坑)
- Mysql(doing)
  - [常用sql语句](https://github.com/TIGERB/easy-tips/blob/master/mysql/sql.md)
  - 引擎
    - InnoDB
    - MyISAM
    - Memory
    - Archive\Blackhole\CSV\Federated\merge\NDB
  - 事务隔离级别
    - READ UNCOMMITTED:未提交读
    - READ COMMITTED:提交读/不可重复读
    - REPEATABLE READ:可重复读(MYSQL默认事务隔离级别)
    - SERIALIZEABLE:可串行化
  - 索引
    - B-Tree
    - 哈希索引(hash index)
    - 空间数据索引(R-Tree)
    - 全文索引
  - 锁
    - 悲观锁
    - 乐观锁
  - 分表
    - 垂直分表
    - 水平分表
  - sql优化
  - 主从配置
- Redis(doing)
  - 常用命令
  - 实现原理&与memcache区别
  - 常见使用场景实战
    - [缓存](https://github.com/TIGERB/easy-tips/blob/master/redis/cache.php)
    - [队列](https://github.com/TIGERB/easy-tips/blob/master/redis/queue.php)
    - [悲观锁](https://github.com/TIGERB/easy-tips/blob/master/redis/pessmistic-lock.php)
    - [乐观锁](https://github.com/TIGERB/easy-tips/blob/master/redis/optimistic-lock.php)
    - [订阅/推送](https://github.com/TIGERB/easy-tips/blob/master/redis/subscribe-publish)
- 设计模式(done/fixing)
  - [概念](https://github.com/TIGERB/easy-tips/blob/master/patterns/thought.md#设计模式)
  - 创建型模式实例
    - [单例模式](https://github.com/TIGERB/easy-tips/blob/master/patterns/singleton/test.php)
    - [工厂模式](https://github.com/TIGERB/easy-tips/blob/master/patterns/factory/test.php)
    - [抽象工厂模式](https://github.com/TIGERB/easy-tips/blob/master/patterns/factoryAbstract/test.php)
    - [原型模式](https://github.com/TIGERB/easy-tips/blob/master/patterns/prototype/test.php)
    - [建造者模式](https://github.com/TIGERB/easy-tips/blob/master/patterns/builder/test.php)
  - 结构型模式实例
    - [桥接模式](https://github.com/TIGERB/easy-tips/blob/master/patterns/bridge/test.php)
    - [享元模式](https://github.com/TIGERB/easy-tips/blob/master/patterns/flyweight/test.php)
    - [外观模式](https://github.com/TIGERB/easy-tips/blob/master/patterns/facade/test.php)
    - [适配器模式](https://github.com/TIGERB/easy-tips/blob/master/patterns/adapter/test.php)
    - [装饰器模式](https://github.com/TIGERB/easy-tips/blob/master/patterns/decorator/test.php)
    - [组合模式](https://github.com/TIGERB/easy-tips/blob/master/patterns/composite/test.php)
    - [代理模式](https://github.com/TIGERB/easy-tips/blob/master/patterns/proxy/test.php)
    - [过滤器模式](https://github.com/TIGERB/easy-tips/blob/master/patterns/filter/test.php)
  - 行为型模式实例
    - [模板模式](https://github.com/TIGERB/easy-tips/blob/master/patterns/template/test.php)
    - [策略模式](https://github.com/TIGERB/easy-tips/blob/master/patterns/strategy/test.php)
    - [状态模式](https://github.com/TIGERB/easy-tips/blob/master/patterns/state/test.php)
    - [观察者模式](https://github.com/TIGERB/easy-tips/blob/master/patterns/observer/test.php)
    - [责任链模式](https://github.com/TIGERB/easy-tips/blob/master/patterns/chainOfResponsibility/test.php)
    - [访问者模式](https://github.com/TIGERB/easy-tips/blob/master/patterns/visitor/test.php)
    - [解释器模式](https://github.com/TIGERB/easy-tips/blob/master/patterns/interpreter/test.php)
    - [备忘录模式](https://github.com/TIGERB/easy-tips/blob/master/patterns/memento/test.php)
    - [命令模式](https://github.com/TIGERB/easy-tips/blob/master/patterns/command/test.php)
    - [迭代器模式](https://github.com/TIGERB/easy-tips/blob/master/patterns/iterator/test.php)
    - [中介者器模式](https://github.com/TIGERB/easy-tips/blob/master/patterns/mediator/test.php)
    - [空对象模式](https://github.com/TIGERB/easy-tips/blob/master/patterns/nullObject/test.php)
- [数据结构(doing)](https://github.com/TIGERB/easy-tips/blob/master/data-structure.md)
  - 数组
  - 堆/栈
  - 树
  - 队列
  - 链表
  - 图
  - 散列表
- 算法(doing)
  - 算法分析
    - 时间复杂度/空间复杂度/正确性/可读性/健壮性
  - 算法实战
    - 排序算法(α)
      - [冒泡排序](https://github.com/TIGERB/easy-tips/blob/master/algorithm/sort/bubble.php)
      - [快速排序](https://github.com/TIGERB/easy-tips/blob/master/algorithm/sort/quick.php)
      - [选择排序](https://github.com/TIGERB/easy-tips/blob/master/algorithm/sort/select.php)
      - [插入排序](https://github.com/TIGERB/easy-tips/blob/master/algorithm/sort/insert.php)
      - [归并排序](https://github.com/TIGERB/easy-tips/blob/master/algorithm/sort/merge.php)
      - [希尔排序](https://github.com/TIGERB/easy-tips/blob/master/algorithm/sort/shell.php)
      - [基数排序](https://github.com/TIGERB/easy-tips/blob/master/algorithm/sort/radix.php)
- 网络基础(doing)
  - [互联网协议概述](https://github.com/TIGERB/easy-tips/blob/master/network/internet-protocol.md#互联网协议)
  - [client和nginx简易交互过程](https://github.com/TIGERB/easy-tips/blob/master/network/nginx.md#client和nginx简易交互过程)
  - [nginx和php-fpm简易交互过程](https://github.com/TIGERB/easy-tips/blob/master/network/nginx.md#nginx和php简易交互过程)
  - [http](https://github.com/TIGERB/easy-tips/blob/master/network/http.md)
    - 报文
      - 报文头部
      - 报文体
    - 常见13种状态码
    - 方法method
    - https
    - http2
    - websocket
- 计算机基础(doing)
  - [linux常用命令](https://github.com/TIGERB/easy-tips/blob/master/linux/command.md)
  - shell
- 高并发相关(not-start)
## 测试用例
### 设计模式
运行脚本: 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](https://github.com/TIGERB/easy-tips/issues)或者[pull request](https://github.com/TIGERB/easy-tips),
我会及时纠正,THX~
> 补充:发起pull request的commit message请参考文章[Commit message编写指南](http://www.ruanyifeng.com/blog/2016/01/commit_message_change_log.html)
## 英文版
因为国外开发者的要求和个人的时间有限,征集大家有兴趣的可以把本项目进行英文版翻译。希望国外的developer也可以受益于这个项目~
翻译文件认领申请:<https://github.com/TIGERB/easy-tips/issues/36>
## 感谢
感谢以下朋友的issue或pull request:
- @[faynwol](https://github.com/faynwol)
- @[whahuzhihao](https://github.com/whahuzhihao)
- @[snriud](https://github.com/snriud)
- @[fhefh2015](https://github.com/fhefh2015)
- @[RJustice](https://github.com/RJustice)
- @[ooing](https://github.com/ooing)
- @[shellus](https://github.com/shellus)
- @[entimm](https://github.com/entimm)
- @[jealone](https://github.com/jealone)
- @[cugblbs](https://github.com/cugblbs)
- @[CmderQ](https://github.com/CmderQ)
- @[neetdai](https://github.com/neetdai)
- @[yangqiphp](https://github.com/yangqiphp)
一个php技术栈后端猿的知识储备大纲的更多相关文章
- 前后端分离,我怎么就选择了 Spring Boot + Vue 技术栈?
		前两天又有小伙伴私信松哥,问题还是职业规划,Java 技术栈路线这种,实际上对于这一类问题我经常不太敢回答,每个人的情况都不太一样,而小伙伴也很少详细介绍自己的情况,大都是一两句话就把问题抛出来了,啥 ... 
- 推荐一个有趣的Chrome扩展程序-查看任意网站的开发技术栈
		对于前端开发人员来说,目前的前端框架层出不穷,最受欢迎的莫过于所谓的前端框架三驾马车:Angular, React和Vue.在学习的过程中,肯定好奇现在的互联网公司的网站用的何种前端框架来开发的. C ... 
- 一个基于React整套技术栈+Node.js的前端页面制作工具
		pagemaker是一个前端页面制作工具,方便产品,运营和视觉的同学迅速开发简单的前端页面,从而可以解放前端同学的工作量.此项目创意来自网易乐得内部项目nfop中的pagemaker项目.原来项目的前 ... 
- 如何使用Microsoft技术栈
		Microsoft技术栈最近有大量的变迁,这使得开发人员和领导者都想知道他们到底应该关注哪些技术.Microsoft自己并不想从官方层面上反对Silverlight这样的技术,相对而言他们更喜欢让这种 ... 
- 一个人的 ClojureScript 技术栈
		作者:题叶链接:https://zhuanlan.zhihu.com/p/24425284来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处.今天(昨天)分享完关于 Cloj ... 
- 用“MEAN”技术栈开发web应用(一)AngularJs前端架构
		前言 不知何时突然冒出“MEAN技术栈”这个新词,听起来很牛逼的样子,其实就是我们已经熟悉了的近两年在前端比较流行的技术,mongodb.express.angularjs.nodejs,由于这几项技 ... 
- C蛮的全栈之路-序章 技术栈选择与全栈工程师
		目录 C蛮的全栈之路-序章 技术栈选择与全栈工程师C蛮的全栈之路-node篇(一) 环境布置C蛮的全栈之路-node篇(二) 实战一:自动发博客 博主背景 985院校毕业,至今十年C++开发工作经验, ... 
- 用react系列技术栈实现的demo整合系统
		引子 学生时代为了掌握某个知识点会不断地做习题,做总结,步入岗位之后何尝不是一样呢?做业务就如同做习题,如果‘课后’适当地进行总结,必然更快地提升自己的水平. 由于公司采用的react+node的技术 ... 
- .Net Web开发技术栈
		有很多朋友有的因为兴趣,有的因为生计而走向了.Net中,有很多朋友想学,但是又不知道怎么学,学什么,怎么系统的学,为此我以我微薄之力总结归纳写了一篇.Net web开发技术栈,以此帮助那些想学,却不知 ... 
随机推荐
- python 中一些关键字的区别
			一.raw_input 和input input和raw_input都可以读取控制台的输入,但是input和raw_input在处理数字时是有区别的 1.当输入为纯数字时 input返回的是数值类型, ... 
- 随便说说 post-processing
			九月份一篇博都没更新,这段时间一直在unity的坑里爬不起来,感觉真的很绝望啊,仿佛对生活都失去了信心. 渲染问题并没有解决,目前方案只是减轻视觉冲突,降低违和感.项目AR产品也做的越来越艰难,开始经 ... 
- VS2010安装OpenGL
			以下涉及到的所有资源都在这里: 链接:https://pan.baidu.com/s/1eSctT5K 密码:174s *我的VS2010的安装位置:D:\Program Files (x86)\M ... 
- Chrome 里的请求报错 "CAUTION: Provisional headers are shown" 是什么意思?
			在调试器中看到文件显示提示为 CAUTION: Provisional headers are shown, 可是直接复制链接访问资源却可以正常访问, 最后发现是https 问题,资源采用ssl协议, ... 
- python中输出内容颜色得控制
			参考:http://www.jb51.net/article/51237.htm 颜色代码 1)代码列表 格式:\[显示方式;前景色;背景色m 说明: 前景色 背景色 颜色 ------------- ... 
- 公众号的Markdown排版利器:Md2All
			微信公众号:颜家大少如有问题或建议,请公众号留言 本文所用排版工具:Md2All,http://md.aclickall.com 公众号排版工具 公众号的排版编辑工具还真的不少,但功能大同小异,大部分 ... 
- 地址总线、数据总线、寻址能力、字长及cpu位数等概念之间的关系
			地址总线决定了CPU的寻址能力:数据总线的宽度与字长及CPU位数一致. 详细解释见下文: 1.地址总线与寻址能力 要存取数据或指令就要知道数据或指令存放的位置,地址寄存器存储的就是CPU当前要存取的数 ... 
- MariaDB扩展特性--虚拟列
			存在于表中的列,它们的值是根据确定的表达式或者是根据表中其他列的值自动计算的. 虚拟列有两种,分别对应了定义虚拟列的修饰关键词: 'VIRTUAL'修饰词含义为该虚拟列的值会在查询的时候计算生成. ' ... 
- lodash源码分析之List缓存
			昨日我沿着河岸/漫步到/芦苇弯腰喝水的地方 顺便请烟囱/在天空为我写一封长长的信 潦是潦草了些/而我的心意/则明亮亦如你窗前的烛光/稍有暧昧之处/势所难免/因为风的缘故 --洛夫<因为风的缘故& ... 
- vue.js之数据传递和数据分发slot
			一.组件间的数据传递 1.父组件获取子组件的数据 *子组件把自己的数据,发送到父级 *vm.$emit(事件名,数据); *v-on: @ 示例用法:当点击send按钮的时候,"111&qu ... 
