- 博客(183)
- 收藏
- 关注
原创 如何解决 pyqt5 程序“长时间运行失效” 问题?
问题类别v2 技术改进作用UI 崩溃 / 卡顿pyqtSignal主线程更新 UI线程安全,避免崩溃卡死点击线程假死,异常捕获保持线程健康运行系统拦截点击PAUSE=0.01避免高频操作热键失效unhook_all保证监听释放和恢复UI 与线程冲突主线程调度,异步安全。
2025-08-23 22:32:46
472
原创 业务测试中日志的应用
日志与协议分析是测试开发的放大镜。日志越完备,定位越精准;日志越贴近玩家视角,复盘与解释就越顺畅。实际测试中,往往不是 bug 是否被发现的问题,而是 bug 是否能被“说清楚、修彻底、复盘准”。这就是高质量日志体系的价值。
2025-08-23 11:33:15
580
原创 一文讲清楚函数中什么时候该写self ?
写在类里面的普通方法,要不要 self 取决于:是否需要用到对象属性。写在函数里面的局部帮手(像案例代码的 reverse),那是函数作用域里的本地函数,根本不在类的规则下,自然不需要 self。
2025-08-22 22:17:36
884
原创 HTTP 请求方法有哪些?
类似 GET,但不返回响应体(只看头部)获取页面、查询数据、静态资源加载。用于建立隧道(HTTPS 请求)用于探测资源是否存在、节省带宽。表单提交、上传文件、登录注册。跨域 CORS 预检请求用到。修改用户昵称、只改一个字段。查询服务器支持哪些请求方法。回显收到的请求(用于调试)更新用户信息、编辑商品等。部分更新资源(局部修改)提交数据创建资源或操作。不常用,部分服务器禁用。典型用于代理服务器场景。更新资源(整体替换)
2025-07-25 21:44:35
333
原创 DNS 协议
根 DNS 服务器(Root DNS Server)是全球域名解析体系(DNS)的。多个物理服务器共享同一个 IP 地址,用户自动访问最近的节点。本地 DNS 自己问:“根在哪?” → “TLD在哪?浏览器告诉运营商 DNS:“帮我查这个域名的 IP”本地 DNS 逐级向根、TLD、权威 DNS 询问。,它不负责具体域名的解析,但。,根服务器告诉你:“去找。本地 DNS 帮你全部查完。
2025-07-25 21:43:03
214
原创 OSI 七层模型和五层模型
由国际标准化组织(ISO)提出。将网络通信分为 7 层,每层只关注自身职责并为上下层服务,✅ 五层模型强调的是“可实现”,与实际网络协议的分层更加一致。为了简化 OSI 七层模型,实际工程中常用的是。,合并了部分功能,更贴合互联网实际协议栈。表示层 (Presentation)应用层 (Application)传输层 (Transport)物理层 (Physical)数据编码、加密、解码、压缩。会话层 (Session)网络层 (Network)物理寻址、帧传输、差错检测。建立、管理、终止会话连接。
2025-07-25 21:40:38
432
原创 一个正常的http请求在不传cookie时,可能会返回什么?状态码是?
不传 Cookie 的请求,最常见的是 401(未登录),也可能是 403(权限限制),当然也可能是 200(如果接口是公开资源)。是否返回错误要看接口是否强依赖身份认证。
2025-07-24 20:46:38
512
原创 临时重定向作用,一般什么情况下使用
临时重定向是一种客户端请求被暂时重定向到其他 URL 的机制,常用的 HTTP 状态码有:状态码名称含义简述302Found(原为Moved Temporarily)暂时重定向到另一个 URL,客户端应继续使用原 URL 发请求307更严格的临时重定向,不允许更改请求方法。
2025-07-24 20:45:59
326
原创 平时遇到的错误码及场景?404?400?502?都是什么场景下什么含义,该怎么做 ?
也遇到 502,是因为换包环境配置错了网关路径,后端服务未注册到网关。Bad Gateway:网关错误(如 Nginx 接上游服务失败)Internal Server Error:服务器内部错误。在实习过程中,比如我曾遇到 400 错误,是因为请求中。Method Not Allowed:方法不允许。Too Many Requests:请求过多。Request Timeout:请求超时。Gateway Timeout:网关超时。Bad Request:请求格式有误。Not Found:资源不存在。
2025-07-24 20:44:47
1170
原创 Python 变量赋值与切片语法(in-place 修改 vs 重新赋值)
写法是否修改原列表是否保留引用地址用途✅ 是(就地修改)✅ 是改变传入列表的内容❌ 否(创建新列表)❌ 否创建新的副本或重新赋值变量。
2025-07-21 20:12:34
353
原创 接口测试中 requests 工具的使用总结【接口测试】
requests是 Python 中使用最广泛的 HTTP 请求库之一,其设计简单优雅,特别适合接口测试与接口自动化脚本编写。
2025-07-19 16:49:14
731
原创 多维动态规划题解——最长公共子序列【LeetCode】空间优化:两个数组(滚动数组)
基础解法请参考之前的一篇文章:多维动态规划题解——最长公共子序列【LeetCode】记忆化搜索&&翻译成递推-CSDN博客下面我们详细讲讲如何进行空间优化的,具体的优化技巧是什么
2025-07-17 19:56:21
294
原创 多维动态规划题解——最长公共子序列【LeetCode】记忆化搜索&&翻译成递推
定义dfs(i, j)在和中的最长公共子序列的长度。维度内容✅ 思路逻辑定义 dfs(i, j):text1[0..i] 与 text2[0..j] 的 LCS 长度✅ 状态转移相等则 +1,否者取左/上两种子问题最大值✅ 技巧递归 + 记忆化(Top-down DP)✅ 时间复杂度O(n * m)✅ 空间复杂度O(n * m)定义二维数组ff[i][j]表示与的最长公共子序列长度。注意这里的偏移:我们实际比较的是字符串的前i和前j个字符,但f。
2025-07-17 19:45:36
949
原创 接口测试概述【接口测试】
接口测试的核心目的,就是根据接口的技术文档或协议说明,设计测试用例并使用工具直接向接口发送请求,再验证返回的响应是否符合预期。虽然测试多数面向服务端,但在某些场景下客户端也可以成为被测对象,关键在于你要验证的是哪一方的逻辑与响应。目前,大部分接口交互基于 HTTP 协议:客户端发起请求,服务器返回响应。这种结构使得 API 测试很像调用某种“远程函数”,因此也被形象地称作 Web API 测试。
2025-07-17 10:24:04
854
原创 关于接口测试的HTTP基础【接口测试】
接口测试中最常用的通讯协议就是 HTTP(Hypertext Transfer Protocol),本节旨在帮助理解 HTTP 协议的结构、工作流程以及如何用于接口测试。
2025-07-17 10:18:43
587
原创 动态规划题解——分割等和子集【LeetCode】
我们目标是找到一个子集,使得其和为。dfs(i, j) 表示:是否可以从 nums[0..i] 中选出一些数,使得它们的和为 j维度内容✅ 思路逻辑转化为是否可以从数组中选出若干数,使它们的和为总和的一半✅ 核心技巧记忆化搜索 + 状态定义dfs(i, j)✅ 时间复杂度O(n × s//2),即 O(n × sum/2)✅ 空间复杂度O(n × sum/2),包括递归栈和缓存。
2025-07-17 00:04:11
474
原创 动态规划题解_打家劫舍【LeetCode】
f0表示「不偷当前这家时的最大收益」;f1表示「偷当前这家时的最大收益」。随着遍历每一间房,我们动态更新这两个变量。维度内容✅ 思路逻辑每间房子选择“偷”或“不偷”,根据前一个状态递推最大金额✅ 核心技巧动态规划 + 状态滚动优化(用 f0, f1 代替 dp 数组)✅ 时间复杂度O(n)✅ 空间复杂度O(1)
2025-07-16 23:09:25
1057
原创 多维动态规划题解——最小路径和【LeetCode】空间优化一维数组
✅ 核心思想:二维动态规划的空间优化每个格子只依赖它左边和上边的状态,因此一行一行滚动更新就足够;使用一维数组 f 来记录当前行的最小路径和,循环内覆盖更新;边界偏移技巧使得代码无需特判第一行第一列。
2025-07-16 20:42:59
231
原创 多维动态规划题解——最小路径和【LeetCode】记忆化搜索&&翻译为递推写法
❓ 问题描述:给定一个 m x n 的网格 grid,每个格子有一个非负整数,表示从左上角 (0,0) 走到右下角 (m-1,n-1) 的路径,求路径上的最小路径和(只能向右或向下走)。
2025-07-16 20:38:39
963
原创 多维动态规划题解——不同路径【LeetCode】递推写法&空间优化
给定一个大小为m x n从左上角走到右下角,有多少条不同的路径?使用一维数组f[j]表示当前行中,到达第j列所需要的路径数量;为什么一维就够?因为第i行的路径数只依赖于上一行和当前行左侧的位置。维度内容✅ 思路逻辑一维数组压缩的 DP,每个位置累加来自左侧和上方的路径数✅ 核心技巧滚动数组优化空间;偏移 1 位避免边界判断;内层循环从左到右确保顺序正确✅ 时间复杂度O(m × n)✅ 空间复杂度O(n)
2025-07-16 20:16:17
349
原创 多维动态规划题解——不同路径【LeetCode】记忆化搜索
dfs(i, j) 表示从 (0, 0) 到达 (i, j) 的路径数维度内容✅ 思路逻辑每个格子只能从上或左来,递归地组合路径数✅ 核心技巧DFS 建模 + 记忆化;基础的二维路径 DP 问题✅ 时间复杂度O(m × n),每个状态只算一次✅ 空间复杂度O(m × n),缓存 + 递归栈深度。
2025-07-16 19:59:21
288
原创 更灵活方便的初始化、清除方法——fixture【pytest】
在前面介绍的 unittest 风格初始化与清除机制中,我们主要使用 setup_* 与 teardown_* 方法对资源进行前后处理。而 pytest 提供了更加灵活、声明式的替代方案 —— fixture,使得测试代码更加模块化、可复用。
2025-07-16 10:07:52
1038
原创 pytest中挑选用例执行【pytest】
自定义标签在运行时,pytest 可能会抛出警告提示标签未注册。参数用于模糊匹配用例名、类名、模块名或目录名等,只要包含指定关键词即可被选中。🔍 注意:关键词匹配是区分大小写的,并且不要求完全匹配,只需部分匹配成功即可。在实际自动化测试过程中,我们常常并不需要每次都执行所有测试用例,而是希望根据。通过这种方式,pytest 会正式识别这些标签,执行时不再提示警告信息。你还可以为整个模块统一设置标签,通过定义模块级变量。等条件,灵活挑选要运行的部分用例。上述命令会运行所有名称中包含。执行整个目录中的测试。
2025-07-16 09:38:08
650
原创 pytest初始化清除【pytest】
在自动化测试中,初始化与清理操作(setup/teardown)扮演着至关重要的角色,能够为测试环境的复用、资源的回收和测试隔离提供基础保障。pytest 支持多种粒度的初始化与清除:模块级、类级、方法级以及目录级(通过 fixture 实现)
2025-07-15 10:46:12
889
原创 pytest快速上手指南【pytest】
在基于 Python 的自动化测试领域,最常见的三大测试框架包括:unittestpytestrobotframework
2025-07-15 10:43:21
615
原创 动态规划题解——乘积最大子数组【LeetCode】
维度内容✅ 思路逻辑遍历数组时维护以当前位置结尾的最大/最小乘积,更新全局最大值✅ 核心技巧负数会导致最大最小翻转,必须同时维护最大值和最小值✅ 时间复杂度O(n) 一次遍历✅ 空间复杂度O(1) 使用常数变量优化。
2025-07-14 20:56:34
368
原创 动态规划题解——最长递增子序列【LeetCode】记忆化搜索方法
dfs(i) 表示:以 nums[i] 为结尾的最长递增子序列的长度维度内容✅ 思路逻辑每个位置向前查找比它小的数,递归求以该位置为结尾的 LIS 长度✅ 核心技巧转化为“以 i 结尾”的子问题;记忆化避免重复递归✅ 时间复杂度O(n²),两层循环(递归 + 遍历前缀)✅ 空间复杂度O(n),记忆表和递归栈大小。
2025-07-14 20:38:31
511
原创 动态规划题解——单词拆分【LeetCode】
使用递归函数dfs(i)s[:i]是否可以合法拆分。dfs(5)表示s[0:5]能否由字典中的单词拼出。维度内容✅ 思路逻辑从后向前切割字符串,判断是否可以用字典中单词组成✅ 核心技巧DFS + 记忆化搜索;利用 max_len 限制枚举范围,提高效率✅ 时间复杂度O(n × L),n 是字符串长度,L 是最长单词长度✅ 空间复杂度O(n),递归栈和缓存。
2025-07-14 20:26:19
305
原创 动态规划题解_将一个数字表示成幂的和的方案数【LeetCode】
定义f[s]表示和为s的组合数目;f[0] = 1,表示选法为空时和为 0 的唯一方案。维度内容✅ 思路逻辑将问题转换为组合数问题,用 0/1 背包方式动态转移✅ 核心技巧每个数最多用一次(倒序遍历);幂次作为体积;经典 f[s] += f[s - v] 模型✅ 时间复杂度O(√n × n) 最多枚举 √n 个底数,每次遍历 n 个状态✅ 空间复杂度O(n) 一维 DP 数组步骤内容初始化f[0] = 1和为 0 有 1 种方式(空集)枚举i = 1...n。
2025-07-13 20:07:31
736
原创 动态规划题解_零钱兑换【LeetCode】
✅ 核心思想:完全背包的二维动态规划 + 空间优化本质是完全背包问题(每个物品可以选多次);将状态定义为“前 i 个硬币构成 c 的最小硬币数”;使用滚动数组优化空间,把 O(n × amount) 降为 O(2 × amount)。
2025-07-13 20:02:31
968
原创 动态规划题解_打家劫舍【LeetCode】
这个问题的核心思想是动态规划。我们可以将问题分解为子问题:对于每个房子 i,我们有两种选择:偷或不偷。如果我们偷了第 i 个房子,那么我们不能偷第 i-1 个房子,所以最大金额是 dfs(i - 2) + nums[i]。如果我们不偷第 i 个房子,那么最大金额是 dfs(i - 1)。我们取这两种选择中的最大值作为 dfs(i) 的结果。
2025-07-13 14:29:36
421
原创 动态规划题解_杨辉三角【LeetCode】
✅ 核心思想:利用杨辉三角的递推性质构造二维数组每一项的值等于其上一行相邻两项之和;初始化为全 1 是为了保留两边边界值;只需填补中间项,逻辑清晰、空间节省。
2025-07-13 14:24:13
425
原创 Python 中 enumerate(s) 和 range() 的对比
如果你在遍历一个字符串、列表等时,同时需要索引和元素 —— 用 enumerate() 更简洁、优雅;如果你只是基于索引操作(如双指针、窗口处理) —— range() 会更通用。
2025-07-12 20:47:30
280
原创 贪心算法题解——划分字母区间【LeetCode】
维度内容✅ 思路逻辑利用每个字符最后出现位置,动态维护区间右边界,贪心切片✅ 核心技巧贪心:延迟切片直到当前片段中所有字母的最后出现位置都包含为止✅ 时间复杂度O(n),两次遍历字符串✅ 空间复杂度O(1),字母表大小固定,最多用 26 个键值对。
2025-07-12 20:39:22
430
原创 贪心算法题解——跳跃游戏 II【LeetCode】
维度内容✅ 思路逻辑每次跳跃更新当前最远能到达的位置,到达边界后跳一次✅ 核心技巧贪心模拟 BFS 层级遍历,按“跳跃区间”更新跳数✅ 时间复杂度O(n)✅ 空间复杂度O(1)
2025-07-12 20:30:21
388
原创 贪心算法题解——跳跃游戏【LeetCode】
维度内容✅ 思路逻辑从左向右遍历,维护最远可达位置,遇到不可达立即返回 False✅ 核心技巧贪心更新最远跳跃索引,判断当前位置是否可达,提早终止✅ 时间复杂度O(n)✅ 空间复杂度O(1)
2025-07-12 19:55:03
506
原创 贪心算法题解——买卖股票的最佳时机【LeetCode】
维度内容✅ 思路逻辑一次遍历中同时更新最小价格和最大利润✅ 核心技巧差值最大 = 当前价格 - 历史最小;动态维护最小值 + 一次扫描✅ 时间复杂度O(n)✅ 空间复杂度O(1)
2025-07-12 17:53:32
309
原创 栈题解——最小栈【LeetCode】
维度说明✅ 思路逻辑每个入栈元素都记录当前最小值✅ 核心技巧元素与当前最小值打包记录,空间换时间✅ 时间复杂度所有操作均为 O(1)✅ 空间复杂度O(n),每个入栈值都额外记录一个最小值如需我用图示说明这段栈在操作过程中的状态变化,也可以继续补充!
2025-07-12 14:35:21
776
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人