高级PHP程序员必备知识.docx
- 文档编号:6750158
- 上传时间:2023-01-10
- 格式:DOCX
- 页数:43
- 大小:51.77KB
高级PHP程序员必备知识.docx
《高级PHP程序员必备知识.docx》由会员分享,可在线阅读,更多相关《高级PHP程序员必备知识.docx(43页珍藏版)》请在冰豆网上搜索。
高级PHP程序员必备知识
程序员必备知识
高级PHP程序员必备知识1
1.玩转PHP字符串8
1.1.问题列表8
1.1.1.字符串的表达方式8
1.1.2.字符串的原理8
1.1.3.字符编码方式8
1.1.4.UTF-8和GBK编码原理8
1.1.5.字符串类型转换9
1.1.6.正则表达式9
1.1.7.字符串函数9
1.1.8.字符串常见算法和原理9
1.2.关键词10
1.2.1.ASCII、Unicode、GB2312、GBK、UTF8、POSIX、PCRE、HeredocNowdoc、奇偶校验位、串行化(序列化)、格式化字符串大小写不敏感匹配、非贪婪模式、callback、URL编码、URL解码10
1.3.参考资料10
1.3.1.看的书、网页10
1.4.此知识点掌握比较好的同学10
1.5.知识点ppt统一资料10
2.深入浅出PHP数组10
2.1.问题列表10
2.1.1.数组的表达方式10
2.1.2.数组类型转换11
2.1.3.数组的遍历11
2.1.4.数组元素查找11
2.1.5.数组元素插入和移除11
2.1.6.数组的排序和对比12
2.1.7.数组和数据结构12
2.2.关键词12
2.2.1.索引数组、关联数组、预定义接口、预定义数组、单链表、双向链表、多维数组、数据结构、队列、堆栈、集合、约瑟夫环12
2.3.参考资料12
2.3.1.PHP手册12
2.3.2.PHP5.5源码13
2.3.3.维基百科13
3.PHP文件核心编程13
3.1.问题列表13
3.1.1.文件和文件系统13
3.1.2.文本文件和二进制文件13
3.1.3.文件的打开方式13
3.1.4.文件的顺序存取和随机存取14
3.1.5.PHP中的XML和JSON操作要点14
3.1.6.PHP大文件上传的原理和实现15
3.1.7.“中国菜刀”和一句话木马15
3.2.关键词15
3.2.1.文件、文件系统、inode、ext3、ext4、xfs、exbibytes、文本文件、二进制文件、二进制安全、pack、unpack、文件指针、顺序存取、随机存取、纯真IP数据库、图片元数据、DOM、XMLReader、XMLParser、JSON、XMLHttpRequest2.0、一句话木马、中国菜刀15
3.3.参考资料15
3.3.1.PHP文件相关函数15
3.3.2.手册中XML相关内容15
3.3.3.手册中JSON相关内容15
3.3.4.Ajax2.0相关内容15
3.3.5.纯真IP数据库格式15
3.3.6.维基百科16
4.Linux原理和应用16
4.1.问题列表16
4.1.1.Linux哲学思想16
4.1.2.Linux基础知识16
4.1.3.Linux的日常使用16
4.1.4.Linux系统管理17
4.1.5.Shell编程17
4.1.6.AWK&SED18
4.2.关键词18
4.2.1.Linux目录结构、启动流程、文件权限、帮助手册、查找文件、VIM、日志分析与统计、Linux管道、输出重定向、编译安装、定时任务、系统管理、Shell编程、AWK、SED18
4.3.参考资料18
4.3.1.《鸟哥的linux私房菜》18
4.3.2.Linux中的man手册18
4.3.3.《Linux程序设计》18
4.3.4.《LinuxShell脚本攻略》18
4.3.5.IBMDeveloperWorks——《通用线程:
awk实例》19
5.PHP选项和运行原理19
5.1.问题列表19
5.1.1.php运行模式19
5.1.2.线程安全与进程安全19
5.1.3.apache运行模式19
5.1.4.php运行机制与原理19
5.1.5.php垃圾回收20
5.1.6.php选项20
5.2.关键字21
5.2.1.运行模式、cli、cgi、fastcgi、isapi、apache2handler、进程、线程、ThreadSafe、NonThreadSafe、prefock模式、worker模式、i/o模型、php运行机制、token、opcode、引用计数、垃圾回收、php选项21
5.3.参考资料21
5.3.1.21
5.3.2.php手册21
5.3.3.维基百科21
5.3.4.apache官网21
6.深入HTTP协议21
6.1.问题列表21
6.1.1.协议的表达方式22
6.1.2.HTTP协议的作用22
6.1.3.HTTP协议包括的内容22
6.1.4.COOKIE和SESSION22
6.1.5.HTTP性能优化23
6.1.6.HTTP安全23
6.2.关键词23
6.2.1.HTTP协议,header,request,response,状态位,响应消息,cookie,sessions,http性能优化,xss,csrf,sniffer,https23
6.3.参考资料24
6.3.1.维基百科24
6.3.2.http:
//www.w3.org/24
6.3.3.XX文库24
7.PHP安全攻防24
7.1.问题列表24
7.1.1.WEB安全入门24
7.1.2.常用测试工具24
7.1.3.点击劫持与任意重定向漏洞24
7.1.4.XSS与CSRF漏洞25
7.1.5.注入漏洞25
7.1.6.访问控制与命令执行漏洞26
7.1.7.文件上传下载与敏感信息泄露漏洞26
7.2.关键词26
7.2.1.黑客、白帽子、数据泄露、APT、抓包、点击劫持、任意重定向、XSS、CSRF、注入、访问控制漏洞、敏感信息泄露26
7.3.参考资料27
7.3.1.PHP手册的安全章节27
7.3.2.OWASP27
7.3.3.Wooyun27
8.JavaScript精髓27
8.1.问题列表27
8.1.1.JavaScript基础27
8.1.2.函数28
8.1.3.跨域28
8.1.4.事件28
8.1.5.JavaScript高级29
8.1.6.HTML&CSS29
8.1.7.JavaScript应用30
8.2.关键词30
8.2.1.ECMAScript,call,apply,setTimeout,clearTimeout,Undefined,Null,值传递,链式调用,this,类型转换过程,函数返回值,意外的全局变量,严格模式,NaN,即时函数,同源策略,跨域,事件流,事件委托,原型,原型链,作用域,事件驱动,闭包,CSS盒模型30
8.3.参考资料30
8.3.1.《JavaScript语言精粹》30
8.3.2.《编写可维护的JavaScript》30
8.3.3.《JavaScript高级程序设计》30
8.3.4.ECMAScript规范第五版30
8.3.5.维基百科30
9.PHP数据结构30
9.1.问题列表30
9.1.1.数据结构概念30
9.1.2.运算效率31
9.1.3.常见数据结构31
9.1.4.递归和循环32
9.1.5.查找和排序算法32
9.2.关键字33
9.2.1.数据结构、数据项、数据元素、数据对象、单链表、双链表、栈、队列、树、查找树、先序遍历、中序遍历、后序遍历、递归、二分法、冒泡排序、快速排序、简单选择排序、直接插入排序、剥洋葱思想33
9.3.参考资料33
9.3.1.大话数据结构33
9.3.2.数据结构(c语言版)33
9.3.3.数据结构与算法分析33
9.3.4.维基百科33
10.NoSQL技术及应用33
10.1.问题列表33
10.1.1.NoSQL基础33
10.1.2.Memcache相关34
10.1.3.Redis相关34
10.1.4.MongoDB相关34
10.2.关键词35
10.2.1.NoSQL,CAP定理,Memcache,Redis,MongoDB,一致性哈希算法,crc32,Memcache缓存命中率,Redis数据类型,Redis集合排序Redis持久化,MongoDB副本集,MongoDB分片35
10.3.参考资料35
10.3.1.《Redis入门指南》35
10.3.2.《MongoDB权威指南》35
10.3.3.《NoSQL数据库入门》35
10.3.4.维基百科35
11.MySQL高级使用35
11.1.问题列表35
11.1.1.MySQL体系结构35
11.1.2.MySQL存储引擎36
11.1.3.MySQL驱动与API36
11.1.4.MySQL索引36
11.1.5.SQL语句优化37
11.1.6.MySQL分表37
11.1.7.MySQL读写分离38
11.1.8.MySQL高可用方案38
11.2.关键字38
11.2.1.MySQL体系结构、部件、存储引擎、myisam、innodb、行锁、表锁、事务、隔离级别、MySQL驱动、索引、全文检索、平衡查找树、SQL语句优化、sql语句执行顺序与过程、水平拆分、垂直拆分、读写分离、高可用38
11.3.参考资料38
11.3.1.高性能My'SQL38
11.3.2.MySQL技术内幕-InnoDB存储引擎(第2版)38
11.3.3.MySQL.com38
12.PHP高级特性39
12.1.问题列表39
12.1.1.面向对象基础回顾39
12.1.2.异常处理39
12.1.3.Traits39
12.1.4.预定义接口40
12.1.5.PHP的魔术方法和魔术常量40
12.1.6.命名空间与自动加载41
12.1.7.反射41
12.1.8.综合应用41
12.2.关键词41
12.2.1.面向对象、异常处理、Trait、生成器、预定义接口、回调函数、匿名函数、闭包、命名空间、自动加载、反射、框架、魔术方法42
12.3.参考资料42
12.3.1.PHP官方文档42
12.3.2.《深入PHP:
面向对象、模式与实践》42
13.常见开源系统分析42
13.1.问题列表42
13.1.1.DiscuzX源码分析42
13.1.2.WordPress源码分析42
13.1.3.HDWiki和Tipask源码分析42
13.1.4.ThinkPHP框架分析和理解43
13.1.5.Laravel框架分析和理解43
13.1.6.自己动手构思MVC框架45
13.2.关键词45
13.2.1.Discuz、HDWiki、Tipask、WordPress、Laravel、MVC45
13.3.参考资料45
13.3.1.PHP官方文档45
13.3.2.各个系统的官网45
14.PHP设计模式45
14.1.问题列表45
14.1.1.走进设计模式45
14.1.2.设计原则46
14.1.3.常见设计模式46
14.1.4.怎样使用设计模式?
47
14.2.关键字48
14.2.1.模式、面向对象、组合、继承、接口、单例模式、工厂模式、原型模式、外观模式、组合模式、装饰模式、适配器模式、迭代器模式、观察者模式、中介者模式、访问者模式、策略模式、命令模式、责任链模式、链式调用模式48
14.3.参考资料48
14.3.1.《大话设计模式》48
14.3.2.《HeadFirst设计模式》48
14.3.3.《深入PHP:
面向对象、模式与实践》48
14.3.4.维基百科48
15.大规模网站开发技术48
15.1.问题列表48
15.1.1.大型网站的特点48
15.1.2.大型网站核心架构要素49
15.1.3.网站技术的演变及其技术脉络49
15.1.4.建设大型网站的核心思想50
15.1.5.大型网站常用技术和工具50
15.2.关键词51
15.2.1.大型网站、PV、UV、IP、高并发、高可用、最佳性能运行点、性能测试、Yslow、网站可用性、网站伸缩性、页面缓存、页面片段缓存、数据缓存、应用服务器、分库、分表、水平切分、垂直切分、分层设计、分布式、Hadoop、MapReduce、动静分离、读写分离、异步消息队列、自动化技术、负载均衡技术、LVS、Haproxy、Nginx、TCP/IP、Keepalived、rsync、git、xen、kvm、cdn、Varnish51
15.3.参考资料52
15.3.1.各种技术对应官网的资料52
15.3.2.《大规模Web服务开发技术》52
15.3.3.《构建高性能web站点》52
15.3.4.《大型网站技术架构》52
15.3.5.《构建高可用Linux服务器》52
15.3.6.《TCP/IP》协议卷一52
15.3.7.《Hadoop权威指南》52
15.3.8.维基百科52
1.玩转PHP字符串
1.1.问题列表
1.1.1.字符串的表达方式
字符串的表达方式有哪些,各是怎么表达?
存取和修改字符串中的字符有什么技巧?
1.1.2.字符串的原理
字符串在底层是如何实现的,什么决定着字符串的长度?
字符串本质上就是字符数组,数组长度就是字符串长度。
PHP并不特别指明字符串的编码,那字符串到底是怎样编码的呢?
配置文件里php字符串指定了一个默认编码。
非“二进制安全”是什么意思?
1.1.3.字符编码方式
什么是位?
什么是字节?
位:
"位(bit)"是电子计算机中最小的数据单位。
每一位的状态只能是0或1。
字节:
8个二进制位构成1个"字节(Byte)",它是存储空间的基本计量单位。
1个字节可以储存1个英文字母或者半个汉字,换句话说,1个汉字占据2个字节的存储空间。
什么是ascii编码,如何编码?
编码就是用文字、符号或者数码表示特定对象(信息)的过程。
计算机编码采用的是二进制编码。
ASCII=AmericaStandardCodeforInformationInterchange,美国信息交换标准码,作为数据传输的标准码。
由8个位来组成:
使用7个位来表示英文字母、数字0~9及其它符号,一般还加上一位奇偶校验。
用8位表示256个不同文字符号的是ASCⅡ扩展编码方式。
目前已确认为国际标准代码。
什么是Unicode编码?
Unicode(统一码、万国码、单一码)是一种在计算机上使用的字符编码。
Unicode是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。
1990年开始研发,1994年正式公布。
如何在xml中用Unicode表示汉字?
中文的unicode码的范围4e00-9fa5
1.1.4.UTF-8和GBK编码原理
什么是UTF-8编码?
UTF-8(8-bitUnicodeTransformationFormat)是一种针对Unicode的可变长度字符编码,又称万国码。
UTF-8编码有什么规律?
UTF-8是一种变长字节编码方式。
UTF-8中汉字到底占几个字节?
不定长,最多占4个字节,汉字是三个字节或者四个字节。
Unicode和UTF-8编码如何相互转换?
带有签名的UTF-8是怎么回事?
BOM(byte-ordermark),即字节顺序标记,它是插入到以UTF-8、UTF16或UTF-32编码Unicode文件开头的特殊标记,用来识别Unicode文件的编码类型。
GB2312和GBK编码是怎么来的?
GB2312 是对 ASCII 的中文扩展,GBK包括了GB2312的所有内容,同时又增加了近20000个新的汉字(包括繁体字)和符号
GBK和UTF8该如何选择?
如果面向的使用人群绝大部分都是中国人,用GBK等编码也可以。
但是目前的电脑来看,硬盘都是白菜价,电脑性能也已经足够无视这点性能的消耗了。
所以推荐所有的网页使用统一编码:
UTF-8。
什么时候要用多字节转码函数?
多字节转码函数mbstring和iconv有什么区别,如何选择?
1.发现iconv在转换字符"-"到gb2312时会出错,如果没有ignore参数,所有该字符后面的字符串都无法被保存。
不管怎么样,这个"-"都无法转换成功,无法输出。
另外mb_convert_encoding没有这个bug。
2.mb_convert_encoding可以指定多种输入编码,它会根据内容自动识别,但是执行效率比iconv差太多;如:
$str=mb_convert_encoding($str,"euc-jp","ASCII,JIS,EUC-JP,SJIS,UTF-8");“ASCII,JIS,EUC-JP,SJIS,UTF-8”的顺序不同效果也有差异。
3.一般情况下用iconv,只有当遇到无法确定原编码是何种编码,或者iconv转化后无法正常显示时才用mb_convert_encoding函数。
在开发中,如何做怎样才能不乱码?
统一编码:
建议都是utf8
源码文件的编码
请求头的编码
系统默认编码
数据库编码
字符串传输时候的编码
“绝对乱码”现象如何产生的?
1.1.5.字符串类型转换
其它数据类型转换为字符串有什么规律?
什么是“串行化”?
实现“串行化”有那些常用方法?
把对象的状态保存下来,需要时再将其回复。
串行化是把每个对象转化为二进制字符串。
file_put_contents,file_get_contents
1.1.6.正则表达式
什么是POSIX正则表达式?
POSIX风格的正则表达式使用Unix地区系统(localesystem),该系统提供了排序和识别字符的函数来让你智能地处理其他非英语的文本。
特别地,各种语言组成单词的”字母”(如 à 和ç)不同,POSIX正则表达式考虑到了这一点并提供相应的字符类。
然而,POSIX正则表达式是为使用仅有原文的数据而设计的。
如果数据中有空字节(\x00),那么正则表达式函数把它理解为字符串的末尾,并且匹配不会超过该字节位置。
什么是Perl兼容正则表达式(PCRE)?
PCRE和POSIX的对比有什么不同,该如何选择?
PCRE正则的书写有什么技巧?
正则表达式匹配的原理是什么?
1.1.7.字符串函数
如何能巧妙的记忆PHP中的常用字符串函数?
1.1.8.字符串常见算法和原理
字符串常用算法—如何随机生成字符串?
字符串常用算法—如何实现字符串反转?
字符串常用算法—如何对字符串加密解密?
字符串常用算法—如何对字符串安全处理?
1.2.关键词
1.2.1.ASCII、Unicode、GB2312、GBK、UTF8、POSIX、PCRE、Heredoc
Nowdoc、奇偶校验位、串行化(序列化)、格式化字符串
大小写不敏感匹配、非贪婪模式、callback、URL编码、URL解码
1.3.参考资料
1.3.1.看的书、网页
1.4.此知识点掌握比较好的同学
1.5.知识点ppt统一资料
2.深入浅出PHP数组
2.1.问题列表
2.1.1.数组的表达方式
如何构造一个数组,共有几种方法?
数组key和value有什么限制条件?
PHP目前有哪些预定义接口,各是什么用途?
如何实现PHP数组式访问接口?
PHP目前有哪些预定义数组,各是什么用途?
$_ENV是什么,如何让$_ENV有效?
2.1.2.数组类型转换
其它数据类型转为数组有什么规律?
有哪些方法可以实现数组的串行化?
2.1.3.数组的遍历
遍历数组有多少种方法,如何选用这些方法?
array_walk与array_map有什么不同?
for和foreach谁更快呢?
为什么?
Foreach,foreach不需要知道数组的长度,依次递归数组元素,而for需要知道数组长度还要进行索引++或--的操作
PHP数组在底层实现上是什么数据结构?
hashtable
如何用指针函数操作PHP数组?
2.1.4.数组元素查找
如何判断数组中key是否存在?
如何判断数组中值是否存在?
如何依据数组的key返回值?
如何依据数组的值返回key?
如何依据给定值在数组进行模糊查找?
二维或者多维数组数据处理有什么技巧?
2.1.5.数组元素插入和移除
如何往PHP数组中任意位置加入元素?
PHP数组元素的过滤和移除有哪些方法可以实现?
2.1.6.数组的排序和对比
如何巧妙记忆PHP数组中的排序函数?
如何运用array_multisort函数?
如何对PHP多维数组和对象数组排序?
2.1.7.数组和数据结构
PHP数组能实现哪些些数据结构?
PHP数组如何进行集合相关的运算?
如何巧妙的实现遍历子集的操作?
PHP数组如何实现堆栈?
如何用堆栈解决10进制数转换为2进制数?
PHP数组如何实现队列?
如何用队列的方式解决目录遍历问题?
如何用PHP数组解决“约瑟夫环”问题?
2.2.关键词
2.2.1.索引数组、关联数组、预定义接口、预定义数组、单链表、
双向链表、多维数组、数据结构、队列、堆栈、集合、约瑟夫环
2.3.参考资料
2.3.1.PHP手册
2.3.2.PHP5.5源码
2.3.3.维基百科
3.PHP文件核心编程
3.1.问题列表
3.1.1.文件和文件系统
什么是文件,在Linux下什么是文件呢?
Linux下文件类型有哪些?
什么是inode?
inode包含什么内容?
如何得知文件名最长能到多少?
如何获取文件的inode信息?
ext3文件系统有什么特点?
Exbibyte是什么单位,和Tb如何换算?
XFS文件系统有什么特点?
3.1.2.文本文件和二进制文件
如何判断一个文件是文本文件?
文件文件和二进制文件有什么不同?
3.1.3.文件的打开方式
文件打开方式有哪些?
各是怎么含义?
文件指针是什么意思,如何操作文件指针?
文件打开标记
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 高级 PHP 程序员 必备 知识