<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[zzu-hust-madd]]></title><description><![CDATA[勤用智，智用勤]]></description><link>https://blog.youkuaiyun.com/mdd18703649811</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; mdd18703649811]]></copyright><item><title><![CDATA[idea使用技巧]]></title><link>https://blog.youkuaiyun.com/mdd18703649811/article/details/103302017</link><guid>https://blog.youkuaiyun.com/mdd18703649811/article/details/103302017</guid><author>mdd18703649811</author><pubDate>Thu, 28 Nov 2019 22:07:11 +0800</pubDate><description><![CDATA[全局搜索快捷键
ctrl + shift + f
字符变成大写
ctrl + shift + u
格式化代码
ctrl + Alt + L
回到上次/下次编辑的地方
ctrl + alt + ←/→
生成变量的set/get方法
右键 —&gt; generate —&gt; Getter and Setter

...]]></description><category></category></item><item><title><![CDATA[数据库之关系数据理论]]></title><link>https://blog.youkuaiyun.com/mdd18703649811/article/details/103211607</link><guid>https://blog.youkuaiyun.com/mdd18703649811/article/details/103211607</guid><author>mdd18703649811</author><pubDate>Sat, 23 Nov 2019 11:18:42 +0800</pubDate><description><![CDATA[数据库的规范化（上一篇博客有写到）的程度不同，便有了这么多种范式。数据库范式是数据库设计必不可少的知识，没有对范式的理解，就无法设计出高效率、优雅的数据库，甚至设计出错误误的数据库。课本中的定义比较抽象，不太直观，也不易理解，记是肯定记不住的。
关系数据库
常用范式
关系数据库知道了，再来理解范式。范式是关系数据库关系模式规范化的标准，从规范化的宽松到严格，分为不同的范式，通常使用的有第一范式。第...]]></description><category></category></item><item><title><![CDATA[磁盘调度之扫描类算法]]></title><link>https://blog.youkuaiyun.com/mdd18703649811/article/details/103107353</link><guid>https://blog.youkuaiyun.com/mdd18703649811/article/details/103107353</guid><author>mdd18703649811</author><pubDate>Sun, 17 Nov 2019 12:46:02 +0800</pubDate><description><![CDATA[1、扫描(SCAN)算法
1)进程“饥饿”现象
SSTF算法虽然能获得较好的寻道性能，但却可能导致某个进程发生“饥饿”现象。因为只要不断有新进程的请求到达，且其所要访问的磁道与磁头当前所在磁道的距离较近，这种新进程的I/O请求必然优先满足。对SSTF算法略加修改后所形成的SCAN算法，即可防止老进程出现“饥饿”现象。
2)SCAN算法
该算法不仅考虑到欲访问的磁道与当前磁道间的距离，更优先考虑的是...]]></description><category></category></item><item><title><![CDATA[磁盘调度之最短寻道时间优先]]></title><link>https://blog.youkuaiyun.com/mdd18703649811/article/details/103107254</link><guid>https://blog.youkuaiyun.com/mdd18703649811/article/details/103107254</guid><author>mdd18703649811</author><pubDate>Sun, 17 Nov 2019 12:02:00 +0800</pubDate><description><![CDATA[最短寻道时间优先(SSTF，Shortest Seek Time First)
该算法选择这样的过程，其要求访问的的磁道与当前磁头所在的磁道距离最近，以使每次的寻道时间最短。但这种算法不能保证平均寻道时间最短。下图示出了按SSTF算法进行调度时，各种进程被调度的次序、每次磁头移动的距离，以及9次调度磁头平均移动的距离。


...]]></description><category></category></item><item><title><![CDATA[磁盘调度之先来先服务]]></title><link>https://blog.youkuaiyun.com/mdd18703649811/article/details/103107184</link><guid>https://blog.youkuaiyun.com/mdd18703649811/article/details/103107184</guid><author>mdd18703649811</author><pubDate>Sun, 17 Nov 2019 11:56:49 +0800</pubDate><description><![CDATA[先来先服务(FCFS，First Come First Served)
这是一种最简单的磁盘调度算法。它根据进程请求访问磁盘的先后次序进行调度。此算法的优点是公平、简单，且每个进程的请求都能依次地得到处理，不会出现某一进程的请求长期得不到满足的情况。但此算法由于未对寻道进行优化，致使平均寻道时间可能较长。下图示出了有9个进程先后提出磁盘I/O请求时，按FCFS算法进行调度的情况。这里将进程号(请求...]]></description><category></category></item><item><title><![CDATA[页面置换之Clock置换算法]]></title><link>https://blog.youkuaiyun.com/mdd18703649811/article/details/103106800</link><guid>https://blog.youkuaiyun.com/mdd18703649811/article/details/103106800</guid><author>mdd18703649811</author><pubDate>Sun, 17 Nov 2019 11:41:27 +0800</pubDate><description><![CDATA[LRU算法是较好的一种算法，但由于它要求有较多的硬件支持，故在实际应用中，大多采用LRU的近似算法。Clock算法就是用得较多的一种LRU近似算法。
1、简单的Clock置换算法
当采用简单Clock算法时，只需为每页设置一位访问位，再将内存中的所有页面都通过链接指针链接成一个循环队列。当某页被访问时，其访问位被置1。置换算法在选择一页淘汰时，只需检查页的访问位。如果是0，就选择该页换出；若为1，...]]></description><category></category></item><item><title><![CDATA[页面置换之最近最久未使用置换算法]]></title><link>https://blog.youkuaiyun.com/mdd18703649811/article/details/103106539</link><guid>https://blog.youkuaiyun.com/mdd18703649811/article/details/103106539</guid><author>mdd18703649811</author><pubDate>Sun, 17 Nov 2019 10:58:54 +0800</pubDate><description><![CDATA[LRU(Least Recently Used)置换算法
LRU置换算法是选择最近最久未使用的页面予以淘汰。该算法赋予每个页面一个访问字段，用来记录一个页面自上次被访问以来所经历的时间t，当须淘汰一个页面时，选择现有页面中其t值最大的，即最近最久未使用的页面予以淘汰。
利用LRU算法对上例进行页面置换的结果如图所示。当进程第一次对页面2进行访问时，由于页面7是最近最久未被访问的，故将它置换出去。当...]]></description><category></category></item><item><title><![CDATA[页面置换算法之最佳置换算法和先进先出置换算法]]></title><link>https://blog.youkuaiyun.com/mdd18703649811/article/details/103106269</link><guid>https://blog.youkuaiyun.com/mdd18703649811/article/details/103106269</guid><author>mdd18703649811</author><pubDate>Sun, 17 Nov 2019 10:43:54 +0800</pubDate><description><![CDATA[1.最佳(Optimal)置换算法
该算法所选择的淘汰页面，将是以后永不使用的，或许是在最长(未来)时间内不再被访问的页面。采用最佳置换算法，通常可保证获得最低的缺页率。但由于人们目前还无法预知一个进程在内存的若干个页面中，哪一个页面是未来最长时间内不再被访问的，因而该算法是无法实现的，但可以利用该算法去评价其他算法。现举例说明如下。
假定系统为某进程分配了三个物理块，并考虑有以下的页面号引用串：...]]></description><category></category></item><item><title><![CDATA[避免死锁之银行家算法]]></title><link>https://blog.youkuaiyun.com/mdd18703649811/article/details/103106148</link><guid>https://blog.youkuaiyun.com/mdd18703649811/article/details/103106148</guid><author>mdd18703649811</author><pubDate>Sun, 17 Nov 2019 10:13:56 +0800</pubDate><description><![CDATA[1. 算法思想
银行家算法是为了避免死锁的算法，是Dijkstra的银行家算法。由于该算法用于实现银行系统现金贷款的发放而得名的。为实现银行家算法，系统中必须设置若干数据结构。
1） 银行家算法的数据结构
a) 可利用资源向量available
b) 最大需求矩阵
c) 分配矩阵
d) 需求矩阵
2） 银行家算法
设Requesti 是进程Pi的请求量，如果Requesti[j]=k,表示进程Pi...]]></description><category></category></item><item><title><![CDATA[实时调度算法之最低松弛度优先算法]]></title><link>https://blog.youkuaiyun.com/mdd18703649811/article/details/103105819</link><guid>https://blog.youkuaiyun.com/mdd18703649811/article/details/103105819</guid><author>mdd18703649811</author><pubDate>Sun, 17 Nov 2019 10:07:58 +0800</pubDate><description><![CDATA[最低松弛度优先即LLF(Least Laxity First)算法
该算法是根据任务紧急(或松弛)的程度，来确定任务的优先级。任务的紧急程度愈高，为该任务所赋予的优先级就愈高，以使之优先执行。例如，一个任务在200ms时必须完成，而它本身所需的运行时间就有100ms，因此，调度程序必须在100ms之前调度执行，该任务的紧急程度(松弛程度)为100ms。又如，另一任务在400ms时必须完成，它本身需...]]></description><category></category></item><item><title><![CDATA[实时调度算法之EDF算法]]></title><link>https://blog.youkuaiyun.com/mdd18703649811/article/details/103105641</link><guid>https://blog.youkuaiyun.com/mdd18703649811/article/details/103105641</guid><author>mdd18703649811</author><pubDate>Sun, 17 Nov 2019 09:23:46 +0800</pubDate><description><![CDATA[最早截止时间优先即EDF(Earliest Deadline First)算法
该算法是根据任务的开始截止时间来确定任务的优先级。截止时间愈早，其优先级愈高。该算法要求在系统中保持一个实时任务就绪队列，该队列按各任务截止时间的早晚排序；当然，具有最早截止时间的任务排在队列的最前面。调度程序在选择任务时，总是选择就绪队列中的第一个任务，为之分配处理机，使之投入运行。最早截止时间优先算法既可用于抢占式...]]></description><category></category></item><item><title><![CDATA[操作系统线程同步之读者-写者问题]]></title><link>https://blog.youkuaiyun.com/mdd18703649811/article/details/103101622</link><guid>https://blog.youkuaiyun.com/mdd18703649811/article/details/103101622</guid><author>mdd18703649811</author><pubDate>Sat, 16 Nov 2019 18:58:37 +0800</pubDate><description><![CDATA[读者—写者问题（Readers-Writers problem）也是一个经典的并发程序设计问题，是经常出现的一种同步问题。计算机系统中的数据（文件、记录）常被多个进程共享，但其中某些进程可能只要求读数据（称为读者Reader）；另一些进程则要求修改数据（称为写者Writer）。就共享数据而言，Reader和Writer是两组并发进程共享一组数据区，要求：
（1）允许多个读者同时执行读操作；
（2）...]]></description><category></category></item><item><title><![CDATA[操作系统线程同步之哲学家进餐问题]]></title><link>https://blog.youkuaiyun.com/mdd18703649811/article/details/103101501</link><guid>https://blog.youkuaiyun.com/mdd18703649811/article/details/103101501</guid><author>mdd18703649811</author><pubDate>Sat, 16 Nov 2019 18:46:50 +0800</pubDate><description><![CDATA[1、问题描述（死锁）
五个哲学家，五只筷子，只有获得一双筷子之后才能就餐，就有可能出现这种情况：每个哲学家都获得了一只筷子，卡死在那个地方。

2、解决哲学家就餐问题当然后很多方法：
（1）有一个服务生来负责避免死锁
（2）哲学家在拿筷子的时候，确保左右都有筷子才同时拿起左右两只筷子
（3）规定拿筷子的方式：给筷子编号，先拿号码小的筷子
3、第二种方式java代码实现：
class Chopsti...]]></description><category></category></item><item><title><![CDATA[操作系统线程同步之生产者---消费者问题]]></title><link>https://blog.youkuaiyun.com/mdd18703649811/article/details/103101409</link><guid>https://blog.youkuaiyun.com/mdd18703649811/article/details/103101409</guid><author>mdd18703649811</author><pubDate>Sat, 16 Nov 2019 18:34:00 +0800</pubDate><description><![CDATA[生产者消费者问题是线程模型中的经典问题：生产者和消费者在同一时间段内共用同一存储空间，生产者向空间里生产数据，而消费者取走数据。
阻塞队列就相当于一个缓冲区，平衡了生产者和消费者的处理能力。这个阻塞队列就是用来给生产者和消费者解耦的。

wait/notify方法
首先，我们搞清楚Thread.sleep()方法和Object.wait()、Object.notify()方法的区别。
sleep(...]]></description><category></category></item><item><title><![CDATA[为什么四次握手之后需要等待2MSL]]></title><link>https://blog.youkuaiyun.com/mdd18703649811/article/details/103101088</link><guid>https://blog.youkuaiyun.com/mdd18703649811/article/details/103101088</guid><author>mdd18703649811</author><pubDate>Sat, 16 Nov 2019 18:00:22 +0800</pubDate><description><![CDATA[TCP释放过程如下图：

为什么A在TIME_WAIT状态必须等待2MSL的时间呢？
(1)为了保证A发送的最后一个ACK报文段能够到达B。这个ACK报文段有可能丢失，因而使处在LAST_ACK状态的B收不到对已发送的FIN+ACK报文段的确认。
B会超时重传这个FIN+ACK报文段，而A就能在2MSL时间内收到这个重传的FIN+ACK报文段。
接着A重传一次确认，重新启动2MSL计时器。
最后，...]]></description><category></category></item><item><title><![CDATA[TCP和UDP对比]]></title><link>https://blog.youkuaiyun.com/mdd18703649811/article/details/103100934</link><guid>https://blog.youkuaiyun.com/mdd18703649811/article/details/103100934</guid><author>mdd18703649811</author><pubDate>Sat, 16 Nov 2019 17:41:56 +0800</pubDate><description><![CDATA[UDP的主要特点是
(1)UDP是无连接的
(2)UDP使用尽最大努力交付
(3)UDP是面向报文的
(4)UDP没有拥塞控制
(5)UDP支持一对一、一对多、多对一和多对多的交互通信
(6)UDP的首部开销小
TCP的主要特点是
(1)TCP是面向连接的运输层协议
(2)每一条TCP连接只能有两个端点，每一条TCP连接只能是点对点的
(3)TCP提供可靠交付的服务
(4)TCP提供全双工通信
(...]]></description><category></category></item><item><title><![CDATA[计算机网络之TCP拥塞控制]]></title><link>https://blog.youkuaiyun.com/mdd18703649811/article/details/103097319</link><guid>https://blog.youkuaiyun.com/mdd18703649811/article/details/103097319</guid><author>mdd18703649811</author><pubDate>Sat, 16 Nov 2019 12:41:30 +0800</pubDate><description><![CDATA[1.引言
&nbsp;&nbsp;&nbsp;&nbsp;计算机网络中的带宽、交换结点中的缓存和处理机等，都是网络的资源。在某段时间，若对网络中某一资源的需求超过了该资源所能提供的可用部分，网络的性能就会变坏。这种情况就叫做拥塞。
&nbsp;&nbsp;&nbsp;&nbsp;拥塞控制就是防止过多的数据注入网络中，这样可以使网络中的路由器或链路不致过载。拥塞控制是一个全局性的过程，和流量控制不同...]]></description><category></category></item><item><title><![CDATA[计算机网络之分组转发算法]]></title><link>https://blog.youkuaiyun.com/mdd18703649811/article/details/103097163</link><guid>https://blog.youkuaiyun.com/mdd18703649811/article/details/103097163</guid><author>mdd18703649811</author><pubDate>Sat, 16 Nov 2019 12:30:59 +0800</pubDate><description><![CDATA[算法如下：
(1)从数据报的首部提取目的主机的IP地址D，得出目的网络地址为N。
(2)若N就是与此路由器直接相连的某个网络地址，则进行直接交付，不需要再经过其他的路由器，直接把数据报交付给目的主机(这里包括把目的主机地址D转换为具体的硬件地址，把数据报封装为MAC帧，再发送此帧)；否则就是间接交付，执行(3)。
(3)若路由表中有目的地址为D的特定主机路由，则把数据报传送给路由表中所指明的下一条...]]></description><category></category></item><item><title><![CDATA[各种内部排序方法的比较讨论]]></title><link>https://blog.youkuaiyun.com/mdd18703649811/article/details/103096108</link><guid>https://blog.youkuaiyun.com/mdd18703649811/article/details/103096108</guid><author>mdd18703649811</author><pubDate>Sat, 16 Nov 2019 11:07:27 +0800</pubDate><description><![CDATA[排序方法
平均时间
最坏情况
辅助存储




简单排序
O(n2)
O(n2)
O(1)


快速排序
O(nlogn)
O(n2)
O(logn)


堆排序
O(nlogn)
O(nlogn)
O(1)


归并排序
O(nlogn)
O(nlogn)
O(n)


基数排序
O(d(n+rd))
O(d(n_rd))
O(rd)


(1)从平均时间性能而言，快速排序最佳，其所需时...]]></description><category></category></item><item><title><![CDATA[归并排序]]></title><link>https://blog.youkuaiyun.com/mdd18703649811/article/details/103095923</link><guid>https://blog.youkuaiyun.com/mdd18703649811/article/details/103095923</guid><author>mdd18703649811</author><pubDate>Sat, 16 Nov 2019 10:34:37 +0800</pubDate><description><![CDATA[归并排序 (merge sort) 是一类与插入排序、交换排序、选择排序不同的另一种排序方法。归并的含义是将两个或两个以上的有序表合并成一个新的有序表。归并排序有多路归并排序、两路归并排序 , 可用于内排序，也可以用于外排序。这里仅对内排序的两路归并方法进行讨论。
一、两路归并排序算法思路
分而治之(divide - conquer);每个递归过程涉及三个步骤
第一, 分解: 把待排序的 n 个元...]]></description><category></category></item></channel></rss>