我们已经准备好了,你呢?

2024我们与您携手共赢,为您的企业形象保驾护航!

第一阶段:基础阶段(基础 PHP 程序员)

重点:精通LNMP(核心是安装、配置基本操作)

目标:能完成基本的LNMP系统安装、简单配置与维护;能对简单系统进行基本的PHP开发;能支持中型PHP系统中一定的PHP功能模块的开发。

时间:完成这一阶段所需的时间因人而异,有的人可能半年、一年就完成,有的人则可能需要两三年。

1.Linux

基本命令、操作、启动,基本服务配置(包括rpm安装文件,各类服务配置等);能编写简单shell脚本及awk/sed脚本命令等。

2. Nginx

能够安装和配置nginx+php,了解基本的nginx核心配置选项,知道//等基本配置,目标是让nginx+能够顺利的运行。

3.MySQL

能够自行搭建MySQL,并了解MySQL的基本配置选项;知道 和 的区别,以及两种引擎的不同配置选项;知道两种引擎的基本区别,以及选择上述的区别;能够手工编译、搭建MySQL数据库,并配置编码使其正常稳定运行;核心目的是能够搭建一个可运行的MySQL数据库。

4.PHP

基本语法数组、字符串、数据库、XML、GD/图片处理等;熟悉各种和MySQL操作相关的API(mysql//PDO),懂得解决各种编码问题;了解常用的PHP框架(、、Yii、Yaf等);了解基本的MVC运行机制和为什么要这么做,知道不同PHP框架的区别;能快速学习一个MVC框架。能知道开发项目中的文件目录组织,有基本的良好代码结构和风格,能完成小型系统及中型系统中某个模块的开发。

5. 前端

如果时间和条件允许的话,可以学习一些HTML/CSS/JS等相关知识,知道什么是web标准,div+css的web/wap页面模式,知道HTML5和HTML4的区别;了解一些前端基本概念和JS框架(之类);了解一些基本的编程知识;(这一项不是必须的,有时间的话可以稍微了解一下,但不建议作为重点,除非你有浓厚的兴趣)。

6.系统设计

能够完成小型系统的基础设计,包括简单的数据库设计,完成浏览器->Nginx+PHP->数据库架构的基本设计与开发工作;能够支撑日流量几十万到几百万的网站开发与维护;

第二阶段:改进(中级 PHP 程序员)

重点:提高LNMP技能,能够更全面的应用LNMP。

目标:能够随时随地搭建LNMP环境并快速完成常规配置;能够追踪并解决大部分开发及上线环境遇到的问题;能够独立承担中型系统的架构与开发;能够承担大型系统中型模块的开发。

1.Linux

在第一阶段的基础上,可以流利的使用Shell脚本完成很多自动化任务;可以熟练操作awk/sed/perl,能完成很多文本处理、数据统计等任务;基本可以安装大部分非特殊的Linux程序(包括各种库、包、第三方依赖等,例如/Redis///SVN等);了解基本的Linux服务,懂得查看Linux性能指标数据,会基本的Linux问题跟踪等。

2. Nginx

在第一阶段的基础上,了解比较复杂的Nginx配置;包括多核配置、、、/tcp_*配置,知道等相关配置以及性能影响;知道nginx除了可以担当代理服务器、反向静态服务器等配置;知道基本的nginx配置调优;知道如何配置权限,编写一个nginx扩展给nginx;知道基本的nginx运行原理(/、epoll),知道nginx性能优于的原因等知识。

3.MySQL/

在第一阶段的基础上,在MySQL开发方面,你应该掌握很多小技能,包括通用的SQL优化(//rand优化等);除了能够搭建MySQL,还能对MySQL数据进行冷热备份,知道影响性能的配置选项(比如///ize/等),知道这些选项取什么值比较合适;另外,你还应该了解一些特殊的配置选项,比如如何搭建MySQL主从同步环境,知道它们之间的区别;知道MySQL性能跟踪,包括/等,知道基本的索引创建和处理知识;原理方面,你应该了解MySQL的基本架构(+存储引擎),知道基本的/索引的存储结构及区别(聚集索引、B树);知道基本的事务处理机制;了解大部分MySQL异常情况的解决办法(或者知道去哪里找解决办法)。如果条件允许的话,建议了解NoSQL这一代表数据库,对比一下和MySQL的区别,以便同事们在合适的应用场景中安全、谨慎地使用,并且会PHP基础以及组合开发。

4. Redis/

大部分中型系统都会涉及到缓存的处理,所以必须了解基本的缓存;知道与Redis的异同点以及应用场景,能够独立安装Redis,了解一些基本的特性和限制,比如最大值等,懂得如何与PHP结合使用;了解Redis的基本工作原理和使用,了解常见的数据类型,知道在什么场景下使用什么类型,了解Redis的事务等。原理方面可以大致了解redis的内存结构(slab机制),了解redis常见数据类型的底层存储结构(SDS/链表//)等。顺便最好了解Redis的事务,RDB,AOF等机制。

5. PHP

除了第一阶段的能力之外,安装配置方面,你已经能够自如的进行PHP以及各类第三方扩展的编译、安装和配置;了解php-fpm的大部分配置选项及含义(比如//meout等影响性能的配置),知道/的区别;PHP方面,你已经熟练掌握了PHP的各项基础技术,包括对PHP各种深入的理解,包括对PHP面向对象/SPL/反射等语法层面的特殊特性的深入了解;框架方面,你已经阅读过至少一种常规框架的代码,知道PHP基础框架内部的实现机制和设计思想;PHP开发方面,你已经能够熟练使用常规的设计模式进行应用开发(抽象工厂/单例/观察者/命令链/策略/适配器等模式);建议开发自己的框架,完全解放开发,让自己深刻理解MVC模式,让自己在业务项目开发中快速升级;熟悉各种PHP代码优化方法,熟悉大部分PHP安全问题的解决方案;熟悉PHP执行的基本机制及原理(Zend引擎/扩展的基本工作机制)。

6. C/C++

开始学习一些C/C++语言,能够编写基本的C/C++代码,熟悉基本的C/C++语法(指针、数组操作、字符串、常规标准API)和数据结构(链表、树、哈希、队列);对Linux下C语言开发有基本的了解,能够编写简单的文件,能够使用简单的GCC/GDB程序编译和简单调试;对基本的网络编程有大致的了解。(此项为更高级别打基础)。

7. 前端

在第一阶段的基础上,熟悉基本的HTTP协议(协议代号200/300/400/500、基本的HTTP交互);有条件的话可以写出稍微优雅的HTML+CSS+,或者能够使用一些前端框架(/YUI/ExtJS//之类);有条件的话可以深入学习编程,比如闭包机制,DOM处理等;再深入的话可以阅读源码深入学习。(此项不是重点学习项,除非你对前端感兴趣)。

8.系统设计

能够设计大部分中型系统的网站架构、数据库、基础PHP框架选型;性能测试、问题排查等;能够完成浏览器->CDN(Squid)->Nginx+PHP->缓存->数据库结构等网站基本设计、开发与维护;能够支撑日流量百万到千万级基础网站的开发与维护;

第三阶段:高级阶段(高级 PHP 程序员)

重点:除了基础的LNMP项目,还可以在某个方向或领域进行深度学习。(深度维度拓展)

目标:除了能完成基本的PHP业务开发外,还能解决大部分深入复杂的技术问题,能独立设计并完成中大型系统的设计与开发工作;能独立对某一技术方向有深入的了解,并在此领域比较专业。(例如对MySQL、Nginx、PHP、Redis等任意方向有深入研究)

1.Linux

而第二阶段能力除了能够胜任Linux下的常规操作和性能监控跟踪外,还能使用很多高级复杂的命令完成工作(watch///ldd/ar等);Shell脚本方面,已经可以编写相对复杂的Shell脚本(500行以上)来辅助完成包括备份、自动化处理、监控等很多Shell任务;熟练掌握awk/sed/perl等应用程序,能够自如操作和掌控文本统计的处理、各种复杂格式数据的分析;对Linux内部机制有所了解,对内核模块加载、启动错误处理等有基本的了解;同时也了解一些其他相关的东西,比如NFS、磁盘管理等;

2. Nginx

在第二阶段的基础上,你可以非常熟练的操作Nginx,对Nginx进行更深入的运维工作,比如监控,性能优化,复杂问题处理等;根据个人兴趣,可以考虑重点深入研究Nginx的工作原理,主要从阅读源码开始,比如具体的工作机制,Nginx内部事件处理,内存管理等;同时可以学习Nginx扩展的开发,定制一些自己的私有扩展;同时对Nginx+Lua能有一定的了解,看看能不能结合起来打造更好的应用模型;这个阶段的要求是深入了解Nginx的原理,可以考虑在Nginx方向做深度的专业人士。

3.MySQL/

在第二阶段的基础上,在MySQL应用方面,除了前面基本的SQL优化之外,还可以完成一些复杂的操作,比如大批量数据的导入导出,在线大批量数据的表结构更改,或者增删索引字段等高危操作;除了安装配置之外,已经可以处理更为复杂的MySQL问题,比如各类问题追踪,解决主从同步延迟问题,跨机房同步数据解决方案,MySQL高可用架构等;在MySQL应用层面,熟悉MySQL核心关键技术,比如事务机制(隔离级别,锁等),对触发器,分区等技术有一定的了解和应用;在MySQL性能方面,包括磁盘优化(SAS迁移到SSD)、服务器优化(内存、服务器本身配置),此外还包括第二阶段的其他核心性能优化选项(ze////eout等)、连接池软件选择与应用,对show*(/)类型的操作语句有深入的理解,能够完成大部分性能问题追踪;深入熟悉MySQL备份技术,包括容灾与恢复,深入了解,冷热备份,多IDC备份等;在MySQL原理方面,有更多的了解,比如开始对MySQL的工作机制阅读一些源码,比如学习主从同步(复制)技术的源码,或者学习了解某个存储引擎的源码(//)等,如果条件允许的话,可以参考CSV引擎开发自己的简单存储引擎,用来存一些数据,增强对MySQL的理解;在这个过程中,如果有兴趣的话,也可以考虑往DBA方向发展。在层次上,可以考虑在写少读多的情况下入手一些在线应用,或者做一些在线数据分析处理的操作。具体场景可以根据工作来定,但核心还是要更好地理解RMDBS和NoSQL在不同场景下的应用。如果条件或者兴趣允许,可以开始深入学习其工作机制。

4. Redis/

在第二阶段的基础上,可以更加深入的应用和学习。因为不是特别复杂,建议阅读源码,特别是内存管理部分,方便深入了解;对于Redis部分,可以多做一些复杂数据结构的应用(zset做排序操作/事务处理保证秒杀场景的原子性等应用);多涉及aof等同步机制的学习和应用,设计高可用的Redis应用架构和集群;建议深入研究Redis源码,将第二阶段积累的知识应用起来,特别是把核心的事件管理,内存管理,内部核心数据结构等读一遍,充分学习和理解。如果兴趣允许,你可以成为非常专业的Redis用户。

5. PHP

作为基本核心技能,我们需要在第二阶段的基础之上有更加深入的学习和运用。在基本代码应用方面,能够解决PHP开发中遇到的95%的问题,了解大部分PHP技能;能够在一天之内快速上手大部分PHP框架,并且了解各主流PHP框架的优缺点,在项目开发中能够快速便捷地进行技术选型;在配置方面,除了第二阶段学到的常规知识外,还会了解一些比较小众的配置选项(/),包括扩展中一些复杂的高级配置及原理(比如扩展配置中的 .,apc扩展配置中的 apc./apc./apc.on 等);对php的工作机制有了比较深入的了解,包括php-fpm的工作机制(比如php-fpm在不同配置机器上启用进程号计算及其原理),对zend引擎(vm/gc/)有基本的熟悉,看过基本的PHP内核源码(或者阅读过相关文章),对PHP内部机制的大部分核心数据结构(基本类型/Array/)有了解,对核心基础架构(zval//gc)有深入了解;能够进行基本的PHP扩展开发,了解一些中高级的扩展开发知识(minit/rinit等),熟悉PHP与/nginx(/)不同通信交互方式的细节;除了开发PHP扩展之外,可以考虑学习开发Zend扩展,从更基础的层面理解PHP。

6. C/C++

在第二阶段的基础上,你可以对C/C++语言有更深的理解,完成中小型C/C++系统的开发;除了第二阶段的基本C/C++语法和数据结构外,还可以学习一些特殊的数据结构(b-tree/rb-tree//lsm-tree/trie-tree等),方便特殊的工作需要;系统编程方面,熟悉多进程、多线程编程;在多进程的情况下,了解多进程间大部分通信方式并能灵活选择通信方式(共享内存/信号量/管道等);多线程编程能很好的解决锁冲突问题,能开发、调试多线程程序;同时熟悉网络编程,了解多进程模型/多线程模型/异步网络IO模型的区别和选型,熟悉不同异步网络IO模型(/poll/epoll/iocp等)的原理和区别,熟悉常见的异步框架(ACE/ICE/libev//libuv/Boost.ASIO等)及其使用,有空也可以看看一些国产开发的库(比如muduo);同时能够设计出良好的高并发程序架构(-/-等);了解C/C++后端开发中的大部分问题(内存管理、日志打印、高并发、前后端通信协议、服务监控),知道各种后端服务的RPC通信问题(/http//等);比较熟悉使用GCC、GDB开发、编译、调试程序,能够线上程序掉芯后快速跟踪、解决问题;通用模块开发方面,可以积累或者开发一些通用的工具或库(比如异步网络框架、日志库、内存池、线程池等),但开发完之后要谨慎是否应用,避免埋坑、追bug。

7. 前端

深入了解HTTP协议(包括具体的协议代码以及各个协议背后的原因,比如302是静态文件缓存,502是nginx后面的PHP挂了等等);除了前面的前端框架应用整合能力之外,如果有兴趣的话,可以再深入一点前端的学习,表现形式可以是自己开发一些类似的前端框架,或者开发一个富文本编辑器之类的比较琐碎的测试自己技能的东西。

8. 其他语言学习领域

在积累了PHP/C/C++的基础知识之后,建议现阶段根据个人兴趣尝试学习不同的编程语言。可以学习脚本语言比如Ruby,函数式编程语言比如Lisp//Scala,静态语言比如Java,数据统计分析比如R。如果想换个角度做后端业务,可以尝试Node.js以及前面提到的和Nginx的结合等等。学习不同的语言主要是为了提升视野,以及解决问题方式的不同。比如你会明白原来除了进程/线程,还有轻量级协程;比如在跨机通信的场景下,解决方法出奇的简单;比如不想选择C/C++,也有类似的高效/可用的语言等等;主要是为了提升视野。

9. 其他专业学习

这个阶段除了基本的LNMP技能,会考虑学习一些其他领域的知识。这些都是可以的,看个人兴趣和长远目标。目前可以选择的领域有很多,比如云计算(分布式存储、分布式计算、虚拟机等)、机器学习(数据挖掘、模式识别等,应用于统计、个性化推荐)、自然语言处理(中文分词等)、搜索引擎技术、图形图像、语音识别等。除了这些高端的,工程方面也有很多地方可以学习,比如高性能系统、移动开发(/IOS)、计算机安全、嵌入式系统、硬件等。

10.系统设计

基于第二阶段所获得的经验和技能,系统设计能够应用相对复杂的中大型系统,解决线上各类复杂系统的大部分问题,完成类似浏览器->CDN->负载均衡->接入层->Nginx+PHP->业务缓存->数据库->各类复杂后端RPC交互(存储后端、逻辑后端、防作弊后端、对外服务)->更复杂的后端业务;能够支撑日几千万到几亿流量网站的正常开发与维护。

php中文分词搜索_php中文分词引擎_搜索引擎中文分词

兄弟会怀着感恩之心回馈社会,帮助未来程序员实现梦想,寻找未来的IT大师。

程序员可以免费获得光盘并免费参加兄弟会的在线公开课。

此外还赠送PHP、Linux、UI、iOS、HTML5等全套学习资料。

梦想帮手可免费获得兄弟礼品(USB风扇、LED灯、菊花香皂、钥匙扣)

每次转发都可能对未来的程序员有所帮助。

二维码
扫一扫在手机端查看

本文链接:https://by928.com/6691.html     转载请注明出处和本文链接!请遵守 《网站协议》
我们凭借多年的网站建设经验,坚持以“帮助中小企业实现网络营销化”为宗旨,累计为4000多家客户提供品质建站服务,得到了客户的一致好评。如果您有网站建设、网站改版、域名注册、主机空间、手机网站建设、网站备案等方面的需求,请立即点击咨询我们或拨打咨询热线: 13761152229,我们会详细为你一一解答你心中的疑难。

项目经理在线

我们已经准备好了,你呢?

2020我们与您携手共赢,为您的企业形象保驾护航!

在线客服
联系方式

热线电话

13761152229

上班时间

周一到周五

公司电话

二维码
微信
线