TCP的特性 TCP提供面向连接的、可靠的字节流服务 上层应用数据被TCP分割为TCP认为合适的报文段 TCP使用超时重传机制,而接收到一个TCP数据后需要发送一个确认 TCP使用包含了首部和数据的校验和来检查数据是否在传输过程中发生了差错 TCP可以将失序的报文重新排序 TCP连接的每一端都有固定大小的缓冲区,只允许另一端发送发送接收缓冲区所能接纳的数据 TCP提供面向字节流的服务,不在字节流中
UDP是一种对象数据报的传输层协议,它不提供可靠性,其数据报被封装在IP数据报中,封装格式如下图所示: 首部格式为 源端口号和目的端口号分表表示了发送进程和接收进程 UDP长度字段包括了UDP首部和UDP数据的字节长度 UDP检验和覆盖了UDP首部和UDP数据(IP首部检验和只覆盖了IP首部,不覆盖数据报中的任何数据) UDP数据报的长度可以为奇数字节,但是检验和算法是把若干个16bit字相加。解
ICMP协议格式 ICMP报文是在IP数据报内部传输的:| IP头部 | ICMP报文 | ICMP报文格式 Bits 0–7 8–15 16–23 24–31 0 Type Code Checksum 32 Rest of Header Type – ICMP type as specified below. Cod
链路层通信根据48bit以太网地址(硬件地址)来确定目的接口,而地址解析协议负责32bit IP地址与48bit以太网地址之间的映射: (1)ARP负责将IP地址映射到对应的硬件地址 (2)RARP负责相反的过程,通常用于无盘系统。 ARP高速缓存 ARP高效运行的关键是每台主机上都有一个ARP高速缓存,缓存中每一项的生存时间一般为20分钟,但不完整表项超时时间一般为3分钟(如192.168.13
for while loop break 与 continue label for for 语句用于遍历一个迭代器。 for var in iterator { code } Rust 迭代器返回一系列的元素,每个元素是循环中的一次重复。然后它的值与 var 绑定,它在循环体中有效。每当循环体执行完后,我们从迭代器中取出下一个值,然后我们再重复一遍。当迭代器中不再有值时,for 循环结束。
if if let match if 表达式 Rust 中的 if 表达式基本就是如下几种形式: // 形式 1 if expr1 { } // 形式 2 if expr1 { } else { } // 形式 3 if expr1 { } else if expr2 { // else if 可多重 } else { } 相对于 C 系语言,Rust 的 if 表达式的显著特点是: 判断
Rust 代码文件中,通常我们可以看到 3 种注释。 行注释 文档注释 模块注释 行注释 // 后的,直到行尾,都属于注释,不会影响程序的行为。 // 创建一个绑定 let x = 5; let y = 6; // 创建另一个绑定 文档注释 文档注释使用 ///,一般用于函数或结构体(字段)的说明,置于要说明的对象上方。文档注释内部可使用markdown格式的标记语法,可用于 rustdoc 工具
正所谓,知己知彼,百战不殆。我们爬虫的爬取对象,就是各式各样的网页,只有对网页的基本内容达到熟悉的程度,才能顺利的书写我们的爬虫程序。 1. HTML 基础 HTML(HyperText Markup Language)是一种超文本标记语言; CSS(Cascading Style Sheets)简称为层叠样式表。 大家如果只是看这两个名字的定义,估计仍然是一头雾水。这俩东西到底是干啥的? 我给大
每个程序至少有一个线程:执行main()函数的线程,其余线程有其各自的入口函数。线程与原始线程(以main()为入口函数的线程)同时运行。如同main()函数执行完会退出一样,当线程执行完入口函数后,线程也会退出。在为一个线程创建了一个std::thread对象后,需要等待这个线程结束;不过,线程需要先进行启动。下面就来启动线程。 2.1.1 启动线程 第1章中,线程在std::thread对象创
NDB是一种“内存中”存储引擎,它具有可用性高和数据一致性好的特点。 能够使用多种故障切换和负载平衡选项配置NDB存储引擎,但以簇层面上的存储引擎开始最简单。MySQL簇的NDB存储引擎包含完整的数据集,仅取决于簇本身内的其他数据。 下面,我们介绍了设置由NDB存储引擎和一些MySQL服务器构成的MySQL簇的设置方法。 目前,MySQL簇的簇部分可独立于MySQL服务器进行配置。在MySQL簇中
颜色深度和高动态范围颜色 颜色深度(或位深度)是用于表示像素颜色的每通道位数 (bpc)。每个 RGB 通道(红色、绿色和蓝色)的位数越多,每个像素可以表示的颜色就越多。 在 After Effects 中,您可以使用 8-bpc、16-bpc 或 32-bpc 颜色。 除色位深度之外,用于表示像素值的数字的另外一个特性是数字是整数还是浮点数。浮点数可以表示具有相同位数的更大范围的数字。在 Aft
使用此文档了解 After Effects 中的合成基础知识 关于合成 合成是影片的框架。每个合成均有其自己的时间轴。典型合成包括代表诸如视频和音频素材项目、动画文本和矢量图形、静止图像以及光之类的组件的多个图层。您可通过创建素材项目是源的图层,将素材项目添加到合成中。然后在合成内,在空间和时间方面安排各个图层,并使用透明度功能进行合成来确定底层图层的哪些部分将穿过堆叠在其上的图层进行显示。(请参
1. 信号的基本概念 为了理解信号,先从我们最熟悉的场景说起: 用户输入命令,在Shell下启动一个前台进程。 用户按下Ctrl-C,这个键盘输入产生一个硬件中断。 如果CPU当前正在执行这个进程的代码,则该进程的用户空间代码暂停执行,CPU从用户态切换到内核态处理硬件中断。 终端驱动程序将Ctrl-C解释成一个SIGINT信号,记在该进程的PCB中(也可以说发送了一个SIGINT信号给该进程)。
1. 指针的基本概念 在第 12 章 栈与队列讲过,堆栈有栈顶指针,队列有头指针和尾指针,这些概念中的“指针”本质上是一个整数,是数组的索引,通过指针访问数组中的某个元素。在图 20.3 “间接寻址”我们又看到另外一种指针的概念,把一个变量所在的内存单元的地址保存在另外一个内存单元中,保存地址的这个内存单元称为指针,通过指针和间接寻址访问变量,这种指针在C语言中可以用一个指针类型的变量表示,例如某
1. 数组的基本概念 数组(Array)也是一种复合数据类型,它由一系列相同类型的元素(Element)组成。例如定义一个由4个int型元素组成的数组count: int count[4]; 和结构体成员类似,数组count的4个元素的存储空间也是相邻的。结构体成员可以是基本数据类型,也可以是复合数据类型,数组中的元素也是如此。根据组合规则,我们可以定义一个由4个结构体元素组成的数组: struc