- 博客(340)
- 收藏
- 关注
原创 所有的临时方案,最后都成了基础设施
TODO: 灰度完就删注释很短,语气很笃定。六年过去,成了公司最稳定的灰度策略。新来的同事管它叫“经典分流算法”,还有人提议把它抽成公共库。写的时候是权宜之计,活下来就是基础设施。临时方案不是罪。工程里到处都是权衡,今天的权宜之计,本来就是为了让业务先跑起来。真正的罪,是让它无声无息地变成永久,然后假装它一直就在那里。所以,下次写下# 先这样# 删除条件:____;owner:____;到期:____给它一个死期,它才配拥有一个体面的葬礼。毕竟在这个行业里,
2026-11-07 16:36:29
142
原创 文件变了,inotify 为什么没反应
但如果你自己写,就必须在收到“新建目录”事件时补上 watch,否则新目录里的变化永远收不到。容器共享宿主内核,同一 UID 的额度会互相挤占,具体计数方式随内核版本和 user namespace 配置略有差异,以实际报错为准。它通知的是 inode 上的事件,队列会丢,递归要自己加,远程文件系统还不管。队列满时,你只知道“有事件丢了”,不知道丢了哪些。inotify 的接口很简单,但它的语义和大多数人的直觉有几处偏差。如果目录被删了,收到。就立刻读文件、解析配置,轻则解析失败,重则读到不完整的状态。
2026-11-06 10:16:07
216
原创 僵尸进程:死了,但还没走
僵尸进程最反直觉的地方在于:它不是一个“还活着的坏进程”,而是一个“已经结束但没被确认的进程”。kill对它无效,不是权限问题,也不是内核 bug,而是因为它已经不在能被信号打扰的世界里了。下次在ps里看到<defunct>,别急着找杀进程的命令。顺着PPID往上看,问题多半在父进程的某一行fork()后面,那里少了一个 wait()。
2026-11-04 10:57:16
127
原创 Python 的哈希契约:为什么 list 不能当字典的键
字典不会帮你检查这件事,它只负责按照你给的哈希去找。元组本身不可变,但它的哈希是由元素组合出来的。它只是按照新的哈希去 2 号桶找,而当初存进去的是 1 号桶。三者相等,哈希也相同,所以它们是同一个键,后写入的覆盖先写入的。这不是 bug,而是哈希契约的正常结果。但另一个更隐蔽的 bug 是:对象明明还在字典里,却怎么也取不出来。字典既无法保证“一个键只出现一次”,也无法通过等价的键找到值。可变,但不参与相等判断,也不参与哈希,所以修改它不会破坏字典。两个内容相同的对象,默认就是两个不同的键。
2026-11-03 09:56:34
149
原创 chmod 777 之后,为什么还是 Permission denied
先还原一个很常见的现场。服务换到新机器,日志目录写不进去。于是权限被加到 7777,加上-R,再加上 sudo,最后开始怀疑内核有 bug。大多数时候,问题不在权限位,而在于我们默认“权限”只有rwx这一层。Linux 在真正打开一个文件之前,要穿过好几道门:路径上的目录、umask、ACL、挂载选项、LSM、文件属性,任何一道没过去,chmod 777都只是把第一道门拆了。下面按排查顺序,把这几道门逐个走一遍。
2026-11-02 09:33:21
317
原创 别用字符串思维写 PowerShell 管道
既然管道是用来传递对象的,那自定义函数也理所当然该顺应这个约定。PowerShell 提供了来实现这一点。只有正确地用上它,函数才不会变成“只接受数组参数”的孤岛。来看一个最贴近日常的例子:计算文件占用的 MB 数。返回的是FileInfo对象,天然就有Length属性。param(begin {process {end {Write-Verbose "共处理 $$total。
2026-11-01 14:08:39
128
原创 Linux 的时间为什么会被拨回去
凌晨两点多,监控里出现一批超时告警:某个服务里所有 30 秒超时的 RPC 在同一秒内集体失败。机器没重启,进程也没重启,只是chronyd把系统时钟往回拨了 12 毫秒。对多数业务来说 12 毫秒不算什么,但对那些用“墙上时间”算超时、算租约、算间隔的代码来说,时间倒流足以让逻辑集体失灵。这篇文章聊的就是这件事:Linux 有哪几种时间,NTP 到底怎么改时间,以及哪些代码写法会在时间跳变时出问题。
2026-11-01 03:15:36
185
转载 Rust 的 Drop 顺序:谁先走,谁后走
先看一段不会打印出done单线程、没有竞争、没有unsafe,程序却永久挂起。原因不是Mutex有问题,而是里的MutexGuard是,它的析构点在match表达式结束处,而不是读完数字的那一刻。于是第一把锁还握着,第二把锁就来了。Drop是 Rust 里最沉默的机制:写对了没人注意,写错了就是死锁、泄漏、或者“为什么文件还没关”。这篇文章把它的顺序规则拆开讲清楚。
2026-10-31 11:57:20
6
转载 ESM 循环依赖:为什么 import 进来的是 undefined
或者更隐蔽一点:不报错,但import进来的值是undefined,函数一调用就崩。循环依赖不是“打包工具的小毛病”,而是 ES Module 的求值顺序和绑定机制共同作用的结果。理解它,比记住“不要循环依赖”更有用。
2026-10-31 03:04:30
8
原创 Go 的 map 被并发写时,为什么连 recover 都救不了
很多人第一反应是加个recover结果进程照样退出,日志里也不会出现recovered。这不是recover写错了,而是这个错误根本不在panic体系里。
2026-10-30 11:08:26
3
原创 Python 缓存实战:lru_cache 的五个坑与正确用法
lru_cache是 Python 标准库里最容易被随手加上的优化之一。给一个慢函数套上装饰器,命中率看起来也不错,于是代码上线。直到某天发现内存只涨不降,或者接口返回了旧数据,才回头检查这个装饰器。它确实好用,但它的行为边界比多数人以为的要窄。下面这五个坑,基本覆盖了日常使用中最容易出问题的地方。
2026-10-27 09:18:33
175
原创 Python 导入机制实战:改了代码为什么不生效
改完一个模块里的常量,重启脚本,输出还是旧值;在 Jupyter 里调整了函数,调用结果纹丝不动;线上服务报,本地却一切正常。这些问题的根源大多不在代码逻辑,而在import背后那套缓存与路径规则。import到底做了什么,以及几类"代码明明改了却不生效"的典型场景。
2026-10-27 09:17:42
308
原创 告别手写遮罩层:用原生 dialog 实现弹窗
弹窗几乎是每个 Web 项目都绕不开的组件。过去我们习惯用 div拼出遮罩层,再写一套 JS 管理z-index、焦点、ESC 关闭和滚动锁定。代码越写越长,边界情况却总也补不完。HTML 原生的 <dialog>元素已经可以承担大部分工作:它会自动进入顶层、隔离背景交互、限制焦点范围,并在关闭后把焦点还给触发元素。本文从一个最小示例出发,逐步补齐表单交互、遮罩点击、样式和可访问性细节。
2026-10-26 12:42:35
177
原创 Linux 磁盘空间突然满了怎么办:从 df 到 inode 的排查
凌晨收到监控告警:根分区使用率 96%。登录服务器后 df -h显示确实快满了,但用 du扫描却找不到对应的大文件。这种“空间对不上”的情况在 Linux 上很常见,原因通常不止一种。下面按从易到难的顺序梳理一遍排查流程。
2026-10-26 12:41:50
231
原创 Lua 元表实战:只读表、默认值与运算符重载
Lua 的表默认只有一种行为:读不存在的键返回nil,写键直接生效,两个表不能相加。元表(metatable)是 Lua 留下的扩展点,它允许我们挂上一组元方法,改变表在索引、赋值、比较、运算、调用和打印时的表现。很多人把元表当成“高级语法”,其实它更像一张钩子表:只有当默认操作需要额外信息时,Lua 才会去元表里找对应的钩子。本文示例基于 Lua 5.4,可直接保存为.lua文件后用运行。
2026-10-26 10:53:29
185
原创 异步 IO 入门:从阻塞到 asyncio
写 Python 时,我们常遇到这样的场景:程序大部分时间都在等待网络响应、磁盘读写或数据库查询。如果每个等待都阻塞主线程,CPU 只能干瞪眼。。
2026-10-26 10:35:16
211
原创 Linux 系统备份与镜像
Clonezilla 是一个专业的系统克隆和备份工具,支持整盘克隆、分区克隆和增量备份,适合批量部署和系统迁移。Linux 系统备份与创建镜像是一项基础但重要的运维技能。文件级备份:使用 tar、rsync、cp等工具进行灵活备份;磁盘级镜像:使用 ddpartclone、Clonezilla 创建完整系统镜像;增量备份:通过 rsync和定时任务实现高效增量备份;自动化策略:使用 cron 或 systemd 定时器实现无人值守备份;最佳实践。
2026-10-21 16:05:08
124
原创 Linux 磁盘管理完整指南
本文系统梳理了 Linux 磁盘管理的完整流程:从查看磁盘信息、分区、格式化、挂载,到扩容与故障排查。掌握这些命令后,你就能独立完成日常的磁盘管理任务。建议在虚拟机或测试环境中多加练习,熟能生巧。
2026-10-15 09:50:02
202
原创 Linux 用户与权限管理:从入门到实战
Linux 用户与权限管理是系统运维的必修课。本文从用户与用户组的概念出发,系统介绍了用户、组、文件权限、特殊权限以及 sudo 提权的常用命令,并通过一个多用户协作的实战案例串联了核心知识点。掌握这些内容后,你就能在日常工作中安全、高效地管理 Linux 系统的访问控制。建议在虚拟机或容器环境中多加练习,逐步形成肌肉记忆。
2026-10-14 09:20:12
169
原创 Linux 文件检索:find、locate、grep 与 which 实战指南
find:功能最全面,适合复杂条件查找,但速度较慢locate:基于数据库,速度最快,适合快速定位grep:内容搜索之王,日志分析和代码检索必备which:快速定位可执行文件路径建议在日常工作中根据实际场景灵活选择,并将常用命令组合封装为脚本或别名,形成自己的高效工作流。
2026-10-13 10:26:09
205
原创 Linux 运维基础:从入门到实战的完整指南
本文将系统性地介绍 Linux 运维的基础知识,包括常用命令、用户与权限管理、磁盘与文件系统、网络配置、进程管理、日志管理、系统监控以及常见故障排查,帮助你建立完整的运维知识体系。Linux 运维是服务器管理、系统维护和故障排查的核心技能。无论是管理单台服务器还是维护大规模集群,掌握 Linux 运维基础都是必备能力。systemd、进程、计划任务。分区、挂载、LVM、RAID。CPU/内存/磁盘/网络排查。IP、路由、防火墙、DNS。文件操作、文本处理、查找。用户、组、权限、sudo。
2026-10-13 10:24:14
206
原创 HTML 的 <wbr> 元素
当一段很长的、没有空格的文本(比如很长的 URL、代码路径、下划线连接的名称等)超出容器宽度时,普通情况下浏览器无法换行,可能导致文字溢出或强制撑开布局;的兼容性良好,现代浏览器均已支持,包括 Chrome、Firefox、Safari、Edge 以及移动端浏览器。,比如 URL 的路径分隔符附近、长变量名的分段处。不会成为文本的一部分,粘贴结果仍然连续、干净,不会混入不可见字符。是命令式的「必须在这里断」,<wbr>它的作用是:在浏览器需要自动换行时,在合法的 HTML 中,<wbr>
2026-10-12 16:54:54
337
原创 HTML 的 <video> 元素
在网页中展示视频, 元素是最核心、最标准的 HTML5 方式。它无需依赖 Flash 等第三方插件,即可在浏览器中直接播放视频文件,并支持丰富的控制能力与自定义样式。本文将带你从零认识 元素,掌握其基础语法、常用属性、事件与进阶技巧,帮助你快速构建出体验良好的视频播放功能。 元素的使用非常简单,只需在标签中指定视频文件的地址即可:其中 指定视频文件的 URL, 属性用于显示浏览器自带的播放控件(播放/暂停、进度条、音量等)。如果希望提供多个备选视频源,以适应不同浏览器和编码格式,可以使用 子元素:
2026-10-10 09:52:22
220
原创 HTML 的 <var> 元素
var>是 HTML 中的语义化元素,用于标记变量名。它代表数学表达式或编程上下文中的变量,例如xyresult等。浏览器默认以斜体渲染 <var>元素的内容。<var>元素属于短语内容(Phrasing Content),可以嵌套在段落、列表、表格等任意包含文本的容器中。虽然浏览器默认以斜体渲染 <var>var {<var>语义化地标记变量名提升文档的可读性和可维护性配合 CSS 实现灵活的样式定制增强页面的可访问性掌握 <var>
2026-10-10 09:50:55
285
原创 HTML 的 <ul> 元素
元素<ul>(Unordered List,无序列表)是 HTML 中最基础的列表元素之一,用于创建没有特定顺序的项目列表。浏览器默认会在每个列表项前显示一个圆点(•)作为项目符号。< ul > < li > 苹果 </ li > < li > 香蕉 </ li > < li > 橙子 </ li > </ ul >< ul > < li > 苹果 </ li > < li > 香蕉 </ li > < li > 橙子 </ li > </ ul ></
2026-10-09 17:25:45
164
原创 HTML 的 <u> 元素
u>元素是一个具有特定语义的行内元素,用于表示需要与普通文本区分、但又不属于强调的文本。理解它的语义定位,能帮助你在合适的场景下正确使用它,避免与纯视觉的下划线样式混淆。
2026-10-09 17:22:58
255
原创 HTML 的 <track> 元素
track>元素虽小,却是 HTML5 媒体能力中不可或缺的一环。它让网页视频和音频真正做到了「一次制作,多语言、多场景适配」,既提升了可访问性,也改善了用户体验。<track>元素的作用与五种kind类型。WebVTT 字幕文件的基本语法。如何在 HTML 中声明轨道,以及用 JavaScript 动态操作轨道。下次在项目中嵌入视频时,别忘了为它加上一条字幕轨道——这不仅是锦上添花,更是对每一位观众的尊重。
2026-10-08 15:04:18
281
原创 HTML 的 <tr> 元素
tr>是 HTML 中用于定义表格行的标签,全称是Table Row(表格行)。它必须作为 <table>或 <thead>、<tbody>、<tfoot>的直接子元素使用,用来包裹一行中的单元格。一个 <tr>元素内部通常包含若干个 <td>(标准单元格)或 <th>(表头单元格),它们共同构成表格的一行。<tr>是构建 HTML 表格的核心行标签,配合 <td>、<th>以及 <thead>、<tbody>、<tfoot>分组,可以清晰、语义化地组织表格数据。
2026-10-08 15:00:15
174
原创 HTML 的 <title> 元素
title>是 HTML 文档中一个非常重要的元数据元素,它定义了网页的标题。DOCTYPE html > < html > < head > < title > 我的第一个网页 </ title > </ head > < body > < p > 欢迎访问我的网站!DOCTYPE html > < html > < head > < title > 我的第一个网页 </ title > </ head > < body > < p > 欢迎访问我的网站!
2026-09-30 14:51:36
279
原创 HTML 的 <time> 元素
time>元素是 HTML5 新增的语义化标签,用于表示一个特定的时间段或日期时间。机器可读:通过datetime属性提供标准化的时间格式,供程序解析。人类可读:元素内的文本内容以自然语言展示给用户。例如:< p > 会议定于 < time datetime = " 2026-10-01T09:00 " > 10 月 1 日上午 9 点 </ time > 举行。</ p >
2026-09-30 14:50:10
272
原创 HTML 的 <thead> 元素
thead>是 HTML 表格语义化的重要组成部分,它把表头从数据中分离出来,便于样式控制、脚本操作和无障碍访问。在实际开发中,建议始终显式使用 <thead>、<tbody>和 <tfoot>三个分组元素,让表格结构更规范、更易维护。
2026-09-29 10:10:44
288
原创 HTML 的 <th> 元素
th>(Table Header Cell,表头单元格)是 HTML 表格中用于定义表头单元格的元素。它通常出现在表格的第一行或第一列,用于描述该列或该行数据的含义。与普通单元格 <td>不同,<th>中的文本默认会加粗并居中显示,让读者一眼就能识别出表头信息。
2026-09-29 10:09:54
240
原创 HTML 的 <tfoot> 元素
tfoot>(Table Foot)是 HTML 表格结构中的语义化元素,用于定义表格的底部区域。它通常用来放置汇总信息、合计数据或表格的脚注说明,让表格在视觉和语义上都更加清晰。<thead>:表头,定义列标题<tbody>:表体,存放主要数据<tfoot>:表尾,放置汇总或脚注。
2026-09-28 17:22:35
205
原创 HTML 的 <textarea> 元素
textarea>是 HTML 中用于多行文本输入的表单元素。与单行的 <input type="text">不同,<textarea>允许用户输入多行文字,并支持换行。它常用于留言板、评论框、意见反馈、代码编辑器等场景。< textarea > 这里是默认内容 </ textarea ></< textarea > 这里是默认内容 </ textarea ><textarea>是构建多行文本输入的核心元素,掌握它的属性、取值方式和样式技巧,可以轻松实现评论框、留言板、聊天输入框等常见交互。
2026-09-28 17:21:07
232
原创 HTML 的 <td> 元素
td>是 HTML 中用于定义表格单元格(Table Data)的元素,全称为 “Table Data Cell”。它是构成 HTML 表格的基本单元之一,用于存放表格中的具体数据内容。在 HTML 表格结构中,<td>元素必须嵌套在 <tr>(表格行)元素内部,而 <tr>又必须位于 <table>元素之中。
2026-09-27 16:55:53
218
原创 HTML 的 <tbody> 元素
tbody>(Table Body,表格主体)是 HTML 表格结构中的三大分区元素之一,另外两个是 <thead>(表头)和 <tfoot>(表尾)。
2026-09-27 16:54:06
325
原创 HTML 的 <table> 元素
本文系统介绍了 HTML <table>基本结构:<table>、<tr>、<th>、<td>语义化标签:<thead>、<tbody>、<tfoot>colspan与rowspan常用属性及 CSS 美化方案响应式表格与可访问性优化掌握这些内容后,你就能在项目中灵活运用表格来展示各种结构化数据。建议在实际开发中优先使用 CSS 控制样式,并始终关注表格的语义化和可访问性,让网页对更多用户友好。
2026-09-23 15:57:51
196
Python内置函数的说明与示例
2025-11-22
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅