[时间同步]NTPPTPgPTP

news2024/9/24 5:31:15

为什么时间同步很重要?

出于诸多原因,精确的时间对于网络至关重要,比如:

网络管理:从不同网络设备采集来的日志信息进行分析时,需要以时间作为参照依据。如果不同设备上的系统时间不一致,会因先后顺序等问题给故障定位带来障碍。

计费系统:计费业务对于时间尤其敏感,要求所有设备的时间保持一致,否则会引起计费不准确,导致用户质疑、投诉等。

协同处理:多个系统协同处理同一个复杂事件,为保证正确的执行顺序,多个系统必须参考同一时钟。

系统时间:某些应用或服务需要准确的时间来标记用户登录、交易等操作信息,确保可追溯记录。

因此有一个统一的标准时间对于网络而言意义重大。

时钟同步协议

NTP:

网络时间协议NTP(Network Time Protocol)是TCP/IP协议族里面的一个应用层协议,用来使客户端和服务器之间进行时钟同步,提供高精准度的时间校正。NTP服务器从权威时钟源(例如原子钟、GPS)接收精确的协调世界时UTC,客户端再从服务器请求和接收时间。
NTP基于UDP报文进行传输,使用的UDP端口号为123

       通过软件实现,只需要一次握手(一次往返就可以计算出offset)

主时钟系统通过网络途径为从时钟提供时间。以前的主从时钟系统使用脉冲发生器来同步从时钟。后来,引入了串行网络,例如 IRIG-B,我们技术俗称的B码,通过一根电缆将时间传输到许多从时钟。大多数现代时钟系统依靠以太网链路来传输同步时间信号。

PTP:

       通过软件和硬件实现,需要两次握手

IEEE 1588-2008 被称为PTPV2

IEEE 1588-2019 被称为PTPV2.1

这是近些年开发出来的时间传输协议,精确时间协议。PTP是指在实现客户端的亚微秒级同步或者说纳秒、皮秒级别时间同步,使其成为科学、测量和控制系统的得力助手。但是,大多数计时应用程序都可以使用更简单的网络时间协议 (NTP) 来实现。因为精确时间协议 (PTP, IEEE1588)基本都是用在商业科技方面的产品,我们平时生活中使用不到纳秒级别精度的时间同步。

gPTP:

IEEE802.1AS, 广义精确时钟协议(Generalized Precision Time Protocol, gPTP),确保收发的终端之间严格时间同步的标准。

gPTP主要是IEEE TSN(时间敏感网络)工作组定义的规范族中的一个组成部分;

TSN工作组是原先的AVB(Audio-Video Bridging)工作组;

由于PTPv2定义了太多的特性选项,那么多个设备之间的互操作性变的较差;gPTP对PTPv2进行了简化,固定了特性选项的选择,相当于PTPv2的一个特定profile。

gPTP 消息不再支持在UDPoverIPv4/IPV6的等L3/L4的承载,只支持在Mac层的承载。

gPTP还可以用于无线网络

 

NTP

历史

NTP是由美国Delaware大学David L .Mills教授设计的,是最早用于网络中时钟同步的标准之一。NTP是从时间协议和ICMP时间戳报文演变而来,NTP的版本演进如下所示。

 

NTP时钟层级

NTP允许客户端从服务器请求和接收时间,而服务器又从权威时钟源(例如原子钟、GPS)接收精确的协调世界时UTC。

NTP以层级来组织模型结构,层级中的每层被称为Stratum。通常将从权威时钟获得时钟同步的NTP服务器的层数设置为Stratum 1,并将其作为主时间服务器,为网络中其他的设备提供时钟同步。而Stratum 2则从Stratum 1获取时间,Stratum 3从Stratum 2获取时间,以此类推。时钟层数的取值范围为1~16,取值越小,时钟准确度越高。层数为1~15的时钟处于同步状态;层数为16的时钟被认为是未同步的,不能使用的。

 

NTP同步原理

NTP最典型的授时方式是Client/Server方式,如下图所示。

 

  1. 客户端首先向服务端发送一个NTP请求报文,其中包含了该报文离开客户端的时间戳t1;
  2. NTP请求报文到达NTP服务器,此时NTP服务器的时刻为t2。当服务端接收到该报文时,NTP服务器处理之后,于t3时刻发出NTP应答报文。该应答报文中携带报文离开NTP客户端时的时间戳t1、到达NTP服务器时的时间戳t2、离开NTP服务器时的时间戳t3;
  3. 客户端在接收到响应报文时,记录报文返回的时间戳t4

客户端用上述4个时间戳参数就能够计算出2个关键参数:

NTP报文从客户端到服务器的往返延迟delay。

客户端与服务端之间的时间差offset。

 

根据方程组:

 

可以解得时间差为:

 

NTP客户端根据计算得到的offset来调整自己的时钟,实现与NTP服务器的时钟同步。

PTP

在通信网络中,许多业务的正常运行都要求网络时钟同步,即整个网络各设备之间的时间或频率差保持在合理的误差水平内。网络时钟同步包括以下两个概念:

时间同步:也叫相位同步(Phase synchronization),是指信号之间的频率和相位都保持一致,即信号之间的相位差恒为零。

频率同步(Frequency synchronization):也叫时钟同步,是指信号之间在频率或相位上保持某种严格的特定关系,信号在其对应的有效瞬间以同一平均速率出现,以保证通信网络中的所有设备都以相同的速率运行,即信号之间保持恒定的相位差。

PTP遵循IEEE1588协议,通过Best Master Clock算法确认最精确时钟。PTP采用硬件时间戳,可完成秒脉冲同步。

 

图 1 时间同步和频率同步示意图

如图1所示,有两个表Watch A与Watch B,如果这两个表的时间每时每刻都保持一致,这个状态就是时间同步;如果这两个表的时间不一致,但保持一个恒定的差值(如图中的Watch B总比Watch A晚6个小时),这个状态就是频率同步。

PTP(Precision Time Protocol,精确时间协议)是一种时间同步的协议,其本身只是用于设备之间的高精度时间同步,但也可被借用于设备之间的频率同步。相比现有的各种时间同步机制,PTP具备以下优势:

相比NTP(Network Time Protocol,网络时间协议),PTP能够满足更高精度的时间同步要求:NTP一般只能达到亚秒级的时间同步精度,而PTP则可达到亚微秒级。

相比GPS(Global Positioning System,全球定位系统),PTP具备更低的建设和维护成本,并且由于可以摆脱对GPS的依赖,在国家安全方面也具备特殊的意义。

PTP基本概念

1. PTP域

我们将应用了PTP协议的网络称为PTP域。PTP域内有且只有一个同步时钟,域内的所有设备都与该时钟保持同步。

2. PTP端口

我们将设备上运行了PTP协议的端口称为PTP端口。如图 2 所示,PTP端口的角色可分为以下三种:

主端口(Master Port):发布同步时间的端口,可存在于BC或OC上。

从端口(Slave Port):接收同步时间的端口,可存在于BC或OC上。

被动端口(Passive Port):既不接收同步时间、也不对外发布同步时间的端口,只存在于BC上。

3. 时钟节点

PTP域中的节点称为时钟节点,PTP协议定义了以下三种类型的基本时钟节点:

(1) OC(Ordinary Clock,普通时钟):该时钟节点在同一个PTP域内只有一个PTP端口参与时间同步,并通过该端口从上游时钟节点同步时间。此外,当时钟节点作为时钟源时,可以只通过一个PTP端口向下游时钟节点发布时间,我们也称其为OC。

(2) BC(Boundary Clock,边界时钟):该时钟节点在同一个PTP域内拥有多个PTP端口参与时间同步。它通过其中一个端口从上游时钟节点同步时间,并通过其余端口向下游时钟节点发布时间。此外,当时钟节点作为时钟源时,可以通过多个PTP端口向下游时钟节点发布时间的,我们也称其为BC,如图 2 中的BC 1。

(3) TC(Transparent clock,透明时钟):与BC/OC相比,BC/OC需要与其它时钟节点保持时间同步,而TC则不与其它时钟节点保持时间同步。TC有多个PTP端口,但它只在这些端口间转发PTP协议报文并对其进行转发延时校正,而不会通过任何一个端口同步时间。TC包括以下两种类型:

E2ETC(End-to-End Transparent Clock,端到端透明时钟):直接转发网络中非P2P(Peer-to-Peer,点到点)类型的协议报文,并参与计算整条链路的延时。

P2PTC(Peer-to-Peer Transparent Clock,点到点透明时钟):只直接转发Sync报文、Follow_Up报文和Announce报文,而终结其它PTP协议报文,并参与计算整条链路上每一段链路的延时。

如图 2 所示,是上述三种基本时钟节点在PTP域中的位置。

https://img-blog.csdnimg.cn/4c6922e706de4241a221edb5dd4c788d.png#pic_center

图 2 基本时钟节点示意图

除了上述三种基本时钟节点以外,还有一些混合时钟节点,譬如融合了TC和OC各自特点的TC+OC:它在同一个PTP域内拥有多个PTP端口,其中一个端口为OC类型,其它端口则为TC类型。一方面,它通过TC类型的端口转发PTP协议报文并对其进行转发延时校正;另一方面,它通过OC类型的端口进行时间的同步。与TC的分类类似,TC+OC也包括两种类型:E2ETC+OC和P2PTC+OC。

4. 主从关系

主从关系(Master-Slave)是相对而言的,对于相互同步的一对时钟节点来说,存在如下主从关系:

发布同步时间的节点称为主节点,而接收同步时间的节点则称为从节点。

主节点上的时钟称为主时钟,而从节点上的时钟则称为从时钟。

发布同步时间的端口称为主端口,而接收同步时间的端口则称为从端口。

5. 最优时钟

如图 2 所示,PTP域中所有的时钟节点都按一定层次组织在一起,整个域的参考时间就是最优时钟(Grandmaster Clock,GM),即最高层次的时钟。通过各时钟节点间PTP协议报文的交互,最优时钟的时间最终将被同步到整个PTP域中,因此也称其为时钟源。

最优时钟可以通过手工配置静态指定,也可以通过BMC(Best Master Clock,最佳主时钟)协议动态选举,动态选举的过程如下:

(1) 各时钟节点之间通过交互的Announce报文中所携带的最优时钟优先级、时间等级、时间精度等信息,最终选出一个节点作为PTP域的最优时钟,与此同时,各节点之间的主从关系以及各节点上的主从端口也确定了下来。通过这个过程,整个PTP域中建立起了一棵无环路、全连通,并以最优时钟为根的生成树。

(2) 此后,主节点会定期发送Announce报文给从节点,如果在一段时间内,从节点没有收到主节点发来的Announce报文,便认为该主节点失效,于是重新进行最优时钟的选择。

PTP同步原理

PTP同步的基本原理如下:

主、从时钟之间交互同步报文并记录报文的收发时间,通过计算报文往返的时间差来计算主、从时钟之间的往返总延时,如果网络是对称的(即两个方向的传输延时相同),则往返总延时的一半就是单向延时,这个单向延时便是主、从时钟之间的时钟偏差,从时钟按照该偏差来调整本地时间,就可以实现其与主时钟的同步。

PTP协议定义了两种传播延时测量机制:请求应答(Requset_Response)机制和端延时(Peer Delay)机制,且这两种机制都以网络对称为前提。

1. 请求应答机制

https://img-blog.csdnimg.cn/d09cf071b87d447ba1e173b534d1dc12.png#pic_center

图 3 请求应答机制实现过程

请求应答方式用于端到端的延时测量。如图 3 所示,其实现过程如下:

(1) 主时钟向从时钟发送Sync报文,并记录发送时间t1;从时钟收到该报文后,记录接收时间t2。

(2) 主时钟发送Sync报文之后,紧接着发送一个携带有t1的Follow_Up报文

(3) 从时钟向主时钟发送Delay_Req报文,用于发起反向传输延时的计算,并记录发送时间t3;主时钟收到该报文后,记录接收时间t4。

(4) 主时钟收到Delay_Req报文之后,回复一个携带有t4的Delay_Resp报文。

此时,从时钟便拥有了t1~t4这四个时间戳,由此可计算出主、从时钟间的往返总延时为 [(t2 – t1) + (t4 – t3)],由于网络是对称的,所以主、从时钟间的单向延时为 [(t2 – t1) + (t4 – t3)] / 2 。因此,从时钟相对于主时钟的时钟偏差为:Offset = (t2 – t1) - [(t2 – t1) + (t4 – t3)] / 2 = [(t2 – t1) - (t4 – t3) ] / 2。

此外,根据是否需要发送Follow_Up报文,请求应答机制又分为单步模式和双步模式两种:

在单步模式下,Sync报文的发送时间戳t1由Sync报文自己携带,不发送Follow_Up报文。

在双步模式下,Sync报文的发送时间戳t1由Follow_Up报文携带。

2. 端延时机制

https://img-blog.csdnimg.cn/33428501e09443bb8fa9d8bc7be03592.png#pic_center

图 4 端延时机制实现过程

与请求应答机制相比,端延时机制不仅对转发延时进行扣除,还对上游链路的延时进行扣除。如图 4 所示,其实现过程如下:

(1) 主时钟向从时钟发送Sync报文,并记录发送时间t1;从时钟收到该报文后,记录接收时间t2。

(2) 主时钟发送Sync报文之后,紧接着发送一个携带有t1的Follow_Up报文。

(3) 从时钟向主时钟发送Pdelay_Req报文,用于发起反向传输延时的计算,并记录发送时间t3;主时钟收到该报文后,记录接收时间t4。

(4) 主时钟收到Pdelay_Req报文之后,回复一个携带有t4的Pdelay_Resp报文,并记录发送时间t5;从时钟收到该报文后,记录接收时间t6。

(5) 主时钟回复Pdelay_Resp报文之后,紧接着发送一个携带有t5的Pdelay_Resp_Follow_Up报文。

此时,从时钟便拥有了t1~t6这六个时间戳,由此可计算出主、从时钟间的往返总延时为 [(t4 – t3) + (t6 – t5)],由于网络是对称的,所以主、从时钟间的单向延时为 [(t4 – t3) + (t6 – t5)] / 2。因此,从时钟相对于主时钟的时钟偏差为:Offset = (t2 – t1) - [(t4 – t3) + (t6 – t5)] / 2。

此外,根据是否需要发送Follow_Up报文,端延时机制也分为单步模式和双步模式两种:

在单步模式下,Sync报文的发送时间戳t1由Sync报文自己携带,不发送Follow_Up报文;而t5和t4的差值由Pdelay_Resp报文携带,不发送Pdelay_Resp_Follow_Up报文。

在双步模式下,Sync报文的发送时间戳t1由Follow_Up报文携带,而t4和t5则分别由Pdelay_Resp报文和Pdelay_Resp_Follow_Up报文携带。

PTP报文

PTP通过主从节点间交互报文,实现主从关系的建立、时间和频率同步。根据报文是否携带时间戳,可以将PTP报文分为两类,事件报文和通用报文。

事件报文:时间概念报文,进出设备端口时打上精确的时间戳,PTP根据事件报文携带的时间戳,计算链路延迟。事件报文包含以下4种:Sync、Delay_Req、Pdelay_Req和Pdelay_Resp。

通用报文:非时间概念报文,进出设备不会产生时间戳,用于主从关系的建立、时间信息的请求和通告。通用报文包含以下6种:Announce、Follow_Up、Delay_Resp、Pdelay_Resp_Follow_Up、Management和Signaling,目前设备不支持Management、Signaling报文。

 

封装格式

1588v2报文可以封装在二层和三层报文中进行传输。根据1588v2报文传输所采用的链路类型不同,1588v2报文可分为MAC封装和UDP封装。

MAC封装

1588v2报文在二层链路上传输时,选择此封装模式,对应的以太网类型Ethernet Type为0x88F7。此时可以设置1588v2报文封装时携带的VLAN ID和802.1p优先级。

 

UDP封装

1588v2报文在三层链路上传输时,选择此封装模式,对应的目的UDP端口号为319(非Announce报文)或者320(Announce报文)。此时可以设置1588v2报文封装时携带的VLAN ID、802.1p优先级和DSCP优先级。

gPTP

gPTP是general precise time protocol的简称,是PTP协议的派生。

gPTP的目的是确保所有局域网里的节点的时间完全一致(ns级别的误差)

如何达到ns级的误差?

gPTP协议基于L2层传输

在OSI网络模型里,L2是MAC层,L3是IP层,我们通常见到的如交换机是L2层的转发,路由器是L3层的转发。gPTP协议是基于L2层的传播,那么就决定了一个特性,只能在局域网里传播,不能通过路由器往WAN网传输。为了达到ns级别的延时,这个也是必须做的。

MAC上的硬件支持

为了测量更精准的时间,我们必须精准的知道一个MAC帧出去的时间,和收到一个MAC帧的时间,这个地方不能通过软件来获得,因为如果通过软件来获取时间,进出终端,任务抢占的时间是不确定的,不可测的。

测量网线上的延时

为了到达ns级别的延时,网线上的传输时间自然不能忽略,如何测量网线上的传输延时呢?专业名称叫 peer to peer delay

我们假设A想知道自己传输到B的延时有多少,怎么办的。

A会发出一个信息(PdelayReq,这个信息的内容是什么不重要),由MAC记录下离开MAC发送到网线上的真正时间t1,B收到这一帧,由MAC记录下收到这一帧的时间t2,然后B会发送一个信息(PdelayResp, 这个信息的内容是什么不重要),同样的B记录下t3,A会记录下t4,最后B会把(t2,t3 装再Pdelay_Resp_Follow_UP)这个帧里面发到A,这时候A会有4个时间数据,t1,t2,t3,t4。

我们假设A,B 时间相差offset,线上传输延时为delay.

t1+delay=t2+offset

t3+delay=t4-offset

delay=(t2-t1+t4-t3)/2

这个时候我们就可以测到线上的延时是多少了。

在汽车以太网中,这个测量过程A和B都会互相发起,测量。但是不用太频繁,因为这个值主要受线的长度影响,一旦固定下来,就不会有大的变化了。

时间同步

gPTP规定一个局域网里只能有一个master,其他全部是slave,同时只有endpoint能参与作为时钟节点,bridge不能作为时钟节点,只能作为透明时钟。

在汽车以太网中,不需要动态协商谁是master节点,通常是预先设定好的。

只有master节点能发送,sync 和 follow_up这两个帧,其实这个的作用就是告诉所有slave节点,我的时间是多少,你应该和我设置为一样的。

在上图中,master发出sync的时间为 te11,slave收到的时间为tb11,同时master发送follow-up携带te11,告诉slave,这个时候slave就有了两个时间,tb11,te11。

这个时候slave自然就知道自己和master的时间差是多少了,这个地方还有一个重要的一点,slave端还要加上Pdelay这个时间,要把在网线上传输的时间加上。这个时间我们master和slave的时间就一样了。

       SLAVE有了这个时间该如何处理?

我们再来看MAC的timer计数器,这个计数器的时钟通常来在晶振然后PLL作为输入,既然是晶振,那么master和slave的晶振就必然会有误差,随着时间的积累会越来越大。

所有SLAVE需要做的就是利用master发来的sync,follow-up帧和测量的pDelay来纠正这个timer计数器里的值。

有了gPTP的协议支持,这个时候不管是master的代码去读timer的值,还是slave的代码去读timer的值,我们理论上认为去到的值都是一样的了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/611220.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Docker 容器互联

-v 宿主机与容器互联 第一步在本机建立共享目录:share 第二步创建容器,将容器opt目录挂载到本机的/opt/share目录上 -v 宿主机目录/文件:容器目录/文件 #将宿主机目录/文件挂载到容器做数据卷 这个时候test1 /opt和本机/opt/share已经可以实现共享 …

如何在 Dev-Cpp 中配置 easyx 图形库?看这就够了,超详细(gif 图例演示)!

笔者的相关学习集文章,欢迎前来学习与交流: C 入门到入土!!!学习合集Linux 从命令到网络再到内核!学习合集 言归正传,本期内容:如何在Dev-Cpp中配置easyx图形库?看这就够…

串口屏-迪文10寸T5串口屏数据交互

效果演示 为了便于理解 建议先看上篇博客 点击跳转到上一篇博客 正式开始 1 打开DGUS 2 如图点击文本显示 数据变量 3 填写数据地址 按步骤操作 3-1 先点击框选1处 3-2 再点击框选2处改地址 我改的1000 3-3 设置完直接导出 插入U盘替换DWSET文件夹文件(这一步不理解去看上一…

右值引用和移动语义 ---- c++11

文章目录: 左值?左值引用?右值?右值引用?左值引用与右值引用比较右值引用的使用场景和意义左值引用的使用场景和意义右值引用和移动语义右值引用引用左值完美转发完美转发实际中的使用场景 c 是一种通用编程语言&#…

个人器件库整理

样品本 包含如下: 电容器件: 元件值封装备注钽电容47uF 10V1206钽电容10uF 10V1206电容10uF 10% 10V0603X5R,CL10A106KP8NNNC 元件值封装备注100nF电容50V,10%0603 电阻器件: 元件值封装备注75 Ω \Omega Ω…

2023-06-05 stonedb-在派生表的场景查询为空无法传递默认值-问题分析

摘要: stonedb-在派生表的场景查询为空无法传递默认值-问题分析. 本文对该问题的成因, 相关功能的代码设计, 在下一步设计时如何应对这种问题, 做相关的分析。 https://stoneatom.yuque.com/staff-ft8n1u/lsztbl/rxlhws22n0f1otxn/edit#AqyB 相关ISSUE: https://github.com…

sql server 内存知识

SQL Server对服务器内存的使用策略是用多少内存就占用多少内存,只用在服务器内存不足时,才会释放一点占用的内存,至少释放多少,完全由sql server控制,所以SQL Server 服务器内存往往会占用很高。 SQL Server提供数据库…

华为OD机试真题 Java 实现【一种字符串压缩表示的解压】【2022Q4 100分】,附详细解题思路

一、题目描述 有一种简易压缩算法:针对全部由小写英文字母组成的字符串,将其中连续超过两个相同字母的部分压缩为连续个数加该字母,其他部分保持原样不变。例如:字符串“aaabbccccd”经过压缩成为字符串“3abb4cd”。 请您编写解…

基于深度学习的视频美颜SDK技术创新与应用案例分析

很多人在拍摄视频时会感到自己的皮肤不够好看,因此需要使用美颜功能。同时,视频美颜也是很多短视频App的核心功能之一。为了提供更加高效、准确的视频美颜功能,很多公司开始研发基于深度学习的视频美颜SDK技术。 与传统的图像处理技术相比&a…

kafka 安装快速入门

直接上干货,我们公司最近要进行消息推送指定软件kafka,直接走起。 1.下载 kafka 是apache的项目。下载地址:kafka.apache.org/ 点击download kafka 进入查看相关版本进行下载。 我这里用的版本比窘旧一点,公司技术一切求稳。 下载好安装包就已…

论文笔记:Normalizing Flows for Probabilistic Modeling and Inference

Abstract 正则流(Normalizing flows)提供了一种通用的机制来定义富有表达力的概率分布,只需要指定一个(通常简单的)基础分布和一系列可逆变换。 Intraduction 正则流通过将简单的密度通过一系列变换来产生更丰富、可…

怎么选择适合爬虫的代理IP,使用时需要注意什么

网络爬虫工作离不开代理服务器的支持,但并不是所有的代理服务器都适合爬虫工作。那么如何选择适合爬虫的代理服务器呢? 选择适合爬虫的代理服务器需要考虑以下几个方面: 1、代理服务器的稳定性:稳定可靠的代理服务器更能够保证爬虫…

JPEG压缩基本原理

JPEG算法的第一步是将图像分割成8X8的小块。 在计算机中,彩色图像最常见的表示方法是RGB格式,通过R(Red)、G(Green)A和(Blue)组合出各种颜色。 除此以外,还有一种表示彩色图像的方法,称为YUV格式。Y表示亮度,U和V表示…

【C++】一文带你吃透C++继承

🍎 博客主页:🌙披星戴月的贾维斯 🍎 欢迎关注:👍点赞🍃收藏🔥留言 🍇系列专栏:🌙 C/C专栏 🌙那些看似波澜不惊的日复一日,…

Docker attach VS exec

我们知道,进入容器常用的两种方式为:docker exec ...、docker attach ...,那这两者有什么区别呢? 首先,运行一个测试容器,并在启动容器时运行相关指令,如下: docker run --name te…

JVM学习笔记一

程序计数器是一块儿较小的内存, 请你谈谈你对JVM的理解?java8虚拟机和之前的有什么变化更新?什么是OOM?什么是栈溢出(StackOverFlowError)?怎么分析JVM的常用调优参数?内存快照如何抓取?怎么分析Dump文件?谈谈JVM中类加载器你的认识?JVM的位置JVM的体系结构类加载器双…

科研热点|科研人专属身份证来了,国产ORCID ID启动!

2023年6月1日,国家自然科学基金委员会发布了《国家自然科学基金委员会关于推广和发布基础研究科研人员标识(BRID)有关工作安排的通告》,宣布从即日起,国家自然科学基金委员会(以下简称自然科学基金委&#…

高完整性系统(4)Formal Logic (形式逻辑和 Alloy 简介)

文章目录 Story so far形式逻辑命题 proposition谓词 predicate连接词VariablesSet 集合Set operation 集合操作Set Relationship 集合关系Alloy Set alloy 的集合表示Quantification 量词Relations 关系案例Binary Relations 二元关系图Functions 函数Total v.s. Partial Func…

IO模型、select、poll、epoll

阻塞IO模型 阻塞IO是最通用的IO类型,使用这种模型进行数据接收的时候,在数据没有到之前程序会一直等待。例如,对于函数recvfrom(),内核会一直阻塞该请求直到有数据到来才返回。 非阻塞IO模型 当把套接字设置成非阻塞的IO,则对每次请求&…

Java网络开发(Tomcat)——遇到的 bug 汇总(持续更新)

目录 引出:bug::bug::bug:Tomcat开发的bug汇总项目启动就报错1.WebServlet()路径配置的问题2.由于之前的错误,Context[/day01]启动失败【困扰】3.启动过滤器异常---init方法 JSP使用相关报错1.后端传给jsp的数据,前端jsp不显示2.jsp的包没有导&#xff0…