标准库

Patrick在香港3 天前
python·安全·标准库·时序攻击·常量时间
你写的「比较 token」函数,正在用 36 纳秒泄露密码:时序攻击实测校验 API 密钥,很多人写过这个:逻辑毫无问题,功能测试全过。但把 32 字符密钥和「前缀匹配长度不同」的候选各跑 2 万次取中位数,实测曲线是这样的(图一):
Patrick在香港5 天前
utf-8·windows·python·macos·跨平台·编码·标准库
同一份脚本,mac 正常 Windows 乱码:open() 默认编码实测(附 3.15 终局)一个经典场面:同事在 mac 上写的数据处理脚本跑得好好的,交给 Windows 同事一运行——UnicodeDecodeError 当场炸掉,或者更糟,读出来一版不报错的乱码。脚本一行没改,变的只有操作系统。90% 的人会把锅甩给「Windows 编码怪」,然后加一句 encoding="utf-8" 了事。这篇把这个事故完整解剖:四个容易混淆的编码函数、双向实测的崩溃矩阵、以及一个正在倒计时的大变化——Python 3.15 起,UTF-8 已成为默认编码(PEP 686,RC 于 2026-08 发
Patrick在香港7 天前
数据库·python·标准库·datetime·时区·弃用
时间戳凭空早了 8 小时:datetime.utcnow() 弃用实测与漂移复盘下午排查一个定时任务:数据库里的记录时间比现实早了整整 8 小时,但代码里的时间函数看着完全正常。追到底层,源头是那一行写了十年的 datetime.utcnow()——Python 3.12 起它已被官方弃用,根因不是性能,而是它返回的对象没有时区标签:数值是 UTC 的,身份却是「无主」的。这篇把这场漂移完整复现了一遍,全部本地实测(Python 3.13.12,本机 UTC+8),四条事故路径加三条替代写法,一次讲清。
无名猿12 天前
c++·性能优化·内存管理·标准库·现代c++
unique_ptr 完全指南:独占所有权与零开销裸指针最大的麻烦其实不是「会忘写 delete」,而是所有权含糊不清:这段内存归谁,谁来释放,读代码的人只能猜。std::unique_ptr 把答案钉死在类型里,同一时刻只有一个 unique_ptr 拥有这块内存,要转移就必须显式写 std::move。代价几乎为零,既不比裸指针多占内存,也不比它多花时间。下面把常用接口和几个容易踩的点一起讲清。
无名猿12 天前
c++·内存管理·标准库·语法基础
指针算术与数组退化:数组名到底是不是指针「数组名就是指针」是 C/C++ 初学者最早听到的半句真理。说它是半句,是因为前半句在多数场合成立,后半句就会咬人:数组名在大多数表达式里会退化(decay)成指向首元素的指针,但数组类型本身和指针类型不是一回事。sizeof(arr) 拿到的是整块数组的字节数,&arr 的类型是「指向含 N 个 int 的数组的指针」。下面用编译器和 static_assert 把这件事钉死,顺便解释为什么函数参数里 int arr[10] 其实等价于 int*。
无名猿13 天前
数据结构·c++·性能优化·stl·标准库
map / set 完全指南:红黑树与有序容器std::map 是 C++ 里最常被用、也最容易被用错的容器。它的核心事实只有一句话:它是一棵自平衡的红黑树(red-black tree),所以 key 永远有序、查找永远是 O(log n)。有序带来范围查询、中序遍历即排序、find 优于 std::find 这些能力;但也带来一个著名陷阱——operator[] 在找不到 key 时会默默插入一个默认值。这篇按「结构 → 只读查表 → 查找写法 → 插入写法 → 范围查询 → 完整示例」的顺序把 map / set 全家讲清楚。
无名猿13 天前
c++·性能优化·stl·标准库
C++ 查找算法:std::find 与容器成员 find 的性能差距在 map 里找一个 key,有人写成 std::find_if(m.begin(), m.end(), ...),十万个元素就要跑十万次比较;换成 m.find(key),同样十万个元素只要几十次 —— 两者名字里都有 find,复杂度却差了一个数量级。这篇文章从这条落差讲起,把查找族算法的语义、返回值约定和短路口诀一次讲清,重点解释这个落差的根源:STL 算法只拿得到迭代器,看不见容器的内部结构。
无名猿13 天前
c++·stl·标准库·现代c++
std::variant 完全指南:类型安全的 union 与 std::visit 用法裸 union 是 C 语言留下来的老物件:它能把不同类型的值叠在同一块内存上,但没人记得住当前存的是哪个类型,读错成员就是未定义行为(undefined behavior, UB),编译器一声不吭。C++17 的 std::variant<A, B, C> 把「联合体」和「类型标签」绑成了一个类型,从此读错类型会得到明确的异常或 nullptr,而不是一份随机数据。
无名猿13 天前
c++·stl·标准库·踩坑记录
C++ 迭代器五分类与失效场景汇总:一张表避开所有 UBstd::sort(lst.begin(), lst.end()) 编译不过,for (int x : v) { if (...) v.erase(...); } 跑起来会崩 —— 这两个问题的根子是同一件事:迭代器不是一种东西,而是分等级的,而且会在容器改动时失效。这篇文章把「迭代器五分类」和「失效规则」两块拼成一张可查的表,以后遇到迭代器相关的报错直接对表。
无名猿13 天前
c++·性能优化·stl·内存管理·标准库
list 与 forward_list:链表真的比 vector 快吗「中间插入删除用链表,随机访问用数组」这条规则背了很多年,但它只说对了一半。真把十万个 int 分别塞进 std::list 和 std::vector,链表的内存占用是后者的 6 倍,顺序遍历还要慢一个数量级。原因不在复杂度(两者遍历都是 O(n)),而在每个节点的额外指针和缓存局部性(cache locality)。这篇用实测把链表的开销算清楚,也把链表真正不可替代的两个场景——迭代器失效规则与 splice 零拷贝——讲透,最后给一条能直接用的选型结论。
无名猿14 天前
c++·性能优化·内存管理·标准库·现代c++
shared_ptr 完全指南:引用计数、控制块与开销std::unique_ptr 把「独占所有权」钉死在类型上,但现实里经常需要多个对象同时引用同一份资源:缓存、父子节点、观察者列表……这时 std::shared_ptr(共享所有权指针,shared pointer)登场。它用引用计数(reference count)记录「现在有几个人在用」,最后一个离开时才释放。这篇把控制块里到底存了什么、它比裸指针贵在哪、以及什么时候不该用它一次讲清。
无名猿17 天前
c++·标准库·现代c++·语法基础
std::optional 完全指南:别再用 -1 和 nullptr 表达「没有值」用 -1 表示「没找到」、用 nullptr 表示「没配置」,这类约定在 C++ 里活了几十年,代价是每个调用方都得记住「-1 是特殊值」并且每次都记得判断。C++17 的 std::optional<T> 把这件事变成类型系统的一部分:函数的返回值类型直接写着「可能没有值」,编译器会逼着调用方处理空的情况。它不涉及堆分配、不引入间接跳转,值就躺在对象内部。
无名猿17 天前
c++·标准库·语法基础·踩坑记录
size_t 与 int 混用陷阱:有符号无符号比较与整数提升size_t 和 int 混在一起比较大小,是 C++ 里最容易被忽略、又最容易出线上 bug 的坑。先看一个反直觉的事实:-1 > 0u 在 C++ 里的结果是 true。它不是语言 bug,而是「有符号数与无符号数比较时,有符号数会被转成无符号数」这条规则的直接后果。本文用真实编译输出把这条规则讲透,并整理成可查的规则表,最后给出几种规避写法及其取舍。
承渊政道3 个月前
python·学习·pycharm·标准库·第三方库·使用库·综合案例
【Python学习】(了解使用库、标准库、第三方库以及综合案例实操)在学习Python的过程中,我们经常会看到"库"“模块”"标准库"和"第三方库"等概念.对于刚接触 Python 的学习者来说,这些名称看起来有些相似,但它们的作用、来源和使用方式并不完全相同.Python之所以能够广泛应用于数据分析、自动化办公、网络开发、人工智能等领域,不仅因为它的语法简洁,还因为它拥有丰富而成熟的库生态.通过调用现成的库,我们不需要从头编写所有功能,只需掌握正确的导入和使用方法,就能快速完成文件处理、数据计算、网络请求、图表绘制等任务.本文将从Python库的基本概念入手,介绍模块与
qq_317620319 个月前
正则表达式·标准库·collections模块·数据序列化·时间处理
第09章-标准库与常用模块
BreezeJuvenile1 年前
stm32·单片机·串口通信·标准库·嵌入式系统实验
嵌入式系统-实验三——串口通信实验目录一、实验目的二、实验要求2.1 实验原理2.2 实验软件三、实验过程3.1 代码开发3.2 原理图设计
凌祈丶微光1 年前
数据结构·c++·标准库
【C++】【数据结构】【API列表】标准库数据结构头文件:#include <unordered_set>特性:成员函数:构造函数插入元素查找元素范围查找
Pandaconda2 年前
开发语言·经验分享·笔记·后端·python·面试·标准库
【新人系列】Python 入门(二十九):常用标准库 - 下✍ 个人博客:https://blog.csdn.net/Newin2020?type=blog 📝 专栏地址:https://blog.csdn.net/newin2020/category_12801353.html 📣 专栏定位:为 0 基础刚入门 Python 的小伙伴提供详细的讲解,也欢迎大佬们一起交流~ 📚 专栏简介:在这个专栏,我将带着大家从 0 开始入门 Python 的学习。在这个 Python 的新人系列专栏下,将会总结 Python 入门基础的一些知识点,方便大家快速入门学习~
Pandaconda2 年前
开发语言·经验分享·笔记·后端·python·面试·标准库
【新人系列】Python 入门(二十八):常用标准库 - 上✍ 个人博客:https://blog.csdn.net/Newin2020?type=blog 📝 专栏地址:https://blog.csdn.net/newin2020/category_12801353.html 📣 专栏定位:为 0 基础刚入门 Python 的小伙伴提供详细的讲解,也欢迎大佬们一起交流~ 📚 专栏简介:在这个专栏,我将带着大家从 0 开始入门 Python 的学习。在这个 Python 的新人系列专栏下,将会总结 Python 入门基础的一些知识点,方便大家快速入门学习~
菠菠萝宝2 年前
开发语言·学习·golang·网络编程·软件工程·标准库·go1.19
【Go学习】-02-2-标准库:log、errors、bytes、iogolang内置了log包,实现简单的日志服务。通过调用log包的函数,可以实现简单的日志打印功能。log包定义了Logger类型,该类型提供了一些格式化输出的方法。