• PHP技术栈


    本文旨在给要学习 PHP 的新手一个大概的认知轮廓,在心里有个学习的结构,有的放矢,避免走太多弯路。大神请忽略。

    入门阶段

    预备知识

    1、掌握基本HTML、JS、CSS语法;熟悉 Bootstrap。

    参考:
    https://www.runoob.com/html/html-tutorial.html
    https://www.liaoxuefeng.com/wiki/1022910821149312
    https://www.runoob.com/css/css-tutorial.html

    验收最低标准:模仿写出jd.com或者vip.com首页第一屏内容。

    2、熟悉Linux命令行
    熟悉常用发行版系统(CentOS、Ubuntu)安装
    熟悉常用命令行操作,包括文件管理、用户管理、权限管理、防火墙管理等
    熟悉VIM使用

    验收最低标准:掌握lnmp环境搭建。

    PHP基础

    掌握PHP基础语法、文件上传、cookie、Session、JSON。
    掌握MySQL数据库连接:pdo使用。
    掌握redis连接及简单应用。
    掌握命名空间。
    掌握面向对象编程思想。

    参考:
    https://www.runoob.com/php/php-tutorial.html

    学习框架

    学会使用ThinkPHP框架。主要是该框架在国内使用普及率太高了。不建议使用Laravel入门,因为该框架使用了较多的语法糖、第三方库,对新手可能有难度。

    验收最低标准:可以使用ThinkPHP最新版作为入手框架,写出一个简单的博客。页面简单写就行。数据之间使用TP的 display 渲染到页面。

    学习写接口

    学会 Charles 抓包,看豆瓣的接口返回的数据。
    学会写接口(GET、POST)的就行。
    学会使用 POSTMAN

    验收标最低准:把上面的博客项目改成前后端分离的,先写完接口(最好有文档),再在页面里使用ajax调用接口数据。

    至此,你已经入门了。如果需要继续往下,还要学习。

    第二阶段

    PHP

    使用 composer 安装PHP第三方库
    对于PHP断点调试非常熟悉
    学习常用PHP扩展
    使用 SPL
    掌握 PSR 规范
    掌握反射的使用
    掌握设计模式
    熟练使用常用框架。
    了解php和php-fpm的大部分配置选项和含义。
    熟悉HTTP协议。
    熟悉正则表达式。

    MYSQL

    熟悉MYSQL优化的一些技巧,例如MySQL的性能追查,包括slow_log/explain等;对于order by、limit、like等一些坑能避开;能够熟练使用常用的索引;对于表结构创建选用哪种数据类型做到胸有成竹等等。
    熟悉常用的配置,知道如何调优。
    熟练配置主从。

    NOSQL

    掌握Redis使用:对于常用数据结构的经典使用场景非常熟悉;了解Redis的事务、RDB、AOF等机制。
    掌握memcache的使用,知道与redis的区别。
    了解一下MongoDB。

    Linux

    熟悉常用文本命令:例如wc、awk、split、diff、grep、sed等。
    熟悉sort、uniq的使用。
    熟练掌握ps、netstat、top等命令使用。
    熟练使用Supervisor。
    熟悉如何编写shell脚本。
    能够理解Nginx的配置的含义。

    第三阶段

    PHP

    该阶段PHP已经非常熟悉了,拥有快速开发项目、快速解决BUG的能力。代码遵循psr规范、稳定性很高。
    熟悉消息队列使用,在很多场景合适的选择消息队列进行异步解耦。
    熟悉如何使用 Elasticsearch 代替MYSQL的全文搜索功能。
    熟悉多进程编程。
    熟悉socket编程,对于网络IO模型有一定的认知,熟悉多路复用(select/poll/epoll)技术。
    熟悉swoole框架,能应用于项目上。
    不限制于框架本身,任何框架一天内快速入手。
    对php的工作机制熟悉,熟悉php-fpm生命周期。
    能够知道PHP相对于c等强类型语言性能为什么会慢。
    对于PHP内部的实现原理有一定的认知,例如变量的实现、zend引擎的了解。
    对于PHP的扩展有一定的认知,可以编写简单的扩展。

    MYSQL

    熟悉大批量的数据导入导出。对于线上大表操作可能带来的风险有预知。
    熟悉分库分表。
    对主从延迟能有效解决。
    对于MySQL内置的一些函数能够熟练使用,熟悉触发器、存储过程的使用。
    熟悉服务器核心性能优化选项 innodb_log_buffer_size、back_log、table_open_cache、thread_cache_size、innodb_lock_wait_timeout等。
    对于MySQL内部索引的实现、事务隔离机制有一定的认知。

    NoSQL

    redis常用5中数据类型之外的数据结构也要能掌握一些。如bitmap、GEO、HyperLogLog、pub/sub等。
    redis里的事务、管道、分布式锁能熟练使用。
    对于redis的服务端结构能有一定认知。
    熟悉redis里如何使用Lua。
    尝试阅读redis源码。

    Linux

    对于nginx非常熟悉,能够熟练配置https、负载均衡、反向代理;能够使用 lua-nginx-module。
    对awk/sed 等应用已经如火纯青,能够随意操作控制处理文本统计分析各种复杂格式的数据。
    对于tcpdump、gdb、ltrace、strace、lsof等熟练使用。

    其它

    熟悉Linux应用编程:熟悉makefile使用;熟悉进程、信号、I/O知识;对于C语言有一定的了解。
    熟练elk。
    对于其它语言(例如java、c、golang)、其它领域(大数据)有一定的认知。
    熟悉RPC、微服务架构。
    能够支持对于千万级流量网站的正常开发维护工作。

    结束语

    技术无止境,未来有更多可能。

    本文首发于公众号"飞鸿影的博客(fhyblog)",欢迎关注。

  • 相关阅读:
    Codeforces 798C. Mike and gcd problem 模拟构造 数组gcd大于1
    Codeforces 796C. Bank Hacking
    Codeforces 792B. Counting-out Rhyme
    gym 101164 H.Pub crawl 凸包
    hdu 6053 TrickGCD 筛法
    hdu 6041 I Curse Myself 无向图找环+优先队列
    bzoj 2243: [SDOI2011]染色 线段树区间合并+树链剖分
    codeforces gym 101164 K Cutting 字符串hash
    树链剖分求lca
    UESTC 1697 简单GCD问题(一) 筛法
  • 原文地址:https://www.cnblogs.com/52fhy/p/10962068.html
Copyright © 2020-2023  润新知