- 博客(56)
- 收藏
- 关注
原创 全面解析软件测试用例设计:从基础到进阶的完整指南
摘要:本文系统阐述了软件测试用例设计方法与最佳实践。针对现代软件复杂度高、漏测风险大的问题,提出测试用例6要素构成和“6+2”设计框架(功能、界面、性能、兼容性、易用性、安全测试+弱网/安装测试)。详细介绍了5种设计方法(等价类、边界值、决策表等),并给出银行转账和电商秒杀两个典型案例。数据显示,采用结构化测试方法可提升40%缺陷发现率,减少25%测试时间。建议建立测试用例检查清单,持续优化测试策略。
2025-12-09 19:11:48
648
原创 软件测试bug篇+因bug与开发产生争执该如何做
Bug是程序与既定规格不符或未达用户合理预期的功能问题。描述Bug要涵盖版本(如Web的浏览器版本)、环境、复现步骤、预期与实际结果。其级别通常分崩溃、严重、一般、次要等。当与开发因Bug产生争执,先自查描述是否清晰、操作是否无误,再从用户角度沟通,有理有据定级,还可给出建议。若沟通无果,可召开由测试、开发、产品代表参加的Bug评审会,决定处理方式并分析预防对策。
2025-12-08 20:30:27
580
1
原创 软件测试全攻略:从概念到模型详解
本文介绍了软件测试的基本概念、开发模型和测试模型。软件测试旨在验证产品是否符合用户需求,测试人员需要具备综合能力、自动化技术等素质。开发模型部分阐述了瀑布模型、螺旋模型、增量/迭代模型和敏捷开发的特点及适用场景,其中敏捷开发强调快速响应变化。测试模型重点介绍了V模型和W模型,分析了各自的优缺点。全文系统梳理了软件测试相关的核心概念和方法论,为测试工作提供了理论指导。
2025-12-07 16:13:00
1093
原创 MyBatis的TypeHandler :优雅地实现数据加密与解密
本文介绍了使用MyBatis TypeHandler实现数据库敏感数据自动加密解密的方案。通过定义Encrypt标记类和实现EncryptTypeHandler处理器,在数据存取时自动完成AES加密解密操作。该方法通过注解配置TypeHandler与Java类型的映射关系,无需修改业务代码即可实现透明加解密,具有解耦、通用性强、维护性好等优势。使用示例展示了如何在Mapper接口中应用该方案,有效解决了敏感数据存储的安全问题,同时保持代码简洁优雅。
2025-11-21 20:28:57
1186
2
原创 AOP面向切面编程
本文介绍了Spring AOP的基本概念与实现方法。AOP(面向切面编程)是一种在不修改源代码的情况下增强方法功能的编程思想,常用于拦截器、统一异常处理等场景。文章详细讲解了Spring AOP的实现步骤:首先添加相关依赖,然后通过@Aspect注解定义切面类,使用@Around等通知类型实现具体增强逻辑。重点解释了切点表达式、连接点、通知等核心概念,并比较了@Before、@After等不同通知类型的执行顺序。最后介绍了@PointCut简化重复表达式和@Order控制多个切面执行顺序的方法。通
2025-10-21 11:35:01
978
2
原创 统一功能处理
本文介绍了Spring框架中的三个核心功能:拦截器、统一数据返回格式和统一异常处理。拦截器通过实现HandlerInterceptor接口,可在请求处理前后执行自定义逻辑,常用于登录校验;统一数据返回通过ResponseBodyAdvice接口实现,规范了响应格式;统一异常处理结合@ControllerAdvice和@ExceptionHandler,能集中处理各类异常。这些功能提高了代码复用性,增强了系统健壮性,使前后端交互更加规范,是构建高质量Spring应用的重要技术手段。
2025-10-14 21:31:53
957
8
原创 MyBatis动态SQL标签详解
MyBatis动态SQL核心标签解析:介绍了MyBatis中常用的动态SQL标签,包括<if>用于条件判断、<trim>处理前后缀、<set>简化更新语句、<where>自动处理WHERE子句、<foreach>遍历集合以及<include>复用SQL片段。通过示例演示了如何避免SQL语法错误(如多余逗号)和实现条件查询、批量删除等操作,展示了MyBatis动态SQL构建的灵活性和强大功能。
2025-09-22 10:06:17
478
1
原创 MyBatis中#{}与${}传参对比
本文对比了MyBatis中#{}和${}两种传参方式的区别:#{}使用预编译SQL,通过占位符?防止SQL注入,能自动处理参数类型;${}直接拼接SQL,存在注入风险。文章通过Integer/String参数、排序和LIKE查询等场景进行演示,说明#{}更安全高效,但在排序场景需使用${}(需配合枚举规避风险)。最后给出了LIKE查询的安全解决方案:使用concat()函数结合#{}传参。
2025-09-17 22:44:02
1011
2
原创 MyBatis XML操作
本文介绍了使用MyBatis XML方式实现数据持久层开发的基本流程。主要包括:1)配置MySQL连接参数和MyBatis驼峰命名转换;2)创建Mapper接口并定义CRUD方法;3)在XML文件中实现SQL映射,包括select、insert、update、delete等操作;4)字段映射的三种方式:驼峰命名、起别名和结果映射;5)参数传递和主键回显的实现。通过MyBatisX插件可方便地在接口和XML文件间跳转,提高开发效率。文中还提供了完整的测试示例,展示了各操作的实现方式和执行效果。
2025-09-16 19:10:59
992
原创 MyBatis 注解操作
MyBatis是一个简化JDBC开发的持久层框架,它通过XML或注解方式配置SQL语句,实现数据库操作。介绍了MyBatis的基本使用方法:1)添加MyBatis和MySQL驱动依赖;2)配置数据库连接参数;3)创建与数据库表匹配的实体类;4)通过@Mapper注解定义Mapper接口,使用@Select、@Insert等注解编写SQL;5)演示了参数传递、主键返回和增删改查操作;6)介绍了日志配置和单元测试方法。MyBatis自动生成Mapper实现类,简化了传统JDBC操作,提高了开发效率。
2025-09-16 15:24:32
1135
1
原创 Spring Boot日志
摘要:本文介绍了日志在系统监控、数据采集和审计中的用途,展示了Java中通过LoggerFactory和@Slf4j注解两种日志打印方式。详细说明了日志级别(FATAL到TRACE)及其适用场景,并演示了如何通过配置文件(.properties/.yml)调整日志级别和实现日志持久化。文章还讲解了日志文件的命名规则、存储路径配置优先级,以及通过logback实现日志分割的策略,包括按文件大小(max-file-size)和日期格式(file-name-pattern)两种分割方式。
2025-09-15 11:13:41
649
2
原创 SpringBoot配置文件:properties与yml全解析
本文介绍了SpringBoot的三种配置文件格式,重点对比了.properties和.yml的使用差异。.properties采用键值对格式(key=value),而.yml使用层级结构(key: value),通过缩进表示层级关系。文章详细说明了两种格式的配置语法、值获取方式(@Value注解)以及yml特有的对象、集合和Map配置方法。同时指出.properties优先级更高,但yml可读性更好且支持更丰富的数据类型,但格式要求更严格。
2025-08-23 00:25:16
586
2
原创 Spring两个核心IoC&DI(二)
本文介绍了Spring框架中依赖注入(DI)的三种方式:属性注入、构造方法注入和setter注入。通过代码示例详细说明了每种注入方式的具体实现方法及其优缺点。其中,属性注入简洁方便但仅适用于IoC容器;构造方法注入支持final属性但多对象注入较麻烦;setter注入灵活但存在被修改风险。文章还探讨了当存在多个同类型Bean时@Autowired注解的冲突问题,提出了使用@Primary、@Qualifier和@Resource三种解决方案,并比较了@Autowired与@Resource的区别。
2025-08-21 18:58:59
1165
原创 Spring两个核心IoC&DI(一)
Spring IoC与DI核心概念解析 IoC(控制反转)将对象的创建权交给Spring容器管理,通过五大类注解(@Controller、@Service等)和方法注解@Bean实现对象存储。DI(依赖注入)则通过@Autowired从容器获取对象。BeanName默认遵循小驼峰规则,可通过注解属性自定义。启动类默认扫描同级包路径,使用@ComponentScan可扩展扫描范围。@Bean注解特别适用于第三方库对象注入和同类型多实例场景,支持多别名配置。三种获取Bean方式(类名、beanName、混合)确
2025-08-21 16:30:12
897
原创 css选择器的常见用法
CSS选择器包括标签选择器(如p{color:blue})、类选择器(.green{color:green})、id选择器(#p1{font-size:10px})和通配符选择器(*{color:red})。复合选择器则可以组合使用这些基本选择器,如div a选择div内的所有a标签,而div>a则只选择直接子元素a标签。选择器通过特定语法精确控制HTML元素的样式表现。
2025-08-09 13:57:10
262
2
原创 查找总价格为目标值的两个商品
如图,因为8+66>61,而8~66中间的都比8大,因此和66相加只会更加大于61,所以指向66的指针要左移。如果这道题采用双重循环来找到和为目标值的两个数,时间复杂度高,效率低。题上说明数组按照升序排序,因此我们可以利用这个性质用双指针解决。然后8+52<61,那就把指向8的指针右移。重复以上步骤就能快速找到和为目标值的两个数。
2025-03-27 23:41:02
488
3
原创 有效三角形的个数
如果arr[left]+arr[right] > c,那么left和right中间这些>=left指向的数的元素和righ指向的数相加一定也是>c的,因此这些数和arr[right]、c一定能构成三角形。直到left和right相遇,我们就把所有c作为做大的数的所有情况判断完了,再把c左移,然后重复上面的情况。当c>a,c>b时,我们只需要判断一个条件a+b>c是否满足就可以了,满足就能构成一个三角形。三边a、b、c要满足a+b>c,a+c>b,b+c>a这三个条件才能构成三角形。
2025-03-27 20:51:38
388
原创 Thread类的方法使用
👑目录Thread的构造方法Thread的常见属性start()join()sleep()getName()getId()getState()isDaemon()isAlive()
2024-11-17 18:00:26
1567
3
原创 进程与线程+多线程优势
开始记录时间后创建了线程t1,然后开启t1,接着创建线程t2并开启该线程,然后就打印了执行时间,但此时两个线程还在执行任务,没有结束。线程用的就是进程启动时从操作系统中分配的资源,(线程也可以叫轻量级的进程),当创建一个进程时,进程中就会包含一个线程,叫主线程。run方法只是Java对象的一个普通方法,定义了线程要执行的任务,但是调用run方法不会申请系统进程PCB,不能启动线程。我们可以理解为进程就是一个公司,线程就是员工,一个公司可以有多个员工,一个进程可以创建多个线程。
2024-11-06 20:22:45
1249
3
原创 数组划分/数组分块(双指针算法)
给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。请注意 ,必须在不复制数组的情况下原地对数组进行操作。
2024-11-05 09:09:35
440
2
原创 笔试强训2)最小花费爬楼梯(动态规划-线性dp)
给定一个整数数组 𝑐𝑜𝑠𝑡 cost ,其中 𝑐𝑜𝑠𝑡[𝑖] cost[i] 是从楼梯第𝑖 i 个台阶向上爬需要支付的费用,下标从0开始。一旦你支付此费用,即可选择向上爬一个或者两个台阶。你可以选择从下标为 0 或下标为 1 的台阶开始爬楼梯。请你计算并返回达到楼梯顶部的最低花费
2024-10-25 23:54:01
525
2
原创 按之字形顺序打印二叉树
层序遍历该二叉树,将每一层的节点放进一个ArrayList中,同时还要反转第二层、第四层等的ArrayList,这里需用到Collections工具类的reverse()来反转集合。每一层的处理:把根节点放入队列中。记录当前层的节点数,取出一个节点到该层的列表中,如果该节点有左子节点就添加进队列,如果该节点有右子节点也添加进队列。给定一个二叉树,返回该二叉树的之字形层序遍历,(第一层从左向右,下一层从右向左,一直这样交替)
2024-09-24 21:09:44
426
5
原创 【数据结构】包装类和泛型
🎉欢迎大家收看,请多多支持🌹🥰关注小哇,和我一起成长。本文质量分97,主要讲述了数据结构泛型和包装类相关知识点,同时含面试题一道及详细讲解。
2024-07-29 22:37:42
1987
75
原创 Java初识总结(java程序结构组成、代码运行、注释、关键字、标识符)
本文简要总结了java的程序结果组成部分,代码如何运行,注释,关键字以及标识符。
2024-07-22 18:11:40
4404
56
原创 趣味C语言——【猜数字】小游戏
轻松拿捏C语言!本文综合运用函数、do while循环、switch case语句等来讲解了猜数字游戏,同时详细讲述了随机数的产生和rand、srand、time函数的使用,速来get!
2024-06-16 16:54:18
2350
77
原创 趣味C语言——【关机代码】
轻松拿捏C语言!本文通过一个关机代码简要介绍了system函数以及shutdown关机的具体用法,同时结合了字符串函数strcmp和goto语句,能够有效复习这两个知识点。
2024-06-15 22:04:11
1761
98
原创 【C语言题解】1、写一个宏来计算结构体中某成员相对于首地址的偏移量;2、写一个宏来交换一个整数二进制的奇偶位
轻松拿捏C语言,跟着小哇一起学习!本文讲解了两道有关宏的题目,一道与结构体相关,一道运用了位操作符和移位操作符。一起来看看吧~~
2024-06-07 23:16:44
1633
98
原创 【计算机网络】第三章·数据链路层 超硬核复习好物,考前必看!!!
🥰欢迎阅读,来和 小哇 一起进步!✊👑第三章数据链路层1、主要信道2、数据链路层三个基本问题:1.封装成帧:2.透明传输:3.差错检测:3、两个协议:点对点协议PPP:应满足的需求:PPP帧格式:透明传输CSMA/CD协议三个要点:争用期(又叫碰撞窗口):最短有效帧长:截断二进制指数退避算法:4、局域网5、以太网(使用一对一的点对点通信方式)(使用一对多的广播通信方式,过程较复杂,必须使用专用的共享信道协议来协调该信道上连接的主机的数据发送)
2024-06-05 21:43:09
2022
67
原创 【计算机网络】第二章·物理层重点知识总结,超硬核复习好物,考前必看干货!!!
考前必看!!!本文总结于谢希仁第8版计算机网络,摘选重点知识干货,包括物理层基本概念、数据通信系统模型、有关信道概念、信道极限容量、传输媒体、信道复用技术、数字传输系统、宽度接入系统等重点摘要,速来学习!
2024-06-03 21:06:26
1406
61
原创 轻松拿捏C语言——【文件操作】
轻松拿捏C语言,文件操作看这篇~~本文详细讲解了文件操作相关知识点,包括读写步骤,各种函数用法及注意事项,以及文件读写顺序,超多内容等你来探索!
2024-06-02 21:51:43
2575
69
原创 轻松拿捏C语言——【内存函数】
轻松拿捏C语言,看这个系列就够了!!!本文详细讲解了memcpy、memmove、memcmp、memset四个内存函数的用法和注意事项,并用函数来模拟实现了部分内存函数,更有助于理解~速来get
2024-06-01 17:55:05
2244
49
原创 轻松拿捏C语言——自定义类型之【联合体与枚举】
轻松拿捏C语言,稳稳学会联合体和枚举类型!本文详细讲解了联合体(共用体)和枚举类型的声明、用法其各自特点。速来观看!
2024-05-31 23:59:08
1298
63
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅