ZooKeeper 常见问题与核心机制解析
Zookeeper集群本身不直接支持动态添加机器。在Zookeeper中,集群的配置是在启动时静态定义的,并且集群中的每个成员都需要知道其他所有成员。当你想要增加一个新的Zookeeper服务器到现有的集群中时,你需要更新所有现有服务器的配置文件(通常是zoo.cfg
文件),以包含新的服务器信息。
然而,在实践中,有一种方式可以间接实现“动态”添加新机器:
-
停机维护:最直接的方法是暂时关闭整个Zookeeper集群,更新所有节点的配置文件,然后重启集群。这显然不是真正意义上的动态添加,因为它涉及到服务中断。
-
滚动重启:一种更平滑的方法是通过滚动重启来添加新的Zookeeper实例。首先,你将新的Zookeeper实例加入到集群配置中,但并不立即启动它。然后,你可以依次重启每一个现有的Zookeeper实例,在它们重启后会读取更新后的配置文件并识别新的成员。最后,启动新的Zookeeper实例。这种方法可以在不影响服务的情况下完成,但需要注意的是,这样做可能会导致短暂的性能下降或可用性降低,特别是在高负载情况下。
-
使用自动化工具:一些高级用户可能会选择使用自动化配置管理工具(如Ansible、Puppet、Chef等)来管理和同步配置文件变更,从而使得添加新机器的过程更加顺畅和自动化。
-
版本差异:请注意,不同版本的Zookeeper可能有不同的特性和改进。例如,从3.5.x版本开始,Zookeeper引入了动态重新配置的功能,允许在运行时更改集群成员,而无需重启服务。要利用这一功能,您需要确保使用的Zookeeper版本支持此特性,并了解如何正确地应用它。
综上所述,虽然传统意义上Zookeeper集群不支持真正的动态添加机器,但是通过上述方法可以在一定程度上实现类似的效果。如果你正在使用一个较新的Zookeeper版本,那么你应该查阅相关文档来了解是否可以直接使用内置的动态重新配置功能。
2.描述一下 ZAB 协议
ZAB(ZooKeeper Atomic Broadcast)协议是Apache ZooKeeper服务的核心,它是一个针对分布式系统的原子广播协议。ZAB协议的设计目标是确保所有参与的服务器能够对一系列更新达成一致,并且即使在某些服务器出现故障的情况下也能保证数据的一致性和可用性。
ZAB协议主要包括两个核心方面:
-
崩溃恢复 (Crash Recovery)
当集群中的领导者(Leader)崩溃时,ZAB需要选举出一个新的领导者。在新的领导者被选出来之后,它必须确保所有的Follower都跟上自己的状态,即同步最新的事务日志。这个过程确保了即使是新选出来的领导者也能够提供一个准确的状态视图给客户端。为了实现这一点,ZAB使用了一个称为“epoch”的概念来区分不同的领导任期,并确保每个领导者都有唯一的标识。 -
消息广播 (Message Broadcasting)
一旦有一个稳定的领导者,ZAB就进入了广播阶段。在这个阶段,领导者会接收到来自客户端的写入请求,并将这些请求打包成提案(proposals)。然后,它会把这些提案发送给所有的跟随者(Followers)。跟随者们接收到提案后会进行处理并回应给领导者。当领导者收到了来自超过半数以上的跟随者的确认回复后,就可以认为这条提案已经被提交(committed),并且可以向客户端返回成功的结果。同时,领导者也会通知所有的跟随者应用这些已提交的提案。
ZAB协议的工作流程可以分为以下几步:
- Leader Election(领导者选举):当没有明确的领导者或者现有领导者失效时,ZooKeeper节点之间会发起一次新的领导者选举。选举算法通常基于Paxos或类似的共识算法。
- Proposal Broadcasting(提案广播):一旦确定了领导者,它就会开始接受来自客户端的更新请求,并为每个请求创建一个提案。
- Transaction Logging(事务日志记录):领导者和跟随者都会将所有提案记录到持久存储中,以防止数据丢失。
- Proposal Acknowledgment(提案确认):跟随者处理完提案后会向领导者发送确认信息。
- Commit Processing(提交处理):当领导者收到足够多的确认信息后,它会标记该提案为已提交,并通知所有跟随者应用这一变更。
- State Synchronization(状态同步):在领导者选举期间以及日常操作中,领导者负责确保所有跟随者的数据状态与自己保持一致。
ZAB协议还引入了版本控制机制来解决网络分区问题,以及通过快照和日志截断等技术来优化性能和磁盘空间利用率。总之,ZAB协议使得ZooKeeper能够在分布式环境中可靠地管理
配置信息、提供协调服务,并确保高可用性和一致性。
3.ZAB 和 Paxos算法的联系与区别?
ZAB(ZooKeeper Atomic Broadcast)和Paxos都是用于解决分布式系统中一致性问题的协议,但它们在设计目标、应用场景以及具体实现上存在差异。下面将详细解释这两者的联系与区别。
联系
-
共识机制:两者都使用了一种形式的共识算法来确保分布式系统中的多个节点能够就某些值达成一致。这种一致性是通过一系列的投票或提案过程来实现的,其中大多数节点需要同意一个特定的值或操作才能被认为是最终确定的。
-
故障容忍:ZAB和Paxos都旨在提供对网络分区和节点故障的容错能力。这意味着即使在部分节点失效的情况下,系统仍然可以继续运行并保持数据的一致性。
-
原子广播:虽然ZAB直接以其为名,但Paxos也可以用来构建一个原子广播系统,即所有正确执行的节点最终会按照相同的顺序处理相同的消息集。
区别
-
设计目的:
- Paxos 是一个通用的共识算法,主要关注于如何在一个可能存在故障的分布式环境中达成关于单一值的共识。它被广泛研究,并且许多其他共识算法都是基于Paxos的改进版本。
- ZAB 专门为ZooKeeper设计,侧重于分布式协调服务的需求。它不仅解决了共识问题,还实现了有序的日志复制和崩溃恢复功能,以支持高可用性和一致性。
-
消息传递模式:
- Paxos 主要是一个多轮次的提案和接受过程,通常涉及到提议者(Proposer)、接受者(Acceptor)和学习者(Learner)之间的交互。
- ZAB 则更像是一种领导者-跟随者模型,其中有一个明确的领导者负责收集客户端请求并将这些请求作为提案分发给跟随者节点。
-
性能优化:
- Paxos 的原始形式可能不是最高效的,因为它可能会经历多次通信轮次才能达成共识。
- ZAB 在设计时考虑了性能因素,例如它允许领导者一次性提交多个提案(batching),并且引入了快照机制来减少日志大小。
-
实施复杂度:
- Paxos 理论上较为复杂,实现起来也具有挑战性,特别是对于初学者来说。因此,很多实际应用中使用的都是Paxos的变体或者简化版。
- ZAB 相对更加具体化,因为它紧密耦合于ZooKeeper的服务需求,所以其实现更为直观,但也限制了其适用范围。
-
领导选举:
- Paxos 并没有内置的领导选举机制;它可以与其他选举算法结合使用。
- ZAB 明确地包含了一个领导选举的过程,这是其正常操作的一部分。
总结来说,尽管ZAB和Paxos都在解决分布式系统的一致性问题,但它们各自有着不同的侧重点和应用场景。ZAB更适合于那些需要快速响应、高效日志复制以及强一致性的分布式协调服务,如ZooKeeper。而Paxos则作为一个基础理论框架,为更多类型的分布式系统提供了解决方案的基础。
4.ZooKeeper 宕机如何处理?
当ZooKeeper集群中的节点宕机时,处理方式取决于具体是哪个节点宕机以及集群的配置。以下是针对不同情况下的处理建议:
1. 单个Follower节点宕机
- 自动恢复:如果只是单个跟随者(Follower)节点宕机,并且集群中还有超过半数的节点在运行,那么整个集群仍然可以继续正常工作,因为ZooKeeper设计为能够容忍一定数量的节点故障。
- 节点重启:一旦宕机的节点重新启动并加入集群,它会自动与领导者同步数据。这个过程称为“快照恢复”,它包括从领导者那里获取最新的事务日志和状态快照。
2. Leader节点宕机
- 领导选举:如果领导者(Leader)节点宕机,剩余的跟随者节点将触发一次新的领导选举。选举过程中,所有存活的节点会尝试成为新的领导者,最终通过投票选出一个新的领导者来接管服务。
- 数据同步:新当选的领导者需要确保所有跟随者都跟上它的状态,即完成状态同步。这通常涉及到传输最新的事务日志和状态快照给跟随者。
3. 多个节点宕机
- 多数原则:如果同时有多个节点宕机,但剩下的节点仍构成集群的大多数(例如,在一个5节点的集群中有3个或更多节点存活),那么集群还可以继续提供服务。
- 无法形成多数:然而,如果宕机的节点数量超过了集群总数的一半,那么集群将不能达成共识,也无法接受新的写入请求。此时,必须尽快修复或替换掉足够多的节点以恢复到多数可用的状态。
4. 集群完全宕机
- 灾难恢复:如果整个集群都宕机了,则需要依赖预先准备好的备份方案来进行灾难恢复。这可能涉及使用最近的数据快照来重建集群的状态。
日常维护建议
为了最小化宕机的影响,建议采取以下预防措施:
- 监控和报警系统:建立完善的监控系统来实时跟踪集群健康状况,并设置适当的报警机制以便及时响应潜在的问题。
- 定期备份:定期对ZooKeeper的数据进行备份,以便在发生严重故障时能够快速恢复。
- 硬件冗余:确保有足够的硬件冗余,比如使用高可用性的服务器、磁盘阵列等。
- 网络稳定性:保证良好的网络连接质量,减少因网络问题导致的分区现象。
- 更新和补丁:保持软件版本的更新,应用官方发布的安全补丁和性能改进。
总之,对于ZooKeeper集群来说,关键是要维持一个健康的多数节点在线,并且具备有效的故障检测和自动恢复能力。同时,做好日常的运维管理和应急准备也是至关重要的。
5.描述一下 ZooKeeper 的 session 管理的思想?
ZooKeeper 的 session 管理机制是其核心特性之一,它为客户端提供了一种可靠的方式与 ZooKeeper 集群进行交互。Session(会话)是一个客户端到服务器的连接,它具有一定的超时时间,并且在整个会话期间保持唯一性。以下是 ZooKeeper Session 管理的主要思想:
1. 会话建立
当客户端首次连接到 ZooKeeper 集群时,它会创建一个新的会话。每个会话都有一个唯一的会话 ID (session ID) 和一个关联的超时时间(session timeout)。这个超时时间是在客户端初始化连接时指定的,它定义了在没有收到心跳的情况下,服务端认为该会话失效的时间长度。
2. 心跳机制
为了维持会话的有效性,客户端需要定期向 ZooKeeper 发送心跳消息。这些心跳消息可以是任何类型的请求,包括空操作(noop)。只要在超时时间内至少有一次成功的通信,会话就被认为是有效的。如果超过了超时时间而没有接收到心跳,ZooKeeper 将认为该会话已经过期,并可能清理与之相关的临时节点(ephemeral nodes)。
3. 会话重连
如果客户端与 ZooKeeper 之间的网络连接断开,但未超过会话超时时间,客户端可以尝试重新连接到集群中的任意一个服务器,并恢复原有的会话。这种情况下,新的连接将使用相同的 session ID 和状态信息。这被称为“会话迁移”。
4. 会话过期
一旦会话超时时间到达且没有收到心跳,ZooKeeper 将标记该会话为过期。此时,所有由该会话创建的临时节点都将被删除,因为它们的存在依赖于活跃的会话。对于分布式应用程序来说,这通常意味着某些锁或协调结构不再有效。
5. 临时节点(Ephemeral Nodes)
临时节点是与特定会话绑定的 ZNode(ZooKeeper Node)。当创建这些节点的会话结束(无论是正常关闭还是非正常终止),这些节点将自动被删除。这使得临时节点非常适合用于实现分布式锁或其他需要短暂存在的资源管理。
6. Watcher 通知
Watchers 是一种一次性触发的通知机制,允许客户端监听特定事件的变化,如节点数据更新、子节点增删等。当相关事件发生时,ZooKeeper 会发送 watcher 通知给相应的客户端。然而,watcher 只会在第一次符合条件时触发一次,之后就需要重新注册。
7. 会话状态
ZooKeeper 客户端 API 提供了多种方式来监控会话的状态变化,比如通过回调函数或者轮询检查。这有助于应用程序及时响应会话状态的改变,例如在网络故障后采取适当的行动。
总之,ZooKeeper 的 session 管理确保了即使在网络不稳定的情况下也能维持可靠的分布式协调服务。通过合理的配置和使用,开发者可以让自己的应用更好地适应复杂的网络环境,同时利用 ZooKeeper 强大的一致性保证。
相关文章:
ZooKeeper 常见问题与核心机制解析
Zookeeper集群本身不直接支持动态添加机器。在Zookeeper中,集群的配置是在启动时静态定义的,并且集群中的每个成员都需要知道其他所有成员。当你想要增加一个新的Zookeeper服务器到现有的集群中时,你需要更新所有现有服务器的配置文件&#x…...
期权懂|场内期权合约行权价格是如何设定制度的?
锦鲤三三每日分享期权知识,帮助期权新手及时有效地掌握即市趋势与新资讯! 场内期权合约行权价格是如何设定制度的? 场内期权合约的行权价格是期权合约中的一个关键要素,它决定了期权买方在期权到期日或之前买入(对于…...
处理 SQL Server 中的表锁问题
在 SQL Server 中,表锁是一个常见的问题,尤其是在并发访问和数据更新频繁的环境中。表锁会导致查询性能下降,甚至导致死锁和系统停滞。本文将详细介绍如何识别、分析和解决 SQL Server 中的表锁问题。 什么是表锁? 表锁是 SQL S…...
【Mysql进阶知识】Mysql 程序的介绍、选项在命令行配置文件的使用、选项在配置文件中的语法
目录 一、程序介绍 二、mysqld--mysql服务器介绍 三、mysql - MySQL 命令行客户端 3.1 客户端介绍 3.2 mysql 客户端选项 指定选项的方式 mysql 客户端命令常用选项 在命令行中使用选项 选项(配置)文件 使用方法 选项文件位置及加载顺序 选项文件语法 使用举例&am…...
代码随想录算法训练营总结
本人是一名普普通通的计算机专业的毕业生,在大学学数据结构和算法就感觉非常难,到毕业也没刷过几道题,所幸后来入职的公司也没有考察算法相关的内容。到现在已经工作两年多了,看到过许多聊面试聊算法的文章,也接触到一…...
二进制/源码编译安装mysql 8.0
二进制方式: 1.下载或上传安装包至设备: 2.创建组与用户: [rootopenEuler-1 ~]# groupadd mysql [rootopenEuler-1 ~]# useradd -r -g mysql -s /bin/false mysql 3.解压安装包: tar xf mysql-8.0.36-linux-glibc2.12-x86_64.ta…...
AI 编程工具—Cursor进阶使用 阅读开源项目
AI 编程工具—Cursor进阶使用 阅读开源项目 首先我们打开一个最近很火的项目browser-use ,直接从github 上克隆即可 索引整个代码库 这里我们使用@Codebase 这个选项会索引这个代码库,然后我们再选上这个项目的README.md 文件开始提问 @Codebase @README.md 这个项目是用…...
掌握C语言内存布局:数据存储的智慧之旅
大家好,这里是小编的博客频道 小编的博客:就爱学编程 很高兴在CSDN这个大家庭与大家相识,希望能在这里与大家共同进步,共同收获更好的自己!!! 目录 引言正文一、数据类型介绍1.内置类型2.自定义…...
一键化配置java环境
一键化配置java环境 下载javaPathConfig 打开,将java的jdk路径写进去 例如我的路径就是 C:\Program Files\Java\jdk-1.8点击确认设置即可...
【I/O编程】UNIX文件基础
IO编程的本质是通过 API 操作 文件。 什么是 IO I - Input 输入O - Output 输出 这里的输入和输出都是站在应用(运行中的程序)的角度。外部特指文件。 这里的文件是泛指,并不是只表示存在存盘中的常规文件。还有设备、套接字、管道、链接…...
leetcode 面试经典 150 题:汇总区间
链接汇总区间题序号228题型数组解法一次遍历法难度简单熟练度✅✅✅ 题目 给定一个 无重复元素 的 有序 整数数组 nums 。 返回 恰好覆盖数组中所有数字 的 最小有序 区间范围列表 。也就是说,nums 的每个元素都恰好被某个区间范围所覆盖,并且不存在属…...
联想Android面试题及参考答案
请介绍一下 Android 的架构,并谈谈对 Linux 的了解。 Android 架构主要分为四层,从下往上依次是 Linux 内核层、系统运行库层、应用框架层和应用层。 Linux 内核层是 Android 系统的基础。它提供了底层的硬件驱动程序,包括显示驱动、摄像头驱动、音频驱动等多种硬件设备的驱…...
redux 结合 @reduxjs/toolkit 的使用
1,使用步骤 使用React Toolkit 创建 counterStore(store目录下) --> 为React注入store(src下面的index) --> React组件使用store中的数据(组件) 2,例如下面有一个简单加减的…...
【鱼皮大佬API开放平台项目】Spring Cloud Gateway HTTPS 配置问题解决方案总结
问题背景 项目架构为前后端分离的微服务架构: 前端部署在 8000 端口API 网关部署在 9000 端口后端服务包括: api-backend (9001端口)api-interface (9002端口) 初始状态: 前端已配置 HTTPS(端口 8000)后端服务未配…...
PHP反序列化
一、PHP面向对象的基础知识 基本概念 1、面向过程VS面向对象 以做饭为例,面向过程是自己从原材料到成品全部自己做,面向对象相当于去饭店,点菜,等待结果(上菜)。 2、类的定义 类是定义了一件事物的抽象…...
6、原来可以这样理解C语言_函数(7/8)嵌套调⽤和链式访问
目录 七、嵌套调⽤和链式访问 七、(1)、嵌套调⽤ 七、(2)、链式访问 七、嵌套调⽤和链式访问 七、(1)、嵌套调⽤ 嵌套调⽤就是函数之间的互相调⽤,每个函数就⾏⼀个乐⾼零件,正是因…...
安装 Jenkins 后无法访问用户名或密码且忘记这些凭证怎么办?
Jenkins 是一款功能强大的自动化服务器,在持续集成与交付(CI/CD)领域应用广泛。不过,用户在使用过程中,尤其是首次接触该系统或系统重启后,常常会遇到登录方面的问题。要是 Jenkins 突然要求输入用户名和密…...
VIVADO FIFO (同步和异步) IP 核详细使用配置步骤
VIVADO FIFO (同步和异步) IP 核详细使用配置步骤 目录 前言 一、同步FIFO的使用 1、配置 2、仿真 二、异步FIFO的使用 1、配置 2、仿真 前言 在系统设计中,利用FIFO(first in first out)进行数据处理是再普遍不过的应用了,…...
49_Lua调试
Lua提供了debug库用于创建自定义调试器,尽管Lua本身没有内置的调试器1。这个库允许开发者在程序运行时检查和控制执行流程,这对于开发过程中的错误查找和修复非常有用。 1.Debug库概述 debug库提供的函数可以分为两类:自省函数(introspection functions)和钩子函数(hoo…...
SR-BE 笔记和实验
一、笔记: SR不需要mpls,但要配置 mpls lsr-id 不需要MPLS LDP分标签,但仍然需要依赖IGP来分标签 fish—TE问题 SPF:Shortest Path First 最短路径算法 CSPF:Constrained SPF 受约束的SPF算法 BGP-LS: SR…...
实力认证 | 海云安入选《信创安全产品及服务购买决策参考》
近日,国内知名安全调研机构GoUpSec发布了2024年中国网络安全行业《信创安全产品及服务购买决策参考》,报告从产品特点、产品优势、成功案例、安全策略等维度对各厂商信创安全产品及服务进行调研了解。 海云安凭借AI大模型技术在信创安全领域中的创新应用…...
pytorch张量分块投影示例代码
张量的投影操作 背景 张量投影 是深度学习中常见的操作,将输入张量通过线性变换映射到另一个空间。例如: Y=W⋅X+b 其中: X: 输入张量(形状可能为 (B,M,K),即批量维度、序列维度、特征维度)。W: 权重矩阵((K,N),将 K 维投影到 N 维)。b: 偏置向量(可选,(N,))。Y:…...
Elasticsearch二次开发:实现实时定时同步同义词、近义词与停用词
Elasticsearch二次开发:实现实时定时同步同义词、近义词与停用词 引言 Elasticsearch(ES)作为开源搜索引擎的典范,以其强大的全文搜索、结构化搜索以及分析能力,在各个领域得到了广泛应用。在复杂的搜索场景中&#…...
Linux 常用文件查看命令
目录 cat 命令:连接与查看 more/less 命令:分页查看 tail 命令:实时追踪 cat 命令:连接与查看 基本功能:用于连接文件并打印到标准输出设备上,常用于查看文件内容。当有多个文件作为参数时,会…...
智能家居篇 一、Win10 VM虚拟机安装 Home Assistant 手把手教学
智能家居篇 一、Win10 VM虚拟机安装 Home Assistant 手把手教学 文章目录 [智能家居篇]( )一、Win10 VM虚拟机安装 Home Assistant 手把手教学 前言一.下载Vm版本的HomeAsistant安装包 二.打开Vmware选择新建虚拟机1.选择自定义高级2.选择16.x及以上3.选择稍后安装4.根据官网的…...
端口镜像和端口安全
✍作者:柒烨带你飞 💪格言:生活的情况越艰难,我越感到自己更坚强;我这个人走得很慢,但我从不后退。 📜系列专栏:网络安全从菜鸟到飞鸟的逆袭 目录 一,端口镜像二…...
打造更安全的Linux系统:玩转PAM配置文件
在Linux系统中,用户认证是确保系统安全的关键步骤。PAM(可插拔认证模块)为我们提供了一个非常灵活的框架,帮助我们管理各种服务的认证过程。其中,/etc/pam.d目录是PAM配置的核心部分,这里存放了每个服务所需…...
猫咪智商相当于人的几岁?
猫咪,这个神秘又高冷的物种,总能让我们又爱又恨。它们时而撒娇卖萌,时而独立自主,让人琢磨不透。那么,问题来了,猫咪的智商到底相当于人的几岁呢?今天,就来给大家好好揭秘一下喵星人…...
软件设计大致步骤
由于近期在做软件架构设计,这里总结下大致的设计流程 软件设计流程 1 首先要先写系统架构图,将该功能在整个系统的位置以及和大致的内部模块划分 2 然后写内部的结构图,讲内部的各个子系统,模块,组件之间的关系和调用…...
Elasticsearch入门学习
Elasticsearch是什么 Elasticsearch 是一个基于 Apache Lucene 构建的分布式搜索和分析引擎、可扩展的数据存储和矢量数据库。 它针对生产规模工作负载的速度和相关性进行了优化。 使用 Elasticsearch 近乎实时地搜索、索引、存储和分析各种形状和大小的数据。 特点 分布式&a…...
Mac安装配置使用nginx的一系列问题
brew安装nginx https://juejin.cn/post/6986190222241464350 使用brew安装nginx,如下命令所示: brew install nginx 如下图所示: 2.查看nginx的配置信息,如下命令: brew info nginxFrom:xxx 这样的,是n…...
Elasticsearch Python 客户端是否与自由线程 Python 兼容?
作者:来自 Elastic Quentin_Pradet 在这篇文章中,我们将进行一些实验,看看 Python Elasticsearch 客户端是否与新的 Python 3.13 自由线程(free-threading)版本兼容,其中 GIL 已被删除。 介绍 但首先&…...
ROS2 的所有控制台命令
以下是 ROS2 的控制台命令: 编译 colcon是ros的构建工具 sudo apt install python3-colcon-common-extensions 如只编译 turn_robot colcon build --packages-select turn_robot 编译全部功能包 colcon build source source /home/sukai/turn_robot/install…...
深入理解 Entity、VO、QO、DTO 的区别及其在 MVC 架构中的应用
文章背景 在现代软件开发中,我们经常会接触到各种数据结构的概念,比如 Entity、VO(Value Object)、QO(Query Object)、DTO(Data Transfer Object)等。这些概念尽管看似相似ÿ…...
角色认知培训
课程记录 需求传达的时候先强调重点,理清需求的过程中,大家一起分析 一开始单线程,总结复盘,提升效率,变成多线程 心态 2、复盘能力,每次优化策略 优化 团结、执行、 3、 头马的理解? 小…...
记录一次微信小程序使用云能力开发的过程
对于开发微信小程序云开发不知从何起的同学们,可以当作一次参考。虽说官方有文档,有模板示例,但是这些都是片段或者完整的结果展示。对于初学或者开发经验较少的同学们,可能不知先从那里入手进行第一步的开发。下面解析下构建微信…...
vim将一行行尾倒数第三个字符替换成1
%s/\v(.)(.)(.)(.)$/1\2\3\4\v:very magic模式,可以省略转义符 (.):圆括号的分组功能,将括号匹配内容放到第一个寄存器里面,第二个括号匹配内容放到第二个寄存器里面。 $:匹配行尾字符 \2:第二个括号匹配内容 \3:第三个…...
Kafka权威指南(第2版)读书笔记
目录 Kafka生产者——向Kafka写入数据生产者概览创建Kafka生产者bootstrap.serverskey.serializervalue.serializer 发送消息到Kafka同步发送消息异步发送消息 生产者配置client.idacks消息传递时间max.block.msdelivery.timeout.msrequest.timeout.msretries 和retry.backoff.…...
Yolov8 目标检测剪枝学习记录
最近在进行YOLOv8系列的轻量化,目前在网络结构方面的优化已经接近极限了,所以想要学习一下模型剪枝是否能够进一步优化模型的性能 这里主要参考了torch-pruning的基本使用,v8模型剪枝,Jetson nano部署剪枝YOLOv8 下面只是记录一个…...
5G+工业互联网迈入规模化发展新阶段
百度安全验证 https://blog.csdn.net/qq_25467441/article/details/145036191?sharetypeblogdetail&sharerId145036191&sharereferPC&sharesourceqq_25467441&spm1011.2480.3001.8118 好看视频-轻松有收获 产业供给加速提升。国内主流模组厂商引领全球5G模组…...
WOA-Transformer鲸鱼算法优化编码器时间序列预测(Matlab实现)
WOA-Transformer鲸鱼算法优化编码器时间序列预测(Matlab实现) 目录 WOA-Transformer鲸鱼算法优化编码器时间序列预测(Matlab实现)预测效果基本介绍程序设计参考资料 预测效果 基本介绍 1.Matlab实现WOA-Transformer鲸鱼算法优化编…...
「刘一哥GIS」系列专栏《GRASS GIS零基础入门实验教程(配套案例数据)》专栏上线了
「刘一哥GIS」系列专栏《GRASS GIS零基础入门实验教程》全新上线了,欢迎广大GISer朋友关注,一起探索GIS奥秘,分享GIS价值! 本专栏以实战案例的形式,深入浅出地介绍了GRASS GIS的基本使用方法,用一个个实例讲…...
Spring boot面试题---- Spring boot项目运行原理
1.启动流程概述 Spring Boot 的启动是从一个带有main方法的主类开始的。这个主类通常会有一个@SpringBootApplication注解。这个注解是一个组合注解,它包含了@Configuration、@EnableAutoConfiguration和@ComponentScan。@Configuration注解表明这个类是一个配置类,它可以定义…...
HTML基础与实践
目录 HTML 结构 认识 HTML 标签 HTML 文件基本结构 标签层次结构 快速生成代码框架 HTML 常见标签 注释标签 标题标签: h1-h6 段落标签: p 换行标签: br 格式化标签 图片标签: img 超链接标签: a 编辑链接的几种形式: 表格标签 基本使用 合并单元格 …...
码编译安装httpd 2.4,测试
下载链接:https://dlcdn.apache.org/httpd/httpd-2.4.62.tar.gz [rootopenEuler-1 ~]# yum install gcc gcc-c make -y [rootopenEuler-1 ~]# ll /root total 9648 -rw-------. 1 root root 920 Jan 10 17:15 anaconda-ks.cfg -rw-r--r-- 1 root root 9872432…...
计算机网络 (45)动态主机配置协议DHCP
前言 计算机网络中的动态主机配置协议(DHCP,Dynamic Host Configuration Protocol)是一种网络管理协议,主要用于自动分配IP地址和其他网络配置参数给连接到网络的设备。 一、基本概念 定义:DHCP是一种网络协议…...
赛灵思(Xilinx)公司Artix-7系列FPGA
苦难从不值得歌颂,在苦难中萃取的坚韧才值得珍视; 痛苦同样不必美化,从痛苦中开掘出希望才是壮举。 没有人是绝对意义的主角, 但每个人又都是自己生活剧本里的英雄。滑雪,是姿态优雅的“贴地飞行”,也有着成…...
【计算机体系结构、微架构性能分析】core 与 uncore 分别是哪一些部分?区分 core 和 uncore
在计算机体系结构中,Core 和 Uncore 是描述处理器内部架构的两个重要概念,尤其在多核处理器中更为常见。 1. Core(核心) Core 指的是处理器中的计算核心,是执行指令和处理数据的基本单元。每个核心都包含独立的执行单…...
基于 K-Means 聚类分析实现人脸照片的快速分类
注:本文在创作过程中得到了 ChatGPT、DeepSeek、Kimi 的智能辅助支持,由作者本人完成最终审阅。 在 “视频是不能 P 的” 系列文章中,博主曾先后分享过人脸检测、人脸识别等相关主题的内容。今天,博主想和大家讨论的是人脸分类问题。你是否曾在人群中认错人,或是盯着熟人的…...
Ubuntu更改apache的服务端口
1.介绍 承接上文,上文介绍了如何利用apache快速部署自己的网页,直接访问localhost就能打开网页的界面,这里其实是直接用了Ubuntu的80端口访问,如果我想换一个端口访问呢?应该怎么实现? 这一篇文章就来教你&…...