- 博客(43)
- 收藏
- 关注
原创 Pandas 中 groupby + agg 的两种写法有什么区别?别再被 MultiIndex 坑了
Pandas中groupby+agg操作存在两种常见写法,第一种会将分组字段转为MultiIndex,导致后续处理困难;第二种通过as_index=False保持分组字段为普通列,更适用于工程场景。两种写法核心区别在于索引类型、列名控制和扩展性,第二种写法能直接生成标准统计表,支持复杂统计时依然保持代码清晰。实际项目中,随着统计需求增加,第二种写法的优势会愈发明显,推荐在工程化场景中优先采用。
2025-12-26 10:11:53
113
原创 深入理解 Python `nonlocal` 关键字(从原理到工程实践)
本文深入解析Python中的nonlocal关键字,解决嵌套函数修改外层变量的问题。文章首先通过LEGB规则解释变量作用域查找顺序,指出"读可以改不行"的根源在于Python编译期将赋值操作默认为局部变量。随后通过正确示例展示nonlocal如何显式声明修改外层变量,并与global和局部变量进行对比。结合工程实践中的递归计数场景,分析nonlocal相比返回值累加、可变对象等替代方案的优势,同时指出其使用限制。最后总结nonlocal适合装饰器、递归等场景,但不适用于复杂业务逻辑,强调
2025-12-24 16:16:43
791
原创 深入理解 Python 中的 stat:从系统调用到百万文件性能瓶颈
✅ 1️⃣ 遍历目录用 os.scandir❌ rglob✅ scandir✅ 2️⃣ 不重复调用 stat✅ 3️⃣ 过滤条件一次完成...
2025-12-24 15:01:36
633
原创 os.scandir() 与 rglob() 的比较与替代
Python 提供了 os.scandir() 和 rglob() 两种文件遍历方法。os.scandir() 是高效的非递归目录遍历函数,返回 DirEntry 对象,适合需要精细控制和高性能的场景。rglob() 来自 pathlib.Path,支持递归遍历和通配符匹配,使用更简便但性能略低。开发者可根据需求选择:rglob() 适合简单递归遍历,而 os.scandir() 更适合需要性能优化或特殊遍历逻辑的场景。两种方法都能通过递归实现类似功能,但 os.scandir() 在底层更接近系统调用,通
2025-12-24 13:55:28
378
原创 C++ 内存分配详解
本文介绍了C++中的内存分配机制,重点对比了栈分配和堆分配两种方式。栈内存由编译器自动管理,适合局部变量;堆内存通过new/delete手动控制,适合大块动态内存。详细讲解了new/delete的基本用法、数组分配、多维数组处理及异常处理。特别强调了内存管理最佳实践:配对使用分配/释放操作符、检查分配结果、避免内存泄漏,并推荐使用RAII技术实现自动资源管理。文章提供了丰富的代码示例,涵盖了从基础到高级的内存操作技巧。
2025-12-12 15:58:39
271
原创 C++中的指针变量
本文介绍了C++中指针的核心概念与使用要点。主要内容包括:指针的定义与声明、基本操作、指针类型(空指针、悬空指针)、指针运算、动态内存分配、多级指针、指针与函数的关系、指针与数组的联系、const指针的用法,以及C++11引入的智能指针(unique_ptr、shared_ptr、weak_ptr)。文章通过代码示例演示了指针的各种操作,强调了正确使用指针的重要性,特别是内存管理和避免野指针的问题。
2025-12-12 10:29:48
144
原创 C++ 中的 push_back 与 emplace_back 深度解析:你真的用对了吗?
C++中push_back与emplace_back的本质区别:前者先构造临时对象再拷贝到容器,后者直接在容器内存中构造元素。对于简单类型两者差异不大,但处理复杂对象时emplace_back效率更高,避免了临时对象的构造和拷贝开销。emplace_back是C++11推荐的优化方式,特别适合构造参数较多的对象场景。开发者应根据实际需求选择合适的方法,以提升容器操作性能。
2025-12-10 18:05:20
284
原创 C++动态数组两种实现方式详解:std::vector vs malloc
在C++中,动态数组是处理可变大小数据集合的常见需求。本文将详细介绍两种主要的实现方式:使用C++标准库的和使用C风格的malloc,并对比它们的差异、使用方法以及最佳实践。
2025-12-10 18:01:22
321
原创 Google Test参数化测试:批量传递参数的完整指南
Google Test(gtest)参数化测试功能详解 摘要:gtest参数化测试允许开发者使用多组输入数据测试同一逻辑,避免重复编写测试用例。本文介绍了从基础到高级的多种参数化技术:1)简单值参数化,通过Values传递单个参数;2)多参数测试,使用tuple组合参数;3)容器参数生成,通过ValuesIn从容器获取参数;4)组合参数生成,利用Combine创建笛卡尔积;5)范围参数,使用Range生成连续数值;6)布尔参数,测试true/false场景。这些方法显著提高了测试效率和覆盖率,特别适用于需要
2025-12-01 11:38:01
424
原创 深入理解 GoogleTest 参数化测试:WithParamInterface 和 TestWithParam + 实战全套模板
问题正确写法TEST_P 写成 TEST❌,参数化测试必须 TEST_P忘记注册参数要使用 INSTANTIATE_TEST_SUITE_P旧宏 INSTANTIATE_TEST_CASE_P已弃用,使用 INSTANTIATE_TEST_SUITE_P参数类型要求必须可拷贝/可移动。
2025-12-01 11:14:12
401
原创 GoogleTest 参数化测试:浅析 WithParamInterface 与 TestWithParam 的关系与用法
需求使用只想做参数化测试参数化测试 + 自己已有测试基类类中需要 GetParam()两者均可一句话总结:能用就用它;只有当你已经继承了Test时,再用。
2025-12-01 10:54:26
373
原创 C++读取JSON文件的三种方式详解:jsoncpp、nlohmann/json和RapidJSON
在现代C++开发中,JSON(JavaScript Object Notation)已成为最流行的数据交换格式之一。无论是网络通信、配置文件读取还是数据持久化,JSON都扮演着重要角色。然而,C++标准库并没有提供原生的JSON支持,这就需要我们借助第三方库来处理JSON数据。和,通过实际代码示例展示如何使用它们读取和解析JSON文件。
2025-11-28 15:06:10
439
原创 C++ this 指针深度解析:对象自我的标识
本文深入探讨C++中的this指针,包括其工作原理、核心用途和运算符重载应用。this指针是每个非静态成员函数中自动传递的隐含指针,指向调用该函数的对象。主要用途包括解决命名冲突、实现链式调用以及在成员函数中传递当前对象。在运算符重载中,this指针用于实现赋值运算符和复合赋值运算符,确保正确处理自赋值情况。通过返回*this引用,可以支持方法的连续调用,提高代码可读性和灵活性。
2025-11-28 10:41:42
292
原创 C++ 类访问权限详解:掌握封装的艺术
摘要:本文探讨了C++中三种访问权限(public、private和protected)的作用与使用场景。private权限实现数据封装,仅在类内可访问;public权限定义类接口,可被外部代码调用;protected权限允许派生类访问基类成员。通过银行账户、汽车类和动物继承体系等实例,展示了不同权限在实际编程中的应用,包括数据隐藏、接口设计和继承扩展。合理使用访问权限是构建健壮、安全面向对象程序的关键。
2025-11-27 10:29:25
337
原创 Pathlib vs open() 实战对比 CheatSheet(最佳实践版)
本文总结了Python文件操作的10个最佳实践,重点推荐使用Pathlib模块进行现代文件处理:1) 读写文本/二进制文件更简洁安全;2) JSON文件处理更优雅;3) 文件检查、路径拼接和遍历更方便;4) 支持递归创建目录和静默删除文件。对于大文件处理仍建议使用传统open流式读取。相比os模块,Pathlib提供了更Pythonic、跨平台的文件操作方式,代码更简洁且默认处理编码和路径分隔符问题,能显著提升开发效率和代码可靠性。
2025-11-20 11:32:22
235
原创 深入理解 NumPy 的 np.column_stack:从原理、用法到可视化图解
函数按列还是按行?对 1D 数组的处理最适合用途按列自动变“列”构建数据矩阵、特征拼接hstack按行水平拼接直接拼成一维简单拼接vstack按行堆叠变为行向量竖向堆数据stack增加新维度完全自定义 axis自由组合三维/四维结构建议记忆:column_stack = feature_columns 的组合工具对于机器学习、图像关键点、GT+pred 数据结构来说特别适用。
2025-11-20 10:36:22
969
原创 深入理解PNG图像:从透明通道到Python合成实践
*无损压缩:**与JPEG不同,PNG使用无损压缩算法,保存图片时不会丢失任何像素信息,确保图像质量完美保留**透明通道支持:**内置Alpha通道,支持从完全透明到完全不透明的平滑过渡**丰富的色彩模式:**支持24位真彩色(约1670万色)或32位带透明度的色彩**广泛应用场景:**特别适合图标、Logo、UI元素和需要透明背景的图像合成。
2025-10-30 11:48:11
543
原创 C++中的指针常量、常量指针与常量指针常量详解
本文深入解析了C++中指针与const的组合使用,包括指针常量、常量指针和常量指针常量三种类型。每种类型通过语法声明、代码示例和特点总结详细说明,并提供了"左定值,右定向"等实用记忆技巧。文章还展示了这些概念在函数参数、字符串处理和面向对象编程中的实际应用场景,帮助开发者编写更安全、可读性更强的代码。理解这些关键概念对提升C++编程能力至关重要。
2025-09-23 14:05:53
387
原创 解决Pytest参数化测试中文显示乱码问题:两种高效方法
Pytest参数化测试中使用中文ids时会出现乱码问题。本文提供两种解决方案:1)使用pytest_collection_modifyitems钩子函数处理测试项名称编码,通过UTF-8转码解决显示问题;2)在pytest.ini中配置disable_test_id_escaping选项直接禁用转义机制。两种方法都能有效解决中文乱码问题,前者更灵活可控,后者更简单直接但可能影响特殊字符处理。开发者可根据项目需求选择适合的方案。
2025-09-11 14:33:44
634
1
原创 Python secrets模块:安全随机数生成的最佳实践
Python的secrets模块是专为安全敏感场景设计的随机数生成工具,比random模块更适合密码学应用。它提供生成安全令牌(token_hex/token_urlsafe)、随机数(randbelow)和字节序列(token_bytes)的功能,并支持安全比较(compare_digest)。典型应用包括密码重置令牌、API密钥生成和安全密码创建。使用时需注意:选择足够长度(会话令牌16字节起)、安全存储密钥、处理异常情况,并注意其性能较慢的特点。该模块通过操作系统提供的密码学安全随机源,有效保障了认证
2025-08-25 12:16:14
507
原创 Dash 中的 dcc.Clipboard 组件详解:实现一键复制功能
是 Dash 核心组件库中的一个实用工具,允许用户将指定内容一键复制到系统剪贴板,极大提升用户体验。本文将深入解析该组件的用法、特性和实际应用场景。
2025-08-07 18:50:13
407
原创 深入解析 Dash 中的 dcc.Checklist:构建高效多选交互界面
在数据可视化应用中,多选框是用户交互的核心组件之一。Plotly Dash 框架通过 组件提供了强大的多选功能,本文将全面解析其用法、技巧和最佳实践。 是 Dash Core Components 库中的交互组件,允许用户从多个选项中选择一个或多个值。与单选按钮不同,它可以实现真正的多选操作,非常适合:核心参数说明:2. 禁用特定选项3. 样式深度定制4. 全选/全不选功能四、回调函数与数据交互 的真正威力在于与回调函数的结合:回调技巧:
2025-08-07 17:27:12
482
原创 使用标记将数据传递给 pytest 装置:进阶技巧与实践
pytest标记与装置的深度整合实践 本文深入探讨了pytest框架中标记(mark)向装置(fixture)传递数据的高级技术。通过标记传递数据相比传统参数化方式具有显著优势:保持测试签名简洁、实现动态配置覆盖、支持灵活元数据管理。文章详细介绍了三种核心实现模式: 多标记数据合并:通过遍历多个同名标记实现配置叠加 条件装置:根据标记内容动态决定装置行为 标记驱动初始化:利用标记参数控制资源创建过程 实际应用场景展示了在API测试和UI测试中的典型用法,包括API客户端配置和浏览器实例定制。这些技术显著提升
2025-06-30 14:27:26
453
原创 Pytest进阶:参数化夹具与标记的完美结合
本文深入探讨了pytest框架中参数化夹具与标记的结合使用,以解决复杂测试场景需求。通过浏览器兼容性测试实例,展示了如何定义参数化夹具、动态添加标记以及创建各类测试用例。文章还提供了动态条件参数化、标记继承组合、参数感知跳过等高级技巧,以及运行控制与报告生成的最佳实践。这种组合方式为自动化测试提供了更智能、高效的解决方案,特别适合处理多环境、多变量场景下的测试需求。
2025-06-30 12:43:11
432
原创 Pytest Fixture 模块化:构建可组合的测试基础设施
Pytest fixture的嵌套与模块化设计 摘要:Pytest fixture的嵌套使用是其强大功能的核心,通过"fixture中的fixture"模式实现模块化测试架构。文章展示了基础嵌套用法,如数据库连接与事务的依赖关系,并介绍了三种设计模式:分层构建(核心资源→服务容器→客户端)、工厂模式(可配置的对象创建)和配置驱动(环境相关的应用设置)。高级技巧包括条件依赖、动态组合和参数化扩展,最后通过电商测试套件案例,展示了从基础设施到业务层的完整fixture架构。最佳实践强调单一职
2025-06-30 11:49:02
650
原创 Pytest 动态作用域:智能控制 Fixture 生命周期的艺术
运行时决策:根据测试环境、配置或资源条件确定作用域资源优化:智能管理昂贵资源的生命周期调试支持:通过命令行选项保留测试资源环境适配:自动调整行为适应不同运行环境默认行为:每个测试使用独立容器(安全隔离)优化模式:通过 --keep-containers 共享容器(加速执行)条件清理:智能管理容器生命周期。
2025-06-30 11:01:19
945
原创 深入解析Pytest Fixture的Finalizer:优雅的资源清理机制
Finalizer(终结器)是Pytest fixture系统的一部分,它允许你注册一个或多个在fixture生命周期结束时执行的清理函数。当测试函数完成执行后(无论通过、失败还是跳过),Pytest会自动调用这些清理函数。fill:#333;color:#333;color:#333;fill:none;成功/失败/跳过测试开始执行fixture设置代码执行测试函数测试完成执行finalizer清理测试结束。
2025-06-30 10:16:16
665
原创 解密Pytest Fixture:为何append_first返回None而order却有值?
Pytest测试中看似矛盾的fixture行为解析:当append_first返回None但order却包含修改内容时,这揭示了Python可变对象的特性与Pytest fixture机制的交互原理。关键点在于列表的append()方法会原地修改列表并返回None,而Pytest会缓存和共享同一fixture实例。本文通过具体案例分析了该现象,并提供了三种正确使用fixture进行状态修改的模式:返回修改后的对象、工厂函数模式和finalizer清理模式,最后总结了Pytest fixture的最佳实践,包
2025-06-28 18:32:15
528
原创 优雅管理测试环境:深入探索 pytest 的 usefixtures
是pytest提供的一个强大装饰器,允许我们在类级别或模块级别应用fixture,而不需要在每个测试函数中显式声明它们。减少重复代码:避免在每个测试函数中重复声明相同 fixture提高可读性:在类或模块顶部清晰展示测试依赖关系集中管理:统一管理测试环境的设置和清理优化性能:通过合理设置作用域减少重复初始化。
2025-06-27 16:27:33
769
原创 C++文件读写操作完全指南:文本与二进制文件处理详解
在C++开发中,文件操作是必备技能之一。本文将全面解析C++文件读写的核心概念、操作方法和最佳实践,包含丰富的代码示例。
2025-06-19 20:41:56
218
原创 NumPy 魔法:掌握 np.where() 的两种神奇用法
简单来说,np.where()是 NumPy 中用于条件选择和元素定位的核心函数。三元条件替换:根据条件选择不同值索引定位:查找满足条件的元素位置让我们通过实例来探索这两种用法!
2025-05-30 17:30:29
650
原创 掌握 pgrep:Linux 进程查找的利器
摘要:pgrep命令是Linux中高效查找进程PID的专用工具,相比传统ps+grep组合更加简洁精准。本文详解其核心用法:1)基础按名称查找;2)常用选项如-l显示进程名、-u按用户过滤、-x精确匹配等;3)实战场景包括批量结束进程、服务监控及统计;4)注意事项强调正则匹配规则和权限限制。同时对比了pgrep(查询)与pkill(终止)的功能差异,帮助用户快速掌握这一系统管理利器。(150字)
2025-05-29 12:56:33
374
原创 自然排序利器:Python natsort 库完全指南
排序方式结果字典序(sorted()自然序(natsorted())自然排序的核心特点:智能识别字符串中的数字部分,按照数值大小进行排序。
2025-05-20 14:48:56
521
原创 使用 PyAV 高效拆解视频帧:原理、实现与性能优化
PyAV 凭借其底层 FFmpeg集成和零拷贝特性,成为 Python 生态中视频处理的性能标杆。对于需要处理高清视频、实时流媒体或大规模视频分析的项目,PyAV 能显著提升效率并降低硬件成本。而通过多线程解码、GPU 加速和智能跳帧等优化手段,开发者可以进一步挖掘其潜力。
2025-04-18 10:31:14
1901
原创 如何用 Python 递归删除文件系统中的所有空文件夹?
在日常开发或文件管理时,我们常常会遇到一些因项目重构、文件迁移或临时文件清理后残留的空文件夹。这些空目录不仅占用磁盘空间索引资源,还会让文件系统显得杂乱。本文将介绍如何用 Python 编写一个高效、安全的脚本,递归删除指定目录下的所有空文件夹(包括嵌套的深层空目录),并深入解析其实现原理。
2025-04-17 17:58:33
381
原创 NumPy 中 np.clip 的全面解析:数据裁剪利器
而 NumPy 的 np.clip 正是为此场景量身定制的工具。它能快速将数组元素约束到指定区间,提升数据质量与计算稳定性。在数据分析和机器学习中,我们经常需要将数据限制在合理的范围内。适用场景:不同特征列需要不同缩放规则。为什么需要数据裁剪?
2025-04-14 12:26:21
374
原创 使用SciPy的linear_sum_assignment方法解决最优分配问题
无论是物流调度中的车辆与货物匹配,还是计算机视觉中的目标追踪,甚至是人力资源中的任务分配,这类问题都可以抽象为线性分配问题(Linear Assignment Problem)。linear_sum_assignment是SciPy中一个强大且易用的工具,能够高效解决线性分配问题。Python的SciPy库提供了强大的linear_sum_assignment方法,能够高效解决这类问题。在实际的工程和算法应用中,我们常常会遇到一类经典的优化问题:如何将有限的资源以最优方式分配给不同的任务?
2025-04-13 14:26:25
1178
原创 单类别目标检测评估指南:以人脸检测为例
本文介绍如何评估单类别目标检测模型的性能,使用人脸检测作为示例,并提供Python代码实现。主要涵盖IoU、Precision、Recall、AP等核心指标。
2025-02-28 09:35:53
383
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅