一.TCP与UDP的区别
1、TCP面向连接;UDP是无连接的,即发送数据之前不需要建立连接
2、TCP提供可靠的服务(拥塞控制、数据校验、重传机制,网络开销大);UDP尽最大努力交付,即不保证可靠交付
3、TCP面向字节流,实际上是TCP把数据看成一连串无结构的字节流; UDP是面向报文,没有拥塞控制,因此网络出现拥塞不会使源主机的发送速率降低(对实时应用很有用,如IP电话,实时视频会议等)
4、每一条TCP连接只能是点到点的;UDP支持一对一,一对多,多对一和多对多的交互通信
5、TCP首部开销20字节;UDP的首部开销小,只有8个字节
6、TCP的逻辑通信信道是全双工的可靠信道;UDP则是不可靠信道
补充:TCP和UDP都是传输层的协议!
TCP层: FTP:21, Telnet:23, SMTP:25
UDP: DNS:53, TFTP:69, SNMP:161, RIP:520
https: http:80
二. GET和POST的比较
Http定义了与服务器交互的不同方法,最基本的方法有4种,分别是GET,POST,PUT,DELETE,对应着对这个资源的查,改,增,删4个操作。
1、GET请求能够被缓存,POST不能
2、GET请求会保存在浏览器的浏览记录中,POST不能
3、GET请求的URL能够保存为浏览器书签,POST不能
4、GET请求有长度限制(2M浏览器有关),POST可以在php.ini中进行设置
5、GET请求主要用以获取数据(不能被修改),POST请求主要用以修改数据
6、POST的安全性要比GET的安全性高,不会在url中看到
三.进程与线程的区别
1、进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位.
线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.
2、一个应用程序至少有一个进程,一个进程至少有一个线程。
3、进程有独立的地址空间;线程有自己的堆栈和局部变量,但没有独立的地址空间。
(1)多进程的程序比多线程的程序健壮:一个进程崩溃后,在保护模式下不会对其他进程产生影响;而线程只是一个进程中的不同执行路径,一个线程死掉等于整个进程死掉。
(2)在进程切换时,耗费资源较多,效率要差一些。但对于一些要求同时进行并且又要共享某些变量的并发操作,只能用线程,不能用进程。
4、线程的划分尺度小于进程,使得多线程程序的并发性高。
5、进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大地提高了程序的运行效率。
查询优化:
1、查询结果只有一行数据时,使用limit 1
2、为where、order by用到的字段建立索引
3、避免在where中使用!=或<>操作符,避免表达式
4、不要使用order by rand(),非常耗cpu
5、避免使用select*
6、表中只设置一个id,并最好是unsigned,并设置auto_increment标志。不要用varchar
7、尽可能使用not null
8、使用预处理prepared statement,只解析一次
9、固定长度的表会更快