计算机网络——运输层(进程之间的通信、运输层端口,UDP与TCP、TCP详解)
运输层协议概述
进程之间的通信
运输层向它上面的应用层提供通信服务。
当网络边缘部分的两台主机使用网络核心部分的功能进行端到端的通信时,都要使用协议栈中的运输层;而网络核心部分中的路由器在转发分组时只用到下三层的功能。
Q1:我们知道,IP 协议能够把源主机A发送出的分组,按照首部中的目的地址,送交到目的主机B,那么,为什么还需要运输层呢?
A1:真正进行通信的实体是在主机中的哪个构件是主机中的应用进程,是一台主机中的应用进程和另一台主机中的应用进程在交换数据(即通信)。
因此严格地讲,两台主机进行通信就是两台主机中的应用进程互相通信。IP协议虽然能把分组送到目的主机,但是这个分组还停留在主机的网络层而没有交付主机中的应用进程。
在计算机网络中实际进行通信的真正实体,是位于通信两端主机中的进程;也就是说,端到端的通信是应用进程之间的通信
进程之间的通信图例说明
主机A的应用进程 AP1和主机B的应用进程AP2通信,而与此同时,应用进程AP3也和对方的应用进程AP4通信。这表明运输层有一个很重要的功能——复用(multiplexing)和分用(demultiplexing)。
- 复用:发送方不同应用进程都可以使用同一个运输层协议传输数据
- 分用:接收方运输层在去掉报文首部可以将数据正确交付目的的应用进程
运输层向应用层实体屏蔽了下面网络核心的细节(例如网络拓扑、所采用的路由选择协议等),它使应用进程看见的就好像是在两个运输层实体之间有一条端到端的逻辑通信信道。
网络层与运输层的通信区别
网络层为主机之间的通信提供服务;而运输层则在网络层的基础上,为应用进程之间的通信提供服务。
运输层还要对收到的报文进行差错检测。——在网络层,IP 数据报首部中的检验和字段,只检验首部是否出现差错而不检查数据部分。
运输层的两个协议
- 用户数据报协议UDP (User Datagram Protocol)
- 传输控制协议 TCP (Transmission Control Protocol)
按照 OSI 的术语,两个对等运输实体在通信时传送的数据单位叫作运输协议数据单元TPDU (Transport Protocol Data Unit)。但在TCP/IP体系中,则根据所使用的协议是TCP或UDP,分别称之为TCP报文段或UDP用户数据报
传输控制协议TCP:为其上层提供的是面向连接的可靠的数据传输服务。
使用TCP通信的双方,在传送数据之前必须首先建立TCP连接(逻辑连接,而非物理连接)。数据传输结束后必须要释放TCP连接。
TCP为了实现可靠传输,就必须使用很多措施,例如TCP连接管理、确认机制、超时重传、流量控制以及拥塞控制等。
TCP的实现复杂,TCP报文段的首部比较大,占用处理机资源比较多。
用户数据报协议UDP:为其上层提供的是无连接的不可靠的数据传输服务。
使用UDP通信的双方,在传送数据之前不需要建立连接。
UDP不需要实现可靠传输,因此不需要使用实现可靠传输的各种机制。
UDP的实现简单,UDP用户数据报的首部比较小。
运输层的端口
我们知道,运输层有分用和复用的功能,为了正确交付应用层所指明的应用进程,应当给每个应用进程赋予一个明确的标志。
运行在计算机上的进程是使用进程标识符(Process ldentification,PIlD)来标识的
然而,因特网上的计算机并不是使用统一的操作系统,而不同操作系统(Windows、Linux、MacOS)又使用不同格式的进程标识符。
为了使运行不同操作系统的计算机的应用进程之间能够基于网络进行通信,就必须使用统一的方法对TCP/IP体系的应用进程进行标识。
应用进程的交互需要经过应用层和运输层的界面上一些“门”,而“门”设为通信的抽象终点。
这些抽象终点的正式名称就是协议端口(protocol port),一般就简称为端口(port)。每一个端口用一个称为端口号(portnumber)的正整数来标志。主机的操作系统提供了接口机制,使得进程能够通过这种机制找到所要找的端口。
请注意,这种在协议栈层间的抽象的协议端口是软件端口,和路由器或交换机上的硬件端口是完全不同的概念。硬件端口是不同硬件设备进行交互的接口,而软件端口是应用层的各种协议进程与运输实体进行层间交互的地点。不同的系统具体实现端口的方法可以是不同的(取决于系统使用的操作系统)。
TCP/IP体系结构的运输层使用端口号来标识和区分应用层的不同应用进程。
TCP/IP的运输层用一个16位端口号来标志一个端口。但请注意,端口号只具有本地意义,它只是为了标志本计算机应用层中的各个进程在和运输层交互时的层间接口。
在互联网不同计算机中,相同的端口号是没有关联的。
16位的端口号可允许有65535个不同的端口号。
服务器使用的端口号与客户端使用的端口号
服务器使用的端口号
客户端使用的端口号
分用和复用的运行
UDP的复用分用
运输层端口号举例
1.用户pc在浏览器输入web服务器域名,向DNS客户进程发送请求报文
![]()
2.DNS服务器收到报文后
3.PC收到DNS响应报文
4.用户PC中的HTTP客户进程向web服务器发送HTTP请求报文
5.Web服务器收到PC请求报文
6.PC接收到Web响应报文
数据协议报UDP
UDP的特点
(1)UDP是无连接的,即发送数据之前不需要建立连接(当然,发送数据结束时也没有连接可释放),因此减少了开销和发送数据之前的时延。
(2)UDP使用尽最大努力交付,即不保证可靠交付,因此主机不需要维持复杂的连接状态表
(3)UDP是面向报文的。发送方的UDP对应用程序交下来的报文,在添加首部后就向下交付IP层。UDP对应用层交下来的报文,保留这些报文的边界。这就是说,应用层交给UDP多长的报文,UDP 就照样发送,即一次发送一个报文
(4) UDP没有拥塞控制,因此网络出现的拥塞不会使源主机的发送速率降低。这对某些实时应用是很重要的。
很多的实时应用(如IP电话、实时视频会议等)要求源主机以恒定的速率发送数据,并且允许在网络发生拥塞时丢失一些数据,但却不允许数据有太大的时延。UDP 正好适合这种要求。
(5)UDP支持一对一、一对多、多对一和多对多的交互通信。
(6)UDP的首部开销小,只有8个字节,比 TCP的20个字节的首部要短。
UDP的传输特点
主机H的操作系统为这三个进程分别指派了端口。
应用层和运输层之间的小方框代表端口。在端口小方框中间还画有队列,表示端口具有缓存的功能,可以把收到的数据暂时存储一下。
在两个运输层之间有一条虚线,表示在两个运输层之间可以进行通信,而不是一条连接。但这种通信是不可靠的通信,即所发送的报文在传输过程中有可能丢失,同时也不保证报文都能按照发送的先后顺序到达终点。
图上画出了多对一的通信(a→x, b→x)。如果改成a→x,a→y,则是一对多的情况了。
UDP的复用分用
主机H1中的3个应用进程,把用户数据通过各自的端口传送到了运输层后,就共用一个网络层协议,把收到的UDP用户数据报组装成不同的IP数据报,发送到互联网。这就是UDP的复用功能。
主机H2的网络层收到3个IP数据报后,提取出数据部分(即 UDP用户数据报),然后根据其首部中的目的端口号,分别传送到相应的端口,以便上层的应用进程到端口读取数据。这就是UDP的分用功能。
UDP的首部格式
用户数据报UDP有两个字段:数据字段和首部字段。
首部字段只有8个字节,由4个字段组成,每个字段的长度都是2字节。
各字段意义如下:
(1)源端口
源端口号。在需要对方回信时选用。不需要时可用全0。
(2)目的端口
目的端口号。这在终点交付报文时必须使用。
(3)长度
UDP用户数据报的长度,其最小值是8(仅有首部)。
(4)检验和
检测UDP用户数据报在传输中是否有错。有错就丢弃。
伪首部:UDP用户数据报首部中检验和的计算方法有些特殊。在计算检验和时,要在UDP用户数据报之前增加12个字节的伪首部。
所谓“伪首部”是因为这种伪首部并不是UDP用户数据报真正的首部。只是在计算检验和时,临时添加在 UDP用户数据报前面,得到一个临时的UDP用户数据报。
检验和就是按照这个临时的UDP用户数据报来计算的,伪首部既不向下传送也不向上递交,而仅仅是为了计算检验和。
接收方UDP报文的端口号不正确
如果接收方UDP发现收到的报文中的目的端口号不正确(即不存在对应于该端口号的应用进程),就丢弃该报文,并由网际控制报文协议 ICMP 发送“端口不可达”差错报文给发送方。
ICMP差错报文了解
UDP计算检验和
二进制反码求和末尾进位会回卷
传输控制协议TCP
TCP的主要特点
(1) TCP是面向连接的运输层协议。这就是说,应用程序在使用TCP协议之前,必须先建立TCP 连接。在传送数据完毕后,必须释放已经建立的TCP连接。
(2)每一条TCP连接只能有两个端点(endpoint),每一条 TCP连接只能定点对点的(一对一)。
(3)TCP提供可靠交付的服务,通过TCP连接传送的数据,无差错、不丢失、不重复,并且按序到达。
(4) TCP提供全双工通信。TCP允许通信双方的应用进程在任何时候都能发送数据。TCP连接的两端都设有发送缓存和接收缓存,用来临时存放双向通信的数据。在发送时,应用程序在把数据传送给TCP的缓存后,就可以做自己的事,而TCP在合适的时候把数据发送出去;
在接收时,TCP把收到的数据放入缓存,上层的应用进程在合适的时候读取缓存中的数据。
(5)面向字节流。TCP中的“流”(stream)指的是流入到进程或从进程中流出的字节序列。“面向字节流”的含义是:虽然应用程序和 TCP 的交互是一次一个数据块(大小不等)。但TCP把应用程序交下来的数据仅仅看成是一连串的无结构的字节流。TCP并不知道所传送的字节流的含义。
TCP不保证接收方应用程序所收到的数据块和发送方应用程序所发出的数据块具有对应大小的关系。
但接收方应用程序收到的字节流必须和发送方应用程序发出的字节流完全一样。当然,接收方的应用程序必须有能力识别收到的字节流,把它还原成有意义的应用层数据。
(例如,发送方应用程序交给发送方的TCP共10个数据块,但接收方的TCP可能只用了4个数据块就把收到的字节流交付上层的应用程序)。
TCP传输报文的特点
TCP与UDP传输报文的比较
TCP和 UDP 在发送报文时所采用的方式完全不同。TCP并不关心应用进程一次把多长的报文发送到TCP的缓存中,而是根据对方给出的窗口值和当前网络拥塞的程度,来决定一个报文段应包含多少字节。(UDP发送报文长度应用进程给出的)。
如果应用进程传送到TCP缓存的数据块太长,TCP就可以把它划分为短一些的数据块再传送。如果应用进程一次只发来一个字节,TCP也可以等待积累足够多的字节后再构成报文段发送出去。
TCP的连接
TCP把连接作为最基本的抽象。TCP的许多特性都与TCP是面向连接的这个基本特性有关。
每一条TCP连接有两个端点,TCP连接的端点叫作套接字(socket)或插口。
套接字socket的表示方式
TCP连接的表示方式
可靠传输的工作原理
详情请看数据链路层的可靠运输
TCP报文段的首部格式
TCP虽然是面向字节流的,但 TCP传送的数据单元却是报文段。一个TCP报文段分为首部和数据两部分,而 TCP的全部功能都体现在它首部中各字段的作用。
首部部分字段
(1)源端口和目的端口:各占2个字节,分别写入源端口号和目的端口号。
(2)序号:占4字节。序号范围是[0,-1],共
(即4294 967296)个序号。序号增加到
-1]后,下一个序号就又回到0。
在一个 TCP连接中传送的字节流中的每一个字节都按顺序编号。整个要传送的字节流的起始序号必须在连接建立时设置。首部中的序号字段值则指的是本报文段所发送的数据的第一个字节的序号。
例如,一报文段的序号字段值是301,而携带的数据共有100字节。这就表明:本报文段的数据的第一个字节的序号是301,最后一个子节的序号是400。
显然,下一个报文段(如果还有的话)的数据序号应当从401开始,即下一个报文段的序号字段值应为401。
这个字段的名称也叫作“报文段序号”。
(3)确认号:占4字节,是期望收到对方下一个报文段的第一个数据字节的序号。例如,B正确收到了A发送过来的一个报文段,其序号字段值是501,而数据长度是200字节(序号501~700),这表明B正确收到了A发送的到序号700为止的数据。
于是B在发送给A的确认报文段中把确认号置为701。请注意,现在的确认号不是501,也不是700,而是701。
(4)数据偏移:占4位,它指出 TCP报文段的数据起始处距离 TCP报文段的起始处有多远。这个字段实际上是指出 TCP报文段的首部长度。
因此数据偏移的最大值是60字节,这也是TCP首部的最大长度(即选项长度不能超过40字节)。
(5)保留:占6位,保留为今后使用,但目前应置为0。
(6)紧急 URG (URGent):当URG=1时,表明紧急指针字段有效——它告诉系统此报
文段中有紧急数据,应尽快传送(相当于高优先级的数据),而不要按原来的排队顺序传送。当URG置1时,发送应用进程就告诉发送方的TCP有紧急数据要传送。于是发送方TCP 就把紧急数据插入到本报文段数据的最前面,而在紧急数据后面的数据仍是普通数据。这时要与首部中紧急指针(Urgent Pointer)字段配合使用。
例如,已经发送了很长的一个程序要在远地的主机上运行。但后来发现了一些问题,需要取消该程序的运行。
因此用户从键盘发出中断命令(Control-C)。如果不使用紧急数据,那么这两个字符将存储在接收TCP的缓存末尾。只有在所有的数据被处理完毕后这两个字符才被交付接收方的应用进程。这样做就浪费了许多时间。
(7)确认ACK:仅当 ACK =1时确认号字段才有效。当ACK=0时,确认号无效。TCP规定,在连接建立后所有传送的报文段都必须把ACK置为1。
(8)推送 PSH (PuSH):当两个应用进程进行交互式的通信时,有时在一端的应用进程
希望在键入一个命令后立即就能够收到对方的响应。在这种情况下,TCP 就可以使用推送(push)操作。这时,发送方TCP把PSH置为1,并立即创建一个报文段发送出去。
接收方TCP收到PSH=1的报文段,就尽快地(即“推送”向前)交付接收应用进程,而不再等到整个缓存都填满了后再向上交付。
(9)复位RST (ReSeT):当RST =1时,表明TCP连接中出现严重差错(如主机崩溃或其他原因),必须释放连接,然后再重新建立运输连接。将RST置为1,还用来拒绝一个非法的报文段或拒绝打开一个连接。RST也可称为重建位或重置位。
(10)同步SYN(SYNchronization):在连接建立时用来同步序号。当SYN=1而ACK=0时,表明这是一个连接请求报文段。对方若同意建立连接,则应在响应的报文段中使SYN=1和ACK =1。
因此,SYN置为1就表示这是一个连接请求或连接接受报文。
(11)终止FIN (FINish):用来释放一个连接。当FIN=1时,表明此报文段的发送方的数据已发送完毕,并要求释放运输连接。
(12)窗口:占2字节。窗口值是[0,-1]之间的整数。窗口指的是发送本报文段的一方的接收窗口(而不是自己的发送窗口)。
窗口值告诉对方:从本报文确认号算起,接收方目前允许对方发送的数据量(以字节为单位)。之所以要有这个限制,是因为接收方的数据缓存空间是有限的:
- 例如,发送了一个报文段,其确认号是701,窗口字段是1000。
- 这就是告诉对方:“从701号算起,我(即发送此报文段的一方)的接收缓存空间还可接收1000个字节数据(字节序号是701~1700),你在给我发送数据时,必须考虑到我的接收缓存容量。”
总之,窗口值作为接收方让发送方设置其发送窗口的依据。
(13)检验和:占2字节。检验和字段检验的范围包括首部和数据这两部分。
和UDP用户数据报一样,在计算检验和时,要在TCP报文段的前面加上12字节的伪首部
,伪首部的格式与UDP用户数据报的伪首部一样。但应把伪首部第4个字段中的17改为6(TCP 的协议号是6),把第5字段中的UDP长度改为TCP长度。
接收方收到此报文段后,仍要加上这个伪首部来计算检验和。若使用IPv6,则相应的伪首部也要改变。
(14)紧急指针:占2字节,紧急指针仅在URG =1时才有意义,它指出本报文段中
的紧急数据的字节数(紧急数据结束后就是普通数据)。因此,紧急指针指出了紧急数据的末尾在报文段中的位置。当所有紧急数据都处理完时,TCP就告诉应用程序恢复到正常操作。
(15)选项:长度可变,最长可达40字节。当没有使用“选项”时,TCP的首部长度
是20字节。选项功能有如下:
(16)填充:最后的填充字段仅仅是为了使整个TCP首部长度是4字节的整数倍。
相关文章:
计算机网络——运输层(进程之间的通信、运输层端口,UDP与TCP、TCP详解)
运输层协议概述 进程之间的通信 运输层向它上面的应用层提供通信服务。 当网络边缘部分的两台主机使用网络核心部分的功能进行端到端的通信时,都要使用协议栈中的运输层;而网络核心部分中的路由器在转发分组时只用到下三层的功能。 Q1:我们…...
代码随想录算法训练营第一天 | 二分查找
文章目录 Leetcode704 二分查找二分法的使用前提:区间选择其他注意事项 Leetcode27 移除元素解题思路:优化思路 Leetcode704 二分查找 链接:https://leetcode.cn/problems/binary-search/ 代码随想录: https://programmercarl.com/ 时间复杂度: O(logN) 空间复杂度:…...
python相关知识
1、注释 共有三种:#、 、””” ””” 2、数据类型 整数、浮点、字符串、布尔、列表、元组、集合、字典 num1 666、num2 3.14、t1 True、t2 False、 列表:list [1,2,3,4] 元组:tuple (11,aaa,ddd,3) 字典:dict {li…...
Visual Studio 2022 LNK2001无法解析的外部符号 _wcscat_s 问题记录
ANSI C程序中,用到了wcsrchr、wcsncpy_s、wcscat_s、wcscpy_s等几个字符串函数,但是编译时提示: 错误 LNK2001 无法解析的外部符号 _wcscat_s 查了挺多帖子,没有解决。 https://bbs.csdn.net/topics/250012844 解决VS编译…...
Java高并发处理机制
高并发处理的思路: 扩容:水平扩容、垂直扩容缓存:将基础的数据放入缓存进行处理使用SpringCloud的注册中心,分服务注册到同一个注册中心,服务器检测使用Spring的熔断操作,检测服务器的心跳那个正常随机跳转…...
7 数据存储单位,整型、浮点型、字符型、布尔型数据类型,sizeof 运算符
目录 1 数据类型的分类 2 数据存储单位 2.1 位 2.2 字节 2.3 其余单位 3 整数类型 3.1 基本介绍 3.2 整型的类型 3.2.1 整数类型多样性的原因 3.2.2 整型类型之间的相对大小关系 3.3 整型注意事项 3.4 字面量后缀 3.5 格式占位符 3.6 案例:声明并输出…...
导游职业资格考试真题题库
导游职业资格考试真题题库 80.重庆有"雾都"之称。壁山区的()全年雾日多204天,堪称"世界之最"。 A.枇杷山 B.雾灵山 C.云雾山 D.四姑娘山 答案:C 81.我国最具热带海洋气候特色的地方为()。 A.广西壮族…...
【Rust】使用开源项目搭建瓦片地图服务
本文通过获取在线和离线地图数据,使用开源Rust项目搭建瓦片地图服务,并使用DevExpress的MapControl控件使用自建地图服务 获取地图数据 获取地图数据有很多种方式,这里分别用在线和离线地图数据举例说明 在线下载瓦片地图 打开在线瓦片地…...
【面试宝典】mysql常见面试题总结(上)
一、MySQL 中有哪几种锁? MySQL中的锁机制是数据库并发控制的重要组成部分,它用于管理多个用户对数据库资源的访问,确保数据的一致性和完整性。MySQL中的锁可以根据不同的分类标准进行分类,以下是一些常见的分类方式及对应的锁类…...
第1章 初识C语言
第1章 初识C语言 1.1 C语言概述 1.1.1 C语言的发展历史 C语言的原型为ALGOL 60语言(也称A语言)。 1963年 剑桥大学将ALGOL 60语言发展成为GPL语言。 1967年 剑桥大学的Matin Richards简化GPL,产生了BGPL语言。 1970年 美国贝尔实验室的Ken…...
【考研数学】定积分应用——旋转体体积的计算(一文以蔽之)
目录 一、如何计算旋转体体积?思考一个小例子 二、旋转体体积的二重积分表达式 三、用真题,小试牛刀 定积分的应用中,有一类题是求解旋转体的体积问题。 相较于记忆体积计算公式,有一种通法求解体积更不容易出错:二重…...
PHP移动端商城分销全平台全端同步使用
📱【掌中购物新纪元:探索移动端购物商城系统的无限魅力】🛍️ 🚀 随时随地,购物自由新体验 在这个快节奏的时代,移动端购物商城系统彻底颠覆了传统购物方式,让消费者享受到了前所未有的便捷与…...
TLE8386-2EL:汽车级DC-DC转换器中文资料书
描述 TLE8386-2EL是一款具有内置保护功能的低端感应升压控制器。该器件的主要功能是将输入电压升高(升压)到更大的输出电压。开关频率可从100kHz调整至700kHz,并可与外部时钟源同步。 TLE8386-2EL的独特功能可将关断电流消耗降至 <2μA。该…...
EasyRecovery17中文mac苹果电脑版数据恢复软件 永久免费破解版下载
🎉 数据丢失不再是噩梦!EasyRecovery17中文版来拯救你的硬盘啦! 各位小伙伴们,有没有遇到过重要文件一不小心就消失无踪的尴尬情况?别担心,今天就给大家种草一款神奇的工具——EasyRecovery17中文版&#x…...
Ubuntu 22.04 安装 VirtualBox7
Ubuntu默认库为VirtualBox-6版本 # 安装 VirtualBox-6 sudo apt update sudo apt install virtualbox# 卸载 VirtualBox-6 sudo apt remove --purge --auto-remove virtualbox virtualbox-6.1 1. 安装 VirtualBox-7 # 导入软件包密钥 curl https://www.virtualbox.org/downl…...
NPM使用教程:从入门到精通
NPM使用教程:从入门到精通,掌握Node.js包管理神器 引言 随着Node.js的流行,JavaScript已经成为服务器端开发的主力军。NPM(Node Package Manager)作为Node.js的官方包管理工具,为开发者提供了一个庞大的代…...
模电实验3 - 单电源集成运放交流耦合放大器
实验目标 学习集成运放的单电源使用。掌握交流耦合单电源集成运放放大器的测试方法。了解交流耦合单电源集成运放放大器的特点。 实验器材 ADALM2000 1kΩ 电阻 (1/4 W) x 1 10 kΩ 电阻 (1/4 W) x 1 100kΩ 电阻 (1/4 W) x 3 0.1μF电容 x 1 1μF电容 …...
海对外经贸大学学报
《上海对外经贸大学学报》创刊于1994年,原名为《世界贸易组织动态与研究》(上海对外贸易学院学报),随原上海对外贸易学院更名为上海对外经贸大学,自2014年起更为现名,现为综合性社科类双月刊,为中文社会科学引文检索&a…...
数字化营销在公域场景中的无限可能
在如今的商业领域,公域场景为企业提供了广阔的发展空间,而数字化营销则成为了企业在这些场景中脱颖而出的关键利器。 一、电商平台营销 当企业在淘宝、京东等大型电商平台开设店铺,数字化营销便开始大显身手。 企业不仅能踊跃参与像双十…...
聚观早报 | 一加13配置细节曝光;谷歌首推人工智能手机
聚观早报每日整理最值得关注的行业重点事件,帮助大家及时了解最新行业动态,每日读报,就读聚观365资讯简报。 整理丨Cutie 8月15日消息 一加13配置细节曝光 谷歌首推人工智能手机 MONA M03汽车即将上市 iPhone SE 4将升级8GB运行内存 R…...
Python爬虫实战:研究MechanicalSoup库相关技术
一、MechanicalSoup 库概述 1.1 库简介 MechanicalSoup 是一个 Python 库,专为自动化交互网站而设计。它结合了 requests 的 HTTP 请求能力和 BeautifulSoup 的 HTML 解析能力,提供了直观的 API,让我们可以像人类用户一样浏览网页、填写表单和提交请求。 1.2 主要功能特点…...
web vue 项目 Docker化部署
Web 项目 Docker 化部署详细教程 目录 Web 项目 Docker 化部署概述Dockerfile 详解 构建阶段生产阶段 构建和运行 Docker 镜像 1. Web 项目 Docker 化部署概述 Docker 化部署的主要步骤分为以下几个阶段: 构建阶段(Build Stage):…...
TDengine 快速体验(Docker 镜像方式)
简介 TDengine 可以通过安装包、Docker 镜像 及云服务快速体验 TDengine 的功能,本节首先介绍如何通过 Docker 快速体验 TDengine,然后介绍如何在 Docker 环境下体验 TDengine 的写入和查询功能。如果你不熟悉 Docker,请使用 安装包的方式快…...
.Net框架,除了EF还有很多很多......
文章目录 1. 引言2. Dapper2.1 概述与设计原理2.2 核心功能与代码示例基本查询多映射查询存储过程调用 2.3 性能优化原理2.4 适用场景 3. NHibernate3.1 概述与架构设计3.2 映射配置示例Fluent映射XML映射 3.3 查询示例HQL查询Criteria APILINQ提供程序 3.4 高级特性3.5 适用场…...
8k长序列建模,蛋白质语言模型Prot42仅利用目标蛋白序列即可生成高亲和力结合剂
蛋白质结合剂(如抗体、抑制肽)在疾病诊断、成像分析及靶向药物递送等关键场景中发挥着不可替代的作用。传统上,高特异性蛋白质结合剂的开发高度依赖噬菌体展示、定向进化等实验技术,但这类方法普遍面临资源消耗巨大、研发周期冗长…...
关于nvm与node.js
1 安装nvm 安装过程中手动修改 nvm的安装路径, 以及修改 通过nvm安装node后正在使用的node的存放目录【这句话可能难以理解,但接着往下看你就了然了】 2 修改nvm中settings.txt文件配置 nvm安装成功后,通常在该文件中会出现以下配置&…...
基础测试工具使用经验
背景 vtune,perf, nsight system等基础测试工具,都是用过的,但是没有记录,都逐渐忘了。所以写这篇博客总结记录一下,只要以后发现新的用法,就记得来编辑补充一下 perf 比较基础的用法: 先改这…...
python执行测试用例,allure报乱码且未成功生成报告
allure执行测试用例时显示乱码:‘allure’ �����ڲ����ⲿ���Ҳ���ǿ�&am…...
HDFS分布式存储 zookeeper
hadoop介绍 狭义上hadoop是指apache的一款开源软件 用java语言实现开源框架,允许使用简单的变成模型跨计算机对大型集群进行分布式处理(1.海量的数据存储 2.海量数据的计算)Hadoop核心组件 hdfs(分布式文件存储系统)&a…...
【Go语言基础【12】】指针:声明、取地址、解引用
文章目录 零、概述:指针 vs. 引用(类比其他语言)一、指针基础概念二、指针声明与初始化三、指针操作符1. &:取地址(拿到内存地址)2. *:解引用(拿到值) 四、空指针&am…...














主机H1中的










