摘要: 本文是《Clean C#》一书译文的序言,阅读译文请移步至:《Clean C#》译文。 《Clean C#》的副标题是Readable,Maintainable,Pleasurable,本书旨在提供一些编写具有良好可读性与可维护性代码的建议。虽然书名中带有C#字眼,但书中提供的经验绝不仅限于C#,也 阅读全文
posted @ 2018-10-27 17:35 雪飞鸿 阅读(660) 评论(0) 推荐(1)
摘要: 如果你在用 MuMu 模拟器 做自动化测试、批量运维或脚本编排,大概率会碰到同一个问题:命令行好用,但不好集成。每次操作都要手动执行 MuMuManager.exe,难以被其他系统调用,也不方便做并发控制和统一错误处理。 MuMu模拟器 API(mumu-api)正是为此而生——它是一个基于 Fas 阅读全文
posted @ 2026-08-17 12:46 雪飞鸿 阅读(22) 评论(0) 推荐(0)
摘要: 问题如下: 用FastAPI做项目时,为方便本地调试,将日志输出到控制台,但发现日志输出有时会卡住。 排查过程: 原本以为是因为日志同步输出到控制台导致的,改为异步方式后,时不时卡住的问题并没有解决。后面发现Windows下,控制台默认开启了快速编辑模式,在该模式下,鼠标点击了控制台后就进入了编辑模 阅读全文
posted @ 2026-08-04 19:54 雪飞鸿 阅读(11) 评论(0) 推荐(0)
摘要: 通过.NET中的 ArrayPool 我们可以实现对T[]类型的池化,避免频繁的分配内存和GC,以提升性能。鉴于已有不少博客介绍ArrayPool的具体原理,本文不会涉及其实现细节。本文聚焦使用中的痛点,并提供简洁的封装方案以提升ArrarPool使用的便捷性。 ArrayPool本身的使用方式比较 阅读全文
posted @ 2026-04-28 13:07 雪飞鸿 阅读(232) 评论(0) 推荐(4)
摘要: 基于Sonar和.editorconfig的代码lint 在项目根目录下创建Directory.Build.props文件,在里面引入SonarAnalyzer.CSharp包: <Project> <PropertyGroup> <TargetFramework>net8.0</TargetFra 阅读全文
posted @ 2024-07-10 10:50 雪飞鸿 阅读(77) 评论(0) 推荐(0)
摘要: 将框架从.NET6升级到8,顺便将各种依赖包也升级,容器化部署到测试环境后,SQL Server连接不了了: [2024-05-13 13:48:10 ERR] [Microsoft.EntityFrameworkCore.Database.Connection] An error occurred 阅读全文
posted @ 2024-05-14 11:01 雪飞鸿 阅读(813) 评论(0) 推荐(1)
摘要: RabbitMQ提供了三种类型的队列: Classic Quorum Stream 官方文档 对于流队列的描述是:高性能、可持久化、可复制、非破坏性消费、只追加写入的日志 使用场景: 一个队列将同一条消息分发给不同消费者 可重复消费消息 更高的性能 存储大量消息而不影响性能 更高的吞吐 基本使用 生 阅读全文
posted @ 2023-08-30 17:30 雪飞鸿 阅读(798) 评论(0) 推荐(0)
摘要: 日志和配置是应用不可缺少的部分,本文用于介绍dynaconf和loguru的简要用法。 dynaconf dynaconf是一个配置管理包,支持多种配置文件格式,如:toml、yaml、json、ini及环境变量等 pip install dynaconf ​ mkdir config cd con 阅读全文
posted @ 2023-06-26 17:32 雪飞鸿 阅读(847) 评论(0) 推荐(0)
摘要: Python中可以使用winreg模块中的DeleteKey方法来删除注册表中的键,但该方法不能删除包含子键的键。所以,在删除某个键时要先删除它的所有子键,这里借助栈结构通过循环迭代的方式来获取注册表键的所有子键及子键的子键。完整代码如下: # 注册表相关 # import os # # print 阅读全文
posted @ 2023-06-19 15:52 雪飞鸿 阅读(359) 评论(0) 推荐(0)
摘要: 基于list来实现一个栈: class SimpleStack: def __init__(self): self.__stack: list = [] ​ def __iter__(self): return SimpleStackIterator(self) ​ def __len__(self 阅读全文
posted @ 2023-06-19 15:50 雪飞鸿 阅读(66) 评论(0) 推荐(0)
摘要: Python中所有类型的值都是对象,这些对象分为可变对象与不可变对象两种: 不可变类型 float、int、str、tuple、bool、frozenset、bytes tuple自身不可变,但可能包含可变元素,如:([3, 4, 5], 'tuple') 可变类型 list、dict、set、by 阅读全文
posted @ 2023-04-12 07:40 雪飞鸿 阅读(577) 评论(3) 推荐(0)