动态链接库与静态链接库的区别 静态链接库 静态链接库是将整个库文件都与目标程序链接在一起,整合到一个可执行文件中。 动态链接库 动态链接库与静态链接库相反,在可执行文件中,只记录了库文件的一些信息(位置啊,函数名什么的……瞎猜的),在需要的时候有OS进行调用。 另外动态链接还分为载入时链接,与运行时链接。 载入时链接是在程序载入时,将整个库文件同时载入,而运行时链接是在程序运行时发现这段函数程序未在内存中而由OS载入。 可以理解成运行时链接是动态的动态。 区别与比较 一点小区别: 静态链接库不能引用其他库文件,而动态链接库则可以。 以下讨论两者优劣势力,只谈优势,因为动态链接库的优势就是静态链接库的劣势,…

本文转自此博文,因无法联系作者擅自转载,若需要删除请作者留言 只有首先调用close()发起主动关闭的一方才会进入TIME_WAIT状态,进入TIME_WAIT状态的TCP连接需要经过2MSL才能回到初始状态,其中,MSL是指Max Segment Lifetime,即数据包在网络中的最大生存时间。每种TCP协议的实现方法均要指定一个合适的MSL值,如RFC1122给出的建议值为2分钟,又如Berkeley体系的TCP实现通常选择30秒作为MSL值。这意味着TIME_WAIT的典型持续时间为1-4分钟。 产生原因及好处 对于TIME_WAIT的存在,有两个理由。一个原因是为了防止一个连接中延迟的数据段会被后序的连接错误的解析。当一个连接处于2MSL状态的时候,任何到达的数据段都将会被丢弃。…

自从上一次写完红黑树入门已经过去一个多月了……当时天真的我觉得就算再难只要花个一个下午就可以把删除操作搞懂,然而……………… 阅前须知 但是我现在在这里申明一点,其实红黑树的删除操作也算不上太难,有一点是因为分类情况太多了。而我迟迟没有理解的一个主要原因在于 我们讨论的删除节点并不是我们在红黑树删除操作中传入的删除的节点,而是被删除节点的替换节点 因为在二叉查找树的删除过程中,被删除的节点实际上会被一个前驱最大节点或者是后继最小节点来替代。 而我们在红黑树中,可以在替换节点的同时,替换节点的颜色改成删除节点的颜色,那么我们的修复目标一下子缩小到了几乎是最下面的子树层,并且对删除节点处的性质并没有任何改变。实在是妙极! 另外感谢这篇文章,我是通过这个博文学习的,并且图片也来自这个博客,写的很好,推荐。 正文 由前文所得,…

老实说,LeetCode在我眼中的地位并不是很高,今天偶然刷了一下,没想到,写三个不会三个…… 是我变菜了,还是本来就不是那么简单,不过就结论来说,LeetCode对现在的我来说有刷一刷的价值。 这是三道成套的问题。提供题号 141,142,287。 如何判断一个链表中是否存在环。不允许修改链表,不允许申请O(N)及以上的空间。 在第一个问题的基础上,找到环的入口点。限制相同。 给 n+1…

之前的文章有提到,PC(一般为32位)的启动过程为 BIOS -> MBR -> loader -> kernel。 BIOS在休眠后的最后任务是从硬盘中的第0柱面第0磁头第1扇区中读取MBR,其实就是逻辑0扇区。因为扇区是从1开始计数的。 BIOS所做的内部原理对我来说是从来不去涉及的,所以也就不讨论这个。 从MBR开始才是我们程序猿所能任意写的内容,而MBR同BIOS一样,也需要对下一阶段loader进行过渡。 而一个特别麻烦的地方就是,没有任何库与函数供我们调用……因此我们只能在汇编层面从硬盘读取数据。…