稳定排序
(1)冒泡排序:冒泡排序就是把小的元素往前调或者把大的元素往后调。比较是相邻的两个元素比较,交换也发生在这两个元素之间。如果两个元素相等,不用进行交换;所以冒泡排序是一种稳定排序算法。
(2)归并排序 :归并排序是把序列递归地分成短序列,递归出口是短序列只有1个元素或者2个序列(1次比较和交换),然后把各个有序的短序列合并成一个有序的长序列,不断合并直到原序列全部排好序。在1个或2个元素时,1个元素不会交换,2个元素如果大小相等也不进行交换。在短的有序序列合并的过程中可以保证如果两个当前元素相等时,把处在前面的序列的元素保存在结果序列的前面,这样就保证了稳定性。所以,归并排序也是稳定的排序算法。
非稳定排序
(1)快速排序:快速排序有两个方向,左边的i下标一直往右走直到a[i] > a[pivot],其中pivot是中枢元素的数组下标。而右边的j下标一直往左走直到a[j] <= a[pivot]。如果i和j都走不动了且i < j,交换a[i]和a[j],重复上面的过程,直到i >= j。 交换a[j]和a[pivot],完成一趟快速排序。在a[i]和a[j]交换的时候,很有可能把元素的稳定性打乱。
(2)堆排序:堆的结构是节点i的孩子为2*i和2*i+1节点,大顶堆要求父节点大于等于其2个子节点,小顶堆要求父节点小于等于其2个子节点。在一个长为n 的序列,堆排序的过程是从第n/2开始和其子节点共3个值选择最大(大顶堆)或者最小(小顶堆),这3个元素之间的选择当然不会破坏稳定性。但当为n /2-1, n/2-2, ...1这些个父节点选择元素时,就会破坏稳定性。有可能第n/2个父节点交换把后面一个元素交换过去了,而第n/2-1个父节点把后面一个相同的元素没 有交换,那么这2个相同的元素之间的稳定性就被破坏了。所以,堆排序不是稳定的排序算法。
linux文件类型、文件存储结构以及软硬链接
linux的文件类型有:
(1)普通文件:分为纯文本和二进制。
(2)目录文件:即存储文件的目录。
(3)链接文件:指向同一文件或目录的文件。
(4)特殊文件:与系统外设相关的,通常在/dev下面。分为块设备和字符设备。
典型的linux文件系统如ext2中的一个文件由目录项、inode和数据块组成,其中:
(1)目录项:包含文件名和inode节点号。
(2)inode:又称文件索引节点,保存着文件的基本信息以及指向文件数据块的指针。
(3)数据块:存放文件具体内容。
ext2硬盘分区时会划分出目录块、inode Table区块和data block数据区域。当查看某个文件时,先在目录项中查找对应文件名的inode节点号,然后从inode table中找到inode并查出文件属性及数据存放点,再从数据块中读取数据。
软链接又叫符号链接,这个文件包含了另一个文件的路径名。可以是任意文件或目录,可以链接不同文件系统的文件。
硬链接是把文件名和文件系统使用的inode节点号链接起来。因此可以用多个文件名与同一个文件进行链接,这些文件名可以在同一目录或不同目录。硬链接只能引用同一文件系统中的文件。
参考http://www.cnblogs.com/yyyyy5101/articles/1901842.html
事物隔离级别
未提交读:一个事务在执行过程中可以看到其他事务没有提交的新插入的记录,而且能看到其他事务没有提交的对已有记录的更新。
提交读:一个事务在执行过程中可以看到其他事务已经提交的新插入的记录,而且能看到其他事务已经提交的对已有记录的更新。
可重复读:一个事务在执行过程中可以看到其他事务已经提交的新插入的记录,但是不能看到其他事务提交的对已有记录的更新。
串行化:事务执行的时候不允许别的事务并发执行。事务串行化执行,事务只能一个接着一个地执行,而不能并发执行。
参考http://xm-king.iteye.com/blog/770721
集线器
集线器(hub)的主要功能是对接收到的信号进行再生整形放大,以扩大网络的传输距离,同时把所有节点集中在以它为中心的节点上。它工作于OSI七层模型第一层物理层。hub采用CSMA/CD介质访问控制机制。集线器每个接口简单的收发比特,收到1就转发1,收到0就转发0,不进行碰撞检测。hub向某节点发送数据时,不是直接把数据发送到目的节点,而是把数据包发送到与集线器相连的所有节点。当以HUB为中心设备时,网络中某条线路产生了故障,并不影响其它线路的工作。