当前位置: 首页 > news >正文

京准电钟:NTP网络校时服务器从入门到精准

京准电钟:NTP网络校时服务器从入门到精准

京准电钟:NTP网络校时服务器从入门到精准

1.前言

由计算机网络系统组成的分布式系统,若想协调一致进行:IT行业的“整点开拍”、“秒杀”、“Leader选举”,通信行业的“同步组网”之类业务处理,毫秒级甚至微秒级的时间同步是重要基础之一。

2.术语描述

2.0 世界时

世界时UT,可以简单理解为按照地球自转一周来计量24小时的时间标准,由于地球自转速率的变化,世界时的秒长会有微小的变化,每天的快慢可以达到千分之几秒。

2.1 TAI时间

世界时不准,因此国际组织定义了TAI时间,即国际原子时( International Atomic Time),其起点是1958年的开始(世界时UT),以铯原子钟走秒连续计时的时间。

2.2 UTC时间

计算机网络普遍使用的UTC时间(协调世界时),由国际计量局BIPM综合全世界多个守时实验室的钟组计算得到,为了使UTC时间与地球自转1天的时间(世界时UT)协调一致,每隔1到2年, BIPM会通告在UTC时间6月30日或12月31日最后一分钟“加一秒”或“减一秒”等闰秒调整。也就是说,UTC时间会出现60秒或少了59秒的情况。

最近一次闰秒是UTC时间2015年6月底:

2015 年6月30日,23时 59分 59秒
2015 年6月30日,23时 59分 60秒
2015 年7月 1日, 0时 0分 0秒

由于存在闰秒,UTC时间与TAI时间是有差别的,UTC = TAI - n,这个n现在(2016年1月)是36秒,也就是说UTC时间比TAI时间慢了36秒。

2.3 北京时间

北京时间也就是东八区时间,在UTC时间基础上加8小时,中国的北京标准时间由位于陕西的国家授时中心发播。

2.4 GPS时间

由GPS系统通过卫星信号发播的原子时间,GPS时间用自1980年1月6日零点(UTC时间)起的星期数和该星期内内的秒数来表示。

工程上,GPS接收机会根据闰秒数将GPS时间换算为我们通常使用的UTC时间。GPS时间的源头是美国海军天文台的守时原子钟组。

2.5 北斗(BDS)时间

由北斗卫星导航系统通过卫星信号发播的原子时间,同样,北斗接收机会根据闰秒数将北斗时间换算为我们通常使用的UTC时间。

北斗时间的时钟源是位于北京的解放军时频中心的守时原子钟组,陕西的国家授时中心好尴尬:(。

2.6 频率

时间的导数就是频率,机械发条、石英晶体振荡器、原子钟等各种时钟源通过产生频率信号,按照频率均匀打拍计数,模拟时间的等间隔流逝,就有了可见的“时间”。

2.7 频率准确度

手表有准和不准的,反映的就是频率准不准,时钟频率和标准频率的偏差可以用频率准确度来衡量。1E-9量级表示1秒会差1ns,我们使用的个人电脑,它的守时时钟是个32. 768kHz的石英晶振,准确度大概只有2E-5量级(20ppm),也就是说1秒会差0.02ms,1天会跑偏大概2秒。

2.8 时间同步

广义的“时间同步”包括的时间和频率的同步。上级时钟将时间频率信号通过各种有线(以太网、SDH数字网、同轴电缆、电话等)、无线(卫星、长波、电台、微波、WIFI、Zigbee等)链路传递给下级时钟,下级时钟接受时间频率信息后,与上级时钟保持相位、频率的一致。

3.时间同步原理

3.1 单向授时

上级时钟主动发播时间信息,下级用户端被动接受时间信息,并调整本地时钟使时差控制在一定范围内。

要想提高授时精度,用户端必须计算出时间信息在传播链路中的延时,GPS/北斗等卫星授时,可以通过用户端定位与卫星之间距离确定电磁传输延时,消除大部分误差,而电缆、网络等如果是单向授时方式就无法准确计算单向链路时延了。

3.2 双向授时

用户端将接受的时间信息原路返回给上级时钟服务端,服务端将往返时间除以二即得到单向链路时延,再把单向时延告诉客户端,在此基础上,客户端得到服务端更准确的时间信息。比如:北斗单向卫星授时精度100ns,双向卫星授时精度可做到20ns。

3.3 网络时间同步

网络时间同步,特指在计算机网络内的服务器与客户端之间利用网络报文交换实现的时间同步。

鉴于计算机网络传输路径的不确定性和中间路由交换设备转发报文时间的不确定性,通过单播或多播实现的单向网络授时是不可靠的。因此,前辈们发明的网络时间同步技术NTP/PTP等,基本原理都是通过对网络报文打时间戳(标记),往返交换报文计算传输时延和同步误差。

3.4 频率同步

频率同步指的是主从时钟的频率误差保持在一定范围内,频率同步有2种类型:

第1种是直接传递模拟频率信号,比如用电缆或光缆传递10MHz、5Mhz、2.048MHz等标准频率,或者传递bit位宽脉冲;

第2种是通过测量得到的主从时钟时差,通过锁定主从相差实现频率锁定(PLL),或者间接计算频率偏差,完成频率修正。

4.计算机网络时间同步

计算机网络时间同步只是时间同步的一种应用场景,其时间传递的链路可能是SDH网、以太网、WIFI无线网络等。

4.1 NTP

NTP(Network Time Protocol)从1985年诞生来,目前仍在在大部分的计算机网络中起着同步系统时间的作用。

  • 基本原理

服务器和客户端之间通过二次报文交换,确定主从时间误差,客户端校准本地计算机时间,完成时间同步,有条件的话进一步校准本地时钟频率。

  • 时间同步过程

服务器在UDP的132端口提供授时服务,客户端发送附带T1时间戳(Timestamp)的查询报文给服务器,服务器在该报文上添加到达时刻T2和响应报文发送时刻T3,客户端记录响应报到达时刻T4。

改个维基的图:

  • 时差计算

维基这个图中用蓝色标注了主从直接来回链路的时延Sigma:
Sigma = (t4-t1)-(t3-t2)
因此,假设来回网络链路是对称的,即传输时延相等,那么可以计算客户端与服务器之间的时间误差Delta为:
Delta = t2-t1-Sigma/2=((t2-t1)+(t3-t4))/2

客户端调整自身的时间Delta,即可完成一次时间同步。

  • 计时方式

NTP采用UTC时间计时,NTP时间戳包括自1900-01-01 00:00:00开始的UTC总秒数,当前秒的亚秒数。

当正闰秒时,60秒和下一分钟的0秒的NTP总秒数一致的,因此NTP报文专门定义了闰秒指示域来提示。

  • 误差分析

局域网内计算机利用NTP协议进行时间同步,时间同步精度在5ms左右,主要误差包括:

1)计算机打时间戳的位置在应用层,受协议栈缓存、任务调度等影响,不能在网络报文到来时马上打戳;
2)各种中间网络传输设备带来的传输时延不确定性以及链路的不对称性,将进一步降低NTP时间同步精度。

4.2 PTP

为克服NTP的各种缺点,PTP(Precision Time Protocol,精确时间同步协议)应运而生,最新协议是IEEE1588v2,可实现亚微秒量级的时间同步精度。

  • 基本原理

主从节点在网络链路层打时间戳,利用支持IEEE1588协议的PHY片,精准记录时间同步网络报文接受或发送的时刻。交换机、路由器等网络中间节点准确记录时间同步报文在其中停留的时间,实现对链路时延的准确计算。

  • 时间同步过程

PTP默认使用组播协议,二层或四层UDP组播都可以,一般我们使用基于UDP组播,使用319和320两个端口。

PTP定义了三种角色:OC、BC和TC。我们一般接触的是OC:主时钟和从时钟,交换机、路由器一般是BC或TC。

由于硬件性能有限,网络报文发送时记录的时刻信息,可以在随后的Follow_Up跟随报文中发出,这就是PTP的双步模式(Two-step)。

下图是两OC主从时钟之间的同步过程:

  • a.主时钟向从时钟发送Sync报文,并在本地记录发送时间t1;从时钟收到该报文后,记录接收时间t2。
  • b.时钟发送Sync报文之后,紧接着发送一个携带有t1的Follow_Up报文。
  • c.从时钟向主时钟发送Delay_Req报文,用于发起反向传输延时的计算,并在本地记录发送时间t3;主时钟收到该报文后,记录接收时间t4。
  • d.主时钟收到Delay_Req报文之后,回复一个携带有t4的Delay_Resp报文。
  • 时差计算

与NTP一样的原理,从时钟根据拥有的t1~t4这四个时间戳,由此可计算出主、从时钟间的往返总延时为:
Sigma = (t4-t1)-(t3-t2)

假设网络是对称的,从时钟相对于主时钟的时钟偏差为:
Delta = t2-t1-Sigma/2=((t2-t1)+(t3-t4))/2

  • 计时方式

与NTP不同,PTP采用TAI世界原子时间计时,而且PTP计时的起点与unix时间一致,即UTC时间1970年1月1日0点。

PTP主钟会告知从钟,当前UTC相对于TAI的累计偏移量,从钟据此计算当前准确的UTC时间。

  • 误差分析

PTP能准确记录报文发送和接受的时间,也能计算中间链路的延时,剩下影响最大的就是网络链路的不对称性了。

在实际工程中,网络中间链路设备不支持PTP协议,大大降低了PTP的同步精度。目前,PTP主要应用在通信同步网、电力同步网等行业网络系统里。

  • 同步拓扑

PTP域中所有的时钟节点都按一定层次组织在一起,可通过BMC(Best Master Clock,最佳主时钟)协议动态选举出最优时钟,最优时钟的时间最终将被同步到整个PTP域中。

BMC算法与STP(Spaning Tree Protocl)生成树协议类似,最终形成无环路的树形网络拓扑,且都是动态选举,能适应最佳主时钟切换的变化。

  • 扩展应用——PTP over SDH

充分利用各行业已有的SDH通信网络,利用PTP-E1信号转换设备,架设PTP同步网络,除了需要考虑链路倒换问题之外,SDH网络的时延稳定性可大幅提升网络时间同步精度。

4.3 SyncE同步以太网

以太网最早只能传输数据信号,有另外独立的频率同步网络,随着以太网的快速发展,SyncE(Synchronized Ethernet)同步以太网技术诞生后,企业们有了新的选择。

  • 基本原理

时钟节点利用以太网(1000M、1G、10G等)物理层的空闲间隙,传递位宽时钟信号,实现时钟频率信号(25M、125M等)的自上而下传递。

  • 协议控制

类似于SDH网络等时间间隔传递的SSM同步状态信息,同步以太网(Sync-E)利用链路层ESMC协议封装传递SSM信息,SSM信息包含时钟质量信息,接收端据此选择合适的上级网络时钟。

  • 应用

一般商业PHY片提供SyncE功能选项,开启该功能模式,即可利用PHY恢复出来的频率信号,校准本地时钟频率或分频后用于本地计时。

相关文章:

京准电钟:NTP网络校时服务器从入门到精准

京准电钟:NTP网络校时服务器从入门到精准 京准电钟:NTP网络校时服务器从入门到精准 1.前言 由计算机网络系统组成的分布式系统,若想协调一致进行:IT行业的“整点开拍”、“秒杀”、“Leader选举”,通信行业的“同步…...

【C++习题】15.滑动窗口_串联所有单词的子串

文章目录 题目链接&#xff1a;题目描述&#xff1a;解法C 算法代码&#xff1a;图解 题目链接&#xff1a; 30. 串联所有单词的子串 题目描述&#xff1a; 解法 滑动窗口哈希表 这题和第14题不同的是&#xff1a; 哈希表不同&#xff1a;hash<string,int>left与right指…...

【好玩的经典游戏】Docker环境下部署贪吃蛇网页小游戏(二)

【好玩的经典游戏】Docker环境下部署贪吃蛇网页小游戏(二) 一、贪吃蛇小游戏介绍1.1 小游戏简介1.2 项目预览二、本次实践介绍2.1 本地环境规划2.2 本次实践介绍三、本地环境检查3.1 检查Docker服务状态3.3 检查Docker版本3.4 检查docker compose 版本四、下载容器镜像五、部…...

《Python Web 抓取实战:豆瓣电影 Top 250 数据抓取与分析》

引言 在信息爆炸的时代&#xff0c;掌握数据获取的能力显得尤为重要。通过数据抓取&#xff0c;我们可以从互联网上获取大量有价值的信息&#xff0c;并进行深入分析。本文将介绍如何使用 Python 进行 Web 抓取&#xff0c;以豆瓣电影 Top 250 为例&#xff0c;展示数据抓取的…...

Qt-系统相关(2)多线程网络

Qt多线程 在 Qt 中&#xff0c;多线程的处理⼀般是通过 QThread类 来实现。 QThread 代表⼀个在应⽤程序中可以独⽴控制的线程&#xff0c;也可以和进程中的其他线程共享数据。 QThread 对象管理程序中的⼀个控制线程。 QThread 常⽤ API&#xff1a; 使用线程 关于创建线程…...

代码随想录算法训练营第五十九天|Day59 图论

Bellman_ford 算法精讲 https://www.programmercarl.com/kamacoder/0094.%E5%9F%8E%E5%B8%82%E9%97%B4%E8%B4%A7%E7%89%A9%E8%BF%90%E8%BE%93I.html 思路 #include <stdio.h> #include <stdlib.h> #include <limits.h>#define MAXM 10000 // 假设最大边数为1…...

SpringBoot集成ESAPI

官网地址&#xff1a;https://github.com/ESAPI/esapi-java-legacy 一、POM依赖 <dependency><groupId>org.owasp.esapi</groupId><artifactId>esapi</artifactId><version>2.6.0.0</version> <!-- Preferably the latest ver…...

Git 进程占用报错-解决方案

背景 大仓库&#xff0c;由于开发者分支较多&#xff0c;我们在使用 git pull 或 git push 等命令时&#xff08;与远端仓库交互的命令&#xff09;&#xff0c;不知之前配置了什么&#xff0c;我的电脑会必现以下报错&#xff08;有非常长一大串报错-不同分支的git进程占用报…...

python怎么设置静态变量

众所周知&#xff0c;Python语言并不支持静态变量&#xff0c;比如下面这样一个应用场景&#xff1a; void foo() {static int count 0;count ; } 在Python中无法自然实现这个功能。换个角度来看这个问题&#xff0c;函数中的静态变量其实可以看做是函数的一个内部变量&#x…...

【H2O2|全栈】Node.js(1)

目录 前言 开篇语 准备工作 ES6导入导出 导入 有名导出 匿名导出 Node概念 Node导入导出 导入 有名导出 匿名导出 Node常用模块 path模块 和路径有关的全局变量 常见方法 导入方法 fs模块 常见方法 导入方法 结束语 前言 开篇语 本系列博客主要分享Java…...

SJYP 24冬季系列 FROZEN CHARISMA发布

近日&#xff0c;女装品牌SJYP 2024年冬季系列——FROZEN CHARISMA已正式发布&#xff0c;展现了更加干练的法式风格。此次新品发布不仅延续了SJYP一贯的强烈设计风格和个性时尚&#xff0c;更融入了法式风情的干练元素&#xff0c;为消费者带来了一场视觉与穿着的双重盛宴。  …...

嵌入式硬件实战基础篇(四)多路直流稳压电源

设计一个多路直流稳压电源 要求设计制作一个多路输出直流稳压电源,可将220 V / 5 0HZ交流电转换为5路直流稳压输出。具体要求&#xff1a; 输出直流电压 12V&#xff0c; 5V;和一路输出3- 15V连续可调直流稳压电源: 输出电流Iom500mA; 稳压系数 Sr≤0.05;...

力扣_876. 链表的中间结点

力扣_876. 链表的中间结点 给你单链表的头结点 head &#xff0c;请你找出并返回链表的中间结点。 如果有两个中间结点&#xff0c;则返回第二个中间结点。 输入&#xff1a;head [1,2,3,4,5] 输出&#xff1a;[3,4,5] 解释&#xff1a;链表只有一个中间结点&#xff0c;值为…...

shell脚本命令(一)

shell脚本命令&#xff08;一&#xff09; 一、Shell 基础知识 Shell的基本概念 定义&#xff1a; Shell 是操作系统中的命令解释器&#xff0c;位于用户与操作系统内核之间。它接收并解释用户输入的命令&#xff0c;将任务传递给操作系统内核执行&#xff0c;然后将执行结果…...

一文理解多模态大语言模型——上

作者&#xff1a;Sebastian Raschka 博士&#xff0c; 翻译&#xff1a;张晶&#xff0c;Linux Fundation APAC Open Source Evangelist 编者按&#xff1a;本文并不是逐字逐句翻译&#xff0c;而是以更有利于中文读者理解的目标&#xff0c;做了删减、重构和意译&#xff0c…...

[代码随想录Day24打卡] 93.复原IP地址 78.子集 90.子集II

93.复原IP地址 一个合法的IP地址是什么样的&#xff1a; 有3个’.分割得到4个数&#xff0c;每个数第一个数不能是0&#xff0c;不能含有非法字符&#xff0c;不能大于255。 这个是否属于合法IP相当于一个分割问题&#xff0c;把一串字符串分割成4部分&#xff0c;分别判断每…...

去哪儿大数据面试题及参考答案

Hadoop 工作原理是什么? Hadoop 是一个开源的分布式计算框架,主要由 HDFS(Hadoop 分布式文件系统)和 MapReduce 计算模型两部分组成 。 HDFS 工作原理 HDFS 采用主从架构,有一个 NameNode 和多个 DataNode。NameNode 负责管理文件系统的命名空间,维护文件和目录的元数据信…...

controller中的参数注解@Param @RequestParam和@RequestBody的不同

现在controller中有个方法&#xff1a;&#xff08;LoginUserRequest是一个用户类对象&#xff09; PostMapping("/test/phone")public Result validPhone(LoginUserRequest loginUserRequest) {return Result.success(loginUserRequest);}现在讨论Param("login…...

排序算法思维导图

冒泡排序 def bubble_sort(alist):j 0while j < len(alist):i 0while i < len(alist) - 1:if alist[i] > alist[i1]:alist[i], alist[i1] alist[i1], alist[i]i 1j 1li [34,556,235,7,56,45,63,35,23,4,875] bubble_sort(li) print(li) 选择排序 def select_s…...

ZYNQ试用于哪些场景

ZYNQ系列SoC&#xff08;System on Chip&#xff09;由于其独特的处理器与FPGA&#xff08;可编程逻辑&#xff09;集成设计&#xff0c;非常适合应用于多种需要高性能、灵活性和低功耗的场景。 以下是一些ZYNQ特别适用的场景&#xff1a; 嵌入式系统&#xff1a;ZYNQ的ARM处理…...

【03】Selenium+Python 八种定位元素方法

操作元素&#xff0c;需要先查找定位到对应的元素。 查找单个元素&#xff1a;driver.find_element() 返回是一个web element 对象 查找多个元素&#xff1a;driver.find_elements() 返回是一个list对象 By 是 Selenium 中一个非常重要的类&#xff0c;用于定位网页元素。 使…...

Java 自动资源管理(Auto Resource Management)详解

Java 自动资源管理&#xff08;Auto Resource Management&#xff09;详解 在Java编程中&#xff0c;资源的正确管理是开发过程中一个非常重要的环节。如果资源&#xff08;如文件、数据库连接、网络连接等&#xff09;未被正确释放&#xff0c;可能会导致资源泄漏&#xff0c…...

IT运维专家给年轻人一些职业上的建议

运维工作在现代企业中是非常重要的一环,保证系统的稳定性、可用性以及安全性对企业的正常运营至关重要。以下是我给年轻人的一些职业发展建议,希望能够帮助你们在运维领域找到方向并取得成功。 1. 夯实基础,扎实技术功底 精通操作系统与网络:运维工作需要深入理解操作系统…...

视图查询中投影裁剪规则的原理和解析 | OceanBase 查询优化

背景 在SQL查询中使用视图查询时&#xff0c;执行中可能会产生的较多的中间结果集。为了优化这类查询的执行&#xff0c;OceanBase 引入了投影裁剪规则。能够识别出父查询中未实际使用的列&#xff0c;并将这些列从视图查询的select列表中剔除&#xff0c;进而提升整体查询的性…...

利用Nginx在服务器上部署你的第一个静态页面

文章目录 序言Nginx常用功能1. 反向代理2.负载均衡轮询加权轮询IP_Hash Nginx配置文件结构安装并部署你的静态网页1. 安装(懒人直接看3)2.查看配置文件3.编写或放入自己的静态页面文件 序言 首先我们先来认识一下什么是Nginx源码 官网 Nginx (engine x) 是一个高性能的HTTP和…...

【拥抱AI】RAG如何通过分析反馈、识别问题来提高命中率

分析用户反馈并识别问题是持续优化RAG系统的重要步骤。这不仅可以帮助你了解系统的当前表现&#xff0c;还可以指导未来的改进方向。直接进入正题&#xff0c; 1. 收集用户反馈 方法 问卷调查&#xff1a;设计问卷&#xff0c;让用户填写他们对系统输出的满意度、易用性等方…...

内核模块签名验证

安装内核模块报错 今天在调试地平线 J6 板子时&#xff0c;安装自己编译的内核模块报错 roothobot:/tmp# insmod hobot_eth_j6.ko insmod: ERROR: could not insert module hobot_eth_j6.ko: Key was rejected by service前两天刚在 x86 电脑上解决过这个问题&#xff0c;参…...

C++模板(入门)

文章目录 泛型编程函数模板函数模板的概念函数模板格式函数模板的原理函数模板的实例化隐式实例化显示实例化模板参数的匹配 类模板为什么有类模板类模板的定义格式类模板的实例化Stack模板类的简单实现&#xff08;不涉及深拷贝&#xff09; 模板的注意问题模板不支持分离编译…...

如何在Python中进行数学建模?

数学建模是数据科学中使用的强大工具&#xff0c;通过数学方程和算法来表示真实世界的系统和现象。Python拥有丰富的库生态系统&#xff0c;为开发和实现数学模型提供了一个很好的平台。本文将指导您完成Python中的数学建模过程&#xff0c;重点关注数据科学中的应用。 数学建…...

C++优质学习资源汇总

1 学懂C语言-C核心编程精讲 学懂C语言-C核心编程精讲 该课程基本把面试所需要的C常用的网络等教程均进行讲解&#xff0c;满足基本需求...

心情追忆:构建支付模块的五个基本接口设计

之前&#xff0c;我独自一人开发了一个名为“心情追忆”的小程序&#xff0c;旨在帮助用户记录日常的心情变化及重要时刻。我从项目的构思、设计、前端&#xff08;小程序&#xff09;开发、后端搭建到最终部署。经过一个月的努力&#xff0c;通过群聊分享等方式&#xff0c;用…...

数据库导论

data 数据是数据库中存储的基本数据&#xff0c;描述事物的符号称为数据。 DB 数据库是长期存储在计算机内&#xff0c;有组织&#xff0c;可共享的大量数据的集合。数据库中的数据按照一定的数据模型组织&#xff0c;描述和存储&#xff0c;具有较小的冗余度&#xff0c;较…...

echarts使用示例

柱状图折线图 折柱混合&#xff1a;https://echarts.apache.org/examples/zh/editor.html?cmix-line-bar option {title:{show: true},tooltip: {trigger: axis,axisPointer: {type: cross,crossStyle: {color: #999}}},toolbox: {feature: {dataView: { show: true, readOnl…...

选修课(Java Python JS C++ C )

题目描述 现有两门选修课,每门选修课都有一部分学生选修,每个学生都有选修课的成绩,需要你找出同时选修了两门选修课的学生,先按照班级进行划分,班级编号小的先输出,每个班级按照两门选修课成绩和的降序排序,成绩相同时按照学生的学号升序排序。 输入描述 第一行为第…...

《解锁 C++数据读写秘籍:赋能人工智能训练》

在人工智能蓬勃发展的时代&#xff0c;数据无疑是驱动模型学习与成长的核心燃料。而 C作为一门高性能编程语言&#xff0c;在处理人工智能训练所需数据集的读取与写入时&#xff0c;有着独特的优势与关键作用。高效地运用 C进行数据操作&#xff0c;能够显著加速训练进程&#…...

23种设计模式-外观(Facade)设计模式

文章目录 一.什么是外观设计模式&#xff1f;二.外观设计模式的特点三.外观设计模式的结构四.外观设计模式的优缺点五.外观设计模式的 C 实现六.外观设计模式的 JAVA 实现七.代码解析八.总结 类图&#xff1a; 外观设计模式类图 一.什么是外观设计模式&#xff1f; 外观设计模…...

ReactPress(阮一峰推荐工具):一款基于Next.js的免费开源博客CMS系统

ReactPress Github项目地址&#xff1a;https://github.com/fecommunity/reactpress 欢迎Star。 此项目是用于构建博客网站的&#xff0c;包含前台展示、管理后台和后端。 此项目是基于 React antd NestJS NextJS MySQL 的&#xff0c;项目已经开源&#xff0c;项目地址在 …...

什么是缓存击穿?如何避免之布隆过滤器

缓存击穿&#xff08;Cache Penetration&#xff09;是分布式系统和缓存使用中的一个常见问题&#xff0c;布隆过滤器在解决缓存击穿问题时非常有用。接下来我会介绍缓存击穿的概念以及布隆过滤器在解决该问题中的应用。 什么是缓存击穿&#xff1f; 缓存击穿是指当大量的客户…...

React 第八节组件生命周期钩子-类式组件,函数式组件模拟生命周期用法

概述 React组件的生命周期可以分为三个主要阶段&#xff1a; 挂载阶段&#xff08;Mounting&#xff09;&#xff1a;组件被创建&#xff0c;插入到DOM 树的过程&#xff1b; 更新阶段&#xff08;Updating&#xff09;&#xff1a;是组件中 props 以及state 发生变化时&#…...

java虚拟机——如何排查jvm问题

在项目中排查JVM问题是一个系统性的过程&#xff0c;涉及到多个工具和方法。以下是一些常见的步骤和工具&#xff0c;可以帮助你有效地诊断和解决JVM相关的问题&#xff1a; 1. 监控和日志 日志分析 JVM日志&#xff1a;启用JVM的日志记录功能&#xff0c;查看垃圾收集日志、…...

Altium Designer PCB设计检查工具1

此工具最大的特点是不需要联网&#xff0c;完全使用本地的计算资源即可实现检查统计操作&#xff0c;可用于不能联网的应用场景中。此工具支持多种计算加速方法&#xff0c;支持调用CUDA显卡进行数据处理&#xff0c;此功能需要计算机安装Matlab 2016以上版本&#xff0c;并需要…...

统计词频

目标&#xff1a;统计词频 从文件1.txt &#xff0c;读取内容&#xff0c;保存在一个字符串中统计字符串中&#xff0c;每个单词出现的频率对结果进行排序把最后的结果写入一个新的文件 import java.io.PrintWriter import scala.io.Source//知识点&#xff1a; //1.字符串&a…...

串,数组,广义表相关知识点

串 一.串的储存 1.基本概念 2.顺序储存 3.链式储存 二. 串的模式匹配算法 1.BF算法 将主串的第pos个字符和模式的第一个字符比较&#xff0c; 若相等&#xff0c;继续逐个比较后续字符&#xff1b; 若相等&#xff0c;继续逐个比较后续字符&#xff1b; 若不等&#xff0c…...

Leetcode 131 Palindrome Partition

题意 把一个字符串分割成多个回文字符串的partition&#xff0c;返回所有的可能partion 链接 https://leetcode.com/problems/palindrome-partitioning/description/ 思考 这只是dfs套了一个回文问题 题解 dfs每次截取一段字符串&#xff0c;判断是否是回文 退出条件是遍…...

git使用文档手册

创建一个本地代码工作空间&#xff0c;比如这里使用test目录作为工作目录 针对仓库地址 http://192.168.31.125:9557/poxiaoai-crm/project-crm.git。 1. 安装 Git 确保您的系统已经安装了 Git。如果未安装&#xff0c;请根据操作系统访问 Git 官网 下载并安装。 验证安装 …...

开发需求总结19-vue 根据后端返回一年的数据,过滤出符合条件数据

需求描述&#xff1a; 定义时间分界点&#xff1a;每月26号8点&#xff0c;过了26号8点则过滤出data数组中符合条件数据下个月的数据&#xff0c;否则过滤出当月数据 1.假如现在是2024年11月14日&#xff0c;那么过滤出data数组中日期都是2024-11月的数据&#xff1b; 2.假如…...

android 安全sdk相关

前述 在网上有看到许多android安全sdk相关的内容&#xff0c;有重复的也有比较新鲜的内容&#xff0c;这里做一个整体的合集&#xff0c;以及后续又看到一些比较新的东西会一起放在这里。 android内sdk目前可以分为以下几个部分&#xff08;有一些部分可能会存在一些重合&#…...

ChemBench—— 探索大语言模型在化学领域的新基准框架是否胜过化学专家

概述 大规模语言模型是一种机器学习模型&#xff0c;通过学习大量文本来生成文本。这些模型的能力正在迅速提高&#xff0c;现在已经可以通过美国国家医学考试。它们还可以与网络搜索和合成规划器等工具结合使用&#xff0c;自主设计化学反应和进行实验。 一些人认为这些模型…...

[SWPUCTF 2021 新生赛]Do_you_know_http

访问告诉我们要用WLLM 浏览器模式访问 import requestsurl http://node7.anna.nssctf.cn:23148/hello.php # 替换为题目提供的URL headers {User-Agent: WLLM } response requests.get(url, headersheaders) print(response.text)import requestsurl http://node7.anna.n…...

Flink--API 之 Source 使用解析

目录 一、Flink Data Sources 分类概览 &#xff08;一&#xff09;预定义 Source &#xff08;二&#xff09;自定义 Source 二、代码实战演示 &#xff08;一&#xff09;预定义 Source 示例 基于本地集合 基于本地文件 基于网络套接字&#xff08;socketTextStream&…...