<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>YRSheng Lab</title><link>https://yaoruisheng.vicp.cc/</link><description>Recent content on YRSheng Lab</description><generator>Hugo -- gohugo.io</generator><language>zh-CN</language><lastBuildDate>Mon, 29 Jun 2026 08:08:00 +0800</lastBuildDate><atom:link href="https://yaoruisheng.vicp.cc/index.xml" rel="self" type="application/rss+xml"/><item><title>建筑施工安全生产应知应会终极手册</title><link>https://yaoruisheng.vicp.cc/p/construction-safety-handbook/</link><pubDate>Wed, 17 Jun 2026 00:00:00 +0800</pubDate><guid>https://yaoruisheng.vicp.cc/p/construction-safety-handbook/</guid><description>&lt;img src="https://yaoruisheng.vicp.cc/p/construction-safety-handbook/_.webp" alt="Featured image of post 建筑施工安全生产应知应会终极手册" /&gt;&lt;p&gt;安全生产是企业发展的生命线。本文基于最新法规与治本攻坚三年行动要求，系统整理了从总书记论述到现场实操的&lt;strong&gt;全部85个&lt;/strong&gt;关键知识点，是一份真正意义上的“应知应会”速查手册。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="一习近平总书记关于安全生产重要论述"&gt;一、习近平总书记关于安全生产重要论述
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;1. 六大要点&lt;/strong&gt;：强化红线意识，实施安全发展战略；建立健全责任体系；强化企业主体责任；加快改革创新；构建长效机制；干部敢于担当。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2. 两个至上&lt;/strong&gt;：人民至上、生命至上。&lt;br&gt;
&lt;strong&gt;3. 三个必须&lt;/strong&gt;：管行业必须管安全、管业务必须管安全、管生产经营必须管安全。&lt;br&gt;
&lt;strong&gt;4. 三个责任&lt;/strong&gt;：政府督促责任，部门监管责任，企业主体责任。&lt;br&gt;
&lt;strong&gt;5. 三个监管&lt;/strong&gt;：行业主管部门直接监管、安全监管部门综合监管、地方政府属地监管。&lt;br&gt;
&lt;strong&gt;6. 责任体系&lt;/strong&gt;：党政同责、一岗双责、齐抓共管、失职追责。&lt;br&gt;
&lt;strong&gt;7. 红线意识&lt;/strong&gt;：人命关天，发展决不能以牺牲人的生命为代价，这是不可逾越的红线。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="二治本攻坚三年行动2024-2026"&gt;二、治本攻坚三年行动（2024-2026）
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;8. 行动目标&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;2024年底：消除2023年前排查发现的重大隐患存量；&lt;/li&gt;
&lt;li&gt;2025年底：有效遏制重大隐患增量；&lt;/li&gt;
&lt;li&gt;2026年底：形成重大隐患动态清零的常态化机制。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;9. 十大任务&lt;/strong&gt;：①落实责任制；②主要负责人培训；③判定标准提升；④隐患排查整治；⑤科技支撑治理；⑥危险作业治理；⑦安全管理体系建设；⑧从业人员素质提升；⑨精准执法帮扶；⑩全民素质提升。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="三安全生产法法定职责速查"&gt;三、《安全生产法》法定职责速查
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;10. 主要负责人七项职责&lt;/strong&gt;：建制度责任制；定规章规程；定培训计划；保投入；建双重预防机制并查患；定预案；及时如实报告事故。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;11. 安全管理人员七项职责&lt;/strong&gt;：参与拟订规章预案；组织培训并记录；辨识评估重大危险源；组织演练；查患提建议；制止违章强令冒险；督促整改落实。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="四六个百分百要求环保--农民工"&gt;四、六个百分百要求（环保 + 农民工）
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;12. 环保六个100%&lt;/strong&gt;：①施工现场100%标准化围蔽；②沙土100%覆盖；③道路作业区100%硬化；④拆除100%洒水压尘；⑤出车100%冲洗；⑥长期裸土100%覆盖或绿化。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;农民工六个100%&lt;/strong&gt;：①劳务合同签署100%；②工资保证金存储100%；③分账拨付100%；④实名制打卡100%；⑤工资银行代发100%；⑥离场结算100%。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="五重大事故隐患判定标准建筑施工重点"&gt;五、重大事故隐患判定标准（建筑施工重点）
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;13. 施工管理重大隐患&lt;/strong&gt;：无证施工；负责人/安管人员/特工无证上岗；危大工程方案未编审或未论证。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;14. 基坑工程&lt;/strong&gt;：未对毗邻管线防护；超挖未措施；深基坑无第三方监测；出现坍塌预兆（变形超限、大量漏水、管涌、桩间土流失）。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;15. 模板工程&lt;/strong&gt;：地基承载力/变形不满足设计；施工荷载超设计值；拆除/爬升时混凝土强度未达标。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;16. 脚手架工程&lt;/strong&gt;：地基不满足设计；连墙件整层缺失；附着式升降脚手架未验收或装置失效；悬臂高度超限（&amp;gt;2/5或&amp;gt;6米）。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;17. 起重机械&lt;/strong&gt;：未验收即用；垂直度/悬高超标；安装前未查连接件；安全装置缺失失效；防坠器超期；基础不满足设计。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;18. 高处作业&lt;/strong&gt;：支撑结构地基/防倾覆不满足；钢桁架未防失稳；悬挑平台未固定在主体结构。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;19. 临时用电&lt;/strong&gt;：特殊环境（隧道、人防、高温潮湿等）未按规定使用安全电压。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;20. 有限空间&lt;/strong&gt;：未审批、未培训、未“先通风再检测后作业”、现场无专人监护。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;21. 拆除工程&lt;/strong&gt;：作业顺序不符合规范和方案。&lt;br&gt;
&lt;strong&gt;22. 淘汰工艺&lt;/strong&gt;：使用可能导致群死群伤的施工工艺、设备和材料。&lt;br&gt;
&lt;strong&gt;23. 其他&lt;/strong&gt;：严重违反法规标准，且危害程度较大的现实危险。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="六安全生产十五条硬措施"&gt;六、安全生产十五条硬措施
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;24. 具体内容&lt;/strong&gt;：①严落地方党委责任；②严落地方政府责任；③严落部门监管责任；④严追领导监管责任；⑤企业主要负责人严格履责；⑥深入开展全国大检查；⑦守住项目审批红线；⑧严查违法分包转包；⑨加强劳务派遣用工管理；⑩重拳“打非治违”；⑪整治执法宽松软；⑫加强执法队伍建设；⑬重奖隐患举报；⑭严查瞒报谎报；⑮统筹经济发展、疫情防控和安全生产。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="七通用管理核心名词解释"&gt;七、通用管理核心名词解释
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;25. 双重预防机制&lt;/strong&gt;：安全风险分级管控 + 隐患排查治理。&lt;br&gt;
&lt;strong&gt;26. 四不两直&lt;/strong&gt;：不发通知、不打招呼、不听汇报、不用陪同、直奔基层、直插现场。&lt;br&gt;
&lt;strong&gt;27. 三管三必须&lt;/strong&gt;：管行业、管业务、管生产经营必须管安全。&lt;br&gt;
&lt;strong&gt;28. 三个责任&lt;/strong&gt;：企业主体责任、部门监管责任、属地监管责任。&lt;br&gt;
&lt;strong&gt;29. 四不放过&lt;/strong&gt;：原因未查清不放过；责任人未处理不放过；群众未受教育不放过；整改措施未落实不放过。&lt;br&gt;
&lt;strong&gt;30. 安全生产月&lt;/strong&gt;：每年 &lt;strong&gt;6月&lt;/strong&gt;。举报电话：&lt;strong&gt;12350&lt;/strong&gt;。&lt;br&gt;
&lt;strong&gt;31. 安全生产方针&lt;/strong&gt;：安全第一、预防为主、综合治理。&lt;br&gt;
&lt;strong&gt;32. 三违&lt;/strong&gt;：违章指挥、违规作业、违反劳动纪律。&lt;br&gt;
&lt;strong&gt;33. 四不伤害&lt;/strong&gt;：不伤害自己、不伤害他人、不被别人伤害、不使别人被他人伤害。&lt;br&gt;
&lt;strong&gt;34. 三同时&lt;/strong&gt;：安全设施与主体工程同时设计、同时施工、同时投产使用。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;35. 五级五覆盖&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;五级&lt;/strong&gt;：省、地、县、镇（街道）、行政村。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;五覆盖&lt;/strong&gt;：①党政同责全覆盖；②一岗双责全覆盖；③主要领导任安委会主任全覆盖；④安监部门向组织部门通报安全情况全覆盖；⑤三管三必须全覆盖。&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id="八机构配备与三项制度"&gt;八、机构配备与三项制度
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;36. 机构人员配备&lt;/strong&gt;：矿山、冶金、道路运输、建筑及危化品单位必须设机构或专管人员；其他单位超100人设机构或专管，100人以下设专/兼职。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;37. 三项制度&lt;/strong&gt;：安全生产管理制度、安全生产责任制、操作规程。&lt;br&gt;
&lt;strong&gt;38. 安全操作规程&lt;/strong&gt;：包含总则、工作前安全规则、工作中安全规则、工作结束安全规则四部分。&lt;br&gt;
&lt;strong&gt;39. 主要管理制度清单&lt;/strong&gt;（17项）：含责任制、培训教育、安全检查、危险化学品、安全投入、劳保用品、事故管理、防火防爆、特种作业人员管理等。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="九专项作业与危险源管理"&gt;九、专项作业与危险源管理
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;40. 高处作业&lt;/strong&gt;：坠落高度基准面 &lt;strong&gt;2米以上（含2米）&lt;/strong&gt;。&lt;br&gt;
&lt;strong&gt;41. 有限空间&lt;/strong&gt;：封闭/半封闭、通风不良、出入口狭窄、易积聚有毒有害或氧含量不足。&lt;br&gt;
&lt;strong&gt;42. 有限空间作业原则&lt;/strong&gt;：严格审批，&lt;strong&gt;先通风、再检测、后作业&lt;/strong&gt;。&lt;br&gt;
&lt;strong&gt;43. 有限空间事故处置&lt;/strong&gt;：立即报警，&lt;strong&gt;禁止盲目施救&lt;/strong&gt;，救援人员戴防护器具。&lt;br&gt;
&lt;strong&gt;44. 动火作业&lt;/strong&gt;：电焊、气焊、切割及产生火焰/火花的临时作业。&lt;br&gt;
&lt;strong&gt;45. 临时用电&lt;/strong&gt;：正式电力系统之外临时低压供电。&lt;br&gt;
&lt;strong&gt;46. 拆除作业&lt;/strong&gt;：对既有建（构）筑物进行拆除清理。&lt;br&gt;
&lt;strong&gt;47. 重大危险源定义&lt;/strong&gt;：长期/临时生产、搬运、使用或储存危险品，且数量等于或超过临界量的单元。&lt;br&gt;
&lt;strong&gt;48. 重大危险源管理&lt;/strong&gt;：登记建档，定期检测评估监控，制定预案，报部门备案。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="十隐患排查治理全流程"&gt;十、隐患排查治理全流程
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;49. 事故隐患定义&lt;/strong&gt;：人的因素、物的变化、环境影响产生的不安全因素。&lt;br&gt;
&lt;strong&gt;50. 责任主体&lt;/strong&gt;：&lt;strong&gt;企业&lt;/strong&gt;是排查、治理和防控的责任主体。&lt;br&gt;
&lt;strong&gt;51. 不能立即整改的隐患&lt;/strong&gt;：建立登记整改销项制度，定人、定措施、定经费、定日期；有险情立即停工。&lt;br&gt;
&lt;strong&gt;52. 重大隐患报告&lt;/strong&gt;：向安全监管监察部门报告，内容含现状原因、危害程度、治理方案。&lt;br&gt;
&lt;strong&gt;53. 治理方案六要素&lt;/strong&gt;：目标任务、方法措施、经费物资、机构人员、时限要求、安全措施和应急预案。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="十一刑事责任与事故处罚"&gt;十一、刑事责任与事故处罚
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;54. 重大责任事故罪（刑法134条）&lt;/strong&gt;：违反规定致重大伤亡，处3年以下；情节恶劣的处3-7年。&lt;br&gt;
&lt;strong&gt;55. 强令冒险作业罪（刑法134条Ⅱ）&lt;/strong&gt;：处5年以下；情节恶劣的处5年以上。&lt;br&gt;
&lt;strong&gt;56. 重大劳动安全事故罪（刑法135条）&lt;/strong&gt;：设施不符国标，处3年以下；情节恶劣的处3-7年。&lt;br&gt;
&lt;strong&gt;57. 单位经济处罚&lt;/strong&gt;：一般事故罚30-100万；较大100-200万；重大200-1000万；特重大1000-2000万；情节特别严重可处2-5倍。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="十二事故报告与等级"&gt;十二、事故报告与等级
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;58. 报告时限&lt;/strong&gt;：现场人员立即报负责人；负责人 &lt;strong&gt;1小时内&lt;/strong&gt; 报县级以上应急部门。&lt;br&gt;
&lt;strong&gt;59. 报告内容&lt;/strong&gt;：单位概况；时间地点现场；简要经过；伤亡及损失；已采取措施；其他情况。&lt;br&gt;
&lt;strong&gt;60. 事故等级&lt;/strong&gt;：特别重大（30人以上死亡/100人以上重伤/1亿以上损失）；重大（10-29死/50-99重伤/5000万-1亿）；较大（3-9死/10-49重伤/1000万-5000万）；一般（3人以下死/10人以下重伤/1000万以下）。&lt;br&gt;
&lt;strong&gt;61. 谎报&lt;/strong&gt;：故意不如实报告时间、地点、原因、性质、伤亡、损失。&lt;br&gt;
&lt;strong&gt;62. 瞒报&lt;/strong&gt;：隐瞒已发事故，超时限未报告。&lt;br&gt;
&lt;strong&gt;63. 不报/谎报罪（刑法139条）&lt;/strong&gt;：贻误抢救，情节严重处3年以下，特别严重处3-7年。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="十三安全教育培训专项"&gt;十三、安全教育培训专项
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;64. 三项岗位&lt;/strong&gt;：主要负责人、安全管理人员、特种作业人员（必须持证上岗）。&lt;br&gt;
&lt;strong&gt;65. 特种作业工种&lt;/strong&gt;：电工、焊工、高处、制冷空调、矿山、危化品、冶金煤气、烟花爆竹等。&lt;br&gt;
&lt;strong&gt;66. 无证处罚&lt;/strong&gt;：责令改正并处5万以下罚款；逾期未改责令停业并处5-10万，对责任人处1-2万。&lt;br&gt;
&lt;strong&gt;67. 三级安全教育&lt;/strong&gt;：企业级 → 部门（项目）级 → 班组级。&lt;br&gt;
&lt;strong&gt;68. 培训学时&lt;/strong&gt;：一般企业新员工 &lt;strong&gt;不少于24学时&lt;/strong&gt;；高危企业 &lt;strong&gt;不少于72学时&lt;/strong&gt;。&lt;br&gt;
&lt;strong&gt;69. 班组级内容&lt;/strong&gt;：岗位规程、岗位衔接安全事项、事故案例、其他。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="十四施工现场专项安全"&gt;十四、施工现场专项安全
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;70. 建筑五大伤害&lt;/strong&gt;：高处坠落、触电、物体打击、机械伤害、坍塌。&lt;br&gt;
&lt;strong&gt;71. 防坍塌要求&lt;/strong&gt;：编方案经总工审批；书面交底；专人监控并加强检查。&lt;br&gt;
&lt;strong&gt;72. 大型机械装拆&lt;/strong&gt;：有资质专业队伍；方案审批；人员交底持证；设警戒；安装后检测合格方可用。&lt;br&gt;
&lt;strong&gt;73. 三宝四口五临边&lt;/strong&gt;：安全帽/带/网；电梯/楼梯/预留/通道口；沟坑槽周边/楼层/楼梯/平台/屋面周边。&lt;br&gt;
&lt;strong&gt;74. 现场防火&lt;/strong&gt;：配灭火器材；动火审批；超30米高层设消防水源管道及增压泵。&lt;br&gt;
&lt;strong&gt;75. 项目经理安全职责&lt;/strong&gt;：项目第一责任人；落实规章；组织安全措施；定期会议检查；整改复查；上报事故。&lt;br&gt;
&lt;strong&gt;76. 施工员安全职责&lt;/strong&gt;：按方案组织施工；落实安全措施；制止违章；做好交底；限时落实整改。&lt;br&gt;
&lt;strong&gt;77. 技术员安全职责&lt;/strong&gt;：编施组及安全技术措施；编专项规程；技术交底；安全设施技术鉴定。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="十五实操禁令十不吊十不焊十不准"&gt;十五、实操禁令（十不吊/十不焊/十不准）
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;78. 起重十不吊&lt;/strong&gt;：超负荷不吊；信号不明不吊；捆绑不牢不吊；站人或有活动物不吊；歪拉斜挂不吊；吊钩挂重物加工不吊；棱角未垫不吊；埋地物不吊；爆炸物不吊；钢水过满未打卡不吊。&lt;br&gt;
&lt;strong&gt;79. 焊工十不焊&lt;/strong&gt;：无证不焊；雨天无措施不焊；装过易燃物未清洗不焊；密闭器具未措施不焊；未断电卸压不焊；周围易燃物未清不焊；性质不清不焊；附件不全不焊；容器内无监护不焊；禁火区未办手续不焊。&lt;br&gt;
&lt;strong&gt;80. 电气十不准&lt;/strong&gt;：无证不准装接；不准玩弄开关；不准用绝缘损坏设备；不准用电热取暖；不准启动挂警告牌设备；不准用水冲洗；熔丝不准换错；埋电缆处未办手续不准动土；触电未断电不准接触；雷雨时不准近避雷器。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="十六突发事件追责与宣传"&gt;十六、突发事件追责与宣传
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;81. 信息报告追责&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;迟报&lt;/strong&gt;：未在规定时限报告；&lt;strong&gt;漏报&lt;/strong&gt;：过失超24小时未报；&lt;strong&gt;瞒报&lt;/strong&gt;：主观故意不报；&lt;strong&gt;谎报&lt;/strong&gt;：故意严重失实。&lt;/li&gt;
&lt;li&gt;发生上述行为，上级核查并通报；情节严重问责。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;82. 五进&lt;/strong&gt;：进社区、进学校、进企业、进农村、进家庭。&lt;br&gt;
&lt;strong&gt;83. 四个一律&lt;/strong&gt;：非法生产经营且整顿不达标一律关闭；责任人一律上限处罚；违法单位一律停产整顿；触犯法律一律追刑责。&lt;br&gt;
&lt;strong&gt;84. 五个一批&lt;/strong&gt;：曝光一批重大隐患；惩治一批违法行；通报一批黑名单；取缔一批非法企业；关闭一批不达标企业。&lt;br&gt;
&lt;strong&gt;85. 五落实&lt;/strong&gt;（隐患整改）：落实&lt;strong&gt;责任、措施、资金、时限、预案&lt;/strong&gt;。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="附录常见易燃易爆品爆炸极限"&gt;附录：常见易燃易爆品爆炸极限
&lt;/h2&gt;&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;物质&lt;/th&gt;
					&lt;th&gt;爆炸下限 ~ 上限&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;氢气&lt;/td&gt;
					&lt;td&gt;4% ~ 75%&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;甲烷（天然气）&lt;/td&gt;
					&lt;td&gt;5% ~ 15%&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;丙烷（液化石油气）&lt;/td&gt;
					&lt;td&gt;2.1% ~ 9.5%&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;乙炔&lt;/td&gt;
					&lt;td&gt;2.5% ~ 82%&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;氨气&lt;/td&gt;
					&lt;td&gt;15% ~ 28%&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;汽油&lt;/td&gt;
					&lt;td&gt;1.4% ~ 7.6%&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr&gt;

 &lt;blockquote&gt;
 &lt;p&gt;&lt;strong&gt;结语&lt;/strong&gt;：本文已完整覆盖原文档全部85个知识点。安全生产重在落实，建议收藏此文并定期对照学习，将纸面知识转化为现场的实际行动，切实守护每一个人的生命健康安全。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id="-资源下载"&gt;📄 资源下载
&lt;/h2&gt;&lt;p&gt;感谢阅读！如需获取本文完整版PDF（含全部85个知识点），请点击下方链接：
&lt;a class="link" href="%E5%BB%BA%E7%AD%91%E6%96%BD%E5%B7%A5%E5%AE%89%E5%85%A8%E7%94%9F%E4%BA%A7%E5%BA%94%E7%9F%A5%E5%BA%94%E4%BC%9A%E7%9F%A5%E8%AF%86%EF%BC%88%E5%AE%8C%E6%95%B4%E7%89%88%EF%BC%89.pdf"&gt;📥 建筑施工安全生产应知应会知识（完整版）.pdf&lt;/a&gt;&lt;/p&gt;</description></item><item><title>在 Android 上用 Termux + Hugo 搭建移动博客系统</title><link>https://yaoruisheng.vicp.cc/p/hugo-termux-mobile-blog/</link><pubDate>Mon, 29 Jun 2026 08:08:00 +0800</pubDate><guid>https://yaoruisheng.vicp.cc/p/hugo-termux-mobile-blog/</guid><description>&lt;img src="https://yaoruisheng.vicp.cc/p/hugo-termux-mobile-blog/_.webp" alt="Featured image of post 在 Android 上用 Termux + Hugo 搭建移动博客系统" /&gt;&lt;p&gt;在 Android 手机上使用 Hugo + Termux，可以直接完成博客编写、预览、同步与部署。再配合 SFTP 和 Git，就能把手机变成一个轻量级“移动开发机”。&lt;/p&gt;
&lt;p&gt;本文记录一套完整可用方案，包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Hugo 安装与运行&lt;/li&gt;
&lt;li&gt;SFTP（供 CX 文件管理器访问）&lt;/li&gt;
&lt;li&gt;Termux 自动启动 SSH 服务&lt;/li&gt;
&lt;li&gt;Git（仅 HTTPS 提交 GitHub）&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id="安装-hugo静态博客系统"&gt;安装 Hugo（静态博客系统）
&lt;/h2&gt;&lt;p&gt;Hugo 是一个基于 Go 的静态网站生成器，构建速度极快，非常适合写博客。&lt;/p&gt;
&lt;h3 id="安装命令"&gt;安装命令
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;pkg update &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; pkg upgrade -y
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;pkg install git curl wget -y
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;pkg install hugo -y
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="验证安装"&gt;验证安装
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;hugo version
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;出现版本号即表示安装成功。&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id="创建站点"&gt;创建站点
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;hugo new site blog
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; blog
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;目录结构如下：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;span class="lnt"&gt;7
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;blog/
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├── archetypes/
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├── content/
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├── layouts/
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├── static/
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├── themes/
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;└── hugo.toml
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;hr&gt;
&lt;h3 id="本地预览"&gt;本地预览
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;hugo server -D -b http://127.0.0.1:1313
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;浏览器访问：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;http://127.0.0.1:1313
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;hr&gt;
&lt;h2 id="安装-sftpcx-文件管理器访问-termux"&gt;安装 SFTP（CX 文件管理器访问 Termux）
&lt;/h2&gt;&lt;p&gt;CX File Explorer 使用 SFTP，因此需要在 Termux 中启用 SSH 服务。&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id="安装-openssh"&gt;安装 OpenSSH
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;pkg install openssh -y
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;hr&gt;
&lt;h3 id="设置密码"&gt;设置密码
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;passwd
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;hr&gt;
&lt;h3 id="启动-ssh-服务"&gt;启动 SSH 服务
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sshd
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;默认端口：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;8022
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;hr&gt;
&lt;h3 id="cx-文件管理器连接配置"&gt;CX 文件管理器连接配置
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;主机：手机 IP（或 127.0.0.1）&lt;/li&gt;
&lt;li&gt;端口：8022&lt;/li&gt;
&lt;li&gt;用户名：Termux 用户名（&lt;code&gt;whoami&lt;/code&gt; 查看）&lt;/li&gt;
&lt;li&gt;密码：刚设置的密码&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;whoami
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;hr&gt;
&lt;h2 id="termux-启动自动运行-sshd"&gt;Termux 启动自动运行 SSHD
&lt;/h2&gt;&lt;p&gt;目标：打开 Termux 自动启动 sshd（非开机自启）&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id="写入-bash-启动脚本"&gt;写入 bash 启动脚本
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;nano ~/.bashrc
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;添加：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 避免重复启动 sshd&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;pgrep sshd &amp;gt;/dev/null &lt;span class="o"&gt;||&lt;/span&gt; sshd
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果使用 zsh：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;nano ~/.zshrc
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;同样添加。&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id="验证"&gt;验证
&lt;/h3&gt;&lt;p&gt;重新打开 Termux：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ps -A &lt;span class="p"&gt;|&lt;/span&gt; grep sshd
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;看到 sshd 进程即成功。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="安装-git仅-https"&gt;安装 Git（仅 HTTPS）
&lt;/h2&gt;&lt;hr&gt;
&lt;h3 id="安装-git"&gt;安装 Git
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;pkg install git -y
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;hr&gt;
&lt;h3 id="基础配置"&gt;基础配置
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git config --global user.name &lt;span class="s2"&gt;&amp;#34;你的GitHub用户名&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git config --global user.email &lt;span class="s2"&gt;&amp;#34;你的邮箱&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;hr&gt;
&lt;h3 id="使用-https-克隆仓库"&gt;使用 HTTPS 克隆仓库
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git clone https://github.com/用户名/仓库.git
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;hr&gt;
&lt;h3 id="使用-github-token"&gt;使用 GitHub Token
&lt;/h3&gt;&lt;p&gt;路径：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Settings → Developer settings → Personal access tokens
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;hr&gt;
&lt;h3 id="保存凭据"&gt;保存凭据
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git config --global credential.helper store
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;hr&gt;
&lt;h3 id="推送-hugo-项目"&gt;推送 Hugo 项目
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;span class="lnt"&gt;7
&lt;/span&gt;&lt;span class="lnt"&gt;8
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; blog
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git init
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git add .
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git commit -m &lt;span class="s2"&gt;&amp;#34;init hugo site&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git remote add origin https://github.com/用户名/仓库.git
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git push -u origin main
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;hr&gt;
&lt;h2 id="推荐工作流"&gt;推荐工作流
&lt;/h2&gt;&lt;h3 id="写作流程"&gt;写作流程
&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;CX 文件管理器编辑 Markdown&lt;/li&gt;
&lt;li&gt;Hugo 本地预览&lt;/li&gt;
&lt;li&gt;Termux Git push 到 GitHub&lt;/li&gt;
&lt;li&gt;GitHub Actions → EdgeOne Pages 自动部署&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h2 id="总结"&gt;总结
&lt;/h2&gt;&lt;p&gt;这套方案的核心优势：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;手机即可完成 Hugo 博客开发&lt;/li&gt;
&lt;li&gt;CX 文件管理器直接编辑文件&lt;/li&gt;
&lt;li&gt;SSH/SFTP 实时访问 Termux&lt;/li&gt;
&lt;li&gt;Git HTTPS 稳定同步&lt;/li&gt;
&lt;li&gt;无需电脑完成完整发布流程&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>笑着祝福，才是最痛的告别</title><link>https://yaoruisheng.vicp.cc/p/guests-silent-farewell/</link><pubDate>Fri, 26 Jun 2026 14:00:00 +0800</pubDate><guid>https://yaoruisheng.vicp.cc/p/guests-silent-farewell/</guid><description>&lt;img src="https://yaoruisheng.vicp.cc/p/guests-silent-farewell/_.webp" alt="Featured image of post 笑着祝福，才是最痛的告别" /&gt;





 


&lt;div class="video-wrapper"&gt;
 &lt;iframe src="https://player.bilibili.com/player.html?as_wide=1&amp;amp;high_quality=1&amp;amp;page=1&amp;bvid=BV1NXxxzPEH7"
 scrolling="no"
 frameborder="no"
 framespacing="0"
 allowfullscreen="true"
 &gt;
 &lt;/iframe&gt;
&lt;/div&gt;

&lt;p&gt;嘉宾这首歌之所以能引起很多人的共鸣，并不是因为它描写了轰轰烈烈的爱情，而是因为它描写了一种&lt;strong&gt;爱情已经结束，但情感还没有结束&lt;/strong&gt;的状态。&lt;/p&gt;
&lt;p&gt;从歌词和整体情绪来看，它主要反映了几种心境。&lt;/p&gt;
&lt;h2 id="无能为力的遗憾最核心"&gt;无能为力的遗憾（最核心）
&lt;/h2&gt;&lt;p&gt;歌曲讲的是一个人在前任的婚礼上，以&amp;quot;嘉宾&amp;quot;的身份出现。&lt;/p&gt;
&lt;p&gt;最扎心的地方在于，他没有能力改变任何事情。&lt;/p&gt;
&lt;p&gt;曾经幻想一起走到最后的人，如今已经属于别人。自己既不能挽回，也不能表达，只能笑着送上祝福。&lt;/p&gt;
&lt;p&gt;这种遗憾不是激烈的，而是平静中带着疼痛。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="克制而压抑的爱"&gt;克制而压抑的爱
&lt;/h2&gt;&lt;p&gt;整首歌几乎没有埋怨，没有愤怒，也没有责怪。&lt;/p&gt;
&lt;p&gt;更多的是一种：&lt;/p&gt;

 &lt;blockquote&gt;
 &lt;p&gt;我还爱你，但我不能再说。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;p&gt;这种情绪比恨更复杂。&lt;/p&gt;
&lt;p&gt;因为真正放下的人，不会痛；真正恨的人，会发泄。&lt;/p&gt;
&lt;p&gt;而歌曲里的主人公介于两者之间——&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;既舍不得，又不得不接受现实。&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="成年人的体面"&gt;成年人的体面
&lt;/h2&gt;&lt;p&gt;歌曲反复强调&amp;quot;嘉宾&amp;quot;这个身份。&lt;/p&gt;
&lt;p&gt;&amp;ldquo;嘉宾&amp;quot;意味着：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;可以出席；&lt;/li&gt;
&lt;li&gt;可以祝福；&lt;/li&gt;
&lt;li&gt;可以微笑；&lt;/li&gt;
&lt;li&gt;却再也没有资格牵你的手。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;所以歌词里有一种成年人特有的克制。&lt;/p&gt;
&lt;p&gt;外表越平静，内心越翻涌。&lt;/p&gt;
&lt;p&gt;很多听众觉得这首歌&amp;quot;虐&amp;rdquo;，不是因为歌词有多悲伤，而是因为它没有歇斯底里，而是把情绪压住了。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="对过去的怀念"&gt;对过去的怀念
&lt;/h2&gt;&lt;p&gt;歌曲里的主人公一直在拿&amp;quot;过去&amp;quot;和&amp;quot;现在&amp;quot;作对比。&lt;/p&gt;
&lt;p&gt;以前：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;我们规划未来；&lt;/li&gt;
&lt;li&gt;我们彼此承诺；&lt;/li&gt;
&lt;li&gt;我们以为会一直在一起。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;现在：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;新郎不是我；&lt;/li&gt;
&lt;li&gt;我只是坐在台下。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这种巨大的反差，会让人不断回忆曾经的点点滴滴。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="接受现实但没有真正释怀"&gt;接受现实，但没有真正释怀
&lt;/h2&gt;&lt;p&gt;这是整首歌最有意思的一点。&lt;/p&gt;
&lt;p&gt;主人公已经接受了事实：&lt;/p&gt;

 &lt;blockquote&gt;
 &lt;p&gt;你结婚了。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;p&gt;但是并没有真正做到：&lt;/p&gt;

 &lt;blockquote&gt;
 &lt;p&gt;我已经完全放下你了。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;p&gt;所以歌词里既有祝福，又有失落。&lt;/p&gt;
&lt;p&gt;心理学上，这是一种常见的状态：&lt;strong&gt;理性已经接受，情感还没有跟上。&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="为什么很多人觉得它很真实"&gt;为什么很多人觉得它很真实？
&lt;/h2&gt;&lt;p&gt;因为现实中的大多数感情，并不是因为背叛、争吵而结束。&lt;/p&gt;
&lt;p&gt;更多时候只是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;时间错了；&lt;/li&gt;
&lt;li&gt;两个人成长方向不同；&lt;/li&gt;
&lt;li&gt;家庭、距离、现实压力；&lt;/li&gt;
&lt;li&gt;最终各自开始新的生活。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;所以歌曲没有塑造&amp;quot;坏人&amp;quot;。&lt;/p&gt;
&lt;p&gt;没有人做错什么，却还是没能走到一起。&lt;/p&gt;
&lt;p&gt;这种&amp;quot;没有输赢，却失去了彼此&amp;quot;的故事，更容易让经历过感情的人产生共鸣。&lt;/p&gt;
&lt;h2 id="总结"&gt;总结
&lt;/h2&gt;&lt;p&gt;《嘉宾》表达的并不是&amp;quot;还想追回前任&amp;quot;，也不是&amp;quot;怨恨前任&amp;quot;，而是一种更加复杂、成熟的情绪：&lt;/p&gt;

 &lt;blockquote&gt;
 &lt;p&gt;&lt;strong&gt;深爱过的人最终成为了人生中的&amp;quot;嘉宾&amp;quot;，只能带着遗憾和祝福，接受彼此已经走向不同人生的事实。&lt;/strong&gt;&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;p&gt;它的底色不是绝望，而是&lt;strong&gt;遗憾、克制、怀念，以及对现实的接受&lt;/strong&gt;。也正因为这种情绪没有极端化，反而更贴近很多人真实经历过的离别。&lt;/p&gt;</description></item><item><title>第一次到综治中心值班，我发现了两个“调解范围”</title><link>https://yaoruisheng.vicp.cc/p/first-duty-at-comprehensive-governance-center/</link><pubDate>Tue, 23 Jun 2026 12:00:00 +0800</pubDate><guid>https://yaoruisheng.vicp.cc/p/first-duty-at-comprehensive-governance-center/</guid><description>&lt;img src="https://yaoruisheng.vicp.cc/p/first-duty-at-comprehensive-governance-center/_.webp" alt="Featured image of post 第一次到综治中心值班，我发现了两个“调解范围”" /&gt;&lt;p&gt;今天第一次到综治中心参与值班工作。&lt;/p&gt;
&lt;p&gt;作为住建系统工作人员，起初对综治中心的运行方式和岗位职责了解不多，对现场可能涉及的住建领域咨询事项也缺乏直观认识。因此在值班前，结合工作需要，查阅了一些住房和城乡建设领域矛盾纠纷多元化解及行政调解相关政策资料，进行一定程度的学习了解。&lt;/p&gt;
&lt;p&gt;通过梳理相关文件，对住建领域矛盾纠纷化解机制有了进一步认识。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="一关于住建领域矛盾纠纷多元化解的总体框架"&gt;一、关于住建领域矛盾纠纷多元化解的总体框架
&lt;/h2&gt;&lt;p&gt;2021年，福建省住建厅、司法厅联合印发《关于建立健全住房和城乡建设领域矛盾纠纷多元化解工作机制的指导意见（试行）》。&lt;/p&gt;
&lt;p&gt;文件对住建领域矛盾纠纷的范围作出较为系统的规定，主要包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;房地产开发经营、房屋买卖等房地产市场领域纠纷&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;物业服务、物业管理相关纠纷&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;建设工程施工及合同履行相关纠纷&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;房屋征收、拆迁安置补偿等相关矛盾&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;住房保障、住房公积金管理等事项&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;以及其他涉及住房和城乡建设领域的矛盾纠纷&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;总体来看，该文件强调的是构建住建领域矛盾纠纷多元化解工作体系，推动人民调解、行政调解、行业调解与司法调解的衔接联动。&lt;/p&gt;
&lt;p&gt;相关文件链接如下：&lt;br&gt;
&lt;a class="link" href="https://zjt.fujian.gov.cn/xxgk/zxwj/202105/t20210518_5597297.htm"target="_blank" rel="noopener noreferrer"&gt;https://zjt.fujian.gov.cn/xxgk/zxwj/202105/t20210518_5597297.htm&lt;/a&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="二关于行政调解事项的具体边界"&gt;二、关于行政调解事项的具体边界
&lt;/h2&gt;&lt;p&gt;在进一步查阅过程中，还看到福鼎市住建局于2022年公布的《行政调解事项清单》。&lt;/p&gt;
&lt;p&gt;该清单从行政管理职责出发，对住建部门可以依法开展行政调解的事项进行了明确列举，主要包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;物业服务纠纷调解&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;物业承接查验争议调解&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;住宅室内装饰装修工程纠纷调解&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;建筑工程竣工结算审核意见异议调解&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;上述事项均对应具体法律法规依据，包括《福建省物业管理条例》《物业承接查验办法》《住宅室内装饰装修管理办法》《建筑工程施工发包与承包计价管理办法》等。&lt;/p&gt;
&lt;p&gt;相关清单链接如下：&lt;br&gt;
&lt;a class="link" href="http://www.fuding.gov.cn/bmzfxxgk/zjj/zfxxgkml/qtyzdgkxx/202209/t20220919_1660954.htm"target="_blank" rel="noopener noreferrer"&gt;http://www.fuding.gov.cn/bmzfxxgk/zjj/zfxxgkml/qtyzdgkxx/202209/t20220919_1660954.htm&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;从内容看，该清单更侧重于对行政调解法定依据和适用范围的明确界定，具有较强的操作性和规范性。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="三关于两个范围的初步认识"&gt;三、关于两个“范围”的初步认识
&lt;/h2&gt;&lt;p&gt;对比上述两类文件可以看到：&lt;/p&gt;
&lt;p&gt;一类文件侧重于住建领域矛盾纠纷的整体覆盖范围与多元化解机制建设；&lt;br&gt;
另一类文件侧重于住建部门行政调解职能的法定事项边界。&lt;/p&gt;
&lt;p&gt;两者虽然存在一定交叉，但关注重点并不相同。&lt;/p&gt;
&lt;p&gt;前者强调的是治理体系内的协同与分流，属于整体制度设计层面；&lt;br&gt;
后者强调的是行政机关依法履职的具体范围，属于权责边界层面。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="四对部分常见问题的理解"&gt;四、对部分常见问题的理解
&lt;/h2&gt;&lt;p&gt;在实际工作中，一些常见住建领域问题，如商品房买卖合同纠纷、延期交付、质量争议等，从领域属性上看属于住建相关矛盾纠纷。&lt;/p&gt;
&lt;p&gt;但从行政调解角度分析，其是否属于行政机关可直接介入调解事项，需以法律法规明确授权为依据。&lt;/p&gt;
&lt;p&gt;因此，此类问题在实践中往往通过人民调解、行业调解、诉讼以及综治中心分流等多种渠道综合处理。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="五关于综治中心工作的初步体会"&gt;五、关于综治中心工作的初步体会
&lt;/h2&gt;&lt;p&gt;通过本次值班，对综治中心运行机制有了初步认识。&lt;/p&gt;
&lt;p&gt;综治中心在运行过程中，更侧重于矛盾纠纷的统一受理、分类流转与多元化解衔接。群众反映的问题往往具有综合性和交叉性，需要在不同部门和不同调解机制之间进行识别与分流。&lt;/p&gt;
&lt;p&gt;对于行业部门而言，参与综治工作不仅是窗口值守，也是在具体场景中进一步理解本领域职责边界与参与方式的重要途径。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="六几点认识"&gt;六、几点认识
&lt;/h2&gt;&lt;p&gt;通过对相关文件的学习和实际值班体验，形成以下初步认识：&lt;/p&gt;
&lt;p&gt;一是住建领域矛盾纠纷范围较为广泛，覆盖房地产、建筑施工、物业管理等多个方面；&lt;br&gt;
二是行政调解事项需以法定授权为基础，具有明确的适用边界；&lt;br&gt;
三是多元化解机制在实践中承担着分流与衔接的重要作用；&lt;br&gt;
四是在综治体系内，部门职责更多体现为协同参与与依法履职。&lt;/p&gt;</description></item><item><title>解决车机与小音箱 MP3 播放乱序问题：FAT32 + sort -V 批处理方案</title><link>https://yaoruisheng.vicp.cc/p/mp3-fats32-order-fix/</link><pubDate>Sun, 21 Jun 2026 14:00:00 +0800</pubDate><guid>https://yaoruisheng.vicp.cc/p/mp3-fats32-order-fix/</guid><description>&lt;img src="https://yaoruisheng.vicp.cc/p/mp3-fats32-order-fix/_.webp" alt="Featured image of post 解决车机与小音箱 MP3 播放乱序问题：FAT32 + sort -V 批处理方案" /&gt;&lt;p&gt;很多人在整理 MP3 到车机或播放器时，会遇到一个非常常见但又很烦人的问题：&lt;/p&gt;
&lt;p&gt;文件明明已经按 &lt;code&gt;001.mp3&lt;/code&gt;、&lt;code&gt;002.mp3&lt;/code&gt; 排好，但实际播放时却完全乱序。&lt;/p&gt;
&lt;p&gt;这种问题不仅出现在车机上，在一些小型播放设备中同样非常明显，比如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;车载中控系统播放 USB 音乐&lt;/li&gt;
&lt;li&gt;老旧 MP3 播放器&lt;/li&gt;
&lt;li&gt;插卡式蓝牙小音箱&lt;/li&gt;
&lt;li&gt;小音箱播放儿童有声故事&lt;/li&gt;
&lt;li&gt;FAT32 格式的 U 盘 / SD 卡设备&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;最终播放效果往往变成：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;1.mp3
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;10.mp3
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;100.mp3
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;2.mp3
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;原本应该连续播放的儿童故事或音乐专辑，被打乱成“跳跃式播放”，体验非常差，尤其是给孩子听故事时，会直接影响理解顺序。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="一问题本质"&gt;一、问题本质
&lt;/h2&gt;&lt;p&gt;这个问题的根源并不是文件名错误，而是 FAT32 和设备读取方式共同导致的：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;FAT32 文件系统中：
&lt;ul&gt;
&lt;li&gt;目录项顺序 ≠ 文件名顺序&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;播放器可能按：
&lt;ul&gt;
&lt;li&gt;写入顺序&lt;/li&gt;
&lt;li&gt;文件系统索引顺序&lt;/li&gt;
&lt;li&gt;媒体库扫描顺序&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;不同设备实现方式不一致&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;因此即使文件名完全正确，也无法保证播放顺序稳定。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="二解决思路"&gt;二、解决思路
&lt;/h2&gt;&lt;p&gt;核心目标只有一个：&lt;/p&gt;

 &lt;blockquote&gt;
 &lt;p&gt;让文件以“可预测的顺序”写入文件系统&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;p&gt;解决思路如下：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;使用 &lt;code&gt;sort -V&lt;/code&gt; 进行自然排序（按数字逻辑排序）&lt;/li&gt;
&lt;li&gt;按顺序逐个复制文件（避免批量写入乱序）&lt;/li&gt;
&lt;li&gt;统一重命名为固定编号格式&lt;/li&gt;
&lt;li&gt;使用 &lt;code&gt;sync&lt;/code&gt; 强制刷新写入缓存&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h2 id="三sort--v-的作用"&gt;三、sort -V 的作用
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;sort -V&lt;/code&gt; 是 GNU sort 提供的“自然排序模式”，用于按数字语义排序：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sort -V
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;例如：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;1 &amp;lt; 2 &amp;lt; 10 &amp;lt; 100
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;而不是字符串排序：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;1 &amp;lt; 10 &amp;lt; 100 &amp;lt; 2
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;hr&gt;
&lt;h2 id="四终极稳定方案推荐脚本"&gt;四、终极稳定方案（推荐脚本）
&lt;/h2&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;span class="lnt"&gt;13
&lt;/span&gt;&lt;span class="lnt"&gt;14
&lt;/span&gt;&lt;span class="lnt"&gt;15
&lt;/span&gt;&lt;span class="lnt"&gt;16
&lt;/span&gt;&lt;span class="lnt"&gt;17
&lt;/span&gt;&lt;span class="lnt"&gt;18
&lt;/span&gt;&lt;span class="lnt"&gt;19
&lt;/span&gt;&lt;span class="lnt"&gt;20
&lt;/span&gt;&lt;span class="lnt"&gt;21
&lt;/span&gt;&lt;span class="lnt"&gt;22
&lt;/span&gt;&lt;span class="lnt"&gt;23
&lt;/span&gt;&lt;span class="lnt"&gt;24
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="cp"&gt;#!/bin/bash
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;src&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;/storage/emulated/0/Download/Audio&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;out&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;./OUT&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;rm -rf &lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="nv"&gt;$out&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;mkdir -p &lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="nv"&gt;$out&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;i&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;find &lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="nv"&gt;$src&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt; -maxdepth &lt;span class="m"&gt;1&lt;/span&gt; -type f -name &lt;span class="s2"&gt;&amp;#34;*.mp3&amp;#34;&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt; sort -V &lt;span class="p"&gt;|&lt;/span&gt; &lt;span class="k"&gt;while&lt;/span&gt; &lt;span class="nv"&gt;IFS&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;read&lt;/span&gt; -r f&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nv"&gt;name&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="k"&gt;$(&lt;/span&gt;&lt;span class="nb"&gt;printf&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;%03d.mp3&amp;#34;&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="nv"&gt;$i&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="k"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; cp &lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="nv"&gt;$f&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="nv"&gt;$out&lt;/span&gt;&lt;span class="s2"&gt;/&lt;/span&gt;&lt;span class="nv"&gt;$name&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; sync
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; sleep 0.2
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;写入: &lt;/span&gt;&lt;span class="nv"&gt;$name&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nv"&gt;i&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="k"&gt;$((&lt;/span&gt;i+1&lt;span class="k"&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;done&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;hr&gt;
&lt;h2 id="五关键点说明"&gt;五、关键点说明
&lt;/h2&gt;&lt;h3 id="sort--v"&gt;sort -V
&lt;/h3&gt;&lt;p&gt;保证逻辑顺序正确&lt;/p&gt;
&lt;h3 id="顺序复制"&gt;顺序复制
&lt;/h3&gt;&lt;p&gt;避免批量写入导致 FAT32 目录混乱&lt;/p&gt;
&lt;h3 id="sync"&gt;sync
&lt;/h3&gt;&lt;p&gt;强制刷新文件系统缓存&lt;/p&gt;
&lt;h3 id="sleep"&gt;sleep
&lt;/h3&gt;&lt;p&gt;降低部分设备扫描乱序概率&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="六验证方法"&gt;六、验证方法
&lt;/h2&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ls OUT &lt;span class="p"&gt;|&lt;/span&gt; sort -V
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;或：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ls -lt OUT
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;hr&gt;
&lt;h2 id="七适用场景"&gt;七、适用场景
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;车载 USB 音乐系统&lt;/li&gt;
&lt;li&gt;老旧 MP3 播放器&lt;/li&gt;
&lt;li&gt;插卡式蓝牙音箱&lt;/li&gt;
&lt;li&gt;儿童故事播放器&lt;/li&gt;
&lt;li&gt;FAT32 U 盘 / SD 卡设备&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id="八总结"&gt;八、总结
&lt;/h2&gt;&lt;p&gt;很多时候，问题并不在于文件是否排序正确，而在于：&lt;/p&gt;

 &lt;blockquote&gt;
 &lt;p&gt;设备读取文件的方式并不遵循你看到的文件名顺序&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;p&gt;通过 &lt;code&gt;sort -V + 顺序写入 + sync&lt;/code&gt; 的组合，可以在绝大多数 FAT32 播放设备上获得稳定的播放顺序。&lt;/p&gt;</description></item><item><title>Hugo 中文链接在 EdgeOne Pages 出现 404 的排查记录</title><link>https://yaoruisheng.vicp.cc/p/hugo-edgeone-pages-404-debug/</link><pubDate>Thu, 18 Jun 2026 00:00:00 +0800</pubDate><guid>https://yaoruisheng.vicp.cc/p/hugo-edgeone-pages-404-debug/</guid><description>&lt;img src="https://yaoruisheng.vicp.cc/p/hugo-edgeone-pages-404-debug/_.webp" alt="Featured image of post Hugo 中文链接在 EdgeOne Pages 出现 404 的排查记录" /&gt;&lt;h1 id="hugo-中文链接在-edgeone-pages-出现-404-的排查记录"&gt;Hugo 中文链接在 EdgeOne Pages 出现 404 的排查记录
&lt;/h1&gt;&lt;p&gt;最近将 Hugo 博客部署到 EdgeOne Pages 后，发现部分文章中的资源链接无法访问。
例如文章中存在如下 Markdown：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-markdown" data-lang="markdown"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;[&lt;span class="nt"&gt;封面图片&lt;/span&gt;](&lt;span class="na"&gt;封面图片.jpg&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;页面显示正常，但点击后返回：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;404 Not Found
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;经过检查发现，文件实际上存在：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;封面图片.jpg
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;理论上不应该出现 404。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="初步排查"&gt;初步排查
&lt;/h2&gt;&lt;p&gt;查看网页源码发现：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-html" data-lang="html"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;a&lt;/span&gt; &lt;span class="na"&gt;href&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;%e5%b0%81%e9%9d%a2%e5%9b%be%e7%89%87.jpg&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 封面图片
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;a&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;而 Hugo 生成的实际文件路径对应的 URL 为：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;%E5%B0%81%E9%9D%A2%E5%9B%BE%E7%89%87.jpg
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;注意区别：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;%e5%b0%81%e9%9d%a2%e5%9b%be%e7%89%87.jpg
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;与&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;%E5%B0%81%E9%9D%A2%E5%9B%BE%E7%89%87.jpg
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;唯一差异是百分号编码中的十六进制字母大小写。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="rfc-规范中的规定"&gt;RFC 规范中的规定
&lt;/h2&gt;&lt;p&gt;根据 RFC 3986：&lt;/p&gt;

 &lt;blockquote&gt;
 &lt;p&gt;Percent-encoded octets are case-insensitive.&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;p&gt;即：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;%E5%B0%81%E9%9D%A2%E5%9B%BE%E7%89%87
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;和&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;%e5%b0%81%e9%9d%a2%e5%9b%be%e7%89%87
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;理论上完全等价。&lt;/p&gt;
&lt;p&gt;绝大多数 Web 服务器都会正确处理。&lt;/p&gt;
&lt;p&gt;例如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Nginx&lt;/li&gt;
&lt;li&gt;Apache&lt;/li&gt;
&lt;li&gt;Cloudflare Pages&lt;/li&gt;
&lt;li&gt;GitHub Pages&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;通常不会区分大小写。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="edgeone-pages-的实际表现"&gt;EdgeOne Pages 的实际表现
&lt;/h2&gt;&lt;p&gt;实际测试发现：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;%E5%B0%81%E9%9D%A2%E5%9B%BE%E7%89%87.jpg
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;能够正常访问。&lt;/p&gt;
&lt;p&gt;而：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;%e5%b0%81%e9%9d%a2%e5%9b%be%e7%89%87.jpg
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;则返回：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;404 Not Found
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;说明 EdgeOne Pages 在静态文件匹配过程中，对 Percent-Encoding 的大小写进行了区分。&lt;/p&gt;
&lt;p&gt;这与 RFC 的推荐行为并不一致。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="为什么-hugo-会生成小写编码"&gt;为什么 Hugo 会生成小写编码
&lt;/h2&gt;&lt;p&gt;问题继续追踪到 Hugo。&lt;/p&gt;
&lt;p&gt;主题中的链接模板：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-go-html-template" data-lang="go-html-template"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;a&lt;/span&gt; &lt;span class="na"&gt;href&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;&lt;/span&gt;&lt;span class="cp"&gt;{{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="na"&gt;.Destination&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="cp"&gt;}}&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;原本以为 &lt;code&gt;.Destination&lt;/code&gt; 已经被编码。&lt;/p&gt;
&lt;p&gt;实际上测试发现：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-go-html-template" data-lang="go-html-template"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="cp"&gt;{{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;printf&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;#34;%#v&amp;#34;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="na"&gt;.Destination&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="cp"&gt;}}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;输出：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;#34;封面图片.jpg&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;说明：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;.Destination
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;仍然是原始中文路径。&lt;/p&gt;
&lt;p&gt;随后进一步测试：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-go-html-template" data-lang="go-html-template"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;a&lt;/span&gt; &lt;span class="na"&gt;href&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;TEST-&lt;/span&gt;&lt;span class="cp"&gt;{{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="na"&gt;.Destination&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="cp"&gt;}}&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;生成：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-html" data-lang="html"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;a&lt;/span&gt; &lt;span class="na"&gt;href&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;TEST-%e5%b0%81%e9%9d%a2%e5%9b%be%e7%89%87.jpg&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;说明：&lt;/p&gt;
&lt;p&gt;Hugo 在输出 HTML 属性时自动进行了 URL 编码。&lt;/p&gt;
&lt;p&gt;而这一编码过程生成的是：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;%e5%b0%81%e9%9d%a2%e5%9b%be%e7%89%87
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;即小写形式。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="解决方案"&gt;解决方案
&lt;/h2&gt;&lt;p&gt;既然问题出在编码结果上，那么最简单的方法就是在模板中自行完成编码。&lt;/p&gt;
&lt;p&gt;修改：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;layouts/_default/_markup/render-link.html
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;原内容：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-go-html-template" data-lang="go-html-template"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;a&lt;/span&gt; &lt;span class="na"&gt;class&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;link&amp;#34;&lt;/span&gt; &lt;span class="na"&gt;href&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;&lt;/span&gt;&lt;span class="cp"&gt;{{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="na"&gt;.Destination&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;safeURL&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="cp"&gt;}}&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;&lt;/span&gt; &lt;span class="cp"&gt;{{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;with&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="na"&gt;.Title&lt;/span&gt;&lt;span class="cp"&gt;}}&lt;/span&gt; &lt;span class="na"&gt;title&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;&lt;/span&gt;&lt;span class="cp"&gt;{{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="na"&gt;.&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="cp"&gt;}}&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="cp"&gt;{{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;end&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="cp"&gt;}}{{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;strings&lt;/span&gt;&lt;span class="na"&gt;.HasPrefix&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="na"&gt;.Destination&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;#34;http&amp;#34;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="cp"&gt;}}&lt;/span&gt; &lt;span class="na"&gt;target&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;_blank&amp;#34;&lt;/span&gt; &lt;span class="na"&gt;rel&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;noopener&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="cp"&gt;{{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;end&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="cp"&gt;}}&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;&lt;span class="cp"&gt;{{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="na"&gt;.Text&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;safeHTML&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="cp"&gt;}}&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;a&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;改为：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;span class="lnt"&gt;13
&lt;/span&gt;&lt;span class="lnt"&gt;14
&lt;/span&gt;&lt;span class="lnt"&gt;15
&lt;/span&gt;&lt;span class="lnt"&gt;16
&lt;/span&gt;&lt;span class="lnt"&gt;17
&lt;/span&gt;&lt;span class="lnt"&gt;18
&lt;/span&gt;&lt;span class="lnt"&gt;19
&lt;/span&gt;&lt;span class="lnt"&gt;20
&lt;/span&gt;&lt;span class="lnt"&gt;21
&lt;/span&gt;&lt;span class="lnt"&gt;22
&lt;/span&gt;&lt;span class="lnt"&gt;23
&lt;/span&gt;&lt;span class="lnt"&gt;24
&lt;/span&gt;&lt;span class="lnt"&gt;25
&lt;/span&gt;&lt;span class="lnt"&gt;26
&lt;/span&gt;&lt;span class="lnt"&gt;27
&lt;/span&gt;&lt;span class="lnt"&gt;28
&lt;/span&gt;&lt;span class="lnt"&gt;29
&lt;/span&gt;&lt;span class="lnt"&gt;30
&lt;/span&gt;&lt;span class="lnt"&gt;31
&lt;/span&gt;&lt;span class="lnt"&gt;32
&lt;/span&gt;&lt;span class="lnt"&gt;33
&lt;/span&gt;&lt;span class="lnt"&gt;34
&lt;/span&gt;&lt;span class="lnt"&gt;35
&lt;/span&gt;&lt;span class="lnt"&gt;36
&lt;/span&gt;&lt;span class="lnt"&gt;37
&lt;/span&gt;&lt;span class="lnt"&gt;38
&lt;/span&gt;&lt;span class="lnt"&gt;39
&lt;/span&gt;&lt;span class="lnt"&gt;40
&lt;/span&gt;&lt;span class="lnt"&gt;41
&lt;/span&gt;&lt;span class="lnt"&gt;42
&lt;/span&gt;&lt;span class="lnt"&gt;43
&lt;/span&gt;&lt;span class="lnt"&gt;44
&lt;/span&gt;&lt;span class="lnt"&gt;45
&lt;/span&gt;&lt;span class="lnt"&gt;46
&lt;/span&gt;&lt;span class="lnt"&gt;47
&lt;/span&gt;&lt;span class="lnt"&gt;48
&lt;/span&gt;&lt;span class="lnt"&gt;49
&lt;/span&gt;&lt;span class="lnt"&gt;50
&lt;/span&gt;&lt;span class="lnt"&gt;51
&lt;/span&gt;&lt;span class="lnt"&gt;52
&lt;/span&gt;&lt;span class="lnt"&gt;53
&lt;/span&gt;&lt;span class="lnt"&gt;54
&lt;/span&gt;&lt;span class="lnt"&gt;55
&lt;/span&gt;&lt;span class="lnt"&gt;56
&lt;/span&gt;&lt;span class="lnt"&gt;57
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-go-html-template" data-lang="go-html-template"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="cp"&gt;{{-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;$url&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;:=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="na"&gt;.Destination&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="cp"&gt;-}}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="cp"&gt;{{-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;$isRemote&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;:=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;or&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;strings&lt;/span&gt;&lt;span class="na"&gt;.HasPrefix&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;$url&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;#34;http://&amp;#34;&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;strings&lt;/span&gt;&lt;span class="na"&gt;.HasPrefix&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;$url&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;#34;https://&amp;#34;&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="cp"&gt;-}}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="cp"&gt;{{-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;$isRemote&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="cp"&gt;-}}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="cp"&gt;{{-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;$u&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;:=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;urls&lt;/span&gt;&lt;span class="na"&gt;.Parse&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;$url&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="cp"&gt;-}}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="cp"&gt;{{-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;$scheme&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;:=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;$u&lt;/span&gt;&lt;span class="na"&gt;.Scheme&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;default&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;#34;https&amp;#34;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="cp"&gt;-}}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="cp"&gt;{{-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;$host&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;:=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;$u&lt;/span&gt;&lt;span class="na"&gt;.Host&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="cp"&gt;-}}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="cp"&gt;{{-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;$path&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;:=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;$u&lt;/span&gt;&lt;span class="na"&gt;.Path&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="cp"&gt;-}}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="cp"&gt;{{-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;$path&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="cp"&gt;-}}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="cp"&gt;{{-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;$segments&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;:=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;split&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;$path&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;#34;/&amp;#34;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="cp"&gt;-}}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="cp"&gt;{{-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;$safeSegments&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;:=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;slice&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="cp"&gt;-}}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="cp"&gt;{{-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;range&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;$segments&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="cp"&gt;-}}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="cp"&gt;{{-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="na"&gt;.&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="cp"&gt;-}}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="cp"&gt;{{-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;$safeSegments&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;$safeSegments&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;append&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;urls&lt;/span&gt;&lt;span class="na"&gt;.PathEscape&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="na"&gt;.&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="cp"&gt;-}}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="cp"&gt;{{-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;end&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="cp"&gt;-}}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="cp"&gt;{{-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;end&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="cp"&gt;-}}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="cp"&gt;{{-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;$path&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;printf&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;#34;/%s&amp;#34;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;delimit&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;$safeSegments&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;#34;/&amp;#34;&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="cp"&gt;-}}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="cp"&gt;{{-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;end&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="cp"&gt;-}}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="cp"&gt;{{-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;$query&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;:=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="cp"&gt;-}}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="cp"&gt;{{-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;$u&lt;/span&gt;&lt;span class="na"&gt;.RawQuery&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="cp"&gt;-}}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="cp"&gt;{{-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;$q&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;:=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;$u&lt;/span&gt;&lt;span class="na"&gt;.Query&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="cp"&gt;-}}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="cp"&gt;{{-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;$query&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;printf&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;#34;?%s&amp;#34;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;$q&lt;/span&gt;&lt;span class="na"&gt;.Encode&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="cp"&gt;-}}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="cp"&gt;{{-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;end&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="cp"&gt;-}}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="cp"&gt;{{-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;$fragment&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;:=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="cp"&gt;-}}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="cp"&gt;{{-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;$u&lt;/span&gt;&lt;span class="na"&gt;.Fragment&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="cp"&gt;-}}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="cp"&gt;{{-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;$fragment&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;printf&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;#34;#%s&amp;#34;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;$u&lt;/span&gt;&lt;span class="na"&gt;.Fragment&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="cp"&gt;-}}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="cp"&gt;{{-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;end&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="cp"&gt;-}}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="cp"&gt;{{-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;$url&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;printf&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;#34;%s://%s%s%s%s&amp;#34;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;$scheme&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;$host&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;$path&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;$query&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;$fragment&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="cp"&gt;-}}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="cp"&gt;{{-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;not&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="k"&gt;or&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;strings&lt;/span&gt;&lt;span class="na"&gt;.HasPrefix&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;$url&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;#34;#&amp;#34;&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;strings&lt;/span&gt;&lt;span class="na"&gt;.HasPrefix&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;$url&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;#34;mailto:&amp;#34;&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;strings&lt;/span&gt;&lt;span class="na"&gt;.HasPrefix&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;$url&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;#34;tel:&amp;#34;&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;strings&lt;/span&gt;&lt;span class="na"&gt;.HasPrefix&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;$url&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;#34;javascript:&amp;#34;&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="cp"&gt;-}}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="cp"&gt;{{-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;$url&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;urls&lt;/span&gt;&lt;span class="na"&gt;.PathEscape&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;$url&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="cp"&gt;-}}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="cp"&gt;{{-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;end&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="cp"&gt;-}}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;a&lt;/span&gt; &lt;span class="na"&gt;class&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;link&amp;#34;&lt;/span&gt; &lt;span class="na"&gt;href&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;&lt;/span&gt;&lt;span class="cp"&gt;{{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;$url&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;safeURL&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="cp"&gt;}}&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="cp"&gt;{{-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;with&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="na"&gt;.Title&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="cp"&gt;}}&lt;/span&gt;&lt;span class="na"&gt;title&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;&lt;/span&gt;&lt;span class="cp"&gt;{{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="na"&gt;.&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="cp"&gt;}}&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;&lt;/span&gt;&lt;span class="cp"&gt;{{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;end&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="cp"&gt;}}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="cp"&gt;{{-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;$isRemote&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="cp"&gt;}}&lt;/span&gt;&lt;span class="na"&gt;target&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;_blank&amp;#34;&lt;/span&gt; &lt;span class="na"&gt;rel&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;noopener noreferrer&amp;#34;&lt;/span&gt;&lt;span class="cp"&gt;{{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;end&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="cp"&gt;}}&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="cp"&gt;{{-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="na"&gt;.Text&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;safeHTML&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="cp"&gt;}}&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;a&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;并另存为：站点根目录/layouts/_markup/render-link.html&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="修改后的效果"&gt;修改后的效果
&lt;/h2&gt;&lt;p&gt;原来生成：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-html" data-lang="html"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;a&lt;/span&gt; &lt;span class="na"&gt;href&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;%e5%b0%81%e9%9d%a2%e5%9b%be%e7%89%87.jpg&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;修改后生成：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-html" data-lang="html"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;a&lt;/span&gt; &lt;span class="na"&gt;href&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;%E5%B0%81%E9%9D%A2%E5%9B%BE%E7%89%87.jpg&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;与实际文件路径保持一致。&lt;/p&gt;
&lt;p&gt;部署到 EdgeOne Pages 后：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;404
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;问题消失。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="最终结论"&gt;最终结论
&lt;/h2&gt;&lt;p&gt;这次问题的根源并不是 Hugo，也不是 Markdown。&lt;/p&gt;
&lt;p&gt;真正的问题在于：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;EdgeOne Pages
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;对于中文路径的 Percent-Encoding 大小写敏感。&lt;/p&gt;
&lt;p&gt;而 Hugo 默认生成的小写编码：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;%e6%88%91
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;恰好触发了这一兼容性问题。&lt;/p&gt;
&lt;p&gt;因此在使用 EdgeOne Pages 托管 Hugo 静态站点时，如果站内存在中文文件名链接，建议在链接渲染模板中主动进行 URL 编码处理，统一生成：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;%E6%88%91
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;格式的链接，以避免出现 404。&lt;/p&gt;</description></item><item><title>住建部门在电梯噪声投诉中的职责边界与协同处理机制分析</title><link>https://yaoruisheng.vicp.cc/p/housing-elevator-noise-boundary-coordination/</link><pubDate>Tue, 16 Jun 2026 00:00:00 +0800</pubDate><guid>https://yaoruisheng.vicp.cc/p/housing-elevator-noise-boundary-coordination/</guid><description>&lt;img src="https://yaoruisheng.vicp.cc/p/housing-elevator-noise-boundary-coordination/_.webp" alt="Featured image of post 住建部门在电梯噪声投诉中的职责边界与协同处理机制分析" /&gt;&lt;h1 id="住建部门在电梯噪声投诉中的职责边界与协同处理机制分析"&gt;住建部门在电梯噪声投诉中的职责边界与协同处理机制分析
&lt;/h1&gt;&lt;p&gt;在城市治理实践中，电梯噪声投诉逐渐成为住宅小区类纠纷中的高频问题之一。由于该类问题往往涉及电梯设备运行、建筑结构、室内环境等多个因素，容易形成多部门交叉管理的复杂局面。如何准确界定住建部门在此类事项中的职责边界，是基层行政机关在实际工作中必须面对的问题。&lt;/p&gt;
&lt;p&gt;本文结合电梯噪声投诉的典型处置场景，对住建部门的职责定位及协同处理机制进行梳理与分析。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="一电梯噪声问题的复杂性来源"&gt;一、电梯噪声问题的复杂性来源
&lt;/h2&gt;&lt;p&gt;电梯噪声投诉通常并非单一因素引起，而是多种因素叠加的结果，主要包括：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;电梯设备运行本体噪声&lt;/li&gt;
&lt;li&gt;减震、隔振措施设置情况&lt;/li&gt;
&lt;li&gt;建筑结构传声路径（井道、墙体、楼板）&lt;/li&gt;
&lt;li&gt;房屋布局设计（卧室与设备位置关系）&lt;/li&gt;
&lt;li&gt;安装施工及后期维保质量&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;因此，该类问题往往呈现“设备—建筑—使用环境”三位一体的特征。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="二部门职责分工的基本框架"&gt;二、部门职责分工的基本框架
&lt;/h2&gt;&lt;p&gt;根据地方噪声污染防治职责分工及《中华人民共和国噪声污染防治法》相关规定：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;市场监督管理部门负责电梯等特种设备运行的监督管理及检测认定&lt;/li&gt;
&lt;li&gt;生态环境部门负责噪声污染防治的环境监管及执法协同&lt;/li&gt;
&lt;li&gt;住房和城乡建设部门主要负责建设工程质量管理及相关行业管理工作&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;需要注意的是，在电梯运行噪声类问题中，住建部门通常不直接承担噪声污染的执法责任。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="三住建部门在电梯噪声案件中的角色定位"&gt;三、住建部门在电梯噪声案件中的角色定位
&lt;/h2&gt;&lt;p&gt;在实际工作中，住建部门的角色主要体现在“协同核查与工程维度支撑”，而非噪声执法主体，具体包括：&lt;/p&gt;
&lt;h3 id="一线索转办与信息衔接"&gt;（一）线索转办与信息衔接
&lt;/h3&gt;&lt;p&gt;对市场监督管理部门或生态环境部门移送的相关线索，及时转送建设单位及相关责任主体，形成办理闭环。&lt;/p&gt;
&lt;h3 id="二组织工程相关主体配合核查"&gt;（二）组织工程相关主体配合核查
&lt;/h3&gt;&lt;p&gt;协调设计单位、施工单位、电梯安装单位、监理单位及物业服务企业参与问题分析，提供工程技术支撑。&lt;/p&gt;
&lt;h3 id="三工程资料核查支持"&gt;（三）工程资料核查支持
&lt;/h3&gt;&lt;p&gt;在必要情况下，对设计文件、施工记录及竣工验收资料进行调阅与核查，为问题分析提供依据。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="四住建部门不宜承担的职责边界"&gt;四、住建部门不宜承担的职责边界
&lt;/h2&gt;&lt;p&gt;在此类跨部门事项中，应特别注意职责边界控制，避免越权履职，主要包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;不直接认定噪声是否超标&lt;/li&gt;
&lt;li&gt;不直接作出责令整改决定&lt;/li&gt;
&lt;li&gt;不替代市场监管或生态环境部门实施执法行为&lt;/li&gt;
&lt;li&gt;不自行组织噪声达标验收&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;上述事项均属于法定噪声监管部门职责范围。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="五典型处置路径建议"&gt;五、典型处置路径建议
&lt;/h2&gt;&lt;p&gt;在实践中，较为规范的处理路径通常为：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;市监或生态环境部门开展检测与初步认定&lt;/li&gt;
&lt;li&gt;将线索通报住建部门&lt;/li&gt;
&lt;li&gt;住建部门转交建设单位并组织相关主体配合核查&lt;/li&gt;
&lt;li&gt;各方根据专业结论采取相应处理措施&lt;/li&gt;
&lt;li&gt;相关部门依法进行后续监管或执法处理&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;住建部门在其中主要承担“协同节点”功能。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="六对基层治理的启示"&gt;六、对基层治理的启示
&lt;/h2&gt;&lt;p&gt;电梯噪声投诉的处理过程反映出基层治理中的一个典型问题：多部门交叉事项容易出现职责模糊与责任叠加。&lt;/p&gt;
&lt;p&gt;在此类事项中，应重点把握三个原则：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;权责法定原则：不越权行使其他部门职能&lt;/li&gt;
&lt;li&gt;协同治理原则：强化跨部门信息衔接&lt;/li&gt;
&lt;li&gt;程序留痕原则：确保全过程可追溯&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;通过清晰的职责边界与规范的协同机制，可以有效降低行政风险，提高治理效率。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="结语"&gt;结语
&lt;/h2&gt;&lt;p&gt;电梯噪声问题看似是单一的民生投诉，实则涉及复杂的工程技术与多部门治理结构。住建部门在其中的关键价值，不在于直接“解决噪声”，而在于通过工程管理体系为问题分析提供支撑，并在职责边界内实现有效协同。&lt;/p&gt;
&lt;p&gt;这也是现代城市治理中“分工明确、协同高效”的具体体现。&lt;/p&gt;</description></item><item><title>什么是 SSG（静态网站生成器）</title><link>https://yaoruisheng.vicp.cc/p/what-is-ssg/</link><pubDate>Sat, 13 Jun 2026 00:00:00 +0800</pubDate><guid>https://yaoruisheng.vicp.cc/p/what-is-ssg/</guid><description>&lt;img src="https://yaoruisheng.vicp.cc/p/what-is-ssg/_.webp" alt="Featured image of post 什么是 SSG（静态网站生成器）" /&gt;&lt;h1 id="什么是-ssg静态网站生成器"&gt;什么是 SSG（静态网站生成器）
&lt;/h1&gt;&lt;p&gt;刚接触 Hugo、Hexo 或 Cloudflare Pages 时，经常会看到一个缩写：&lt;strong&gt;SSG&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;SSG 的全称是：&lt;/p&gt;

 &lt;blockquote&gt;
 &lt;p&gt;&lt;strong&gt;Static Site Generator（静态网站生成器）&lt;/strong&gt;&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;p&gt;简单来说，SSG 会把你编写的 Markdown 文章、主题模板和配置文件提前生成 HTML 页面，然后直接部署到服务器或 CDN 上供用户访问。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="ssg-的工作原理"&gt;SSG 的工作原理
&lt;/h2&gt;&lt;p&gt;SSG 的核心流程如下：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;span class="lnt"&gt;7
&lt;/span&gt;&lt;span class="lnt"&gt;8
&lt;/span&gt;&lt;span class="lnt"&gt;9
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Markdown文章
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; +
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;主题模板
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; +
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;配置文件
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ↓
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;生成
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ↓
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;HTML + CSS + JS
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;例如：&lt;/p&gt;
&lt;p&gt;你编写一篇 Markdown 文章：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-markdown" data-lang="markdown"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gh"&gt;# Hello World
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;这是我的第一篇文章。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Hugo 或 Hexo 在构建时会将其转换为：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-html" data-lang="html"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;h1&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;Hello World&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;h1&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;p&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;这是我的第一篇文章。&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;p&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;最终生成的网站目录通常类似：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;span class="lnt"&gt;7
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;public/
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├── index.html
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├── about/index.html
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├── posts/hello-world/index.html
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├── css/
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├── js/
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;└── images/
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;这些文件可以直接上传到：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Cloudflare Pages&lt;/li&gt;
&lt;li&gt;EdgeOne Pages&lt;/li&gt;
&lt;li&gt;GitHub Pages&lt;/li&gt;
&lt;li&gt;Nginx&lt;/li&gt;
&lt;li&gt;Apache&lt;/li&gt;
&lt;li&gt;对象存储 + CDN&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;即可对外提供访问。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="为什么叫静态网站"&gt;为什么叫“静态网站”？
&lt;/h2&gt;&lt;p&gt;这里的“静态”并不是指页面内容永远不变，而是指：&lt;/p&gt;

 &lt;blockquote&gt;
 &lt;p&gt;用户访问时，服务器直接返回已经生成好的 HTML 文件。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;p&gt;不需要实时执行程序。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="动态网站是如何工作的"&gt;动态网站是如何工作的？
&lt;/h2&gt;&lt;p&gt;传统网站通常采用：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;浏览器
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ↓
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Web服务器
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ↓
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;PHP
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ↓
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;MySQL
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ↓
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;生成HTML
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ↓
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;返回浏览器
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;例如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;WordPress&lt;/li&gt;
&lt;li&gt;Discuz&lt;/li&gt;
&lt;li&gt;DedeCMS&lt;/li&gt;
&lt;li&gt;帝国CMS&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;用户每访问一次页面：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;PHP 执行程序&lt;/li&gt;
&lt;li&gt;查询数据库&lt;/li&gt;
&lt;li&gt;组装页面&lt;/li&gt;
&lt;li&gt;返回 HTML&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;因此服务器需要持续运行。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="ssg-网站是如何工作的"&gt;SSG 网站是如何工作的？
&lt;/h2&gt;&lt;p&gt;SSG 网站的流程则完全不同：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;span class="lnt"&gt;7
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;写文章
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ↓
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;构建网站
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ↓
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;生成HTML
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ↓
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;上传服务器
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;用户访问时：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;浏览器
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ↓
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;CDN
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ↓
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;HTML
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;整个过程中：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;不需要 PHP&lt;/li&gt;
&lt;li&gt;不需要 MySQL&lt;/li&gt;
&lt;li&gt;不需要数据库查询&lt;/li&gt;
&lt;li&gt;不需要运行后端程序&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;因此访问速度通常非常快。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="为什么越来越多人使用-ssg"&gt;为什么越来越多人使用 SSG？
&lt;/h2&gt;&lt;h3 id="1-访问速度快"&gt;1. 访问速度快
&lt;/h3&gt;&lt;p&gt;页面已经提前生成。&lt;/p&gt;
&lt;p&gt;用户访问时：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;CDN → HTML
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;无需等待数据库查询和程序执行。&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id="2-部署简单"&gt;2. 部署简单
&lt;/h3&gt;&lt;p&gt;只需要部署静态文件。&lt;/p&gt;
&lt;p&gt;例如：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;hugo
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;生成：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;public/
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;然后上传即可。&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id="3-安全性高"&gt;3. 安全性高
&lt;/h3&gt;&lt;p&gt;没有：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;后台管理系统&lt;/li&gt;
&lt;li&gt;PHP 程序&lt;/li&gt;
&lt;li&gt;数据库&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;攻击面大幅减少。&lt;/p&gt;
&lt;p&gt;例如常见的：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;SQL 注入&lt;/li&gt;
&lt;li&gt;PHP 漏洞&lt;/li&gt;
&lt;li&gt;后台爆破&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;基本不存在。&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id="4-成本低"&gt;4. 成本低
&lt;/h3&gt;&lt;p&gt;很多平台免费即可运行：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;GitHub Pages&lt;/li&gt;
&lt;li&gt;Cloudflare Pages&lt;/li&gt;
&lt;li&gt;EdgeOne Pages&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;个人博客几乎零成本。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="常见的-ssg-工具"&gt;常见的 SSG 工具
&lt;/h2&gt;&lt;h3 id="hugo"&gt;Hugo
&lt;/h3&gt;&lt;p&gt;目前最流行的静态网站生成器之一。&lt;/p&gt;
&lt;p&gt;特点：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Go 语言开发&lt;/li&gt;
&lt;li&gt;编译速度极快&lt;/li&gt;
&lt;li&gt;单文件部署&lt;/li&gt;
&lt;li&gt;适合博客和文档站&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;很多几千篇文章的网站也能在数秒内完成构建。&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id="hexo"&gt;Hexo
&lt;/h3&gt;&lt;p&gt;Node.js 生态中的经典博客框架。&lt;/p&gt;
&lt;p&gt;特点：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;中文用户多&lt;/li&gt;
&lt;li&gt;主题丰富&lt;/li&gt;
&lt;li&gt;插件众多&lt;/li&gt;
&lt;li&gt;上手简单&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;曾经是国内博客圈最流行的方案之一。&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id="jekyll"&gt;Jekyll
&lt;/h3&gt;&lt;p&gt;GitHub Pages 官方支持。&lt;/p&gt;
&lt;p&gt;特点：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Ruby 生态&lt;/li&gt;
&lt;li&gt;历史悠久&lt;/li&gt;
&lt;li&gt;文档丰富&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;很多早期技术博客都基于 Jekyll。&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id="astro"&gt;Astro
&lt;/h3&gt;&lt;p&gt;近年来非常热门。&lt;/p&gt;
&lt;p&gt;特点：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;性能优秀&lt;/li&gt;
&lt;li&gt;现代前端架构&lt;/li&gt;
&lt;li&gt;适合博客、文档和企业官网&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3 id="nextjs"&gt;Next.js
&lt;/h3&gt;&lt;p&gt;严格来说不仅仅是 SSG。&lt;/p&gt;
&lt;p&gt;支持：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;SSG&lt;/li&gt;
&lt;li&gt;SSR&lt;/li&gt;
&lt;li&gt;ISR&lt;/li&gt;
&lt;li&gt;客户端渲染&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;适合大型网站和 Web 应用。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="ssg-与-ssr-的区别"&gt;SSG 与 SSR 的区别
&lt;/h2&gt;&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;项目&lt;/th&gt;
					&lt;th&gt;SSG&lt;/th&gt;
					&lt;th&gt;SSR&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;全称&lt;/td&gt;
					&lt;td&gt;Static Site Generation&lt;/td&gt;
					&lt;td&gt;Server Side Rendering&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;页面生成时间&lt;/td&gt;
					&lt;td&gt;构建时&lt;/td&gt;
					&lt;td&gt;用户访问时&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;是否需要运行程序&lt;/td&gt;
					&lt;td&gt;否&lt;/td&gt;
					&lt;td&gt;是&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;数据库&lt;/td&gt;
					&lt;td&gt;通常不需要&lt;/td&gt;
					&lt;td&gt;通常需要&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;部署难度&lt;/td&gt;
					&lt;td&gt;简单&lt;/td&gt;
					&lt;td&gt;较复杂&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;访问速度&lt;/td&gt;
					&lt;td&gt;极快&lt;/td&gt;
					&lt;td&gt;较快&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;运维成本&lt;/td&gt;
					&lt;td&gt;很低&lt;/td&gt;
					&lt;td&gt;较高&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;适用场景&lt;/td&gt;
					&lt;td&gt;博客、文档站&lt;/td&gt;
					&lt;td&gt;电商、社区、后台系统&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr&gt;
&lt;h2 id="以-hugo-博客为例"&gt;以 Hugo 博客为例
&lt;/h2&gt;&lt;p&gt;假设你写了一篇文章：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-markdown" data-lang="markdown"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gh"&gt;# 我的第一篇文章
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;你好，世界！
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;执行：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;hugo
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;生成：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-html" data-lang="html"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;h1&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;我的第一篇文章&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;h1&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;p&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;你好，世界！&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;p&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;随后通过 GitHub Actions 自动构建：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;span class="lnt"&gt;7
&lt;/span&gt;&lt;span class="lnt"&gt;8
&lt;/span&gt;&lt;span class="lnt"&gt;9
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Markdown
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ↓
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Hugo
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ↓
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;HTML
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ↓
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;GitHub Actions
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ↓
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Cloudflare Pages
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;或者：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;span class="lnt"&gt;7
&lt;/span&gt;&lt;span class="lnt"&gt;8
&lt;/span&gt;&lt;span class="lnt"&gt;9
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Markdown
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ↓
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Hugo
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ↓
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;HTML
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ↓
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;GitHub Actions
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ↓
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;EdgeOne Pages
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;用户访问时：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;浏览器
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ↓
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;CDN
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ↓
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;HTML
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;整个过程中无需数据库和后端程序。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="ssg-的缺点"&gt;SSG 的缺点
&lt;/h2&gt;&lt;p&gt;虽然 SSG 很优秀，但也并非万能。&lt;/p&gt;
&lt;p&gt;例如：&lt;/p&gt;
&lt;h3 id="不适合实时交互系统"&gt;不适合实时交互系统
&lt;/h3&gt;&lt;p&gt;如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;论坛&lt;/li&gt;
&lt;li&gt;在线商城&lt;/li&gt;
&lt;li&gt;社交网站&lt;/li&gt;
&lt;li&gt;即时聊天系统&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这些场景需要动态生成内容。&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id="大量动态数据处理较麻烦"&gt;大量动态数据处理较麻烦
&lt;/h3&gt;&lt;p&gt;例如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;用户中心&lt;/li&gt;
&lt;li&gt;在线订单&lt;/li&gt;
&lt;li&gt;实时库存&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;通常需要额外引入 API 服务。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="总结"&gt;总结
&lt;/h2&gt;&lt;p&gt;SSG（Static Site Generator）是一种预先生成 HTML 页面的网站构建方式。&lt;/p&gt;
&lt;p&gt;其核心思想是：&lt;/p&gt;

 &lt;blockquote&gt;
 &lt;p&gt;提前生成页面，而不是访问时生成页面。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;p&gt;对于以下场景：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;个人博客&lt;/li&gt;
&lt;li&gt;技术文档&lt;/li&gt;
&lt;li&gt;产品官网&lt;/li&gt;
&lt;li&gt;项目主页&lt;/li&gt;
&lt;li&gt;政府公开信息网站&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;SSG 往往是最简单、最快速、最省钱的解决方案。&lt;/p&gt;
&lt;p&gt;如果你正在使用 Hugo，那么你已经在使用目前最优秀的 SSG 之一了。&lt;/p&gt;</description></item><item><title>Hello World</title><link>https://yaoruisheng.vicp.cc/p/hello-world/</link><pubDate>Fri, 12 Jun 2026 00:00:00 +0800</pubDate><guid>https://yaoruisheng.vicp.cc/p/hello-world/</guid><description>&lt;h1 id="hello-world"&gt;Hello World
&lt;/h1&gt;&lt;p&gt;折腾了这么久，博客总算搭起来了。&lt;/p&gt;
&lt;p&gt;这些年陆陆续续写过论坛、贴吧、QQ 空间、微信公众号，也搭过各种网站。
每次开始的时候，总想着认真记录点什么；每次过一阵子，又因为忙碌或者懒惰停更。&lt;/p&gt;
&lt;p&gt;这一次，决定重新开始。&lt;/p&gt;
&lt;p&gt;这里会记录一些工作中的见闻、技术折腾的过程，以及生活中的琐碎想法。&lt;/p&gt;
&lt;p&gt;可能会有：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Hugo 建站和主题折腾&lt;/li&gt;
&lt;li&gt;Cloudflare、DNS 和各种网络服务&lt;/li&gt;
&lt;li&gt;Linux、Windows 以及一些奇怪的问题排查&lt;/li&gt;
&lt;li&gt;编程和自动化脚本&lt;/li&gt;
&lt;li&gt;偶尔写写生活和回忆&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;我出生在福建沿海的一个小渔村，从拨号上网的年代一路走来，见证了互联网这些年的变化。
如今再搭一个属于自己的小站，多少有点回到最初接触网络时的感觉。&lt;/p&gt;
&lt;p&gt;互联网变化很快，很多内容转瞬即逝。&lt;/p&gt;
&lt;p&gt;希望这个小站能留下些值得回头看的东西。&lt;/p&gt;
&lt;p&gt;如果你偶然来到这里，欢迎随便看看。&lt;/p&gt;
&lt;hr&gt;

 &lt;blockquote&gt;
 &lt;p&gt;Hello World.&lt;/p&gt;
&lt;p&gt;Every journey starts with a first post.&lt;/p&gt;

 &lt;/blockquote&gt;</description></item></channel></rss>