零散笔记(三)

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在*左边是被指物为常量,在*右边是指针为常量。

发表评论

电子邮件地址不会被公开。 必填项已用*标注