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

Ubuntu上进行Zookeeper集群部署

目录
  • 1.zookeeper下载
  • 2.zookeeper安装与使用
  • 3.zookeeper启动
  • 4.zookeeper是什么?为什么要用它?为什么不用Hbase自带的?

1.zookeeper下载

版本无特别要求,一般最新稳定版即可。

这里给出3.8.4的下载链接。(点击即可直接下载)

zookeeper官网:https://zookeeper.apache.org/

2.zookeeper安装与使用

(0)!!! 在开始之前,确保你所有机器的用户名相同,即hadoop@masterhadoop@salve01hadoop@salve02 等,要确保@ 前的用户名相同,避免后续不必要的错误

准备工作,所有机器上都要有
配置好hosts文件
安装JAVA(尽量JDK8)
安装SSH
所有机器上可以互相ping通
master可以免密连接slave节点
用户名都相同

(1)在自己电脑下载好zookeeper之后,粘贴到虚拟机的Downloads里,鼠标右键,点Paste即可粘贴。
注:打开左边第二个图标,打开之后点Downloads,再粘贴
(也可以复制链接到虚拟机的浏览器,直接在虚拟机下载,省的再复制粘贴)

image

(2)解压文件、重命名、授权

sudo tar -zxvf ~/Downloads/apache-zookeeper-3.8.4-bin.tar.gz -C /usr/local
cd /usr/local
sudo mv ./apache-zookeeper-3.8.4-bin ./zookeeper    //如果你的不是3.8.4,根据实际修改
sudo chown -R hadoop ./zookeeper

(3)配置环境变量

sudo vim ~/.bashrc

进入文件后,按上下方向键,翻到最后,插入下面语句(Ctrl+Shift+v 粘贴)

#Zookeeper
export ZOOKEEPER_HOME=/usr/local/zookeeper
export PATH=${ZOOKEEPER_HOME}/bin:$PATH

之后执行source ~/.bashrc 命令刷新环境变量,使配置生效。

(4)新建data和logs目录(data目录用来存放数据库快照,logs目录用来存放日志文件)

cd /usr/local/zookeeper
mkdir logs
mkdir data

注:logs目录中的.out文件为运行日志,可以查看报错信息

(5)配置文件zoo.cfg与myid

注:因为zookeeper使用的配置文件为zoo.cfg,但是自带的是zoo_sample.cfg模板文件,因此可以使用mv 命令重命名,或者直接vim编写新文件。
image

cd /usr/local/zookeeper/conf/
vim zoo.cfg

粘贴下列内容,之后根据自己的实际机器,修改最后几行的内容

注:最后三行, = 后面的master、slave01名字等与hosts文件中配置的相同,即Hadoop@slave01,@后面的slave01.

# The number of milliseconds of each tick
# zookeeper时间配置中的基本单位 (毫秒)
# Zookeeper 服务器之间或客户端与服务器之间维持心跳的时间间隔,单位为毫秒
tickTime=2000  # The number of ticks that the initial synchronization phase can take
# 允许follower初始化连接到leader最⼤时⻓,它表示tickTime时间倍数
# 表示允许从服务器连接到 leader 并完成数据同步的时间,总的时间长度就是 initLimit * tickTime 秒
initLimit=10# The number of ticks that can pass between sending a request and getting an acknowledgement
# 允许follower与leader数据同步最⼤时⻓,它表示tickTime时间倍数
# 配置 Leader 与 Follower 之间发送消息、请求和应答时间长度,最长不能超过多少个 tickTime 的时间长度,总的时间长度就是 syncLimit * tickTime 秒 
syncLimit=5# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just example sakes.
#zookeper 数据存储⽬录及⽇志保存⽬录(如果没有指明dataLogDir,则⽇志也保存在这个⽂件中)
# Zookeeper 保存数据的数据库快照的位置
dataDir=/usr/local/zookeeper/data# 事务日志路径,若没提供的话则用 dataDir
dataLogDir=/usr/local/zookeeper/logs# the port at which the clients will connect
# Zookeeper 服务器监听的端口,以接受客户端的访问请求
#对客户端提供的端⼝号
clientPort=2181# the maximum number of client connections.
# increase this if you need to handle more clients
# 限制连接到 ZK 上的客户端数量,并且限制并发连接数量,值为 0 表示不做任何限制
#单个客户端与zookeeper最⼤并发连接数
#maxClientCnxns=60# Be sure to read the maintenance section of the administrator guide before turning on autopurge.
# http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance# The number of snapshots to retain in dataDir
# 自动清理日志,该参数设置保留多少个快照文件和对应的事务日志文件,默认为 3,如果小于 3 则自动调整为 3
# 保存的数据快照数量,之外的将会被清除
#autopurge.snapRetainCount=3# Purge task interval in hours
# Set to "0" to disable auto purge feature
#自动触发清除任务时间间隔,⼩时为单位。默认为0,表示不⾃动清除。
#autopurge.purgeInterval=1# server.n n是一个数字,表示这个是第几号服务器,“=”后面可跟主机地址或者IP地址,2888为集群中从服务器(follower)连接到主服务器(leader)的端口,为主服务器(leader)使用;3888为进行选举(leader)的时使用的端口
server.1=master:2888:3888
server.2=slave01:2888:3888
server.3=slave02:2888:3888

🚨再次提醒!!!集群部署,需要自行配置最后几行的server,哪个机器需要zookeeper服务,就填哪个机器名。

注1:配置文件时,注释单独一行写,不能写在参数后面,否则在解析时,会把注释内容也识别为参数,导致报错,日志内容如下
image

注2:配置文件时,dataDirdataLogDir的配置路径,不要用环境变量来代替绝对路径,例如dataDir=$ZOOKEEPER_HOME/data 是错误的。 ZooKeeper 的配置文件(zoo.cfg)本身不支持解析环境变量(如 $ZOOKEEPER_HOME),会把它当作普通字符串处理,导致无法正确识别路径。导致报错,日志内容如下
image

(6)压缩文件,并发送到其他机器上

cd /usr/local
tar -zcvf ~/zookeeper.tar.gz ./zookeeper/
scp ~/zookeeper.tar.gz hadoop@slave01:/home/hadoop/
scp ~/zookeeper.tar.gz hadoop@slave02:/home/hadoop/

(7)在slave01和slave02进行解压缩,并配置环境变量

sudo tar -zxvf ~/zookeeper.tar.gz -C /usr/local/
sudo vim ~/.bashrc

粘贴下面的环境变量

#Zookeeper
export ZOOKEEPER_HOME=/usr/local/zookeeper
export PATH=${ZOOKEEPER_HOME}/bin:$PATH

之后执行source ~/.bashrc 命令刷新环境变量,使配置生效。

(8)配置myid文件(所有机器上都要做,包括master、slave)

vim /usr/local/zookeeper/data/myid

myid填写数字,就是zoo.cfg文件中填写的主机名前的数字。只填一个数字就行。
image

image

(9)常用命令

zkServer.sh start    //启动zookeeper
zkServer.sh stop   	 //停止zookeeper
zkServer.sh status   //查看zookeeper运行状态(至少启动两个节点再去查看,不然选举失败,状态也是不正常)
zkServer.sh version  //查看zookeeper版本
zkServer.sh restart  //重启zookeeperzookeeper客户端:
zkCli.sh			//进入zookeeper客户端
quit			    //退出客户端
deleteall 			//删除文件夹及其子文件夹(例:deleteall /hbase)

3.zookeeper启动

在每个机器上都单独输入 zkServer.sh start ,来启动zookeeper。

至少启动两个,然后输入zkServer.sh status 查看启动状态。

注:Hmaster与leader不在同一机器上,是正常现象。实际生产环境中,甚至会刻意将 HMaster 和 ZooKeeper Leader 部署在不同机器。

  1. 避免 “单点故障放大”
    如果二者在同一台机器,一旦该机器宕机,会同时导致 HBase 失去主管理节点、ZooKeeper 集群失去 Leader(需重新选举),双重故障会大幅延长集群恢复时间;分开部署则只会影响单一组件,风险更可控。
  2. 减少资源竞争
    HMaster 需处理 HBase 的 Region 分配、元数据更新等计算;ZooKeeper Leader 需处理大量分布式锁请求(如 HBase 依赖 ZooKeeper 实现 Master 选举、RegionServer 心跳)。二者分开部署可避免 CPU、内存、网络资源的相互抢占,提升各自性能。
  3. 符合 “组件解耦” 设计
    分布式架构的核心原则是 “组件解耦”,HBase 本身就是依赖 ZooKeeper 提供的分布式协调能力(而非依赖其物理节点),只要 HMaster 能通过网络正常连接 ZooKeeper 集群(配置 hbase.zookeeper.quorum 指向 ZooKeeper 集群地址),就无需关心 ZooKeeper Leader 具体在哪台机器。

示例如下

master节点

image

slave01节点

image

slave02节点

image

4.zookeeper是什么?为什么要用它?为什么不用Hbase自带的?

(1)ZooKeeper 是一款开源的分布式协调服务,核心作用是帮分布式系统(由多个独立服务组成的系统)解决配置同步、节点管理、分布式锁等协调问题,让系统运行更稳定、有序。

(2)

  1. 分布式数据库 HBase 用它管理集群节点 ——ZooKeeper 实时监控 HBase 的主节点(Master)和从节点(RegionServer)状态,若主节点故障,能快速从备用节点中选新主节点,避免数据库服务中断;
  2. 电商秒杀场景中,多个服务同时抢库存易超卖,此时用 ZooKeeper 实现 “分布式锁”—— 同一时间只允许一个服务操作库存,确保库存数据准确。

可以类似于:学校运动会的总调度员”
学校运动会有多个项目(对应分布式系统里的多个服务),每个项目需要知道比赛时间、场地安排(对应服务需要的配置信息),还要避免不同项目抢同一跑道(对应服务抢同一资源),且得实时掌握每个项目是否正常进行(对应监控服务节点状态)。
这时总调度员(ZooKeeper)的作用就是:提前把统一的赛程表(配置)发给所有项目组,协调好各项目的场地使用(分布式锁),一旦某个项目出问题(比如裁判缺席),立刻通知替补人员顶上(节点故障切换),确保整个运动会(分布式系统)不混乱、不中断。

(3)HBase 自带 ZooKeeper与独立zookeeper的区别

简单来说就是单独的zookeeper更加灵活、高效、安全

对比维度 HBase 自带 ZooKeeper 单独的 ZooKeeper
部署与维护成本 低:无需单独下载部署,依赖 HBase 脚本启动 / 停止,配置简化(仅需在 HBase 配置文件中指定 ZooKeeper 参数)。 高:需单独下载、配置(如zoo.cfg)、启动,需独立监控和运维,新增组件学习成本。
独立性与生命周期 弱绑定:ZooKeeper 随 HBase 启动而启动、随 HBase 停止而停止,无法单独重启或升级;HBase 故障可能直接影响 ZooKeeper。 完全独立:ZooKeeper 可单独启动、停止、升级,生命周期与 HBase 无关;HBase 重启 / 故障不影响 ZooKeeper 运行。
扩展性 有限:仅支持单机模式或小规模伪集群(默认不支持 ZooKeeper 集群,需手动修改配置但兼容性差),无法满足大规模集群需求。 灵活:支持单机、伪集群、完全分布式集群(3 + 节点,满足高可用),可根据业务规模扩容 ZooKeeper 节点。
稳定性与可靠性 较低:ZooKeeper 与 HBase 共享资源(CPU、内存、磁盘),HBase 高负载时可能导致 ZooKeeper 响应缓慢;无独立监控,故障排查困难。 较高:资源隔离(独立服务器 / 容器),避免 HBase 负载影响;可单独配置监控(如 Zabbix、Prometheus),故障定位更高效。
多组件兼容性 差:仅为 HBase 服务,无法被其他分布式组件(如 Kafka、Spark)复用,导致集群中存在多个 “孤立” ZooKeeper 实例,资源浪费且管理复杂。 好:可作为 “全局协调服务”,为 HBase、Hadoop、Kafka 等多个组件提供统一协调,减少资源冗余,简化集群管理。
版本与升级灵活性 低:ZooKeeper 版本与 HBase 绑定(如 HBase 2.5.0 默认自带 ZooKeeper 3.5.9),升级 ZooKeeper 需先升级 HBase,无法单独适配高版本 ZooKeeper 的新特性(如动态配置)。 高:ZooKeeper 版本可独立选择(需与 HBase 兼容,如 HBase 2.x 支持 ZooKeeper 3.4.x/3.5.x),可单独升级 ZooKeeper,无需依赖 HBase 版本迭代。
适用场景 小规模测试、开发环境、单机伪集群(追求快速搭建,无需高可用)。 生产环境、大规模 HBase 集群、多组件协同的分布式集群(需高可用、稳定性和扩展性)。

相关文章:

Ubuntu上进行Zookeeper集群部署

Ubuntu系统上Zookeeper集群部署安装目录1.zookeeper下载2.zookeeper安装与使用3.zookeeper启动4.zookeeper是什么?为什么要用它?为什么不用Hbase自带的? 1.zookeeper下载 版本无特别要求,一般最新稳定版即可。 这里给出3.8.4的下载链接。(点击即可直接下载) zookeeper官网…...

The Landscape of Agentic Reinforcement Learning综述 - jack

The Landscape of Agentic Reinforcement__Learning for LLMs.pdf https://medium.com/data-science-in-your-pocket/the-landscape-of-agentic-reinforcement-learning-for-llms-a-survey-ed96182d3ed1...

A Survey of Reinforcement Learning for Large Reasoning Models - jack

https://arxiv.org/abs/2509.08827 https://huggingface.co/papers/2509.08827...

r-nacos支持mcp,内置mcp server支持让注册到r-nacos的普通http接口通过r-nacos直接转化成mcp服务对外提供服务。

r-nacos支持mcp,内置mcp server与接口转发;支持让注册到r-nacos的普通http接口通过r-nacos直接转化成mcp服务对外提供服务。r-nacos支持mcp,内置mcp server与接口转发;支持让注册到r-nacos的普通http接口通过r-nacos直接转化成mcp服务对外提供服务。 适用场景 如果你有一个…...

MacOS下微信小程序抓包教程

前言 换mac了,折腾一天抓包,终于成功抓上了。 BurpSuite下载: https://www.52pojie.cn/thread-2005151-1-1.html proifier下载:https://www.proxifier.com/ proifier注册机:https://github.com/y9nhjy/Proxifier-Keygen 一、安装proifier 先正常安装proifier本体,打开注册…...

nvm – nodejs版本管理工具

下载 Releases coreybutler/nvm-windows nvm-setup.exe nvm list available #查看可安装版本 如果报错Could not retrieve https://nodejs.org/dist/index.json: Get "https://nodejs.org/dist/index.json": dial tcp xxx.2x.xx.xxx:xxx: i/o timeoutnvm proxy http…...

财务系统里面,怎么合并使用两个经费本号

财务系统里面,怎么合并使用两个经费本号 把一个经费本号填好之后,正常填写,到提交的那个界面,不要提交。 一直点击 上一步, 到可以填写经费本号的那个界面。再填写第二个经费本号。点击下一步,再填写。最后提交即可。...

【火电机组、风能、储能】高比例风电电力系统储能运行及配置分析(Matlab代码实现) - 详解

【火电机组、风能、储能】高比例风电电力系统储能运行及配置分析(Matlab代码实现) - 详解pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco&qu…...

新范式-LLaDA-VLA 基于扩散模型 VLA模型 - jack

https://mp.weixin.qq.com/s/fwOGuKy2Wtz_xXx3nCT28w 论文题目:LLaDA-VLA: Vision Language Diffusion Action Models 论文链接:https://arxiv.org/abs/2509.06932 项目主页:https://wenyuqing.github.io/llada-vla/ 论文时间:Sep, 8, 2025 作者单位:中科大,南京大学,原…...

Redis是如何进行内存管理的?缓存中有哪些常见问题?如何实现分布式锁?

Redis内存管理 Redis的内存用完了会怎样? 如果达到设置的上限,Redis的写命令会返回错误信息(但是读命令还可以正常返回)。 也可以配置内存淘汰机制,当Redis达到内存上限时会冲刷掉旧的内容。 Redis如何做内存优化? 可以好好利用Hash,list,sorted set,set等集合类型数据,…...

5 遥感与机器学习第三方库安装 - 详解

5 遥感与机器学习第三方库安装 - 详解pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", monospace !important…...

移远OPENCPU笔记

OPENCPU 支持的操作系统:Linux、ThreadX 芯片平台:国产ASRqq:505645074...

2025.9.16——1绿

普及+/提高 P3155 [CQOI2009] 叶子的染色 昨天用贪心写只拿了部分分,wpmx告诉我要用DP,但当时因为要赶作业没时间写。 今天补上了。...

Unity游戏开发:互动小游戏的技术实现与运营盈利之道

在数字化娱乐飞速发展的当下,互动小游戏凭借其独特的趣味性与强交互性,深受广大用户喜爱。从热闹非凡的线下活动,到流量庞大的线上平台,互动小游戏都展现出了强大的影响力与商业价值。在众多游戏开发引擎中,Unity以其卓越的性能和广泛的适用性,成为了互动小游戏开发的首选…...

如何实现主线程捕获子线程异常

一、基础概念...

LGP5688 [CSP-S-JX 2019] 散步 学习笔记

LGP5688 [CSP-S-JX 2019] 散步 学习笔记 Luogu Link 前言 一题多解这一块。 题意简述 \(n\) 个人在公园内散步。公园可以看作一个环形,上有 \(m\) 个出口,按逆时针顺序记作 \(1\) 号口到 \(m\) 号口。 环总长 \(V\) 米。记 \(a_i\) 为 \(i\) 号出口从 \(1\) 号口按逆时针走到…...

少儿练字控笔字帖

握笔和控笔是写好字的基础 准备了一些基本的控笔练习字帖少儿练字控笔字帖下载...

架构师必备:缓存更新模式总结

大家好,我是Java烘焙师。如何更新缓存和DB、做到性能和一致性的取舍,是一个很常见的话题。下面结合笔者的经验和思考,系统性地总结一下缓存更新模式,讲透讲明白。 1、旁路缓存(cache-aside) 实现方案查询:先查缓存,查不到缓存时再查DB,并把DB内容写入缓存、设置合适的…...

为什么不能在try-catch中捕获子线程的异常 ?

一、基础概念...

sensitive-word 敏感词性能提升14倍优化全过程 v0.28.0 - 实践

sensitive-word 敏感词性能提升14倍优化全过程 v0.28.0 - 实践pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New"…...

2025 PHP 开发者必看得 25 个容易犯的常见错误 90% 的开发者都踩过

2025 PHP 开发者必看得 25 个容易犯的常见错误 90% 的开发者都踩过 前言 PHP 发展到今天,新特性层出不穷,最佳实践也在不断更新。写出干净、高效、好维护的代码,对每个 PHP 开发者来说都很重要。 这篇文章总结了 PHP 开发中最容易踩的坑,以及对应的解决方案。 不管你是刚入…...

一款带有AI功能的markdown工具

大家好,我是晓凡。 写在前面 关注晓凡的同学都知道,晓凡是一名程序员。 平常有空的时候会写写博客,将一些技术干货或者踩过的坑分享给大家。 和我一样写技术博客的小伙伴都知道,平常素材来源太杂:脑子里突然而来的灵感 群里的一张梗图 随手的一张截图 读书看到的一段文字 …...

45万亿!中国智驾的新风口来了

微信视频号:sph0RgSyDYV47z6快手号:4874645212抖音号:dy0so323fq2w小红书号:95619019828B站1:UID:3546863642871878B站2:UID: 3546955410049087 添加图片注释,不超过 140 字(可选)2025年L4智驾场景化应用加速发展,亿欧汽车研究院认为2035年中国L4级别及以上智能驾驶…...

apache poi 导出繁琐的excel表格

apache poi 导出繁琐的excel表格pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", monospace !important; fon…...

Ubuntu Server SSH 连接

使用 SSH 连接(最推荐的方式) 这是最专业、最稳定的方式,特别适合服务器环境:一、在 Ubuntu Server 中确保 SSH 服务已安装并运行: sudo apt update sudo apt install -y openssh-server sudo systemctl enable ssh sudo systemctl start ssh 二、获取虚拟机的 IP 地址: …...

利用竞态条件轻松上传Web Shell

本文详细介绍了如何通过竞态条件漏洞上传PHP Web Shell,使用普通Burp Intruder工具而非Turbo Intruder,包含完整的攻击步骤、PHP代码分析和实战配置,适合初学者理解文件上传漏洞的利用方式。通过竞态条件上传Web Shell(简易方法) 方法特点 本攻击使用普通Burp Intruder而非…...

我亲眼目睹我上海的家长朋友陷进去了

微信视频号:sph0RgSyDYV47z6快手号:4874645212抖音号:dy0so323fq2w小红书号:95619019828B站1:UID:3546863642871878B站2:UID: 354695541004908701我发现在网上很多人都在说不要内卷了,不要卷了,因为我们快被自己人卷死了。我这人天生迟钝,后知后觉的,所以总是赶不上时…...

蔚小理的辅助驾驶,谁最拉跨?

微信视频号:sph0RgSyDYV47z6快手号:4874645212抖音号:dy0so323fq2w小红书号:95619019828B站1:UID:3546863642871878B站2:UID: 3546955410049087汽车诞生以来,从来没试过像现在这样,一台车可以在买回来之后,不花一分钱,表现就能获得提升。而且还不只是那些贵的车型,就…...

C 语言的 printf() 函数

概述 printf() 的作用: Print formatted output to the standard output stream. printf() 的函数原型: int printf( const char *format, argument1, argument2, ... );printf() 函数的基本格式: printf(格式字符串, 待打印项列表);或者写为: printf(格式字符串, 待打印项 1,…...

【GitHub每日速递 250915】3 个宝藏开源项目:超长语音合成、算法学习库、自托管软件导航,开发者速收

原文:【GitHub每日速递 250915】3 个宝藏开源项目:超长语音合成、算法学习库、自托管软件导航,开发者速收 VibeVoice:挑战传统TTS,最长90分钟多角色语音合成神器来袭! VibeVoice 是一个长对话文本转语音模型的开源项目。简单讲,它能将连续的文本内容自然地转换成语音,支…...

C 语言头文件

两种写法: #include <stdio.h> // 编译系统在系统头文件所在目录搜索 #include "stdlib.h" // 编译系统首先在当前的源文件目录中查找 stdlib.h,找不到的话,再转向系统头文件所在目录搜索引用系统头文件时,使用两种形式都可以,但是 #include <> 的…...

AFL++环境搭建

第 1 步:更新软件源并安装基本工具 首先更新软件包列表 sudo apt update 升级现有软件包 sudo apt upgrade -y 安装基本编译工具(包括gcc) sudo apt install -y build-essential 安装Python3和相关工具 sudo apt install -y python3 python3-dev python3-pip 创建python符号…...

晚安

cai~一定是做梦,不然还能是什么,对不对? 总之就是梦到一年前的自己对我说话: 第一句:变菜了 第二句:本来就挺菜 然后开始大笑,前车窗上晃动着一双眼睛,小,但是不瞎。...

读人形机器人12体育领域

读人形机器人12体育领域1. 体育领域 1.1. 在体育竞技这个不断挑战人类极限的领域,人形机器人正以教练和训练助手的身份进入 1.2. 由金属材料、代码和AI技术打造的机器人,正在革新运动员的训练方式、恢复过程和竞技表现 2. 个性化训练计划 2.1. 追求卓越的运动表现既是一门科学…...

【QT】C++基础

前言 目前打算一周内学习QT的基本使用,从此篇"C++基础"文章开始记录分享学习经验。 C++及其各种定义C++是面向对象的,什么是面向对象,什么是面向过程? 举例 计算a+b的值: C语言,直接计算a+b;C++,先将a+b封装,封装到类里面形成一个方法,然后再通过这个类去…...

安全研究者的MCP服务器宝典:BugBounty工具集锦

本资源库汇集了多个专为漏洞赏金、渗透测试和信息安全研究设计的MCP服务器,提供一站式安全工具整合,帮助安全专业人员高效开展授权安全测试和研究工作。BugbountiesMCP 一个专为漏洞赏金、渗透测试和信息安全研究设计的Model Context Protocol (MCP) 服务器综合列表资源库。 …...

Unity的VisualStudio工程链接不同步、显示异常处理方法

前段时间,在某次更新项目工程后,原本好好的VS工程,变得不认Unity_Editor的宏、Using显示不正确了,一般来说,这个在Unity使用中,很常见,通用解决办法是:在Unity的Extrenal Tool里有一个Regenerate的按钮,直接重新生成解决方案。 关了Unity工程,到路径里把sln和proj这些…...

Java 高性能与可维护性实战:从语言特性到工程化全链路

一、设计目标:为什么“快”和“稳”必须同时追 在真实业务里,“快”(吞吐、延迟)与“稳”(可维护、可演进)往往拉扯。高性能带来的复杂度不应成为维护负担,而可维护的抽象也不应牺牲关键路径。可落地的目标是:可预测性能:接口在 SLA 下延迟稳定,P95/P99 可控。渐进式…...

二叉树的递归遍历

前中后序的递归遍历 递归算法的三要素确定递归函数的参数和返回值:要确定哪些参数是递归过程中需要处理的,需要处理的就在递归函数里面加上这个参数;然后确定每次返回的递归值是什么; 确定终止条件:必须写终止条件;如果不写终止条件就会栈溢出; 确定单层递归的逻辑: 确…...

我的大学成长与规划

大家好,我是李思慧,一名计算机科学与技术专业的大二学生。生活里,我是个爱折腾的人,喜欢在文字的世界里遨游,也热衷于用视频和图片记录生活、表达创意。 在信工分团委宣传部当干事到现在的部长,是我成长很快的一段时光。从最开始跟着学长学姐学习写各种活动和通知的推文,…...

【笔记】拉格朗日插值

拉格朗日插值的推导对于一个 \(n\) 次多项式 \(f(x) = \sum_{k = 0}^n a_kx^k\),我们只要知道它在 \(n+1\) 个不同点处的取值,就可以进一步解出它的系数 但使用高斯消元法的时间复杂度是 \({\cal O}(n^3)\) 的,如果我们只是想知道这个多项式在某一点 \(x\) 处的值,希望有复…...

自定义渲染管线(Unity Cocos)

参考链接: 团结引擎 - 手册: 在自定义渲染管线中创建简单渲染循环 可定制渲染管线(Deprecated) | Cocos Creator Custom SRP - Custom Render Pipeline | 三叔的数字花园 自定义渲染管线_Unity SRP从零搭建一套图形渲染管线_UWA学堂(翻译的Catlik,还收费) Unity Custom S…...

这是一个测试

这是一个测试...

文献阅读 | Survey of Hallucination in Natural Language Generation

问题描述 本文主要讲了NLG中的幻觉现象 幻觉定义:模型生成不忠实于源内容或无意义的文本 幻觉分类:内在幻觉(矛盾、完全错误的)、外在幻觉(无法被验证) 幻觉危害:隐私泄露 成因:评估指标:统计 metric:基于 n-gram 重叠,如 PARENT(结合源和目标)、Knowledge F1(对…...

技术 | LLaMA Factory微调记录重修版

之前投的那篇教程我自己回看一遍都不太搞得明白,从新梳理一遍 1. 云服务器准备 恒源云 (gpushare.com) 配置建议:GPU: RTX 3090 (24GB) 或 RTX 4090 (24GB) 系统: Ubuntu 20.04/22.04 存储: 至少 50GB 空间2. 环境检查与初始化 # 检查GPU状态 nvidia-smi# 检查系统信息 df -h…...

支付中心的钱包类业务应该怎么设计

钱包类业务在支付行业里有一些比较固定的模式(无论是支付宝余额宝、微信零钱,还是 Stripe Balance / Paytm Wallet),基本设计目标是:余额和资金安全:必须有严格的账实一致、幂等和防篡改能力。高并发读写:充值/消费/退款频繁,要求快速的扣减和回滚能力。清晰的流水:任…...

MySQL索引浅析

NORMAL:普通索引,仅用于加速查询,允许字段值重复。 UNIQUE:唯一索引,不仅能加速查询,还会强制字段值的唯一性(即该字段下的值不能重复)。 FULLTEXT:全文索引,用于全文搜索场景(如文章内容的关键词检索)。 SPATIAL:空间索引,用于地理空间数据类型(如 GEOMETRY、P…...

WF 2025 游记

第一次出国旅行因为错误在 EC-Final 显神威成功出线,我得以以 RCDS 随队人员的身份作为 ICPC Guest 参与 2025 ICPC World Final Baku. Day -5 ​ 被然叔拉到苏州给软件杯打工。 ​ 出站时落雨大暴,翻书包发现没有雨伞,凌乱中就看到然叔开着辆绿色 SUV 过来接我,到了苏州大…...

17.时间处理

17.时间处理日期和时间是日常编程常用的功能之一。如果没有日期和时间,会导致很多功能无法实现,例如日志记录、定时任务、时间延迟等。Go标准库提供了操作日期和时间的方法。在提到时间,还需要注意不同地区的时间会不一样,所以这里还需要考虑到不同时区、不同历法等带来的影…...

[MCP][02]快速入门MCP开发

快速入门MCP Server和MCP Client 开发,以及Client集成LLM前言 很多文档和博客都只介绍如何开发MCP Server,然后集成到VS Code或者Cursor等程序,很少涉及如何开发MCP Host和MCP Client。如果你想要在自己的服务中集成完整的MCP功能,光看这些是远远不够的。所以本文及后续的M…...