MySQL 8.0 报错 1251:认证插件不匹配的排查与解决指南
1. 一次让人摸不着头脑的连接失败1251报错的长相和出现场景如果你在部署新项目的时候突然在数据库连接这一环卡住大概率会遇到这么一段英文报错ERROR 1251 (HY000): Client does not support authentication protocol requested by server; consider upgrading MySQL client我先描述一下我当时遇到这个错误的现场。那是一个再普通不过的深夜我正在帮某公司内部的一个管理系统做环境迁移数据库刚从某知名云服务商的老实例迁移到本地新装的 MySQL 8.0 实例。迁移完成后我满怀信心地启动后端服务结果所有的数据库连接请求就像撞上了一堵透明的墙日志里齐刷刷地刷出 1251 错误。一开始我以为是密码输错了反复检查了账号、密码、端口、权限全都没问题。愣了好一会儿才反应过来这根本不是密码的问题而是客户端和服务器之间“握手”的方式对不上。这个错误的典型出现场景主要有几类客户端工具版本偏老比如用了一些旧版本的图形化管理工具、代码编辑器内置的数据库插件或者低版本的 JDBC 驱动去连 MySQL 8.0。编程语言自带的 MySQL 客户端库过时比如 Python 的某些老版本库、PHP 老版本内置的 mysqli 扩展、Node.js 里的旧驱动等。连接配置里没有显式指定认证插件而服务器端用户默认使用了新的认证方式旧客户端根本不认识这个新协议。这个错误最坑的地方在于它并不直观。服务器端没有任何异常权限没问题密码没问题端口也通着肉眼可见的一切检查项都正常但连接就是建立不起来。所以很多人在这个问题上白白消耗了大量时间走了不少弯路。从本质上讲这不是错误而是一种“协议不匹配”的提醒。你要理解它就得先弄明白 MySQL 8.0 在用户认证这块到底发生了什么变化。下面我从根上拆解一下。2. 问题不在密码而是认证协议不匹配根因拆解2.1 MySQL 8.0 默认认证插件的变化MySQL 5.7 及更早版本默认使用的用户认证插件是mysql_native_password。这种认证方式的核心思路是客户端把密码加盐后做哈希运算服务器端再用同样的算法验证整个过程相对简单兼容性极好。几乎所有编程语言的 MySQL 客户端都支持这个插件这也是为什么它在过去十几年里几乎成了 MySQL 认证的事实标准。但从 MySQL 8.0 开始官方把默认认证插件切换成了caching_sha2_password。这个新插件基于 SHA-256 算法在安全性上比老方案强了不少支持更强大的加密机制还引入了服务端缓存来提升认证效率。对于新安装的 MySQL 8.0 实例所有新建的用户默认都会使用caching_sha2_password这个认证插件。2.2 旧客户端“不认识”新协议问题就出在这里。当你用一个老版本的客户端去连接 MySQL 8.0 时服务器端会发送一个认证请求告知客户端“我这个用户是用 caching_sha2_password 来认证的。”如果客户端不认识这个认证协议它就无法完成后续的握手过程于是直接抛出一个错误——就是 1251。我习惯用一个生活化的类比来解释老版本的客户端就像一张旧式门禁卡服务器端的认证方式则像一套全新的门禁系统。新门禁系统兼容旧卡还好不兼容的话不管你怎么使劲刷门就是不开。密码对不对跟这个检查没关系因为连“验证密码”这个动作都还没来得及执行。注意一个细节通常我们在命令行里用mysql -u root -p连接时如果本地安装的 mysql 客户端版本也是 8.0 或以上那么连接并不会报 1251。但如果你的命令行客户端是 5.7 或者更老的版本同样会触发这个错误。所以这个错误跟“你用什么客户端”有直接关系而不是绝对取决于服务端的版本。2.3 用户表中的 plugin 字段在 MySQL 内部每个用户账号都对应一个认证插件这个信息存储在系统库mysql.user表的plugin字段里。你可以执行下面这条 SQL 查看SELECT user, host, plugin FROM mysql.user;如果你的用户显示plugin为caching_sha2_password而客户端不支持这个插件连接就会失败反之如果显示为mysql_native_password那么绝大多数客户端都能顺利连接。这也是排查此类问题的关键第一步。先确认报错用户对应的认证插件到底是什么再判断是客户端版本问题还是用户配置问题。3. 解决办法一把用户认证插件改回 mysql_native_password3.1 核心 SQL 命令最常见的解决方案就是把指定用户或者新建用户的认证插件改成mysql_native_password。实际上不是直接的“修改插件”而是重新设置该用户的密码并在设置密码时显式指定认证插件。命令如下ALTER USER your_usernamelocalhost IDENTIFIED WITH mysql_native_password BY your_password;这条命令的含义是将your_username账号在localhost主机上的登录方式改为使用mysql_native_password插件并将密码设置为your_password。执行完成后再去连接通常问题就解决了。3.2 为什么是“localhost”而不是“%”很多初学者在复制这条 SQL 时会踩坑他们看到localhost就以为自己必须把 host 部分改成%或者服务器 IP。其实这个 host 字段必须与你实际连接时用到的主机信息一致。你从本机连接就用localhost如果是从远程客户端连接就要用%或者具体的 IP 段。如果你不确定自己的用户到底对应哪些 host先查一下SELECT user, host, plugin FROM mysql.user WHERE user your_username;你可能会看到同一个用户名下有多行记录比如root同时有localhost和%两条记录。这两种 host 配置是独立存在的需要分别修改。我之前就遇到过只改了%的记录、但本地连接还是报错的情况因为它们实际上是两个不同的账号条目。3.3 修改后必须刷新权限吗这个问题经常有争议。执行ALTER USER修改认证插件和密码后严格来说不需要执行FLUSH PRIVILEGES。因为ALTER USER、CREATE USER、GRANT这类语句会直接修改授权表并立即生效。而FLUSH PRIVILEGES主要用于从磁盘重新加载授权表通常在直接操作mysql.user表比如手动 INSERT、UPDATE之后才需要执行。但为了保险起见很多人还是习惯在执行完修改后顺手跑一遍FLUSH PRIVILEGES;这不会有什么副作用也能消除一些“改了没生效”的疑虑。3.4 验证结果修改完成后我用下面几步验证是否真正生效SELECT user, host, plugin FROM mysql.user WHERE user your_username;看到plugin字段变成mysql_native_password后再用之前的客户端重新连接。此时应该能顺利进入数据库了。这里有个值得一提的点修改成功后你的密码强度会受服务器validate_password组件的策略约束。如果你的密码太简单ALTER USER可能会失败提示密码不符合策略。解决方式是先设置一个符合要求的强密码或者临时调整密码策略不建议长期关闭。4. 解决办法二新建用户时直接指定认证插件如果你只是需要一个新账号并不想改动现有账号的认证方式可以在创建用户的时候就显式指定认证插件。比如CREATE USER new_user% IDENTIFIED WITH mysql_native_password BY strong_password; GRANT ALL PRIVILEGES ON your_database.* TO new_user%; FLUSH PRIVILEGES;这段 SQL 创建了一个可以在任意主机连接的用户new_user认证方式直接设置为mysql_native_password并给予your_database数据库的全部权限。这样做的优点很明显不动旧账号不影响其他正在运行的业务只需要开发同学改用新账号连接即可。特别适合那些生产环境里服务正在跑、不方便改密码的场景。你新建一个兼容账号让新接手的服务用它连接老服务继续用老账号两边互不干扰。不过要注意GRANT ALL PRIVILEGES ON your_database.*这种授权方式只对指定数据库生效。如果后续要为多个数据库授权还需要再执行对应的 GRANT 语句。你要是想给用户所有数据库的权限可以把your_database.*改成*.*但生产环境不建议这么做权限给得太宽往往是安全事故的温床。5. 解决办法三调整服务器全局默认认证插件谨慎使用还有一种思路是修改 MySQL 配置文件把默认认证插件改成mysql_native_password然后重启服务。以后新建的用户全部默认使用老式认证方式再做一次重启和创建新用户即可。具体操作如下找到 MySQL 的配置文件Linux 下通常位于/etc/my.cnf或/etc/mysql/my.cnfWindows 下在安装目录下在[mysqld]部分加入一行[mysqld] default_authentication_pluginmysql_native_password保存后重启 MySQL 服务。重启之后新创建的用户默认就会使用mysql_native_password插件。注意这个配置只能影响之后新建的用户已经创建的用户还是使用原来的认证插件需要额外处理。我的建议是除非你明确知道团队里大量旧客户端短期内无法升级否则不要动全局默认配置。理由有几个caching_sha2_password本身就是 MySQL 8.0 的安全增强全局改回去相当于主动降级安全性。修改全局配置并重启服务在生产环境里往往意味着连接中断影响范围远比单独改一个用户大。万一后续有应用依赖新认证方式这种全局改动会造成新的不兼容。所以这个方法我只推荐在开发环境或者一次性搭建的内网测试环境里用。生产环境还是优先改指定用户或者干脆升级客户端。6. 治本思路升级客户端和调整连接参数才是正道6.1 客户端版本检查与升级如果你在公司里说“我有个 1251 错误”资深的 DBA 大概率会先问一句“你的客户端是什么版本”因为解决这个问题的最优路径从来不是让服务器迁就旧客户端而是让客户端跟上服务器的步伐。具体来说命令行客户端升级到 MySQL 8.0 或以上的 mysql client确保支持caching_sha2_password。编程语言驱动Python 的mysql-connector-python、PyMySQL 等建议更新到较新版本PHP 的mysqli扩展在版本较新时已经支持Java 的 JDBC 驱动要确保mysql-connector-java的版本有对应支持。图形化管理工具各类数据库管理工具的旧版本也可能触发这个错误升级到支持 MySQL 8.0 的版本即可。以 Python 里的连接串为例如果你用老版本 PyMySQL 连 MySQL 8.0除了升级库版本还可以在连接时显式指定认证插件import pymysql connection pymysql.connect( hostlocalhost, useryour_username, passwordyour_password, databaseyour_database, charsetutf8mb4, auth_plugincaching_sha2_password )这样即使客户端库本身较老也能通过指定认证插件完成握手。不过还是建议选新版本库功能、性能、稳定性都有保障。6.2 为什么说改认证插件是治标不治本回到现实场景中你可能会想既然改一下用户认证插件就能解决为什么不一直这么做呢当然可以尤其是当你面对一个一次性任务或者只是临时排障把用户改成mysql_native_password无疑是最快捷的手段。但从长远来看mysql_native_password在 MySQL 官方文档中已经被标记为“废弃”未来某个大版本中可能被彻底移除。依赖已经过时的认证协议去对接新数据库本质上是在给未来埋坑。想想看三个月后你新招了一名开发他用最新的工具链连接数据库结果发现自己创建的账号反而因为认证插件过老而连不上又是新一轮排障。所以我的态度是临时应急改插件可以但团队的技术栈要尽快向新认证方式迁移。如果新项目连的是 MySQL 8.0一开始就统一使用较新的客户端无需任何改动即可连接。老项目如果只是周期性维护花点时间升级驱动也比长期依赖旧协议靠谱。6.3 常见连接参数差异一览表为了帮助大家快速判断自己当前用的连接方式属于“受支持”还是“要踩坑”我整理了一个简单的对照表客户端类型代表产品是否能直接连 MySQL 8.0 默认认证命令行 mysql clientmysql 8.0 自带客户端可以老版本命令行客户端mysql 5.7 及以下不可以报 1251Python 新驱动PyMySQL 1.x、mysql-connector-python 8.x可以Python 老驱动版本过低的 PyMySQL可能报错Java JDBCmysql-connector-java 8.x可以Java JDBCmysql-connector-java 5.x报错PHP mysqliPHP 7.4 及以上内置驱动可以个别版本需配置图形化管理工具某管理工具新版本可以图形化管理工具某管理工具老版本报错这个表只是一个大概的参考具体情况还要看对应工具的更新日志。但思路是明确的凡是长期未更新的客户端遇到 1251 都不要惊讶。7. 改了认证插件但在生产环境中仍连不上的排查链路7.1 改对用户、改对插件却依然报错的隐蔽原因在大量排障案例中最让人抓狂的情况就是我修改了用户认证插件plugin字段也确认变成了mysql_native_password但客户端连接时依然报 1251或者干脆报 1045 密码错误。这时候就要从以下几个方向继续排查。第一检查是否有多个同名用户条目。我之前遇到过一个案例某开发者明明把root%改成了mysql_native_password本地连接还是报 1251。原因就是在mysql.user表里还存在着一个rootlocalhost的条目而本机连接恰恰命中的是这条记录。也就是说你改错了目标。第二确认服务器端到底接受了哪个 host。MySQL 在匹配用户时遵循精确优先的原则localhost 和 % 并不是等效的。如果你的连接从本机发起优先匹配rootlocalhost从远程发起匹配root192.168.x.x或root%。所以修改之前先把所有相关的 host 条目都看一遍别只盯着一个。第三检查密码验证插件的附加要求。即使你已经改成mysql_native_password如果当前连接的是 SSL 加密通道也会因为 SSL 配置问题导致认证中断。MySQL 8.0 对 SSL 的默认要求比以前高旧客户端如果根本没有启用 SSL连接也会被拒绝。这种情况的报错不一定还是 1251可能变成Lost connection to MySQL server during query但背后的根因也是协议握手不完整。7.2 一套完整的排障操作流程如果你在生产环境中碰到类似情况我建议按顺序执行下面这些步骤每一步都能排除一批可能先看服务端的 user 表SELECT user, host, plugin FROM mysql.user;确认要连接的用户到底绑定的是哪个 host、哪个插件。用命令行直接测试当前配置mysql -h 127.0.0.1 -u your_username -p注意用 127.0.0.1 而不要用 localhost这样才能实际测试 TCP/IP 连接而非 unix socket。如果命令行直接连不上说明问题在服务器端配置如果命令行能连上但你的客户端连不上问题可能出在客户端。查看错误日志MySQL 的 error log 往往记录了更详细的原因。Linux 下通常位于/var/log/mysql/error.logWindows 下在数据目录里找.err文件。日志里可能会出现类似Access denied for user your_usernamelocalhost或者认证插件不匹配的提示。检查网络和端口telnet your_mysql_host 3306如果端口不通再多的认证修改也白搭。很多时候 1251 不是唯一问题而是网络链路还没打通之前就被中间的防火墙先拦住了。回到源头上检查一下客户端的连接参数包括主机名、端口、数据库名、字符集、SSL 设置。一个常见的低级错误是开发同学把useSSLfalse写错了导致本应启用 SSL 的连接被禁用认证过程中服务器要求 SSL 而客户端又没启用于是握手失败。7.3 从“错误代码”到“实际根因”的映射建议为了让你下次遇到类似报错时心里更有谱我简单列一个常见的对应关系报错代码通常原因排查方向1251认证协议不匹配认证插件、客户端版本1045密码错误或用户无权密码、权限、host 匹配2003无法连接服务器端口、防火墙、服务状态1130主机无权连接用户 host 配置、远程授权9005SSL 连接失败客户端 SSL 参数、服务器证书掌握了这个映射关系你在排查时就不是盲人摸象而是可以快速锁定问题的大致范围。8. 一个容易被忽略的角度连接串中自带的认证插件参数很多因为 1251 报错来找我的人其实并不是被服务器端配置卡住了而是压根没有检查过连接串本身。不同类型的客户端连接串中是可以显式指定认证插件参数的如果指定错了也会导致同样的错误。我举个例子。某项目的后端用 Python连接字符串写的是pymysql.connect( host127.0.0.1, userroot, passwordxxx, databasetest, charsetutf8mb4 )这个连接串没有指定 auth_plugin那么 PyMySQL 在握手时会根据服务器发送的认证请求自动协商。如果 PyMySQL 版本足够新协商过程没有问题。但如果 PyMySQL 版本旧它默认只实现了mysql_native_password而服务器要求caching_sha2_password那就只能报 1251。解决办法有两种一是升级 PyMySQL二是在连接参数中显式指定pymysql.connect( host127.0.0.1, userroot, passwordxxx, databasetest, charsetutf8mb4, auth_plugincaching_sha2_password )不过说句实话上面这种写法是有点别扭的。因为auth_plugin这个参数在一些老版本库中根本不存在你写了反而报参数错误。所以我还是推荐直接升级库版本而不是在连接串层面做各种奇技淫巧。在 Java 生态里老版本 JDBC 驱动连接 MySQL 8.0 时报的错往往不是 1251而是Public Key Retrieval is not allowed。这是因为caching_sha2_password在非 SSL 连接下需要先获取服务器公钥而老版本驱动默认不允许这个操作。解决办法是在连接串里加一个参数jdbc:mysql://127.0.0.1:3306/test?useSSLfalseallowPublicKeyRetrievaltrue这个参数意味着客户端允许在非安全通道下获取服务器公钥用于加密密码传输。虽然安全性有所降低但在开发测试中很实用。生产环境建议配合 SSL 一起使用。9. 其他常见的隐藏坑和实操建议9.1 修改完认证插件后密码策略限制了你的强度当你执行ALTER USER ... IDENTIFIED WITH mysql_native_password BY password时如果密码包含常见弱密码validate_password组件会直接报错。MySQL 8.0 默认安装了密码验证组件密码策略有 LENGTH、MIXED_CASE、NUMBER、SPECIAL_CHAR 等多项要求。遇到这种报错时不要觉得“MySQL 怎么这么矫情”而是接受这个设定设置一个更复杂的密码或者临时降低validate_password.policy的等级。SET GLOBAL validate_password.policy LOW;设置完再执行原来的ALTER USER。记住这个设置只影响执行时刻并不会永久改变密码复杂度要求所以不用太担心留下安全漏洞。9.2 注意事务提交顺序和连接的持久性有一些业务场景里数据库连接是通过连接池维持的。你改了某个用户的认证插件或者密码之后连接池里可能还残留着旧的连接状态。这时候即使服务端已经改好应用依然可能用旧连接去请求报错甚至都不再是 1251而是一些奇怪的连接中断信息。经验做法是改完账号认证相关配置之后重启一下后端服务或者清空连接池。我之前在一次演练中就吃了这个亏明明数据库那边已经全部改好测试连接也通了但后端服务就是不刷新连接池一堆旧的失败连接卡在那里整整排查了半个多小时才想到这层。9.3 统一规划账号减少临时改动的频率经历过几次 1251 排障之后我对数据库账号体系有了更深的认识。生产环境的账号应该按用途划分比如应用账号、备份账号、只读账号、管理员账号。每种账号的认证插件要提前规划尽量不要等到报错才去改。尤其是新环境搭建时创建账号的时候就直接指定好认证插件避免一堆历史沉淀的“混乱账号”影响维护效率。举个例子某新项目用 MySQL 8.0 建库我一开始就规定了所有的应用账号统一用caching_sha2_password只有极少数的历史遗留工具账号用mysql_native_password。这样既兼容了旧工具又保持了新账号的安全性后续排障时也能一眼看出哪个账号是“特殊照顾”的。9.4 别忽略操作系统层面的 mtrace 和 tcpdump 之类工具如果确实遇到了高难度的“疑难杂症”普通的日志分析解决不了问题可以考虑用tcpdump抓包查看客户端和服务器之间的握手过程。抓包后重点观察服务器发送的认证协议报文看看它到底请求的是哪种认证插件。这种操作只建议在确实没有思路的时候使用因为抓包分析对普通开发来说门槛偏高。但一旦你真的抓到了整个认证流程就一目了然比任何猜测都靠谱。我自己调试过一次印象很深的案例客户端明明是 8.0 的驱动还是报 1251。抓包后发现服务器端在握手时发送的协议版本和客户端期望的对不上原因是服务器前面还架了一层代理代理对 MySQL 协议做了特殊处理。这种情况就不是简单的认证插件问题而是链路中间层的问题纯粹靠修改服务器配置是永远解决不了的。10. 最后的经验之谈遇到 1251 不要慌先分清“治标”和“治本”回过头来再看这个 1251 错误我的真实感受是它不是一个复杂的问题但它的出现频率非常高而且特别容易让人陷入“改密码、查权限、看端口”的循环。关键就是从一开始就跳出来想清楚“客户端能不能理解服务器端的认证协议”这一件事很多问题就能迎刃而解。我个人的建议是这样一套处理顺序先在服务器端确认用户认证插件是不是caching_sha2_password。如果是优先升级客户端组件版本尽量保持对新协议的支持。如果客户端短期内无法升级那就针对性地把账号认证插件改成mysql_native_password。改完以后务必对应用层做连接池刷新防止旧连接残留。长期来看定期翻新容器镜像、升级依赖库版本远比每次临时改服务器配置来得靠谱。还有一个容易被忽略的小技巧修改认证插件后如果你是通过域名连接而非 IP 和 localhost那user表的 host 字段还要额外考虑 DNS 反解的情况。MySQL 默认会尝试反查客户端机器的域名如果反解失败即使授权了%连接也可能被拒绝。这种问题在有些网络环境里出现过排查起来特别浪费生命。最省事的办法是直接通过 IP 连接或者把skip-name-resolve选项打开具体取舍要看你的安全需求。写到这里这个问题基本上已经讲透了。希望你在读到这篇文章之后能少走一些弯路。如果你手里正好有项目被 1251 卡住不妨先按我上面的顺序快速排查一下大概率十分钟内就能解决。

相关新闻

Kafka生产者API深度解析:从异步机制到可靠性保障

Kafka生产者API深度解析:从异步机制到可靠性保障

1. 项目概述:为什么一个“生产者API”值得单独写满一整章?Kafka 生产者(producer)不是个新概念,但凡接触过消息队列的开发者,都写过几行producer.send()。可真要问一句:“你写的那行 send&#…

2026/10/13 11:06:17 阅读更多 →
在线UML类图工具:语义建模、代码同步与协作闭环

在线UML类图工具:语义建模、代码同步与协作闭环

1. 项目概述:为什么一个“在线UML类图工具”值得花一整天认真拆解?你有没有过这种经历:团队开会讨论一个新模块,白板上画满歪歪扭扭的方框和箭头,写满“继承”“关联”“聚合”,散会后拍照发群里&#xff0…

2026/10/13 11:06:17 阅读更多 →
obsidian-weread-plugin 模板编辑器窗口:三栏布局、Nunjucks 实时预览与主题系统集成

obsidian-weread-plugin 模板编辑器窗口:三栏布局、Nunjucks 实时预览与主题系统集成

知识管理知识库 【免费下载链接】obsidian-weread-plugin Obsidian Weread Plugin is a plugin to sync Weread(微信读书) hightlights and annotations into your Obsidian Vault. 项目地址: https://gitcode.com/gh_mirrors/ob/obsidian-weread-plugin 点击查看 免…

2026/10/13 11:06:17 阅读更多 →

最新新闻

MyBatis二级缓存源码深度解析:生命周期、装饰器链与五大致命坑

MyBatis二级缓存源码深度解析:生命周期、装饰器链与五大致命坑

1. 为什么你改了SQL却没刷新缓存?——从一个线上故障说起上周五下午三点,某电商后台订单查询接口响应时间突然从80ms飙升到1200ms,监控告警连响三轮。运维同学第一时间拉出慢SQL日志,发现执行计划里多了一堆SELECT * FROM order_i…

2026/10/13 11:47:23 阅读更多 →
AI Agent实战:家居高潜流失用户挽回,下单率提升104%

AI Agent实战:家居高潜流失用户挽回,下单率提升104%

做家居行业的用户增长,有个特别拧巴的场景:你手里明明握着一批高潜流失顾客,销售跟过了、优惠给过了、直播也邀请过,可他们就是不动。后来我们把AI Agent接进了这条挽回链路,才把问题真正跑通。这个项目里,…

2026/10/13 11:47:23 阅读更多 →
C++ set/multiset 底层红黑树:内存、迭代器与性能实战剖析

C++ set/multiset 底层红黑树:内存、迭代器与性能实战剖析

几个月前我在优化模拟项目X的排行榜模块时,遇到一个诡异现象:内存占用随着在线人数持续增长,插入同样数量数据的耗时也不断拉高。一开始我怀疑是业务代码里对象拷贝太狠,后来把热点路径上的std::vector std::sort换成了std::mult…

2026/10/13 11:47:23 阅读更多 →
Farming Code 架构解析:Language Server 与 Browser Use 如何支撑 Agent 持续耕作

Farming Code 架构解析:Language Server 与 Browser Use 如何支撑 Agent 持续耕作

1. 从 "Farming Code" 这个名字说起:它到底在解决什么问题第一次看到 "Farming Code" 这个标题,很多人会以为是某种游戏外挂或者自动化脚本合集。但结合 agent、Language Server、Browser Use、Computer Use 这几个关键词来看&#…

2026/10/13 11:47:23 阅读更多 →
CrashData:R语言清洗航空事故数据的完整实践指南

CrashData:R语言清洗航空事故数据的完整实践指南

简介:CrashData 是一份面向数据分析与航空安全研究者的 R 语言数据采集脚本资源,用于从 planecrashinfo.com 逐年抓取飞机失事的历史记录,解决公开事故数据分散、难以批量获取的问题。作者以略显取巧但可用的方式将网页内容整理为规整的 data…

2026/10/13 11:47:23 阅读更多 →
高德地图校园导航Android项目实战:从Key配置到路线规划全解析

高德地图校园导航Android项目实战:从Key配置到路线规划全解析

简介:这份基于高德地图的校园导航资源,是面向在校学生与初学者的完整项目包,适用于课程设计、毕业设计或项目初期演示。包内提供可直接运行的Android工程与APK安装包,涵盖Java源码、XML布局与配置、Gradle构建脚本及多个SO库&…

2026/10/13 11:46:22 阅读更多 →

日新闻

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

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

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

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

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

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

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

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

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

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

周新闻

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

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

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

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

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

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

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

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

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#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/12 14:48:49 阅读更多 →
黑夜航拍船只数据集训练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 阅读更多 →