自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(23)
  • 收藏
  • 关注

原创 【Java易错题】这个 switch-case 的输出结果你猜对了吗?

这篇Java switch-case案例解析了"case穿透"现象:当num=2时,由于缺少break语句,程序会从匹配的case2开始连续执行后续所有case(包括default),最终输出11。文章通过流程图展示了执行过程,并总结关键点:1)case穿透会导致后续所有代码被执行;2)default只是默认入口而非终止符;3)建议每个case后加break,除非有意利用穿透特性。最后给出了正确使用switch-case的两种示例,包括常规写法和合理利用穿透简化代码的场景。

2025-12-18 12:33:54 400

原创 【题解】LeetCode:通过累加和轮转操作得到字典序最小字符串

本文探讨了环状字母变换问题的解法。针对将字符串所有字母统一所需的最小操作次数问题,关键在于:1)理解字母表的环形结构(a与z相邻);2)计算字符间两条路径的最小距离(min(|c1-c2|,26-|c1-c2|))。基础解法是枚举26个目标字母,计算每个字符到目标的总操作次数取最小值。文章还延伸讨论了相关题目(如力扣1974特殊打字机问题)和优化技巧,并总结了环状问题的通用解法框架:正确计算环状距离+枚举所有可能目标+适当优化。

2025-11-06 22:24:16 816

原创 【Java必备】Lombok最全使用指南:告别冗长代码,提升开发效率!

Lombok让Java开发更简洁高效!它通过注解自动生成getter/setter、构造器、toString等方法,显著减少样板代码。核心注解包括: @Data:全能注解,包含常用方法 @Builder:实现建造者模式 @NoArgsConstructor/@AllArgsConstructor:生成构造器 @Slf4j:简化日志记录 最佳实践: JPA实体类推荐组合@Data+@Builder+构造器注解 使用@ToString.Exclude排除敏感字段 继承场景注意添加callSuper参数 优势:减

2025-11-06 18:13:05 883

原创 Selenium等待机制完全指南:隐式等待 vs 显式等待

隐式等待是全局性的设置,针对所有元素查找操作生效。它告诉WebDriver在查找元素时,如果元素没有立即出现,应该等待多长时间。显式等待是针对性的等待,用于等待特定条件成立。它更加智能和灵活,可以等待各种复杂的条件。隐式等待:适用于简单的元素存在性检查,作为基础保障显式等待:适用于复杂的异步操作和条件验证,更加智能高效企业实践:两者结合使用,以显式等待为主,隐式等待为辅。

2025-11-04 11:50:05 435

原创 我的第一个自动化测试用例:从零开始的Selenium实战指南

本文记录了新手完成第一个Web自动化测试用例的全过程。详细介绍了环境搭建步骤(IntelliJ IDEA、Maven、Java21、Selenium4.38.0、JUnit5),并提供了完整的测试代码实现,包括浏览器驱动配置、测试类定义、测试准备方法(@BeforeEach)、核心测试方法(@Test)和清理方法(@AfterEach)。文章还解释了pom.xml配置文件的关键依赖项,并通过百度首页测试案例展示了测试生命周期(准备-执行-清理)和断言验证的核心概念。最后分享了测试运行结果,为自动化测试初学者

2025-11-02 18:56:27 2003

原创 【软件测试基础篇】新手必看!构建你的第一个测试用例

本文为软件测试初学者构建了系统的知识框架,通过核心概念讲解和实战案例演示测试设计方法。首先定义软件与测试的本质,阐述测试的多重价值;其次介绍V模型测试阶段分类和黑盒/白盒技术分类;然后详解标准测试流程闭环。重点讲解等价类划分、边界值分析、判定表三种核心测试方法,并通过在线考试系统的成绩评定模块进行综合实战,展示如何组合运用这些方法设计有效用例。最后强调测试设计是需持续实践的艺术,并提供了配套案例模板下载。全文兼顾理论与实操,帮助读者掌握测试的"为什么"与"怎么做"。

2025-10-21 21:26:08 1664

原创 【Leetcode无重复字符的最长子串】滑动窗口的完美应用]

本文介绍了求解最长无重复字符子串的两种方法。暴力解法通过双重循环检查所有子串,时间复杂度为O(n³)。更优的滑动窗口解法使用双指针维护当前窗口,配合HashSet或HashMap实现O(n)时间复杂度。重点分析了滑动窗口的实现细节,包括指针移动规则和数据结构选择策略,并演示了算法执行过程。文章还讨论了边界条件处理和相似题目拓展,强调根据需求选择合适数据结构的重要性。

2025-10-20 22:43:37 1049

原创 【Java集合选择指南】从理论到实战的完整攻略

本文介绍了Java集合框架中Map、Set和List的选择策略。通过对比数据结构特点、操作复杂度和适用场景,提出决策方法论:键值映射用HashMap,去重/存在性检查用HashSet,有序存储用ArrayList。文章结合字符统计、重复检测等实际案例,展示了不同集合的应用场景,并给出算法题中的经典应用示例。最后给出性能优化建议和选择口诀,强调根据业务需求选择合适集合类型的重要性,以提升代码质量和运行效率。

2025-10-20 22:28:48 498

原创 【链表相加与反转Leetcode】从入门到精通的完整指南

本文系统性地讲解了链表表示的数字相加问题,涵盖两种经典场景:核心内容概览🎯 逆序链表相加(LeetCode 2)数字逆序存储,个位在链表头部直接模拟手工加法过程使用"虚拟头节点+双指针"技巧时间复杂度:O(max(m,n))🔄 正序链表相加(LeetCode 445)数字正序存储,高位在链表头部采用"反转→相加→再反转"的三步策略重用逆序相加算法,体现分治思想同样保持O(max(m,n))时间复杂度关键技术突破虚拟头节点技巧 - 简化边界条件处理进位机

2025-10-19 23:38:56 1034

原创 【题解】LeetCode:通过累加和轮转操作得到字典序最小字符串

本文提出使用BFS算法解决通过累加和轮转操作获取字典序最小字符串的问题。关键思路是将每种字符串状态视为图节点,两种操作作为边,通过BFS遍历所有可达状态,并用哈希集合记录已访问节点避免重复。算法实现包括累加操作(仅处理奇数位数字循环加)和轮转操作(右移b位),时间复杂度O(N×M),空间复杂度O(M)。测试验证了算法正确性,并讨论了优化方向如状态压缩和双向BFS。该问题展示了如何将操作序列转化为状态图搜索问题。

2025-10-19 13:11:30 481

原创 【深入浅出】BFS和DFS的使用方法:从原理到实战

本文系统讲解BFS和DFS两种基础图遍历算法。通过水波纹和走迷宫的生动比喻,形象说明BFS按层次扩展和DFS深度优先的特点。详细给出两种算法的代码框架、执行过程图示和适用场景(BFS适合最短路径,DFS适合路径记录),并对比分析其特性和选择策略。文章还提供算法模板和实战案例(字符串变换问题),最后给出学习建议和练习题目,帮助读者掌握这两种基础算法。

2025-10-19 12:59:32 1146

原创 【转换算法】Java字符串与字符数组转换:原理、实战与性能优化

本文系统介绍了Java中字符串与字符数组的转换技巧,包括基础转换方法(toCharArray()和String构造器)、字符与数字转换原理(加减'0'),以及实际应用场景。重点讲解了算法竞赛常用技巧(字符串反转、大数运算)、项目开发实践(密码掩码、数据加密)和性能优化策略(使用StringBuilder、内存清理)。文章通过丰富示例演示了字符串处理的核心技能,帮助开发者掌握高效安全的字符串操作方法,提升代码质量和算法能力。

2025-10-19 12:09:34 597

原创 告别三重循环!ABB子序列计数的优雅解法,复杂度直降O(n)

这篇技术文章介绍了一种高效解决"abb型子序列"计数问题的算法。核心思路是固定中间字符位置,利用乘法原理计算贡献值:对于每个字符位置j,统计前面不同于s[j]的字符数(beforeDiff)和后面相同于s[j]的字符数(afterSame),将两者相乘累加得到答案。该算法通过两次遍历(统计总字符数和计算贡献值)将时间复杂度从暴力解法的O(n³)优化到O(n),空间复杂度为O(1)。文章详细解释了算法原理、实现步骤,并通过示例验证了正确性,还提供了类似问题的扩展思路。

2025-10-16 20:16:48 835

原创 【博弈论入门】:染色游戏问题的完整分析与解法

本文分析了n×m网格染色游戏的胜负规律。通过小规模案例验证和奇偶性分析,发现游戏结果仅取决于总格子数的奇偶性:当n×m为奇数时先手小红必胜,偶数时后手紫必胜。文章提供了系统性的博弈问题分析方法,包括理解游戏本质、案例验证、数学规律总结和策略验证,并给出了简洁的Java实现代码。该问题属于对称博弈类,其解法展示了如何通过奇偶分析和对称策略解决类似问题。

2025-10-15 22:31:27 992

原创 【Java字符串与数组操作】:从入门到精通

本文系统讲解了Java中字符串和数组的核心操作技巧,包括字符串创建与比较的内存原理、StringBuilder的性能优化、字符串与字符数组转换、Arrays工具类的使用方法等。文章通过代码示例和内存模型图解,深入解析了字符串常量池、equals与==的区别、不可变字符串的修改策略等关键概念,并提供了多种实际应用场景和算法案例。最后总结了字符串处理和数组操作的最佳实践及性能优化建议,帮助开发者全面提升Java编程能力,适用于算法竞赛、技术面试和实际项目开发。

2025-10-15 20:12:19 915

原创 【字符删除算法】字符串处理经典:从暴力到优化的完整指南

本文介绍了一个字符串过滤问题的优化解决方案。问题要求从第一个字符串中删除所有出现在第二个字符串中的字符。文章从暴力解法开始分析,指出其O(n×m)时间复杂度和内存效率低下的问题。随后提出两种优化方案:使用StringBuilder+indexOf方法改进字符串拼接效率;采用HashSet存储待删除字符,将时间复杂度降至O(n+m)。通过性能对比,推荐HashSet+StringBuilder的最优方案,并讨论了算法思想、实战应用场景和各种边界测试用例。最后强调"预处理优化"和"

2025-10-14 23:40:30 2128

原创 【算法解析】寻找最接近的战士:排序与最小差值问题

本文探讨了如何优化寻找数组中最小差值的问题。原始暴力解法时间复杂度为O(n²),在n=10^5时耗时约50秒,无法满足要求。关键突破在于排序预处理:将数组排序后,最小差值必然出现在相邻元素之间。优化方案先排序(O(nlogn))再线性扫描(O(n)),整体复杂度O(nlogn),处理10^5数据仅需0.017秒。文章详细分析了算法思想、代码实现、边界处理和测试验证,并拓展了相关变种问题。这种"排序预处理+相邻比较"的优化模式适用于多种算法场景,展示了从暴力解法到最优解的系统性思考过程。

2025-10-14 22:23:17 602

原创 Java异常处理详解:从入门到实战应用

本文系统讲解Java异常处理核心技术,通过真实案例帮助开发者编写健壮可靠的应用程序。核心要点:异常处理三大方式:try-catch捕获、throws声明、throw抛出完整实战案例:除数为0异常的处理与恢复企业级最佳实践与常见陷阱规避自定义异常设计与性能优化技巧特色亮点:即学即用的代码示例分层异常处理策略异常恢复与资源管理方案微服务场景下的异常处理适合所有层次的Java开发者,快速提升程序稳定性和代码质量。

2025-10-13 23:10:50 578

原创 Java集合框架完全指南:从入门到面试通关

本文系统介绍了Java集合框架的核心知识,包括:1)集合与数组的区别,展示了ArrayList如何解决数组固定长度的问题;2)集合体系结构,包括List、Set、Map等接口特点;3)ArrayList扩容机制(初始容量10,按1.5倍增长)和HashMap哈希冲突解决方案(链表转红黑树优化);4)四种集合遍历方式的优缺点比较;5)高频面试题解析和性能优化建议(如避免ArrayList头部插入,推荐entrySet遍历Map)。文章通过代码示例演示关键概念,帮助开发者深入理解

2025-10-13 22:41:47 335

原创 Java toString()方法深度解析:对象的“自我介绍“艺术

Java中的toString()方法用于将对象转换为有意义的字符串表示,主要作用包括:调试助手:输出对象内容而非内存地址开发效率:简化日志记录和集合输出自动调用:在打印、字符串拼接等场景自动触发实现要点:包括关键字段但排除敏感信息保持格式统一清晰推荐使用IDE或Lombok自动生成最佳实践:为重要业务类重写toString()在日志记录、异常处理和单元测试中充分利用避免性能问题时可使用StringBuilder优化toString()相当于对象的"发言人",能自动提供清晰

2025-10-12 12:58:03 685

原创 标准的JavaBean:初学者指南

JavaBean是一种遵循特定编码规范的Java类,主要用于封装数据。其核心规则包括:必须提供空参构造方法、属性私有化、提供规范的getter/setter方法,以及遵循命名规范。完整的JavaBean还应实现Serializable接口(推荐),并重写toString()、equals()和hashCode()方法。现代开发中可使用Lombok注解简化代码,或选择Java14+的Record类。JavaBean的规范设计使其具有良好的封装性、可重用性,并能够被各种框架和工具良好支持,是Java企业级开发的

2025-10-12 11:46:35 573

原创 子类调用父类构造方法:super() 的妙用与陷阱

本文详细介绍了Java中super()关键字的使用场景和方法。super()主要用于显式调用父类构造方法,当父类没有无参构造时必须使用,且必须作为子类构造方法的第一句。文章通过Animal/Dog类继承示例,展示了构造方法链的调用顺序,以及如何在方法重写中使用super调用父类方法。同时指出常见错误,如super()不在第一句或父类构造方法不匹配的情况,并提供了解决方案。最后建议明确构造方法调用链,合理使用super()和this()构建灵活的类继承体系,以优化代码结构。

2025-10-11 22:25:23 587

原创 Java构造方法深度解析

本文系统讲解了Java中构造方法的核心概念与应用。构造方法作为创建对象的关键机制,具有与类同名、无返回类型、自动调用等特点,面试中常考察其设计原理。重点区分了构造方法的定义与调用,解析了重载的灵活性及测试意义,并提供了测试开发视角的验证方案。文章还解答了new操作的内存分配、初始化流程及构造方法的不可继承性,强调合理设计构造方法对保障对象状态的重要性,适合开发者在面试准备和实际编码中参考。

2025-10-10 22:01:12 432

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除