Python fileinput 换行编码问题
昨晚抽了个时间想修一下 anvil 的这个 issue。
根据之前的代码实现,我有 99.99% 的把握换行符被替换成 CRLF
是使用了 fileinput
原地修改了文件导致的。
那段修改的代码的一个等价实现如下:
1 | import shutil |
orig.txt
是一个模板文件,它会被拷贝到指定目录变成一个新文件 new.txt
,并修改文件内容。
昨晚抽了个时间想修一下 anvil 的这个 issue。
根据之前的代码实现,我有 99.99% 的把握换行符被替换成 CRLF
是使用了 fileinput
原地修改了文件导致的。
那段修改的代码的一个等价实现如下:
1 | import shutil |
orig.txt
是一个模板文件,它会被拷贝到指定目录变成一个新文件 new.txt
,并修改文件内容。
通过连接池的设计了解如何回收连接到连接池以及从连接池复用连接后,可以回过头来研究一下 Redigo 支持的阻塞等待可用连接的设计与实现。
通过设置 Pool.Wait == true
之后如果当前连接池满了, Pool.Get()
不会返回连接池耗尽错误,而是阻塞在调用上,直到超时或者存在可用连接才会返回。
这个属于经典的 resource counting 问题,并且最大的 resource count 由 Pool.MaxActive
决定。
暴露给外部用户的 Pool
对象
1 | type Pool struct { |
内部维护空闲/待复用的列表数据结构 idleList
Redigo 是目前比较流行的一个 Redis Client。
虽然我个人不太喜欢它的 API 设计,奈何这个库简单易用,连公司的 redis 基础库都是在 Redigo 上做的的一个魔改。
注:原生的 Redigo 并不支持 Redis Cluster,某B站的做法是通过 side-car 的方式启动一个 redis proxy 伴生容器,屏蔽 Redis Cluster 的通信细节。
我在 Passkey Idiom 这篇文章中介绍了如何使用 passkey idiom 以及使用需要的注意项。
其中最强调的就是 Token
类的 ctor 必须同时满足 1) private access level
2) 存在显式定义;否则用户可以使用
时隔多年,C++ 17 终于迎来了专门用于 byte-oriented access 的数据类型 std::byte
。
之所以引入一个新的类型是因为之前不管是 char
还是 unsigned char
,都承载了三种角色
如果出于某些目的希望将某个类的构造函数设置为 private,并提供工厂函数 Make()
创建最终对象;工厂函数中通常会使用 std::make_unique()
或者 std::make_shared()
来创建由对应智能指针托管的对象。