2019/6/16:17Nginx工作原理部分深入学习
温馨提示:这篇文章已超过534天没有更新,请注意相关的内容是否还可用!
php程序员来源:南昌达内IT教育培训大学时间:2019/6/1611:16:17
重点:除了基本的LNMP程序,还无法在某个方向或领域有深入学习。(纵深维度发展)
目标:除了无法完成基本的PHP业务研发,还无法缓解大个别深入复杂的技术难题,并且可以独立设计完成中小型的平台设计和研发工作;
自己才会独立hold深入某个科技方向,在这块比较专业。(例如在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内部的事件处置php源码分析工具,内存管理等等。
同时可以学习Nginx扩展的研发,可以订制一些自己私有的扩充;同时可以对Nginx+Lua有一定程度的知道,看看能否可以结合应用出更好方式。
这个阶段的要求是对Nginx原理的深入理解,可以考量作为Nginx方向的深入专业者。
3.MySQL/:
在第二阶段的基础上面,在MySQL应用方面,除了之前的基本SQL优化,还无法在完成一些复杂操作,比如大批量数据的导入导出,线上大批量数据的修改表结构以及增删索引数组等等高危操作;
比如安装配置,已经无法处理更多复杂的MySQL的弊端,比如诸多难题的追查php源码分析工具,主从同步延迟问题的缓解、跨机房同步数据方案、MySQL高可用架构等都有涉及了解。
对MySQL应用层面,对MySQL的核心关键技术非常熟悉,比如事务体制(隔离级别、锁等)、对触发器、分区等科技有一定知道和应用;对MySQL性能方面,有包含磁盘优化(SAS迁移到SSD)、服务器改进(存储、服务器本身配置)、
在MySQL原理方面,有更多认识,比如对MySQL的工作模式开始阅读个别源码,比如对主从同步(复制)科技的源码学习,或者对某个存储引擎(//)等等的源码学习理解,如果条件允许,可以参考CSV引擎研发自己简单的储存引擎来存放一些数据,增强对MySQL的理解;
在这个过程,如果自己有兴趣,也可以考量往DBA方向发展。层面,,或者是做一些线上的数据预测处理的操作,具体场景可以根据工作来,不过核心是要更好的深入理解RMDBS和NoSQL的不同画面下面的应用,如果条件以及兴趣允许,可以开始深入学习一下的工作模式。
4.Redis/:
在第二阶段的基础上面,能够更深入的应用和学习。因为不是非常复杂,建议可以把源码进行阅读,特别是存储管理个别,方便深入理解;Redis部分,可以多做一些复杂的数据结构的应用(zset来做榜排序操作/事务处理用来降低原子性在类场景应用等等的使用操作)。
多涉及aof等同步措施的学习应用,设计一个高可用的Redis应用架构和集群;建议可以深入的学习一下Redis的源码,把在第二阶段累积的知识都可以应用上,特别可以阅读一下包含核心事件管理、内存管理、内部核心数据结构等充分学习认识一下。
如果兴趣允许,可以作为一个Redis方面十分专业的使用者。
5.PHP:
成为基础核心技能,我们在第二阶段的基础上面,需要有更深入的学习和应用。从基本代码应用前面来说,能够解决在PHP开发中遭遇95%的难题,了解大个别PHP的方法;对大个别的PHP框架能够快速在内上手使用,并且知道各个主流PHP框架的优缺点,能够快速便捷项目研发中做技术选型。
在配置方面,除了常规第二阶段会的常识,会知道一些非常偏门的配置选项(php/),包括扩展中的一些复杂配置和原理。
对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模型的机理和变化,并且熟悉常见的异步框架(ACE/ICE/libev//libuv/Boost.ASIO等)和使用,如果闲暇也可以看看一些国产自己开发的库(例如muduo);同时还能设计好的高并发程序架构(-/-等)。
了解大部分C/C++后端开发中的弊端(存储管理、日志打印、高并发、前后端通讯协议、服务监控),知道各个后端服务RPC通信问题(/http//等)。
能够更熟络的使用GCC和GDB来研发编译安装程序,在线上程序core掉后才能逐渐追查跟踪解决难题。
通用组件研发方面,可以累积以及研发一些通用的软件或库(例如异步网络框架、日志库、内存池、线程池等),不过研发后能否应用要谨慎,省的埋坑去追bug。
7.前端:
本文来自网络,如有侵权请联系网站客服进行删除
还没有评论,来说两句吧...