Python 中的 with 语法经常被用来在管理资源的访问和清理中,常见的场景有文件的使用和关闭,锁的获取和释放等等。
with open("file.txt") as file:
data = file.read()
with 语法特别容易联想起 Java 中的 try-with-resources AutoCloseable,同样实现资源的自动释放。
基本格式
从基本使用开始了解 with,with 的结构如下:
with context_expression [as target(s)]:
content
With 工作原
Read more ...
最近在整理以前的草稿箱,翻到了这篇建于 2019 年的关于“唯一 ID 生成器”的笔记。当时似乎正在为一个分布式系统设计主键生成策略。既然翻出来了,就趁着这个机会,结合这几年在分布式领域的经验,把这个话题完善一下。
在单体架构中,我们习惯使用数据库的自增 ID(Auto Increment)作为主键,简单且性能不错。但在分布式系统或微服务架构下,分库分表之后,自增 ID 就捉襟见肘了。我们需要一个能够在分布式环境下生成全局唯一、趋势有序、且高性能的 ID 生成方案。
常见方案对比
在确定最终方案之前,通常会考察以下几种常见的替代方案:
1. UU
Read more ...
CPU 调频模块主要分为三块:
CPUFreq 核心模块,核心模块主要是公共的 API 和逻辑
CPUFreq 驱动,处理和平台相关的逻辑,设置 CPU 频率和电压
CPUFreq governor,频率控制器,CPU 调频的策略,CPU 在什么负载,什么场景下使用多少频率
最后第三部分 governor 也是本文重点。传统的 CPU governor 选择,以 Performance 和 Powersave 举例,就是一个让 CPU 跑在最高频率,一个让 CPU 跑在最低频率,所有动作都在初始化时设置。
调频器策略
OnDeman
Read more ...
GitNexus:把你的代码库变成 AI 能读懂的知识图谱
用 AI 写代码这件事,大家都已经习惯了。但一个尴尬的现实是:AI 在修改代码的时候,经常不知道自己改的那个函数被多少地方调用、改完之后会不会连锁反应把别的功能搞崩。这不是 AI 模型不够聪明,而是它看不到代码库的全貌——依赖关系、调用链路、执行流程,这些结构性的信息在普通的文件搜索里是丢失的。