GET和POST的区别
GET是将header和data一并发送,然后服务器回复200;POST是先发送header,服务器回复100,然后再发送data,服务器回复200。
get参数放在url中,post参数放在request body中。
get请求是有长度限制的,post没有。
post比get相对来说安全,因为get参数暴露在url中。
get请求只能进行url编码,而post支持多种编码方式。
get参数会被保存在历史记录里,而post不会。
get请求浏览器可能会缓存,post一定不会。
get产生一个TCP数据包,post产生两个。
socket编程
TCP服务器端:socket bind listen accept send recv write read close
TCP客户端:socket connect send recv write read close
UDP服务器端:socket bind recvfrom sendto close
UDP客户端:socket recvfrom sendto close
数据库事务
事务(Transaction)就是作为单个逻辑工作单元执行的一系列操作,要么完全地执行,要么完全地不执行。
原子性(Atomicity)
要么全部成功,要么全部失败,中间的操作如原子一般不可拆分。
一致性(Consistency)
事务执行前后保持一致。A与B一共5000元,不管如何转账,总和都是5000元。
隔离性(Isolation)
事务不能被其他事务所干扰。
隔离级别:
读取未提交:事务可读取到其他事务未提交的数据。所有并发问题都会发生。
读取已提交:只有事务提交后,其更新结果才能被其他事务所看见。可解决脏读,但还有不可重复读和幻读。
可重复读:在一个事务中,对同一份数据的读取结果总是相同的,无论是否有其他事务在对此数据进行操作。可解决脏、不可重复读,但还有幻读。
可串行化:事务串行化执行。可解决所有的并发问题。
持久性(Durability)
事务对数据的改变是永久的。
平衡二叉树与红黑树
平衡二叉树,即AVL树,对于每个节点来说,左右子树都是平衡二叉树,且左右子树的深度之差的绝对值不超过1。
红黑树是一种二分查找树,通过对着色方式的限制,保证没有一条路径会比其他路径长出两倍。
性质:
1. 每个节点非红即黑
2. 根节点是黑的;
3. 每个叶节点(叶节点即树尾端NULL指针或NULL节点)都是黑的;
4. 如果一个节点是红色的,则它的子节点必须是黑色的。
5. 对于任意节点而言,其到叶子点树NULL指针的每条路径都包含相同数目的黑节点;
区别:
AVL 树是高度平衡的,频繁的插入和删除,会引起频繁的rebalance,导致效率下降;红黑树不是高度平衡的,算是一种折中,插入最多两次旋转,删除最多三次旋转。
如何区分const修饰的对象
const在*左边是被指物为常量,在*右边是指针为常量。