Got

为什么tcp的TIME_WAIT状态要维持2MSL

社会主义新天地 提交于 2020-04-12 17:28:07
本文主要分析为什么TIME_WAIT状态的持续时间是2MSL而不是1MSL,3MSL或其它的时长,而不会详细描述为什么需要TIME_WAIT状态。 阅读本文需要的预备知识: 了解TCP协议的状态变迁; 了解TCP拆链的四次挥手过程; 了解为什么需要TIME_WAIT状态。 正文 其实这个问题在《TCP/IP详解》以及《UNIX网络编程》这两本书中都有提及,但这两本书上的描述都比较简洁并不是特别容易理解,记得在第一次看《UNIX网络编程》时,我曾经反复阅读相关段落并花了不少时间来想这个问题,但并没有搞得很清楚,始终是懂非懂的样子,直至后来有机会参与TCP/IP协议栈的开发后才真正got到这个问题的关键点。 根据第三版《UNIX网络编程 卷1》2.7节,TIME_WAIT状态的主要目的有两个: 优雅的关闭TCP连接,也就是尽量保证被动关闭的一端收到它自己发出去的FIN报文的ACK确认报文; 处理延迟的重复报文,这主要是为了避免前后两个使用相同四元组的连接中的前一个连接的报文干扰后一个连接。 很明显,要实现上述两个目标,TIME_WAIT状态需要持续一段时间,但这段时间应该是多长呢? 如果只考虑上述第一个目标,则TIME_WAIT状态需要持续的时间应该参考对端的RTO(重传超时时间)以及MSL(报文在网络中的最大生存时间)来计算而不是仅仅按MSL来计算

C和C++安全编码笔记:指针诡计

旧巷老猫 提交于 2020-04-12 10:21:12
指针诡计(pointer subterfuge) 是通过修改指针值来利用程序漏洞的方法的统称 。 可以通过覆盖函数指针将程序的控制权转移到攻击者提供的外壳代码(shellcode)。当程序通过函数指针执行一个函数调用时,攻击者提供的代码将会取代原本希望执行的代码而得到执行。 对象指针也可以被修改,从而执行任意代码。如果一个对象指针用作后继赋值操作的目的地址,那么攻击者就可以通过控制该地址从而修改内存其它位置中的地址。 3.1 数据位置: static int GLOBAL_INIT = 1; // 数据段,全局 static int global_uninit; // BSS段,全局 int test_secure_coding_3_1() // 栈,局部 { int local_init = 1; // 栈,局部 int local_uninit; // 栈,局部 static int local_static_init = 1; // 数据段,局部 static int local_static_uninit; // BSS段,局部 // buff_ptr的存储空间是栈,局部;分配的内存是堆,局部 int* buff_ptr = (int*)malloc(32); free(buff_ptr); return 0; } UNIX可执行文件包含data段和BSS段

删除目录的符号链接

若如初见. 提交于 2020-04-11 23:37:27
问题: I have a symlink to an important directory. 我有一个重要目录的符号链接。 I want to get rid of that symlink, while keeping the directory behind it. 我想摆脱那个符号链接,同时保持它背后的目录。 I tried rm and get back rm: cannot remove 'foo' . 我试过 rm 然后回来 rm: cannot remove 'foo' 。 I tried rmdir and got back rmdir: failed to remove 'foo': Directory not empty 我尝试了 rmdir 并找回了 rmdir: failed to remove 'foo': Directory not empty I then progressed through rm -f , rm -rf and sudo rm -rf 然后我通过 rm -f , rm -rf 和 sudo rm -rf 进展 Then I went to find my back-ups. 然后我去寻找我的备份。 Is there a way to get rid of the symlink with out throwing away the

批改作文这件事,AI 比你的英语老师强在哪里?

孤街醉人 提交于 2020-04-09 12:42:03
摘要 网易有道词典最近推出了一个「作文批改」的新功能。 对于学生党,尤其是高三党来说,最近的一个大新闻就是高考延期了。经历过那个时期的人应该都明白,考试前一点小小的变动,都有可能对心态、临场发挥产生重大影响,更别说新冠病毒这样世界性的难题。 对于一些有明确解题思路和答案的考题,学生借助参考资料、网络都能找到解析和答案,在家也能自己复习。但如果是一些发散性的题目,比如高考作文、英语作文,老师的指导和建议可就十分重要了。 最近,有道词典推出了一个「作文批改」的新功能,运用 AI 技术来完成批改英语作文的工作。对于学生党来说,这个功能可以极大地提高复习效率,不用麻烦老师、不用去找付费平台,自己在家就能练习并提高英语作文水平。 AI 批改作文,更适合第二语言的学习 AI 批改作文的技术之前就有应用,不过是在中文作文上。它能给一些教育资源匮乏的地区减轻负担,提高教学效率。不过这样的技术也受到了一些质疑,因为汉语是门很复杂的语言,机器遵循的规则可能无法覆盖语言的多样性。从结果来看,可能会给一些优秀的作文判出平庸的分数,公平性存疑。 图片来源:视觉中国 实际上,AI 批改作文更适合在第二语言的学习中使用。比如对于国内大部分学生来说,英语作文主要考核的就是功能性,对其文学性没有太高要求,各种常见的考试也都有完善的评分标准。这是被很多考生忽视掉的,而 AI 刚好可以胜任这份工作。 评分、评语

无法绑定到“ ngModel”,因为它不是“ input”的已知属性

我与影子孤独终老i 提交于 2020-04-09 01:00:16
问题: I've got the following error when launching my Angular app, even if the component is not displayed. 即使未显示组件,启动我的Angular应用程序时也会出现以下错误。 I have to comment out the <input> so that my app works. 我必须注释掉 <input> 这样我的应用才能正常工作。 zone.js:461 Unhandled Promise rejection: Template parse errors: Can't bind to 'ngModel' since it isn't a known property of 'input'. (" <div> <label>Created:</label> <input type="text" [ERROR ->][(ngModel)]="test" placeholder="foo" /> </div> </div>"): InterventionDetails@4:28 ; Zone: <root> ; Task: Promise.then ; Value: I'm looking at the Hero plunker, but I don't see any

当用户将鼠标悬停在列表项上时,使光标成为手

做~自己de王妃 提交于 2020-04-06 12:20:05
问题: I've got a list, and I have a click handler for its items: 我有一个列表,并且有一个用于其项目的点击处理程序: <ul> <li>foo</li> <li>goo</li> </ul> How can I change the mouse pointer into a hand pointer (like when hovering over a button)? 如何将鼠标指针更改为手形指针(如将鼠标悬停在按钮上)? Right now the pointer turns into a text selection pointer when I hover over the list items. 现在,当我将鼠标悬停在列表项上时,该指针将变为文本选择指针。 解决方案: 参考一: https://stackoom.com/question/CxK3/当用户将鼠标悬停在列表项上时-使光标成为手 参考二: https://oldbug.net/q/CxK3/Make-the-cursor-a-hand-when-a-user-hovers-over-a-list-item 来源: oschina 链接: https://my.oschina.net/stackoom/blog/3214395

基础英语(一):Unit1

点点圈 提交于 2020-04-06 11:20:10
零,英语学习方法 我看了大量的学习方法,在其它科目都是很管用的,唯独英语,没有任何一个学习方法能够适合适用于我,但是我也从其他的学习方法中总结出了一些规律,那就是任何学习都是脱离不了例子的,任何事物都是先有例子再经过抽象,总结一般规律,得出公式,只有从例子中推公式一说,没有从公式中推例子一说。现在大量的书籍编排其实都本末倒置了,先把公式排在最前面,然后再介绍公式怎么用在做题中,这样学东西只会用而不知其所以然,根本无法融会贯通,而且也非常容易忘记,记混记错。英语也是同样的道理,必须从例子中学习单词和词组的抽象用法公式,而不是先记住单词背会词组再往文章里套用 一,基础词汇 1,good none is good to me as sb (be good to) do what they're good at (be good at) fish is good for health (be good for) the medicine will do you good (do sb good) 2,add he added that he would return soon (add) please add the figures up (add up) the figures add up to 115 (add up to) the bad weather add to

c++ atomic atomic_compare_exchange_weak CAS编程

别来无恙 提交于 2020-03-26 16:54:07
3 月,跳不动了?>>> 概述 在多线程应用中有个很典型的业务就是共同争抢一个某一个资源,比如很典型的秒杀,很多的线程在争夺某一个资源。本文以一个最简单的例子说明,2万个线程一起争夺一个变量+1的操作。 只使用atomic 在https://my.oschina.net/u/3707404/blog/3211668中,使用atomic类型可以避免多线程加锁导致的效率问题,同时保持资源安装,但是atomic本身有也其缺陷,其不能保证访问的一致性,即当100个线程都执行+1他能保证每一个线程的操作都会成功,但是如果你访问这个变量,其不保证每一个线程都看到的是最新的值,通过下面简单的代码你就会体会到。 #include <vector> #include <queue> #include <iostream> #include <boost/thread.hpp> #include <chrono> class Task { public : std :: atomic < int > queue ; boost :: mutex mutex ; Task () { queue = 0 ; } void get() { if ( queue == 0 ) { usleep( 1 ); queue ++ ; } } }; int main( int argc, char **argv) {

了解切片符号

巧了我就是萌 提交于 2020-03-25 12:18:34
3 月,跳不动了?>>> 问题: I need a good explanation (references are a plus) on Python's slice notation. 我需要一个关于Python切片符号的很好的解释(引用是一个加号)。 To me, this notation needs a bit of picking up. 对我而言,此表示法需要一些注意。 It looks extremely powerful, but I haven't quite got my head around it. 它看起来非常强大,但是我还没有完全了解它。 解决方案: 参考一: https://stackoom.com/question/28T5/了解切片符号 参考二: https://oldbug.net/q/28T5/Understanding-slice-notation 来源: oschina 链接: https://my.oschina.net/u/3797416/blog/3210770

小程序 【云开发】 个完整流程Demo

孤人 提交于 2020-03-22 00:00:50
3 月,跳不动了?>>> 1.新建小程序云开发 2. 创建后 默认有示例,把pages下的文件都删掉, 和app.json里的页面也相应去掉。 然后在pages下新建目录 ,再新建Page 就能创建相应的js,wxss,wxml文件,并保存到app.json里。 3. 创建自己的tab, 值得说的是app.json必须是严格的json格式,即要双引号,不能多余的, 号 tab最多5个,最少2个 4. 小程序中引用第三方库 安装后,要在小程序里构建下,工具》构建npm, 之后会多出个 然后 在界面的详情里 使用npm模块, 修改 app.json 将 app.json 中的 "style": "v2" 去除,小程序的 新版基础组件 强行加上了许多样式,难以去除,不关闭将造成部分组件样式混乱。 引用组件 全局使用的就在app.json里, 如果是单独页面的 就在页面的.json里引用如: "usingComponents": { "van-button": "@vant/weapp/button" } ​​​​​​​ 这样就能愉快地引用vantui组件了。 ========== 在小程序端如何发起请求 , 发起请求的方式一共有两种,小程序端和云函数。 一种是在小程序端发送请求,另一种是我们可以在云函数中发起请求。 如果在小程序 端发送请求,那么小程序端中有一个 API函数叫做 wx