URL传值中符引发的参数截断问题与全套编码解决方案
你有没有遇到过这种情况明明URL看起来是对的参数也传了后端却只收到一半参数值。更诡异的是本地测得好好的一到线上就出问题。排查半天最后发现罪魁祸首竟然是那个看起来人畜无害的“”符。是的就是这个英文半角的and符号在URL传值这条链路里坑过无数人。它既是查询参数的标准分隔符又是很多参数值里会自然出现的字符。当“分隔符”和“内容”撞在一起问题就来了。这篇文章不聊玄学就把我自己和身边同事这些年踩过的坑、最后沉淀下来的处理姿势完整捋一遍包括“”为什么会引发问题、URL编码到底做了什么、前端和后端各自该怎么处理、以及几类高频事故的现场还原。不管是刚入门的前端新人还是写后端接口的老手大概率都能找到自己曾经留下的血泪证据。1. “”符在URL里的角色与第一颗雷先从最基础的说起。一个完整的URL其实是这样的scheme://host/path?query#fragmentscheme是协议host是域名和端口path是路径fragment是页面内锚点。而中间那个query也就是查询字符串就是我们今天的主战场。查询字符串是一串“键值”的组合多个组合之间用“”隔开。比如https://example.com/search?keyword手机page2sortprice这里就有三个参数keyword、page和sort分别对应手机、2和price。服务端拿到这个字符串后会先按“”切分成三段再按“”把每一段拆成键和值最后塞进一个结构化的对象里。这是标准行为几乎所有语言和框架都是这么解析的。1.1 查询参数解析规则按“”切分的标准流程如果把查询字符串比作一张去超市采购的购物清单那“”符就是清单上的分号用来区分“苹果、两斤”和“香蕉、三把”。按“”切开之后每一段再按“”分成“物品”和“数量”。这个流程太自然了自然到很多人压根没想过如果买的东西名字里本身就有分隔符号比如“苹果香蕉”这清单还怎么读放在URL传值里就是同一个道理。当参数值里含有“”时名字叫“”的分离器会把一个值拦腰截断。比如/search?keyword苹果香蕉服务端按“”一切得到两个参数keyword 苹果香蕉 空后面那个“香蕉”因为等号都缺了通常直接被忽略或者被记成一个空值的怪参数。用户明明搜的是“苹果香蕉”结果后端拿到的是“苹果”搜索结果自然完全对不上。1.2 字符串拼接URL的“经典事故”这个坑的触发点几乎都是同一个前端习惯用字符串硬拼URL。类似这样let keyword 苹果香蕉; let url /search?keyword keyword;看上去没毛病字符串拼起来嘛。但拼出来的结果是/search?keyword苹果香蕉浏览器一解析“”立刻把参数切开了。keyword只剩“苹果”“香蕉”直接变成一个孤儿参数。用户搜“苹果香蕉”服务端却在搜“苹果”反馈到页面上就是结果不对、排序诡异、甚至直接报错。这个问题的根源不在于“”有多特殊而在于我们自己在拼接时把特殊字符当成了普通字符。所有出现在URL里的字符只要不是字母、数字和几个预留安全符号如-、_、.、~都应该先做编码。编码之后“”会变成%26URL变成/search?keyword%E8%8B%B9%E6%9E%9C%26%E9%A6%99%E8%95%89服务端拿到后先解码再按“”切分这时候“%26”是值的一部分不会再被当成分隔符。问题自然就消失了。1.3 为什么有人一直没踩坑浏览器和框架替你擦了屁股这里有个很现实的问题我都这么写了十年怎么一直没出事答案很可能是你根本没亲手拼过URL。大多数时候我们用的是表单提交。HTML表单的GET提交会自动把表单字段编码成查询字符串浏览器会替你把特殊字符处理掉。另一种情况是用现成的网络库比如Python的requests库传params时库内部也会自动做编码。在这些“托管”场景里坑被框架挡在门外了你自然感知不到。但只要换成手写场景问题立刻暴露手动重定向拼接、前端JS拼URL、App端拼查询串、签名接口里拼待签名字符串……这些场景没有框架帮你兜底一对“”就原形毕露。所以不是你没踩坑是你还没到手动拼URL的那一步。2. URL编码规则为什么“”必须变成“%26”既然要编码就得搞清楚编码规则。不然你会在另一个方向上翻车该编码的不编码或者编了两次结果一样惨。2.1 百分号编码percent-encoding到底做了什么URL编码的官方名字叫百分号编码规则简单粗暴把字符转成UTF-8的字节序列每个字节再写成%加两位十六进制。比如中文“苹”的UTF-8编码是E8 8B B9URL编码后就变成%E8%8B%B9。而“”字符本身在ASCII里是38写成十六进制是26所以URL编码结果就是%26。但是要注意百分号编码不是所有字符都要编。RFC 3986把字符分成了几类 unreserved字符字母、数字以及-._~永远不需要编码而“”、“”、“?”、“#”这些属于保留字符在特定语境下有特殊含义出现在参数值里就一定要编码。生活化一点保留字符就像交通标志里的“禁止通行”“”在查询字符串里就是“参数分界点”。你想把“禁止通行”四个字当作目的地写进导航那得先把它们包起来告诉导航“这是地名不是路标”URL编码就是这个包装动作。包装完之后服务端拆参时会先拆包装再还原成原始文字。2.2 encodeURI和encodeURIComponent到底该用哪个在前端JavaScript里有两个长得几乎一模一样的函数encodeURI和encodeURIComponent。我见过的错误中有相当一部分是这两个选错了。关键区别在于encodeURI的本意是“编码整个URL地址”所以它不会动那些URL结构字符比如“”、“”、“?”、“#”都保留原样。而encodeURIComponent的本意是“编码URL中某一段内容”所以它会把几乎所有非字母数字字符都编码掉包括“”。看个对比就清楚了encodeURI(苹果香蕉); // 结果%E8%8B%B9%E6%9E%9C%E9%A6%99%E8%95%89 // 注意 还留在里面 encodeURIComponent(苹果香蕉); // 结果%E8%8B%B9%E6%9E%9C%26%E9%A6%99%E8%95%89 // 注意 变成了 %26如果你用encodeURI去编码一个参数值只要值里有“”、“”、“?”拼接后照样会被解析成多个参数等于白编。所以我的习惯非常固定参数值一律用encodeURIComponent永远不用encodeURI去处理单段值。2.3 各语言编码函数的差异空格到底是还是%20换到其他语言坑又换了一副面孔。不同语言对空格的编码处理不一样有的编成有的编成%20。别小看这点差异前后端用的编码风格不一致空格就可能变成乱码或者错值。PHP的urlencode把空格编码成而rawurlencode按RFC 3986把空格编码成%20。Python的urllib.parse.quote默认把空格编码成%20urllib.parse.urlencode则是表单风格空格变。Java的URLEncoder.encode老版本把空格变而且它对非ASCII字符的处理在某些环境下有问题。Go的url.QueryEscape空格也是。理论上服务端解析时两种形式都能识别因为 query-string 的解码规则里“”和“%20”通常都会被还原成空格。但坑在于签名场景。假如你是用原始字符串做MD5签名前端用编码后端用%20编码两边签名字符串不一致签名就永远对不上。这个问题排查起来非常痛苦因为看起来参数都对就是验签失败。我见过一次线上故障最后发现就是这边用Java标准库、那边用某人手写的编码器空格风格不一致导致的。所以团队里一定要统一编码函数并且签名时尽量用固定顺序、固定编码规则拼原始串。3. 一套完整可用的传值方案从拼接到接收的正确姿势搞清楚原理以后实战就简单了。下面给出一套我这些年用下来最稳的方案从前端拼接、后端接收到完整链路每一步都能直接抄。3.1 前端拼接参数用URLSearchParams替代手拼字符串现代浏览器和Node.js环境里最省心的做法是用URLSearchParams。const params new URLSearchParams(); params.set(keyword, 苹果香蕉); params.set(page, 2); const url /search? params.toString(); // 结果/search?keyword%E8%8B%B9%E6%9E%9C%26%E9%A6%99%E8%95%89page2URLSearchParams会自动处理编码你只管往里塞值不需要自己记住哪些字符要转。这比我年轻时手写一串replace历史清爽太多了。如果项目环境比较老或者你想写个不依赖现代API的工具函数也简单。核心逻辑就是遍历参数对象对每个值先encodeURIComponent再拼成keyvalue用连接。三步走function buildQuery(params) { return Object.keys(params) .map(key encodeURIComponent(key) encodeURIComponent(params[key])) .join(); }这段代码有两点要注意一是键也要编码。别觉得键是开发人员写的就没问题如果键来自动态配置或者用户输入照样可能带“”或“”。二是返回值可直接用于拼接不需要额外再编码。编码发生在每个键值对内部链接各键值对的“”是分隔符本体不能编码。3.2 后端接收参数框架自动解析但别做多余动作后端接收这边主流的Web框架都会自动对查询字符串解码。换言之你看到的值已经是“苹果香蕉”而不是过编码的乱码。PHP里$_GET[keyword]直接就是解码后的值。Java Servlet的request.getParameter(keyword)同理。Node.js里Express框架的req.query.keyword也是解码后的。Spring Boot的RequestParam String keyword同样。这意味着后端开发者的日常写代码时根本不需要手动再解一次码。真正需要关心解码的地方有两个一是自定义解析器如果你自己用split()去解析raw query就必须记得在拆完之后对每段做decode二是签名校验你要用原始收到的query字符串参加验签这时候不能拿框架解码后的值重新拼因为编码形式很可能已经变了得用request.getQueryString()这类接口拿原始字符串。3.3 全链路模拟一个搜索功能的完整实现我拿一个模拟项目X来演示一遍完整链路读者可以直接照着改。场景是前端一个搜索框用户输入关键词请求后端接口后端返回匹配结果。前端部分// 搜索框输入苹果香蕉 async function search(keyword, page) { const params new URLSearchParams(); params.set(keyword, keyword); params.set(page, String(page)); const resp await fetch(/api/search? params.toString()); const data await resp.json(); return data; }后端部分Node.js Express示例app.get(/api/search, (req, res) { const keyword req.query.keyword; const page Number(req.query.page) || 1; // keyword 此时已经是 苹果香蕉 const results searchFromDb(keyword, page); res.json({ keyword, results }); });整个链路跑下来前端把“”编码成“%26”后端框架解码还原成“”数据库查询用的是完整关键词JSON回传时再自动转义前端渲染也没问题。这就是一套标准的闭环。但这里有个隐藏细节想特别提醒响应JSON里如果含有“”字符框架输出时会原样输出浏览器端JSON.parse解析没问题。可如果你直接把JSON放在HTML里的script标签里就得小心了这属于HTML注入范畴和URL编码不是一回事。别混在一起处理。4. 踩坑实录五起事故的现场还原与排雷理论说了一堆不如直接上事故现场。这些都是我或身边同事真实处理过的问题我尽量把现象、排查过程和最终解法都写清楚。4.1 事故一搜索关键词带了“”结果只剩前半截现象线上用户反馈搜索结果不全明明数据库里有匹配数据搜索结果却只有一半。我们拉日志发现后端拿到的keyword参数被截断了比如用户搜“PHPJava”后端只拿到“PHP”。排查一开始怀疑是前端AJAX传参有问题检查源码发现是手写的字符串拼接。代码里就直接用拼了。定位到这里原因已经明确了。解法把拼接改成URLSearchParams或者至少对参数值做encodeURIComponent。改完后端就收到了完整的“PHPJava”。这个事故本身不难但它验证了一个规律凡是字符串拼URL的地方几乎必然藏着这类问题。4.2 事故二回调地址里嵌套参数整条链接被截断现象某个平台对接第三方开放平台需要拼接一个回调地址回调地址本身又是一长串带参数的URL。结果对方回调时后面的参数丢失了。这其实是同一类问题的变种。错误写法类似这样const callbackUrl https://myapp.example/callback?orderId123userId456; const redirect https://thirdparty.example/auth?redirect_uri callbackUrl;拼出来的结果是https://thirdparty.example/auth?redirect_urihttps://myapp.example/callback?orderId123userId456第三方平台解析这个URL时把“”当成了自己的参数分隔符。userId直接从redirect_uri的值里漏了出去变成第三方平台自己的顶层参数。轻则回调时字段缺失重则校验失败。解法也很简单把整个callbackUrl当成一个普通参数值先整体encodeURIComponent然后再拼接。redirect_urihttps%3A%2F%2Fmyapp.example%2Fcallback%3ForderId%3D123%26userId%3D456注意“?”和“”都被编码了落到第三方平台上它就是一个干干净净的字符串。这个“整体编码”的思路在OAuth跳转、支付回调、单点登录这种场景里尤其重要建议所有对接外部系统的同学都把“对回调地址整体编码”刻进肌肉记忆里。4.3 事故三双重编码导致的值错乱现象有一个接口返回的keyword字段变成了一长串%2526这种前端怎么解码都还原不对。分析%2526其实是“%26”被再次编码后的样子。也就是说“”先被编码成“%26”这个“%26”又被整体编码了一次里的“%”变成了“%25”结果就变成“%2526”。这种事通常发生在两端都加了编码的场合。典型场景前端已经encodeURIComponent了后端处理时又对整个URL重新做了一次URL编码或者中间经过一层网关、代理时被重复编码。还有一种是后端框架自动解码之后开发者心里不踏实又手动调用URLDecoder.decode一次结果把框架已经解码好的值又解了一遍。拆法就反了出来的就是乱码。解法链路中每一层只编码/解码一次层层分工明确。前端负责对参数值编码后端框架负责解码一次业务代码不要重复调用解码函数。如果你负责的中间层要对整个URL做处理一定先确认上游是否已经编码别画蛇添足。这里提供一个快速判断方法看到URL里出现%25就说明“%”本身被编码过多半是双重编码。排查时沿链路由后往前找哪个环节对已编码内容又编了一次就是元凶。4.4 事故四手写解析字符串导致误判现象有个老系统没用现成的HTTP解析库而是自己写了个函数按“”和“”解析查询串。某天线上出现一批奇怪的日志参数的key都变成了带%的乱码。分析手写解析函数忘了对切出来的片段做decode。因为URL里的参数值经过编码解析时应该先按“”和“”切出键值对再对键和值分别URL解码。如果漏了最后一步拿到的key还是“%E4%B8%AD%E6%96%87”这种形态存进数据库自然全是乱码。更严重的是如果值里有“%26”这个值在解码前根本不会被识别成“”所以按“”切分时倒不会切错但解码步骤漏了结果还是错的。解法手写解析器时务必在切分完成后对每一段调用decodeURIComponent或语言对应的解码函数。同时键和值都要解。我自己一般不会去手写解析器除非是极简单的内部工具能复用框架就用框架。手写解析器看似简单实际要考虑的边界情况非常多出现空值、多个等号、没有等号的键、编码后的“”、中文、加号……每个都是坑。4.5 事故五HTML里的“”与URL参数的纠缠现象某页面里有一段a标签的href里面带了一个查询参数参数值里有“”。页面上渲染结果看起来是对的链接也是对的但点击后传到后端的参数却是错的。这个问题的根源要从HTML层面说起。在HTML里“”本身是一个实体引用起始符比如“”代表“”“”代表“”。当你在HTML源码里写href时如果URL里的“”没有写成“”浏览器解析HTML时就会把它和后面的字符尝试匹配成实体匹配不上时结果就可能异常。更隐蔽的是如果你用模板引擎或前端框架来渲染链接框架会自动把“”转义成“”浏览器再把它还原成“”这个时候URL是正常的。但如果你手动拼接HTML字符串就很容易漏掉这一步。解法在HTML里写URL时所有“”一律写成“”。如果你是用框架渲染尽量交给框架处理不要手动拼HTML。而且这个“”只存在于HTML源码层面浏览器解析后实际URL里的字符仍然是“”服务端按URL解码规则正常处理即可。把HTML转义和URL编码这两层分开看待就不会被绕晕。5. 防御性编程与团队约定别把雷留给下一个接手的人单个人避开坑只是第一步。URL传值这类问题最怕的是团队里每个人各写各的今天你小心了明天别人又踩回去。所以我后来在团队里推行了几条防御性约定效果不错。5.1 统一封装与使用规范消灭手拼URL第一件事项目里统一封装一个buildQuery工具函数内部实现我刚才写的那套逻辑。规定所有前端代码一律不能手写字符串拼接必须调用这个工具函数。后端同样写一个QueryParamUtil之类的工具类凡是构造带参数的URL一律走工具类。这样编码逻辑全局只有一份出问题只需修一处。工具函数也不复杂但要注意加注释说明用途/** * 构造带查询参数的URL自动编码所有键和值 * 禁止直接用字符串拼接方式构造URL */ export function buildUrl(base: string, params: Recordstring, string | number) { const search new URLSearchParams(); Object.entries(params).forEach(([key, value]) { search.set(key, String(value)); }); const query search.toString(); return query ? ${base}?${query} : base; }5.2 接口层面的约定参数值尽量走编码别用特殊字符取巧有同学会想那我在接口设计时约定关键词里不允许出现“”不就行了省得编码那么麻烦。这种“堵”的思路在内部接口或许可行但对用户输入根本不可控。用户不会因为你不允许就不输入“”搜索“PHPJava”是很正常的诉求。所以我的建议是对外接口一律支持任意字符的参数值内部统一编码解码如果某些场景确实希望限制特殊字符就在参数校验阶段返回友好提示而不是让错误一路传到数据库再报错。另外一个可以做的约定是URL里的参数命名尽量简单参数值本身也尽量用标准化编码。比如日期用时间戳避免出现“2024-01-01 10:00:00”这种带空格的值虽然编码能解决但能少一个特殊字符是一份安心。5.3 测试用例与自查清单把常见坑固化成自动化回归我强烈建议在测试用例里专门加一组“特殊字符传参”的用例。每次发版前把这些用例跑一遍就能挡住一大部分回归事故。用例至少覆盖这些输入带“”的值例如“ATT”带“”的值例如“ab”带中文和空格的值带“%”的值例如“100%完成”带“#”的值例如“C#基础”值本身很长超过几百字符每一条用例都断言前端构造出的URL经过后端解析后参数值能原样还原。如果你用自动化测试框架把这些断言全写进去以后不管多少人改代码这些都像哨兵一样帮你守着。再附一张自查清单我每次排查URL问题时都会过一遍检查项说明是否用了字符串拼接构造URL是则改为工具函数参数值是否做了一次且仅一次编码过多或过少都有问题编码函数是否选对值用encodeURIComponent而非encodeURI后端是否重复解码框架已解码则业务层不再解URL是否在HTML中展示“”需写成“”签名串用的是什么形式必须约定统一的编码规则与顺序这张表看起来简单但每次事故最后复盘几乎都能在表里找到对应的一行。最后说点个人感受。URL传值里的“”符问题本质上是字符在不同上下文里语义不同导致的冲突在查询字符串语法里它是分隔符在业务数据里它是普通内容。要解决它靠的不是死记硬背几个函数而是理解“编码-传输-解码”这条链路里每一环的职责。前端负责把内容和大环境隔离开网络层原样传输后端负责还原语义中间任何一层越界都容易出事。我见过太多同学在这个问题上浪费时间包括当年的我自己。印象最深的一次为了排查一个回调参数丢失问题整个团队排查了一整个下午最后发现只是拼接处少了一个encodeURIComponent。从那以后我再也没手写过字符串URL拼接也养成了在代码评审里专挑“URL拼接”看毛病。希望这篇总结能让你少走这些弯路别让一个“”毁掉一个周五晚上。

相关新闻

Path of Building 快速上手:5分钟规划流放之路Build,天赋树与伤害一次算清

Path of Building 快速上手:5分钟规划流放之路Build,天赋树与伤害一次算清

Path of Building 快速上手:5分钟规划流放之路Build,天赋树与伤害一次算清 【免费下载链接】PathOfBuilding Offline build planner for Path of Exile. 项目地址: https://gitcode.com/GitHub_Trending/pa/PathOfBuilding Path of Building 是一…

2026/10/15 1:55:08 阅读更多 →
MAI Gateway制造业AI网关:破解OT与IT数据孤岛,让预测性维护真正落地产线

MAI Gateway制造业AI网关:破解OT与IT数据孤岛,让预测性维护真正落地产线

车间里的真实情况,往往和汇报PPT上写得不太一样。上个月我走进一家汽配工厂,老师傅指着一台加工中心跟我说:这套设备的AI预测维护模型,研发团队半年前就做出来了,但到现在还没在产线上跑起来。原因很简单——模型在服务…

2026/10/15 1:54:08 阅读更多 →
生成式图像水印为何频域一击即溃?Latent Frequency Masking实战解析

生成式图像水印为何频域一击即溃?Latent Frequency Masking实战解析

1. 这不是“给图片加个logo”那么简单:生成式图像水印的脆弱性到底在哪你可能见过这类操作:在AI生成的风景图右下角打上半透明文字“Made by Stable Diffusion”,或者用某种算法把一串哈希值悄悄嵌入人物肖像的像素里——这叫生成式图像水印。…

2026/10/15 1:54:08 阅读更多 →

最新新闻

笑脸与口罩识别的工业级落地:从像素统计到人机意图理解

笑脸与口罩识别的工业级落地:从像素统计到人机意图理解

1. 这不是玩具项目:笑脸与口罩识别背后的真实业务切口“笑脸识别,口罩识别”——光看标题,很多人第一反应是:这不就是个课堂Demo?调用OpenCV读个摄像头,加两行cv2.CascadeClassifier,再套个预训…

2026/10/15 3:08:36 阅读更多 →
2026,程序员的时代拐点到了

2026,程序员的时代拐点到了

1. 引言 2026 年,注定是程序员职业生涯中一个无法回避的坐标点。这一年,AI 编程助手从「玩具」变成了「同事」,大模型从「聊天机器人」变成了「需求分析师」,而程序员这个职业本身,也站在了前所未有的十字路口。有人焦…

2026/10/15 3:08:36 阅读更多 →
TensorFlow Lite集成实战:从模型转换、量化到端侧推理加速

TensorFlow Lite集成实战:从模型转换、量化到端侧推理加速

到这里,前几章我们讲了模型怎么训、怎么调,该轮到最“落地”的一步了:TensorFlow Lite集成。这章我想用一次完整的实操视角,把从训练好的模型到真正跑在端侧设备上的全流程讲透——包括模型转换、量化、Delegate加速、端侧推理API…

2026/10/15 3:08:36 阅读更多 →
Rope 免费换脸教程:从安装到导出第一条视频的 10 分钟路径

Rope 免费换脸教程:从安装到导出第一条视频的 10 分钟路径

Rope 免费换脸教程:从安装到导出第一条视频的 10 分钟路径 【免费下载链接】Rope GUI-focused roop 项目地址: https://gitcode.com/GitHub_Trending/ro/Rope Rope 是一款免费的图形化人脸交换工具,基于 insightface 的 inswapper_128&#xff08…

2026/10/15 3:08:36 阅读更多 →
金蝶Cloud销售模块参数配置全攻略:从流程打通到信用风控

金蝶Cloud销售模块参数配置全攻略:从流程打通到信用风控

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

2026/10/15 3:08:36 阅读更多 →
免费广告拦截插件 uBlock Origin:默认 5 份过滤列表,请求发出前就拦下

免费广告拦截插件 uBlock Origin:默认 5 份过滤列表,请求发出前就拦下

免费广告拦截插件 uBlock Origin:默认 5 份过滤列表,请求发出前就拦下 【免费下载链接】uBlock uBlock Origin - An efficient blocker for Chromium and Firefox. Fast and lean. 项目地址: https://gitcode.com/GitHub_Trending/ub/uBlock 很多…

2026/10/15 3:07:36 阅读更多 →

日新闻

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

1. 为什么选择容器化方式部署 LoRa 网络服务LoRa 物联网项目落地时,网络服务器是整个链路的核心枢纽。它负责接收网关上报的数据包、完成去重与解密、再把有效载荷分发给上层应用。早期大家习惯把网络服务器直接装在物理机上,依赖一堆系统库和特定版本的…

2026/10/15 0:00:46 阅读更多 →
共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

1. 共享推理服务里,扩缩容到底难在哪做过大模型推理服务部署的人,大概都经历过这样的场景:一个团队共用一套推理集群,A 业务跑的是 7B 的小模型,B 业务跑的是 72B 的大模型,C 业务白天流量高、晚上几乎归零…

2026/10/15 0:00:46 阅读更多 →
Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

1. 引子:一次内核恐慌引发的追查先从一个真实场景说起。某次我给一台老旧的嵌入式设备折腾系统裁减,为了把启动时间压进两秒以内,我手贱地把一串自认为“没用”的 systemd 服务给 disable 了,其中就包括systemd-remount-fs.servic…

2026/10/15 0:00:46 阅读更多 →

周新闻

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

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

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

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

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

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

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

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

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

2026/10/14 3:29:58 阅读更多 →

月新闻

我发现了一个新思路:用 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/15 0:14:36 阅读更多 →
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/14 22:45:47 阅读更多 →
黑夜航拍船只数据集训练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/14 7:53:34 阅读更多 →