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

docker安装etcd:docker离线安装etcd、docker在线安装etcd、etcd镜像下载、etcd配置详解、etcd常用命令、安装常见问题总结

官方网站

官方网址:etcd

二进制包下载:Install | etcd

GitHub社区项目:etcd-io · GitHub

GitHub社区项目版本历史:Releases · etcd-io/etcd · GitHub

一、镜像下载

1、在线下载

在一台能连外网的linux上执行docker镜像拉取命令

docker pull etcd:3.5.18

2、离线包下载

两种方式:

方式一:

-)在一台能连外网的linux上安装docker执行第一步的命令下载镜像

-)导出

# 导出镜像到本地当前目录
docker save -o bitnami_etcd_3_5_18.tar etcd:3.5.18

方式二:

-)Window桌面程序:Docker Desktop

-)下载镜像

-)安装镜像导出插件(说明过程就复用了之前mysql的图)

-)将镜像文件保存到window本地(图略)

3、Community Edition | Docs

Install Etcd on Linux | Docs

官方的下载地址,k8s环境用不上,因为官方没有发布镜像(自行打镜像的除外)

二、安装

1、在线安装

见离线安装(只比离线安装少一步导入动作)

2、离线安装

-)导入镜像

docker load -i bitnami_etcd_3_5_18.tar

-)查看镜像

[docker@GZ***-PM153160 ~]$ docker images
REPOSITORY                                       TAG             IMAGE ID       CREATED         SIZE
bitnami/etcd                                     3.5.18          bdc73d3efea1   4 days ago      190MB

-)创建映射目录

创建redis配置文件目录、数据文件目录,并修改目录权限

sudo mkdir -p /opt/etcd/docker-etcd/conf
sudo mkdir -p /data1/etcd/docker-etcd/data
sudo mkdir -p /data1/etcd/docker-etcd/log
sudo chown -R docker.docker /opt/etcd
# 作者data1目录下全是docker用户程序数据,所以没有指定子目录
sudo chown -R docker.docker /data1
# sudo chown -R docker.docker /data1/etcd

-)启动容器

docker run -d \--name my-etcd-server5 \-v /data1/etcd-data:/data \-e "ETCD_ROOT_PASSWORD=iam***#T123" \-p 2379:2379 \-p 2380:2380 \-d bdc73d3efea1

这个命令做了以下几件事:

  • --name my-etcd-server5:给容器命名为my-etcd-server5

  • -d:让容器在后台运行。

  • -p 6380:6379:将容器的6379端口映射到宿主机的6380端口,这是Redis的服务端口。

  • -v 映射数据文件目录和日志文件目录,左边的是外部目录,右边的是容器目录

  •  -e "ETCD_ROOT_PASSWORD=iam***#T123"  环境变量指定密码

-)查看容器

[docker@GZ***-PM153160 ~]$ docker ps 
CONTAINER ID   IMAGE                                     COMMAND                  CREATED          STATUS          PORTS                                                                                                                                             NAMES
bc7bbe2026b6   bdc73d3efea1                              "/opt/bitnami/script…"   10 minutes ago   Up 10 minutes   0.0.0.0:12379->2379/tcp, [::]:12379->2379/tcp, 0.0.0.0:12380->2380/tcp, [::]:12380->2380/tcp                                                      ctc-etcd-server5

-)从容器内部拷贝配置文件

[docker@GZ***-PM153160 ~]$ docker cp db867a1bae9a:/etc/etcd/etcd.conf /opt/etcd/docker-redis/conf/etcd.conf 
Successfully copied 1.54kB to /opt/etcd/docker-etcd/conf/etcd.conf
[docker@GZ***-PM153160 ~]$ 

bitnami版(作者当前版本),一般作者不用这个,可作者写文章时下错了,不过不影响读者参考

[docker@GZ***-PM153160 ~]$ docker cp db867a1bae9a:/opt/bitnami/etcd/conf/etcd.conf /opt/etcd/docker-etcd/conf/etcd.conf 
Successfully copied 1.54kB to /opt/etcd/docker-etcd/conf/etcd.conf
[docker@GZ***-PM153160 ~]$ 

-)调整其他配置(可选)

vi /opt/etcd/docker-etcd/conf/etcd.conf

按需修改后,删除原容器,添加配置文件映射参数后重新创建容器

docker run -d \--name my-etcd-server5 \-v /data1/etcd-data:/data \-e "ETCD_ROOT_PASSWORD=iam***#T123" \-p 2379:2379 \-p 2380:2380 \-d bdc73d3efea1

-)重启容器

[docker@GZ***-PM153160 ~]$ docker restart bc7bbe2026b6
bc7bbe2026b6

三、ETCD配置详解

1、etcd成员相关的配置项

--name 'default'  为该成员指定一个易读的名称。--data-dir '${name}.etcd'  数据存储目录的路径。--wal-dir ''  用于存放专用WAL(Write-Ahead Log)的目录路径。--snapshot-count '100000'  触发快照到磁盘的已提交事务数量。--heartbeat-interval '100'  心跳间隔时间(毫秒)。--election-timeout '1000'  选举超时时间(毫秒)。详见调优文档。--initial-election-tick-advance 'true'  是否在启动时加速初始选举计时,从而加快选举速度。--listen-peer-urls 'http://localhost:2380'  用于监听对等节点流量的URL列表。--listen-client-urls 'http://localhost:2379'  用于监听客户端 gRPC 和 HTTP 流量的 URL 列表(当未指定 --listen-client-http-urls 时生效)。--listen-client-http-urls ''  仅用于 HTTP 客户端流量的 URL 列表。启用此标志会将 HTTP 服务从 --listen-client-urls 中移除。--max-snapshots '5'  保留的最大快照文件数量(0表示不限制)。--max-wals '5'  保留的最大WAL文件数量(0表示不限制)。--quota-backend-bytes '0'  当后端大小超过给定配额时触发警报(0表示使用默认低空间配额)。--backend-bbolt-freelist-type 'map'  指定Boltdb后端使用的freelist类型(支持 array 和 map 类型)。--backend-batch-interval ''  提交后端事务前的最大时间间隔。--backend-batch-limit '0'  提交后端事务前的最大操作数。--max-txn-ops '128'  每个事务允许的最大操作数。--max-request-bytes '1572864'  服务器可接受的客户端请求的最大字节数。--grpc-keepalive-min-time '5s'  客户端在发送ping请求前应等待的最短时间间隔。--grpc-keepalive-interval '2h'  服务器向客户端发送ping以检查连接是否存活的频率(0表示禁用)。--grpc-keepalive-timeout '20s'  在关闭无响应连接前的额外等待时间(0表示禁用)。--socket-reuse-port 'false'  启用后允许监听器设置SO_REUSEPORT选项,支持对已使用端口的重新绑定。--socket-reuse-address 'false'  启用后允许监听器设置SO_REUSEADDR选项,支持绑定处于TIME_WAIT状态的地址。

2、Etcd集群引导和发现配置参数

--initial-advertise-peer-urls 'http://localhost:2380'  向集群中其他成员宣传的该节点的对等节点URL列表。--initial-cluster 'default=http://localhost:2380'  引导时的初始集群配置。--initial-cluster-state 'new'  初始集群状态('new'表示新集群,'existing'表示已有集群)。--initial-cluster-token 'etcd-cluster'  引导期间用于etcd集群的初始集群令牌。  指定该令牌可防止在运行多个集群时出现意外的跨集群交互。--advertise-client-urls 'http://localhost:2379'  向外部公开宣传的该节点的客户端URL列表。  这些URL应可供与etcd集群通信的机器访问,etcd客户端库会解析这些URL以连接到集群。--discovery ''  用于集群引导的发现URL。--discovery-fallback 'proxy'  当发现服务失败时的预期行为('exit'或'proxy')。  'proxy'仅支持v2 API。--discovery-proxy ''  访问发现服务时使用的HTTP代理。--discovery-srv ''  用于引导集群的DNS SRV域。--discovery-srv-name ''  引导时查询的DNS SRV名称后缀。--strict-reconfig-check 'true'  拒绝可能导致法定人数丧失的重新配置请求。--pre-vote 'true'  启用Raft预投票算法,以防止隔离的节点重新加入集群时引发中断。--auto-compaction-retention '0'  自动压缩的保留时长。0表示禁用自动压缩。--auto-compaction-mode 'periodic'  解释'auto-compaction-retention'的模式,可选'periodic'或'revision'。  'periodic'表示基于时间的保留,默认单位为小时(如'5m'表示5分钟)。  'revision'表示基于修订号的保留。--enable-v2 'false'  接受etcd V2客户端请求。已被弃用,并将在v3.6中移除。--v2-deprecation 'not-yet'  v2存储的弃用阶段。允许选择更高的兼容模式。支持的值:  'not-yet'                // 如果v2存储有有效内容,发出警告(v3.5默认值)。  'write-only'             // 不允许自定义v2状态(计划在v3.6中默认启用)。  'write-only-drop-data'   // 自定义的v2状态将被删除!  'gone'                   // v2存储不再维护(计划在v3.7中成为默认值)。

3、Etcd安全和TLS配置

--cert-file ''  客户端服务器TLS证书文件的路径。--key-file ''  客户端服务器TLS密钥文件的路径。--client-cert-auth 'false'  启用客户端证书认证。  建议启用客户端证书认证,以防止未经认证的客户端攻击(例如CVE-2023-44487),特别是在将etcd作为公共服务运行时。--client-crl-file ''  客户端证书吊销列表文件的路径。--client-cert-allowed-hostname ''  客户端证书认证允许的TLS主机名。--trusted-ca-file ''  客户端服务器TLS受信任的CA证书文件路径。  设置此参数时,无论`--client-cert-auth`的值如何,都会自动启用客户端证书认证。--auto-tls 'false'  使用自动生成的证书进行客户端TLS认证。--peer-cert-file ''  对等节点服务器TLS证书文件的路径。--peer-key-file ''  对等节点服务器TLS密钥文件的路径。--peer-client-cert-auth 'false'  启用对等节点客户端证书认证。  建议启用对等节点证书认证,以防止未经认证的伪造对等节点攻击(例如CVE-2023-44487)。--peer-trusted-ca-file ''  对等节点服务器TLS受信任的CA文件路径。--peer-cert-allowed-cn ''  连接到对等端点时,客户端证书所需的CN(通用名称)。--peer-cert-allowed-hostname ''  对等认证中允许的TLS主机名。--peer-auto-tls 'false'  如果未提供`--peer-key-file`和`--peer-cert-file`,则使用自生成证书进行对等TLS认证。--self-signed-cert-validity '1'  自动生成的客户端和对等节点证书的有效期,单位为年,默认值为1。--peer-crl-file ''  对等节点证书吊销列表文件的路径。--cipher-suites ''  支持的TLS密码套件列表,客户端/服务器和对等节点之间使用(空值将由Go自动填充)。--cors '*'  CORS(跨域资源共享)允许的源列表,逗号分隔(空值或`*`表示允许所有源)。--host-whitelist '*'  如果服务器不安全,HTTP客户端请求中可接受的主机名(空值或`*`表示允许所有主机)。--tls-min-version 'TLS1.2'  etcd支持的最低TLS版本。--tls-max-version ''  etcd支持的最高TLS版本(空值将由Go自动填充)。

4、etcd认证相关参数

--auth-token 'simple'  指定v3认证的令牌类型及特定选项,特别适用于JWT。格式为"type,var1=val1,var2=val2,..."。  可选类型:'simple'或'jwt'。  可用变量:  - `sign-method`: 指定JWT的签名方法,可选值为 'ES256'、'ES384'、'ES512'、'HS256'、'HS384'、'HS512'、'RS256'、'RS384'、'RS512'、'PS256'、'PS384' 或 'PS512'。  - `pub-key`: 指定用于验证JWT的公钥路径。  - `priv-key`: 指定用于签署JWT的私钥路径。  - `ttl`: 指定JWT令牌的生存时间(TTL)。--bcrypt-cost 10  指定用于哈希认证密码的bcrypt算法的成本/强度。有效值为4到31之间的整数,值越高,计算成本越高,安全性越强。--auth-token-ttl 300  认证令牌的生存时间(TTL),单位为秒。

5、etcd性能监控与指标

--enable-pprof 'false'  是否启用通过HTTP服务器提供的运行时性能分析数据。  地址为客户端URL加上"/debug/pprof/"。--metrics 'basic'  设置导出指标的详细程度。  可选值:  - `basic`: 导出基本指标。  - `extensive`: 包括服务器端gRPC直方图指标在内的详细指标。--listen-metrics-urls ''  用于监听指标和健康检查端点的URL列表。

6、etcd日志配置

--logger 'zap'  当前仅支持使用'Zap'进行结构化日志记录。--log-outputs 'default'  指定日志输出目标。  - 可以使用'stdout'或'stderr'来跳过`journald`日志(即使在`systemd`下运行)。  - 也可以提供逗号分隔的输出目标列表。--log-level 'info'  配置日志级别。支持的级别包括:  - `debug`: 调试信息。  - `info`: 普通信息。  - `warn`: 警告信息。  - `error`: 错误信息。  - `panic`: 崩溃信息。  - `fatal`: 致命错误信息。--enable-log-rotation 'false'  是否启用日志轮转,仅适用于单个日志输出文件。--log-rotation-config-json '{"maxsize": 100, "maxage": 0, "maxbackups": 0, "localtime": false, "compress": false}'  配置日志轮转(启用时生效)。  - `maxsize`: 单个日志文件的最大大小(单位:MB)。  - `maxage`: 日志文件的最大保留天数(0表示不限制)。  - `maxbackups`: 最大备份数量(0表示不限制)。  - `localtime`: 是否使用本地时间。  - `compress`: 是否启用gzip压缩。

Etcd 启动重要参数汇总表

分类参数作用备注
节点配置--name设置节点名称,必须唯一。确保集群中节点识别准确。
--data-dir指定数据存储目录。用于持久化存储etcd数据。
集群配置--initial-advertise-peer-urls设置对等节点的广告URL。集群内节点间通信地址。
--listen-peer-urls设置对等节点的监听URL。监听集群内部通信流量。
--listen-client-urls设置客户端访问的监听URL。客户端连接etcd的入口。
--initial-cluster配置初始集群成员列表。启动新集群时必需。
--initial-cluster-state指定集群状态(newexisting)。新建或加入已有集群时使用。
--initial-cluster-token设置集群唯一标识符。防止跨集群的意外交互。
安全配置--cert-file / --key-file设置TLS证书和密钥文件。启用加密通信。
--client-cert-auth启用客户端证书认证。增强安全性,防止未经认证访问。
--trusted-ca-file设置受信任的CA证书路径。验证客户端和对等节点证书。
--peer-client-cert-auth启用对等节点证书认证。提高集群安全性。
--peer-trusted-ca-file设置对等节点的CA证书路径。对等通信的信任链验证。
性能调优--heartbeat-interval设置心跳间隔时间(毫秒)。影响集群同步速度和稳定性。
--election-timeout设置选举超时时间(毫秒)。影响Raft选举速度。
--snapshot-count设置触发快照的事务数。控制快照频率,平衡性能与存储。
--max-txn-ops设置每个事务允许的最大操作数。防止事务过大影响性能。
认证与访问控制--auth-token指定认证令牌类型。支持simplejwt类型。
--auth-token-ttl设置认证令牌的有效时间(秒)。控制令牌过期时间。
日志管理--logger设置日志记录方式。当前仅支持zap
--log-level设置日志级别。支持debuginfowarn等。
--log-outputs设置日志输出目标。可指定stdoutstderr或文件路径。
调试与监控--enable-pprof启用性能分析。通过/debug/pprof/访问性能数据。
--metrics设置导出指标的详细程度。支持basicextensive
说明:
  • 节点与集群配置 是确保集群正常启动和运行的核心,尤其在多节点部署时尤为重要。
  • 安全配置 则涉及到数据和通信的加密与认证,建议在生产环境中务必启用。
  • 性能调优 参数影响etcd的资源使用与集群稳定性,需要根据具体需求进行调整。
  • 日志与监控 有助于故障排查和性能优化。

四、常用/基本操作

1. 连接到etcd集群

  • --endpoints:指定要连接的etcd集群的端点地址。可以指定多个,用逗号分隔。
etcdctl --endpoints=127.0.0.1:2379,127.0.0.2:2379 get /
  • --cert-file, --key-file, --ca-file:用于TLS认证的证书文件、密钥文件和CA文件。
etcdctl --endpoints=https://127.0.0.1:2379 --cert-file=cert.pem --key-file=key.pem --ca-file=ca.pem get /

2. 基本操作

  • get:获取一个或多个键的值。
etcdctl get <key> [<range_end>]
  • put:设置或更新一个键值对。
etcdctl put <key> <value>
  • del:删除一个或多个键值对。
etcdctl del <key> [<range_end>]
  • watch:监视一个或多个键的变化。
etcdctl watch <key>

3. 高级操作

  • --prefix:与get、del等命令一起使用,操作以给定前缀开头的所有键。
etcdctl get --prefix /myapp/
  • --limit:限制返回的键值对数量。
etcdctl get --limit=10 /myapp/
  • --rev:指定要获取的特定版本的数据。
etcdctl get --rev=10 /myapp/config
  • --keys-only:只返回键,不返回值。
etcdctl get --keys-only /myapp/
  • --sort-by:按指定的字段排序返回结果(如key、version、create、mod)。
etcdctl get --sort-by=key /myapp/

4. 集群管理

  • member:管理集群成员。

  • list:列出所有集群成员。

etcdctl member list
  • add:添加新成员。
etcdctl member add <member_name>
  • remove:移除成员。
etcdctl member remove <member_id>
  • snapshot:创建etcd数据的快照。
etcdctl snapshot save snapshot.db

5. 其他有用选项

  • --debug:启用调试模式,提供更详细的输出。
etcdctl --debug get /myapp/config
  • --timeout:设置操作的超时时间(秒)。
etcdctl --timeout=5 get /myapp/config
  • --hex:以十六进制格式显示键和值。
etcdctl --hex get /myapp/config

五、遇到的问题总结

1、将镜像推到内网镜像仓库时报错

[zhao****@GZ***-PM153160 ~]$ docker push 10.130.***.106:30089/library/zookeeper:3.9.3
The push refers to repository [10.130.153.***:30089/library/zookeeper]
Get "https://10.130.153.***:30089/v2/": x509: cannot validate certificate for 10.130.153.*** because it doesn't contain any IP SANs

 解决:换成域名

[zhao***@GZ***-PM153160 ~]$ docker login harbor.***.com:30089
Username: admin
Password: 
WARNING! Your password will be stored unencrypted in /home/zhaozheng/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credential-storesLogin Succeeded

2、启动报failed to start member

etcdserver: start member f3e5d1ce6bfb3bd6 failed to start member hello on ID f3e5d1ce6bfb3bd6, the member ID is generated from URL and seems conflicting with other members, make sure the URL is unique and this is not a re-start script for removing member
报错问题解释:

这个错误通常发生在尝试以相同的URL重新启动一个已经在集群中的ETCD节点时。当你在集群中已经有了一个具有相同URL的成员时,再次尝试使用相同的URL初始化或启动一个成员会导致冲突。

解决方法:
  • 1、检查现有成员:首先,检查当前集群中的成员是否已经存在具有相同URL的成员。

  • 2、删除冲突的成员:如果存在冲突,你需要从集群中删除该成员。可以使用etcdctl工具来移除成员。例如:

# 首先确保etcdctl指向正确的etcd服务器
export ETCDCTL_API=3
etcdctl --endpoints=http://localhost:2379 member list
etcdctl --endpoints=http://localhost:2379 member remove <member-id>
  • 3、重新启动容器:在删除冲突成员后,重新启动你的ETCD容器。确保使用不同的URL或端口来避免未来的冲突。
docker run -d --name etcd-server \-p 2379:2379 -p 2381:2380 \  # 注意端口号的变化以避免冲突quay.io/coreos/etcd:latest etcd --name s1 --initial-advertise-peer-urls http://localhost:2381 --listen-peer-urls http://0.0.0.0:2381 --listen-client-urls http://0.0.0.0:2379 --advertise-client-urls http://localhost:2379 --initial-cluster-token etcd-cluster-1 --initial-cluster s1=http://localhost:2381 --initial-cluster-state new

六、可能会用到的其他命令

-)创建卷

docker volume create etcd_data

-)验证卷

docker volume ls

-)使用卷

docker run --name some-redis -v etcd_data:/data -d etcd:tag

 这种docker卷作者没有用过(实际数据存储位置是docker默认数据目录,默认数据目录可以在docker配置文件中配置修改),有兴趣的可自行尝试~

如果喜欢我的文章,请帮我点赞,谢谢~  

相关文章:

docker安装etcd:docker离线安装etcd、docker在线安装etcd、etcd镜像下载、etcd配置详解、etcd常用命令、安装常见问题总结

官方网站 官方网址&#xff1a;etcd 二进制包下载&#xff1a;Install | etcd GitHub社区项目&#xff1a;etcd-io GitHub GitHub社区项目版本历史&#xff1a;Releases etcd-io/etcd GitHub 一、镜像下载 1、在线下载 在一台能连外网的linux上执行docker镜像拉取命令…...

港科大提出开放全曲音乐生成基础模型YuE:可将歌词转换成完整歌曲

YuE是港科大提出的一个开源的音乐生成基础模型&#xff0c;专为音乐生成而设计&#xff0c;专门用于将歌词转换成完整的歌曲&#xff08;lyrics2song&#xff09;。它可以生成一首完整的歌曲&#xff0c;时长几分钟&#xff0c;包括朗朗上口的声乐曲目和伴奏曲目。YuE 能够模拟…...

Hive从入门到运用

hive简介 hive的设计思想&#xff08;本质是一个翻译器&#xff09; 上传安装包 解压&#xff0c;查看 运行hive&#xff08;一定要启动hadoop&#xff0c;是有依赖关系的。&#xff09; 测试启动方法&#xff0c;和建表 文件创建很上传到hdfs&#xff0c;直接上传到hive表的目…...

unity学习55:按钮 button

目录 1 按钮 button 1.1 按钮button 其实就是一个组合体 1.2 测试按钮&#xff0c;在UI中添加1个按钮 1.3 按钮的属性 2 按钮的图片属性 3 按钮的变换 transition 3.1 按颜色变换 3.2 按图片精灵变换 3.3 按动画变换 4 按钮的导航 5 按钮的事件和脚本 1 按钮 …...

《论基于构件的软件开发方法及其应用》审题技巧 - 系统架构设计师

软考论文写作框架&#xff1a;基于构件的软件开发方法及其应用 一、考点概述 本论题“基于构件的软件开发方法及其应用”主要考察的是软件工程专业中关于基于构件开发&#xff08;CBSD&#xff09;的深入理解与实践应用。考点涵盖以下几个方面&#xff1a; 首先&#xff0c;…...

穷举vs暴搜vs深搜vs回溯vs剪枝(典型算法思想)—— OJ例题算法解析思路

回溯算法的模版 void backtrack(vector<int>& path, vector<int>& choice, ...) {// 满⾜结束条件if (/* 满⾜结束条件 */) {// 将路径添加到结果集中res.push_back(path);return;}// 遍历所有选择for (int i 0; i < choices.size(); i) {// 做出选择…...

java23种设计模式-命令模式

命令模式&#xff08;Command Pattern&#xff09;学习笔记 1. 模式定义 行为型设计模式&#xff0c;将请求封装为对象&#xff0c;使请求的发送者与接收者解耦。支持请求的排队、记录、撤销/重做等操作。 2. 适用场景 ✅ 需要将操作参数化 ✅ 需要支持事务操作&#xff08…...

交流异步电动机PI双闭环SVPWM矢量控制Simulink

关注微♥“电机小子程高兴的MATLAB小屋”获取专属优惠 1.模型简介 本仿真模型基于MATLAB/Simulink&#xff08;版本MATLAB 2017Ra&#xff09;软件。建议采用matlab2017 Ra及以上版本打开。&#xff08;若需要其他版本可联系代为转换&#xff09; 2.仿真算法&#xff1a; (…...

利用 Open3D 保存并载入相机视角的简单示例

1. 前言 在使用 Open3D 进行三维可视化和点云处理时&#xff0c;有时需要将当前的视角&#xff08;Camera Viewpoint&#xff09;保存下来&#xff0c;以便下次再次打开时能够还原到同样的视角。本文将演示如何在最新的 Open3D GUI 界面&#xff08;o3d.visualization.gui / o…...

kiln微调大模型-使用deepseek R1去训练一个你的具备推理能力的chatGPT 4o

前言 随着deepseek的爆火&#xff0c;对于LLM的各种内容也逐渐步入我的视野&#xff0c;我个人认为&#xff0c;可能未来很长一段时间&#xff0c;AI将持续爆火&#xff0c;进入一段时间的井喷期&#xff0c;AI也会慢慢的走入我们每个家庭之中&#xff0c;为我们的生活提供便利…...

《从Kokoro看开源语音模型的“无限可能”》:此文为AI自动生成

开源语音模型 Kokoro 是一款轻量级、高性能的文本转语音(TTS)模型,以下是关于它的详细介绍: 核心优势 卓越的音质:即使参数规模仅 8200 万,也能生成自然流畅、富有表现力的语音。轻量高效:占用资源少,运行速度快,在 CPU 上即可实现近乎实时的语音生成,在 GPU 端则能…...

Spring 事务和事务传播机制(详解)

1 .事务 1.1.什么是事务&#xff1f; 事务是一组操作的集合,是不可分割的操作 事务作为一个整体&#xff0c;要不同时完成&#xff0c;要不同时失败 1.2什么时候需要事务&#xff1f; 关于金钱的操作基本都会有事务 例如转账操作&#xff1a; 第一步 A账号 - 500元第二步 B账…...

Innodb MVCC实现原理

什么是MVCC? MVCC全称多版本并发控制&#xff0c;是在并发访问数据库时对操作数据做多版本管理&#xff0c;避免因为写数据时要加写锁而阻塞读取数据的请求问题。 Innodb对mvcc的实现 1、事务版本号 每次事务开启前都会从数据库获得一个自增长的事务ID&#xff0c;可以从事…...

【网络编程】网络套接字和使用案例

一、为什么大多数网络编程使用套接字 在网络编程中&#xff0c;套接字 (socket) 是最常用的接口&#xff0c;但并不是所有的底层通信都依赖于套接字。尽管如此&#xff0c;绝大多数网络应用&#xff08;特别是在操作系统层面&#xff09;都使用套接字进行通信&#xff0c;因为…...

【Java企业生态系统的演进】从单体J2EE到云原生微服务

Java企业生态系统的演进&#xff1a;从单体J2EE到云原生微服务 目录标题 Java企业生态系统的演进&#xff1a;从单体J2EE到云原生微服务摘要1. 引言2. 整体框架演进&#xff1a;从原始Java到Spring Cloud2.1 原始Java阶段&#xff08;1995-1999&#xff09;2.2 J2EE阶段&#x…...

【爬虫基础】第二部分 爬虫基础理论 P1/3

上节内容回顾&#xff1a;【爬虫基础】第一部分 网络通讯 P1/3-CSDN博客 【爬虫基础】第一部分 网络通讯-Socket套接字 P2/3-CSDN博客 【爬虫基础】第一部分 网络通讯-编程 P3/3-CSDN博客 爬虫相关文档&#xff0c;希望互相学习&#xff0c;共同进步 风123456789&#xff…...

第2章_保护您的第一个应用程序

第2章_保护您的第一个应用程序 在本章中&#xff0c;您将学习如何使用 Keycloak 保护您的第一个应用程序。为了让事情更有趣&#xff0c;您将运行的示例应用程序由两部分组成&#xff0c;前端 Web 应用程序和后端 REST API。这将向您展示用户如何向前端进行身份验证&#xff0…...

山东大学软件学院人工智能导论实验之知识库推理

目录 实验目的&#xff1a; 实验代码&#xff1a; 实验内容&#xff1a; 实验结果 实验目的&#xff1a; 输入相应的条件&#xff0c;根据知识库推理得出相应的知识。 实验代码&#xff1a; def find_data(input_process_data_list):for epoch, data_process in enumerat…...

Java 网络协议面试题答案整理,最新面试题

TCP和UDP的主要区别是什么&#xff1f; TCP&#xff08;传输控制协议&#xff09;和UDP&#xff08;用户数据报协议&#xff09;的主要区别在于TCP是面向连接的协议&#xff0c;而UDP是无连接的协议。这导致了它们在数据传输方式、可靠性、速度和使用场景方面的不同。 1、连接…...

win10把c盘docker虚拟硬盘映射迁移到别的磁盘

c盘空间本身就比较小、如果安装了docker服务后&#xff0c;安装的时候没选择其他硬盘&#xff0c;虚拟磁盘也在c盘会占用很大的空间&#xff0c;像我的就三十多个G&#xff0c;把它迁移到其他磁盘一下子节约几十G 1、先输入下面命令查看 docker 状态 wsl -l -v 2、如果没有停止…...

AOP进阶-02.通知顺序

一.通知顺序 当有多个切面类中的切入点表达式一样时&#xff0c;这些切面类的执行顺序是怎样的呢&#xff1f;如图我们将定义两个切面类&#xff0c;一个MyAspect2&#xff0c;一个MyAspect3&#xff0c;一个MyAspect4。执行后我们发现&#xff0c; 对于目标方法前的通知方法&…...

${sym} 与 String(sym) 的区别

在 JavaScript 中&#xff0c;${sym}&#xff08;模板字符串插值&#xff09;和 String(sym)&#xff08;显式类型转换&#xff09;虽然都涉及将值转换为字符串&#xff0c;但它们的底层逻辑和行为存在显著差异&#xff0c;尤其是在处理 Symbol 等特殊类型时。以下是具体对比&a…...

sglang框架源码笔记

文章目录 整体架构1. **客户端&#xff08;Client&#xff09;**&#xff1a;2. **服务器端&#xff08;Server&#xff09;**&#xff1a;3. **调度器与模型工作节点&#xff08;Scheduler & Model Worker&#xff09;**&#xff1a; TpModelWorker类ModelRunner类TpModel…...

2025年SCI一区智能优化算法:混沌进化优化算法(Chaotic Evolution Optimization, CEO),提供MATLAB代码

一、混沌进化优化算法 https://github.com/ITyuanshou/MATLABCode 1. 算法简介 混沌进化优化算法&#xff08;Chaotic Evolution Optimization, CEO&#xff09;是2025年提出的一种受混沌动力学启发的新型元启发式算法。该算法的主要灵感来源于二维离散忆阻映射的混沌进化过…...

uake 网络安全 reverse网络安全

&#x1f345; 点击文末小卡片 &#xff0c;免费获取网络安全全套资料&#xff0c;资料在手&#xff0c;涨薪更快 本文首发于“合天网安实验室” 首先从PEID的算法分析插件来介绍&#xff0c;要知道不管是在CTF竞赛的REVERSE题目中&#xff0c;还是在实际的商业产品中&#xf…...

C语言实现单链表

单链表是数据结构中最基础的链式结构,它不按照线性的顺序存储数据,而是由若干个同一结构类型的“节点”依次串联而成的,即每一个节点里保存着下一个节点的地址(指针)。 上图中,一个表头变量head是用来存储链表首节点的地址,链表中每个节点有data(数据)部分和n…...

Rk3568驱动开发_点亮led灯代码完善(手动挡)_6

1.实现思路&#xff1a; 应用层打开设备后通过write函数向内核中写值&#xff0c;1代表要打开灯&#xff0c;0代表要关闭灯 Linux配置gpio和控制gpio多了一个虚拟内存映射操作 2.注意事项&#xff1a; 配置和读写操作的时候要谨慎&#xff0c;比如先关掉gpio再注销掉虚拟内存…...

threejs:document.createElement创建标签后css设置失效

vue3threejs&#xff0c;做一个给模型批量CSS2D标签的案例&#xff0c;在导入模型的js文件里&#xff0c;跟着课程写的代码如下&#xff1a; import * as THREE from three; // 引入gltf模型加载库GLTFLoader.js import { GLTFLoader } from three/addons/loaders/GLTFLoader.…...

在 compare-form.vue 中添加 compareDate 隐藏字段,并在提交时自动填入当前时间

在 compare-form.vue 中添加 compareDate 隐藏字段&#xff0c;并在提交时自动填入当前时间。 提交表单时存入的对象是FakeRegistration&#xff0c;这个对象里面有compareDate字段&#xff0c;刚好表格查询的对象也是FakeRegistration&#xff0c;所以表格展示的时间就是刚才…...

使用DeepSeek/ChatGPT等AI工具辅助编写wireshark过滤器

随着deepseek,chatgpt等大模型的能力越来越强大&#xff0c;本文将介绍借助deepseek&#xff0c;chatgpt等大模型工具&#xff0c;通过编写提示词&#xff0c;辅助生成全面的Wireshark显示过滤器的能力。 每一种协议的字段众多&#xff0c;流量分析的需求多种多样&#xff0c;…...

Java 大视界 -- Java 大数据在智能物流路径规划与车辆调度中的创新应用(102)

&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎来到 青云交的博客&#xff01;能与诸位在此相逢&#xff0c;我倍感荣幸。在这飞速更迭的时代&#xff0c;我们都渴望一方心灵净土&#xff0c;而 我的博客 正是这样温暖的所在。这里为你呈上趣味与实用兼具的知识&#xff0c;也…...

YOLOv12 ——基于卷积神经网络的快速推理速度与注意力机制带来的增强性能结合

概述 实时目标检测对于许多实际应用来说已经变得至关重要&#xff0c;而Ultralytics公司开发的YOLO&#xff08;You Only Look Once&#xff0c;只看一次&#xff09;系列一直是最先进的模型系列&#xff0c;在速度和准确性之间提供了稳健的平衡。注意力机制的低效阻碍了它们在…...

一个行为类似标准库find算法的模板

函数需要两个模板类型参数&#xff0c;一个表示函数的迭代器参数&#xff0c;另一个表示值的类型。 代码 #include<iostream> #include<string> #include<vector> #include<list>using namespace std;template <typename IterType,typename T>…...

LLC谐振变换器恒压恒流双竞争闭环simulink仿真

1.模型简介 本仿真模型基于MATLAB/Simulink&#xff08;版本MATLAB 2017Ra&#xff09;软件。建议采用matlab2017 Ra及以上版本打开。&#xff08;若需要其他版本可联系代为转换&#xff09;针对全桥LLC拓扑&#xff0c;利用Matlab软件搭建模型&#xff0c;分别对轻载&#xf…...

Elasticsearch 的分布式架构原理:通俗易懂版

Elasticsearch 的分布式架构原理&#xff1a;通俗易懂版 Lucene 和 Elasticsearch 的前世今生 Lucene 是一个功能强大的搜索库&#xff0c;提供了高效的全文检索能力。然而&#xff0c;直接基于 Lucene 开发非常复杂&#xff0c;即使是简单的功能也需要编写大量的 Java 代码&…...

[深度学习]基于C++和onnxruntime部署yolov12的onnx模型

基于C和ONNX Runtime部署YOLOv12的ONNX模型&#xff0c;可以遵循以下步骤&#xff1a; 准备环境&#xff1a;首先&#xff0c;确保已经下载后指定版本opencv和onnruntime的C库。 模型转换&#xff1a; 安装好yolov12环境并将YOLOv12模型转换为ONNX格式。这通常涉及使用深度学习…...

seacmsv9报错注入

1、seacms的介绍 ​ seacms中文名&#xff1a;海洋影视管理系统。是一个采用了php5mysql架构的影视网站框架&#xff0c;因此&#xff0c;如果该框架有漏洞&#xff0c;那使用了该框架的各个网站都会有相同问题。 2、源码的分析 漏洞的部分源码如下&#xff1a; <?php …...

剑指 Offer II 033. 变位词组

comments: true edit_url: https://github.com/doocs/leetcode/edit/main/lcof2/%E5%89%91%E6%8C%87%20Offer%20II%20033.%20%E5%8F%98%E4%BD%8D%E8%AF%8D%E7%BB%84/README.md 剑指 Offer II 033. 变位词组 题目描述 给定一个字符串数组 strs &#xff0c;将 变位词 组合在一起…...

【2025全网最新最全】前端Vue3框架的搭建及工程目录详解

文章目录 安装软件Node.js搭建Vue工程创建Vue工程精简Vue项目文件 Vue工程目录的解读网页标题的设置设置全局样式路由配置 安装软件Node.js 下载地址&#xff1a;https://nodejs.org/zh-cn/ 安装完成后&#xff0c;打开cmd,查看环境是否准备好 node -v npm -vnpm使用之前一定…...

前缀和专题练习 ——基于罗勇军老师的《蓝桥杯算法入门C/C++》

目录 一、0求和 - 蓝桥云课 算法代码&#xff1a; 代码思路概述 代码详细解释 数组定义 输入读取 前缀和计算部分 结果计算部分 输出结果 程序结束 总结 二、1.可获得的最小取值 - 蓝桥云课 算法代码&#xff1a; 代码思路概述 详细代码逻辑解释 输入初始化 …...

1.测试策略与计划设计指南

1.介绍 1.1项目介绍 完整项目组成&#xff1a;1.基于K8S定制开发的SaaS平台&#xff1b;2.多个团队提供的中台服务(微服务)&#xff1b;3.多个业务团队开发的系统平台。涉及多个项目团队、上百个微服务组件。 测试在所有团队开发测试后&#xff0c;自己搭建测试环境&#xff0c…...

pikachu

暴力破解 基于表单的暴力破解 【2024版】最新BurpSuit的使用教程&#xff08;非常详细&#xff09;零基础入门到精通&#xff0c;看一篇就够了&#xff01;让你挖洞事半功倍&#xff01;_burpsuite使用教程-CSDN博客 登录页面&#xff0c;随意输入抓包&#xff0c;发送到攻击…...

HDFS扩缩容及数据迁移

1.黑白名单机制 在HDFS中可以通过黑名单、白名单机制进行节点管理&#xff0c;决定数据可以复制/不可以复制到哪些节点。 黑名单通常是指在HDFS中被标记为不可用或不可访问的节点列表&#xff0c;这些节点可能由于硬件故障、网络问题或其他原因而暂时或永久性地无法使用。当一…...

设计模式-(状态模式,策略模式,代理模式,责任链模式)

状态模式 概念&#xff1a; 用于管理一个对象在不同状态下的行为变化。它允许对象在内部状态改变时改变其行为&#xff0c;从而让对象看起来像是改变了其类。状态模式的核心思想是将状态封装到独立的类中&#xff0c;每个状态类都定义了在该状态下对象的行为 状态模式主要涉…...

二、IDE集成DeepSeek保姆级教学(使用篇)

各位看官老爷好&#xff0c;如果还没有安装DeepSeek请查阅前一篇 一、IDE集成DeepSeek保姆级教学(安装篇) 一、DeepSeek在CodeGPT中使用教学 1.1、Edit Code 编辑代码 选中代码片段 —> 右键 —> CodeGPT —> Edit Code, 输入自然语言可编辑代码&#xff0c;点击S…...

通义灵码插件安装入门教学 - IDEA(安装篇)

在开发过程中&#xff0c;使用合适的工具和插件可以极大地提高我们的工作效率。今天&#xff0c;我们将详细介绍如何在 IntelliJ IDEA 中安装并配置通义灵码插件&#xff0c;这是一款旨在提升开发者效率的实用工具。无论你是新手还是有经验的开发者&#xff0c;本文都将为你提供…...

每天一个Flutter开发小项目 (4) : 构建收藏地点应用 - 深入Flutter状态管理

引言 欢迎回到 每天一个Flutter开发小项目 系列博客!在前三篇博客中,我们从零开始构建了计数器应用、待办事项列表应用,以及简易天气应用。您不仅掌握了 Flutter 的基础组件和布局,还学习了网络请求、JSON 解析等实用技能,更重要的是,我们一起探讨了高效的 Flutter 学习…...

qt-C++笔记之QtCreator新建项目即Create Project所提供模板的逐个尝试

qt-C笔记之QtCreator新建项目即Create Project所提供模板的逐个尝试 code review! 文章目录 qt-C笔记之QtCreator新建项目即Create Project所提供模板的逐个尝试1.Application(Qt):Qt Widgets Application1.1.qmake版本1.2.cmake版本 2.Application(Qt):Qt Console Applicati…...

【NestJS系列】安装官方nestjs CLI 工具

环境搭建指南:从零开始创建 NestJS 项目 一、工具准备 1. 安装 Node.js 环境 推荐使用 LTS 版本(目前 20.x 以上)验证安装:终端执行 node -v 和 npm -vNode.js 官网下载2. 包管理器选择 这里选用更高效的 pnpm,你也可选择 npm 或 yarn # 安装 pnpm npm install -g pnp…...

【Springboot知识】Logback从1.2.x升级到1.3.x需要注意哪些点?

文章目录 **1. 确认依赖版本**示例依赖配置&#xff08;Maven&#xff09;&#xff1a; **2. 处理 StaticLoggerBinder 的移除**解决方案&#xff1a; **3. 修改日志配置文件**示例 logback.xml 配置&#xff1a; **4. 检查兼容性问题**Spring Boot 2.x 的兼容性解决方案&#…...