Python 中 chainmap 合并多个字典
ChainMap 将多个字典逻辑上合并为一个查找时按顺序搜索。修改只在第一个字典生效。适合模拟作用域链和配置覆盖。
MySQL 中 ANALYZE TABLE 更新统计信息
ANALYZE TABLE 更新表的统计信息让优化器生成更准确的执行计划。大量数据变更后手动 ANALYZE 可以改善查询性能。InnoDB 自动 analyze 的频率较低。
Git 中的 notes 给提交添加注释
git notes add -m "reviewed by Alice" 给提交添加附加注释不影响提交本身。notes 存储在 refs/notes/ 中。适合补充代码审查记录。
PostgreSQL 中的 COPY 命令快速导入导出
COPY table FROM file WITH CSV HEADER 从 CSV 文件快速导入比 INSERT 快几十倍。COPY table TO file 导出。适合大数据量的导入导出。
Go 中 encoding/csv 读写 CSV 文件
csv.NewReader 读取 CSV文件支持自定义分隔符和注释行。csv.NewWriter 写入 CSV。本文展示带标题行的 CSV 读写方法。
React 中错误边界无法捕获异步错误
Error Boundary 只捕获渲染生命周期中的错误不捕获 setTimeout、Promise.then 和事件处理中的错误。需要加 try/catch 手动处理。
CSS 中的 min-height 和 max-height 约束
min-height 设最小高度内容不足时保持该高度。max-height 设最大高度内容超出时溢出或滚动。两者配合使用实现自适应的卡片布局。
Vue 3 中事件修饰符 prevent stop capture
@click.prevent 阻止默认行为@click.stop 停止冒泡@click.capture 在捕获阶段触发。多个修饰符可以连用。本文展示各个修饰符的效果。
Docker 中 LABEL 指令添加元数据
LABEL maintainer=email 和 LABEL version=1.0 给镜像添加元数据。docker inspect 可以查看镜像的标签。适合管理镜像的来源和用途。
MySQL 中死锁的定位和排查
SHOW ENGINE INNODB STATUS 输出的 LATEST DETECTED DEADLOCK 部分包含死锁信息和涉及的事务 SQL。分析两个事务的锁请求顺序可以避免死锁。
React 中 dangerouslySetInnerHTML 的替代方案
优先用 React 的 JSX 渲染而非 dangerouslySetInnerHTML。必须渲染 HTML 时用 DOMPurify 清洗再渲染。第三方库 react-render-html 也可以。
PostgreSQL 中的 pg_dump 和 pg_restore 备份恢复
pg_dump db > backup.sql 导出 SQL 格式备份。pg_restore -d db backup.dump 恢复。--format=custom 自定义格式支持并行恢复。
Vue 3 中 watch 监听多个数据源
watch([count, name], ([newCount, newName], [oldCount, oldName]) 同时监听多个数据源。任一变化都触发回调闭包。
Docker 中使用 --init 管理僵尸进程
docker run --init 使用 tini 作为入口管理信号转发和回收僵尸进程。防止容器中 PID 1 不处理 SIGTERM 导致容器无法优雅关闭。
Go 中 math/rand 生成随机数
math/rand 生成伪随机数需要先设置种子。rand.Intn(n) 生成 0 到 n-1 的随机整数。rand.Shuffle 随机打乱切片。本文展示随机数生成的各种用法。
Python 中 typing 模块的类型注解
typing.List[int] 标注列表元素类型Optional[str] 表示可以是字符串或 None。TypeVar 泛型。类型注解提高代码可读性不强制运行期检查。
MySQL 中 AUTO_INCREMENT 的步长和起始值
auto_increment_increment 设置步长auto_increment_offset 设置起始值。主主复制中设置不同步长避免自增 ID 冲突。
Git 中的 clean 清除未跟踪文件
git clean -n 预览会删除的文件git clean -f 删除未跟踪文件git clean -fd 包括目录。删除前一定要先预览不然后悔莫及。
React 中 useEffect 依赖函数导致无限循环
useEffect 依赖函数函数每次渲染新建引用导致无循环。用 useCallback 稳定函数引用或者直接在 useEffect 内部定义函数。
PostgreSQL 中的 SERIAL 和 IDENTITY 自增
SERIAL 是 PostgreSQL 传统的自增方式。IDENTITY 是 SQL 标准自增语法支持 GENERATED ALWAYS 和 BY DEFAULT。新项目推荐用 IDENTITY。
CSS 中的 resize 可缩放元素
resize:both 让元素可拖动调整大小横竖都行。resize:horizontal 只能调宽度resize:vertical 只能调高度。默认只对 textarea 有效。
Vue 3 中 onMounted 和 onUnmounted 的使用
onMounted 在组件挂载到 DOM 后执行onUnmounted 在组件卸载前执行。在 setup 中调用可以在多个生命周期函数中组织相关逻辑。
Go 中 url.Values 构建查询参数
url.Values 是 map[string][]string 类型用 Add 方法添加参数Encode 方法编码成查询字符串。适合构建 GET 请求的 URL 参数。
Docker 中运行多个进程
Docker 容器内运行多进程建议用 supervisord 管理进程。最佳实践是一个容器只运行一个进程需要多进程时通过 Docker Compose 拆分容器。
Python 中 classmethod 和 staticmethod 的区别
@classmethod 接收 cls 参数可以访问类属性和其他类方法。@staticmethod 不接收 cls 或 self 只是一个放在类命名空间中的普通函数。
Git 中 stash apply 和 stash pop 的差异
stash pop 应用并删除存储stash apply 只应用不删除。多次 stash 后用 stash apply 可以选择性地应用而不影响其他存储。
React 中 useEffect 和 useLayoutEffect 选择
useLayoutEffect 在 DOM 变更后同步执行适合读取布局和避免闪烁。useEffect 异步执行不阻塞渲染大部分场景用 useEffect。测量 DOM 尺寸用 useLayoutEffect。
PostgreSQL 中的 EXPLAIN 输出解读
Seq Scan 全表扫描Index Scan 索引扫描。rows 预计行数actual time 实际耗时。代价从小到大选择最优执行计划。本文解读 EXPLAIN 输出各字段含义。
Vue 3 中 v-if 和 v-show 的渲染差异
v-if 条件为假时元素从 DOM 中完全移除条件切换时重建组件状态会丢失。v-show 只是切换 display:none 元素始终在 DOM 中。切换频繁用 v-show。
Docker 中网络别名 network alias
docker network connect --alias alias_name network container_name 给容器加网络别名。同一网络内可以通过别名访问容器实现简单的服务发现。
Python 中 functools.partial 偏函数
partial(func, arg1) 固定函数的部分参数返回一个新函数。适合回调函数或需要预先绑定参数的场景。本文用转换温度单位的例子展示。
Go 中 iota 枚举常量的用法
iota 在 const 块中逐行递增。const (A = iota B C) 从 0 开始。配合移位操作可以生成位掩码。本文展示 iota 在枚举定义中的多种模式。
MySQL 中 INSERT IGNORE 和 INSERT ON DUPLICATE
INSERT IGNORE 冲突时忽略不插入不报错。INSERT ON DUPLICATE KEY UPDATE 冲突时更新。INSERT IGNORE 不会产生错误日志适合批量导入。
React useRef 保存上一次的值
useRef 保存上一次渲染时的值不触发重新渲染。自定义 usePrevious Hook 返回上一次的 props 或 state。本文实现 usePrevious 的完整代码。
CSS 中 background-clip 文字渐变
background-clip:text 配合 -webkit-text-fill-color:transparent 让背景渐变显示在文字上。实现炫酷的文字渐变效果不需要图片。
Vue 3 中 markRaw 阻止对象转为响应式
markRaw 标记一个对象永远不会被转换为响应式。适合不需要响应式的大对象或第三方实例避免响应式系统的开销。
Python 中 frozenset 不可变集合
frozenset 是不可变集合可以作为字典的 key 或放在集合中。set 不能哈希frozenset 可以。适合表示需要去重的常量集合。
MySQL 中的虚拟列 Generated Column
MySQL 的虚拟列从其他列自动计算得出。VIRTUAL 不存储STORED 存储到磁盘。生成列上可以建索引为 JSON 字段创建函数索引。
React 中 componentDidCatch 捕获错误日志
componentDidCatch(error, info) 在 Error Boundary 中捕获渲染错误并记录错误信息和组件栈。配合日志上报系统可以在线上环境追踪前端错误。
PostgreSQL 中 LATERAL JOIN 横向关联
LATERAL 允许子查询引用前面表的字段。FROM table1, LATERAL (SELECT * FROM table2 WHERE id = table1.id) 实现行关联的子查询。
CSS 中的 all 属性重置所有样式
all:initial 重置元素的所有样式为浏览器默认值all:unset 重置为继承或默认值。适合解决第三方组件样式的污染问题。
Vue 3 中 provide/inject 结合响应式数据
provide 传入响应式 ref/reactive 数据子组件 inject 后可以直接使用和修改。实现跨层级的状态共享比 props 逐层传递更简洁。
Docker 中 EXPOSE 指令的作用
EXPOSE 只声明容器在运行时监听哪些端口不实际发布端口。docker run -p 实际发布端口。EXPOSE 更多是文档作用让镜像使用者知道容器需要哪些端口。
Go 中 strconv 包的类型转换
strconv.Atoi 字符串转整数strconv.Itoa 整数转字符串。ParseFloat/FormatBool 等处理其他类型。转换失败返回 error。本文列出常用转换函数。
Python 中 zip 同时遍历多个列表
zip(list1, list2) 同时遍历多个列表自动以短的为准。zip(*) 解包将配对数据还原成原列表。本文展示 zip 在并行处理中的应用。
MySQL 中行锁和表锁的区别
InnoDB 的行锁只锁定需要修改的行高并发下性能好。MyISAM 的表锁锁定整个表写入会阻塞其他读写。InnoDB 的行锁基于索引如果 WHERE 没走索引会升级为表锁。
React 中 flushSync 强制同步更新
flushSync 强制 React 同步更新 DOM 不等待批量更新。在需要立即读取更新后 DOM 值的场景使用。过度使用破坏 React 的异步性能优化。
PostgreSQL 中 PREPARE 和 EXECUTE 预编译语句
PREPARE plan_name AS sql 预编译 SQL 语句EXECUTE plan_name(values) 执行。减少 SQL 解析和优化耗时适合高频执行的相同查询。
CSS 中的 will-change 提前告诉浏览器变化
will-change:transform 告诉浏览器元素将要变换提前做好 GPU 合成准备。过度使用 will-change 反而会占用更多内存。只用在已知有动画的元素上。
Vue 3 中 toRef 和 toRefs 的使用
toRef 将 reactive 对象的单个属性转为 ref 保持响应式。toRefs 将整个 reactive 对象的所有属性转为 ref 方便解构。本文展示两者的区别。
Docker 中 USER 指令的安全配置
Dockerfile 中用 USER 切换到非 root 用户运行。先 RUN addgroup && RUN adduser 创建用户然后 USER appuser。减少容器被攻破时的危害。
Python 中的装饰器传参三层嵌套
带参数的装饰器需要三层嵌套。外层接收参数中间层接收函数内层包装调用。functools.wraps 保持原函数的元信息。本文展示带参数装饰器的写法。
Go 中 strings 包常用函数
strings.Contains/HasPrefix/TrimSpace/Split/Join/Replace 是字符串处理的核心函数。本文展示这些函数在文本处理中的常见组合用法。
MySQL 中的外键约束使用场景
外键约束保证引用完整性删除时 CASCADE 或 SET NULL。但在高并发场景下外键会增加锁开销。很多互联网公司选择在应用层保证引用关系。
React 中 forwardRef 传递 ref 给子组件
函数组件默认不能接受 ref 参数。forwardRef 包裹后可以接收 ref 并将其传给子元素。适合管理焦点和测量尺寸的场景。本文展示 forwardRef 的标准写法。
Go 中的接口型函数 Function Interface Pattern
Go 通过将函数作为接口的实现定义函数类型并实现该接口的方法。net/http.HandlerFunc 是典型例子。本文展示这种灵活的设计模式。
CSS 中的 3D 变换 transform
perspective 设置透视距离rotateX/rotateY 绕轴旋转translateZ 沿 Z 轴移动。父元素加 transform-style:preserve-3d 保留子元素的 3D 效果。
Docker 容器的健康检查 HEALTHCHECK 指令
HEALTHCHECK --interval=30s --timeout=10s CMD curl -f http://localhost || exit 1 让 Docker 定期检查容器健康状态。不健康时触发 restart 策略。
Python 中 global 和 nonlocal 的区别
global 声明变量来自模块级作用域nonlocal 声明变量来自外层函数(非全局)。在嵌套函数中修改外层变量用 nonlocal。
MySQL WHERE 条件的执行顺序不影响结果
WHERE 条件的执行顺序不保证从左到右优化器会基于统计信息选择最优顺序。不需要把索引条件放在前面。MySQL 的 WHERE 顺序不影响性能。