本帖最后由 上海分校-小影 于 2018-5-18 10:20 编辑
本人从事开发(PHP编程)已有3年多,时间说长不长,但也不短。3年来自己对软件开发有一定了解。回顾3年走过的开发路程,才发现自己依然是井底之蛙,高不成,低不就。随着公司业务进行编程语言转换,PHP-(最优雅的语言)被Jave所取代。然而从事PHP 的几位同事就成了无价可归的码农。为了部落,为了维护最优雅的语言,苟且于测试部,听从测试指挥!作为一名开发语言被划分到测试部!测试部!!!!是一件多么可悲的一件事!呜呼哀哉!慢慢的发现测试不是一门简单的技术,里面所用到的知识,有些是自己不了解的。为了不甘于现状,只能多学技术。回顾3年来的编程之路,在这里怀念下。有些不好的地方,请大佬们不要谴责,我会慢慢的更进。
第1阶段:初级PHP程序员
1、学会搭建PHP 运行环境(LNMP/WAMP)
重点:把LNMP搞熟练(核心是安装配置基本操作)
目标:能够完成基本的LNMP环境安装,简单配置维护;能够做基本的简单系统的PHP开发;能够在PHP中型系统中支持某个PHP功能模块的开发。
时间:完成本阶段的时间因人而异,有的成长快半年一年就过了,成长慢的两三年也有。
2、MySQL:
会自己搭建mysql,知道基本的mysql配置选项;知道innodb和myisam的区别,知道针对InnoDB和MyISAM两个引擎的不同配置选项;知道基本的两个引擎的差异和选择上面的区别;能够纯手工编译搭建一个MySQL数据库并且配置好编码等正常稳定运行;核心主旨是能够搭建一个可运行的MySQL数据库。
3、PHP:
基本语法数组、字符串、数据库、XML、Socket、GD/ImageMgk图片处理等等;熟悉各种跟MySQL操作链接的api(mysql/mysqli/PDO),知道各种编码问题的解决;知道常规熟练使用的PHP框架(ThinkPHP、Zendframework、Yii、Yaf等);了解基本MVC的运行机制和为什么这么做,稍微知道不同的PHP框架之间的区别;能够快速学习一个MVC框架。能够知道开发工程中的文件目录组织,有基本的良好的代码结构和风格,能够完成小系统的开发和中型系统中某个模块的开发工作。千锋PHP现在手把手教的手写MVC框架在业界口碑不错,是个不错的PHP学习参考资料。
4、web大前端:
必须要熟悉DIV+CSS+JavaScript,现在前端的份量越来越重,各种框架营运而生。Vue.js、React.js、Angular.js,非常受企业欢迎。如果你开发基础打得牢固,这些学起来很轻松。
5、开发系统设计:
最好能够独立完成小型系统的基本设计,其中包括简单的数据库设计,能够完成基本的:浏览器 -> Nginx+PHP -> 数据库 架构的设计开发工作;能够支撑每天几十万到数百万流量网站的开发维护工作
第二阶段:中级PHP
1、Linux:
在第一阶段的基础上面,能够流畅的使用Shell脚本来完成很多自动化的工作;awk/sed/perl 也操作的不错,能够完成很多文本处理和数据统计等工作;基本能够安装大部分非特殊的Linux程序(包括各种库、包、第三方依赖等等,比如Redis/Sphinx/xunsearch/SVN/Git之类的);了解基本的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/redis:
在第一阶段的基础上面,在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异常情况的处理方案(或者知道哪儿找到处理方案)。
4、Redis/Memcached:
在大部分中型系统里面一定会涉及到缓存处理,所以一定要了解基本的缓存;知道Memcached和Redis的异同和应用场景,能够独立安装 Redis/Memcached,了解Memcahed的一些基本特性和限制,比如最大的value值,知道PHP跟他们的使用结合;Redis了解基本工作原理和使用,了解常规的数据类型,知道什么场景应用什么类型,了解Redis的事务等等。原理部分,能够大概了解Memcached的内存结构(slab机制),redis就了解常用数据类型底层实现存储结构(SDS/链表/SkipList/HashTable)等等,顺便了解一下Redis的事务、RDB、AOF等机制更好
除了第一阶段的能力,安装配置方面能够随意安装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引擎/扩展基本工作机制);
根据自己的开发经验和学习,觉得自己技术刚刚达到这个层次,后续如何。。。。。敬请期待!
|
|