Elasticsearch 集群搭建
一、集群规划
1.1 节点角色规划
节点类型 | 配置要求 | 推荐数量 |
---|---|---|
Master节点 | 低磁盘、中等CPU/内存 | 3(奇数防止脑裂) |
Data节点 | 高磁盘、高内存、多核CPU | 根据数据量扩展 |
Coordinating节点 | 高CPU/内存、低磁盘 | 2+(可选) |
1.2 硬件建议
- 内存:Data节点建议50%内存分配给ES堆(不超过31GB),剩余留给文件缓存。
- 磁盘:SSD优先,RAID 0或JBOD模式,避免NAS/SAN。
- CPU:16核以上,Data节点需更多核心。
1.3 网络要求
- 节点间带宽≥1Gbps,延迟<10ms。
- 禁用Swap,优化TCP参数(如增大net.core.somaxconn)。
二、搭建步骤
2.1 准备工作
- 系统资源充足服务器(Linux)。
- 服务器上确保已安装 Docker 和 Docker Compose(推荐)。
2.2 拉取 Elasticsearch 镜像
# 拉取最新版
docker pull docker.elastic.co/elasticsearch/elasticsearch:latest# 拉取指定版本(例如 8.13.4)
docker pull docker.elastic.co/elasticsearch/elasticsearch:8.12.0
2.3 创建 Docker 网络
为集群创建一个专用网络,确保节点间通信:
docker network create es-net
2.4 集群模式配置
可以使用docker 依次启动多个节点,也可以使用Docker Compose一次启动全部节点。以下以 3 节点集群为例:
-
docker 依次启动
- 节点 1 (es01 - 主节点)
docker run -d \--name es01 \--net es-net \-p 9200:9200 \-e "node.name=es01" \-e "cluster.name=es-docker-cluster" \-e "cluster.initial_master_nodes=es01,es02,es03" \-e "discovery.seed_hosts=es02,es03" \-e "bootstrap.memory_lock=true" \-e "ES_JAVA_OPTS=-Xms2g -Xmx2g" \-v es-data01:/usr/share/elasticsearch/data \elasticsearch:8.12.0
- 节点 2 (es02 - 数据节点)
docker run -d \--name es02 \--net es-net \-e "node.name=es02" \-e "cluster.name=es-docker-cluster" \-e "discovery.seed_hosts=es01,es03" \-e "ES_JAVA_OPTS=-Xms2g -Xmx2g" \-v es-data02:/usr/share/elasticsearch/data \elasticsearch:8.12.0
- 节点 3 (es03 - 协调节点)
docker run -d \--name es03 \--net es-net \-e "node.name=es03" \-e "cluster.name=es-docker-cluster" \-e "discovery.seed_hosts=es01,es02" \-e "ES_JAVA_OPTS=-Xms2g -Xmx2g" \-v es-data03:/usr/share/elasticsearch/data \elasticsearch:8.12.0
- 关键参数说明
- cluster.name: 集群名称,所有节点必须一致。
- node.name: 节点唯一名称。
- discovery.seed_hosts: 集群节点列表(容器名称或 IP)。
- cluster.initial_master_nodes: 初始主节点列表(首次启动时需指定)。
- ES_JAVA_OPTS: JVM 堆内存设置(建议不超过物理内存的 50%)。
- 数据卷挂载: 使用 -v 挂载数据目录避免数据丢失。
- 节点 1 (es01 - 主节点)
-
使用 Docker Compose 一次启动
- 创建 docker-compose.yml:
version: '3' services:es01:image: elasticsearch:8.12.0container_name: es01environment:- node.name=es01- cluster.name=es-docker-cluster- discovery.seed_hosts=es02,es03- cluster.initial_master_nodes=es01,es02,es03- ES_JAVA_OPTS=-Xms2g -Xmx2gvolumes:- es-data01:/usr/share/elasticsearch/datanetworks:- es-netports:- 9200:9200es02:image: elasticsearch:8.12.0container_name: es02environment:- node.name=es02- cluster.name=es-docker-cluster- discovery.seed_hosts=es01,es03- ES_JAVA_OPTS=-Xms2g -Xmx2gvolumes:- es-data02:/usr/share/elasticsearch/datanetworks:- es-netes03:image: elasticsearch:8.12.0container_name: es03environment:- node.name=es03- cluster.name=es-docker-cluster- discovery.seed_hosts=es01,es02- ES_JAVA_OPTS=-Xms2g -Xmx2gvolumes:- es-data03:/usr/share/elasticsearch/datanetworks:- es-netvolumes:es-data01:es-data02:es-data03:networks:es-net:driver: bridge
- 启动服务:
docker-compose up -d
- 创建 docker-compose.yml:
2.5 验证集群状态
curl -X GET "http://localhost:9200/_cluster/health?pretty"
- 输出中 status 应为 green 或 yellow,number_of_nodes 显示节点数。
2.6 生产级优化配置
-
分片与副本策略
在创建索引的时候,在 settings 中进行分片及副本数量设置。PUT /my_index {"settings": {"number_of_shards": 3, # 分片数(建议每分片30-50GB)"number_of_replicas": 1 # 副本数(生产环境≥1)} }
-
集群发现优化
# 防止误加入其他集群 discovery.zen.ping.unicast.hosts.resolve_timeout: 30s cluster.join.timeout: 60s# 启用安全配置(7.x+版本) xpack.security.enabled: true
-
数据目录分离
path.data: /ssd1,/ssd2 # 多磁盘路径提升IO
2.7 安全配置(可选)
Elasticsearch 8.x 默认启用安全功能。首次启动容器时,控制台会输出默认密码。
可通过以下命令重置密码:
docker exec -it es-test /bin/bash
bin/elasticsearch-reset-password -u elastic
如需禁用(测试环境),可以在启动容器的命令中添加下面配置:
-e "xpack.security.enabled=false"
生产环境建议开启安全认证,以下是配置 Elasticsearch 集群安全功能基本步骤:
- 生成证书颁发机构(CA)
- 临时启动一个节点生成 CA
docker run -d --name es-temp \-e "node.name=es-temp" \-e "cluster.name=secure-es-cluster" \-e "discovery.type=single-node" \-e "ES_JAVA_OPTS=-Xms1g -Xmx1g" \-v es-certs:/usr/share/elasticsearch/config/certs \elasticsearch:8.12.0
- 生成 CA 证书
docker exec -it es-temp \elasticsearch-certutil ca --pass "" --out config/certs/ca.zip
- 解压 CA 证书并删除临时容器
docker exec -it es-temp unzip config/certs/ca.zip -d config/certs docker rm -f es-temp
- 临时启动一个节点生成 CA
- 配置安全集群
- 在每个节点的启动容器命令中添加挂载目录到刚生成的证书目录上。
-v es-certs:/usr/share/elasticsearch/config/certs
- 还可以在每个节点的启动容器命令中添加登录密码。
-e ELASTIC_PASSWORD=your_secure_password
- 在每个节点的启动容器命令中添加挂载目录到刚生成的证书目录上。
- 关键安全配置说明
- 强制安全特性
- 节点间 TLS 加密:自动启用,证书挂载到共享卷 es-certs。
- HTTP 层 HTTPS:默认启用,访问需使用 https://。
- 内置用户系统:默认创建 elastic、kibana_system 等用户。
- 环境变量
- ELASTIC_PASSWORD:设置内置超级用户 elastic 的密码。
- xpack.security.enrollment.enabled:可设置为 false 禁用自动注册(需手动配置证书)。
- 强制安全特性
三、集群监控与维护
3.1 集群监控
-
核心监控指标
- 集群健康状态:
curl -u elastic:密码 "https://localhost:9200/_cluster/health?pretty"
- status: green(所有分片正常)、yellow(主分片正常,副本未分配)、red(主分片缺失)。
- number_of_nodes: 当前节点数。
- unassigned_shards: 未分配的分片数。
- 节点资源使用:
curl -u elastic:密码 "https://localhost:9200/_nodes/stats?pretty"
- CPU、内存、磁盘使用率。
- JVM 堆内存(jvm.mem.heap_used_percent)应低于 75%。
- 索引性能:
curl -u elastic:密码 "https://localhost:9200/_cat/indices?v" curl -u elastic:密码 "https://localhost:9200/_nodes/hot_threads"
- 索引速率(indexing.index_total)、搜索速率(search.query_total)。
- 分片数、文档数、存储大小。
- 集群健康状态:
-
监控工具
- Kibana Stack Monitoring(内置):
- 安装并配置 Kibana,进入 Stack Management > Monitoring。
- 实时查看集群、节点、索引的详细指标。
- Prometheus + Grafana:
- 使用 Elasticsearch Exporter 采集指标。
- Grafana 仪表盘模板(如 ID 2322)。
- Cerebro
- 集群管理Web界面。
- 分片重分配、节点排除等操作。
- ElasticHQ
- 集群管理GUI。
- 实时监控和简单管理功能。
- Kibana Stack Monitoring(内置):
3.2 日常维护操作
-
索引管理
- 索引生命周期管理(ILM):
PUT _ilm/policy/hot_warm_policy {"policy": {"phases": {"hot": {"actions": {"rollover": { "max_size": "50GB", "max_age": "30d" }}},"warm": {"min_age": "60d","actions": { "shrink": { "number_of_shards": 1 } }}}} }
- 自动滚动创建新索引,归档旧数据。
- 手动优化索引:
# 合并段文件(force merge) POST /logs-2023-10-01/_forcemerge?max_num_segments=1# 关闭不再写入的索引 POST /old-index-*/_close
- 索引生命周期管理(ILM):
-
分片管理
- 分片分配策略:
PUT _cluster/settings {"persistent": {"cluster.routing.allocation.balance.shard": "0.45","cluster.routing.allocation.disk.watermark.low": "85%","cluster.routing.allocation.disk.watermark.high": "90%"} }
- 避免磁盘空间不足导致分片迁移失败。
- 手动迁移分片:
POST /_cluster/reroute {"commands": [{"move": {"index": "logs-2023-10-01","shard": 0,"from_node": "es01","to_node": "es02"}}] }
- 分片分配策略:
3.3 备份与恢复
-
快照备份
- 创建仓库(如 S3、NFS):
PUT _snapshot/my_backup_repo {"type": "fs","settings": { "location": "/mnt/backups/es_snapshots" } }
- 手动创建快照:
PUT _snapshot/my_backup_repo/snapshot_20231001 {"indices": "logs-*","ignore_unavailable": true }
- 创建仓库(如 S3、NFS):
-
恢复快照
POST _snapshot/my_backup_repo/snapshot_20231001/_restore {"indices": "logs-2023-10-01","rename_pattern": "logs-(.+)","rename_replacement": "restored_logs-$1" }
3.4 版本升级与滚动重启
- 滚动升级步骤
- 禁用分片分配:
PUT _cluster/settings {"persistent": { "cluster.routing.allocation.enable": "primaries" } }
- 停止节点并升级:
# 停止一个节点 docker stop es01 # 更新镜像版本(如 8.12.0 → 8.12.1) docker run ... elasticsearch:8.12.1
- 重新启用分片分配:
PUT _cluster/settings {"persistent": { "cluster.routing.allocation.enable": null } }
- 禁用分片分配:
3.5 日志与故障排查
-
日志收集
- Filebeat 配置:
filebeat.inputs:- type: logpaths:- /var/lib/docker/containers/*/*-json.logprocessors:- add_docker_metadata: ~ output.elasticsearch:hosts: ["https://es01:9200"]username: "filebeat_user"password: "密码"ssl.certificate_authorities: ["/path/to/ca.crt"]
- Filebeat 配置:
-
常见故障处理
-
分片未分配:
GET _cluster/allocation/explain?pretty
- 检查磁盘空间、分片分配规则。
-
节点离线:
- 临时移除节点:
PUT _cluster/settings {"transient": { "cluster.routing.allocation.exclude._ip": "故障节点IP" } }
- 临时移除节点:
-
脑裂问题恢复:
- 停用所有节点
- 删除故障节点数据目录下的nodes文件夹
- 先启动Master候选节点,再启动其他节点
-
3.6 自动化运维建议
-
定期清理旧索引:
# 删除 90 天前的索引 DELETE /logs-*-$(date -d "-90 days" +%Y.%m.%d)
-
设置监控告警(如 Watcher):、
PUT _watcher/watch/disk_usage_alert {"trigger": { "schedule": { "interval": "5m" } },"input": { "search": { ... } },"condition": { "compare": { "ctx.payload.hits.total": { "gt": 0 } } },"actions": { "send_email": { ... } } }
3.7 性能优化技巧
- 调整 JVM 堆大小:建议不超过物理内存的 50%(如 32GB 内存 → -Xms16g -Xmx16g)。
- 使用 SSD 存储:提升索引和搜索速度。
- 分片大小控制:单个分片建议在 10GB–50GB 之间。
相关文章:
Elasticsearch 集群搭建
一、集群规划 1.1 节点角色规划 节点类型配置要求推荐数量Master节点低磁盘、中等CPU/内存3(奇数防止脑裂)Data节点高磁盘、高内存、多核CPU根据数据量扩展Coordinating节点高CPU/内存、低磁盘2(可选) 1.2 硬件建议 内存&…...
BGP路由协议之对等体
IGP 可以通过组播报文发现直连链路上的邻居,而 BGP 是通过 TCP:179 来实现的。BGP 需要手工的方式去配置邻居。不需要直连,只要路由能通就可以建立邻居 IBGP 与 EBGP IBGP :(Internal BGP) :位于相同自治系统的 BGP 路由器之间的 BGP 邻接关…...
H3C的MSTP+VRRP高可靠性组网技术(MSTP单域)
以下内容纯为博主分享自己的想法和理解,如有错误轻喷 MSTP多生成树协议可以基于不同实例实现不同VLAN之间的负载分担 VRRP虚拟路由器冗余协议可以提高网关的可靠性防止单点故障的可能 在以前这两种协议通常一起搭配组网,来提高网络的可靠性和稳定性&a…...
oracle 动态性能视图
Oracle 数据库中的 V$SQLAREA 是一个动态性能视图(Dynamic Performance View),用于记录共享池(Shared Pool)中所有 SQL 语句的统计信息。每个 SQL 语句在共享池中存储为一个游标(Cursor)&#x…...
chrome extension开发框架WXT之WXT Storage api解析【补充说明一】
在 defineItem 方法里,fallback、init、version 和 migrations 这些参数能够让你对存储项进行更为细致的设置,像设定默认值、初始化值、版本控制以及数据迁移等操作。下面详细说明这些参数的使用方法: fallback 参数 fallback 参数为 getVa…...
浦江晨曦曲:科技与自然共舞的未来诗篇
故事背景 故事发生在未来上海,这座国际大都市通过尖端科技与生态自然的完美融合,重新定义了人类与环境的共生关系。从黄浦江畔的智慧能源矩阵到云端漂浮的烘焙工坊,每个场景都诉说着科技赋能下的人文温度。 故事摘要 当晨曦染红黄浦江面&…...
Lua 函数使用的完整指南
在 Lua 中,函数是一等公民(First-Class Citizen),这意味着函数可以像其他值一样被赋值、传递和操作。以下是 Lua 函数定义的完整指南,涵盖基础语法、高级特性、设计模式及性能优化。 在Lua 中,函数定义的完…...
算法进阶指南 袭击
题目描述 在与联盟的战斗中屡战屡败后,帝国撤退到了最后一个据点。依靠其强大的防御系统,帝国击退了联盟的六波猛烈进攻。 经过几天的苦思冥想,联盟将军亚瑟终于注意到帝国防御系统唯一的弱点就是能源供应。 该系统由 N 个核电站提供能源&…...
HTTPS为何仍有安全漏洞?解析加密协议下的攻击面
本文深度剖析HTTPS协议在传输层、证书体系、配置管理三个维度的安全盲区,揭示SSL/TLS加密掩盖下的11类攻击路径。基于Equifax、SolarWinds等重大事件的技术复盘,提供包含自动化证书巡检、动态协议升级、加密流量威胁检测的立体防御方案。 HTTPS不等于绝…...
行业案例 | SAS 基于 SQL 托管实例构建高弹性安全的数据平台
SAS是全球领先的数据与AI公司,专注于行业解决方案,帮助企业高效利用数据驱动决策。在本案例中,SAS通过采用Azure SQL托管实例,成功迁移和管理近1,000个数据库,减少运维负担,提升数据价值挖掘能力。这一方案…...
NO.82十六届蓝桥杯备战|动态规划-从记忆化搜索到动态规划|下楼梯|数字三角形(C++)
记忆化搜索 在搜索的过程中,如果搜索树中有很多重复的结点,此时可以通过⼀个"备忘录",记录第⼀次搜索到的结果。当下⼀次搜索到这个结点时,直接在"备忘录"⾥⾯找结果。其中,搜索树中的⼀个⼀个结点…...
工业制造各个系统术语
简单总结下 文章目录 MES:制造执行系统ERP:企业资源计划PLM:产品生命周期管理MRP:物资需求计划QMS:质量管理系统APS:高级计划与排程SRM:供应商关系管理SCM:供应链管理CRM:客户关系管理WMS:仓库管理系统TMS:运输管理系统PMS:生产管理系统LES:物流执行系统FICO:财务与成本控制模块…...
搜广推校招面经七十一
滴滴算法工程师面经 一、矩阵分解的原理与优化意义 矩阵分解在推荐系统中是一个非常核心的方法,尤其是在 协同过滤(Collaborative Filtering) 中。我们可以通过用户对物品的评分行为来推测用户的喜好,从而推荐他们可能喜欢的内容。 1.1. 直观理解&…...
解决 ECharts 图表无数据显示问题
问题: 在开发项目时,后端明明已经成功返回了数据,但在展示手账发布数量趋势和树洞帖子发布数量趋势的 ECharts 图表中,却只有坐标轴,没有任何数据显示。 以我的VUE项目开发可视化面板为例,下面将详细分析可…...
【UE5】RTS游戏的框选功能实现
目录 效果 步骤 一、项目准备 二、框选NPC并移动到指定地点 三、框选效果 效果 步骤 一、项目准备 1. 新建一个俯视角游戏工程 2. 新建一个pawn、玩家控制器和游戏模式,这里分别命名为“MyPawn”、“MyController”和“MyGameMode” 3. 打开“MyGameMode”…...
【同步教程】基于Apache SeaTunnel从MySQL同步到MySQL——Demo方舟计划
文章作者:陈飞 中付支付大数据工程师 大家好,很高兴通过 SeaTunnel Demo 方舟计划 和大家分享一个 简单但常见的 MySQL 到 MySQL 数据同步与合并场景案例。 我是陈飞,目前就职于中付支付基础架构部,从事大数据相关工作ÿ…...
人工智能与认知科学的交汇:机器是否能“理解”?
📝个人主页🌹:一ge科研小菜鸡-CSDN博客 🌹🌹期待您的关注 🌹🌹 一、引言:AI与认知的“悖论” 当我们谈论人工智能时,往往聚焦于它的“能力”——会下围棋、会写文章、会画画,甚至能写代码。这些能力让AI像极了一个“聪明人”。但一个根本问题始终没有被真正解…...
React Native 0.79发布 - 更快的工具及更多改进
React Native 0.79版本发布了。 此版本在多个方面进行了性能改进,并修复了一些漏洞。首先,得益于延迟哈希技术,Metro的启动速度变快了,并且对包导出提供了稳定支持。由于JS包压缩方式的改变等原因,Android的启动时间也…...
嵌入式---灰度传感器
灰度传感器概览 一、定义与核心功能 1. 定义 灰度传感器是一种基于 光反射原理 的光电传感器,通过检测物体表面对入射光(多为红外光或可见光)的反射强度,将光信号转换为电信号,从而判断目标物体的 灰度值࿰…...
基于ueditor编辑器的功能开发之增加自定义一键排版功能
用户有自己的文章格式,要求复制或者粘贴进来的文章能够一键排版,不需要手动调试 这个需求的话咱们就需要自己去注册一个事件啦,这里我没有修改源码,而是在编辑器初始化之后给他注册了一个事件 我的工具列表变量 vue组件中data中…...
docker部署elk
一、准备镜像 二、创建Elasticsearch容器 2.1启动Elasticsearch容器 docker run -d --name elasticsearch \-e "discovery.typesingle-node" \-e "bootstrap.memory_locktrue" \-e "ES_JAVA_OPTS-Xms2g -Xmx2g" \-e "xpack.security.enab…...
BGP路由协议
为方便管理规模不断扩大的网络,网络被分成了不同的 AS (Autonomous System,自治系统)。早期,EGP (Exterior Gateway Protocol,外部网关协议)被用于实现在 AS 之间动态交换路由信息。但是 EGP 设计得比较简单,只发布网络…...
vue3中watch的使用示例
使用情况说明: 1、父组件中有个表格,点击表格行的修改基础信息,弹出修改对话框; 2、修改内容点击确认,发送请求,后端更新数据;不修改内容不发送请求; 3、可以连续修改;…...
OpenBMC:BmcWeb 处理http请求7 完成http请求
OpenBMC:BmcWeb 处理http请求6 调用路由处理函数-CSDN博客 用户会通过填充asyncResp设置响应内容 OpenBMC:BmcWeb 处理http请求1 生成Request和AsyncResp对象_bmc web-CSDN博客 构造了asyncResp 可以看到asyncResp是一个shared_ptr 并且在构造后设置了setCompleteRequestHand…...
pair与tuple
pair pair是 C STL(标准模板库)中的一个模板类,用于表示一对相关的对象。它是一个简单的容器,存储两个数据项,它们可以是不同类型的。pair 常用于需要将两个元素一起操作的情况,例如在处理字典(…...
RecyclerView 和 ListView从 设计理念、性能优化 和 扩展能力 三个维度展开分析
一、RecyclerView 的核心定义(设计理念) RecyclerView 是 Android Jetpack 中的高级滚动容器,用于展示大数据集,其核心特性包括: 模块化设计:分离布局管理(LayoutManager)、动画&am…...
望远镜自动调焦怎样利用直线轴承结构?
以下是对望远镜调焦结构相关内容的分析: 调焦结构基本构成与原理 驱动部分:采用步进电机驱动滚珠丝杠,步进电机能够精确控制转动角度和步数,从而精确控制滚珠丝杠的转动,为调焦提供动力来源。 传动部分:…...
C++学习之服务器EPOLL模型、处理客户端请求、向客户端回复数、向客户端发送文件
目录 1.启动epoll模型 2.和客户端建立新连接 3.接受客户端Http请求数据 4.代码回顾从接受的数据中读出请求行 5.请求行解析 6.正则表达式以及匹配 7.解析请求行以及后续处理 8.对path处理说明 9.如何回复响应数据 10.对文件对应content-type如何查询 11.服务器处理流…...
Explain的使用
1.使用explain语句去查看分析结果 如explain select * from test1 where id=1;会出现:id selecttype table type possible_keys key key_len ref rows extra各列。 其中, type=const表示通过索引一次就找到了; key=primary的话,表示使用了主键; type=all,表示为全表…...
DDoS防御与流量优化
实训背景 某在线游戏平台遭受频繁DDoS攻击,需部署Linux网关实现以下防护与优化功能: 防御SYN洪水攻击:自动识别并拦截高频SYN请求。连接数限制:限制单个IP的最大并发连接数为100,防止资源耗尽。流量优先级保障&#…...
文件上传漏洞原理学习
什么是文件上传漏洞 文件上传漏洞是指用户上传了一个可执行的脚本文件,并通过此脚本文件获得了执行服务器端命令的能力。“文件上传” 本身没有问题,有问题的是文件上传后,服务器怎么处理、解释文件。如果服务器的处理逻辑做的不够安全&#…...
005.Gitlab CICD变量使用
文章目录 变量介绍预定义变量项目信息类版本控制类流水线执行类runner环境类作业执行类容器注册类其他类别 自定义变量 变量使用预定义变量使用创建流水线提交流水作业 自定义变量使用创建流水线提交流水作业 图形UI创建变量UI自定义变量创建流水线提交流水作业 变量介绍 预定…...
即时通讯软件BeeWorks,企业如何实现细粒度的权限控制?
BeeWorks作为一款专为企业设计的即时通讯平台,高度重视用户隐私安全,采取了多种措施来保障数据的保密性、完整性和可用性。 首先,BeeWorks采用私有化部署模式,企业可以将服务器架设在自己的网络环境中,所有通讯数据&a…...
高可用架构:Keepalived、Nginx与Docker深度解析
本文深入解析了Keepalived技术,阐述其基于VRRP协议实现高可用的核心功能,包括虚拟路由器冗余、健康检查、负载均衡集成及脚本执行与通知。同时,设计了Nginx高可用方案,涵盖双机主从、主主及多点集群模式,分析其优缺点。…...
127.0.0.1本地环回地址(Loopback Address)
127.0.0.1 是计算机网络中的一个特殊IPv4地址,称为本地环回地址(Loopback Address),主要用于以下用途: 1. 基本定义 本地主机(Localhost):该地址始终指向当前正在使用的计算机本身&a…...
Windows Terminal 美化增强攻略 2.0:打造个性化高效开发环境(快捷键介绍、编程语言环境、starship美化、高效命令行工具)
前言:从 1.0 到 2.0,终端美化进阶之旅 去年,我曾在文章《使用 oh-my-posh 和 clink 打造个性化 PowerShell 和 CMD》中分享了 Windows 终端的美化方案。那时,我选择了 oh-my-posh 作为核心工具,虽然效果不错ÿ…...
网络出故障时,四大表(MAC表、ARP表、路由表、转发表)怎么查?看看这套排查顺序
网络出故障时,四大表 (MAC表、ARP表、路由表、转发表) 怎么查 说正题之前,我们先来假设一个场景: 场景假设: 一台华为设备突然上不了网,或者访问某个 IP 不通。 你会怎么排查? 别慌,兄弟&a…...
第七天 开始Unity Shader的学习之Unity中的基础光照之高光反射光照模型
Unity Shader的学习笔记 第七天 开始Unity Shader的学习之Unity中的基础光照之高光反射光照模型 文章目录 Unity Shader的学习笔记前言一、高光反射光照模型1.逐顶点光照① Properties② 顶点着色器中计算高光specular③ Fallback效果展示 2.逐像素光照① 片元着色器输出结构体…...
《从 MyBatis-Plus 到 Elasticsearch:一个后端的性能优化踩坑实录》
最近接手了一个老项目,单表查询用 MyBatis-Plus 写得飞起,但一到多表关联模糊搜索就卡成 PPT。痛定思痛,决定引入 Elasticsearch 优化查询性能,结果踩坑无数……记录下这次从 ORM 到搜索引擎的升级历程&#…...
docker 常用指令整理
以下是Docker常用操作指令的整理,分为镜像管理、容器操作、网络配置、数据卷管理、Docker Compose及系统维护等部分: 一、镜像管理 拉取镜像 docker pull [镜像名]:[标签] # 默认标签为latest # 示例:拉取Ubuntu 20.04镜像 docker pull ubun…...
密码格式校验c#和js两种
if (!IsValidPassword(xinmima)) { //在前端校验过了,这里不需要 ClientScript.RegisterStartupScript(GetType(), "", "alert(新密码必须至少8位,且至少包含大写字母、小写字母、数字、特殊符号中的3种)", true); } /// <summary> …...
线程控制
POSIX线程库 与线程有关的函数构成了⼀个完整的系列,绝⼤多数函数的名字都是以“pthread_”打头的要使⽤这些函数库,要通过引入头文件<pthread.h>链接这些线程函数库时要使⽤编译器命令的“-lpthread”选项 eg: g -o $ $^ -lpthread这个pthread库…...
WebView 与 JavaScript 的交互
从技术深度、安全意识 和 实战经验来介绍。以下是分层次的回答策略,从基础到高级逐步深入: 1. 基础实现 回答要点: "Android 和 JavaScript 的交互主要通过 WebView 的两种方式实现: Android 调用 JS: kotlin we…...
解决word中公式大小不一问题
文章目录 前言一、初见端倪二、解决方法三、题外话 前言 记录一下在 word 中使用 mathtype 编辑公式时出现的公式字体大小不一的问题的解决方法。 一、初见端倪 最近在 word 中使用 mathtype 进行公式编辑,刚开始编辑的公式并没有什么问题,过了几天后再…...
Haply与PickNik合作:Inverse3三轴力反馈控制器集成MoveIt Pro,提升机器人操作精度
Haply Robotics与PickNik Robotics合作,将Inverse3力反馈控制器集成到MoveIt Pro平台,优化人机交互,提升机器人操作精度。实时力反馈技术使操作者感知机器人与环境的交互力,增强远程操作的精确度和灵敏度,推动机器人技…...
【Linux笔记】文件的传输(scp、rsync、归档、压缩)
一、sshd 1、概念 在Linux系统中,文件传输常依赖于SSH协议(Secure Shell),而sshd(OpenSSH Daemon)是负责处理SSH连接的后台服务程序。通过sshd,用户可以在加密的通道中进行安全的远程登录、命…...
单位矩阵的特点
《单位矩阵的特性与重要性质》 单位矩阵是一种特殊的方阵,具有以下特点: 主对角线元素全为 1:单位矩阵 I n I_n In是一个 n n n\times n nn的方阵,其主对角线(从左上角到右下角的对角线)上的元素均为 …...
AI处理漫画转视频
AI处理漫画转视频 第一步 从漫画PDF文件读取图片 第二部 图片信息剪裁 第三步 OCR识别处理图片,获取漫画对应的文本信息 第四步 运用阿里云通义大模型千文处理提取的文本信息更符合文本语言 第五步 运用FishVideo大模型将文本信息转变为对应的语音 第六步 图片转视…...
三维空间中的离散曲线段匹配方法
基于离散 F r e ˊ c h e t Fr\{e}chet Freˊchet距离实现工程中的三维曲线段匹配 在自动驾驶系统中, 准确匹配相邻车道线是实现安全导航, 变道决策和路径规划的核心任务. 由于道路网络存在交叉口, 弯道, 多车道并行等复杂场景, 如何衡量目标车道曲线与其他候选车道线的空间关…...
HTML的Canvas元素
<Canvas>元素 <Canvas>元素是HTML5引入的一个强大的绘图元素,它允许通过 JavaScript 在网页上动态绘制图形、动画和交互式内容。需要注意的是,<Canvas>元素只是图形的一个容器,绘制图形必须使用Javascript。 空画布 <…...