ZooKeeper 核心知识全解析:架构、角色、节点与应用
1.ZooKeeper 分布式锁怎么实现的
ZooKeeper 是一个高效的分布式协调服务,它提供了简单的原语集来构建更复杂的同步原语和协调数据结构。利用 ZooKeeper 实现分布式锁主要依赖于它的顺序节点(Sequential Node)特性以及临时节点(Ephemeral Node)机制。
以下是使用 ZooKeeper 实现分布式锁的基本步骤:
-
创建锁节点:
- 所有想要获取锁的客户端都会在同一个预先约定的父节点下创建自己的临时顺序节点。
- 例如,所有客户端都试图在 /lock 路径下创建子节点,如 /lock/lock-0000000001。
-
检查前驱节点:
- 创建完节点后,每个客户端会获取当前 /lock 路径下的所有子节点列表,并根据节点名称中的序列号排序。
- 如果发现自己创建的节点是排序后的第一个节点,则认为自己获得了锁。
- 否则,监听比自己创建的节点序列号小的第一个节点的删除事件,等待前驱节点被删除。
-
持有锁:
- 当某个客户端获得锁之后,可以在执行相应的临界区代码的同时保持与 ZooKeeper 的会话连接,以确保其临时节点不会因为长时间没有心跳而被自动删除。
-
释放锁:
- 完成临界区的操作后,客户端主动删除自己创建的临时顺序节点,这将释放锁,允许下一个等待的客户端获取锁。
- 如果持有锁的客户端意外断开连接或崩溃,由于它是临时节点,ZooKeeper 会在会话超时后自动删除该节点,从而释放锁。
-
处理异常情况:
- 如果在等待过程中前驱节点突然消失(即前驱客户端崩溃),那么当前客户端应该重新获取最新的子节点列表并再次判断是否获得了锁。
这种实现方式可以保证在任何时刻最多只有一个客户端持有锁,即使在网络分区、客户端故障等情况下也能正确工作。此外,ZooKeeper 的 Watcher 机制使得等待锁的客户端能够及时响应锁状态的变化,提高了系统的响应速度。
2.了解Zookeeper的系统架构吗?
ZooKeeper 是一个分布式应用程序协调服务,它的设计目标是简化和可靠地实现分布式系统中的常见任务。ZooKeeper 的架构主要由以下几个组件构成:
-
客户端(Client):
- 客户端通过网络与 ZooKeeper 服务器进行通信。每个客户端可以连接到集群中的任意一台服务器,并且可以在服务器之间自动切换以保持连接的高可用性。
-
服务器(Server):
- ZooKeeper 集群通常由奇数个服务器组成(如3、5或7),以确保在投票过程中能够达成多数同意。每个服务器都保存了一份数据副本,这保证了系统的高可用性和容错性。
-
领导者(Leader):
- 在 ZooKeeper 集群中,选举出一个领导节点来处理所有的写请求。领导者负责将更新广播给其他跟随者(Follower),并确保所有服务器的数据状态一致。
-
跟随者(Follower):
- 非领导者的其他服务器被称为跟随者。它们接受来自领导者的消息并应用这些消息到自己的状态机上。跟随者还参与领导者选举过程,在必要时投票选出新的领导者。
-
观察者(Observer):
- 观察者是一种特殊的跟随者,它不参与选举也不参与写操作的投票。观察者的存在是为了增加读取性能,因为它们可以响应只读请求而不影响写入路径的一致性协议。
-
ZAB 协议(ZooKeeper Atomic Broadcast):
- 这是 ZooKeeper 使用的原子消息广播协议,用于在服务器之间同步状态。ZAB 确保所有事务按全局顺序执行,并且只有当大多数服务器同意后才会提交更改。
-
内存数据库(In-Memory Database):
- ZooKeeper 将所有数据存储在内存中,以提供快速的读写访问。同时,它也会定期将快照和日志持久化到磁盘上,以便恢复。
-
Watcher 机制:
- Watcher 是 ZooKeeper 提供的一种回调机制,允许客户端订阅特定事件(例如节点变化)。一旦触发条件满足,ZooKeeper 会通知相应的客户端。
-
ACLs(Access Control Lists):
- ACLs 用来控制哪些客户端可以对特定的 znode 执行什么样的操作,提供了安全性和权限管理的功能。
ZooKeeper 的架构设计使其成为一个高性能、高可靠的分布式协调服务,适用于构建分布式应用程序中的各种协调任务,比如配置管理、命名服务、分布式锁等。
3.Zookeeper为什么要这么设计?
ZooKeeper 的设计初衷是为了简化分布式系统的协调任务,同时确保这些任务能够以一种可靠、高效且易于使用的方式执行。以下是 ZooKeeper 设计背后的一些关键考虑因素:
-
简单性:
- ZooKeeper 提供了一个简单的文件系统风格的数据模型,其中每个节点(znode)都可以存储少量数据,并可以拥有子节点。这种结构使得开发者更容易理解和实现复杂的分布式协调算法,如选举、锁和屏障等。
-
高可用性和容错性:
- ZooKeeper 通过复制来提高系统的可用性。集群中的每个服务器都保存了一份完整的数据副本。如果一台服务器失败,其他服务器仍然可以继续服务请求。此外,ZooKeeper 使用 ZAB 协议来保证所有服务器在事务处理上的一致性,即使在网络分区或某些服务器故障的情况下也能正常工作。
-
顺序一致性:
- 所有更新操作都是全局有序的,这意味着对于所有的客户端来说,它们看到的操作顺序是一样的。这对于维护分布式系统的状态一致非常重要。
-
原子性:
- 更新要么完全成功,要么完全失败,不存在部分成功的状态。这保证了系统的可靠性。
-
快速读取:
- ZooKeeper 将所有数据存储在内存中,使得读取操作非常快,这对于许多需要频繁查询的应用程序来说至关重要。
-
持久性和临时节点:
- 支持创建持久节点和临时节点。持久节点在创建后会一直存在直到被显式删除;而临时节点在创建它的客户端断开连接时自动删除。这样的机制有助于实现各种协调原语,比如领导者选举和分布式锁。
-
事件通知(Watchers):
- 客户端可以设置监听器(Watcher),当指定的数据发生变化时会触发相应的回调函数。这种方式可以让应用程序及时响应配置变更或其他重要事件。
-
轻量级通信:
- ZooKeeper 的 API 和协议设计得尽可能简单,以减少网络传输的负担并提高效率。
-
线性扩展性:
- 虽然 ZooKeeper 不是为大规模水平扩展设计的(因为随着集群大小的增长,性能可能会下降),但在大多数情况下,一个小型的 ZooKeeper 集群(通常由3到7个节点组成)已经足够满足需求,并能提供良好的性能和可靠性。
综上所述,ZooKeeper 的设计目的是为了在分布式环境中提供一个健壮、高效的服务,用于管理和协调多个组件之间的交互,同时保持操作的一致性和正确性。它特别适用于那些需要强一致性而非高吞吐量的场景。
4.你知道Zookeeper中有哪些角色?
在 ZooKeeper 中,主要存在三种角色:Leader(领导者)、Follower(跟随者)和 Observer(观察者)。这些角色在集群中扮演不同的职责,以确保系统的高可用性和性能。
-
Leader (领导者)
- 领导者是负责处理所有写请求的服务器。当客户端发起创建、删除节点或更新数据等操作时,这些请求会被转发给领导者。领导者会按照全局顺序为每个事务分配一个唯一的编号(Zxid),然后将该事务广播给所有的跟随者和观察者。
- 领导者还负责协调选举过程,在当前领导者失效时,集群中的其他成员会启动新的领导者选举来选出一个新的领导者。
-
Follower (跟随者)
- 跟随者接收来自领导者的提案,并参与投票以确认提案。对于写请求,跟随者会应用从领导者接收到的更新,并在本地执行相同的变更。
- 在读请求方面,跟随者可以直接响应客户端的查询,因为它们的数据状态与领导者保持同步。
- 跟随者也参与到领导者选举过程中,通过投票帮助确定下一个领导者。
-
Observer (观察者)
- 观察者是一种特殊的跟随者,它不参与任何投票活动,包括领导者选举和写操作的提交确认。这意味着观察者不会影响到集群达成一致的速度。
- 它的主要作用是分担读负载,因为它也可以像跟随者那样直接回应读请求。由于不需要参与投票,理论上可以添加更多的观察者来增加系统的读取吞吐量而不降低写入性能。
除了上述三种角色外,还有两种概念性的角色:
-
Client (客户端)
- 客户端是指连接到 ZooKeeper 集群的应用程序或用户。它们向 ZooKeeper 发送请求(如读写操作)并接收响应。客户端通常与集群中的任意一台服务器建立连接,并可以在服务器故障时自动切换到另一台健康的服务器上。
-
Elector (选举器)
- 选举器并不是一个独立的角色,而是指集群中用于进行领导者选举的逻辑组件。每个服务器都包含了这个功能,以便在需要时能够共同决定谁应该成为新的领导者。
总结来说,ZooKeeper 的设计使得领导者负责写操作的一致性管理,而跟随者和观察者则共同承担了读请求的服务工作,从而实现了高效且可靠的分布式协调服务。
5.你熟悉Zookeeper节点ZNode和相关属性吗?
是的,ZooKeeper 的核心概念之一是 ZNode(ZooKeeper Node),它是 ZooKeeper 数据模型的基本单元。每个 ZNode 都可以存储少量的数据,并且可以有子节点。ZooKeeper 的命名空间类似于文件系统,但它的结构和行为与传统文件系统有所不同。以下是关于 ZNode 和其相关属性的一些重要信息:
ZNode 类型
-
持久节点 (PERSISTENT)
- 一旦创建,这些节点将一直存在,直到它们被显式删除。
-
临时节点 (EPHEMERAL)
- 这些节点与创建它们的会话绑定。如果会话结束(例如客户端断开连接),那么这个节点就会自动删除。临时节点不能有子节点。
-
顺序节点 (SEQUENTIAL)
- 创建时,ZooKeeper 会在节点路径的末尾附加一个递增的序列号。这可以用于实现分布式队列等特性。顺序节点可以是持久的也可以是临时的。
-
临时顺序节点 (EPHEMERAL_SEQUENTIAL)
- 结合了临时节点和顺序节点的特点,即具有临时性并且创建时带有递增序列号。
ZNode 属性
-
dataLength:存储在该节点上的数据字节数。
-
ctime:节点创建的时间戳,以毫秒为单位。
-
mtime:节点最后一次更新的时间戳,以毫秒为单位。
-
version:节点内容版本号,每当节点数据被修改时,此值加1。
-
cversion:子节点版本号,每当子节点列表发生改变时,此值加1。
-
aversion:ACL 版本号,每当 ACL 列表被修改时,此值加1。
-
ephemeralOwner:如果是临时节点,则表示创建该节点的会话ID;如果不是临时节点,则此字段为0。
-
data:实际存储在节点中的数据,大小限制为1MB左右。
ZNode 操作
- Create:创建一个新的 ZNode。
- Delete:删除一个存在的 ZNode。
- Exists:检查某个 ZNode 是否存在。
- Get Data:获取指定 ZNode 上的数据。
- Set Data:设置或更新指定 ZNode 上的数据。
- Get Children:列出指定 ZNode 下的所有子节点。
ACL(Access Control List)
- 每个 ZNode 都有关联的访问控制列表(ACL),用来定义哪些客户端可以对它执行特定的操作。ACL 包含权限和身份验证方案两个部分。权限可以包括 CREATE、READ、WRITE、DELETE 和 ADMIN 等操作。
通过上述特性和功能,ZooKeeper 提供了一个强大的基础来构建分布式应用程序所需的协调服务,如配置管理、命名服务、分布式锁和集群管理等。
相关文章:
ZooKeeper 核心知识全解析:架构、角色、节点与应用
1.ZooKeeper 分布式锁怎么实现的 ZooKeeper 是一个高效的分布式协调服务,它提供了简单的原语集来构建更复杂的同步原语和协调数据结构。利用 ZooKeeper 实现分布式锁主要依赖于它的顺序节点(Sequential Node)特性以及临时节点(Ep…...
redis实现限流
令牌桶逻辑 计算逻辑: 代码: import redis.clients.jedis.Jedis; import redis.clients.jedis.JedisPool;/*** ClassName RedisRateLimiterTokenBucket* Description TODO* Author zhang zhengdong* DATE 2025/1/17 20:22* Version 1.0*/ public class…...
云服务器扫描出漏洞怎么办?
随着云计算技术的发展,越来越多的企业和个人选择使用云服务器来托管其应用和服务。然而,安全问题也随之而来。当云服务器的安全扫描显示存在漏洞时,如何正确应对成为了关键。本文将详细介绍发现漏洞后的处理步骤,并提供一些实用的…...
【影刀RPA_启动任务api】
影刀RPA_启动任务api #启动任务api import requests import json from time import sleepyingdao_Info{"accessKeyId":"XXX","accessKeySecret":"XXX","scheduleUuid":XXX,"robotUuid1":"XXX","r…...
Swift语言的多线程编程
Swift语言的多线程编程 在现代软件开发中,多线程编程是提高应用性能和响应速度的重要手段。尤其是在 iOS 和 macOS 开发中,由于用户界面(UI)的交互性和复杂性,合理利用多线程可以极大地提升用户体验。本文将深入探讨 Swift 语言中的多线程编…...
js-判断一个object(对象)是否为空
1.Object.keys() 方法 const obj {};if (Object.keys(obj).length 0) {console.log(Object is empty); } else {console.log(Object is not empty); }Object.keys() 方法返回一个包含对象自身可枚举属性名称的数组。如果这个数组为空,那么对象就是空的。 2.JSO…...
AI在SEO中的关键词优化策略探讨
内容概要 在当今数字化时代,人工智能(AI)正逐渐重塑搜索引擎优化(SEO)行业。AI技术的快速发展使得SEO策略发生了翻天覆地的变化,特别是在关键词优化方面。关键词优化的基本概念是通过选择与用户搜索意图密…...
无缝过渡:将 Ansys 子结构模型转换为 Nastran
了解如何将 Ansys 子结构模型无缝转换为 Nastran,以满足有效载荷动态模型要求 Ansys 子结构模型的优势 Ansys 子结构模型为从事大型装配体结构分析和仿真的工程师和分析师提供了多项优势。 这些模型通过将复杂结构划分为更小、更易于管理的子结构,可以…...
单片机存储器和C程序编译过程
1、 单片机存储器 只读存储器不是并列关系,是从ROM发展到FLASH的过程 RAM ROM 随机存储器 只读存储器 CPU直接存储和访问 只读可访问不可写 临时存数据,存的是CPU正在使用的数据 永久存数据,存的是操作系统启动程序或指令 断电易失 …...
Unity3D实现WEBGL打开Window文件对话框打开/上传文件
系列文章目录 unity工具 文章目录 系列文章目录👉前言👉一、效果展示👉一、unity设置👉1-1、创建Plugins文件夹👉1-2、搭建UI👉二、使用步骤👉2-1、打包webgl👉三、第二种插件实现打开文件对话框👉壁纸分享👉总结👉前言 Unity3D发布的WEBGL程序是不支持…...
探索 Transformer²:大语言模型自适应的新突破
目录 一、来源: 论文链接:https://arxiv.org/pdf/2501.06252 代码链接:SakanaAI/self-adaptive-llms 论文发布时间:2025年1月14日 二、论文概述: 图1 Transformer 概述 图2 训练及推理方法概述 图3 基于提示的…...
SDL2:arm64下编译使用 -- SDL2多媒体库使用音频实例
SDL2:Android-arm64端编译使用 2. SDL2:Android-arm64端编译使用2.1 安装和配置NDK2.2 下载编译SDL22.3 SDL2使用示例:Audio2.4 Android设备运行 2. SDL2:Android-arm64端编译使用 在Linux系统上使用Android NDK编译和使用arm64下…...
Ubuntu、Windows系统网络设置(ping通内外网)
一、 虚拟机VMware和Ubuntu系统的网络配置说明 1、虚拟机的网络适配器的模式有三种: 桥接模式NAT模式主机模式 2、虚拟机VMware的网卡配置(如何进行配置界面(虚拟机->设置)) 注意: 1、以上桥接模式(ubuntu有独立IP)、NAT模式(没有独立IP)都可以联…...
安全类脚本:拒绝ssh暴力破解
要求如下: 一个小时内,连续密码错误4次。 Linux lastb 命令用于列出登入系统失败的用户相关信息。 实验过程如下: 1. 创建两个IP地址不同的干净环境,分别是:192.168.46.101 Rocky 2 和 192.168.46.120 openEuler 2. 2.…...
uc/os-II 原理及应用(八) 系统裁减以及移植到51单片机-下
现在说明几个重要的点, OSStartHighRdy 的作用就是把任务栈复制到系统栈上面,再利用RET的时候会从系统栈上到一个地址放到PC寄存器上来实现任务运行。OSCtxSw是任务切换,把系统栈全部备份到当前任务栈映射上,然后改OSTCBCur,调用…...
关于jwt和security
JSON Web Token(缩写 JWT) 目前最流行、最常见的跨域认证解决方案,前端后端都需要会使用的东西-腾讯云开发者社区-腾讯云 SpringBoot整合Security安全框架、控制权限让我们一起来看看Security吧!我想每个写项目的人,都…...
OpenAI Whisper:语音识别技术的革新者—深入架构与参数
当下语音识别技术正以前所未有的速度发展,极大地推动了人机交互的便利性和效率。OpenAI的Whisper系统无疑是这一领域的佼佼者,它凭借其卓越的性能、广泛的适用性和创新的技术架构,正在重新定义语音转文本技术的规则。今天我们一起了解一下Whi…...
Python 3.9及以上版本支持的新的字符串函数 str.removeprefix()
在 Python 3.9 中,新增了 str.removeprefix() 方法,用于从字符串的开头移除指定的前缀(如果存在)。如果字符串不以指定前缀开头,原字符串保持不变。 用法: str.removeprefix(prefix)prefix: 要移除的前缀…...
Python爬虫入门
豆瓣榜单250爬取: 直接上代码: import requests import redef top250_crawer(url, sum):headers {User-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36}try:response re…...
hive连接mysql报错:Unknown version specified for initialization: 3.1.0
分享下一些报错的可能原因吧 1.要开启hadoop 命令:start-all.sh 2.检查 hive-site.xml 和 hive-env.sh。 hive-site.xml中应设置自己mysql的用户名和密码 我的hive-site.xml如下: <configuration><property><name>javax.jdo.opt…...
wandb使用遇到的一些问题
整合了一下使用wandb遇到的问题 1.请问下如果电脑挂了代理,应该怎么办呢?提示:Network error (ProxyError), entering retry loop. 在本地(而非服务器)运行代码时,常常因为开启代理而无法使用wandb&#…...
18. C语言 结构体内存布局分析与优化
本章目录: 结构体的内存布局1. 对齐规则2. 填充与对齐 示例分析代码示例输出结果分析1. debug_size1_t 结构体2. debug_size2_t 结构体 如何优化结构体内存布局1. 成员排序优化2. 使用 #pragma pack 指令注意事项 总结 在C语言中,结构体(structÿ…...
MyBatisPlus学习笔记
To be continue… 文章目录 介绍快速入门入门案例常用注解常用配置 核心功能条件构造器自定义SQLService接口 介绍 MyBatisPlus只做增强不做改变,引入它不会对现有工程产生影响。只需简单配置,即可快速进行单表CRUD操作,从而节省大量时间。…...
Jetpack工具箱:不只是插件,它是开发灵魂
引言 想象一下,一个 Android 开发者面对堆积如山的需求文档、无穷无尽的 BUG 修复时,突然发现了一款神器——Jetpack!这是一套专为 Android 开发者设计的库和工具集,它就像你的“编程助手”,从架构优化到 UI 管理&…...
2024年博客之星年度评选—创作影响力评审入围名单公布
2024年博客之星活动地址https://www.csdn.net/blogstar2024 TOP 300 榜单排名 用户昵称博客主页 身份 认证 评分 原创 博文 评分 平均 质量分评分 互动数据评分 总分排名三掌柜666三掌柜666-CSDN博客1001002001005001wkd_007wkd_007-CSDN博客1001002001005002栗筝ihttps:/…...
LoadBalancer负载均衡服务调用
LoadBalancer LoadBalancer(负载均衡器)是Spring Cloud中的一个关键组件,用于在微服务架构中实现服务请求的负载均衡。它的主要作用是将客户端的请求分发到多个服务实例上,以提高系统的可用性、性能和容错能力。通过LoadBalancer&…...
《CPython Internals》阅读笔记:p221-p231
《CPython Internals》学习第 12天,p221-p231 总结,总计 11 页。 一、技术总结 无。 二、英语总结(生词:2) 1.at a time idiom. separately(单独地) in the specified groups(一次)。示例: (1) I can only do one thing at …...
【机器学习实战入门】基于深度学习的乳腺癌分类
什么是深度学习? 作为对机器学习的一种深入方法,深度学习受到了人类大脑和其生物神经网络的启发。它包括深层神经网络、递归神经网络、卷积神经网络和深度信念网络等架构,这些架构由多层组成,数据必须通过这些层才能最终产生输出。…...
Golang Gin系列-1:Gin 框架总体概述
本文介绍了Gin框架,探索了它的关键特性,并建立了简单入门的应用程序。在这系列教程里,我们会探索Gin的主要特性,如路由、中间件、数据库集成等,最终能使用Gin框架构建健壮的web应用程序。 总体概述 Gin是Go编程语言的…...
【Python】第二弹---深入理解编程基础:从常量、变量到注释的全面解析
✨个人主页: 熬夜学编程的小林 💗系列专栏: 【C语言详解】 【数据结构详解】【C详解】【Linux系统编程】【MySQL】【Python】 目录 1、常量和表达式 2、变量和类型 2.1、变量是什么 2.2、变量的语法 2.3、变量的类型 2.4、动态类型特…...
RPA编程实践:Electron简介
文章目录 前言使用Electron构建桌面应用程序什么是Electron?为什么选择Electron?如何使用Electron实现上述想法?1. 创建基本的Electron应用2. 配置BrowserWindow3. 定制化你的应用4. 打包与分发 前言 Electron,用官网的话说&…...
svn tag
一般发布版本前,需要在svn上打个tag。步骤如下: 1、空白处右击,选择TortoiseSVN->Branch/tag; 2、填写To path,即tag的路基以及tag命名(一般用版本号来命名);填写tag信息;勾选cr…...
SpringBoot错误码国际化
先看测试效果: 1. 设置中文 2.设置英文 文件结构 1.中文和英文的错误消息配置 package com.ldj.mybatisflex.common;import lombok.Getter;/*** User: ldj* Date: 2025/1/12* Time: 17:50* Description: 异常消息枚举*/ Getter public enum ExceptionEnum {//…...
AAPM:基于大型语言模型代理的资产定价模型,夏普比率提高9.6%
“AAPM: Large Language Model Agent-based Asset Pricing Models” 论文地址:https://arxiv.org/pdf/2409.17266v1 Github地址:https://github.com/chengjunyan1/AAPM 摘要 这篇文章介绍了一种利用LLM代理的资产定价模型(AAPM)…...
LabVIEW桥接传感器配置与数据采集
该LabVIEW程序主要用于配置桥接传感器并进行数据采集,涉及电压激励、桥接电阻、采样设置及错误处理。第一个VI("Auto Cleanup")用于自动清理资源,建议保留以确保系统稳定运行。 以下是对图像中各个组件的详细解释&#…...
《汽车维修技师》是什么级别的期刊?是正规期刊吗?能评职称吗?
问题解答: 问:《汽车维修技师》是不是核心期刊? 答:不是,是知网收录的正规学术期刊。 问:《汽车维修技师》级别? 答:省级。主管单位:北方联合出版传媒(…...
python(25) : 含有大模型生成的公式的文本渲染成图片并生成word文档(支持flask接口调用)
公式样例 渲染前 \[ \sqrt{1904.615384} \approx 43.64 \] 渲染后 安装依赖 pip install matplotlib -i https://mirrors.aliyun.com/pypi/simple/ requestspip install sympy -i https://mirrors.aliyun.com/pypi/simple/ requestspip install python-docx -i https…...
深度学习项目--基于LSTM的火灾预测研究(pytorch实现)
🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊 前言 LSTM模型一直是一个很经典的模型,这个模型当然也很复杂,一般需要先学习RNN、GRU模型之后再学,GRU、LSTM的模型讲解将…...
云消息队列 Kafka 版 V3 系列荣获信通院“云原生技术创新标杆案例”
2024 年 12 月 24 日,由中国信息通信研究院(以下简称“中国信通院”)主办的“2025 中国信通院深度观察报告会:算力互联网分论坛”,在北京隆重召开。本次论坛以“算力互联网 新质生产力”为主题,全面展示中国…...
centos 安全配置基线
centos 安全配置基线 一、系统防火墙及SE系统1. 系统自带防火墙iptables(Centos6)基础命令查看防火墙设置使用命令查看防火墙设置使用命令清除防火墙设置防火墙策略开放指定的端口屏蔽IP 2. 系统自带防火墙firewalled(Centos7)基础…...
语音技术在播客领域的应用(2)
播客是以语音为主,各种基于AI 的语音技术在播客领域十分重要。 语音转文本 Whisper Whisper 是OpenAI 推出的开源语音辨识工具,可以把音档转成文字,支援超过50 种语言。这款工具是基于68 万小时的训练资料,其中包含11.7 万小时的…...
html的iframe页面给帆软BI发送消息
需求:帆软的网页组件嵌套一个HTML页面,HTML页面要给帆软发消息。 解决方法是:fineReportWindow.duchamp.getWidgetByName("txt1").setValue(666); <!DOCTYPE html> <html lang"en"> <head> <…...
Dart语言的字符串处理
Dart语言的字符串处理 目录 引言字符串的定义与基本特性字符串的创建字符串的操作字符串拼接字符串截取字符串替换字符串分割字符串查询字符串格式化正则表达式在字符串处理中的应用字符串编码与解码示例代码总结 1. 引言 在现代编程中,字符串处理是一个非常重要…...
迅为RK3576开发板Android 多屏显示
迅为iTOP-3576开发板采用瑞芯微RK3576高性能、低功耗的应用处理芯片,集成了4个Cortex-A72和4个Cortex-A53核心,以及独立的NEON协处理器。它适用于ARM PC、边缘计算、个人移动互联网设备及其他多媒体产品。 1.1 Android 多屏同显 iTOP-RK3576 开发板支持…...
基于SpringBoot+Vue旅游管理系统的设计和实现(源码+文档+部署讲解)
个人名片 🔥 源码获取 | 毕设定制| 商务合作:《个人名片》 ⛺️心若有所向往,何惧道阻且长 文章目录 个人名片环境需要技术栈功能介绍功能说明 环境需要 开发语言:Java 框架:springboot JDK版本:JDK1.8 数据库&…...
Banana Pi BPI-RV2 RISC-V路由开发板采用矽昌通信SF2H8898芯片
Banana Pi BPI-RV2 开源网关是⼀款基于矽昌SF2H8898 SoC的设备,1 2.5 G WAN⽹络接⼝、5 个千兆LAN ⽹络接⼝、板载 512MB DDR3 内存 、128 MiB NAND、16 MiB NOR、M.2接⼝,MINI PCIE和USB 2.0接⼝等。 Banana Pi BPI-RV2 开源网关是矽昌和⾹蕉派开源社…...
【0x3D】HCI_Remote_Host_Supported_Features_Notification事件详解
目录 一、事件概述 二、事件格式及参数说明 2.1. HCI_Remote_Host_Supported_Features_Notification事件格式 2.2. BD_ADDR 2.3. Remote_Host_Supported_Features 三、事件作用 3.1. 设备特性沟通与理解 3.2. 功能协商与性能优化 3.3. 设备管理与配置更新 四、应用场…...
【腾讯云】AI驱动TDSQL-C Serveress 数据库技术实战营-如何是从0到1体验电商可视化分析小助手得统计功能,一句话就能输出目标统计图
欢迎来到《小5讲堂》 这是《腾讯云》系列文章,每篇文章将以博主理解的角度展开讲解。 温馨提示:博主能力有限,理解水平有限,若有不对之处望指正! 目录 背景效果图流程图创建数据库 基本信息数据库配置设置密码控制台开…...
Unity-Mirror网络框架-从入门到精通之RigidbodyBenchmark示例
文章目录 前言示例代码逻辑测试结论性能影响因素最后前言 在现代游戏开发中,网络功能日益成为提升游戏体验的关键组成部分。本系列文章将为读者提供对Mirror网络框架的深入了解,涵盖从基础到高级的多个主题。Mirror是一个用于Unity的开源网络框架,专为多人游戏开发设计,它…...
学习记录1
[SUCTF 2019]EasyWeb 直接给了源代码,分析一下 <?php function get_the_flag(){// webadmin will remove your upload file every 20 min!!!! $userdir "upload/tmp_".md5($_SERVER[REMOTE_ADDR]);if(!file_exists($userdir)){mkdir($userdir);}if…...