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

kafka3.X集群安装(不使用zookeeper)

参考: 【kafka专栏】不用zookeeper怎么安装kafka集群-最新kafka3.0版本

一、kafka集群实例角色规划

在本专栏的之前的一篇文章《kafka3种zk的替代方案》已经为大家介绍过在kafka3.0种已经可以将zookeeper去掉。

上图中黑色代表broker(消息代理服务),褐色/蓝色代表Controller(集群控制器服务)

  • 左图(kafka2.0):一个集群所有节点都是broker角色,kafka从三个broker中选举出来一个Controller控制器,控制器将集群元数据信息(比如主题分类、消费进度等)保存到zookeeper,用于集群各节点之间分布式交互。
  • 右图(kafka3.0):假设一个集群有四个broker,指定三个作为Conreoller角色(蓝色),从三个Controller中选举出来一个Controller作为主控制器(褐色),其他的2个备用。zookeeper不再被需要!相关的元数据信息以kafka日志的形式存在(即:以消息队列消息的形式存在)。
  • controller通信端口:9093, 作用与zk的2181端口类似 。

在搭建kafka3.0集群之前, 我们需要先做好kafka实例角色规划。(四个broker, 需要通过主动配置指定三个作为Controller, Controller需要奇数个, 这一点和zk是一样的)

主机名称ip角色node.id
kafka-vm1192.168.1.111broker,controller1
kafka-vm2192.168.1.112broker,controller2
kafka-vm3192.168.1.113broker,controller3
kafka-vm4192.168.1.114broker4

二、准备工作

  • kafka3.x不再支持JDK8,建议安装JDK11或JDK17。
  • 新建kafka持久化日志数据mkdir -p /data/kafka;并保证安装kafka的用户具有该目录的读写权限。

各个机器节点执行:

  1. # 安装jdk(kafka3.x不再支持JDK8,建议安装JDK11或JDK17, 这里安装jdk11)
  2. # 下载安装jdk11, 参考: https://blog.csdn.net/justlpf/article/details/127268046
  3. # 下载kafka
  4. adduser kafka
  5. cd /opt
  6. wget https://downloads.apache.org/kafka/3.3.1/kafka_2.12-3.3.1.tgz
  7. tar -xf kafka_2.12-3.3.1.tgz
  8. chown -R kafka:kafka kafka_2.12-3.3.1*
  9. mkdir -p /data/kafka
  10. chown -R kafka:kafka /data/kafka
vi /etc/hosts,各个节点,添加如下内容:
  1. 192.168.1.111 data-vm1
  2. 192.168.1.112 data-vm2
  3. 192.168.1.113 data-vm3
  4. 192.168.1.114 data-vm4

三、修改Kraft协议配置文件

在kafka3.x版本中,使用Kraft协议代替zookeeper进行集群的Controller选举,所以要针对它进行配置。

vi /opt/kafka_2.12-3.3.1/config/kraft/server.properties

具体配置参数如下:

  1. # data-vm1节点
  2. node.id=1
  3. process.roles=broker,controller
  4. listeners=PLAINTEXT://data-vm1:9092,CONTROLLER://data-vm1:9093
  5. advertised.listeners=PLAINTEXT://:9092
  6. controller.quorum.voters=1@data-vm1:9093,2@data-vm2:9093,3@data-vm3:9093
  7. log.dirs=/data/kafka/
  8. # data-vm2节点
  9. node.id=2
  10. process.roles=broker,controller
  11. listeners=PLAINTEXT://data-vm2:9092,CONTROLLER://data-vm2:9093
  12. advertised.listeners=PLAINTEXT://:9092
  13. controller.quorum.voters=1@data-vm1:9093,2@data-vm2:9093,3@data-vm3:9093
  14. log.dirs=/data/kafka/
  15. # data-vm3节点
  16. node.id=3
  17. process.roles=broker,controller
  18. listeners=PLAINTEXT://data-vm3:9092,CONTROLLER://data-vm3:9093
  19. advertised.listeners=PLAINTEXT://:9092
  20. controller.quorum.voters=1@data-vm1:9093,2@data-vm2:9093,3@data-vm3:9093
  21. log.dirs=/data/kafka/
  • node.id:这将作为集群中的节点 ID,唯一标识,按照我们事先规划好的(上文),在不同的服务器上这个值不同。其实就是kafka2.0中的broker.id,只是在3.0版本中kafka实例不再只担任broker角色,也有可能是controller角色,所以改名叫做node节点。
  • process.roles:一个节点可以充当broker或controller或两者兼而有之。按照我们事先规划好的(上文),在不同的服务器上这个值不同。多个角色用逗号分开。
  • listeners: broker将使用9092端口,而kraft controller控制器将使用9093端口。
  • advertised.listeners: 这里指定kafka通过代理暴漏的地址,如果都是局域网使用,就配置PLAINTEXT://:9092即可。
  • controller.quorum.voters:这个配置用于指定controller主控选举的投票节点,所有process.roles包含controller角色的规划节点都要参与,即:zimug1、zimug2、zimug3。其配置格式为:node.id1@host1:9093,node.id2@host2:9093
  • log.dirs:kafka 将存储数据的日志目录,在准备工作中创建好的目录。

所有kafka节点都要按照上文中的节点规划进行配置,完成config/kraft/server.properties配置文件的修改。

四、格式化存储目录

生成一个唯一的集群ID(在一台kafka服务器上执行一次即可),这一个步骤是在安装kafka2.0版本的时候不存在的。

  1. $ /opt/kafka_2.12-3.3.1/bin/kafka-storage.sh random-uuid
  2. SzIhECn-QbCLzIuNxk1A2A

使用生成的集群ID+配置文件格式化存储目录log.dirs,

所以这一步确认配置及路径确实存在,

并且kafka用户有访问权限(检查准备工作是否做对)。

每一台主机服务器都要执行命令:

  1. /opt/kafka_2.12-3.3.1/bin/kafka-storage.sh format \
  2. -t SzIhECn-QbCLzIuNxk1A2A \
  3. -c /opt/kafka_2.12-3.3.1/config/kraft/server.properties

格式化操作完成之后,log.dirs​目录下多出一个Meta.properties文件​,存储了当前的kafka节点的id(node.id),当前节点属于哪个集群(cluster.id)

  1. [root@data-vm2 ~]# ll /data/kafka/
  2. 总用量 8
  3. -rw-r--r--. 1 root root 249 10月 11 18:23 bootstrap.checkpoint
  4. -rw-r--r--. 1 root root 86 10月 11 18:23 meta.properties
  5. $ cat /data/kafka/meta.properties
  6. #
  7. #Tue Apr 12 07:39:07 CST 2022
  8. node.id=1
  9. version=1
  10. cluster.id=SzIhECn-QbCLzIuNxk1A2A

五、 启动集群,完成基础测试

zimug1 zimug2 zimug3是三台应用服务器的主机名称(参考上文中的角色规划),实现方式已经在本专栏《linux主机与ip解析》中进行了说明。将下面的命令集合保存为一个shell脚本,并赋予执行权限。执行该脚本即可启动kafka集群所有的节点,前提是:你已经按照本专栏的《集群各节点之间的ssh免密登录》安装方式做了集群各节点之间的ssh免密登录。

启动命令:

  1. bin/kafka-server-start.sh \
  2. /opt/kafka_2.12-3.3.1/config/kraft/server.properties
  3. # 后台运行
  4. nohup bin/kafka-server-start.sh \
  5. /opt/kafka_2.12-3.3.1/config/kraft/server.properties 2>&1 &

脚本: 

  1. #!/bin/bash
  2. kafkaServers='data-vm1 data-vm2 data-vm3'
  3. #启动所有的kafka
  4. for kafka in $kafkaServers
  5. do
  6. ssh -T $kafka <<EOF
  7. nohup /opt/kafka_2.12-3.3.1/bin/kafka-server-start.sh /opt/kafka_2.12-3.3.1/config/kraft/server.properties 1>/dev/null 2>&1 &
  8. EOF
  9. echo 从节点 $kafka 启动kafka3.0...[ done ]
  10. sleep 5
  11. done

六、一键停止集群脚本

一键停止kafka集群各节点的脚本,与启动脚本的使用方式及原理是一样的。

停止命令:

/opt/kafka_2.12-3.3.1/bin/kafka-server-stop.sh

执行脚本:

  1. #!/bin/bash
  2. kafkaServers='data-vm1 data-vm2 data-vm3'
  3. #停止所有的kafka
  4. for kafka in $kafkaServers
  5. do
  6. ssh -T $kafka <<EOF
  7. cd /opt/kafka_2.12-3.3.1
  8. bin/kafka-server-stop.sh
  9. EOF
  10. echo 从节点 $kafka 停止kafka...[ done ]
  11. sleep 5
  12. done

七、测试Kafka集群

7.1 创建topic

  1. [root@data-vm1 kafka_2.12-3.3.1]# bin/kafka-topics.sh \
  2. --create \
  3. --topic quickstart-events \
  4. --bootstrap-server data-vm4:9092
  5. Created topic quickstart-events.
  6. [root@data-vm1 kafka_2.12-3.3.1]#
  7. #
  8. [root@data-vm1 kafka_2.12-3.3.1]# bin/kafka-topics.sh \
  9. --create \
  10. --topic quickstart-events \
  11. --bootstrap-server data-vm1:9092,data-vm2:9092,data-vm3:9092

7.2 查看topic列表

  1. bin/kafka-topics.sh \
  2. --list \
  3. --bootstrap-server data-vm4:9092
  4. #
  5. bin/kafka-topics.sh \
  6. --list \
  7. --bootstrap-server data-vm1:9092,data-vm2:9092,data-vm3:9092,data-vm4:9092

7.3 查看消息详情

  1. [root@data-vm1 kafka_2.12-3.3.1]# bin/kafka-topics.sh \
  2. --describe \
  3. --topic quickstart-events \
  4. --bootstrap-server data-vm3:9092
  5. Topic: quickstart-events TopicId: zSOJC6wNRRGQ4MudfHLGvQ PartitionCount: 1 ReplicationFactor: 1 Configs: segment.bytes=1073741824
  6. Topic: quickstart-events Partition: 0 Leader: 1 Replicas: 1 Isr: 1
  7. [root@data-vm1 kafka_2.12-3.3.1]#

7.4 生产消息

  1. [root@data-vm1 kafka_2.12-3.3.1]# bin/kafka-console-producer.sh \
  2. --topic quickstart-events \
  3. --bootstrap-server data-vm1:9092
  4. # 参考: 创建并配置topic
  5. bin/kafka-topics.sh \
  6. --bootstrap-server localhost:9092 \
  7. --create \
  8. --topic my-topic \
  9. --partitions 1 \
  10. --replication-factor 1 \
  11. --config max.message.bytes=64000 \
  12. --config flush.messages=1
  13. # ------------------------- 参考 ------------------------ #
  14. # 1: 修改已创建topic配置
  15. # (Overrides can also be changed or set later using the alter configs command.)
  16. bin/kafka-configs.sh \
  17. --bootstrap-server localhost:9092 \
  18. --entity-type topics \
  19. --entity-name my-topic \
  20. --alter \
  21. --add-config max.message.bytes=128000
  22. # 2: 检查已修改的topic配置是否生效
  23. # (To check overrides set on the topic you can do)
  24. bin/kafka-configs.sh \
  25. --bootstrap-server localhost:9092 \
  26. --entity-type topics \
  27. --entity-name my-topic \
  28. --describe
  29. # 3. 恢复到原来的配置
  30. # (To remove an override you can do)
  31. bin/kafka-configs.sh \
  32. --bootstrap-server localhost:9092 \
  33. --entity-type topics \
  34. --entity-name my-topic \
  35. --alter \
  36. --delete-config max.message.bytes
  37. # 4. 增加分区数
  38. # (To add partitions you can do)
  39. bin/kafka-topics.sh \
  40. --bootstrap-server broker_host:port \
  41. --alter \
  42. --topic my_topic_name \
  43. --partitions 40
  44. # 5. 添加配置
  45. # (To add configs:)
  46. bin/kafka-configs.sh \
  47. --bootstrap-server broker_host:port \
  48. --entity-type topics \
  49. --entity-name my_topic_name \
  50. --alter \
  51. --add-config x=y
  52. # 6. 移除配置
  53. # (To remove a config:)
  54. bin/kafka-configs.sh \
  55. --bootstrap-server broker_host:port \
  56. --entity-type topics \
  57. --entity-name my_topic_name \
  58. --alter \
  59. --delete-config x
  60. # 7. 删除topic
  61. # (And finally deleting a topic:)
  62. bin/kafka-topics.sh \
  63. --bootstrap-server broker_host:port \
  64. --delete \
  65. --topic my_topic_name

7.5 消费消息

  1. bin/kafka-console-consumer.sh \
  2. --topic quickstart-events \
  3. --from-beginning \
  4. --bootstrap-server data-vm4:9092

7.6 查看消费者组

  1. # 检查消费者postition
  2. # Checking consumer position
  3. bin/kafka-consumer-groups.sh \
  4. --bootstrap-server localhost:9092 \
  5. --describe \
  6. --group my-group
  7. TOPIC PARTITION CURRENT-OFFSET LOG-END-OFFSET LAG CONSUMER-ID HOST CLIENT-ID
  8. my-topic 0 2 4 2 consumer-1-029af89c-873c-4751-a720-cefd41a669d6 /127.0.0.1 consumer-1
  9. my-topic 1 2 3 1 consumer-1-029af89c-873c-4751-a720-cefd41a669d6 /127.0.0.1 consumer-1
  10. my-topic 2 2 3 1 consumer-2-42c1abd4-e3b2-425d-a8bb-e1ea49b29bb2 /127.0.0.1 consumer-2

7.7 查看消费者组列表

  1. # list all consumer groups across all topics
  2. bin/kafka-consumer-groups.sh \
  3. --bootstrap-server localhost:9092 \
  4. --list
  5. test-consumer-group
  6. # To view offsets, as mentioned earlier,
  7. # we "describe" the consumer group like this:
  8. bin/kafka-consumer-groups.sh \
  9. --bootstrap-server localhost:9092 \
  10. --describe \
  11. --group my-group
  12. TOPIC PARTITION CURRENT-OFFSET LOG-END-OFFSET LAG CONSUMER-ID HOST CLIENT-ID
  13. topic3 0 241019 395308 154289 consumer2-e76ea8c3-5d30-4299-9005-47eb41f3d3c4 /127.0.0.1 consumer2
  14. topic2 1 520678 803288 282610 consumer2-e76ea8c3-5d30-4299-9005-47eb41f3d3c4 /127.0.0.1 consumer2
  15. topic3 1 241018 398817 157799 consumer2-e76ea8c3-5d30-4299-9005-47eb41f3d3c4 /127.0.0.1 consumer2
  16. topic1 0 854144 855809 1665 consumer1-3fc8d6f1-581a-4472-bdf3-3515b4aee8c1 /127.0.0.1 consumer1
  17. topic2 0 460537 803290 342753 consumer1-3fc8d6f1-581a-4472-bdf3-3515b4aee8c1 /127.0.0.1 consumer1
  18. topic3 2 243655 398812 155157 consumer4-117fe4d3-c6c1-4178-8ee9-eb4a3954bee0 /127.0.0.1 consumer4
  19. # 更多配置参考:
  20. # https://kafka.apache.org/32/documentation.html#uses

相关文章:

kafka3.X集群安装(不使用zookeeper)

参考: 【kafka专栏】不用zookeeper怎么安装kafka集群-最新kafka3.0版本 一、kafka集群实例角色规划 在本专栏的之前的一篇文章《kafka3种zk的替代方案》已经为大家介绍过在kafka3.0种已经可以将zookeeper去掉。 上图中黑色代表broker&#xff08;消息代理服务&#xff09;&…...

2023 年 的 DBA 有哪些变化?

作者&#xff1a;Craig S. Mullins 数据库专家&#xff0c;IBM 优化冠军&#xff0c;DB2 金牌顾问以及 IDUG 名人堂成员&#xff0c;数据库类畅销书作者&#xff0c;著有《DB2 Developers Guide》、《Database Administration: The Complete Guide to DBA Practices & Pro…...

vs2022 使用git同步报错以及解决每次推送要输入密码问题

1.使用 git GUI工具&#xff0c;例如&#xff1a;TortoiseGit &#xff0c;把全局配置文件这样设置一下 设置全局.config ,这样即可。 [credential] helper store 2.如果推送代码或拉取代码一直失败&#xff0c;在当前的仓库下面&#xff0c;使用以下命令来重置一下密码 git …...

有哪些适用于 Windows 的PDF 阅读器?免费 PDF 阅读器清单

探索适用于 Windows 10 和 11 的最佳 PDF 阅读器 适用于 Windows 10 和 Windows 11 的最佳 PDF 阅读器让您可以在台式计算机上查看和共享文档。 最好的PDF 编辑器和免费的 PDF 编辑器配备了先进的工具&#xff0c;可以跨不同的操作系统工作。但是&#xff0c;当您只需要查看和…...

避雷!新增2本期刊被标记为「On Hold」,1区TOP刊仍在调查中!

近期小编在Master Journal List上查询期刊时偶然发现&#xff0c;又有2本期刊被科睿唯安标记为「On Hold」&#xff01; 这2本期刊分别为MIGRATION LETTERS和REVISTA DE GESTAO E SECRETARIADO-GESEC. 此外还有6本期刊被标记为「On Hold」&#xff0c;目前共计8本期刊被「On …...

iOS 配置通用链接(Universal Link)服务端和开发者后台都配置好了,还是跳转不到App

目录 一、什么是 Universal Link&#xff1f; 1.背景介绍 2.特点 3.运行机制原理&流程图 二、配置教程 1.第一步&#xff1a;开启 Associated Domains 服务 1.1 开通 Associated Domains 2.第二步&#xff1a;服务器配置 apple-app-site-association&#xff08;AAS…...

【环境】Linux下Anaconda/ Miniconda安装+百度Paddle环境搭建+Cudnn(3090显卡+CUDA11.8+cudnn8.6.0)

清华源帮助链接&#xff1a;https://mirror.tuna.tsinghua.edu.cn/help/anaconda/ 下载链接&#xff1a;https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/ 其他深度学习环境相关博文&#xff1a;【stable-diffusion】4090显卡下dreambooth、lora、sd模型微调的GUI环境…...

【Python机器学习】零基础掌握AdaBoostRegressor集成学习

有没有经历过这样的状况:需要预测未来房价走势,但传统的预测方法并不总是准确? 房价预测一直是人们关注的热点话题,无论是房产商、购房者,还是政府,都需要准确地知道未来房价的走势。那么,有没有一种更加精准、稳定的预测方法呢?答案是有的——AdaBoost Regressor算法…...

各种添加路由的方法

Linux 篇&#xff1a; ipv4: #添加到主机的路由 # route add –host 192.168.168.110 dev eth0 # route add –host 192.168.168.119 gw 192.168.168.1 #添加到网络的路由 # route add –net IP netmask MASK eth0 # route add –net IP netmask MASK gw IP # route add –n…...

MySQL外键

目录 一.外键 1.表与表之间建立关系 2.什么是外键 3.一对多关系 4.多对多关系 &#xff08;1&#xff09;建表会遇到的问题 &#xff08;2&#xff09;解决循环建表的问题 5.一对一关系、 6.小结 二.多表查询 1.数据准备 2.多表查询案例 &#xff08;1&#xff09;…...

自制数据库迁移工具-C版-02-HappySunshineV1.1-(支持Gbase8a)

目录 一、环境信息 二、简述 三、升级点 四、支持功能 五、安装包下载地址 六、配置参数介绍 七、安装步骤 1、配置环境变量 2、生效环境变量 3、检验动态链接是否正常 4、修改配置文件MigrationConfig.txt 八、运行效果 一、环境信息 名称值CPUIntel(R) Core(TM) i…...

k8s创建pod-affinity亲和性时报错解决办法

1.如下报错 Error from server (BadRequest): error when creating “pod-required-affinity-demo-2.yaml”: Pod in version “v1” cannot be handled as a Pod: json: cannot unmarshal string into Go struct field LabelSelectorRequirement.spec.affinity.podAffinity.re…...

基于边缘智能网关的储能系统安全监测管理方案

“储能系统充电”是配套新能源汽车产业发展的重要应用之一。得益于电池技术的发展&#xff0c;新能源汽车正逐步迈入快充时代&#xff0c;由于在使用快速充电桩时&#xff0c;可能导致用电峰值负荷超过电网的承载能力&#xff0c;对于电网的稳定性和持续性会有较大影响&#xf…...

大数据Flink(一百零一):SQL 表值函数(Table Function)

文章目录 SQL 表值函数(Table Function) SQL 表值函数(Table Function) Python UDTF,即 Python TableFunction,针对每一条输入数据,Python UDTF 可以产生 0 条、1 条或者多条输出数据,此外,一条输出数据可以包含多个列。比如以下示例,定义了一个名字为 split 的Pyt…...

内核进程初始化和创建

task_struct 1.进程的状态 分时技术进行多进程调度 重点&#xff1a;进程的创建是如何的&#xff1f; linux在初始化的过程中那个会进行0号进程的创建&#xff0c;fork sched_init(); 做了什么 内核态 不可抢占 用户态 可以抢占 move_to_user_mode(); 把内核状态切换到…...

【进程概念④】:进程地址空间(虚拟内存与物理内存)

【进程概念④】&#xff1a;进程地址空间(虚拟内存与物理内存&#xff09; 一.进程地址空间二.分页与虚拟地址①.what②.how③.why 三.页表细节①.标志位②.缺页中断 四.总结意义 一.进程地址空间 你觉得我们代码中写的数据都在哪存储着呢&#xff1f; 在内存里存着&#xff0…...

C语言内存四分区

四个区域&#xff1a;代码区&#xff0c;全局区&#xff0c;栈区&#xff0c;堆区 ①代码区 存放所写代码&#xff0c;二进制内容 ②全局区&#xff08;又分data区和bss区&#xff09; 存放全局变量&#xff0c;静态变量&#xff0c;常量 data区&#xff1a;已经初始化的全局变…...

数据可视化报表分享:区域管理驾驶舱

在零售数据分析中&#xff0c;区域管理驾驶舱报表是用来分析企业运营数据&#xff0c;以制定销售策略和提高利润。因此这张报表需要整合大量数据&#xff0c;数据整合、分析、指标计算的工作量极大&#xff0c;在讲究高效率、高度及时性的大数据时代&#xff0c;BI数据可视化分…...

解决pip安装包后但是Pycharm检测不到

首先要知道python找包的原理&#xff1a;原理 之后把一下代码打印一下&#xff1a; import sys print(sys.executable)# /usr/bin/python2 print(sys.path)# [/usr/lib/python2.7, /usr/lib/python2.7/dist-packages, /usr/local/lib/python2.7/dist-packages] print(sys.prefi…...

折纸问题

折纸的次数 —— 从上到下的折痕 本质上是中序遍历的问题&#xff0c;因为每一次在已有的折痕后折的时候&#xff0c;当前折痕上的折痕一定为凹&#xff0c;当前折痕下的折痕一定为凸 。实际模拟了一个不存在的二叉树结构的中序遍历。 注&#xff1a;折纸折几次整颗二叉树就有…...

Android Wi-Fi 连接失败日志分析

1. Android wifi 关键日志总结 (1) Wi-Fi 断开 (CTRL-EVENT-DISCONNECTED reason3) 日志相关部分&#xff1a; 06-05 10:48:40.987 943 943 I wpa_supplicant: wlan0: CTRL-EVENT-DISCONNECTED bssid44:9b:c1:57:a8:90 reason3 locally_generated1解析&#xff1a; CTR…...

React Native 导航系统实战(React Navigation)

导航系统实战&#xff08;React Navigation&#xff09; React Navigation 是 React Native 应用中最常用的导航库之一&#xff0c;它提供了多种导航模式&#xff0c;如堆栈导航&#xff08;Stack Navigator&#xff09;、标签导航&#xff08;Tab Navigator&#xff09;和抽屉…...

Python爬虫(一):爬虫伪装

一、网站防爬机制概述 在当今互联网环境中&#xff0c;具有一定规模或盈利性质的网站几乎都实施了各种防爬措施。这些措施主要分为两大类&#xff1a; 身份验证机制&#xff1a;直接将未经授权的爬虫阻挡在外反爬技术体系&#xff1a;通过各种技术手段增加爬虫获取数据的难度…...

论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(一)

宇树机器人多姿态起立控制强化学习框架论文解析 论文解读&#xff1a;交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架&#xff08;一&#xff09; 论文解读&#xff1a;交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化…...

三体问题详解

从物理学角度&#xff0c;三体问题之所以不稳定&#xff0c;是因为三个天体在万有引力作用下相互作用&#xff0c;形成一个非线性耦合系统。我们可以从牛顿经典力学出发&#xff0c;列出具体的运动方程&#xff0c;并说明为何这个系统本质上是混沌的&#xff0c;无法得到一般解…...

代理篇12|深入理解 Vite中的Proxy接口代理配置

在前端开发中,常常会遇到 跨域请求接口 的情况。为了解决这个问题,Vite 和 Webpack 都提供了 proxy 代理功能,用于将本地开发请求转发到后端服务器。 什么是代理(proxy)? 代理是在开发过程中,前端项目通过开发服务器,将指定的请求“转发”到真实的后端服务器,从而绕…...

视频行为标注工具BehaviLabel(源码+使用介绍+Windows.Exe版本)

前言&#xff1a; 最近在做行为检测相关的模型&#xff0c;用的是时空图卷积网络&#xff08;STGCN&#xff09;&#xff0c;但原有kinetic-400数据集数据质量较低&#xff0c;需要进行细粒度的标注&#xff0c;同时粗略搜了下已有开源工具基本都集中于图像分割这块&#xff0c…...

浪潮交换机配置track检测实现高速公路收费网络主备切换NQA

浪潮交换机track配置 项目背景高速网络拓扑网络情况分析通信线路收费网络路由 收费汇聚交换机相应配置收费汇聚track配置 项目背景 在实施省内一条高速公路时遇到的需求&#xff0c;本次涉及的主要是收费汇聚交换机的配置&#xff0c;浪潮网络设备在高速项目很少&#xff0c;通…...

iOS性能调优实战:借助克魔(KeyMob)与常用工具深度洞察App瓶颈

在日常iOS开发过程中&#xff0c;性能问题往往是最令人头疼的一类Bug。尤其是在App上线前的压测阶段或是处理用户反馈的高发期&#xff0c;开发者往往需要面对卡顿、崩溃、能耗异常、日志混乱等一系列问题。这些问题表面上看似偶发&#xff0c;但背后往往隐藏着系统资源调度不当…...

基于Java+MySQL实现(GUI)客户管理系统

客户资料管理系统的设计与实现 第一章 需求分析 1.1 需求总体介绍 本项目为了方便维护客户信息为了方便维护客户信息&#xff0c;对客户进行统一管理&#xff0c;可以把所有客户信息录入系统&#xff0c;进行维护和统计功能。可通过文件的方式保存相关录入数据&#xff0c;对…...