第一篇:PHP培训:程序员进阶学习,这些因素少不了!
www.xiexiebang.com
PHP培训:程序员进阶学习,这些因素少不了!
据悉,在众多IT行业职位中PHP开发工程师一职薪资不菲,其起步薪资在逐年递增,随着开发者工作经验的增加,其薪资的上升速率也较其他开发者更胜一筹。全球5000万互联网企业站中,有60%以上使用着PHP技术,80%国内互联网网站,包括搜狐、凤凰、京东等互联网企业均采用PHP进行开发。
“ 很多人选择了学习PHP,理所当然地,也更希望自己能够在职位上有更高的发展,但是要想爬的高,还需要有硬功夫。
也就是说,虽然知识与技能这些“干货”很重要,但它们却也不是成为高级程序员的全部。那么进阶学习,到底还需要哪些关键因素呢?
”
平和的心态
无论是Java程序员、C++程序员还是PHP程序员,其实都一样——要写一手好的程序,没有好的心态是不行的。在程序开发过程中,尤其是一些初中级的程序员,写出的程序或架构会遇到很多问题,这个时候不可太过急躁,应该逐个排查问题的最初源头,然后将其干掉。
“独家的”问题解决思路
没有真正解决过无数的bug或问题的程序员,谈不上专家,更谈不上高级程序员。而一个高级程序员正是从这种解决问题的过程中不断地历练自己,形成一套“独家的”烂熟于心的问题解决思路,让自己强大。
过硬的PHP基础知识
没有过硬的PHP基础知识,哪怕心态再好,问题解决的能力再强,也只能纸上谈兵。过硬的基础知识能够让你在项目开发过程中游刃有余。
综合的互联网应用及项目管理知识和素养
1、见识广博,擅于学习
2、项目解决方案选型
3、良好的项目管理素养
4、丰富的项目开发应用经验
5、良好的开发规范
想成为一名PHP高级工程师,以上四点算得上是必要因素了。其实可以看
基地地址:成都市青羊区少城路27号少城大厦
www.xiexiebang.com得出来,要掌握PHP并不是一件很难的事情,只要有心能够坚持,大家一定会在这条路上越走越好!当你遇到难题的时候成都中软卓越的老师会尽力帮你解决难题,这样你能够在你的道路上放心大胆的施展拳脚吧。
基地地址:成都市青羊区少城路27号少城大厦
第二篇:PHP程序员进阶学习,少不了这些因素
去名企 拿高薪 到翡翠教育
PHP程序员进阶学习,少不了这些因素
据悉,在众多IT行业职位中PHP开发工程师一职薪资不菲,其起步薪资在逐年递增,随着开发者工作经验的增加,其薪资的上升速率也较其他开发者更胜一筹。全球5000万互联网企业站中,有60%以上使用着PHP技术,80%国内互联网网站,包括搜狐、凤凰、京东等互联网企业均采用PHP进行开发。
很多人选择了学习PHP,理所当然地,也更希望自己能够在职位上有更高的发展,但是要想爬的高,还需要有硬功夫。
也就是说,虽然知识与技能这些“干货”很重要,但它们却也不是成为高级程序员的全部。那么进阶学习,到底还需要哪些关键因素呢?
平和的心态
无论是Java程序员、C++程序员还是PHP程序员,其实都一样——要写一手好的程序,没有好的心态是不行的。在程序开发过程中,尤其是一些初中级的程序员,写出的程序或架构会遇到很多问题,这个时候不可太过急躁,应该逐个排查问题的最初源头,然后将其干掉。
“独家的”问题解决思路
没有真正解决过无数的bug或问题的程序员,谈不上专家,更谈不上高级程序员。而一个高级程序员正是从这种解决问题的过程中不断地历练自己,形成一套“独家的”烂熟于心的问题解决思路,让自己强大。
过硬的PHP基础知识
没有过硬的PHP基础知识,哪怕心态再好,问题解决的能力再强,也只能纸上谈兵。过硬的基础知识能够让你在项目开发过程中游刃有余。
综合的互联网应用及项目管理知识和素养 去名企 拿高薪 到翡翠教育
1、见识广博,擅于学习
2、项目解决方案选型
3、良好的项目管理素养
4、丰富的项目开发应用经验
5、良好的开发规范 想成为一名PHP高级工程师,以上4点算得上是必要因素了。其实可以看得出来,要掌握PHP并不是一件很难的事情,只要有心能够坚持,大家一定会在这条路上越走越好!
翡翠教育专注IT教育培训,以创新的教学方式和完善的就业服务享誉业内,已覆盖全国30多个城市,拥有70家教学中心。
如果你想学习UI设计、Web前端、Java大数据、网络营销、PHP等课程,欢迎关注翡翠教育!2
第三篇:PHP程序员学习路线
供参考的 php 学习路线
第一阶段
第一讲,WEB基础
1.1 网站基本知识;
1.2 网络协议介绍;
1.3 B/S与C/S结构的区别;
1.4 WEB编程、网站开发技术介绍。
第二讲,网页设计
2.1 Dreamweaver介绍及使用;
2.2 静态网页HTML语言;
2.3 标题与段落,换行与分割线;
2.4 表格、表单;
2.5 框架、超链接、图片。
实例:1,使用表格进行网页布局设计;
2,使用表单、表格、框架进行系统后台界面设计。
第三讲,DIV+CSS
3.1 CSS的概念及基本语法;
3.2 用CSS设置丰富的文字效果设置图片效果;
3.3 用CSS设置表格与表单的样式,用CSS设置页面和浏览器的元素;
3.4 CSS盒模型;
3.7 CSS+DIV布局,CSS+DIV美化与布局实战。
实例:1,使用DIV+CSS设计按钮及Tab;
2,使用DIV+CSS设计导航菜单;
3,使用DIV+CSS设计论坛网页;
4,使用DIV+CSS设计博客网页。
第四讲,PHP开发环境
4.1 集成开发环境XAMPP安装;
4.2 Zend Studio的安装、配置;
4.3 Eclipse PDT的安装与配置;
4.4 编写第一个PHP程序;
4.5 调试PHP程序。
第五讲,PHP编程基础
5.1 PHP语言特性与发展趋势;
5.2 PHP变量常量数据类型;
5.3 PHP运算符与表达式;
5.4 PHP流程控制语句;
5.5 PHP函数。
第六讲,MySQL开发基础
6.1 MySQL数据库系统介绍及安装;
6.2 MySQL数据类型介绍;
6.3 MySQL表的创建、修改与删除;
6.4 MySQL查询语句;
6.5 PHP MySQL函数使用详解。
实例:1,论坛数据库表设计;
2,PHP连接MySQL数据库,实现增删改查。
第七讲,Web2.0开发技术Ajax
7.1 JavaScript介绍;
7.2 JavaScript语法基础;
7.3 DOM对象基础及事件;
7.4 Ajax核心对象XMLHttpRequest详解;
7.5 Ajax异步通信原理;
7.6 开发Ajax应用;
7.6 Ajax框架jQuery介绍及使用。
实例:1,Tab的动态切换效果;
2,论坛系统中使用Ajax方式验证用户名是否被注册;
3,论坛系统中通过Ajax方式获取用户信息。
第八讲,PHP Web2.0网站实例开发
8.1 Web2.0风格的论坛系统开发;
8.2 Web2.0风格的博客系统实战开发。实例:1,综合DIV+CSS +PHP+MySQL+Ajax技术
开发论坛;
2,综合DIV+CSS +PHP+MySQL+Ajax技术开发博客系统。
第二阶段
第一讲,PHP面向对象基础
1.1 面向对象编程介绍;
1.2 面向过程与面向对象的区别;
1.3 面向对象的基本特性;
1.4 类、属性和方法;
1.5 构造函数;
1.6 类的实例化;
1.7 使用类的属性和方法;
1.8 类的访问控制;
1.9 类的继承与多态;
1.10 面向对象的接口及抽象类;
1.11 类、对象及对象之间的关系;
1.12 几个常见的运算符和关键字。
实例:1,购物车对象关系设计;
2,班级、学生、课程、考试对象关系设计。
第二讲,PHP模板技术Smarty框架
2.1 Smarty模板技术介绍;
2.2 Smarty安装与配置;
2.3 Smarty 变量与变量修饰符;
2.4 Smarty分支结构;
2.5 Smarty循环结构;
2.6 Smarty保留变量;
2.7 Smarty生成静态页面;
2.8 Smarty内置函数详解。
实例:1,使用Smarty实现购物车的现实;
2,使用Smarty实现产品增删改查页面。
第三讲,数据库抽象层PDO
3.1 PDO简介、安装与配置;
3.2 PDO连接MySQL数据库;
3.3 PDO执行SQL语句;
3.4 使用PDO实现数据的增删改查。
实例:1,使用PDO连接数据,实现产品的信息的增删改查功能。
第四讲,MVC框架介绍及应用开发
4.1 MVC设计思想;
4.2 MVC框架的介绍、安装、配置;
4.3 使用MVC框架开发项目;
4.4 MVC框架中使用PDO;
4.5 MVC框架中使用Smarty模板技术;
4.6 使用MVC框架实现增删改查功能。
实例:1,使用MVC框架实现用户的注册、登录。
2,使用MVC框架实现产品信息的管理。
第五讲,Ajax框架技术
5.1 jQuery框架的介绍与安装;
5.2 jQuery的事件处理;
5.3 jQuery的DOM对象处理;
5.4 jQuery对CSS的处理;
5.5 jQuery中的异步调用;
5.6 jQuery中的UI库使用;
5.6 Mootools常用函数、类及继承;
5.7 Mootools异步调用;
5.8 Mootools中对DOM对象处理;
5.9 Mootools中的事件机制;
5.10 Ajax实例开发。
实例:1,使用jQuery实现下拉菜单;
2,使用jQuery实现用户注册时采用异步方式实现用户名是否唯一的检验;
3,使用jQuery实现日期选择、滑动菜单、级联菜单,等等。
第六讲,MySQL数据库高级开发
6.1 MySQL复杂查询;
6.2 MySQL中的事务处理;
6.3 PHP中的事务处理;
6.4 MySQL中使用存储过程;
6.5 MySQL中使用触发器;
6.6 MySQL中的视图。
实例:1,网上商城中产品销量的统计报表复杂查询功能;
2,使用触发器、存储功能实现网上商城中会员积分的计算功能。
第七讲,后台统计报表技术
7.1 水平柱状图的设计和实现;
7.2 垂直柱状图的设计和实现;
7.3 圆饼图的设计和实现;
7.4 报表数据的导出。
实例:1,网上商城后台销量统计报表。
第八讲,PHP设计模式
8.1 什么是设计模式;
8.2 工厂模式;
8.3 单例模式;
8.4 命令模式;
8.5 策略模式;
8.6 观察者模式;
8.7 其他模式。
第九讲,MVC框架的设计
9.1 MVC框架的设计;
9.2 MVC框架中应用设计模式;
9.3 MVC框架的控制层设计;
9.4 MVC框架的模型层设计;
9.5 MVC框架的视图层设计。
实例1,实现简单的MVC框架;
2,MVC框架的不同视图实现的设计。
第十讲,MVC框架的设计
9.1 MVC框架的设计;
9.2 MVC框架中应用设计模式;
9.3 MVC框架的控制层设计;
9.4 MVC框架的模型层设计;
9.5 MVC框架的视图层设计。
实例1,实现简单的MVC框架;
2,MVC框架的不同视图实现的设计。
第十一讲,大型网站开发技术要点
10.1 服务器集群技术介绍;
10.2 MySQL数据库引擎的选择;
10.3 缓存技术的使用;
10.4 页面加速、瘦身技术;
10.5 图片服务器分离,等等。
第十二讲,网站项目实战开发
11.1 使用GladCMS内容管理系统开发大型网站系统(总站及多个子站),包括网站内容组织 策划、网站主题设计;
11.2 使用GladCMS系统开发在线商城系统,按实际的网站开发流程,进行需求分析、设计、编码、测试及系统部署;
11.3 由老师选择项目或者由学员自选项目,多人组成团队开发。
按照企业实际的项目开发流程,组队开发项目。
阶段考核考核本阶段学习的知识点,及项目开发考核。
毕业设计选择毕业设计项目,组队开发。
第三阶段
第一讲,PHP开发框架Zend Framework
1.1 Zend Framework介绍;
1.2 Zend Framework控制器层;
1.3 Zend Framework视图层;
1.4 Zend Framework模型层;
1.4 Zend Framework国际化语言;
1.5 Zend Framework验证;
1.6 Zend Framework缓存机制。
实例:1,使用Zend Framework开发一个新闻后台管理系统;
2,使用Zend Framework开发会员管理系统。
第二讲,Oracle数据库应用开发
6.1 Oracle数据安装;
6.2 Oracle数据库客户端安装;
6.3 Oracle脚本的编写;
6.4 PHP与Oracle数据的集成应用开发。
实例:1,使用PHP与Oracle设计网上商城后台管理系统。
第三讲,使用Zend框架项目实战
2.1 商城系统需求分析;
2.2 商城系统的设计;
2.3 商城系统的编码与测试。
实例:1,开发在线客户服务系统;
2,网上商城系统前台与后台的开发。
阶段考核考核本阶段学习的知识点,及项目开发考核。
毕业设计选择毕业设计项目,组队开发。
第四阶段
第一讲,Linux基础应用
1.1计算机基础知识和操作系统功能;
1.2 Linux系统的历史、现状和特点;
1.3 Linux系统安装;
1.4 系统分区部署;
1.5 Linux常用命令(文件外理命令、权限管理命令、压缩解压命令等)介绍;
1.6 Shell应用技巧;
1.7 Vim/Vi文本编辑器。
第二讲,Linux系统管理
2.1系统管理概述;
2.2 Linux系统引导流程解析;
2.3常见配置文件介绍;
2.4软件包管理;
2.5用户、组和权限管理;
2.6服务和进程管理;
2.7计划任务;
2.8文件系统管理和系统性能优化;
2.9设备管理;
2.10文件权限管理。
第三讲,Linux网络管理
3.1 Linux基本网络配置;
3.2远程管理控制(SSH、VNC、Webmin远程管理应用);3.3文件共享(Samba与FTP服务 器应用);
3.4 Apache服务器配置;
3.5 Shell编程;
3.6 Apache,MySQL和PHP
第四篇:[PHP培训教程] PHP开发程序员的学习路线
http://www.xiexiebang.commit等),也知道这些选项配置成为多少值合适;另外也了解一些特殊的配置选项,比如知道如何搭建mysql主从同步的环境,知道各个binlog_format的区别;知道MySQL的性能追查,包括slow_log/explain等,还能够知道基本的索引建立处理等知识;原理方面了解基本的MySQL的架构(Server+存储引擎),知道基本的InnoDB/MyISAM索引存储结构和不同(聚簇索引,B树);知道基本的InnoDB事务处理机制;了解大部分MySQL异常情况的处理方案
http://www.lampbrother.net(或者知道哪儿找到处理方案)。条件允许的情况,建议了解一下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引擎/扩展基本工作机制)。
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源码做深入学习。(本项不做重点学习,除非对前端有兴趣)。
http://www.lampbrother.net 8.系统设计
能够设计大部分中型系统的网站架构、数据库、基本PHP框架选型;性能测试排查处理等;能够完成类似:浏览器-> CDN(Squid)->Nginx+PHP->缓存->数据库结构网站的基本设计开发维护;能够支撑每天数百万到千万流量基本网站的开发维护工作;
第三阶段:高级阶段(高级PHP程序员)
重点:除了基本的LNMP程序,还能够在某个方向或领域有深入学习。(纵深维度发展)
目标:除了能够完成基本的PHP业务开发,还能够解决大部分深入复杂的技术问题,并且可以独立设计完成中大型的系统设计和开发工作;自己能够独立hold深入某个技术方向,在这块比较专业。(比如在MySQL、Nginx、PHP、Redis等等任一方向深入研究)
1.Linux
除了第二阶段的能力,在Linux下面除了常规的操作和性能监控跟踪,还能够使用很多高级复杂的命令完成工作(watch/tcpdump/starce/ldd/ar等);在shell脚本方面,已经能够编写比较复杂的shell脚本(超过500行)来协助完成很多包括备份、自动化处理、监控等工作的shell;对awk/sed/perl等应用已经如火纯青,能够随意操作控制处理文本统计分析各种复杂格式的数据;对Linux内部机制有一些了解,对内核模块加载,启动错误处理等等有个基本的处理;同时对一些其他相关的东西也了解,比如NFS、磁盘管理等等;
2.Nginx
在第二阶段的基础上面,已经能够把Nginx操作的很熟练,能够对Nginx进行更深入的运维工作,比如监控、性能优化,复杂问题处理等等;看个人兴趣,更多方面可以考虑侧重在关于Nginx工作原理部分的深入学习,主要表现在阅读源码开始,比如具体的master/worker工作机制,Nginx内部的事件处理,内存管理等等;同时可以学习Nginx扩展的开发,可以定制一些自己私有的扩展;同时可以对Nginx+Lua有一定程度的了解,看看是否可以结合应用出更好模式;这个阶段的要求是对Nginx原理的深入理解,可以考虑成为Nginx方向的深入专业者。
3.MySQL/MongoDB
在第二阶段的基础上面,在MySQL应用方面,除了之前的基本SQL优化,还能够在完成一些复杂操作,比如大批量数据的导入导出,线上大批量数据的更改表结构或者增删索引字段等等高危操作;除了安装配置,已经能够处理更多复杂的MySQL的问题,比如各种问题的追查,主从同步延迟问题的解决、跨机房同步数据方案、MySQL高可用架构等都有涉及了解;对MySQL应用层面,对MySQL的核心关键技术比较熟悉,比如事务机制(隔离级别、锁等)、对触发器、分区等技术有一定了解和应用;对MySQL性能方面,有包括磁盘优化(SAS迁移到SSD)、服务器优化(内存、服务器本身配置)、除了二阶段的其他核心性能优化选项(innodb_log_buffer_size/back_log/table_open_cache/thread_cache_size/innodb_lock_wait_timeout等)、连接池软件选择应用,对show *(show status/show profile)类的操作语句有深
http://www.lampbrother.net 入了解,能够完成大部分的性能问题追查;MySQL备份技术的深入熟悉,包括灾备还原、对Binlog的深入理解,冷热备份,多IDC备份等;在MySQL原理方面,有更多了解,比如对MySQL的工作机制开始阅读部分源码,比如对主从同步(复制)技术的源码学习,或者对某个存储引擎(MyISAM/Innodb/TokuDB)等等的源码学习理解,如果条件允许,可以参考CSV引擎开发自己简单的存储引擎来保存一些数据,增强对MySQL的理解;在这个过程,如果自己有兴趣,也可以考虑往DBA方向发展。MongoDB层面,可以考虑比如说在写少读多的情况开始在线上应用MongoDB,或者是做一些线上的数据分析处理的操作,具体场景可以按照工作来,不过核心是要更好的深入理解RMDBS和NoSQL的不同场景下面的应用,如果条件或者兴趣允许,可以开始深入学习一下MongoDB的工作机制。
4.Redis/Memcached
在第二阶段的基础上面,能够更深入的应用和学习。因为Memcached不是特别复杂,建议可以把源码进行阅读,特别是内存管理部分,方便深入理解;Redis部分,可以多做一些复杂的数据结构的应用(zset来做排行榜排序操作/事务处理用来保证原子性在秒杀类场景应用之类的使用操作);多涉及aof等同步机制的学习应用,设计一个高可用的Redis应用架构和集群;建议可以深入的学习一下Redis的源码,把在第二阶段积累的知识都可以应用上,特别可以阅读一下包括核心事件管理、内存管理、内部核心数据结构等充分学习了解一下。如果兴趣允许,可以成为一个Redis方面非常专业的使用者。
5.PHP
作为基础核心技能,我们在第二阶段的基础上面,需要有更深入的学习和应用。从基本代码应用上面来说,能够解决在PHP开发中遇到95%的问题,了解大部分PHP的技巧;对大部分的PHP框架能够迅速在一天内上手使用,并且了解各个主流PHP框架的优缺点,能够迅速方便项目开发中做技术选型;在配置方面,除了常规第二阶段会的知识,会了解一些比较偏门的配置选项(phpauto_prepend_file/auto_append_file),包括扩展中的一些复杂高级配置和原理(比如memcached扩展配置中的memcache.hash_strategy、apc扩展配置中的apc.mmap_file_mask/apc.slam_defense/apc.file_update_protection之类的);对php的工作机制比较了解,包括php-fpm工作机制(比如php-fpm在不同配置机器下面开启进程数量计算以及原理),对zend引擎有基本熟悉(vm/gc/stream处理),阅读过基本的PHP内核源码(或者阅读过相关文章),对PHP内部机制的大部分核心数据结构(基础类型/Array/Object)实现有了解,对于核心基础结构(zval/hashtable/gc)有深入学习了解;能够进行基本的PHP扩展开发,了解一些扩展开发的中高级知识(minit/rinit等),熟悉php跟apache/nginx不同的通信交互方式细节(mod_php/fastcgi);除了开发PHP扩展,可以考虑学习开发Zend扩展,从更底层去了解PHP。
6.C/C++
在第二阶段基础上面,能够在C/C++语言方面有更深入的学习了解,能够完成中小型C/C++系统的开发工作;除了基本第二阶段的基础C/C++语法和数据结构,也能够学习一些特殊数据结构(b-tree/rb-tree/skiplist/lsm-tree/trie-tree等)方便在特殊工作中需求;在系统编程方面,熟悉多进程、多线程编程;多进程情况下面了解大部分多进程之间的通信方式,能够灵活选择通信方式(共享内存/信号量/管道等);多线程编程能够良好的解决锁冲突问题,并
http://www.lampbrother.net 且能够进行多线程程序的开发调试工作;同时对网络编程比较熟悉,了解多进程模型/多线程模型/异步网络IO模型的差别和选型,熟悉不同异步网络IO模型的原理和差异(select/poll/epoll/iocp等),并且熟悉常见的异步框架(ACE/ICE/libev/libevent/libuv/Boost.ASIO等)和使用,如果闲暇也可以看看一些国产自己开发的库(比如muduo);同时能够设计好的高并发程序架构(leader-follow/master-worker等);了解大部分C/C++后端Server开发中的问题(内存管理、日志打印、高并发、前后端通信协议、服务监控),知道各个后端服务RPC通信问题(struct/http/thirft/protobuf等);能够更熟络的使用GCC和GDB来开发编译调试程序,在线上程序core掉后能够迅速追查跟踪解决问题;通用模块开发方面,可以积累或者开发一些通用的工具或库(比如异步网络框架、日志库、内存池、线程池等),不过开发后是否应用要谨慎,省的埋坑去追bug。
7.前端
深入了解HTTP协议(包括各个细致协议特殊协议代码和背后原因,比如302静态文件缓存了,502是nginx后面php挂了之类的);除了之前的前端方面的各种框架应用整合能力,前端方面的学习如果有兴趣可以更深入,表现形式是,可以自己开发一些类似jQuery的前端框架,或者开发一个富文本编辑器之类的比较琐碎考验JavaScript功力。
8.其他领域语言学习
在基础的PHP/C/C++语言方面有基本积累,建议在当前阶段可以尝试学习不同的编程语言,看个人兴趣爱好,脚本类语言可以学学 Python/Ruby 之类的,函数式编程语言可以试试 Lisp/Haskell/Scala/Erlang之类的,静态语言可以试试 Java/Golang,数据统计分析可以了解了解R语言,如果想换个视角做后端业务,可以试试 Node.js还有前面提到的跟Nginx结合的Nginx_Lua等。学习不同的语言主要是提升自己的视野和解决问题手段的差异,比如会了解除了进程/线程,还有轻量级协程;比如在跨机器通信场景下面,Erlang的解决方案简单的惊人;比如在不想选择C/C++的情况下,还有类似高效的Erlang/Golang可用等等;主要是提升视野。
9.其他专业方向学习
在本阶段里面,会除了基本的LNMP技能之外,会考虑一些其他领域知识的学习,这些都是可以的,看个人兴趣和长期的目标方向。目前情况能够选择的领域比较多,比如、云计算(分布式存储、分布式计算、虚拟机等),机器学习(数据挖掘、模式识别等,应用到统计、个性化推荐),自然语言处理(中文分词等),搜索引擎技术、图形图像、语音识别等等。除了这些高大上的,也有很多偏工程方面可以学习的地方,比如高性能系统、移动开发(Android/IOS)、计算机安全、嵌入式系统、硬件等方向。
10.系统设计
系统设计在第二阶段的基础之上,能够应用掌握的经验技能,设计出比较复杂的中大型系统,能够解决大部分线上的各种复杂系统的问题,完成类似浏览器-> CDN->负载均衡->接入层->Nginx+PHP->业务缓存->数据库->各路复杂后端RPC交互(存储后端、逻辑后端、反作 bi 后端、外部服务)->更多后端酱紫的复杂业务;能够支撑每天数千万到数亿流量网站的正
http://www.lampbrother.net 常开发维护工作。
第五篇:[PHP培训教程] PHP开发程序员的学习路线
http://www.xiexiebang.com门户的新闻评论多的有几十万条,如果所有用户一看新闻就加载 所有评论,那数据库不挂才怪。他们的评论需要审核(美其名约,实际是异步的方式,而且,评论可能都是静态化的或类似的静态化或内存cache的 方式),这点可能就是需要51cto.com这样站点学习的,你们打开51CTO的一篇博文,就会发现下面的评论一直都显示出来了,也可能是分页的。不过,应该都是直接读库的,一旦访问
http://www.lampbrother.net 量大,数据库压力大是必然。这里不是说51cto网站不好,所有的网站都是从类似的程序架构开始发展的。CU也可能 是如此。
提示:我们可以在静态数据层的前端自己架设一层cache层,对我们购买的CDN提供数据源服务,可用的软件有varnish/nginx/squid 等cache。在这层的前端我们也可以架设DNS服务器,来达到跨机房业务拓展及智能解析的目的。
第四层:动态服务器层:php,java等,只有透过了前面3层后的访问请求才会到这个层,才可能会访问数据库及存储设备。经过前三层的访问过滤 能到这层访问请求一般来说已非常少了,一般都是新发布的内容和新发布内容第一次浏览如;博文(包括微博等),BBS帖子。
特别提示:此层可以在程序上多做文章,比如向下访问cache层,memcache,memcachedb,tc,mysql,oracle,在程序级别实现分布式访问,分布式 读写分离,而程序级别分布式访问的每个db cache节点,又可以是一组业务或者一组业务拆分开来的多台服务器的负载均衡。这样的架构会为后面 的数据库和存储层大大的减少压力,那么这里呢,相当于指挥部的外层了。
第五层:数据库cache层,比如:memcache,memcachedb,tc等等。根据不同的业务需求,选择适合具体业务的数据库。对于memcache、memcachedb、ttserver及相关nosql数据库,可以在第四层通过程序来实现对本层实现分布式访问,每个分布式访问的节点都可能是一组负载均衡(数十台机器)。
第六层:数据库层,一般的不是超大站点都会用mysql主从结构,如:163,sina,kaixin都是如此,程序层做分布式数据库读写分离,一主(或双主)多从的方式,访问大了,可以做级连的主从及环状的多主多从,然后,实现多组负载均衡,供前端的分布式程序调用,如果访问量在大,就需要拆业 务了,比如:我再给某企业做兼职时,发现类似的51cto的一个站点,把www服务,blog服务,bbs服务都放一个服务器上,然后做主从。这种情况,当业务访问量大了,可以简单的把www,blog,bbs服务分别各用一组服务器拆分开,这种方式运维都会的没啥难度。当然访问量在大了,可以继续针 对某一个服务拆分如:www库拆分,每个库做一组负载均衡,还可以对库里的表拆分。需要高可用可以通过drbd等工具做成高可用方式。对于写大的,可以做主主或多主的MYSQL REP方式,对于ORACLE来说,来几组oracle DG(1master多salve方式)就够了,11G的DG可以象mysql rep一样,支 持读写分离了。当然可选的方案还有,mysql cluster 和oracle 的RAC,玩mysql cluster和oracle RAC要需要更好更多的硬件及部署后的大量 维护成本,因此,要综合考虑,到这里访问量还很大,那就恭喜了,起码是几千万以上甚至上亿的PV了。
象百度等巨型公司除了会采用常规的mysql及oracle数据库库外,会在性能要求更高的领域,大量的使用nosql数据库,然后前端在加DNS,负载均衡,分布式的读写分离,最后依然是拆业务,拆库。。逐步细化,然后每个点又可以是一组或多组机器。
特别提示:数据库层的硬件好坏也会决定访问量的多少,尤其是要考虑磁盘IO的问题,大公司往往在性价比上做文章,比如核心业务采用硬件 netapp/emc及san光纤架构,对于资源数据存储,如图片视频,会采用sas或固态ssd盘,如果数据超大,可以采取热点分取分存的方法,如:最常访问的10-20%使用ssd存储,中间的20-30%采用sas盘,最后的40-50%可以采用廉价的sata。
第七层:千万级PV的站如果设计的合理一些,1,2个NFS SERVER就足够了。我所维护(兼职)或经历过的上千万PV的用NFS及普通服务器做存储的 还有大把,多一些磁盘,如SAS 15K*6的,或者用dell6850,搞几组 NFS存储,中小网站足够了。当然可以做成drbd+heartbeat+nfs+a/a的方式。
http://www.lampbrother.net
如果能达到本文设计要求的,中等规模网站,后端的数据库及存储压力会非常小了。象门户网站级别,如sina等,会采用硬件netapp/emc等等 硬件存储设备或是san光纤同道,甚至在性价比上做文章,比如核心业务采用硬件netapp/emc及san光纤架构,对于资源数据存储,如图片视频,会采用sas或固态ssd盘,如果数据超到,可以采取热点分取分存的方法:如:最常访问的10-20%使用ssd存储,中间的20-30%采用sas盘,最后 的40-50%可以采用廉价的sata。
象百度等巨型公司会采用hadoop等分布式的存储架构,前端在加上多层CACHE及多及的负载均衡,同样会根据业务进行拆分,比如爬虫层存储,索引层存储,服务层存储。。可以更细更细。。为了应付压力,什么手段都用上了。特殊业务,如人人,开心网,包括门户网站的评论,微博,大多都是异步的写入方式,即无论读写,并发访问数据库都是非常少量的。