欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

PHP程序员的技术成长规划 第二阶段:提高阶段

程序员文章站 2022-03-18 15:33:35
第二阶段:提高阶段 (中级PHP程序员)重点:提高针对LNMP的技能,能够更全面的对LNMP有熟练的应用。目标:能够随时随地搭建好LNMP环境,快速完成常规配置;能够追查解决大部分遇到的开发和线上环境的问题;能够独立承担中型系统的构架和开发工作;能够在大型系统中承担某个中型模块的开发工作;1. Li ......

第二阶段:提高阶段 (中级php程序员)

重点:提高针对lnmp的技能,能够更全面的对lnmp有熟练的应用。
目标:能够随时随地搭建好lnmp环境,快速完成常规配置;能够追查解决大部分遇到的开发和线上环境的问题;能够独立承担中型系统的构架和开发工作;能够在大型系统中承担某个中型模块的开发工作;

1. linux:
在 第一阶段的基础上面,能够流畅的使用shell脚本来完成很多自动化的工作;awk/sed/perl 也操作的不错,能够完成很多文本处理和数据统计等工作;基本能够安装大部分非特殊的linux程序(包括各种库、包、第三方依赖等等,比如 mongodb/redis/sphinx/luncene/svn之类的);了解基本的linux服务,知道如何查看linux的性能指标数据,知道基 本的linux下面的问题跟踪等。

2. nginx:
在第一阶段的基础上面,了解复杂一些 的nginx配置;包括 多核配置、events、proxy_pass,sendfile/tcp_*配置,知道超时等相关配置和性能影响;知道nginx除了web server,还能够承担代理服务器、反向静态服务器等配置;知道基本的nginx配置调优;知道如何配置权限、编译一个nginx扩展到nginx;知 道基本的nginx运行原理(master/worker机制,epoll),知道为什么nginx性能比apache性能好等知识;

3. mysql/mongodb:
在 第一阶段的基础上面,在mysql开发方面,掌握很多小技巧,包括常规sql优化(group by/order by/rand优化等);除了能够搭建mysql,还能够冷热备份mysql数据,还知道影响innodb/myisam性能的配置选项(比如 key_buffer/query_cache/sort_buffer/innodb_buffer_pool_size /innodb_flush_log_at_trx_commit等),也知道这些选项配置成为多少值合适;另外也了解一些特殊的配置选项,比如  知道如何搭建mysql主从同步的环境,知道各个binlog_format的区别;知道mysql的性能追查,包括slow_log/explain 等,还能够知道基本的索引建立处理等知识;原理方面了解基本的mysql的架构(server+存储引擎),知道基本的innodb/myisam索引存 储结构和不同(聚簇索引,b树);知道基本的innodb事务处理机制;了解大部分mysql异常情况的处理方案(或者知道哪儿找到处理方案)。条件允许 的情况,建议了解一下nosql的代表mongodb数据库,顺便对比跟mysql的差别,同事能够在合适的应用场景安全谨慎的使用mongodb,知道 基本的php与mongodb的结合开发。

4. redis/memcached:
在大部分 中型系统里面一定会涉及到缓存处理,所以一定要了解基本的缓存;知道memcached和redis的异同和应用场景,能够独立安装 redis/memcached,了解memcahed的一些基本特性和限制,比如最大的value值,知道php跟他们的使用结合;redis了解基本 工作原理和使用,了解常规的数据类型,知道什么场景应用什么类型,了解redis的事务等等。原理部分,能够大概了解memcached的内存结构 (slab机制),redis就了解常用数据类型底层实现存储结构(sds/链表/skiplist/hashtable)等等,顺便了解一下redis 的事务、rdb、aof等机制更好

5. php:
除了第一阶段的能力,安装配置方面能够随意 安装php和各种第三方扩展的编译安装配置;了解php-fpm的大部分配置选项和含义(如max_requests/max_children /request_terminate_timeout之类的影响性能的配置),知道mod_php/fastcgi的区别;在php方面已经能够熟练各 种基础技术,还包括各种深入些的php,包括对php面向对象的深入理解/spl/语法层面的特殊特性比如反射之类的;在框架方面已经阅读过最少一个以上 常规php mvc框架的代码了,知道基本php框架内部实现机制和设计思想;在php开发中已经能够熟练使用常规的设计模式来应用开发(抽象工厂/单例/观察者/命 令链/策略/适配器 等模式);建议开发自己的php mvc框架来充分让开发*化,让自己深入理解mvc模式,也让自己能够在业务项目开发里快速升级;熟悉php网站源码的各种代码优化方法,熟悉大部分php安全方面问题的解决处理;熟悉基本的php执行的机制原理(zend引擎/扩展基本工作机制);推荐php视频教程

6. c/c++:
开 始涉猎一定的c/c++语言,能够写基本的c/c++代码,对基本的c/c++语法熟悉(指针、数组操作、字符串、常规标准api)和数据结构(链表、 树、哈希、队列)有一定的熟悉下;对linux下面的c语言开发有基本的了解概念,会简单的makefile文件编写,能够使用简单的gcc/gdb的程 序编译简单调试工作;对基本的网络编程有大概了解。(本项是为了向更高层次打下基础)

7. 前端:
在 第一阶段的基础上面,熟悉基本的http协议(协议代码200/300/400/500,基本的http交互头);条件允许,可以在深入写出稍微优雅的 html+css+javascript,或者能够大致简单使用某些前端框架(jquery/yui/extjs/requirejs /bootstrap之类);如果条件允许,可以深入学习javascript编程,比如闭包机制、dom处理;再深入些可以读读jquery代码做深入学习。(本项不做重点学习,除非对前端有兴趣)

8. 系统设计:
能 够设计大部分中型系统的网站架构、数据库、基本php框架选型;性能测试排查处理等;能够完成类似:浏览器 -> cdn(squid) -> nginx+php -> 缓存 -> 数据库 结构网站的基本设计开发维护;能够支撑每天数百万到千万流量基本网站的开发维护工作;