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

【小小的脑袋,大大的疑问?】如何在Zookeeper中配置集群?

在Zookeeper中配置集群涉及多个步骤,以确保集群的稳定性和高效运行。以下是一个详细的配置流程:

一、环境准备

  1. 选择服务器

    • 选择合适数量的服务器,通常为奇数(如3台、5台等),以避免脑裂问题。
    • 确保服务器之间网络连接稳定,延迟低。
  2. 安装JDK

    • Zookeeper依赖于Java环境,因此需要在每台服务器上安装JDK,并确保java -version命令能够成功执行。
  3. 下载Zookeeper安装包

    • 从Apache Zookeeper官网下载最新版本的Zookeeper安装包。

二、服务器配置

  1. 安装Zookeeper
    • 将下载的Zookeeper安装包解压到指定目录。
    • 配置环境变量(可选),以方便在命令行中访问Zookeeper的启动脚本和客户端工具。
    例子:

这里以Linux环境为例,展示如何使用tar命令来解压,并简要说明如何配置环境变量(假设你已经有了Zookeeper的压缩包文件,比如zookeeper-3.7.0.tar.gz)。

(1)解压Zookeeper安装包
  1. 首先,使用cd命令进入到你想要解压Zookeeper的目录。比如,你可能想要将Zookeeper解压到/opt目录下:

    cd /opt
    
  2. 然后,使用tar命令来解压Zookeeper的压缩包。确保你拥有足够的权限来解压到该目录(你可能需要使用sudo)。例如:

    sudo tar -xzf /path/to/zookeeper-3.7.0.tar.gz
    

    这里/path/to/zookeeper-3.7.0.tar.gz是你的Zookeeper压缩包文件的实际路径。解压后,你会在/opt目录下看到一个名为zookeeper-3.7.0(或你下载的Zookeeper版本的相应名称)的目录。

(2)配置环境变量(可选)

配置环境变量可以让你在任何目录下都能方便地访问Zookeeper的启动脚本和客户端工具。这通常通过修改用户的shell配置文件(如.bashrc.bash_profile.zshrc等,取决于你使用的shell)来实现。
以下是如何在.bashrc文件中为Zookeeper配置环境变量的示例(假设你已经将Zookeeper解压到了/opt/zookeeper-3.7.0):

  1. 打开你的.bashrc文件进行编辑。你可以使用任何文本编辑器,比如nanovi
    nano ~/.bashrc
    
  2. 在文件的末尾添加以下行(确保将/opt/zookeeper-3.7.0替换为你的Zookeeper实际安装路径):
    export ZK_HOME=/opt/zookeeper-3.7.0
    export PATH=$PATH:$ZK_HOME/bin
    
    这里,ZK_HOME是一个自定义的环境变量,用于存储Zookeeper的安装目录。然后,我们将$ZK_HOME/bin目录添加到PATH环境变量中,这样你就可以在任何地方通过命令行访问Zookeeper的脚本了。
  3. 保存并关闭.bashrc文件。
  4. 要使更改生效,你需要重新加载.bashrc文件。可以通过运行以下命令来完成:
    source ~/.bashrc
    
    或者,你可以简单地关闭并重新打开你的终端。

现在,你应该能够在任何目录下通过运行zkServer.shzkCli.sh等命令来启动Zookeeper服务或连接到Zookeeper客户端了。

  1. 配置防火墙
    • 确保服务器之间的防火墙设置允许Zookeeper集群通信端口(默认为2888和3888)的通信。
      以下是一些常见的Linux防火墙管理工具及其相应的命令来允许这些端口:
1. 使用iptables(适用于大多数Linux发行版)

如果你使用的是iptables作为防火墙管理工具,你可以通过添加规则来允许特定的端口。以下命令展示了如何允许2888和3888端口的TCP流量:

sudo iptables -A INPUT -p tcp --dport 2888 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 3888 -j ACCEPT

注意:这些命令是临时的,重启后不会保留。要永久保存这些规则,你需要根据你的Linux发行版使用相应的服务管理工具(如iptables-persistentnetfilter-persistentsave/restore命令)来保存规则。

2. 使用firewalld(Fedora、CentOS 7及更高版本、RHEL 7及更高版本等)

如果你的系统使用firewalld作为防火墙管理工具,你可以通过以下命令来允许端口:

sudo firewall-cmd --permanent --zone=public --add-port=2888/tcp
sudo firewall-cmd --permanent --zone=public --add-port=3888/tcp
sudo firewall-cmd --reload

这里,--zone=public指定了防火墙区域(根据你的配置,这个区域名称可能不同)。--permanent选项表示这些更改是永久的。最后,--reload选项重新加载防火墙规则以应用更改。

3. 使用ufw(Ubuntu的Uncomplicated Firewall)

对于使用ufw的Ubuntu系统,你可以使用以下命令来允许端口:

sudo ufw allow 2888/tcp
sudo ufw allow 3888/tcp

这些命令会立即应用更改,并且(在Ubuntu上)这些更改是持久的,因为ufw会自动保存其配置。

排查

要排查防火墙设置是否允许了这些端口,你可以使用telnet(如果已安装)或nc(netcat)工具来测试端口是否开放。例如,从集群中的一个节点到另一个节点,你可以运行:

telnet <other-node-ip> 2888

或者

nc -zv <other-node-ip> 2888

如果端口是开放的,这些命令应该会显示连接成功或类似的消息。如果端口被阻塞,它们将显示连接失败或超时。

请注意,如果telnetnc没有安装在你的系统上,你可能需要先安装它们。在Ubuntu上,你可以使用sudo apt-get install telnetsudo apt-get install netcat来安装。在其他Linux发行版上,相应的包管理器命令可能会有所不同。

三、Zookeeper集群配置

  1. 编辑zoo.cfg文件

    • 在Zookeeper的conf目录下,找到zoo_sample.cfg文件,将其复制并重命名为zoo.cfg
    • 编辑zoo.cfg文件,设置以下关键配置项:
      • dataDir:指定Zookeeper数据存储的目录。
      • clientPort:指定客户端连接的端口号。
      • tickTime:Zookeeper中基本的时间单位,用于心跳和超时等。
      • initLimit:Leader服务器等待Follower服务器启动并完成数据同步的时间限制。
      • syncLimit:Leader服务器与Follower服务器之间同步数据的时间限制。
      • 在文件末尾添加集群成员信息,格式为server.N=YYY:A:B,其中N是服务器编号,YYY是服务器IP地址,A是服务器之间通信的端口,B是Leader选举的端口。
  2. 创建myid文件

    • 在每台服务器的dataDir目录下创建myid文件,文件内容为该服务器的编号(与zoo.cfg中配置的server.N相对应)。

四、启动Zookeeper集群

  1. 启动Zookeeper服务

    • 在每台服务器上启动Zookeeper服务。可以使用zkServer.sh start命令(Linux环境)或相应的命令(Windows环境)。
    • 注意,在启动过程中,Zookeeper会自动进行Leader选举,确保集群中有一个Leader和多个Follower(或Observer)。
  2. 验证集群状态

    • 使用zkServer.sh status命令(Linux环境)检查每台服务器的角色和状态。
    • 也可以使用Zookeeper客户端工具(如zkCli.sh)连接到集群,并验证集群的状态和数据一致性。

五、维护与监控

  1. 数据备份

    • 定期备份Zookeeper的数据,以防止数据丢失。
    • 可以使用Zookeeper自带的PurgeTxnLog工具或编写脚本定期清理旧的事务日志和快照文件。
  2. 健康监控

    • 使用监控工具(如Prometheus、Grafana等)监控Zookeeper集群的健康状况和性能指标。
    • 定期检查集群的日志文件和性能指标,及时发现并处理潜在问题。
  3. 安全配置

    • 根据需要配置适当的安全功能(如SSL/TLS加密、Kerberos认证等)以保护集群免受未授权访问和数据泄露的风险。

通过以上步骤,您可以在Zookeeper中成功配置集群,并确保其稳定运行。请注意,具体的配置参数和步骤可能会因Zookeeper的版本和部署环境的不同而有所差异,请根据实际情况进行调整。

六、如何修改Zookeeper中配置集群的配置文件

在Zookeeper中配置集群的配置文件(通常是zoo.cfg),需要遵循一定的步骤和规则来确保集群的正确配置和稳定运行。以下是一个详细的配置过程:

(1)、获取Zookeeper安装包并解压

首先,从Apache Zookeeper官网或其他可信源下载Zookeeper的安装包,并将其解压到服务器的指定目录。例如,解压到/opt/zookeeper目录。

(2)、复制并编辑zoo.cfg文件
  1. 复制配置文件
    在Zookeeper的conf目录下,通常会有一个名为zoo_sample.cfg的示例配置文件。将该文件复制一份,并重命名为zoo.cfg,以便进行编辑。

    cp /opt/zookeeper/conf/zoo_sample.cfg /opt/zookeeper/conf/zoo.cfg
    
  2. 编辑zoo.cfg文件
    使用文本编辑器(如vinano等)打开zoo.cfg文件,并进行必要的配置。

(3)、配置关键参数

zoo.cfg文件中,需要配置以下关键参数:

  1. dataDir
    指定Zookeeper存储数据的目录。这个目录在集群的所有节点上都应该存在,并且Zookeeper进程有权限读写。

    dataDir=/opt/zookeeper/data
    
  2. clientPort
    指定客户端连接Zookeeper服务器的端口。这是Zookeeper服务监听的端口,用于接收客户端的请求。

    clientPort=2181
    
  3. tickTime
    Zookeeper中基本的时间单位,用于心跳和超时等。可以根据实际需要调整该值。

    tickTime=2000
    
  4. initLimitsyncLimit
    这两个参数用于配置Zookeeper集群中Follower与Leader之间的同步和超时限制。

    initLimit=10
    syncLimit=5
    
  5. 集群成员配置
    zoo.cfg文件的末尾,添加集群成员的配置信息。格式为server.N=YYY:A:B,其中N是服务器编号(从1开始),YYY是服务器的IP地址或主机名(确保在/etc/hosts文件中进行了正确的IP地址与主机名的映射),A是服务器之间通信的端口,B是Leader选举的端口。

    server.1=node1:2888:3888
    server.2=node2:2888:3888
    server.3=node3:2888:3888
    

    注意:每个集群成员的A端口通常可以设置为相同的值,但B端口(选举端口)在集群中应该是唯一的,以避免端口冲突。

(4)、创建myid文件

在集群的每个节点上,都需要在dataDir指定的目录下创建一个名为myid的文件,并将文件内容设置为该节点的编号(与zoo.cfg文件中配置的server.N相对应)。例如,在节点1上,myid文件的内容应为1

echo "1" > /opt/zookeeper/data/myid
(5)、启动Zookeeper服务

配置完成后,就可以启动Zookeeper服务了。在集群的每个节点上执行启动命令(如zkServer.sh start),并检查服务状态(如使用zkServer.sh status命令)以确保集群正常运行。

(6)、验证集群配置

最后,可以通过Zookeeper客户端工具(如zkCli.sh)连接到集群中的任意节点,并执行一些基本操作来验证集群配置是否成功。例如,可以在一个节点上创建一个节点,并在另一个节点上验证该节点是否存在。

通过以上步骤,就可以在Zookeeper中成功配置集群的配置文件了。请注意,具体的配置参数和步骤可能会因Zookeeper的版本和部署环境的不同而有所差异,请根据实际情况进行调整。

七、如何添加规则来允许TCP流量通过防火墙端口2888和3888

  • TCP流量是指通过传输控制协议(Transmission Control
    Protocol,简称TCP)传输的数据量。TCP是一种面向连接的、可靠的、基于字节流的运输层通信协议,它广泛应用于互联网中,为各种应用提供数据传输服务。
TCP流量的特点
  1. 面向连接:TCP在传输数据之前,需要先建立连接,即进行三次握手过程,确保双方通信的可靠性。
  2. 可靠性传输:TCP通过序列号、确认应答、超时重传等机制,确保数据能够准确无误地传输到对方。
  3. 流量控制:TCP通过滑动窗口等机制,控制发送方发送数据的速率,避免接收方因处理不过来而导致数据丢失。
  4. 拥塞控制:TCP还具备拥塞控制功能,能够监测网络状况,动态调整发送速率,避免网络拥塞。
TCP流量的计算

TCP流量通常是以字节(Byte)为单位进行计算的。在实际应用中,可以通过各种网络监测工具或软件来查看TCP流量的实时数据和统计信息,以便对网络性能进行评估和优化。

TCP流量的应用场景

TCP流量广泛应用于各种需要可靠数据传输的场合,如网页浏览、文件传输、远程登录、电子邮件等。在这些应用中,TCP通过其可靠的传输机制和流量控制、拥塞控制等功能,确保数据能够高效、准确地传输到对方。

在Windows系统中,添加规则以允许TCP流量通过防火墙端口2888和3888,你可以通过Windows防火墙的高级安全设置来完成。以下是详细的步骤:

(1)、打开Windows防火墙高级安全设置
  1. 使用管理员权限登录:确保你以管理员身份登录Windows系统。
  2. 打开控制面板:点击“开始”菜单,选择“控制面板”。
  3. 选择Windows Defender防火墙:在控制面板中,找到并点击“系统和安全”,然后选择“Windows Defender 防火墙”。
  4. 进入高级设置:在Windows Defender 防火墙页面,点击左侧的“高级设置”链接。
(2)、创建入站规则
  1. 选择入站规则:在Windows防火墙高级安全设置窗口中,左侧导航栏中选择“入站规则”。
  2. 新建规则:点击右侧的“新建规则”按钮,开始创建新的入站规则。
(3)、设置规则属性
  1. 选择规则类型:在“新建入站规则向导”中,选择“端口”作为规则类型,然后点击“下一步”。
  2. 配置TCP端口
    • 选择“TCP”作为协议。
    • 选择“特定本地端口”,并在文本框中输入“2888,3888”(注意用逗号分隔多个端口)。
    • 点击“下一步”。
  3. 定义操作:选择“允许连接”,然后点击“下一步”。
  4. 选择配置文件:根据需要选择适用的网络配置文件(域、专用、公用),通常建议全部选择。然后点击“下一步”。
  5. 命名规则:为规则指定一个名称和描述,例如“Allow Zookeeper Communication”,然后点击“完成”。
(4)、启用规则
  1. 找到新规则:在“入站规则”列表中,找到你刚刚创建的规则。
  2. 启用规则:右键点击规则,选择“启用规则”以确保其生效。
(5)、验证规则

为了验证规则是否已正确设置并生效,你可以使用命令行工具来检查端口是否已开放。打开命令提示符(以管理员身份),然后输入以下命令之一来检查端口2888或3888的TCP连接:

netstat -an | findstr 2888
netstat -an | findstr 3888

注意:这些命令将显示所有监听在指定端口上的TCP连接,但它们不会直接显示防火墙规则是否允许这些端口。要验证防火墙规则,你通常需要检查防火墙的设置或使用网络扫描工具来从外部测试端口的可达性。

另外,如果你使用的是Windows Server系统,并且已经熟悉PowerShell,你也可以使用netsh advfirewall命令来直接创建和配置防火墙规则,这可能会提供更高效和灵活的方式来管理防火墙设置。

相关文章:

【小小的脑袋,大大的疑问?】如何在Zookeeper中配置集群?

在Zookeeper中配置集群涉及多个步骤&#xff0c;以确保集群的稳定性和高效运行。以下是一个详细的配置流程&#xff1a; 一、环境准备 选择服务器&#xff1a; 选择合适数量的服务器&#xff0c;通常为奇数&#xff08;如3台、5台等&#xff09;&#xff0c;以避免脑裂问题。确…...

Metasploit渗透测试之服务端漏洞利用

简介 在之前的文章中&#xff0c;我们学习了目标的IP地址&#xff0c;端口&#xff0c;服务&#xff0c;操作系统等信息的收集。信息收集过程中最大的收获是服务器或系统的操作系统信息。这些信息对后续的渗透目标机器非常有用&#xff0c;因为我们可以快速查找系统上运行的服…...

什么是原生IP?

代理IP的各个类型称呼有很多&#xff0c;且它们在网络使用和隐私保护方面扮演着不同的角色。今天将探讨什么是原生IP以及原生IP和住宅IP之间的区别&#xff0c;帮助大家更好地理解这两者的概念和实际应用&#xff0c;并选择适合自己的IP类型。 一、什么是原生IP&#xff1f; 原…...

【C++】unordered_map(set)

前言 C中的unordered容器&#xff08;例如std::unordered_set、std::unordered_map等&#xff09;底层是基于**哈希表&#xff08;Hash Table&#xff09;**实现的。哈希表是一种通过哈希函数将元素映射到特定“桶&#xff08;bucket&#xff09;”的容器&#xff0c;提供快速的…...

HTML 盒模型

盒模型&#xff08;box model&#xff09; 简介&#xff1a;盒模型&#xff08;Box Model&#xff09;是CSS中一个非常重要的概念&#xff0c;它定义了元素在网页上的布局和尺寸。 组成&#xff1a;内容&#xff08;Content&#xff09;、内边距&#xff08;Padding&#xff…...

node.js npm 安装和安装create-next-app -windowsserver12

1、官网下载windows版本NODE.JS https://nodejs.org/dist/v20.17.0/node-v20.17.0-x64.msi 2、安装后增加两个文件夹目录node_global、node_cache npm config set prefix "C:\Program Files\nodejs\node_global" npm config set prefix "C:\Program Files\nod…...

Android13 展锐平台拨号中视频彩铃界面方向未与设备方向一致

背景&#xff1a;拨号中视频彩铃界面方向未与设备方向一致&#xff0c;要求视频彩铃界面方向与设备方向一致&#xff0c;修改视频彩铃显示的地方&#xff1b; 如图所示&#xff1a; 修改&#xff1a; packages/services/Telecomm/src/com/android/server/telecom/VideoProvid…...

为什么IP首部的源IP地址和目的IP地址不变而MAC层的源MAC地址和目的MAC地址变

IP首部的源IP地址和目的IP地址不变&#xff0c;而MAC层的源MAC地址和目的MAC地址变化的原因‌主要涉及到计算机网络中的分层结构和数据包传输过程。在OSI&#xff08;开放系统互联&#xff09;模型中&#xff0c;计算机网络被分为不同的层&#xff0c;每层都有其特定的功能。IP…...

Django 数据库配置以及字段设置详解

配置PostGre 要在 Django 中配置连接 PostgreSQL 数据库&#xff0c;并创建一个包含“使用人”和“车牌号”等字段的 Car 表 1. 配置 PostgreSQL 数据库连接 首先&#xff0c;在 Django 项目的 settings.py 中配置 PostgreSQL 连接。 修改 settings.py 文件&#xff1a; …...

C++ 左值右值引用梳理

C 左值右值引用梳理 左值与右值的区别 在参考资料上看到这样一句话 https://www.internalpointers.com/post/understanding-meaning-lvalues-and-rvalues-c In C an lvalue is something that points to a specific memory location. On the other hand, a rvalue is somethi…...

向量化技术在机器学习领域的深度实践与探索

向量化技术的魅力初现 在机器学习的广袤天地中&#xff0c;数据是驱动模型学习与进化的核心燃料。然而&#xff0c;面对海量、高维的数据&#xff0c;如何高效地进行处理与利用&#xff0c;成为了研究者们必须面对的问题。向量化技术应运而生&#xff0c;通过将文本、图像、音…...

RuoYi若依框架学习:多环境配置

在开发过程中&#xff0c;项目往往需要在不同的环境&#xff08;如开发、测试和生产&#xff09;中运行。RuoYi框架支持通过配置文件轻松实现多环境管理。以下是如何配置和使用多环境的技术分析。 1. 环境配置文件 RuoYi框架使用application-{profile}.yml文件来管理不同环境…...

Linux-RedHat7.4-服务器搭建FTP

Linux FTP 1、安装vsftpd和lftp&#xff1a; yum -y install vsftpd lftp ftp 2、创建用户&#xff1a; vsftpd提供了三种认证方式&#xff1a;本地用户、虚拟用户、匿名用户&#xff0c;本文介绍本地用户的认证方式。 注&#xff1a;本文创建的本地用户为只能访问ftp&…...

遍历递归数结构,修改里的disabled值

返回参数中新增字段 disabled,后端给的值为1和2, disabled1时&#xff0c;代表该节点需要置灰&#xff0c;不可选中 现在需要将disabled的值,改为布尔类型; 后端给的数结构是对象类型,tree接收数组类型; 先将对象类型的数据,遍历递归,修改里面的disabled值,最后再加[ ],改为…...

怎么通过AI大模型开发一个网站?

目录 一、提示词与AI输出 二、网站效果 以前不会代码开发&#xff0c;写网站是不可能的事情&#xff0c;现在有了AI&#xff0c;一切都有了可能。以下是我通过通义千问大模型开发的简单网站。 一、提示词与AI输出 提示词1 你是python程序员&#xff0c;我有一个大的需求&am…...

【Kubernetes】常见面试题汇总(四十)

目录 93. Kubelet 与 kubeproxy 作用。Kubeproxy 的三种代理模式和各自的原理以及它们的区别。 特别说明&#xff1a; 题目 1-68 属于【Kubernetes】的常规概念题&#xff0c;即 “ 汇总&#xff08;一&#xff09;~&#xff08;二十二&#xff09;” 。 题目 69-113 属…...

数据仓库-数据命名标准规范

一:主题域 1.1 业务主题域1.2 分析主题域1.3 数据域二: 词根 2.2 业务词根三:对象数据规范 3.1 表规范 3.1.1 数据装载周期3.1.2 数据装载方式3.1.3 表命名规范3.2.1 分区字段3.2.2 其他通用字段3.3 指标规范 3.3.1 时间修饰词3.3.2 常用度量3.3.2 指标命名3.4 ETL命名规范...

OCR识别系统 YOLOv8 +Paddle 方案落地

YOLOv8 PaddleOCR 技术方案落地 Yolov8相关文档Step 1 证件模型的训练Step 2 Yolov8进行图片推理Step 3 PaddleOCR进行识别Step 4 整合Yolov8 PaddleOCR 进行OCR Yolov8相关文档 《yolov8 官方网站》 《Yolov8 保姆级别安装》 Ultralytics YOLOv8 是一款尖端的、最先进的 (S…...

828华为云征文|部署去中心化网络的 AI 照片管理应用 PhotoPrism

828华为云征文&#xff5c;部署去中心化网络的 AI 照片管理应用 PhotoPrism 一、Flexus云服务器X实例介绍二、Flexus云服务器X实例配置2.1 重置密码2.2 服务器连接2.3 安全组配置2.4 Docker 环境搭建 三、Flexus云服务器X实例部署 PhotoPrism3.1 PhotoPrism 介绍3.2 PhotoPrism…...

【PAM】Linux登录认证限制

PAM&#xff08;Pluggable Authentication Modules&#xff0c;可插拔认证模块&#xff09;是一种灵活的认证框架&#xff0c;用于在 Linux 和其他类 Unix 系统上管理用户的身份验证。PAM 允许系统管理员通过配置不同的认证模块来定制应用程序和服务的认证方式&#xff0c;而不…...

地震勘探——干扰波识别、井中地震时距曲线特点

目录 干扰波识别反射波地震勘探的干扰波 井中地震时距曲线特点 干扰波识别 有效波&#xff1a;可以用来解决所提出的地质任务的波&#xff1b;干扰波&#xff1a;所有妨碍辨认、追踪有效波的其他波。 地震勘探中&#xff0c;有效波和干扰波是相对的。例如&#xff0c;在反射波…...

C++_核心编程_多态案例二-制作饮品

#include <iostream> #include <string> using namespace std;/*制作饮品的大致流程为&#xff1a;煮水 - 冲泡 - 倒入杯中 - 加入辅料 利用多态技术实现本案例&#xff0c;提供抽象制作饮品基类&#xff0c;提供子类制作咖啡和茶叶*//*基类*/ class AbstractDr…...

2024年赣州旅游投资集团社会招聘笔试真

2024年赣州旅游投资集团社会招聘笔试真 题 ( 满 分 1 0 0 分 时 间 1 2 0 分 钟 ) 一、单选题(每题只有一个正确答案,答错、不答或多答均不得分) 1.纪要的特点不包括()。 A.概括重点 B.指导传达 C. 客观纪实 D.有言必录 【答案】: D 2.1864年,()预言了电磁波的存在,并指出…...

Android 之 kotlin 语言学习笔记三(Kotlin-Java 互操作)

参考官方文档&#xff1a;https://developer.android.google.cn/kotlin/interop?hlzh-cn 一、Java&#xff08;供 Kotlin 使用&#xff09; 1、不得使用硬关键字 不要使用 Kotlin 的任何硬关键字作为方法的名称 或字段。允许使用 Kotlin 的软关键字、修饰符关键字和特殊标识…...

Rapidio门铃消息FIFO溢出机制

关于RapidIO门铃消息FIFO的溢出机制及其与中断抖动的关系&#xff0c;以下是深入解析&#xff1a; 门铃FIFO溢出的本质 在RapidIO系统中&#xff0c;门铃消息FIFO是硬件控制器内部的缓冲区&#xff0c;用于临时存储接收到的门铃消息&#xff08;Doorbell Message&#xff09;。…...

【Java学习笔记】BigInteger 和 BigDecimal 类

BigInteger 和 BigDecimal 类 二者共有的常见方法 方法功能add加subtract减multiply乘divide除 注意点&#xff1a;传参类型必须是类对象 一、BigInteger 1. 作用&#xff1a;适合保存比较大的整型数 2. 使用说明 创建BigInteger对象 传入字符串 3. 代码示例 import j…...

HashMap中的put方法执行流程(流程图)

1 put操作整体流程 HashMap 的 put 操作是其最核心的功能之一。在 JDK 1.8 及以后版本中&#xff0c;其主要逻辑封装在 putVal 这个内部方法中。整个过程大致如下&#xff1a; 初始判断与哈希计算&#xff1a; 首先&#xff0c;putVal 方法会检查当前的 table&#xff08;也就…...

GruntJS-前端自动化任务运行器从入门到实战

Grunt 完全指南&#xff1a;从入门到实战 一、Grunt 是什么&#xff1f; Grunt是一个基于 Node.js 的前端自动化任务运行器&#xff0c;主要用于自动化执行项目开发中重复性高的任务&#xff0c;例如文件压缩、代码编译、语法检查、单元测试、文件合并等。通过配置简洁的任务…...

LangChain知识库管理后端接口:数据库操作详解—— 构建本地知识库系统的基础《二》

这段 Python 代码是一个完整的 知识库数据库操作模块&#xff0c;用于对本地知识库系统中的知识库进行增删改查&#xff08;CRUD&#xff09;操作。它基于 SQLAlchemy ORM 框架 和一个自定义的装饰器 with_session 实现数据库会话管理。 &#x1f4d8; 一、整体功能概述 该模块…...

【Android】Android 开发 ADB 常用指令

查看当前连接的设备 adb devices 连接设备 adb connect 设备IP 断开已连接的设备 adb disconnect 设备IP 安装应用 adb install 安装包的路径 卸载应用 adb uninstall 应用包名 查看已安装的应用包名 adb shell pm list packages 查看已安装的第三方应用包名 adb shell pm list…...