警惕!手动调整服务器时间可能引发的系统灾难
警惕!手动调整服务器时间可能引发的系统灾难
- 1. 鉴权机制
- 1.1 基于时间戳的签名验证
- 1.2 基于会话的认证机制(JWT、TOTP)
- 2. 雪花算法生成 ID 的影响
- 2.1 时间戳回拨导致 ID 冲突
- 2.2 ID 顺序被打乱
- 3. 日志记录与审计
- 3.1 日志顺序错误
- 3.2 审计日志不一致
- 4. 数据一致性问题
- 4.1 分布式数据库中的问题
- 4.2 分布式事务中出现问题
- 5. 任务调度与定时任务
- 5.1 定时任务提前或延迟执行
- 5.2 重复执行任务
- 6. 分布式锁与协调问题
- 6.1 分布式锁失效或错误释放
- 总结
手动调整服务器时间可能对系统服务产生多方面的影响,特别是在分布式系统、分布式数据库、任务调度、鉴权机制等领域。以下将更详细地分析几种常见的场景,并通过具体的例子展示调整服务器时间可能带来的后果。
1. 鉴权机制
1.1 基于时间戳的签名验证
很多 API 和服务使用时间戳与签名结合的方式来验证请求的有效性。例如,某些系统使用 HMAC(哈希消息认证码)对 API 请求进行签名,签名通常会包含请求的时间戳。假设一个 API 请求的签名有效期为 5 分钟(如 X-Request-Timestamp
),时间戳被回拨会产生以下问题:
例子:
- 假设用户向服务器发送一个请求,时间戳为
2024-12-13 14:05:00
,服务器的有效期是 5 分钟,意味着请求的有效期直到2024-12-13 14:10:00
。 - 如果服务器的时间被手动回拨到
2024-12-13 13:55:00
,原本有效的请求在服务器看来已经超时。即使请求未超过 5 分钟,它可能会被认为已经过期或无效。
这种情况下,服务器可能会错误地拒绝请求,导致用户体验问题或系统操作失败。
1.2 基于会话的认证机制(JWT、TOTP)
JWT(JSON Web Token) 和 TOTP(基于时间的一次性密码) 等会话认证机制依赖时间戳来验证令牌的有效性。如果服务器时间发生了回拨,可能会导致以下问题:
例子 1:JWT 令牌过期
- 用户登录后,系统生成一个 JWT 令牌,令牌中包含
exp
字段(过期时间),例如令牌的过期时间是2024-12-13 14:30:00
。 - 服务器时间被回拨到
2024-12-13 14:15:00
,这时,JWT 的过期时间被认为已经过期,即使用户的实际登录时间还没有过期,导致请求被拒绝。
例子 2:TOTP 失效
- 假设你使用基于时间的一次性密码(TOTP)进行两步验证。TOTP 基于当前时间生成密码,如果服务器时间和客户端设备上的时间不同步,服务器会验证错误的密码,导致用户认证失败。
2. 雪花算法生成 ID 的影响
雪花算法(Snowflake)在生成唯一 ID 时,使用了时间戳作为 ID 的一部分。时间戳是 ID 生成的一部分,通常以毫秒为单位。服务器时间回拨会导致 ID 冲突、ID 顺序问题,甚至 非唯一性。
2.1 时间戳回拨导致 ID 冲突
例子:
- 假设某个分布式系统中的节点使用雪花算法生成唯一 ID,时间戳部分是当前时间的毫秒级别。如果服务器时间回拨,比如将时间从
2024-12-13 14:30:00
回拨到2024-12-13 14:20:00
,那么在生成 ID 时,回拨后的时间戳与之前生成的 ID 可能会重复,导致生成相同的 ID。 - 假设节点的时间从
2024-12-13 14:30:00
到2024-12-13 14:29:59
,系统会尝试重新生成 ID,这会破坏雪花算法的唯一性,导致两个请求被分配到相同的 ID。
2.2 ID 顺序被打乱
雪花算法的设计假设生成的 ID 是按时间递增的。时间回拨会打乱 ID 的递增顺序,造成 ID 排序错误。
例子:
- 服务器时间是
2024-12-13 14:30:00
,生成的 ID 是1234567890
。 - 时间被回拨到
2024-12-13 14:29:50
,下一次生成的 ID 可能变成1234567889
,此时 ID 不再是递增的。 - 在某些场景下,ID 顺序至关重要(如日志顺序、事务顺序),时间回拨会导致数据一致性和顺序问题。
3. 日志记录与审计
日志通常包括事件的时间戳,时间回拨会影响日志的顺序性,进而影响问题排查和审计。
3.1 日志顺序错误
例子:
- 假设有两个日志事件,分别记录
2024-12-13 14:00:00
和2024-12-13 14:05:00
。当时间被回拨,第二个日志事件的时间戳变成2024-12-13 13:59:59
。 - 这样,日志的时间顺序就被破坏,可能导致分析人员误认为事件的发生顺序错误,从而无法正确理解系统的执行流程。
3.2 审计日志不一致
在一些金融系统或敏感操作的审计中,时间戳的准确性至关重要。手动调整服务器时间可能会导致审计日志不一致,影响后续的合规检查。
例子:
- 在金融系统中,某笔支付交易的时间戳记录为
2024-12-13 14:00:00
,如果服务器时间回拨,这条记录的时间可能变成2024-12-13 13:55:00
。这会导致审计人员对交易的真实性产生疑问,甚至引发合规问题。
4. 数据一致性问题
在分布式系统中,时间戳和服务器时间通常是保证一致性、顺序性和事务性的重要工具。手动调整服务器时间可能会导致 数据丢失、更新丢失 和 分布式事务失败。
4.1 分布式数据库中的问题
分布式数据库,如 Cassandra 和 MongoDB,依赖时间戳来处理数据的版本控制和同步。服务器时间回拨可能导致以下问题:
- 数据过期:许多分布式数据库使用 TTL(Time-To-Live) 来自动删除过期的数据。如果时间回拨,原本未过期的数据可能会被误删。
例子:
- 在 MongoDB 中,如果设置了数据过期时间(如设置 TTL 为 1 小时),如果时间回拨,可能会导致 TTL 删除机制错误地删除仍然有效的数据。
4.2 分布式事务中出现问题
许多分布式系统使用 两阶段提交(2PC) 或 三阶段提交(3PC) 来保证事务的一致性。服务器时间的回拨可能会破坏分布式事务的顺序性。
例子:
- 在某些事务处理中,节点A提交事务时,依赖时间戳来确认是否可以提交。如果时间回拨,可能会导致节点B认为事务已经提交,导致数据不一致。
5. 任务调度与定时任务
在一些系统中,定时任务的执行依赖于服务器的时间戳。时间回拨可能导致任务提前或延迟执行,影响系统的正常运行。
5.1 定时任务提前或延迟执行
定时任务通常使用操作系统的时间戳来决定何时执行。时间回拨可能导致任务执行时间不准确。
例子:
- 一个定时任务安排在每天的
2024-12-13 14:00:00
执行。如果时间被手动回拨到2024-12-13 13:50:00
,该任务可能会提前执行,或者被误判为未到执行时间,导致任务错过执行窗口。
5.2 重复执行任务
如果时间回拨,某些调度系统可能会认为任务是新的任务,导致任务重复执行。
例子:
- 一个定时任务在
2024-12-13 14:00:00
执行,回拨时间后,调度系统可能会认为任务仍未完成,导致该任务再次执行,造成重复的处理和数据错误。
6. 分布式锁与协调问题
在分布式系统中,很多操作需要依赖分布式锁来保证资源的独占访问。时间戳回拨可能导致分布式锁状态的混乱,影响多个服务的协调。
6.1 分布式锁失效或错误释放
例子:
- 假设某服务持有一个分布式锁,锁的超时设置为 5 分钟。如果时间回拨,原本应超时释放的锁可能因回拨后的时间问题未能
按时释放,导致其他节点无法获取该锁,进而出现死锁或资源竞争问题。
总结
手动调整服务器时间可能对分布式系统的多个关键部分产生影响,包括但不限于:
- 鉴权机制:签名验证失败、令牌过期等。
- 雪花算法生成 ID:ID 冲突、排序错误等。
- 日志与审计:日志顺序错误、审计不一致等。
- 数据一致性:分布式数据库丢失更新、事务冲突等。
- 任务调度与定时任务:提前或延迟执行任务、重复执行等。
- 分布式锁:锁超时错误、资源竞争等。
为了防止这些问题,建议系统设计时采取以下措施:
- 使用 NTP 或 PTP 来确保时间同步。
- 避免过度依赖系统时间,尤其在分布式 ID 生成、定时任务调度等场景。
- 使用 逻辑时钟 或 分布式时钟协议 来替代物理时钟。
- 加强监控和告警,及时发现系统时间异常并进行调整。
时间同步是系统稳定性和一致性的重要保障,手动调整时间可能会导致许多复杂的问题,需要在设计时提前考虑。
版权声明:
原创博主:牛哄哄的柯南
博主原文链接:https://keafmd.blog.csdn.net/
个人博客链接:https://keafmd.top/
看完如果对你有帮助,感谢点击下面的点赞支持!
[哈哈][抱拳]
加油!
共同努力!
Keafmd
感谢支持牛哄哄的柯南,期待你的三连+关注~~
keep accumulate for my dream【共勉】
↓ ↓ ↓ 合作 交流 ↓ ↓ ↓
相关文章:
警惕!手动调整服务器时间可能引发的系统灾难
警惕!手动调整服务器时间可能引发的系统灾难 1. 鉴权机制1.1 基于时间戳的签名验证1.2 基于会话的认证机制(JWT、TOTP) 2. 雪花算法生成 ID 的影响2.1 时间戳回拨导致 ID 冲突2.2 ID 顺序被打乱 3. 日志记录与审计3.1 日志顺序错误3.2 审计日…...
Python泛型编程:TypeVar和Generic详解 - 写给初学者的指南
Python泛型编程:TypeVar和Generic详解 - 写给初学者的指南 前言1. 为什么需要泛型?2. TypeVar:定义泛型类型变量3. Generic:创建泛型类4. 多个泛型类型变量5. 使用场景小结结语 前言 大家好!今天我们来聊一聊Python中…...
单片机:实现控制LED灯亮灭(附带源码)
使用单片机控制LED灯的亮灭是一个非常基础的嵌入式应用项目,适合初学者学习如何操作GPIO(通用输入输出)端口以及如何控制外设。通过该项目,您可以学习如何通过按键输入、定时器控制或其他触发条件来控制LED灯的开关状态。 1. 项目…...
Dcoker安装nginx,完成反向代理和负载均衡
1. 简介 官网:nginx Nginx是一个高性能的 HTTP 和反向代理 Web 服务器。它的主要功能包括反向代理、负载均衡和动静分离等。正因为 Nginx的这些功能能够为系统带来性能和安全方面的诸多优势,我们在项目部署时需要引入 Nginx组件。接下来我们会逐一向大…...
Java转C之C/C++ 的宏定义和预处理
C/C 宏定义和预处理总结 C/C 的宏定义和预处理器是在编译前执行的一系列文本处理操作,用于包含文件、定义常量、条件编译和控制编译器行为。以下是全面总结,涵盖各种知识点、注意事项以及示例。 表1:C/C 预处理指令和功能 预处理指令功能描…...
【老白学 Java】数字格式化
数字格式化 文章来源:《Head First Java》修炼感悟。 很多时候需要对数字或日期进行格式化操作,来达到某些输出效果。Java 的 Formatter 类提供了很多扩展性功能用于字符串的格式化,只要调用 String 静态方法 format() ,传入参数…...
elementUI修改table样式
在Vue项目中,如果使用的是单文件组件(.vue),并且样式是通过<style>标签定义的,vue2可以使用/deep/,vue3可以使用::v-deep选择器来修改ElementUI组件的样式。 1.修改表头背景色 /deep/.el-table__head…...
Invalid bound statement (not found) 错误解决
出现这个错误提示:Invalid bound statement (not found): com.xxx.small_reservior.dao.WaterRainMapper.getWaterRainByRegion,通常表示 MyBatis 框架无法找到与给定的 getWaterRainByRegion 方法匹配的 SQL 映射语句。这种问题通常发生在以下几种情况中…...
AWD学习(二)
学习参考: AWD攻防学习总结(草稿状态,待陆续补充)_awd攻防赛入门-CSDN博客国赛分区赛awd赛后总结-安心做awd混子-安全客 - 安全资讯平台 记第一次 AWD 赛前准备与赛后小结-腾讯云开发者社区-腾讯云 AWD学习笔记 - DiaosSamas Blog…...
VUE常见问题汇总
目录 1、80端口占用问题 2、sass版本安装问题 3、Missing binding node_modules/node-sass/vendor/darwin-x64-72/binding.node 4、Downloading binary from https://github.com/sass/node-sass/releases/download/v4.14.1/win32-x64-83_binding.node Cannot download &qu…...
H.323音视频协议
概述 H.323是国际电信联盟(ITU)的一个标准协议栈,该协议栈是一个有机的整体,根据功能可以将其分为四类协议,也就是说该协议从系统的总体框架(H.323)、视频编解码(H.263)、…...
第六届地博会开幕,世界酒中国菜美食文化节同期启幕推动地标发展
第六届知交会暨地博会开幕,辽黔欧三地馆亮点纷呈,世界酒中国菜助力地理标志产品发展 第六届知交会暨地博会盛大开幕,多地展馆亮点频出,美食文化节同期启幕推动地标产业发展 12月9日,第六届粤港澳大湾区知识产权交易博…...
如何在安卓系统里面用C++写一个获取摄像头原始数据并保存成.yuv文件
在 Android 系统中使用 C 编写一个获取摄像头原始数据并保存为 .yuv 文件的程序,并且通过 Android.bp 编译,你需要结合 V4L2 和 Android NDK 的特性来实现。以下是详细的步骤和代码示例。 步骤 1: 设置权限 确保你的应用程序有访问摄像头的权限。在 An…...
算法分析与设计之分治算法
文章目录 前言一、分治算法divide and conquer1.1 分治定义1.2 分治法的复杂性分析:递归方程1.2.1 主定理1.2.2 递归树法1.2.3 迭代法 二、典型例题2.1 Mergesort2.2 Counting Inversions2.3 棋盘覆盖2.4 最大和数组2.5 Closest Pair of Points2.6 Karatsuba算法&am…...
AI大模型学习笔记|多目标算法梳理、举例
多目标算法学习内容推荐: 1.通俗易懂讲算法-多目标优化-NSGA-II(附代码讲解)_哔哩哔哩_bilibili 2.多目标优化 (python pyomo pareto 最优)_哔哩哔哩_bilibili 学习笔记: 通过网盘分享的文件:多目标算法学习笔记 链接: https://pan.baidu.com…...
【竞技宝】LOL:JDG官宣yagao离队
北京时间2024年12月13日,在英雄联盟S14全球总决赛结束之后,各大赛区都已经进入了休赛期,目前休赛期也快进入尾声,LPL大部分队伍都开始陆续官宣转会期的动向,其中JDG就在近期正式官宣中单选手yagao离队,而后者大概率将直接选择退役。 近日,JDG战队在官方微博上连续发布阵容变动消…...
iOS runtime总结数据结构,消息传递、转发和应用场景
runtime篇 首先看一下runtiem底层的数据结构 首先从objc_class这么一个结构体(数据结构)开始,objc_class继承于objc_object。 objc_object当中有一个成员变量叫isa_t,那么这个isa_t指针就指向一个objc_class类型的类对象ÿ…...
An error happened while trying to locate the file on the Hub and we cannot f
An error happened while trying to locate the file on the Hub and we cannot find the requested files in the local cache. Please check your connection and try again or make sure your Internet connection is on. 关于上述comfy ui使用control net预处理器的报错问…...
力扣刷题TOP101: 32.BM39 序列化二叉树
目录: 目的 思路 复杂度 记忆秘诀 python代码 目的: 请实现两个函数,分别用来序列化和反序列化二叉树,不对序列化之后的字符串进行约束,但要求能够根据序列化之后的字符串重新构造出一棵与原二叉树相同的树。 思路…...
modern-screenshot: 一个比html2canvas 性能更好的网页截屏工具
在低代码平台等设计工具中,生成缩略图是非常基础的功能,最开始我们使用的是 html2canvas 工具,但是带来的问题是这个工具非常吃性能,生成缩略图时间动辄6s以上,后来发现 modern-screenshot 这个工具性能会好一些&#…...
使用 GD32F470ZGT6,手写 I2C 的实现
我的代码:https://gitee.com/a1422749310/gd32_-official_-code I2C 具体代码位置:https://gitee.com/a1422749310/gd32_-official_-code/blob/master/Hardware/i2c/i2c.c 黑马 - I2C原理 官方 - IIC 协议介绍 个人学习过程中的理解,有错误&…...
力扣 53. 最大子数组和 (动态规划)
给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。 子数组 是数组中的一个连续部分。 示例 1: 输入:nums [-2,1,-3,4,-1,2,1,-5,4] 输出:…...
【牛客小白月赛107 题解】
比赛链接 A. Cidoai的吃饭 题目大意 给定一个正整数 n n n,再给定三个正整数 a , b , c a, \ b, \ c a, b, c。初始时 a n s 0 ans 0 ans0。现在开始循环,每次循环按照从上到下的顺序选择第一条符合的执行(即执行完就再从 1. 1. 1. …...
Web day11 SpringBoot原理
目录 1.配置优先级: 2.Bean的管理: bean的作用域: 第三方bean: 方案一: 方案二: SpringBoot原理: 扫描第三方包: 方案1:ComponentScan 组件扫描 方案2࿱…...
JAVA实战:借助阿里云实现短信发送功能
亲爱的小伙伴们😘,在求知的漫漫旅途中,若你对深度学习的奥秘、JAVA 、PYTHON与SAP 的奇妙世界,亦或是读研论文的撰写攻略有所探寻🧐,那不妨给我一个小小的关注吧🥰。我会精心筹备,在…...
【C语言】库函数常见的陷阱与缺陷(3):内存分配函数
目录 一、malloc 函数 1.1. 功能与常见用法 1.2. 陷阱与缺陷 1.3. 安全使用建议 1.4. 安全替代和代码示例 二、calloc 函数 2.1. 功能与常见用法 2.2. 陷阱与缺陷 2.3. 安全使用建议 2.4. 安全替代和代码示例 三、realloc 函数 3.1. 功能与常见用法 3.2. 陷阱与缺…...
探索 Python 编程调试案例:程序平均值的修复过程
💝💝💝Python 作为一门广泛应用的编程语言,其编程过程并非总是一帆风顺。即使是经验丰富的程序员,也会在代码中遇到各种错误。而调试Python代码过程,也是学习中不可避免的步骤。 今天来看一个简单的案例。…...
奇奇怪怪的错误-Tag和space不兼容
报错信息如下: TabError: inconsistent use of tabs and spaces in indentation make: *** [Makefile:24: train] Error 1不能按Tab,要老老实实按space 不过可以在编辑器里面改,把它们调整成一致的;...
linux网络编程 | c | epoll实现IO多路转接服务器
epoll实现IO多路转接服务器 可通过以下视频学习 06-opell函数实现的多路IO转接_哔哩哔哩_bilibili 通过响应式–多路IO转接实现 文章目录 epoll实现IO多路转接服务器1.思路&功能核心思路 2.代码实现multi_epoll_sever.c运行图 1.思路&功能 **功能:**客…...
16-2.Java 反射之 setAccessible 方法详解(Java 访问检查、反射的访问检查、setAccessible())
一、Java 访问检查 1、基本介绍 访问检查就是查看成员使用是否符合访问权限(public、protected、default、private) 2、演示 Person.java package com.my.entity;public class People {private int privateVar 1;int defaultVar 2;protected int …...
颜色的基本处理
数码相机能够获取彩色图像,但相机的色彩处理是一个非常复杂的过程,是非常重要的。 此过程生产制造商在细节方面都是不公布的,但是基本的概念是相同的。当相机捕捉一个真实场景时,是怎么还原成人眼所看到的图像呢? 1.R…...
提升音频转录准确性:VAD技术的应用与挑战
引言 在音频转录技术飞速发展的今天,我们面临着一个普遍问题:在嘈杂环境中,转录系统常常将非人声误识别为人声,导致转录结果出现错误。例如,在whisper模式下,系统可能会错误地转录出“谢谢大家”。本文将探…...
3D一览通在线协同设计,助力汽车钣金件设计与制造数字化升级
汽车行业已迎来智能化的汹涌浪潮,在此背景下,零部件制造商唯有积极应对,以智能制造为核心驱动力,方能跟上行业发展步调,在激烈的市场竞争中抢占先机。作为整车制造不可或缺的核心组件之一,汽车钣金件亦需紧…...
C 进阶 — 字符函数和字符串函数 ( 二 )
C 进阶 — 字符函数和字符串函数 ( 二 ) 书接上回 C 进阶 — 字符函数和字符串函数 ( 一 ) 1.9 strtok 参考资料 strtok 函数用法详解 char * strtok ( char * str, const char * sep );strtok 是 [C 标准库](https://so.csdn.net/so/search?qC 标准库&spm1001.2101.3…...
【Qualcomm】IPQ5018查看连接终端RSSI、SNR、NF方法
IPQ5018 简介 IPQ5018 是高通(Qualcomm)公司推出的一款面向网络设备的系统级芯片(SoC)。它通常用于路由器、接入点和其他网络设备中,提供高性能的无线网络连接。以下是关于 IPQ5018 的一些关键特性和功能: 关键特性 高性能处理器 IPQ5018 集成了多核 CPU,通常是 ARM …...
Windows下编译安装FreeCAD 1.0.0
本文记录在Windows下编译安装FreeCAD 1.0.0的流程。 零、环境 操作系统Windows 11VS Code1.92.1Git2.34.1Visual StudioVisual Studio Community 2022CMake3.22.1 一、编译安装 1.1 安装依赖 从FreeCAD GitHub下载LibPack-1.0.0-v3.0.0-Release.7z,并解压。 1.2…...
Hadoop其一,介绍本地模式,伪分布模式和全分布搭建
目录 一、Hadoop介绍 二、HDFS的本地模式 三、伪分布模式 四、Hdfs中的shell命令 五、全分布搭建 六、使用Java代码操作HDFS 1、环境准备 2、单元测试(Junit)编辑 一、Hadoop介绍 Hadoop 分为三部分 : Common、HDFS 、Yarn、MapRe…...
蓝桥杯刷题——day3
蓝桥杯刷题——day3 题目一题干题目解析代码 题目二题干题目解析代码 题目一 题干 每张票据有唯一的 ID 号,全年所有票据的 ID 号是连续的,但 ID 的开始数码是随机选定的。因为工作人员疏忽,在录入 ID 号的时候发生了一处错误,造…...
【Leecode】Leecode刷题之路第79天之单词搜索
题目出处 79-单词搜索-题目出处 题目描述 个人解法 思路: todo代码示例:(Java) todo复杂度分析 todo官方解法 79-单词搜索-官方解法 方法1:回溯 思路: 代码示例:(Javaÿ…...
海康威视监控web实时预览解决方案
海康威视摄像头都试rtsp流,web页面无法加载播放,所以就得转换成web页面可以播放的hls、rtmp等数据流来播放。 一:萤石云 使用萤石云平台,把rtsp转化成ezopen协议,然后使用组件UIKit 最佳实践 萤石开放平台API文档 …...
virtualbox 搭建ubuntu
环境:VirtualBox-6.1.32 1、下载安装virtualbox 略 2、新建ubuntu 3、配置ubuntu 选择虚拟盘 4、安装ubuntu 5、安装ssh sudo apt install openssh-server openssh-client 查看ip 6、安装samba sudo apt install samba 查看ssh启动状态 sudo systemctl stat…...
RK3588开发笔记-Buildroot编译Qt5WebEngine-5.15.10
目录 前言 一、Qt5WebEngine简介 二、Qt5WebEngine编译 总结 前言 Rockchip RK3588是一款强大的多核处理器,广泛应用于边缘计算、人工智能、嵌入式系统等领域。为了在RK3588上运行自定义的Linux系统,并使用Qt5WebEngine进行Web内容渲染,Buildroot是一个非常合适的工具。本…...
FedAdam算法:供给方信用,数据质量;更新一致性
FedAdam算法:供给方信用,数据质量;更新一致性 FedAdam算法概述 FedAdam是一种联邦学习(Federated Learning)算法。联邦学习是一种机器学习技术,它允许在多个设备或数据中心(称为客户端)上训练模型,而无需将数据集中到一个中央服务器,从而保护数据隐私。FedAdam主要用于…...
webrtc音频模块(三) windows Core Audio API及声音的播放
在前面介绍了ADM(Audio Device Module),它用于抽象音频设备管理和音频数据采集/播放接口。windows的实现是AudioDeviceWinowCode,它封装了Core Audio APIs实现了对音频设备的操作。 Core Audio APIs windows提供了多种音频操作API,比如最常…...
使用ERA5数据绘制风向玫瑰图的简易流程
使用ERA5数据绘制风向玫瑰图的简易流程 今天需要做一个2017年-2023年的平均风向的统计,做一个风向玫瑰图,想到的还是高分辨率的ERA5land的数据(0.1分辨率,逐小时分辨率,1950年至今)。 风向,我分为了16个&…...
深度优先遍历(DFS)
深度优先遍历(DFS) 1. 计算布尔二叉树的值2. 求根节点到叶节点数字之和3.二叉树剪枝4.验证二叉搜索树5. 二叉搜索树中第 K 小的元素6. 二叉树的所有路径 深度优先遍历(DFS,全称为Depth First Traversal),是…...
国科大网络协议安全期末
完整资料仓库地址:https://gitee.com/etsuyou/UCAS-Network-Protocol-Security 部分题目: 六 论述题10*220 试讨论IPv6解决了IPv4的哪些“痛点”,以及IPv6存在的安全问题试比较IPsec与SSL的安全性 五 简答题5*315 简述MAC欺骗和ARP欺骗的…...
开源密码管理器 Bitwarden 一站式管理所有密码以及 2FA
本文首发于只抄博客,欢迎点击原文链接了解更多内容。 前言 随着注册的平台越来越多,管理密码的难度也越来越高了。要是把密码都设置成一样的,担心哪天某个平台泄露被一锅端,而每个平台单独一个密码又不太好记,这时候就…...
Python爬虫之Selenium的应用
【1】Selenium基础介绍 1.什么是selenium? (1)Selenium是一个用于Web应用程序测试的工具。 (2)Selenium 测试直接运行在浏览器中,就像真正的用户在操作一样。 (3)支持通过各种driv…...
华为无线AC、AP模式与上线解析(Huawei Wireless AC, AP Mode and Online Analysis)
华为无线AC、AP模式与上线解析 为了实现fit 瘦AP的集中式管理,我们需要统一把局域网内的所有AP上线到AC,由AC做集中式管理部署。这里我们需要理解CAPWAP协议,该协议分为两种报文:1、管理报文 2、数据报文。管理报文实际在抓包过程…...