TCP三次握手四次挥手
TCP三次握手与四次挥手三次握手B的TCP服务器进程先创建传输控制块TCB,准备接受客户进程的连接请求。然后服务器进程就处于LISTEN状态,等待客户的连接请求。
A首先创建传输控制块TCB,然后向B发出连接请求报文段,SYN=1,初始序号seq=x(随机,SYN=1的报文段不能携带数据,但要消耗掉一个序号),此时TCP客户进程进入SYN-SENT状态
B收到连接请求报文段后,如同意建立连接,则向A发送确认,SYN=1,ACK=1,确认号ack=x+1,初始序号seq=y(随机,SYN=1的报文段不能携带数据,但要消耗掉一个序号),TCP服务器进程进入SYN-RCVD状态
A收到B的确认后,要向B给出确认报文段,ACK=1,确认号ack=y+1,seq=x+1(初始为seq=x,第二个报文段所以要+1),ACK报文段可以携带数据,不携带数据则不消耗序号。TCP连接已经建立,A进入ESTABLISHED,B收到后也进入ESTABLISHED状态
———–数据传 ...
Elements of Scientific Writing Preparing for Top Conference and Journal Publications
Elements of Scientific Writing: Preparing for Top Conference and Journal PublicationsInstructor: Prof. Julian ChengDate: August 24 (Saturday) & 25 (Sunday), 2019 Time: 9:00-12:00 & 14:00-18:00Location: CI-101, Tsinghua SIGS, Shenzhen
AbstractScientific writing for both conferences and journals is essential for research-based graduate students. In the current practice, a starting young researcher often learns how to write a scientific paper by mimicking authors of published papers, which ...
从汇编角度来看解引用与自增
引言根据这个帖子:https://stackoverflow.com/questions/859770/post-increment-on-a-dereferenced-pointer 。
*ptr++背后的原理:
保存当前的ptr
自增ptr
对步骤1保存的ptr进行解引用,此时得到表达式的最终值
于是,对于*ptr++可以等价理解为下面的代码:
12*ptr;ptr = ptr + 1;
C++操作符的优先级:
初探普通指针举个例子,考虑下面代码:
123456int main(){ int i = 5, *ptr = &i; cout << *ptr++ << endl;; cout << *ptr << endl;}
结果为:
1252293320
因为ptr是一个指针,它存储指向的对象的地址,令该地址+1,再获取这个地址的对象的值,因为我们并没有在这个地址存储对象,所以别指望输出什么有效的信息
那如果用括号括起来呢?
12345int main(){ i ...
现代操作系统拾遗
ch1 引论什么是操作系统?一种运行在内核态的软件
操作系统的任务是创建好的抽象,并实现和管理它所创建的抽象对象(自顶向下)
操作系统的一个主要任务是隐藏硬件,呈现给程序(以及程序员)良好、清晰、优雅、一致的抽象
操作系统的任务是在相互竞争的程序之间有序地控制对处理器、存储器以及其他I/O接口设备的资源调配(自底向上的角度)
计算机硬件处理器
计算机的“大脑”,从内存中取出指令并执行
每个 CPU 都有一套可执行的专门指令集,不同型号的指令集不兼容
流水线设计:一个 CPU 可以有分开的取值单元、解码单元和执行单元,可同时进行
超标量设计:有多个执行单元,多个指令同时被取出、解码并装入一个保持缓冲区,这个保持缓冲区又输出到多个执行单元
CPU 内部主要包括:
因为 CPU 访问内存的时间比执行指令所花费的时间多,所以 CPU 内部也有一个专门用来存储关键变量和临时数据的寄存器,这是 CPU 的“内存”
程序计数器:保存了将要取出的下一条指令的内存地址
堆栈指针:指向内存中堆栈的顶部,每个程序在堆栈中保存了相关的输入参数、局部变量等
程序状态字(PSW)寄 ...
Linear Algebra
Essence of Linear Algebra普适的代价是抽象
Abstractness is the price of generality
向量(Vector)
计算机学生眼里:向量是数字列表
物理学生眼里:向量是箭头
数学家认为:向量可以表示任何东西,只要满足两个运算关系——数乘(scalar multiplication)与加法
线性组合、张成的空间和基(Linear combination、span and base)
将每个坐标看成标量,这些标量与基向量数乘后就可以表示所有向量
对于二维空间,只需要两个基向量——i-hat and j-hat,就可以用它们的线性组合表示整个二维空间所有的向量
但是如果这两个基向量是同向或者反向的,则没法表示整个二维空间的所有向量
为何叫线性组合?
对于二维空间的基向量,如果把其中一个基向量固定,另一个基向量变化,则合向量的末端会落在一条直线上
基向量的全部线性组合构成的向量集合称为“张成的空间”
对于三维空间,两个向量张成的空间是什么?
根据三点共面,张成的空间是这两个向量所确定的面
对于三维空间,三个向量张成的空间是 ...
操作系统——进程、线程、调度
本文为学习笔记,一部分来自于《现代操作系统》 荷兰 Andrew S. Tanenbaum著,一部分来自于浙江大学李善平教授主讲的《操作系统》课程,网址:http://www.icourses.cn/coursestatic/course_6801.html
#进程
进程:资源分配的最小单位
定义:一个进程就是一个正在执行程序的实例;进程是某种类型的活动,它有程序、输入、输出以及状态
严格说,某个瞬间,CPU只能运行一个进程,一个程序运行了两次,那么就算运行了两次进程,进程可以拥有多个线程
守护进程(daemon):运行在后台的进程
创建进程:
UNIX:fork
父进程与子进程拥有相同的存储映像(image)
fork系统调用创建一个新(子)进程
fork之后,exec系统调用装入一个新程序
父进程与子进程只有pid不一样,其他资源都一样,父进程的pid>0,子进程的pid=0
fork后执行父进程还是子进程,取决于内核所使用的调度算法
Windows:CreateProcess
进程的终止(可以让该进程的所有后辈进程都随之终止 ...
读书笔记——投资心理学
投资心理学
原书第5版 [美]John R. Nofsinger著,郑磊译
目录
第1章 心理学与金融第2章 过度自信第3章 自豪与懊悔第4章 风险感知第5章 决策框架第6章 心理账户第7章 构建投资组合第8章 代表性与熟悉程度第9章 社交互动与投资第10章 情绪与投资决策第11章 自我控制与决策第12章 次贷危机的心理学
第1章 心理学与金融
传统金融学观点认为投资者心理并非妨碍投资者做出正确决策的因素之一,投资者是理性的
传统金融学主要基于两个假设:
人们会作出理性的决策
人们对未来的预测不存在偏差
“经济决策存在可预见的偏差”这一观点正逐步被接受
本书可以学到:
许多可能影响投资决策的心理偏见
了解这些心理偏见如何影响投资决策
看到这些错误怎样侵蚀你的财富
学习如何识别和避免投资中的失误
沉锚(锚定)效应,心理学名词,指的是人们在对某人某事做出判断时,易受第一印象或第一信息支配,就像沉入海底的锚一样把人们的思想固定在某处。作为一种心理现象,沉锚效应普遍存在于生活的方方面面。第一印象和先入为主是其在社会生活中的表现形式。通常来讲,人们在作决策时,思维往 ...
Python基础知识
Python闭包概念:在一个内部函数中,对外部作用域的变量进行引用,并且一般外部函数的返回值为内部函数,那么内部函数就被认为是闭包
作用:闭包可以保存当前的运行环境,闭包在爬虫以及web应用中都有很广泛的应用,并且闭包也是装饰器的基础
理解:闭包=函数块+定义函数时的环境,inner就是函数块,x就是环境
注意:闭包无法修改外部函数的局部变量
举个例子:
在函数startAt中定义了一个incrementBy函数,incrementBy访问了外部函数startAt的变量,并且函数返回值为incrementBy函数(注意python是可以返回一个函数的,这也是python的特性之一)
123456789>>> def startAt(x):... def incrementBy(y):... return x+y... return incrementBy>>> a = startAt(1) # a是函数incrementBy而不是startAt>>> a<function st ...
Selenium实战——天猫淘宝京东买家秀
Selenium实战——天猫淘宝京东买家秀源码地址:https://github.com/edisonleolhl/BuyersShow
1、起因
作为一个关注什么值得买已久的人,作为一个微博都关注了好几个白菜君的人,在各大电商网站上薅羊毛那是再平常不过了。作为一个从来没看过商品的买家,商品评论里的买家秀自然是重点关注。
然而有的商品,只钟意其中一种颜色,或者款式,也许这个款式很特别,买的人很少,即使在评论区选择“带图”评价,可能好几页才有一个买家秀,这无疑是非常耗时又耗力的。
而且,商家有时候为了评价数量更多、更好看,新款的商品会和老款商品放在一起卖,选择款式的时候区分开,但是评价里却还有很多老款的,新款的寥寥无几,不禁想到:如果能一次性只看一种款式的买家秀就好了。
作为一个Python爬虫的实践者,就琢磨着能不能写个自动化工具,告诉程序商品的url地址,然后在本地就会有所有的买家秀图片,并且是按款式区分的,于是,说干就干,总共用时一天,反正坑挺多的。。
2、步骤
首先,访问这些评论,是不需要登录的,所以最开始我搞了挺久的cookies,后来发现根本不需要。。
selen ...
遗传算法
遗传算法前言
之前给小灯神做文本分析的时候,去图书馆借了两本书,一本是《数据之魅:基于开源工具的数据分析》,这本书适合学统计的相关人士学习,现在放在书架上吃灰中,另外一本是《集体智慧编程》,挺有意思的,没有讲很复杂的算法理论,用 Python 把机器学习相关的内容明明白白地、清清楚楚地写清楚了,其中在优化这一章就讲到了遗传算法,与其他章节一样,我也是把源码跑了一下就翻页了。
最近有个同学找我帮忙,应该是课程设计作业之类的,题目如下:
要求:
思考一种算法或规则,求解出灯布局的优化方案。指出算法过程步骤或规则,可以用示意性的代码或流程图表示;
基于你提出的算法,找到一种新的布局,使得照度均匀度达到最优,请参考上述MATLAB程序作修改并生成三维图形,判断均匀度效果,尝试画出灯的布局图。
这个要求是房间内任何一个点的光照强度尽量平均,越平均越好,光照强度与光源距离成反比。
灯管24个,相当于24个元素共同完成目标,每个元素是二维的(高度固定为3米),有横坐标和纵坐标。
成本函数可以简单用光照强度的方差来评估,某个 solution 的方差越小,那么其成本函数也越小,即越 ...