php魔术方法(14项)
|
|
HTTP协议中几个状态码的含义.
|
|
语句include和require的区别
在失败的时候:include
产生一个 warning
,而 require
直接产生错误中断;
require
在运行前载入;include
在运行时载入;
require_once
和 include_once
可以避免重复包含同一文件.
如果网站框架的设计能避免重复引用的话,推荐用include/require,
因为他们比_once速度稍快.
事务的特征(ACID)
- 原子性(Atomicity) 构成事务的所有事件要么都完成要么都当什么也没发生过
- 一致性(Consistency) 事务的结果应该符合预期,不应当超出预期之外导致不合理的结果
- 隔离性(Isolation) 未完成的事务应当对其它事务不构成影响
- 持久性(Durability) 事务的结果应当被永久保存下来
TCP传输的三次握手
发送端首先发送一个带SYN
标志的数据包给对方。接收端收到后,回传一个带有SYN/ACK
标志的数据包以示确认。
最后,发送端再回传一个带ACK
标志的数据包,代表“握手”结束。
若在握手过程中某个阶段莫名中断,TCP
协议会再次以相同的顺序发送相同的数据包。
断开一个TCP连接则需要”四次握手”
第一次握手:主动关闭方发送一个
FIN
,用来关闭主动方到被动关闭方的数据传送,也就是主动关闭方告诉被动关闭方:我已经不会再给你发数据了
(当然,在fin包之前发送出去的数据,如果没有收到对应的ack
确认报文,主动关闭方依然会重发这些数据),但是,此时主动关闭方还可以接受数据。第二次握手:被动关闭方收到
FIN
包后,发送一个ACK
给对方,确认序号为收到序号+1
(与SYN
相同,一个FIN
占用一个序号)。第三次握手:被动关闭方发送一个
FIN
,用来关闭被动关闭方到主动关闭方的数据传送,也就是告诉主动关闭方,我的数据也发送完了,不会再给你发数据了。第四次握手:主动关闭方收到
FIN
后,发送一个ACK
给被动关闭方,确认序号为收到序号+1,至此,完成四次挥手。
TCP和UDP的区别
TCP
(Transmission Control Protocol,传输控制协议)是基于连接的协议,也就是说,在正式收发数据前,必须和对方建立可靠的连接。一个TCP
连接必须要经过三次“对话”才能建立起来
UDP
(User Data Protocol,用户数据报协议)是与TCP相对应的协议。它是面向非连接的协议,它不与对方建立连接,而是直接就把数据包发送过去!
UDP适用于一次只传送少量数据、对可靠性要求不高的应用环境。
redis支持的数据类型
- string
- list
- set
- order set
- hash
asp,php,jsp的优缺点
asp: 闭源且不跨平台
php: 开源且跨平台,简单快速,作为网站初期的首选
jsp:
这个题
如果 uid 值为 10,2,5,6,3 的记录存在,那么 select uid from user where uid in (10,2,5,6,3);
结果顺序为按 uid 升序排列
php之multicurl
multicurl所有的多线程就是异步、网络io支持并发,http请求支持并发
pthread是真正正宗的多线程,也是php唯一的多线程
php优化
- CPU 密集部分用 C++ 或者 C 写 PHP 的扩展模块。
- OPcache 通过将PHP脚本预编译的字节码存储到共享内存中来提升PHP的性能,省去了每次加载和解析PHP脚本的开销。
php版本的差异
- 在 PHP 5.5 之前,empty() 仅支持变量;5.5以后支持表达式了
教训
|
|
get vs post
- get 数据量长度受限制,这主要是受 url 长度限制
- 安全
- get限制表单中数据集的范围为asc2码,而post可以支持整个iso10646字符集
echo(),print(),print_r()的区别
echo是语言结构,没有返回值
print是函数,有返回值
print_r是函数,递归调用,用于输出数组对象
跳转
方法一:php函数跳转,缺点,header头之前不能有输出,跳转后的程序继续执行,可用exit中断执行后面的程序。
方法二:利用meta
遍历目录
|
|
限制上传文件大小
- 客户端的隐藏域MAX_FILE_SIZE的数值(可以被绕开)。
- 服务器端的upload_max_filesize,post_max_size和memory_limit。这几项不能够用脚本来设置。
sql
a.删除没有任何订单客户:DELETE FROM customerinfo WHERE customerid NOT in (SELECT customerid FROM orderinfo)
b.提取所有没有订单客户:SELECT FROM customerinfo WHERE customerid NOT in (SELECT customerid FROM orderinfo)
c.提高b的速度优化:SELECT FROM customerinfo LEFT JOIN orderid ON customerinfo.customerid=orderinfo.customerid
WHERE orderinfo.customerid IS NULL
fopen打开文件
|
|
char vs varchar
Varchar是变长,节省存储空间,char是固定长度。查找效率要char型快,因为varchar是非定长,必须先查找长度,然后进行数据的提取,比char定长类型多了一个步骤,所以效率低一些
这些这些协议的全称和中文解释(都是工作在应用层)
SMTP (Simple Mail Transfer Protocol) 简单邮件传输协议
POP3 (Post Office Protocol 3) 邮局协议第3版
HTTP (Hypertext Transfer Protocol) 超文本传输协议
FTP (File Transfer Protocol)文件传输协议
DNS (Domain Name System and Domain Name Service protocol) 域名系统(服务)协议
OSI七层网络模型的名称,由下到上
物理层、数据链路层、网络层、传输层、会话层、表示层、应用层
find命令和grep命令的区别
find:按照文件名查找
grep:按照文件内容查找