基于Kubernetes的Apache Pulsar云原生架构解析与集群部署指南(下)
文章目录
- k8s安装部署Pulsar集群
- 前期准备
- 版本要求
- 安装 Pulsar Helm chart
- 管理pulsar
- Clusters
- Brokers
- Topic
k8s安装部署Pulsar集群
前期准备
版本要求
- Kubernetes 集群,版本 1.14 或更高版本
- Helm v3(3.0.2 或更高版本)
- 数据持久化(本文使用NFS CSI动态供给)
K8s集群信息
[root@master ~]# kubectl get node
NAME STATUS ROLES AGE VERSION
master Ready control-plane 77d v1.24.2
worker1 Ready <none> 77d v1.24.2
worker2 Ready <none> 77d v1.24.2
worker3 Ready <none> 4d18h v1.24.2
Helm安装
wget https://get.helm.sh/helm-v3.17.2-linux-amd64.tar.gz
tar xf helm-v3.17.2-linux-amd64.tar.gz
chown root:root helm
mv linux-amd64/helm /usr/local/sbin/
helm version
NFS server部署
本文使用yum 包部署nfs server
nfs server主机安装nfs相关软件包
yum install nfs-utils -y
启动nfs server 相关服务
sudo systemctl start rpcbind
systemctl enable rpcbind
systemctl start nfs-server
systemctl enable nfs-server
配置nfs共享目录导出
(/nfsdata目录为主机单独一块磁盘的挂载点,需提前配置完成。)
vim /etc/exports
/nfsdata 192.168.61.0/24(rw,sync,no_subtree_check,no_root_squash)
导出共享目录
exportfs -ra
为数据持久化部署csi storageclass
本文使用nfs csi storageclass,但nfs不具有高可用性,生产环境建议使用ceph,glusterfs分布式的存储解决方案。
在 Kubernetes 中,NFS CSI(Container Storage Interface)StorageClass 提供了一种标准化的方式来动态供应基于 NFS(Network File System)的持久化存储卷。通过使用 NFS CSI 驱动程序和相应的 StorageClass,用户可以更方便地请求、分配和管理持久化存储资源,而无需手动创建 PersistentVolume(PV)。
nfs csi storageclass安装部署步骤参考:
https://github.com/kubernetes-csi/csi-driver-nfs
安装 Pulsar Helm chart
添加 Pulsar repo
helm repo add apache https://pulsar.apache.org/charts
helm repo update
列出可部署的版本,可以看出chart和pulsar的版本并非一一对应。
本文要安装的pulsar版本为2.10.2,因此选择pulsar heml对应版本为3.0.0
[root@master pulsar-helm-chart]# helm search repo apache/pulsar --versions
NAME CHART VERSION APP VERSION DESCRIPTION
apache/pulsar 4.0.0 4.0.3 Apache Pulsar Helm chart for Kubernetes
apache/pulsar 3.9.0 4.0.2 Apache Pulsar Helm chart for Kubernetes
apache/pulsar 3.8.0 4.0.1 Apache Pulsar Helm chart for Kubernetes
apache/pulsar 3.7.0 4.0.0 Apache Pulsar Helm chart for Kubernetes
apache/pulsar 3.6.0 3.0.7 Apache Pulsar Helm chart for Kubernetes
apache/pulsar 3.5.0 3.0.6 Apache Pulsar Helm chart for Kubernetes
apache/pulsar 3.4.1 3.0.5 Apache Pulsar Helm chart for Kubernetes
apache/pulsar 3.4.0 3.0.4 Apache Pulsar Helm chart for Kubernetes
apache/pulsar 3.3.1 3.0.3 Apache Pulsar Helm chart for Kubernetes
apache/pulsar 3.3.0 3.0.2 Apache Pulsar Helm chart for Kubernetes
apache/pulsar 3.2.0 3.0.2 Apache Pulsar Helm chart for Kubernetes
apache/pulsar 3.1.0 3.0.2 Apache Pulsar Helm chart for Kubernetes
apache/pulsar 3.0.0 2.10.2 Apache Pulsar Helm chart for Kubernetes
apache/pulsar 2.9.4 2.9.3 Apache Pulsar Helm chart for Kubernetes
从helm仓库中下载指定版本的pulsar helm chart 安装包
helm pull apache/pulsar --version 3.0.0
pulsar-3.0.0.tgztar xf pulsar-3.0.0.tgz
cd pulsarls -l
总用量 68K
-rw-r--r-- 1 root root 253 10月 21 2022 Chart.lock
drwxr-xr-x 3 root root 4.0K 4月 23 22:01 charts
-rw-r--r-- 1 root root 529 10月 21 2022 Chart.yaml
-rw-r--r-- 1 root root 13K 10月 21 2022 LICENSE
-rw-r--r-- 1 root root 167 10月 21 2022 NOTICE
drwxr-xr-x 2 root root 4.0K 4月 23 22:01 templates
-rw-r--r-- 1 root root 32K 4月 24 10:48 values.yaml
通过修改配置文件指定pulsar版本
vim scripts/pulsar/common_auth.sh
…
PULSAR_VERSION="2.10.2"
…
参考以下内容修改values.yaml文件
namespace: "pulsar"
initialize: true
volumes:persistence: truelocal_storage: false
…
components:# zookeeperzookeeper: true
…# pulsar managerpulsar_manager: true
…
images:zookeeper:repository: apachepulsar/pulsar-all# uses defaultPulsarImageTag when unspecifiedtag: 2.10.2pullPolicy: IfNotPresentbookie:repository: apachepulsar/pulsar-all# uses defaultPulsarImageTag when unspecifiedtag: 2.10.2pullPolicy: IfNotPresent
…pulsar_manager:repository: apachepulsar/pulsar-managertag: v0.3.0pullPolicy: IfNotPresent
hasCommand: false
…
zookeeper:
volumes:persistence: truedata:storageClassName: nfs-csi
…
bookkeeper:
volumes:
persistence: true
journal:name: journalsize: 10Gilocal_storage: falsestorageClassName: nfs-csiledgers:name: ledgerssize: 50Gilocal_storage: falsestorageClassName: nfs-csi
…
kube-prometheus-stack:enabled: false
…
使用 Pulsar Helm将 Pulsar 集群安装到 Kubernetes。
helm install \--values values.yaml \--set initialize=true \--version 3.0.0 \pulsar01 apache/pulsar
查看pod的状态
[root@master pulsar]# kubectl get pod -n pulsar
NAME READY STATUS RESTARTS AGE
pulsar01-bookie-0 1/1 Running 0 13h
pulsar01-bookie-1 1/1 Running 0 13h
pulsar01-bookie-2 1/1 Running 0 13h
pulsar01-bookie-init-zb9gt 0/1 Completed 0 13h
pulsar01-broker-0 1/1 Running 3 (12h ago) 13h
pulsar01-broker-1 1/1 Running 3 (12h ago) 13h
pulsar01-broker-2 1/1 Running 1 (13h ago) 13h
pulsar01-proxy-0 1/1 Running 0 13h
pulsar01-pulsar-init-6zcx5 0/1 Completed 0 13h
pulsar01-pulsar-manager-f856cd9c6-fzj72 1/1 Running 0 33m
pulsar01-recovery-0 1/1 Running 0 13h
pulsar01-toolset-0 1/1 Running 0 13h
pulsar01-zookeeper-0 1/1 Running 0 13h
pulsar01-zookeeper-1 1/1 Running 0 13h
pulsar01-zookeeper-2 1/1 Running 0 13h
查看svc
[root@master pulsar]# kubectl get svc -n pulsar
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
pulsar01-bookie ClusterIP None <none> 3181/TCP,8000/TCP 13h
pulsar01-broker ClusterIP None <none> 8080/TCP,6650/TCP 13h
pulsar01-proxy LoadBalancer 10.96.97.171 <pending> 80:31682/TCP,6650:30689/TCP 13h
pulsar01-pulsar-manager LoadBalancer 10.100.16.216 <pending> 9527:31991/TCP 33m
pulsar01-recovery ClusterIP None <none> 8000/TCP 13h
pulsar01-toolset ClusterIP None <none> <none> 13h
pulsar01-zookeeper ClusterIP None <none> 8000/TCP,2888/TCP,3888/TCP,2181/TCP 13h
查看pvc
[root@master pulsar]# kubectl get pvc -n pulsar
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
pulsar01-bookie-journal-pulsar01-bookie-0 Bound pvc-c86bb6dd-d98e-4b0f-b9f0-c67c169a5255 10Gi RWO nfs-csi 13h
pulsar01-bookie-journal-pulsar01-bookie-1 Bound pvc-e7c2935d-d4cf-4cad-8d63-5dc87dbcae5a 10Gi RWO nfs-csi 13h
pulsar01-bookie-journal-pulsar01-bookie-2 Bound pvc-9dfa73ec-8512-495a-ad6d-d3141a97128d 10Gi RWO nfs-csi 13h
pulsar01-bookie-journal-pulsar01-bookie-3 Bound pvc-1f038b9a-4d0d-46c8-89ca-dc8f630ade76 10Gi RWO nfs-csi 13h
pulsar01-bookie-ledgers-pulsar01-bookie-0 Bound pvc-8fcb5205-eef2-4903-90e4-68499746c8d8 50Gi RWO nfs-csi 13h
pulsar01-bookie-ledgers-pulsar01-bookie-1 Bound pvc-4412bca2-4314-4fd6-9fb0-85bf1472fd53 50Gi RWO nfs-csi 13h
pulsar01-bookie-ledgers-pulsar01-bookie-2 Bound pvc-a0fae489-99f9-4f39-ba7d-a543d2691502 50Gi RWO nfs-csi 13h
pulsar01-bookie-ledgers-pulsar01-bookie-3 Bound pvc-0124e56b-0c28-4b24-92be-019acb8331a8 50Gi RWO nfs-csi 13h
pulsar01-zookeeper-data-pulsar01-zookeeper-0 Bound pvc-81219d17-27f6-4ee0-864c-9f1a296f85cd 20Gi RWO nfs-csi 13h
pulsar01-zookeeper-data-pulsar01-zookeeper-1 Bound pvc-8571b0c0-9ad9-4a5c-9582-0a81fda4c6ff 20Gi RWO nfs-csi 13h
pulsar01-zookeeper-data-pulsar01-zookeeper-2 Bound pvc-ab41f541-c9a1-475b-ab07-cb1b90b47c87 20Gi RWO nfs-csi 13h
在修改values.yaml后可以使用upgrade更新部署
[root@master pulsar]# helm upgrade --values values.yaml --set initialize=true --version 3.0.0 pulsar01 apache/pulsar
Release "pulsar01" has been upgraded. Happy Helming!
NAME: pulsar01
LAST DEPLOYED: Thu Apr 24 10:48:19 2025
NAMESPACE: default
STATUS: deployed
REVISION: 4
TEST SUITE: None
c如何删除集群
[root@master pulsar]# helm list
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION
pulsar01 default 4 2025-04-24 10:48:19.873604446 +0800 CST deployed pulsar-3.0.0 2.10.2 [root@master pulsar]# helm uninstall pulsar01 --namespace pulsar
release "pulsar01 " uninstalled[root@master pulsar]# helm list --namespace pulsar
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION
管理pulsar
Clusters
获取现有集群的配置
I have no name!@pulsar01-toolset-0:/pulsar/bin$ ./pulsar-admin clusters get pulsar01
{"serviceUrl" : "http://pulsar01-broker.pulsar.svc.cluster.local:8080/","serviceUrlTls" : "https://pulsar01-broker.pulsar.svc.cluster.local:8443/","brokerServiceUrl" : "pulsar://pulsar01-broker.pulsar.svc.cluster.local:6650/","brokerServiceUrlTls" : "pulsar+ssl://pulsar01-broker.pulsar.svc.cluster.local:6651/","brokerClientTlsEnabled" : false,"tlsAllowInsecureConnection" : false,"brokerClientTlsEnabledWithKeyStore" : false,"brokerClientTlsTrustStoreType" : "JKS"
}
获取 Pulsar实例中所有集群的列表
I have no name!@pulsar01-toolset-0:/pulsar/bin$./pulsar-admin clusters list
pulsar01I have no name!@pulsar01-toolset-0:/pulsar/bin$ curl -X GET "http://pulsar01-proxy.pulsar.svc.cluster.local/admin/v2/clusters"v2/clusters"
["pulsar01"]
Tenants
列出所有租户
I have no name!@pulsar01-toolset-0:/pulsar/bin$ ./pulsar-admin tenants list
public
pulsarI have no name!@pulsar01-toolset-0:/pulsar/bin$ curl -X GET "http://pulsar01-proxy.pulsar.svc.cluster.local/admin/v2/tenants"
["public","pulsar"]
新创建1个名为my-tenant的租户
I have no name!@pulsar01-toolset-0:/pulsar/bin$ ./pulsar-admin tenants create my-tenant
创建租户时,您可以选择使用-r/–admin-roles 标志分配管理员角色,并使用-c/–
allowed-clusters标志分配集群。您可以以逗号分隔的列表形式指定多个值。
I have no name!@pulsar01-toolset-0:/pulsar/bin$ ./pulsar-admin tenants create my-tenant2 -r role1 -c pulsar01curl -X PUT "http://pulsar01-proxy/admin/v2/tenants/my-tenant3" \
> -H "Content-Type: application/json" \
> -d '{
> "allowedClusters": ["pulsar01"],
> "adminRoles": ["role1"]
> }'
获取现有租户的配置。
I have no name!@pulsar01-toolset-0:/pulsar/bin$ ./pulsar-admin tenants get my-tenant2
{"adminRoles" : [ "role1" ],"allowedClusters" : [ "pulsar01" ]
}I have no name!@pulsar01-toolset-0:/pulsar$ curl -X GET "http://pulsar01-proxy/admin/v2/tenants/my-tenant3"
{"adminRoles":["role1"],"allowedClusters":["pulsar01"]}
删除指定租户
I have no name!@pulsar01-toolset-0:/pulsar/bin$ ./pulsar-admin tenants delete my-tenantI have no name!@pulsar01-toolset-0:/pulsar$ curl -X DELETE "http://pulsar01-proxy/admin/v2/tenants/my-tenant"
Brokers
可以通过以下方式管理broker:
- 工具brokers的命令pulsar-admin
- /admin/v2/brokers管理REST API的端点
列出所有活跃的broker
I have no name!@pulsar01-toolset-0:/pulsar/bin$ ./pulsar-admin brokers list use
pulsar01-broker-2.pulsar01-broker.pulsar.svc.cluster.local:8080
pulsar01-broker-1.pulsar01-broker.pulsar.svc.cluster.local:8080
pulsar01-broker-0.pulsar01-broker.pulsar.svc.cluster.local:8080curl -s -X GET "http://pulsar01-proxy.pulsar/admin/v2/brokers/pulsar01"
["pulsar01-broker-2.pulsar01-broker.pulsar.svc.cluster.local:8080","pulsar01-broker-1.pulsar01-broker.pulsar.svc.cluster.local:8080","pulsar01-broker-0.pulsar01-broker.pulsar.svc.cluster.local:8080"]
列出指定broker拥有和服务的所有命名空间。
I have no name!@pulsar01-toolset-0:/pulsar/bin$ ./pulsar-admin brokers namespaces use --url pulsar01-broker-2.pulsar01-broker.pulsar.svc.cluster.local:8080
pulsar/pulsar01/pulsar01-broker-2.pulsar01-broker.pulsar.svc.cluster.local:8080/0x00000000_0xffffffff [broker_assignment=shared is_controlled=false is_active=true]
pulsar/pulsar01-broker-2.pulsar01-broker.pulsar.svc.cluster.local:8080/0x00000000_0xffffffff [broker_assignment=shared is_controlled=false is_active=true]
public/functions/0x40000000_0x80000000 [broker_assignment=shared is_controlled=false is_active=true]
public/default/0x20000000_0x30000000 [broker_assignment=shared is_controlled=false is_active=true]
获取broker的监控指标数据
I have no name!@pulsar01-toolset-0:/pulsar/bin$ ./pulsar-admin broker-stats monitoring-metrics
此命令输出的内容较多,为json格式,建议使用jq格式化,更易阅读。
涵盖了 Pulsar Broker 的多个关键方面,包括:
- Managed Ledger 缓存性能。
- Topic 加载时间。
- ZooKeeper 交互延迟。
- JVM 性能和资源使用。
- Broker 客户端连接状态。
- 负载均衡资源使用。
查看broker的健康状态
I have no name!@pulsar01-toolset-0:/pulsar/bin$ ./pulsar-admin brokers healthcheck
Ok
查看broker的版本:
I have no name!@pulsar01-toolset-0:/pulsar/bin$ ./pulsar-admin brokers version
2.10.2
Topic
创建topic
I have no name!@pulsar01-toolset-0:/pulsar/bin$ ./pulsar-admin topics create persistent://public/default/my-topic-1
创建3分区的topic
I have no name!@pulsar01-toolset-0:/pulsar/bin$ ./pulsar-admin topics create-partitioned-topic persistent://public/default/my-partitioned-topic --partitions 3
查看topic状态
I have no name!@pulsar01-toolset-0:/pulsar/bin$ ./pulsar-admin topics stats persistent://public/default/my-topic-1I have no name!@pulsar01-toolset-0:/pulsar/bin$ ./pulsar-admin topics partitioned-stats persistent://public/default/my-partitioned-topic --per-partition
Topic增加分区
I have no name!@pulsar01-toolset-0:/pulsar/bin$ ./pulsar-admin topics update-partitioned-topic persistent://public/default/my-partitioned-topic --partitions 6
分区数量应与预期的吞吐量需求相匹配。例如:
- 如果你预计每秒需要处理 100,000 条消息,并且单个分区的吞吐量为 10,000 条/秒,则至少需要 10 个分区。
- 如果你的集群有 5 个 Broker,那么 10 个分区可以均匀分布在这些 Broker 上,每个 Broker 处理 2 个分区
查看指定topic的ledgerId
I have no name!@pulsar01-toolset-0:/pulsar/bin$ ./pulsar-admin topics info-internal persistent://public/default/my-topic
{"version": 7,"creationDate": "2025-04-23T14:29:59.347Z","modificationDate": "2025-04-25T03:54:25.812Z","ledgers": [{"ledgerId": 11,"entries": 36,"size": 1870,"isOffloaded": false},{"ledgerId": 18,"entries": 1,"size": 48,"isOffloaded": false},{"ledgerId": 28,"isOffloaded": false}],
相关文章:
基于Kubernetes的Apache Pulsar云原生架构解析与集群部署指南(下)
文章目录 k8s安装部署Pulsar集群前期准备版本要求 安装 Pulsar Helm chart管理pulsarClustersBrokersTopic k8s安装部署Pulsar集群 前期准备 版本要求 Kubernetes 集群,版本 1.14 或更高版本Helm v3(3.0.2 或更高版本)数据持久化ÿ…...
IoTDB端边云同步技术的五大常见场景及简便使用方式
IoTDB端边云同步技术提供了一种高效、可靠的数据同步解决方案,通过简洁灵活的SQL操作和直观的配置方式,实现了数据在端、边、云之间的无缝流动。以下是IoTDB端边云同步的五大常见场景及其简便的使用方式。 一、基础数据同步 基础数据同步包括全量数据同…...

Linux 阻塞和非阻塞 I/O 简明指南
目录 声明 1. 阻塞和非阻塞简介 2. 等待队列 2.1 等待队列头 2.2 等待队列项 2.3 将队列项添加/移除等待队列头 2.4 等待唤醒 2.5 等待事件 3. 轮询 3.1 select函数 3.2 poll函数 3.3 epoll函数 4. Linux 驱动下的 poll 操作函数 声明 本博客所记录的关于正点原子…...
libtorch配置指南(包含Windows和Linux)
libtorch libtorch是pytorch的c库,提供了用于深度学习和张量计算的功能,允许开发者在c环境中使用pytorch的核心功能。特别是当一些pt模型无法转换到ncnn、mnn等模型时(ncnn、mnn可能还不支持某些层),可以在libtorch直…...

Java开发经验——阿里巴巴编码规范经验总结2
摘要 这篇文章是关于Java开发中阿里巴巴编码规范的经验总结。它强调了避免使用Apache BeanUtils进行属性复制,因为它效率低下且类型转换不安全。推荐使用Spring BeanUtils、Hutool BeanUtil、MapStruct或手动赋值等替代方案。文章还指出不应在视图模板中加入复杂逻…...

机器人手臂“听不懂“指令?Ethercat转PROFINET网关妙解通信僵局
机器人手臂"听不懂"指令?Ethercat转PROFINET网关妙解产线通信僵局 协作机器人(如KUKA iiWA)使用EtherCAT控制,与Profinet主站(如西门子840D CNC)同步动作。 客户反馈:基于Profinet…...

深度学习 CNN
CNN 简介 什么是 CNN? 卷积神经网络(Convolutional Neural Network)是专为处理网格数据(如图像)设计的神经网络。核心组件: 卷积层 :提取局部特征(如边缘、纹理)通过卷…...
GrassRoot备份项目
Windows服务项目 Grass.cs using System; using System.Collections.Generic; using System.Linq; using System.Net; using System.Net.Http.Headers; using System.Net.Http; using System.Text; using System.Threading; using System.Threading.Tasks; using System.Time…...
iOS开发架构——MVC、MVP和MVVM对比
文章目录 前言MVC(Model - View - Controller)MVP(Model - View - Presenter)MVVM(Model - View - ViewModel) 前言 在 iOS 开发中,MVC、MVVM、和 MVP 是常见的三种架构模式,它们主…...
typecho中的Widget设计文档
组成系统的最基本元素 什么是Widget Widget是组成Typecho的最基本元素,除了已经抽象出来的类库外,其它几乎所有的功能都会通过Widget来完成。在实践中我们发现,在博客这种小型但很灵活的系统中实施一些大型框架的思想是不合适的,…...

MySQL索引原理以及SQL优化(二)
目录 1. 索引与约束 1.1 索引是什么 1.2 索引的目的 1.3 索引分类 1.3.1 数据结构 1.3.2 物理存储 1.3.3 列属性 1.3.4 列的个数 1.4 主键的选择 1.5 索引使用场景 1.6 索引的底层实现 1.6.1 索引存储 1.6.2 页 1.6.3 B 树 1.6.4 B 树层高问题 1.6.5 自增 id 1.7 innod…...

MATLAB中矩阵和数组的区别
文章目录 前言环境配置1. 数据结构本质2. 运算规则(1)基本运算(2)特殊运算 3. 函数与操作4. 高维支持5. 创建方式 前言 在 MATLAB 中,矩阵(Matrix) 和 数组(Array) 的概…...

Desfire Ev1\Ev2\Ev3卡DES\3K3DES\AES加解密读写C#示例源码
本示例使用的发卡器:https://item.taobao.com/item.htm?spma21dvs.23580594.0.0.1d292c1bYhsS9c&ftt&id917152255720 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using S…...

MySQL核心内容【完结】
MySQL核心内容 文章目录 MySQL核心内容1.MySQL核心内容目录2.MySQL知识面扩展3.MySQL安装4.MySQL配置目录介绍Mysql配置远程ip连接 5.MySQL基础1.MySQL数据类型1.数值类型2.字符串类型3.日期和时间类型4.enum和set 2.MySQL运算符1.算数运算符2.逻辑运算符3.比较运算符 3.MySQL完…...

C++类和对象进阶 —— 与数据结构的结合
🎁个人主页:工藤新一 🔍系列专栏:C面向对象(类和对象篇) 🌟心中的天空之城,终会照亮我前方的路 🎉欢迎大家点赞👍评论📝收藏⭐文章 文章目录 […...

Django之账号登录及权限管理
账号登录及权限管理 目录 1.登录功能 2.退出登录 3.权限管理 4.代码展示合集 这篇文章, 会讲到如何实现账号登录。账号就是我们上一篇文章写的账号管理功能, 就使用那里面已经创建好的账号。这一次登录, 我们分为三种角色, 分别是员工, 领导, 管理员。不同的角色, 登录进去…...
从一城一云到AI CITY,智慧城市进入新阶段
AI将如何改变城市面貌?AI能否为城市创造新的商业价值?AI的落地应用将对日常生活有什么样的影响? 几乎在每一场和城市发展相关的论坛上,都会出现以上几个问题。城市既是AI技术创新融合应用的综合性载体,普罗大众对AI产…...
Oracle数据库DBF文件收缩
这两天新部署了一套系统,数据库结构保持不变,牵扯导出表结构还有函数,图省事就直接新建用户,还原数据库了。然后咔咔咔,一顿删除delete,truncate,发现要不就是表删了,还有num_rows&a…...

EXCEL中嵌入其他表格等文件
在EXCEL中嵌入其他表格 先放链接:https://jingyan.baidu.com/article/295430f11708c34d7e00509a.html 步骤如下: 1、打开一个需要嵌入新表格的excel表。 2、切换至“插入”菜单中,单击选择“对象”。 3、如下图所示,会弹出“对象…...

21. LangChain金融领域:合同审查与风险预警自动化
引言:当AI成为24小时不眠的法律顾问 2025年某商业银行的智能合同系统,将百万级合同审查时间从平均3周缩短至9分钟,风险条款识别准确率达98.7%。本文将基于LangChain的金融法律框架,详解如何构建合规、精准、可追溯的智能风控体系…...

Springboot使用事件流调用大模型接口
什么是事件流 事件流(Event Stream) 是一种处理和传递事件的方式,通常用于系统中的异步消息传递或实时数据流。在事件驱动架构(Event-Driven Architecture)中,事件流扮演着至关重要的角色。 事件流的概念…...

计算机网络--2
TCP三次握手 TCP连接为什么需要三次握手 1. 由于网络情况复杂,可能会出现丢包现象,如果第二次握手的时候服务器就认为这个端口可用,然后一直开启,但是如果客户端未收到服务器发送的回复,那么就会重新发送请求,服务器就会重新开启一个端口连接,这样就会浪费一个端口。 三…...
【已解决】WORD域相关问题;错误 未找到引用源;复制域出错;交叉引用域到底是个啥
(微软赶紧倒闭 所有交叉引用域,有两个状态:1.锁定。2.手动。可通过编辑->链接查看。 “锁定”状态域的能力: 1. 导出PDF格式稳定(【已解决】WORD导出PDF时,参考文献上标自动被取消/变为正常文本_word…...

尤雨溪宣布:Vue 生态正式引入 AI
在前端开发领域,Vue 框架一直以其易用性和灵活性受到广大开发者的喜爱。 而如今,Vue 生态在人工智能(AI)领域的应用上又迈出了重要的一步。 尤雨溪近日宣布,Vue、Vite 和 Rolldown 的文档网站均已添加了llms.txt文件,这一举措旨在让大型语言模型(LLM)更方便地理解这些…...

蓝桥杯第十六届c组c++题目及个人理解
本篇文章只是部分题目的理解,代码和思路仅供参考,切勿当成正确答案,欢迎各位小伙伴在评论区与博主交流! 题目:2025 题目解析 核心提取 要求的数中至少有1个0、2个2、1个5 代码展示 #include<iostream> #incl…...
【MVCP】基于解纠缠表示学习和跨模态-上下文关联挖掘的多模态情感分析
多处可看出与同专栏下的DCCMCI很像 abstract 多模态情感分析旨在从多模态数据中提取用户表达的情感信息,包括语言、声学和视觉线索。 然而,多模态数据的异质性导致了模态分布的差异,从而影响了模型有效整合多模态互补性和冗余性的能力。此外,现有的方法通常在获得表征后直…...
Go语言--语法基础4--基本数据类型--类型转换
Go 编程语言中 if 条件语句的语法如下: 1 、基本形式 if 布尔表达式 { /* 在布尔表达式为 true 时执行 */ } If 在布尔表达式为 true 时,其后紧跟的语句块执行,如果为 false 则 不执行。 package main import "fmt"…...

硬件工程师笔记——电子器件汇总大全
目录 1、电阻 工作原理 欧姆定律 电阻的物理本质 一、限制电流 二、分压作用 三、消耗电能(将电能转化为热能) 2、压敏电阻 伏安特性 1. 过压保护 2. 电压调节 3. 浪涌吸收 4. 消噪与消火花 5. 高频应用 3、电容 工作原理 (…...

微软推动智能体协同运作:支持 A2A、MCP 协议
今日凌晨,微软宣布 Azure AI Foundry 和 Microsoft Copilot Studio 两大开发平台支持最新 Agent 开发协议 A2A,并与谷歌合作开发扩大该协议,这一举措对智能体赛道意义重大。 现状与变革意义 当前智能体领域类似战国时代,各家技术…...
Qt模块化架构设计教程 -- 轻松上手插件开发
概述 在软件开发领域,随着项目的增长和需求的变化,保持代码的可维护性和扩展性变得尤为重要。一个有效的解决方案是采用模块化架构,尤其是利用插件系统来增强应用的功能性和灵活性。Qt框架提供了一套强大的插件机制,可以帮助开发者轻松实现这种架构。 模块化与插件系统 模…...