一个php技术栈后端猿的知识储备大纲

一个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)

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/113814.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 国内智能工厂建设现状以及未来发展趋势介绍英语_智能工厂规划与实施

    国内智能工厂建设现状以及未来发展趋势介绍英语_智能工厂规划与实施2021-01-0511:01:27中国制造面临的严峻挑战人口红利消失、企业招工难,人工成本迅速上升; 高房价、高地价迫使国内制造业向内地转移,低成本制造业向东南亚国家转移; 高赋税以及社保费用的压力也给企业带来高昂的运营成本; 钢铁、化纤等原材料价格上涨对下游行业带来巨大的成本压力; 中兴事件则暴露出我国制造业核心技术缺失的尴尬现状; 国际贸易争端更是对出口型企业雪上加霜……即使面对以内循环为主不受国际政策影响的制造型企业,也因为招工难、成本上涨的现状隐隐作痛,部分企业甚至“

  • Origin Pro2022教育版官方申请、安装及汉化、续期

    Origin Pro2022教育版官方申请、安装及汉化、续期OriginLab官网简介绝大多数学生都使用过Origin来绘图,并将这些图作为自己设计报告或者论文中的重要组成部分,这一点也是源于Origin在数据显示专业性。教育版有一些限制,比如序列号仅6个月有效期,窗口限制12个(窗口限制表示Origin项目中可访问的窗口数,包括所有类型的窗口-WorkBook,Matrix,Graph,Notes,Layout等总共限制为12个)。但是6个月后可重复文章步骤重新申请新的序列号与激活码(可以使用相同邮箱),且12个窗口可以在多数情况下能够满足需要。

  • c++构造函数总结

    c++构造函数总结

  • aliddns ipv6_linux系统下配置阿里DDNS(IPv6)

    aliddns ipv6_linux系统下配置阿里DDNS(IPv6)IPv6日渐完善,家里的宽带和手机也都分配了ipv6全球单播地址,手机分到了/64,宽带更是分到了/56。测试了一下运营商内外的连通性也都还可以,基本能跑满带宽,IPv6终于可以用起来了,个个都是公网,不用再渴求ipv4和搞内网穿透了。适用此教程适用于基于linux的各种系统,ubuntu、centos、openwrt、群晖等等,本文只介绍IPv6,不涉及IPv4。代码aliddnsipv6_a…

  • 数据结构–(ElemType *&T)代表的意义「建议收藏」

    数据结构–(ElemType *&T)代表的意义「建议收藏」1、前言ElemType表示抽象数据类型。首先看个例子:函数1:voidswap1(intx,inty){inttemp;temp=x;x=y;y=temp;}函数2:voidswap2(int&x,int&y){inttemp;temp=x;x=y;…

  • Android学习_ContentProvider和Uri

    Android学习_ContentProvider和Uri

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号