php如何继续提升技术?一个php技术栈后端猿的知识储备仓库

一个php技术栈后端猿的知识储备仓库

前言

为什么把php,mysql,redis放在前三位?因为php/mysql/redis基础是一个当代phper的根基。

备注

状态 含义
not-start 当前未开始总结
doing 总结中
α 目前仅供参考未修正和发布
done 总结完毕
fixing 查漏补缺修改中

目录

  • PHP(doing)

    • 符合PSR的PHP编程规范(含个人建议)

      • 实例
      • 文档
      • 经验
    • 基础知识[读(R)好(T)文(F)档(M)]

      • 数据类型

      • 运算符优先级

      • string函数

      • array函数

      • math函数

      • 面向对象

      • 版本新特性

        • 7.1
        • 7.0
        • 5.6
        • 5.5
        • 5.4
        • 5.3
    • 记一些坑

  • Mysql(doing)

    • 常用sql语句

    • 引擎

      • 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)

    • 常用命令
    • 实现原理&与memcache区别
    • 常见使用场景实战
      • 缓存
      • 队列
      • 悲观锁
      • 乐观锁
      • 订阅/推送
  • 设计模式(done/fixing)

    • 概念

    • 创建型模式实例

      • 单例模式
      • 工厂模式
      • 抽象工厂模式
      • 原型模式
      • 建造者模式
    • 结构型模式实例

      • 桥接模式
      • 享元模式
      • 外观模式
      • 适配器模式
      • 装饰器模式
      • 组合模式
      • 代理模式
      • 过滤器模式
    • 行为型模式实例

      • 模板模式
      • 策略模式
      • 状态模式
      • 观察者模式
      • 责任链模式
      • 访问者模式
      • 解释器模式
      • 备忘录模式
      • 命令模式
      • 迭代器模式
      • 中介者器模式
      • 空对象模式
  • 数据结构(doing)

    • 数组
    • 堆/栈
    • 队列
    • 链表
    • 散列表
  • 算法(doing)

    • 算法分析

      • 时间复杂度/空间复杂度/正确性/可读性/健壮性
    • 算法实战

      • 排序算法(α)

        • 冒泡排序
        • 快速排序
        • 选择排序
        • 插入排序
        • 归并排序
        • 希尔排序
        • 基数排序
  • 网络基础(doing)

    • 互联网协议概述
    • client和nginx简易交互过程
    • nginx和php-fpm简易交互过程
    • http
      • 报文
        • 报文头部
        • 报文体
      • 常见13种状态码
      • 方法method
      • https
      • http2
      • websocket
  • 计算机基础(doing)

    • linux常用命令
    • 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或者pull request,我会及时纠正,THX~

补充:发起pull request的commit message请参考文章Commit message编写指南

英文版

因为国外开发者的要求和个人的时间有限,征集大家有兴趣的可以把本项目进行英文版翻译。希望国外的developer也可以受益于这个项目~

翻译文件认领申请:https://github.com/TIGERB/easy-tips/issues/36

赞赏

感谢

感谢以下朋友的issue或pull request:

  • @faynwol
  • @whahuzhihao
  • @snriud
  • @fhefh2015
  • @RJustice
  • @ooing
  • @shellus
  • @entimm
  • @jealone
  • @cugblbs
  • @CmderQ
  • @neetdai
  • @yangqiphp
  • @akmumu
  • @DukeAnn
  • @onlyshow

你可能感兴趣的:(php如何继续提升技术?一个php技术栈后端猿的知识储备仓库)