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

redis高阶2 高性能

灵魂拷问: redis 为什么块?

  • 纯内存访问
  • 单线程避免上下文切换
  • 渐进式ReHash , 缓存时间戳

Redis 的 key 和 value组织结构:

全局哈希表:

为了实现从键到值的快速访问。 redis 使用了一个哈希表 来保存所有键值对。一个哈希表 其实就是一个数组。数组的每个元素称为一个哈希桶。所以 我们常说 一个哈希表是有多个哈希桶组成。每个哈希桶中保存了键值对数据。

什么是 Redis 渐进式 ReHash

Redis 的 渐进式 ReHash(Progressive ReHashing)是 Redis 在处理哈希表(Hash Table)动态扩容或缩容时采用的一种优化机制。Redis 的哈希表用于存储键值对(如字典、哈希对象等),当哈希表的负载因子(load factor)过高或过低时,需要调整哈希表的大小(即扩容或缩容)。渐进式 ReHash 是一种分步、逐步迁移数据的方式,而不是一次性将所有数据从旧哈希表迁移到新哈希表。

核心机制
  • Redis 维护两个哈希表:ht[0](旧表)和 ht[1](新表)。
  • 当触发 ReHash 时,Redis 创建一个更大的(或更小的)新哈希表 ht[1],并将数据从 ht[0] 逐步迁移到 ht[1]
  • 迁移过程通过 渐进式操作 分摊到每次读写操作中,而不是一次性完成。
  • Redis 使用一个 rehashidx 指针记录当前迁移的桶(bucket)位置,逐步将 ht[0] 的桶迁移到 ht[1]
  • 迁移期间,Redis 会同时查询 ht[0]ht[1],确保数据访问无中断。
  • 迁移完成后,ht[1] 成为新的主哈希表,ht[0] 被清空并释放。
触发条件
  • 扩容:当哈希表的负载因子(键数量/桶数量)超过阈值(默认 1.0,且无后台保存任务;或 5.0,若有后台保存任务)时触发。
  • 缩容:当负载因子过低(如低于 0.1)时触发,以节省内存。

示例场景

假设 Redis 存储了一个包含 100 万键的哈希表:

  • 一次性 ReHash:需要一次性将 100 万键重新计算哈希并迁移,可能导致数百毫秒甚至秒级的阻塞。
  • 渐进式 ReHash:每次操作迁移 1-10 个键,100 万键分摊到多次操作中,可能只需几秒到几十秒完成,单次操作延迟仅增加微秒级。

注意事项
  • ReHash 性能影响:虽然渐进式 ReHash 极大降低了阻塞风险,但在极端高并发场景下,频繁触发 ReHash 可能仍会带来轻微性能波动。
  • 监控 ReHash:通过 INFO MEMORY 命令查看 rehashidx 值,判断是否正在进行 ReHash(非 -1 表示进行中)。
  • 优化策略:合理设置初始哈希表大小或负载因子阈值(通过 hash-max-ziplist-entriesactiverehashing 配置),减少不必要的 ReHash。

缓存时间戳
redis 为什么要缓存系统时间戳?

我们平时使用系统时间戳时,都是直接调用系统函数 直接获取时间戳。redis 不是这样的。因为 每一次获取系统时间戳都 一次系统调用。相对耗时。作为 高性能的 redis是承受不起的。所以它 采用定时任务来获取系统时间 每毫秒更新一次。 需要获取时间戳直接从缓存中拿。

Redis 处理缓存过期主要通过两种机制:
惰性删除:

        惰性删除是指 Redis 只有在访问一个键(比如 GETSET 等操作)时,才会检查该键是否已过期。如果键已过期,Redis 会立即删除该键,并返回空(对客户端来说就像键不存在)

  • 优点
    • 节省 CPU 资源,只有在必要时才执行删除操作。
    • 适合访问频率较高的场景,过期键能被及时清理。
  • 缺点
    • 如果某些键长期不被访问,过期键可能占用内存,直到被定期删除或其他机制清理。
定期删除: 

        Redis 会定期(后台)扫描数据库中的键,随机抽样检查部分键的过期状态,并删除已过期的键

  • 优点
    • 能清理不常访问的过期键,防止内存浪费。
    • 扫描是分批进行的,不会一次性占用过多 CPU。
  • 缺点
    • 随机抽样可能漏掉一些过期键,导致内存清理不彻底。
    • 高负载下,定期删除可能不够及时

redis 6.0 之前为什么一直不使用多线程
  1. 在使用redis 过程中 cpu 一直不是瓶颈。受制于 内存 和 网络
  2. 提高Redis, Pipeline(命令批量处理)  每秒 100万请求
  3. 单线程内部维护简便 高效
redis 6.0 之后为什么引入了多线程
  1. 中小型项目 单线程就够了,
  2. 大的项目中 为了更大的性能。IO 采用了多线程 。(内部执行指令 还是寺单线程)
  3. redis 为什么没有采用 分布式架构 ---(不足)
    1. 服务器数量多   增加维护成本
    2. redis命令 不适用 数据分区
    3. 数据分区 无法解决热点 读/写 的问题
    4. 会出现数据倾斜的问题  重新分配 扩容 缩容
  4.  开启 IO 多线程。同步 IO 读写中的负载

 redis 6.0 有哪些高级功能
redis慢查询:

        许多存储系统如 mysql 提供慢查询日志 帮助开发运维人员定位系统存在的慢操作。所谓慢查询日志就是 系统在命令执行前后计算每条命令的执行时间。当超过预设值时 就将这条命令相关信息(例如 发生事件 耗时 命令的详细信息) 记录下来 redis 也提供类似功能

        redis 客户端执行一条命令 分为如下 4个 部分:

pipeline

        Redis 的 Pipeline事务 都是用于优化多个命令的执行方式,但它们的用途、机制和适用场景有显著差异。以下是详细对比:

  1. pipeline是客户端的行为,对于服务器来说是透明的,可以认为服务器无法区分客户端发送来的查询命令是以普通命令的形式还是以pipeline的形式发送到服务器的;
  2. Pipeline 是一种客户端与服务器的通信优化技术,允许客户端将多个命令打包成一个请求发送到服务器,服务器执行后一次性返回所有结果。
  3. 它主要减少客户端与服务器之间的网络往返(RTT,Round-Trip Time),提高吞吐量
  4. Pipeline 不保证原子性(当),命令之间没有隔离性。当通过pipeline提交的查询命令数据较少,可以被内核缓冲区所容纳时,Redis可以保证这些命令执行的原子性。然而一旦数据呈过大,超过了内核缓冲区的接收大小,那么命令的执行将会被打断,原了性也就无法得到保证。因此pipeline只是一种提升服务器吞吐能力的机制,如果想要命令以事务的方式原了性的被执行,还是需要事务机制,或者使用更高级的脚本功能以及块功能。

事务

        redis 事务 本身是一个弱事务功能。结合 lua 脚本可以 做事务

lua

        Redis 支持通过 Lua 脚本执行复杂的服务器端逻辑,将多个操作封装为单个脚本运行。

优势:

  1. 原子性执行 Lua 脚本在 Redis 中以 原子性 方式执行

  2. 减少网络开销,Lua 脚本将多条 Redis 命令的逻辑集中在服务器端执行

  3. 强大的逻辑处理能力

  4. 高性能

劣势:

  1. 调试困难
  2. 性能开销 虽然 Lua 脚本本身高效,但复杂的脚本(大量循环、计算或数据操作)可能显著增加 Redis 服务器的 CPU 负载
  3. 阻塞 Redis 实例,Redis 是单线程的,Lua 脚本执行期间会独占线程,导致其他命令排队等待

redis 于 memcached 相对有那些优势

redis 和 memcached差别

redismemcached
整体类型

1.内存数据库

2.非关系数据库

1.内存

2.key-value

数据类型

1.string

2.hash

3.list

4.set

5.zset

6.等等

1.string

2.二进制

操作类型

1.单个操作

2.批量操作

3.事务 若事务结合lua

4.每种类型有不同的 curd

1.curd

2.少量命令

附加功能

1.发布、订阅

2.主从 高可用 集群

3.序列化

4.支持lua

1.多线程的支持
网络IO模型

1.执行命令 单线程

2.网络IO操作 多线程

1.多线程, 非阻塞IO模型

持久优化

1.RDB

2.AOF

不支持

redis的过期策略和内存淘汰机制

        Redis 所有数据结构都会设置过期时间,redis会将每个设置了过期时间的 key 放到一个独立的字典中。以后会定时遍历这个字典来删除到期的key, 除了定时遍历以外。它还会使用 惰性策略来删除定期的 key, 所谓惰性策略就是在客户端访问这个 key 的时候, redis 对 key 的过期时间进行检查。如果过期立即删除。定时删除是集中处理的, 惰性删除是零散处理的。

定时扫描策略

Redis 默认会每秒进行10次过期扫描,过期扫描不会遍历过期 字典中所有的 key, 而是采用一种贪心策略:

  1. 从过期字典中随机 20 key
  2. 删除这 20 个key 中已经过期的 key
  3. 如果过期的key 超过 1/4,则重复 步骤1

redis 会持续扫描过期字典,直到过期字典中的 key 变的稀疏,才会停止。这就会导致线上读写请求出现了明显卡顿现象, 导致这种卡顿的另一个原因就是 内存管理器 需要频繁回收。这样也会消耗 CPU. 这就要求开发人员一定要注意过期时间,如果有大批量key 同时过期。要给过期时间加上随机范围,从而避免在同一时间 大批量 key 失效

从库的过期策略:从库不会进行过期扫描。从库对过期的处理是被动的。主库在 key 到期,会在 AOF 文件中添加一条 del 指令, 同步到所有从库中 从库通过这条指令删除过期的key 。 应为指令是异步进行的,所以主库过期的key 的 del 指令 有可能 会没有同步到从库,这就会出现数据不一致的情况。主库不存在 而 从库 存在

惰性删除:

就是在客户端访问这个 key 的时候,redis 对这个 key的过期时间进行检查, 如果 过期了就立即删除。不会给你返回任何东西

总结:

        定期删除可能会导致很多 过期的 key 已经到期了却没有被删除,所有就有了惰性删除,假如你的key 过期了却没有被删除,可以通过 惰性删除立即删除掉; 定期删除的是集中处理,惰性删除是 零散的处理

缓存淘汰算法:

当 redis 内存 超出 物理内存限制的时候, 内存的数据会开始和磁盘产生频繁的交互(swap)交互会让 redis 的性能急剧下降,对于访问频繁的 redis 来说 这样的速度是不能被接受的

Redis 的缓存淘汰算法由 maxmemory-policy 配置项控制,当内存使用量达到 maxmemory 限制时,Redis 会根据指定的淘汰策略移除键

  1. noeviction(不淘汰)
  2. volatile-lru(对设置了过期时间的键使用 LRU)
  3. volatile-lfu(对设置了过期时间的键使用 LFU)
  4. volatile-random(对设置了过期时间的键随机淘汰)
  5. volatile-ttl(优先淘汰剩余存活时间短的键)
  6. allkeys-lru(对所有键使用 LRU)
  7. allkeys-lfu(对所有键使用 LFU)
  8. allkeys-random(对所有键随机淘汰)

算法对比:

算法目标键范围淘汰依据适用场景缺点
noeviction不淘汰数据持久化,内存充足内存满后写入失败
volatile-lru有过期时间的键最近最少使用混合持久化和缓存场景需设置 TTL,近似 LRU 不够精确
volatile-lfu有过期时间的键最不经常使用热点数据频繁访问需设置 TTL,LFU 计数器有开销
volatile-random有过期时间的键随机数据重要性均匀,性能敏感随机性可能误删重要数据
volatile-ttl有过期时间的键剩余存活时间最短临时缓存,明确生命周期需设置 TTL,可能误删高频数据
allkeys-lru所有键最近最少使用纯缓存场景可能淘汰重要数据
allkeys-lfu所有键最不经常使用热点数据优先保留LFU 计数器开销,历史数据可能滞留
allkeys-random所有键随机数据无明显模式,性能敏感随机性可能误删高价值数据
是什么事缓存穿透?如何避免?

以数据库作为兜底方案的数据查询,当有大量请求没有走 redis,直接访问数据库的时候,会把 数据库CPU 打爆 。可以使用 布隆过滤器  判断 用户是否在存在, 若不存在 直接返回

什么是缓存雪崩?如何避免

通常用户通过 redis 作为缓存,数据库作为兜底方案的时候 缓存雪崩发生在一下情况

  1. redis 宕机失效 或者 cpu 跑满, 访问会直接请求到 数据库。数据库会奔溃。 引入集群 redis 高可用
  2. redis 中大量key 集中过期,这种情况下 也会有大量请求到数据库。设置过期时间加上随机值
redis 如何使用分布式锁
redis分布式锁的最简单的实现:

想要实现分布式锁, 必须要求 redis 有 互斥的能力,我么可以使用 setnx 命令,这个命令就是 set if not exists, 即 如果 key 不存在, 才会设置它的值 否则什么也做不了

  1. 防止死锁,加完锁 没有正常释放, 可以添加过期时间
  2. 过期时间不好评估,若执行逻辑期间  锁已经释放了。分布式锁就会失效。
  3. 分布式锁加入 看门(守护线程) ,如果锁要过期了 操作还未完成 那么就会对锁进行 续期,重新设置过期时间

相关文章:

redis高阶2 高性能

灵魂拷问: redis 为什么块? 纯内存访问单线程避免上下文切换渐进式ReHash , 缓存时间戳 Redis 的 key 和 value组织结构: 全局哈希表: 为了实现从键到值的快速访问。 redis 使用了一个哈希表 来保存所有键值对。一个哈希表 其实就…...

go编解码json和http请求

1.json概述 json是日常工作中http请求的最重要的数据格式。对比日常使用python中的json,获得http请求后json.loads和json.dumps函数,go中显的非常麻烦,这里结合json和http请求的总结下,便于积累和学习。这里给出一个json的类型&a…...

洛谷题解 | CF1979C Earning on Bets

目录 题目描述输入格式输出格式输入输出样例 #1输入 #1输出 #1 说明/提示题目思路AC 代码 题目描述 You have been offered to play a game. In this game, there are $ n $ possible outcomes, and for each of them, you must bet a certain integer amount of coins. In th…...

在线文章系统自动化测试报告

目录 1. 项目简介 1.1. 用户登录页面 1.2. 文章列表页面 1.3. 文章详情页面 1.4. 文章编辑与发布页面 2. 测试计划 3. 测试环境/工具/技术栈 4. 编写自动化测试用例​编辑 5. 自动化测试脚本开发 5.1. 项目整体结构 5.2. 配置utils.py 5.2.1. 导入必要的库 5.2.2.…...

C++ 类和对象(3)初始化列表、友元函数、内部类

文章目录 再谈构造函数构造函数体内赋值 初始化列表初始化列表特点 类型转换static成员static特点C11中成员初始化的新用法 友元友元函数友元函数特点 友元类友元类的特点 内部类内部类的特点 再谈构造函数 构造函数体内赋值 当我们创建对象时,编译器会调用构造函…...

CF4C Registration system(哈希实现)

解题思路:因为这道题在每次输入一个字符串后,都需要进行一次查找以判断是否需要按照规则生成新的用户名,故这道题使用STL容器map进行哈希是最合适的(map的查找时间复杂度为log n),在题目描述中,如果用户名已经被注册&a…...

DDI0487--A1.7

Introduction RAS(Reliability,Availability,Serviceability) RAS是衡量一个系统可靠性的三个方面: Reliability——持续提供正确服务的能力。 Availability——正确提供服务的准备状态。 Serviceability——能够进行修改和修复的能力。 R…...

MySQL事务(transaction)(笔记)

事务(Transaction)(必须掌握必须理解) 1.什么是事务? 一个事务是一个完整的业务逻辑单元(一个业务逻辑单元常常涉及到多条DML语句共同执行完成),不可再分(最小的工作单元) 一个事务就是一个业务,完成一个…...

ADS1299模拟前端(AFE)代替芯片——LHE7909

在现代医疗科技的飞速发展中,精确的生物电势测量设备变得越来越重要。领慧立芯推出的LHE7909,是一款专为心电图(ECG)和其他生物电势测量设计的低噪声24位模数转换器(ADC),为医疗设备制造商提供了…...

(三十二)Android开发中AppCompatActivity和Activity之间的详细区别

在 Android 开发中,AppCompatActivity 和 Activity 是两个核心类,用于创建和管理应用程序的用户界面。尽管它们功能上有重叠,但它们之间存在显著的区别。本文将详细讲解 AppCompatActivity 和 Activity 的区别,并结合代码示例和具…...

Neo4j 的 `SET n += $properties` 语法详解

Neo4j 的 SET n $properties 语法详解 SET n $properties 是 Neo4j Cypher 查询语言中的一个非常有用的语法,用于更新节点或关系的属性。让我详细解释它的含义和工作原理: 基本含义 SET:Cypher 中用于修改属性或标签的关键字n&#xff1…...

springboot 框架把 resources下的zip压缩包, springboot 项目启动后解压到项目根目录工具类

最近有一个需求,在开发的时候 有一些c的扩展文件 需要放到服务器上,如果手动放上去,给用户部署项目就很麻烦,就根据这个需求,先把项目需要的 扩展文件 打包成zip压缩包 然后项目启动的时候 把resources文件夹下的 zip压…...

指针(5)

1.sizeof 和 strlen 的对比 1.1sizeof sizeof 是操作符,sizeof 计算变量所占内存空间的大小,单位是字节,如果操作数是类型的话,计算的是使用类型创建的变量所占空间的大小。 sizeof 只关注占用内存的空间的大小,不在…...

机器学习day4-Knn+交叉验证api练习(预测facebook签到位置)

数据集:FackebookV : 预测 row id:签⼊事件的id x y:坐标 accuracy: 准确度,定位精度 time: 时间戳 place_id: 签到的位置,需要预测的内容 具体步骤: # 1.获取数据集 # 2.基本数据处理 # 2.1 缩⼩数据…...

AI工具 Trae 创建java项目和配置运行环境完整示例

以下是使用字节跳动 Trae IDE 创建 Java 项目并配置运行环境的完整示例,结合其核心功能和搜索结果的实践案例整理: 一、环境准备与安装 下载与安装 访问 Trae 官网 下载 Windows 或 macOS 版本客户端,安装完成后选择中文界面和主题(推荐 Dark/DeepBlue 主题)。首次启动时支…...

【论文_序列转换模型架构_20230802v7】Attention Is All You Need 【Transformer】

https://arxiv.org/abs/1706.03762 20170612 v1 代码实现_notebook ∗Equal contribution. Listing order is random. Jakob proposed replacing RNNs with self-attention and started the effort to evaluate this idea. 提出用 self-attention 替代 RNNs,并开始…...

清晰易懂的跨域请求知识——拿捏

1. 什么是跨域请求? 简单来说:当你的 前端网页(例如 http://frontend.com)通过 JavaScript 调用 后端接口(例如 http://backend.com/api)时,如果两者的 域名、端口、协议 中任意一项不同&#…...

前端漏洞不扫描理由

漏洞类型豁免理由基于DOM的XSS1.已实施安全加固&#xff1a; 使用encodeURIComponent对URL参数进行编码 对特殊字符(<>“”&)进行HTML实体转义 使用template literal替代字符串拼接 移除了直接操作DOM的不安全写法,二次扫描仍然扫描出来&#xff0c;且修改建议模糊 2…...

论文阅读的三个步骤

论文阅读的三个步骤 方法说明链接&#xff1a;https://www.academia.edu/4907403/How_to_Read_a_Paper 方法框架如下...

Javascript 中的继承?如何实现继承?

一、继承的本质 继承&#xff1a;子对象可以自动拥有父对象的属性和方法&#xff0c;就像孩子继承父母的基因。JavaScript 的继承&#xff1a;通过原型链实现&#xff08;原型和原型链是底层核心&#xff09;。 二、4 种常见继承方式 1. 原型链继承&#xff08;传家宝模式&am…...

深入理解 Linux 权限管理:从基础到进阶

在 Linux 系统中&#xff0c;权限管理是保障系统安全与资源合理分配的核心机制。无论是服务器管理员&#xff0c;还是日常使用 Linux 的开发者&#xff0c;深入掌握权限管理&#xff0c;不仅能避免因权限设置不当导致的数据泄露或系统故障&#xff0c;还能灵活高效地管理各类资…...

第1阶段-前5天-考试题及答案

文章目录 1.1 用户 root 的家目录是哪里?1.2 如何查询 linux 系统 ip 地址?1.3 检查是否可以访问 baidu.com 的命令?1.4 [rootoldboy-c7 /etc/sysconfig/ ]# 说说每一部分含义?1.5 说说 Linux 常见快捷键?(至少 3 个)1.6 Windows 分为 C 盘,D 盘,但是 Linux 一切从 根或/ …...

农村供水智能化远程监控解决方案

农村供水智能化远程监控解决方案 ——基于巨控GRM242Q-4D4I4Q(HE)模块的快速部署方案 一、项目需求与痛点 某西南山区农村供水项目需管理12个分散站点&#xff0c;每个站点包含&#xff1a; 4-20mA模拟量&#xff1a;压力传感器、流量计485通信设备&#xff1a;智能水表&…...

4月29日星期二今日早报简报微语报早读

4月29日星期二&#xff0c;农历四月初二&#xff0c;早报#微语早读。 1、特朗普声称中方领导人打了电话&#xff0c;外交部&#xff1a;近期中美元首没有通话&#xff1b; 2、跳水世界杯总决赛名单出炉&#xff0c;“梦之队”全主力出战&#xff1b; 3、深圳&#xff1a;对年…...

C++日更八股--first

### 内存static和dynamic的区别 static&#xff08;静态&#xff09;​​ 和 ​​dynamic&#xff08;动态&#xff09;<br> static:内存分配在编译的时候确定&#xff0c;大小和生命周期固定&#xff0c;无需运行时分配开销<br> dynamic:内存分配在运行时动态申请…...

Git操作指令

1.基础操作指令: (1).查看修改的状态(git status): 查看修改的状态(暂存区、工作区) (2).添加工作区到暂存区(git add 单个文件名 | 通配符): 添加工作区一个或多个文件的修改到暂存区 (3).提交暂存区到本地仓库(git commit -m "注释内容"): 提交暂存区内容到本…...

Linux——安装NVM

1. 安装命令 官方地址&#xff1a;https://github.com/nvm-sh/nvm curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.3/install.sh | bash2. 安装完成后执行命令 source ~/.bashrc3. 验证 nvm -v...

C++之AVL树

前言 一、AVL的概念 二、AVL树的实现 2.1 AVL的结点结构 2.2 AVL树结点的插入 平衡因子的更新 更新原则&#xff1a; 更新停止的条件&#xff1a; 插入结点以及更新平衡因子的代码实现 旋转 右单旋 左单旋 左右双旋 右左双旋 2.3 AVL树的查找 2.4 AVL树的平衡性检测 总结 前言 …...

解决STM32H743单片机USB_HOST+FATF操作usb文件

前缀 花了两天的时间整理了一下在使用STM32H743单片机开发usb相关功能时遇到的问题及解决方案&#xff0c;具体为以下2种情况&#xff1a; 1.USB插上单片机后&#xff0c;单片机卡死&#xff0c;导致长时间没有喂狗程序重启&#xff1b; 2.USB正常插拔后&#xff0c;使用FAT…...

数据结构|并查集

Hello &#xff01;朋友们&#xff0c;这是我在学习过程中梳理的笔记&#xff0c;以作以后复习回顾&#xff0c;有时略有潦草&#xff0c;一些话是我用自己的话描述的&#xff0c;可能不够准确&#xff0c;还是感谢大家的阅读&#xff01; 目录 一、并查集Quickfind 二、两种算…...

从拒绝采样到强化学习,大语言模型推理极简新路径!

大语言模型&#xff08;LLMs&#xff09;的推理能力是当下研究热点&#xff0c;强化学习在其复杂推理任务微调中广泛应用。这篇论文深入剖析了相关算法&#xff0c;发现简单的拒绝采样基线方法表现惊人&#xff0c;还提出了新算法。快来一探究竟&#xff0c;看看这些发现如何颠…...

数据中心电能质量问题解决方案及经典案例

行业背景与挑战 数据中心作为互联网的核心枢纽&#xff0c;承载着海量数据存储、计算及通信任务&#xff0c;其内部精密设备&#xff08;如恒温恒湿空调、高精度开关电源等&#xff09;对电能质量极为敏感。微小的电压波动或频率偏差可能导致设备损坏&#xff0c;而瞬态过电压…...

【软考-高级】【信息系统项目管理师】【论文基础】沟通管理过程输入输出及工具技术的使用方法

沟通管理概念 沟通是人们分享信息、思想和情感的过程&#xff0c;沟通的主旨在于互动双方建立彼此相互了解的关系&#xff0c;相互回应&#xff0c;并期待能经由沟通的过程相互接纳并达成共识。 沟通失败是很多IT项目失败的重要原因。 与IT项目成功有关的最重要的四个因素是…...

优化PCB Via Stub系列(1):一次学会利用层叠设计降低Via Stub损耗

开路谐振对SI而言真不是个好东西&#xff0c;这种1/4波长谐振会带来讯号的驻波&#xff0c;进而降低整体通道带宽&#xff0c;导致SI不佳&#xff01; 在高速PCB设计中&#xff0c;最常发生的1/4波长谐振就属过孔的Via stub&#xff0c;这个小小的金属残段可以酿成大大的SI问题…...

STP端口状态变迁及故障拓扑变化

STP端口状态变迁及故障拓扑变化 一、STP 端口状态变迁&#xff08;以标准 STP 为例&#xff0c;共 5 种状态&#xff09; 状态功能描述能否收发数据帧能否收发 BPDU持续时间进入条件Disabled端口物理关闭或被管理员手动关闭&#xff0c;不参与 STP 运算。否否-端口物理 down …...

9.idea中创建springboot项目_jdk1.8

9. idea中创建springboot项目_jdk1.8 步骤 1&#xff1a;打开 IntelliJ IDEA 并创建新项目 启动 IntelliJ IDEA。在欢迎界面&#xff0c;点击 New Project&#xff08;或通过菜单栏 File > New > Project&#xff09;。 步骤 2&#xff1a;选择 Maven 项目类型 在左侧…...

mysql 事务中如果有sql语句出错,会导致自动回滚吗?

CREATE TABLE name ( id int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT ID, name varchar(32) DEFAULT COMMENT 名称, PRIMARY KEY (id) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4; 情况1.执行下列操作&#xff0c; 会发现新开窗口 去查询name表时&#xff0c;整个事务都…...

考OCM证书前需要有OCP证书

报考OCM认证必须持有有效OCP证书。 从知识体系的构建来看&#xff0c;OCP 和 OCM 认证构成了一个循序渐进的学习和考核体系。OCP 认证侧重于考察数据库管理员和开发人员对 Oracle 数据库的基础架构、日常管理、性能优化、备份恢复等核心技能的掌握。通过 OCP 考试&#xff0c;意…...

动态图表 -- eg1

问题&#xff1a; 前端vue&#xff0c;后端springboot&#xff0c;实现动态表格样式&#xff0c;&#xff08;表格List<Student>&#xff0c;Student类有年级&#xff0c;班级&#xff0c;文理科分类&#xff0c;姓名&#xff0c;学号&#xff0c;等属性。先根据年级分类…...

echo 1 > /proc/sys/kernel/nmi_watchdog报错

报错内容 /proc/sys/kernel/nmi_watchdog报错,内容如下: [root@localhost log]# echo 1 > /proc/sys/kernel/nmi_watchdog -bash: echo: write error: Unknown error 524 [root@localhost log]#报错原因 内核未配置 NMI 支持 某些自定义内核可能未编译 NMI Watchdog 驱…...

upload-labs PASS 1-5通关

PASS-01 前端javascript检查 1&#xff0c;第一个提示javascript对上传的文件进行审查 2&#xff0c;javascript工作在前端页面&#xff0c;可以直接删除具有审查功能的代码 3&#xff0c;删除之后再上传一句话木马 上传成功&#xff0c;可以使用蚁剑进行连接&#xff0c;控制网…...

大数据测试集群环境部署

Hadoop大数据集群搭建&#xff08;超详细&#xff09;_hadoop_小飞飞519-GitCode 开源社区 hadoop集群一之虚拟机安装(mac)_hadoop_皮皮虾不皮呀-华为开发者空间 hadoop集群二之hadoop安装_hadoop_皮皮虾不皮呀-华为开发者空间 虚拟机如何查看gateway | PingCode智库...

BUUCTF——Online Tool

BUUCTF——Online Tool 进入靶场 <?phpif (isset($_SERVER[HTTP_X_FORWARDED_FOR])) {$_SERVER[REMOTE_ADDR] $_SERVER[HTTP_X_FORWARDED_FOR]; }if(!isset($_GET[host])) {highlight_file(__FILE__); } else {$host $_GET[host];$host escapeshellarg($host);$host e…...

人工智能数学基础(三):微积分初步

微积分作为数学的重要分支&#xff0c;为人工智能的发展提供了坚实的理论基础。从理解数据的变化趋势到优化模型参数&#xff0c;微积分的应用贯穿其中。本文将深入探讨微积分的核心概念&#xff0c;并结合 Python 编程实例&#xff0c;助力大家轻松掌握这些关键知识点。资源绑…...

【11408学习记录】考研英语语法核心:倒装句考点全解+真题演练

倒装句 英语语法总结——特殊句式倒装全部倒装介词短语形容词副词There be 部分倒装否定副词或词组位于句首only位于句首虚拟条件句省略if 每日一句词汇第一步&#xff1a;找谓语第二步&#xff1a;断句第三步&#xff1a;简化主句定语从句 英语 语法总结——特殊句式 倒装 …...

云数据中心整体规划方案PPT(113页)

1. 引言 概述&#xff1a;云数据中心整体规划方案旨在构建弹性、高效的云计算基础设施&#xff0c;通过软件定义数据中心&#xff08;SDDC&#xff09;实现资源虚拟化与管理自动化。 2. 技术趋势与背景 技术革新&#xff1a;随着云计算、虚拟化及自动化技术的发展&#xff0c…...

java练习4

创建类对象&#xff0c;要求写一个人的类&#xff0c;内容包括&#xff1a; 值&#xff1a;年龄&#xff0c;姓名&#xff0c;家庭身份 函数&#xff1a;年龄&#xff0c;姓名修改&#xff0c;家庭身份修改&#xff0c;生孩子 package a01_第一次练习.a04_创建类对象;public cl…...

在VMware上创建Ubuntu虚拟机,与Xshell和Xftp的连接和使用

一、在VMware创建Ubuntu虚拟机 1、创建新的虚拟机 2、新建虚拟机安装导向 1&#xff09;自定义安装 2&#xff09;稍后安装操作系统 3&#xff09;选择Linux和Ubuntu64 4&#xff09;可自定义虚拟机名称和虚拟机位置 5&#xff09;选择合适的处理器数量 6&#xff09;虚拟机…...

Java常用注解通俗解释

注解就像是给Java代码贴的"便利贴"&#xff0c;它们不会改变代码本身的逻辑&#xff0c;但能给编译器、开发工具或运行时环境提供额外信息。下面我用最通俗的方式解释Java中最常用的注解&#xff1a; 一、基础篇&#xff1a;人人必知的注解 1. Override - "我…...

前端性能优化2:结合HTTPS与最佳实践,全面优化你的网站性能

点亮极速体验&#xff1a;结合HTTPS与最佳实践&#xff0c;为你详解网站性能优化的道与术 在如今这个信息爆炸、用户耐心极其有限的数字时代&#xff0c;网站的性能早已不是一个可选项&#xff0c;而是关乎生存和发展的核心竞争力。一个迟缓的网站&#xff0c;无异于在数字世界…...