Ubuntu 18.04上Elasticsearch安装与配置全攻略
1. 安装前的环境准备与版本考量1.1 先聊聊为什么要关注版本搭配先说一个老生常谈但又必须强调的点安装ElasticSearch之前一定要先确认版本匹配关系。很多初次接触ES的人上来就直接apt install elasticsearch结果装完启动报错、插件装不上、或者跟已有的数据不兼容折腾半天才发现是版本问题。以Ubuntu 18.04为例这个系统版本本身并不算新但它依然是一个非常稳定的生产环境选项。ES官方对操作系统有自己的兼容性矩阵不同版本的ES对Linux内核、glibc、Java版本都有明确要求。比如ES 7.x系列要求Java 11而ES 6.x系列则基于Java 8。如果你在Ubuntu 18.04上安装了系统自带的OpenJDK 11然后去跑ES 6.8.x的包启动阶段就会直接报出Unsupported Java version之类的错误。我的建议是先确定你要用的ES版本再反推Java版本最后决定安装方式。这个顺序不要乱。比如常用的ES 7.10.2对应的Java版本是11JDK 8也能运行但会有警告信息而JDK 15、16这类过高版本反而可能不被支持。类似这种版本间的隐性门槛光看官方文档不一定能一次搞清楚实际踩坑之后才会记住。另外还需要确认你的服务器内存。ES是基于JVM运行的搜索引擎默认堆内存设置是1GB这个数值在测试环境还凑合生产环境几乎必然要调。如果服务器内存只有2GB建议把堆内存调到1GB左右给操作系统和文件缓存留出余量如果内存充足比如16GB的机器可以设置4GB到8GB的堆内存但最好不要超过物理内存的一半因为Lucene本身还需要大量堆外内存做文件缓存。1.2 Java环境最容易被忽略的环节Ubuntu 18.04上安装Java的方式其实有好几种但实际经验告诉我最容易踩坑的是安装了一个版本不对的JDK导致后续ES启动报错。推荐的做法是使用OpenJDK而不是Oracle JDK原因是ES官方对OpenJDK的兼容性验证比较充分而且OpenJDK在Ubuntu的软件源里可以直接安装省去了配置PPA的麻烦。sudo apt update sudo apt install openjdk-11-jdk安装完成之后检查Java版本java -version正常会输出类似下面的内容openjdk version 11.0.22 2024-01-16 OpenJDK Runtime Environment (build 11.0.227-post-Ubuntu-0ubuntu118.04.1) OpenJDK 64-Bit Server VM (build 11.0.227-post-Ubuntu-0ubuntu118.04.1)这里有个细节值得多说一句有时候你执行java -version发现已经是JDK 11了但ES启动后依然报Java版本错误。这通常是因为你的JAVA_HOME环境变量没有设置或者指向了错误的路径。ES启动脚本会优先读取JAVA_HOME如果你没设置它就会去PATH里找java命令两者不一致时就会出问题。因此建议安装完成后把JAVA_HOME写进/etc/profile.d/java.sh这个文件里export JAVA_HOME/usr/lib/jvm/java-11-openjdk-amd64 export PATH$PATH:$JAVA_HOME/bin然后执行source /etc/profile.d/java.sh让配置立即生效再用echo $JAVA_HOME验证一下。这一步看着简单但很多莫名的启动异常都是从这里开始的。如果你的项目计划使用ES 8.x那JDK版本就要求17了。Ubuntu 18.04默认软件源里可能没有OpenJDK 17需要手动添加第三方源或者直接从官网下载JDK 17的tar包解压安装。相比之下我推荐先把ES版本定在7.10.x因为它在Ubuntu 18.04上的兼容性验证最为成熟资料也多遇到问题容易搜到解决方案。2. 正式安装两种常用方式的完整对比2.1 通过APT仓库安装推荐ES官方提供了APT仓库配置好之后可以直接用apt install elasticsearch来安装好处是后续版本升级比较方便而且软件包已经做好了systemd服务脚本安装完成就能用systemctl管理。首先安装apt-transport-https这个工具以保证可以走HTTPS协议访问ES的软件源sudo apt install apt-transport-https然后导入ES官方的GPG密钥wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -接着添加仓库源。这里要注意不要直接把网上复制的命令无脑粘贴因为不同ES大版本对应的仓库地址是不同的。以7.x为例需要编辑/etc/apt/sources.list.d/elastic-7.x.list这个文件写入下面这行内容deb https://artifacts.elastic.co/packages/7.x/apt stable main如果你打算用8.x那就要把7.x替换成8.x。这个细节看起来不起眼但如果你之前装过6.x然后又想升级到7.x就会因为仓库地址没更新而装到旧版本。配置完成之后更新软件源并安装sudo apt update sudo apt install elasticsearch安装过程会自动创建elasticsearch用户和用户组也会把相关文件放到标准路径下。装完之后可以用下面的命令确认安装版本/usr/share/elasticsearch/bin/elasticsearch --version输出内容会显示完整的版本号和构建信息。我实测过好几次这个方式在Ubuntu 18.04上非常稳定基本没有依赖冲突的问题。2.2 手动解压安装更灵活的方式如果你对安装路径有特殊要求或者想装一个本地测试环境、不想污染系统目录那手动解压安装是更合适的选择。这种方式没有系统包的自动化配置所有路径都由自己控制理解起来也更透彻。首先下载对应版本的tar.gz包。比如要装7.10.2cd /opt wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.10.2-linux-x86_64.tar.gz tar -zxvf elasticsearch-7.10.2-linux-x86_64.tar.gz mv elasticsearch-7.10.2 /opt/elasticsearch解压完成之后建议手动创建一个专门运行ES的系统用户而不是直接用root用户运行。ES本身出于安全考量明确禁止以root身份启动所以这个用户是必需的useradd -m -s /bin/bash elasticsearch chown -R elasticsearch:elasticsearch /opt/elasticsearch切换到elasticsearch用户并启动su - elasticsearch /opt/elasticsearch/bin/elasticsearch这里需要注意如果直接以root用户执行/opt/elasticsearch/bin/elasticsearch会得到一个非常明确的报错信息can not run elasticsearch as root。这是ES的自我保护机制千万不能通过修改配置强行绕过否则会产生严重的安全风险。两种安装方式的取舍我给一个简单的对比表方便你根据自己场景做决策对比项APT安装手动解压安装速度快中等版本管理方便支持apt upgrade需要手动管理路径规划固定的系统路径完全自主控制systemd脚本自动生成需手动配置适合场景生产环境推荐测试环境、学习实验3. 核心配置文件解读与实践调整3.1 elasticsearch.yml里的关键项ES的配置文件位于/etc/elasticsearch/elasticsearch.ymlAPT安装或者$ES_HOME/config/elasticsearch.yml手动解压安装。这个文件里的配置项非常多但实际日常用到的也就是那么十几个这里挑几个必调的项逐一拆解。node.name节点名称默认为主机名。在单机环境里不修改也可以但如果你后续要搭建集群就必须给每个节点起一个唯一的名字否则节点之间会因为重名而无法正常加入集群。path.data 和 path.logs数据目录和日志目录。APT安装默认分别是/var/lib/elasticsearch和/var/log/elasticsearch。生产环境强烈建议把数据目录放到独立的磁盘分区上一方面避免系统盘空间被ES数据撑爆另一方面便于备份和扩容。path.data: /data/es/data path.logs: /data/es/logs注意设置好目录属主确保elasticsearch用户有读写权限不然启动时会报access denied。network.host绑定地址。默认是127.0.0.1只能本机访问测试没问题。但如果你需要通过局域网访问ES服务就要改成0.0.0.0或者指定具体的内网IP。network.host: 0.0.0.0这里有个容易被忽略的后果一旦你设置了非loopback的地址ES会自动把运行模式切换为生产模式随之而来的是一堆自检项比如上面提到vm.max_map_count、文件描述符限制、线程数限制等任何一个不满足都会导致启动失败。这一块我会在后面的问题排查部分专门展开。discovery.seed_hosts 和 cluster.initial_master_nodes这两个配置涉及集群发现机制。单机环境下通常只需要设置discovery.type: single-node来告诉ES我们不需要跨节点发现否则在默认配置下ES会试图寻找其他节点并可能因为超时而报错。discovery.type: single-node如果是多机集群则要取消这个配置改成discovery.seed_hosts: [node1:9300, node2:9300, node3:9300] cluster.initial_master_nodes: [node1]3.2 JVM堆内存设置别小看这两行JVM堆内存的配置在jvm.options文件里主要关注-Xms和-Xmx这两个参数分别代表初始堆内存和最大堆内存。ES官方要求这两个值必须相等目的是避免JVM运行时动态扩缩堆导致性能抖动。-Xms4g -Xmx4g选多大合适我的经验公式是物理内存的一半以内。比如服务器有8GB内存设4GB比较合适如果服务器只有4GB建议设2GB。不要贪大因为ES的Lucene索引读写还会使用大量操作系统文件缓存这些内存不归JVM管如果堆内存占比过高反而可能导致系统整体性能下降。另外堆内存超过32GB还有一个隐藏的坑JVM的压缩指针机制会失效导致内存占用膨胀垃圾回收效率下降性能反而变差。所以即便你有一台64GB内存的机器也建议把ES堆内存设成31GB以内剩下的内存留给操作系统做文件缓存。4. 启动、验证与开机自启4.1 前台启动与后台守护如果你是手动解压安装最直接的启动方式就是前台运行/opt/elasticsearch/bin/elasticsearch前台启动的优势在于日志会直接打到终端上方便调试。看到类似下面的输出说明ES正在正常初始化[2025-01-15T14:22:31,123][INFO ][o.e.n.Node] [node-1] initialized [2025-01-15T14:22:31,456][INFO ][o.e.n.Node] [node-1] starting ...前台启动并不适合长期运行服务我们应该把它做成systemd服务。作为参考APT安装的ES已经自带了/usr/lib/systemd/system/elasticsearch.service文件直接就能用sudo systemctl daemon-reload sudo systemctl start elasticsearch sudo systemctl status elasticsearch如果是手动解压安装可以参考下面的模板手动创建服务文件[Unit] DescriptionElasticsearch Afternetwork.target [Service] Typeforking Userelasticsearch Groupelasticsearch ExecStart/opt/elasticsearch/bin/elasticsearch -d -p /var/run/elasticsearch.pid ExecStop/opt/elasticsearch/bin/elasticsearch-stop Restartalways LimitNOFILE65535 [Install] WantedBymulti-user.target保存到/etc/systemd/system/elasticsearch.service后执行systemctl daemon-reload使配置生效。4.2 验证安装是否成功服务启动后直接用curl请求ES的REST API接口这是最直观的验证方式curl http://localhost:9200正常情况下会返回一串JSON类似{ name : node-1, cluster_name : elasticsearch, cluster_uuid : xxxxxx, version : { number : 7.10.2, build_flavor : default, build_type : tar, build_hash : xxxxx, build_date : 2021-01-13T00:42:29.402Z, build_snapshot : false, lucene_version : 8.7.0, minimum_wire_compatibility_version : 6.8.0, minimum_index_compatibility_version : 6.0.0-beta1 }, tagline : You Know, for Search }看到这个返回基本就说明ES已经正常工作了。另外还可以查看集群健康状态curl http://localhost:9200/_cluster/health?pretty返回的status字段为green说明一切正常如果是刚创建完索引后立刻查看偶尔会出现短暂yellow这是分片副本还没分配完毕稍等片刻再查就好。4.3 配置systemd服务实现开机自启无论用上面哪种方式安装最后都要配置开机自启避免服务器重启后ES没有拉起。APT安装的版本可以执行sudo systemctl enable elasticsearch手动解压安装的话在完成上面的.service文件配置之后一样可以执行systemctl enable。之后可以通过下面的命令确认生效systemctl is-enabled elasticsearch输出enabled就说明没问题了。5. 常见问题与实战排查记录5.1 启动报错max virtual memory areas vm.max_map_count这个问题出现的频率极高按概率算能占到ES启动失败原因的六成以上。报错信息通常长这样ERROR: [1] bootstrap checks failed [1]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]原因很简单ES底层使用Lucene而Lucene在索引和搜索过程中会创建大量内存映射文件mmapLinux内核通过vm.max_map_count参数限制了进程可以拥有的内存映射区域数量。默认值65530在很多场景下不够用ES要求至少262144。解决办法是临时调整系统参数sudo sysctl -w vm.max_map_count262144但这个修改在系统重启后就会失效所以要写入/etc/sysctl.confecho vm.max_map_count262144 | sudo tee -a /etc/sysctl.conf再执行sudo sysctl -p让配置立刻生效。我之前遇到过一种情况sysctl -p执行后更新了当前值但ES启动时依然报同样的错最后发现是因为ES进程是被systemd拉起的环境而systemd环境里的参数是启动时读取的需要systemctl restart才能完全生效。5.2 外网访问不了9200端口这个问题的典型场景是配置文件里已经设置了network.host: 0.0.0.0本机curl也能正常访问但从其他机器就是连不上9200端口。排查顺序是固定的。先看防火墙Ubuntu 18.04默认使用ufwsudo ufw status如果是开启状态放行9200端口sudo ufw allow 9200/tcp再看ES有没有监听在正确的网卡上netstat -tlnp | grep 9200正常输出会是0.0.0.0:9200或具体的内网IP如果显示127.0.0.1:9200说明配置没有生效需要确认network.host所在配置文件的层级。ES的yaml配置是按层级缩进解析的network.host必须写在最顶层不能缩进到其他配置项下面否则会被当成子属性直接忽略。还有一种容易被忽略的情况服务器上有多个网卡ES绑定了内网IP但你从公网IP访问。这种情况要么把network.host改成公网IP要么在前面挂一层代理转发。一般情况下ES本身的管理接口不建议直接暴露公网绑定内网IP然后在应用层做拦截是更安全稳妥的做法。5.3 单机多实例启动失败有些情况下需要在一台机器上跑多个ES实例比如模拟集群环境做测试。很多人直接复制一份ES目录改一下配置就启动第二个实例结果报端口冲突。ES默认使用9200端口做HTTP通信9300端口做节点间通信。单机多实例时这两个端口都必须手动错开。第二个实例的配置至少需要改下面几项node.name: node-2 path.data: /data/es2/data path.logs: /data/es2/logs http.port: 9201 transport.port: 9301同时要确保两个实例的数据目录、日志目录完全分离否则后启动的实例会因为数据目录被占用而崩溃。另外要提醒一点单机多实例时discovery.type: single-node要谨慎使用因为每个实例都会认为自己是独立的单节点集群它们之间不会自动组成集群。如果想要让多个实例互相发现并组成集群需要删除这个配置改设discovery.seed_hosts和cluster.initial_master_nodes并且设置相同的cluster.name。5.4 内存不足导致节点启动即崩ES对系统资源的消耗还是比较可观的尤其是堆内存之外的文件缓存。如果服务器内存本身比较小比如2GB又照搬网上的配置把-Xms2g -Xmx2g直接填进去就会出现启动过程中JVM内存分配失败节点瞬间退出。报错信息可能是There is insufficient memory for the Java Runtime Environment to continue. Native memory allocation (mmap) failed to map 2147483648 bytes for committing reserved memory.定位思路很简单先看物理内存总量和当前可用内存free -h确认之后把堆内存调低比如改成-Xms1g -Xmx1g。还有一个更隐蔽的情况默认配置中ES的bootstrap.memory_lock如果开启的话JVM启动时会尝试锁住堆内存空间内存不足时同样会失败。排查时可以临时把该项设成false或者关掉不必要的进程释放内存。5.5 常见问题速查表为了方便实际操作时快速定位我把上面提到的几个典型问题整理成一张速查表问题现象常见原因快速处理办法启动报vm.max_map_count过低内核参数默认值不足设置vm.max_map_count262144并写入/etc/sysctl.conf外网无法访问9200端口防火墙未放行或绑定地址错误ufw allow 9200检查network.host层级以root用户启动失败ES安全机制禁止root运行创建elasticsearch用户并切换运行启动后自动退出JVM堆内存设置超出物理内存调整jvm.options里的-Xms和-Xmx多个实例同时启动失败端口或数据目录冲突修改http.port、transport.port和数据目录集群状态为yellow分片副本未全部分配检查数据节点是否在线等待分片恢复6. 生产环境落地的一些额外建议6.1 安全配置优先做ES在默认配置下是没有任何身份认证的只要网络能通任何人都可以对你集群里的数据执行任意读写操作。这在开发环境没什么问题但一旦涉及生产环境尤其是部署到云服务器上安全隐患就很明显了。这里我提供一个最小化安全方案。第一不要将9200端口暴露到公网只监听内网地址第二在所有节点上配置防火墙仅允许应用服务器的IP访问9200端口第三如果需要更细粒度的权限控制可以考虑启用ES自带的Security功能需要许可证支持或者使用反向代理层做认证。从合规和实际风险应对的角度来看先把网络层面收口再考虑应用层认证这是一个不会出错的顺序。6.2 数据备份要落地很多人在ES上做完数据索引就觉得万事大吉直到一次误删或者磁盘故障才意识到备份的重要性。ES提供了快照和恢复功能操作方式比较简单建议至少配置一个本地快照仓库。首先在elasticsearch.yml中指定仓库路径path.repo: /data/es/backups然后创建快照仓库curl -X PUT localhost:9200/_snapshot/my_backup -H Content-Type: application/json -d { type: fs, settings: { location: /data/es/backups } }手动打一个快照curl -X PUT localhost:9200/_snapshot/my_backup/snapshot_20250115如果是重要索引建议配合定时任务定期执行快照比如每日凌晨打一次保留最近七天的快照兼顾数据安全和存储成本。6.3 监控与日志关注点ES自身提供了_cat/indices、_nodes/stats这些API可以快速查看索引状态和节点资源使用情况。日常巡检主要看几个指标索引健康状态、堆内存使用率、搜索和索引的QPS、磁盘使用率。如果发现堆内存使用率持续偏高而且GC频繁首要考虑的是调整查询逻辑或增加节点而不是简单调大堆内存。堆内存本身并不是越大越好这又回到了前面说的内存分配思路——留足系统缓冲平衡JVM和文件缓存的资源分配。另外ES运行日志默认按天滚动保留周期可以自行设置。我建议保留至少30天的日志便于问题回溯。默认配置下日志文件可能只保留一周遇到突发问题时往往会发现历史日志被清理掉了影响排查效率。这个不算技术难点但确实是运维中容易忽视的细节。写在最后从环境准备到安装从配置调优到问题排查再到生产环境的安全与备份建议整个流程走下来你会发现ES的安装本身并不复杂真正的门槛在于理解每个配置项背后的原理。知其然再知其所以然后续无论是调优还是排查问题都会从容很多。我个人在Ubuntu 18.04上把整个过程跑过很多遍踩过最多的坑就是版本不匹配和内核参数未调整。如果你在安装过程中遇到了本文没有覆盖到的问题先去看日志总不会错——日志文件在/var/log/elasticsearch/elasticsearch.logAPT安装或$ES_HOME/logs/elasticsearch.log手动解压大部分启动失败的根因都会清晰地写在里面定位起来比盲猜要高效得多。

相关新闻

NumPy入门:用rand创建10x10数组并求最大最小值

NumPy入门:用rand创建10x10数组并求最大最小值

如果你刚开始接触 NumPy,大概率会在练习题里碰到这样一道题:使用 numpy.random.rand 创建一个 10*10 的 ndarray 对象,并打印出最大最小元素。题目只有一句话,代码可能三五行就写完,但它恰好串起了 NumPy 最核心的三个…

2026/10/12 17:37:02 阅读更多 →
Python生成正态分布随机数:从random到numpy的正确姿势

Python生成正态分布随机数:从random到numpy的正确姿势

新手学Python绕不开一类需求:生成服从正态分布的随机数。面试题爱考,项目里也常用,比如给数据加噪声、做蒙特卡洛模拟、初始化权重。很多教程会告诉你“用 numpy 一行搞定”,但真上手才发现事情没这么简单——random 库里有好几个…

2026/10/12 17:37:02 阅读更多 →
代码审查实战指南:流程设计、审查维度与避坑心得

代码审查实战指南:流程设计、审查维度与避坑心得

“代码审查”这个词,在圈子里转了很多年,但真正常态化做好的团队,说实话不多。前几天有个朋友跟我聊起他们内部准备推 open code review 这套机制,问我的第一反应。我说:先把概念对齐。不是写了代码群里喊一句“谁帮我…

2026/10/13 18:29:42 阅读更多 →

最新新闻

AI Agent突破屏幕囚笼:开源SDK如何让智能硬件真正动起来

AI Agent突破屏幕囚笼:开源SDK如何让智能硬件真正动起来

这几天应用商店的榜单有点意思:一款叫 Muse 的 AI 应用冲上免费总榜第一。单看登顶这事,在 AI 圈其实并不新鲜——每隔一阵子就有一款对话式应用靠新鲜感冲榜,然后一个月后杳无音信。真正让我这种长期做 AI 应用开发的人留意的,是…

2026/10/13 20:13:09 阅读更多 →
基于人工智能的课堂分析架构:从采集到反馈的分层设计与实现

基于人工智能的课堂分析架构:从采集到反馈的分层设计与实现

简介:本资源为华东师范大学课程与教学研究所杨晓哲副教授撰写的学术论文《基于人工智能的课堂分析架构:一种智能的课堂教学研究》,面向教育研究者、教研员、中小学教师及教育技术方向的学习者,聚焦大规模课堂分析难以落地、传统听…

2026/10/13 20:13:09 阅读更多 →
皮尔森相关系数从原理到工程实践:相似度计算的基石方法详解

皮尔森相关系数从原理到工程实践:相似度计算的基石方法详解

做数据分析或者算法开发的,应该都碰过这样一个问题:两个东西到底像不像。推荐系统里要判断用户口味是否一致,风控里要看两个特征有没有同涨同跌,特征工程时要排查哪些变量互相冗余。这时候第一个冒出来的方法,往往就是…

2026/10/13 20:13:09 阅读更多 →
深入理解计算机系统答案:笔记、习题与复习路线全解析

深入理解计算机系统答案:笔记、习题与复习路线全解析

简介:《深入理解计算机系统》答案与知识点整理文档,面向正在学习计算机系统、操作系统、汇编语言及内存管理等课程的读者,可用于配合原书复习、备考或快速回顾关键概念。文档将书中散落的重难点提炼为数十条简明笔记,覆盖数值截断…

2026/10/13 20:13:09 阅读更多 →
Python外卖配送数据分析系统设计与实现

Python外卖配送数据分析系统设计与实现

1. 项目背景与核心价值外卖配送系统每天产生海量订单数据,这些数据背后隐藏着配送效率、用户偏好、商家运营等关键信息。作为计算机专业的学生,选择这个方向做毕业设计既能体现大数据处理能力,又能展示Python全栈开发技能,更重要的…

2026/10/13 20:13:09 阅读更多 →
jQuery Mobile按钮组件详解:从增强机制到实战踩坑

jQuery Mobile按钮组件详解:从增强机制到实战踩坑

如果你手里还在维护 jQuery Mobile 项目&#xff0c;一定对它的按钮组件印象深刻。这个框架版本不算新了&#xff0c;但按钮这个基础控件的设计思路&#xff0c;放在今天看依然有些“超前”&#xff1a;它把普通的<a>、<input>、<button>标签重新包装&#x…

2026/10/13 20:12:08 阅读更多 →

日新闻

物联网系统集成避坑指南:从选型到验收的关键要点

物联网系统集成避坑指南:从选型到验收的关键要点

做了这么多年物联网系统集成的项目&#xff0c;我最大的感受是&#xff0c;大部分坑不是出在技术前沿&#xff0c;而是出在一些看起来很平常的地方。设备选了便宜的、协议没问清楚、现场没摸透、验收标准写得含糊——这些细枝末节&#xff0c;最后都会变成延期、超支和扯皮的大…

2026/10/13 0:00:57 阅读更多 →
ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

如果你玩ESP32有一阵子了&#xff0c;很难不碰到舵机控制这道坎。做智能小车要转方向&#xff0c;做机械臂要抬关节&#xff0c;做云台要偏航俯仰&#xff0c;背后都是同一个东西在干活&#xff1a;舵机。而我见过太多人卡在“代码能编译、舵机就是不听话”这个阶段&#xff0c…

2026/10/13 0:00:57 阅读更多 →
CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

1. 为什么CAN总线至今仍是工业现场的“硬通货”&#xff1f;——从汽车底盘到智能温室的真实需求你有没有拆过一辆老款燃油车的中控台&#xff1f;或者调试过某高校实验室里那台跑着Modbus协议却频频丢帧的PLC控制柜&#xff1f;又或者&#xff0c;在某个农业物联网项目里&…

2026/10/13 0:00:57 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介&#xff1a;基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码&#xff0c;面向计算机相关专业课程设计与期末大作业学生&#xff0c;以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程&#xff0c;…

2026/10/13 2:54:56 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程&#xff1a;键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化&#xff0c;十个新手有八个栽在"往输入框里填东西"这件事上&#xff1a;要么填不进去&#xff0c;要么填了一半&#xff0c;要么直接把原来内容追加在后面。这背后的根因&…

2026/10/13 16:22:04 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程&#xff1a;阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀&#xff1a;什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面&#xff0c;跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/13 1:58:08 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 21:05:09 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 14:57:39 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 18:11:17 阅读更多 →