php技术 如何查看中级PHP程序员1.性能好等知识?(一)php模板技术smarty第1讲
2022-09-30
中级 PHP 程序员
1.
可以流畅地使用脚本完成很多自动化任务;awk/sed/perl 也很好用,可以完成大量的文本处理和数据统计;基本上可以安装大部分非特殊程序(包括各种库、包、第三方依赖等,如////SVN等);了解基本服务,了解如何查看性能指标数据,了解以下基本问题跟踪等。
2. :
在第一阶段的基础上,了解更复杂的配置;包括多核配置,,, /tcp_* 配置,了解超时等相关配置和性能影响;知道除了web,还可以承接代理服务器、反向静态服务器等配置;了解基本的配置调优;知道如何配置权限,编译扩展;知道基本的工作原理(/机制,),知道为什么性能优于性能等;
3. /:
在第一阶段的基础上,在开发方面,掌握很多小技巧,包括常规SQL优化(by/by/rand优化等);除了能够构建之外,还可以冷热备份数据,知道影响/性能的配置选项(如//ize/等),也知道这些选项配置成什么值合适的; 另外,知道一些特殊的配置选项,比如知道如何搭建主从同步环境,知道区别;了解性能跟踪,包括/等,还可以了解索引建立和处理的基本知识;基本了解基本架构(+存储引擎),了解基本/索引存储结构及区别(聚集索引、B-tree);了解基本的事务处理机制;知道如何处理大多数异常(或知道在哪里可以找到它们)。如果条件允许,建议了解一下有代表性的数据库,顺便比较一下差异。同事可以在合适的应用场景中安全谨慎的使用,了解PHP基础和PHP开发的结合。
4./:
在大多数中型系统中,肯定会涉及到缓存处理,所以必须了解基本的缓存;了解和应用场景的异同,能够独立安装/了解一些基本的特性和限制,比如最大值php技术,了解PHP和它们的组合使用;了解基本工作原理和使用,了解一般数据类型,了解适用的场景类型,了解事务等等。原理部分可以大致了解内存结构(slab机制),了解常见数据类型的底层实现存储结构(SDS/链表//)等,顺便了解一下机制比较好事务、RDB、AOF 等
5. PHP:
除了第一阶段的能力,安装配置可以自由安装PHP和各种第三方扩展的编译安装配置;了解php-fpm的大部分配置选项和含义(如//等影响性能的配置),知道/区别;在PHP方面,他已经能够精通各种基础技术,包括各种深入的PHP,包括深入理解PHP面向对象/SPL/语法层面的反射等特殊特性;阅读过至少一个常规PHP MVC框架的代码,了解PHP基础框架的内部实现机制和设计思路;在PHP开发中,熟练使用常规设计模式进行应用开发(抽象工厂/单例/观察者/命令链/策略/适配器等模式);建议开发自己的PHP MVC框架,全面放开开发,让自己深入了解MVC模式,让自己在业务项目开发中快速升级;熟悉PHP中的各种代码优化方法,熟悉大部分PHP安全问题的解决方案;熟悉PHP执行的基本机制(Zend引擎/扩展的基本工作机制);并让自己在业务项目开发中快速升级;熟悉PHP中的各种代码优化方法,熟悉大部分PHP安全问题的解决方案;熟悉PHP执行的基本机制(Zend引擎/扩展的基本工作机制);并让自己在业务项目开发中快速升级;熟悉PHP中的各种代码优化方法,熟悉大部分PHP安全问题的解决方案;熟悉PHP执行的基本机制(Zend引擎/扩展的基本工作机制);
6. 系统设计:
能够设计大部分中型系统的网站架构、数据库、基础PHP框架选型;性能测试调查处理等;能够完成网站的基本设计类似:浏览器->CDN()->+PHP->缓存->数据库结构网站的开发和维护;可以支持每天数百万到千万流量的基础网站的开发和维护;
高级 PHP 程序员
重点:除了基础的LNMP程序外,还可以对某个方向或领域进行深度学习。(深维度开发)
目标:除了能够完成基本的PHP业务开发外,还能够解决最深入复杂的技术问题,能够独立设计并完成中大型系统设计开发工作;能够独立持有并深入某个技术方向,在这个比较专业。(如任一方向的深入研究、、PHP等)
1. :
除了第二阶段的能力,除了常规的操作和性能监控跟踪,还可以使用很多高级复杂的命令来完成工作(// /ldd/ar等);在脚本方面,编写了更复杂的脚本(500多行),以协助完成包括备份、自动化处理、监控等在内的许多任务;awk/sed/perl等应用已经如火如荼,可以随意操作控制文本统计,分析各种复杂格式的数据;对机制有一定了解,对内核模块加载、启动错误处理等有基本的处理;同时,我也了解了一些其他相关的东西网站模板,比如NFS、磁盘管理等;
2. :
在第二阶段的基础上,已经能够非常熟练的操作了,可以进行更深入的运维工作,比如监控、性能优化、复杂问题处理等;根据个人兴趣,更多方面可以考虑关注关于工作原理的深入研究,主要体现在开始阅读源码,比如具体/工作机制、内部事件处理、内存管理、 ETC。; 同时可以学习扩展的开发,可以自定义一些自己的私有扩展;对lua有一定的了解,看看能不能结合应用更好的模型;这个阶段的要求是对原理的深刻理解,
3. /:
在第二阶段的基础上,在应用方面,除了之前的基础SQL优化外,还可以完成一些复杂的操作,比如导入导出大数据,改变在线大数据的表结构,或添加或删除索引字段等高风险操作;除了安装配置,已经能够处理更复杂的问题,比如排查各种问题,主从同步延迟问题的解决,跨机房同步数据的解决方案,高可用架构等. 所有涉及的理解;应用层,熟悉事务机制(隔离层、锁等)等核心关键技术,对触发器有一定的了解和应用,分区和其他技术;性能方面,包括磁盘优化(SAS迁移到SSD)、服务器优化(内存、服务器配置),此外还有其他核心性能优化选项(ze// //eout等),连接池软件选择应用php技术,深入理解show*(show /show)类的操作语句,能够完成大部分性能问题的追溯;深入熟悉备份技术,包括容灾与恢复,深入理解权、冷热备份、多IDC备份等;在原理方面,有更多的了解,比如正确的工作机制,开始阅读部分源码,比如学习主从同步(复制)技术的源码,或者学习理解某个存储引擎的源码(//)等。如果条件允许,可以参考CSV引擎开发自己的简单存储引擎来保存一些数据,增强理解;在这个过程中,如果你有兴趣,也可以考虑向DBA方向发展。层面上可以考虑,比如在少写多读的情况下启动在线应用,或者做一些在线数据分析处理操作。具体的场景可以根据工作而定,但核心是为了更好的理解区别对于场景下的应用,如果有条件或者兴趣允许,可以开始深入了解工作机制。可以参考CSV引擎开发自己的简单存储引擎来保存一些数据,增强理解;在这个过程中,如果你有兴趣,也可以考虑向DBA方向发展。层面上可以考虑,比如在少写多读的情况下启动在线应用,或者做一些在线数据分析处理操作。具体的场景可以根据工作而定,但核心是为了更好的理解区别对于场景下的应用,如果有条件或者兴趣允许,可以开始深入了解工作机制。可以参考CSV引擎开发自己的简单存储引擎来保存一些数据,增强理解;在这个过程中,如果你有兴趣,也可以考虑向DBA方向发展。层面上可以考虑,比如在少写多读的情况下启动在线应用,或者做一些在线数据分析处理操作。具体的场景可以根据工作而定,但核心是为了更好的理解区别对于场景下的应用,如果有条件或者兴趣允许,可以开始深入了解工作机制。在少写多读的情况下启动在线应用,或者做一些在线数据分析和处理操作。具体的场景可以根据工作而定,但核心是为了更好的理解区别对于场景下的应用,如果有条件或者兴趣允许,可以开始深入了解工作机制。在少写多读的情况下启动在线应用,或者做一些在线数据分析和处理操作。具体的场景可以根据工作而定,但核心是为了更好的理解区别对于场景下的应用,如果有条件或者兴趣允许,可以开始深入了解工作机制。
4./:
在第二阶段的基础上,可以更深入地应用和学习。因为不是特别复杂,建议阅读源码,尤其是内存管理部分,便于深入理解;部分,可以做更多复杂数据结构的应用(zset用于排序排序操作/事务处理用于保证原子性秒杀场景应用等使用操作);大部分学习应用涉及到aof等同步机制,设计了高可用的应用架构和集群;建议深入研究源码,利用第二阶段积累的知识。可以应用,特别是可以阅读核心事件管理、内存管理、内部核心数据结构等。完全理解。如果兴趣允许,你可以成为一个非常专业的用户。
5. PHP:
作为基本核心技能,我们需要在第二阶段的基础上进行更深入的学习和应用。从基础代码应用的角度,可以解决PHP开发中遇到的95%的问题,了解大部分的PHP技巧;大部分PHP框架一天之内就能快速上手,了解各种主流PHP框架的优势。缺点是在项目开发中可以快速方便地进行技术选择;配置方面,除了常规二阶段会的知识外,还会了解一些比较局部的配置选项(php/),包括扩展中的一些复杂的高级配置和原理(如扩展配置中的.apc,apc) apc扩展配置中的./apc./apc.on等);对php的工作机制有了更深入的了解,包括php-fpm的工作机制(比如php-fpm在不同的配置机器下我们开始计算进程数和原理),对zend引擎(vm/gc/),阅读基础PHP内核源码(或阅读相关文章),了解PHP内部机制(基础Type//)实现的大部分核心数据结构,有深入的学习和了解核心基础架构(zval//gc);能够进行基本的PHP扩展开发,了解一些扩展开发(/等)的中高级知识,熟悉php和/的区别以及通信交互的细节(/);除了开发 PHP 扩展,
6. C/C++:
在第二阶段的基础上,可以对C/C++语言有更深入的了解,可以完成中小型C/C++系统的开发;除了第二阶段的基本C/C++语法和数据结构,还可以学习一些特殊的数据结构(b-tree/rb-tree//lsm-tree/trie-tree等),方便特殊的工作需要;系统编程,熟悉多进程、多线程编程;一些多进程通信方式可以灵活选择通信方式(共享内存/信号量/管道等);多线程编程可以很好的解决锁冲突问题,可以开发调试多线程程序;熟悉编程,了解多进程模型/多线程模型/异步网络IO模型的区别和选择,熟悉不同异步网络IO模型(/poll//iocp等)的原理和区别小程序开发,熟悉常用的异步框架(ACE /ICE ////.ASIO等)和使用,有空的话有时间,也可以看看一些国内自研的库(比如);同时可以设计好的高并发程序架构(-/-等);了解C++后端开发中的大部分C/问题(内存管理、日志打印、高并发、前后端通信协议、服务监控),了解各个后端服务的RPC通信问题(/http/ /, ETC。); 比较熟悉使用 GCC 和 GDB 用于开发、编译和调试程序。在线程序的核心掉线后,问题可以快速追踪解决。
7. 前端:
深入了解HTTP协议(包括各个详细协议的特殊协议代码及其背后的原因,比如302静态文件被缓存,502是后面php挂了等等);除了之前的前端框架应用集成能力,前端方面如果有兴趣学习,可以深入了解。形式是可以自己开发一些类似的前端框架,或者开发一个比较琐碎的Java技能测试比如富文本编辑器;
8. 其他领域的语言学习:
我对基本的PHP/C/C++语言有基本的积累。建议现阶段可以尝试学习不同的编程语言,根据个人爱好,可以学习脚本语言/Ruby等,函数式编程语言可以尝试Lisp///之类的,可以尝试Java/for静态语言,可以理解R语言对数据进行统计分析。如果你想从不同的角度做后端业务,可以试试 Node.js 和前面提到的组合等等。. 学习不同的语言主要是为了提高自己的视野和解决问题方法的差异。比如你会明白,除了进程/线程之外,还有轻量级的协程;例如,在跨机通信场景中,解决方案非常简单;在不想选择C/C++的情况下,有类似的效率/可用等;主要是改善视力。
9. 其他专业:
在这个阶段,除了基本的LNMP技能外,还会考虑学习一些其他的领域知识。这些都是可能的,取决于个人兴趣和长期目标。目前可供选择的领域很多,如云计算(分布式存储、分布式计算、虚拟机等)、机器学习(数据挖掘、模式识别等,应用于统计、个性化推荐)、自然语言处理(中文分词等)、搜索引擎技术、图形图像、语音识别等。除了这些高级的,还有很多地方可以学工程,比如高性能系统、移动开发(/IOS)、计算机安全、嵌入式系统、硬件等。
10.系统设计:
系统设计基于第二阶段。可以应用所学的经验和技能,设计一个比较复杂的中大型系统,可以在线解决各种复杂系统的大部分问题,完成类似浏览器->CDN->负载均衡->接入层- > +PHP -> 业务缓存 -> 数据库 -> 各种复杂的后端 RPC 交互(存储后端、逻辑后端、反作弊后端、外部服务) -> 更多后端江子的复杂业务;可以支持每天数千万到数亿流量的网站的正常开发和维护。