-
2026-01-28 18:22:02
- Python 异步任务取消与异常处理
- asyncio.cancel()不能强制终止协程,仅设取消标记并在下次await时抛CancelledError;需协程主动配合(如插入await、检查cancelled())才能真正响应取消。
-
643
-
2026-01-28 18:30:02
- 如何用 STRING_AGG / GROUP_CONCAT 实现列转行(聚合字符串)
- 用STRING_AGG或GROUP_CONCAT可拼接多行字符串,但默认行为、分隔符、NULL处理和排序差异大;GROUP_CONCAT无匹配行时返回NULL,字段为NULL时被忽略,需用COALESCE防空;MySQL默认长度限1024字节;STRING_AGG的ORDERBY必须在括号内;PostgreSQL支持DISTINCT,SQLServer不支持;跨库语法不兼容,ORM中优先使用其聚合接口。
-
864
-
2026-01-28 18:31:02
-
2026-01-28 18:31:02
- Python asyncio 中的超时控制方案
- asyncio.wait_for是最直接的超时控制方式,能在协程超时时抛出asyncio.TimeoutError,但不取消底层I/O;asyncio.timeout是Python3.11+推荐的上下文管理器,语义清晰且自动管理状态;HTTP客户端内置timeout更底层高效,应优先配置;自定义逻辑需谨慎管理Task生命周期与资源清理。
-
362
-
2026-01-28 18:31:07
-
2026-01-28 18:33:08
- Python 生成器是如何节省内存的
- 生成器函数返回迭代器对象而非列表,调用时立即返回generator,每次yield挂起并保存状态,仅按需计算单个值,内存占用极小;生成器表达式同理,但不可索引、不可重复遍历。
-
693
-
2026-01-28 18:33:35
- Python 工厂模式在项目中的应用
- 工厂函数返回实例前不强制类型校验,但生产环境通常添加;校验应随类型注册而非硬编码在工厂中;简单工厂适合类型少、扩展少场景,抽象工厂适用于需强约束一族对象的场景;工厂应无状态,优先用@staticmethod实现。
-
263
-
2026-01-28 18:40:03
-
2026-01-28 18:43:02
-
2026-01-28 18:44:02