ntp设置
NTP(Network Time Protocol)简介
ntp授时定义
- NTP是一种用于在计算机网络中同步时间的协议。它确保网络中的各个设备(如服务器、客户端计算机、网络设备等)的时钟保持准确一致。
- 其工作原理是通过分层的时钟源体系,设备可以与更准确的时间服务器(称为NTP服务器)进行通信,获取准确的时间信息并调整自身的时钟。这些NTP服务器本身也可以从更高级别的时间源(如原子钟)获取时间校准。
NTP的重要性
- **系统集成和一致性**:* 在大型企业网络或数据中心环境中,有许多服务器和设备协同工作。例如,在分布式数据库系统中,准确的时间同步对于数据的一致性和事务的正确处理至关重要。不同服务器上的日志记录也需要准确的时间戳,以便在故障排查或安全审计时能够正确地追踪事件顺序。
- **网络安全和认证**:* 许多安全机制,如数字证书、Kerberos认证等,依赖于准确的时间。如果时间不同步,可能会导致认证失败或者安全漏洞。例如,证书的有效期是基于时间来判断的,如果设备时间不准确,可能会错误地认为证书已经过期或者尚未生效。
**二、**Chrony和ntp服务器对比
时间同步精度和收敛速度方面
- **Chrony优势**:Chrony具有更快的收敛速度。在系统启动或网络恢复后,它能够快速地使本地时间与时间服务器同步。
- **NTP情况**:NTP虽然也能提供较为准确的时间同步,但收敛速度相对较慢。它的同步过程较为保守,尤其是在初始同步或者网络环境变化后,需要逐步调整时间,花费的时间可能会比较长才能达到高精度的同步状态。
对网络环境的适应性方面
- **Chrony优势**:Chrony能够更好地适应复杂多变的网络环境。它可以在网络延迟波动、丢包等情况发生时,利用之前收集的时间数据和本地时钟的特性来灵活调整同步策略。例如,当网络出现短暂拥塞导致丢包时,Chrony可以根据之前同步过程中获取的时钟偏差估计值和网络延迟的统计信息,继续对本地时间进行合理的调整,以保持时间同步的准确性。
- **NTP情况**:NTP在面对网络环境变化时的适应能力相对较弱。当网络状况不佳,如频繁丢包或者网络延迟突然增大时,NTP的时间同步效果可能会受到较大影响,出现时间偏差增大甚至同步失败的情况。
系统资源占用方面
- **Chrony优势**:Chrony是轻量级软件,对系统资源的占用较少。这使得它非常适合在资源受限的系统(如嵌入式设备)上运行。它可以在不影响系统整体性能的前提下,高效地完成时间同步任务。
- **NTP情况**:NTP在一些资源有限的系统中可能会对系统性能产生一定的影响,特别是在处理复杂的时间同步计算和网络通信时,可能会占用较多的CPU时间和内存资源。
配置的灵活性方面
- **Chrony优势**:Chrony的配置相对简单且灵活。它的配置文件(如在Linux系统中的`/etc/chrony.conf`)易于理解和修改。可以方便地指定多个时间服务器,并且支持多种同步选项,如设置不同的时间源优先级等。
- **NTP情况**:NTP的配置相对复杂一些,尤其是在设置高级功能(如复杂的访问控制和多服务器同步策略)时,需要对NTP的配置语法和选项有更深入的了解。
三、Chrony安装和配置(以Linux为例)
安装
- 在基于Debian或Ubuntu的系统中,可以使用以下命令安装:`sudo apt - get install chrony`。
- 对于基于Red Hat或CentOS的系统,命令为:`sudo yum install chrony`。
配置文件
- 主要配置文件通常是`/etc/chrony.conf`。在这个文件中,可以指定时间服务器(NTP服务器)的地址。例如,可以添加以下行来指定公共的NTP服务器:
- 以下是对这个 `chrony` 配置文件内容的详细解释:
# Welcome to the chrony configuration file. See chrony.conf(5) for more
# information about usuable directives.# This will use (up to):
# - 4 sources from ntp.ubuntu.com which some are ipv6 enabled
# - 2 sources from 2.ubuntu.pool.ntp.org which is ipv6 enabled as well
# - 1 source from [01].ubuntu.pool.ntp.org each (ipv4 only atm)
# This means by default, up to 6 dual-stack and up to 2 additional IPv4-only
# sources will be used.
# At the same time it retains some protection against one of the entries being
# down (compare to just using one of the lines). See (LP: #1754358) for the
# discussion.
#
# About using servers from the NTP Pool Project in general see (LP: #104525).
# Approved by Ubuntu Technical Board on 2011-02-08.
# See http://www.pool.ntp.org/join.html for more information.
#pool ntp.ubuntu.com iburst maxsources 4
#pool 0.ubuntu.pool.ntp.org iburst maxsources 1
#pool 1.ubuntu.pool.ntp.org iburst maxsources 1
#pool 2.ubuntu.pool.ntp.org iburst maxsources 2
#server ntp.aliyun.com iburst
server 192.168.200.16 iburst
allow 192.168.200.0/24
local stratum 10
# This directive specify the location of the file containing ID/key pairs for
# NTP authentication.
#keyfile /etc/chrony/chrony.keys# This directive specify the file into which chronyd will store the rate
# information.
driftfile /var/lib/chrony/chrony.drift# Uncomment the following line to turn logging on.
#log tracking measurements statistics# Log files location.
logdir /var/log/chrony# Stop bad estimates upsetting machine clock.
maxupdateskew 100.0# This directive enables kernel synchronisation (every 11 minutes) of the
# real-time clock. Note that it can’t be used along with the 'rtcfile' directive.
rtcsync# Step the system clock instead of slewing it if the adjustment is larger than
# one second, but only in the first three clock updates.
makestep 1 3
配置文件说明部分
# Welcome to the chrony configuration file. See chrony.conf(5) for more
# information about usuable directives.
这是配置文件开头的注释说明,告知用户这是 chrony 的配置文件,若想了解更多可用指令的详细信息,可以查看 chrony.conf(5) 手册页(在类 Unix 系统中,这种形式的手册页通常用于查看相关配置文件指令等的详细文档)。
时间服务器(NTP 服务器)相关配置
# This will use (up to):
# - 4 sources from ntp.ubuntu.com which some are ipv6 enabled
# - 2 sources from 2.ubuntu.pool.ntp.org which is ipv6 enabled as well
# - 1 source from [01].ubuntu.pool.ntp.org each (ipv4 only atm)
# This means by default, up to 6 dual-stack and up to 2 additional IPv4-only
# sources will be used.
# At the same time it retains some protection against one of the entries being
# down (compare to just using one of the lines). See (LP: #1754358) for the
# discussion.
#
# About using servers from the NTP Pool Project in general see (LP: #104525).
# Approved by Ubuntu Technical Board on 2011-02-08.
# See http://www.pool.ntp.org/join.html for more information.
#pool ntp.ubuntu.com iburst maxsources 4
#pool 0.ubuntu.pool.ntp.org iburst maxsources 1
#pool 1.ubuntu.pool.ntp.org iburst maxsources 1
#pool 2.ubuntu.pool.ntp.org iburst maxsources 2
#server ntp.aliyun.com iburst
server 192.168.200.16 iburst
- 开头注释详细解释了原本可以配置使用来自不同域名的多个 NTP 服务器作为时间源,以及各自可使用的最大服务器数量等情况。例如,从
ntp.ubuntu.com最多使用 4 个源(其中部分支持 IPv6),从2.ubuntu.pool.ntp.org最多使用 2 个源(同样支持 IPv6)等。不过这里前面几个以pool开头配置 NTP 服务器池的行被注释掉了(#表示注释),意味着当前没有启用这些服务器池的配置。 server ntp.aliyun.com iburst这一行也是被注释掉的,它原本的作用是指定ntp.aliyun.com作为时间服务器,并使用iburst选项。iburst选项会让chrony在初始同步时发送一系列紧密间隔的请求,以便更快地获取准确时间。server 192.168.200.16 iburst这一行则启用了指定 IP 地址为192.168.200.16的服务器作为时间服务器,同样配合iburst选项来加速初始时间同步。
访问控制配置
allow 192.168.200.0/24
allow 指令用于设置允许访问 chrony 服务的网络范围,这里表示允许来自 192.168.200.0/24 这个网段内的设备访问 chrony 服务,通常用于限制哪些主机可以与本地运行的 chrony 进行交互(比如获取时间信息等)。
本地时钟层级与特性相关配置
local stratum 10
local 指令结合 stratum 参数用于定义本地时钟在 NTP 层级体系中的层级为 10。stratum 表示时钟的准确程度和在整个 NTP 网络中的层次关系,数字越大通常意味着准确性相对越低,这里将本地时钟设置为层级 10,可能是在特定网络环境下对本地时钟相对位置的一种定义(比如在无法连接到外部可靠时间源等情况下的一种兜底设定)。
认证相关(但当前未启用)
# This directive specify the location of the file containing ID/key pairs for
# NTP authentication.
#keyfile /etc/chrony/chrony.keys
这部分被注释掉了,原本 keyfile 指令是用于指定包含 NTP 认证所需的 ID 和密钥对的文件位置(在这里文件路径为 /etc/chrony/chrony.keys),若要启用 NTP 认证功能,就需要取消这行的注释,并正确配置对应的认证文件内容,但当前配置中并未启用该功能。
漂移文件配置
driftfile /var/lib/chrony/chrony.drift
driftfile 指令指定了 chrony 将用来存储时钟速率信息的文件路径。chrony 会根据系统时钟与时间源的对比等情况,把时钟漂移相关的数据记录到这个文件中,后续利用这些信息来更精准地进行时间同步调整等操作。
日志相关配置
# Uncomment the following line to turn logging on.
#log tracking measurements statistics# Log files location.
logdir /var/log/chrony
- 第一部分中
log tracking measurements statistics这行被注释掉了,若取消注释,则会开启相应的日志记录功能,记录诸如跟踪、测量、统计等与时间同步相关的详细信息。 logdir指令明确了日志文件存放的目录为/var/log/chrony,如果开启了日志记录,相应的日志文件就会存放在这个指定的目录下。
最大更新偏差配置
maxupdateskew 100.0
maxupdateskew 指令用于设置允许的最大更新偏差值,单位是秒。在这里设置为 100.0,意味着如果 chrony 检测到时钟调整的偏差大于 100 秒,就会采取相应的措施(比如根据其他配置决定是否进行调整等),该指令主要是防止因过大的时间偏差更新对系统时钟造成不合理的影响。
内核同步及时钟调整相关配置
# This directive enables kernel synchronisation (every 11 minutes) of the
# real-time clock. Note that it can’t be used along with the 'rtcfile' directive.
rtcsync# Step the system clock instead of slewing it if the adjustment is larger than
# one second, but only in the first three clock updates.
makestep 1 3
rtcsync指令启用了内核实时时钟的同步功能,每隔 11 分钟,chrony会将系统时钟与硬件实时时钟进行同步(需要注意的是它不能和rtcfile指令同时使用)。makestep指令规定了如果时间调整幅度大于 1 秒,那么在前三次时钟更新时,chrony会直接“跳步”(step)来调整系统时钟,使其快速跟上正确时间,而不是缓慢地调整(即“slewing”,缓慢调整时钟速率来使时间慢慢对齐)。超过三次之后,即使时间偏差大于 1 秒,可能就会采用其他相对缓和的方式来处理时间偏差了。
启动和服务管理
- 安装完成后,可以使用以下命令启动Chrony服务:`sudo service chrony start`(在基于Systemd的系统中,命令为`sudo systemctl start chrony`)。
- 可以将其设置为开机自启,在Systemd系统中使用命令`sudo systemctl enable chrony`。
四 NTPserver安装和配置(以centos为例)
安装
既可做服务端也可做客户端
sudo yum install -y ntp
只同步
sudo yum install -y ntpdate
开启服务,让其他客户端与本机同步,注意防火墙状态
systemctl start ntpd
开机自启
systemctl enable ntpd
修改配置文件
# 记录和上级时间服务器的时间差异
driftfile /var/lib/ntp/drift# ntp 日志
logfile /var/log/ntp.log
# 日志级别 all event info
logconfig all# 设置默认策略,允许同步时间,不允许修改
restrict default nomodify notrap nopeer noquery# 允许本机地址的一切操作,-6 为 IPV6
restrict 127.0.0.1
restrict -6 ::1# 允许网段内客户端连接此服务器同步时间,但是拒绝让他们修改服务器上的时间
restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap# https://www.ntppool.org/zone/cn
# 利用 server 设定上层 NTP 服务器,可设置多个。prefer 表示优先
server s1b.time.edu.cn prefer# 在 /ntp.conf 中定义的 server 都不可用时,将使用 local 时间作为 ntp 服务提供给 ntp 客户端。建议配置,否则 ntp 服务器无法与公网 ntp 服务器同步时,其客户端也会无法同步
server 127.127.1.0
fudge 127.127.1.0 stratum 10
以下是对这段NTP配置文件内容的详细解释:
漂移文件配置
# 记录和上级时间服务器的时间差异
driftfile /var/lib/ntp/drift
driftfile指令用于指定一个文件(这里是/var/lib/ntp/drift),NTP服务会将系统时钟相对于参考时间源(上级时间服务器)的时钟漂移信息记录到该文件中。通过长期监测和记录这些漂移数据,NTP软件能够更精准地对系统时钟进行调整,以补偿时钟频率的微小变化,从而更好地保持时间同步的准确性。
日志相关配置
# ntp 日志
logfile /var/log/ntp.log
# 日志级别 all event info
logconfig all
logfile指令明确了NTP服务日志文件的存放位置,即/var/log/ntp.log,所有与NTP运行相关的日志信息都会记录到这个文件中,方便后续查看和分析NTP服务的运行状态、时间同步情况以及可能出现的问题等。logconfig指令设置了日志记录的级别为all,意味着会记录所有类型的日志信息,包括各种事件(event)以及详细的信息(info)等。这样的配置可以提供非常全面的日志内容,但也可能导致日志文件增长较快,需要根据实际需求和磁盘空间等情况合理考虑是否调整日志级别。
访问限制(restrict)相关配置
# 设置默认策略,允许同步时间,不允许修改
restrict default nomodify notrap nopeer noquery# 允许本机地址的一切操作,-6 为 IPV6
restrict 127.0.0.1
restrict -6 ::1# 允许网段内客户端连接此服务器同步时间,但是拒绝让他们修改服务器上的时间
restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap
restrict指令用于控制对NTP服务的访问权限。restrict default nomodify notrap nopeer noquery这一行是设置了全局默认的访问限制策略,具体含义如下:nomodify:禁止客户端修改NTP服务器的配置以及时间设置,确保服务器时间的权威性和稳定性,只允许客户端从服务器获取时间进行同步。notrap:不处理控制消息陷阱(trap),通常用于避免一些特殊的控制消息交互,简化服务运行逻辑。nopeer:拒绝让其他设备与本NTP服务器建立对等(peer)关系,也就是不允许其他设备把本服务器当作同等地位的时间同步伙伴,明确了服务器与客户端的层级关系。noquery:禁止外部设备对本服务器进行查询操作(除了同步时间相关的必要交互),进一步保障服务器的安全性和稳定性。
restrict 127.0.0.1和restrict -6 ::1这两行分别针对本地回环地址(IPv4的127.0.0.1和IPv6的::1)放开了所有限制,允许本地进程无限制地访问NTP服务,这是很常见的配置,因为本地的一些系统服务或应用可能需要不受限制地与本地运行的NTP服务交互来获取准确时间。restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap则是针对192.168.1.0/24这个网段内的客户端进行访问限制设置,允许它们连接到本NTP服务器进行时间同步(因为没有设置noquery),但同样不允许它们修改服务器上的时间(通过nomodify选项实现),确保了服务器时间不会被该网段内的客户端意外更改。
时间服务器(server)相关配置
# https://www.ntppool.org/zone/cn
# 利用 server 设定上层 NTP 服务器,可设置多个。prefer 表示优先
server s1b.time.edu.cn prefer# 在 /ntp.conf 中定义的 server 都不可用时,将使用 local 时间作为 ntp 服务提供给 ntp 客户端。建议配置,否则 ntp 服务器无法与公网 ntp 服务器同步时,其客户端也会无法同步
server 127.127.1.0
fudge 127.127.1.0 stratum 10
server s1b.time.edu.cn prefer这一行指定了s1b.time.edu.cn作为上层的NTP时间服务器,并且通过prefer关键字表明在有多个可用时间服务器时,优先使用该服务器进行时间同步。这样可以确保在有多个时间源选择的情况下,优先与更可靠或者更精准的时间服务器对接。server 127.127.1.0和fudge 127.127.1.0 stratum 10这两行是一种备用时间源的配置。当配置文件中前面定义的所有外部(公网)NTP服务器(如s1b.time.edu.cn等)都不可用,无法进行时间同步时,NTP服务会将本地的127.127.1.0这个虚拟的本地时钟当作时间源来为NTP客户端提供时间服务。通过fudge指令设置其stratum(层级)为10,表示它在整个NTP时间层级体系中的相对准确性级别,数字越大通常意味着相对准确性越低,但在外部时间源失效的情况下,它可以作为一种兜底的时间提供方式,保证客户端依然能够获取到一个相对稳定的时间基准,避免客户端完全无法同步时间的情况出现。
相关文章:
ntp设置
NTP(Network Time Protocol)简介 ntp授时定义 - NTP是一种用于在计算机网络中同步时间的协议。它确保网络中的各个设备(如服务器、客户端计算机、网络设备等)的时钟保持准确一致。 - 其工作原理是通过分层的时钟源体系ÿ…...
如何在Java中使用封装好的API接口?
1.选择合适的 HTTP 库 在 Java 中,可以使用多种库来进行 HTTP 请求。java.net.HttpURLConnection是 Java 标准库中的类,能够满足基本的 HTTP 请求需求,但使用起来相对复杂。另外,还有一些第三方库,如OkHttp和Apache H…...
AWS EKS 相关错误修复 - remote error: tls: internal error - CSR pending
现象 升级aws eks的kubernetes版本后执行kubectl logs 或者kubectl exec相关命令会出现报错 remote error: tls: internal error 执行kubectl get csr -A查看csr出现一直pending的状态,并且出现问题的pod都在新创建出来的eks node节点上 kubectl get csr -A NAME AGE …...
浏览器事件循环机制
JavaScript 是单线程运行的语言,同一时间只能执行一个任务。单线程意味着: 如果某个任务执行时间过长,后续任务会被阻塞。 同步任务和异步任务的调度需要一种机制来管理。 为了解决这个问题,事件循环应运而生,它可以…...
ubuntu22.04编译安装Opencv4.8.0+Opencv-contrib4.8.0教程
本章教程,主要记录在Ubuntu22.04版本系统上编译安装安装Opencv4.8.0+Opencv-contrib4.8.0的具体过程。 一、下载opencv和opencv-contrib包 wget https://github.com/opencv/opencv/archive/refs/tags/4.8.0.zip wget https://github.com/opencv/opencv_contrib/archive/refs/…...
概率论得学习和整理27:关于离散的数组 随机变量数组的均值,方差的求法3种公式,思考和细节。
目录 1 例子1:最典型的,最简单的数组的均值,方差的求法 2 例子1的问题:例子1只是1个特例,而不是普遍情况。 2.1 例子1各种默认假设,导致了求均值和方差的特殊性,特别简单。 2.2 我觉得 加权…...
【排序算法】——插入排序
目录 前言 简介 基本思想 1.直接插入排序 2.希尔排序 代码实现 1.直接插入排序 2.希尔排序 总结 1.时空复杂度 2.稳定性 尾声 前言 排序(Sorting) 是计算机程序设计中的一种重要操作,它的功能是将一个数据元素(或记录)的任意序列&…...
MySQL的并发控制与MVCC机制深度解析
目录 1. MySQL中的并发问题2. 数据库的隔离级别3. MVCC(多版本并发控制)机制3.1 MVCC的实现原理3.2 Read View详解3.3 当前读与快照读 4. MVCC在不同隔离级别下的工作方式5. MVCC解决幻读问题6. MVCC的优缺点优点:缺点: 7. MVCC在…...
Qt编译MySQL数据库驱动
目录 Qt编译MySQL数据库驱动 测试程序 Qt编译MySQL数据库驱动 (1)先找到MySQL安装路径以及Qt安装路径 C:\Program Files\MySQL\MySQL Server 8.0 D:\qt\5.12.12 (2)在D:\qt\5.12.12\Src\qtbase\src\plugins\sqldrivers\mysql下…...
uniapp地址类 方法
关于点击没反应 manifest.json 检查是否添加了对应的权限 /* 小程序特有相关 */"mp-weixin" : {"appid" : "wxc481f10754f1d9df","setting" : {"urlCheck" : false,"es6" : true,"postcss" : true,&qu…...
使用Idea自带的git功能进行分支合并
文章目录 1.背景描述2.分支切换3.分支合并的具体操作4.将在local环境下,从dev合并到qas分支上的代码,推送到远端 1.背景描述 目前在开发的当前项目有四个分支,master(主分支)、pre(预生产分支)、qas(测试分支)、dev(开发分支); …...
酷盾安全:Edge SCDN边缘安全内容分发网络
在当今数字化迅猛发展的时代,互联网内容分发的高效与安全成为了企业不可忽视的重要课题。为了满足这一需求,酷盾安全推出了创新的Edge Secure Content Delivery Network(Edge Scdn)解决方案,它不仅融合了分布式DDoS防护…...
H5 中 van-popup 的使用以及题目的切换
H5 中 van-popup 的使用以及题目的切换 在移动端开发中,弹窗组件是一个常见的需求。vant 是一个轻量、可靠的移动端 Vue 组件库,其中的 van-popup 组件可以方便地实现弹窗效果。本文将介绍如何使用 van-popup 实现题目详情的弹窗展示,并实现…...
Liinux下VMware Workstation Pro的安装,建议安装最新版本17.61
建议安装最新版本17.61,否则可能有兼容性问题 下载VMware Workstation安装软件 从官网网站下载 https://support.broadcom.com/group/ecx/productdownloads?subfamilyVMwareWorkstationPro 选择所需版本 现在最新版本是17.61,否则可能有兼容性问题…...
WebRTC服务质量(05)- 重传机制(02) NACK判断丢包
WebRTC服务质量(01)- Qos概述 WebRTC服务质量(02)- RTP协议 WebRTC服务质量(03)- RTCP协议 WebRTC服务质量(04)- 重传机制(01) RTX NACK概述 WebRTC服务质量(…...
修改ubuntu apt 源及apt 使用
视频教程:修改ubuntu apt 源和apt 使用方法_哔哩哔哩_bilibili 1 修改apt源 1.1 获取阿里云ubuntu apt 源 https://developer.aliyun.com/mirror/ubuntu?spma2c6h.13651102.0.0.3e221b11mqqLBC 1.2 修改apt 源 vim /etc/apt/sources.list deb https://mirrors.aliyun.com/ub…...
深入解析 `DataFrame.groupby` 和 `agg` 的用法及使用场景
深入解析 DataFrame.groupby 和 agg 的用法及使用场景 1. groupby 的基本用法语法:示例: 2. agg 的基本用法语法:示例: 3. first、sum、lambda 的用法3.1 first示例: 3.2 sum示例: 3.3 lambda示例ÿ…...
MySQL 的锁
MySQL有哪些锁?各种锁的作用与使用场景全局锁表级锁表锁元素锁意向锁AUTO-INC 锁 行级锁记录锁间隙锁临键锁 其他共享锁排他锁乐观锁悲观锁 MySQL有哪些锁? 全局锁表级锁 a. 表锁 b. 元素锁 c. 意向锁 d. AUTO-INC 锁行级锁 a. 记录锁 b. 间隙锁 c. 临键锁 各种锁的作用与使…...
二、使用langchain搭建RAG:金融问答机器人--数据清洗和切片
选择金融领域的专业文档作为源文件 这里选择 《博金大模型挑战赛-金融千问14b数据集》,这个数据集包含若干公司的年报,我们将利用这个年报搭建金融问答机器人。 具体下载地址 这里 git clone https://www.modelscope.cn/datasets/BJQW14B/bs_challenge_…...
【Linux】-- linux 配置用户免密登录本机
比如我们要配置用户 app_tom 免密登录本机(SSH 登录自己机器时无需输入密码),你可以按照以下步骤操作: 步骤 1:切换到 app_tom 用户 首先,确保你已经以 app_tom 用户登录,或者切换到该用户&…...
测试微信模版消息推送
进入“开发接口管理”--“公众平台测试账号”,无需申请公众账号、可在测试账号中体验并测试微信公众平台所有高级接口。 获取access_token: 自定义模版消息: 关注测试号:扫二维码关注测试号。 发送模版消息: import requests da…...
零门槛NAS搭建:WinNAS如何让普通电脑秒变私有云?
一、核心优势:专为Windows用户设计的极简NAS WinNAS由深圳耘想存储科技开发,是一款收费低廉但功能全面的Windows NAS工具,主打“无学习成本部署” 。与其他NAS软件相比,其优势在于: 无需硬件改造:将任意W…...
基于ASP.NET+ SQL Server实现(Web)医院信息管理系统
医院信息管理系统 1. 课程设计内容 在 visual studio 2017 平台上,开发一个“医院信息管理系统”Web 程序。 2. 课程设计目的 综合运用 c#.net 知识,在 vs 2017 平台上,进行 ASP.NET 应用程序和简易网站的开发;初步熟悉开发一…...
Swift 协议扩展精进之路:解决 CoreData 托管实体子类的类型不匹配问题(下)
概述 在 Swift 开发语言中,各位秃头小码农们可以充分利用语法本身所带来的便利去劈荆斩棘。我们还可以恣意利用泛型、协议关联类型和协议扩展来进一步简化和优化我们复杂的代码需求。 不过,在涉及到多个子类派生于基类进行多态模拟的场景下,…...
JVM垃圾回收机制全解析
Java虚拟机(JVM)中的垃圾收集器(Garbage Collector,简称GC)是用于自动管理内存的机制。它负责识别和清除不再被程序使用的对象,从而释放内存空间,避免内存泄漏和内存溢出等问题。垃圾收集器在Ja…...
华为OD机试-食堂供餐-二分法
import java.util.Arrays; import java.util.Scanner;public class DemoTest3 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseint a in.nextIn…...
什么是EULA和DPA
文章目录 EULA(End User License Agreement)DPA(Data Protection Agreement)一、定义与背景二、核心内容三、法律效力与责任四、实际应用与意义 EULA(End User License Agreement) 定义: EULA即…...
全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比
目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec? IPsec VPN 5.1 IPsec传输模式(Transport Mode) 5.2 IPsec隧道模式(Tunne…...
基于 TAPD 进行项目管理
起因 自己写了个小工具,仓库用的Github。之前在用markdown进行需求管理,现在随着功能的增加,感觉有点难以管理了,所以用TAPD这个工具进行需求、Bug管理。 操作流程 注册 TAPD,需要提供一个企业名新建一个项目&#…...
LRU 缓存机制详解与实现(Java版) + 力扣解决
📌 LRU 缓存机制详解与实现(Java版) 一、📖 问题背景 在日常开发中,我们经常会使用 缓存(Cache) 来提升性能。但由于内存有限,缓存不可能无限增长,于是需要策略决定&am…...
