logo
publist
写文章

简介

该用户还未填写简介

擅长的技术栈

可提供的服务

暂无可提供的服务

Javasynchronized 原理拆解:锁升级链路 + JVM 优化 + CAS 与 ABA 问题(完整整合版)

本文深入解析了Java中synchronized关键字的底层原理和优化策略。首先指出synchronized是一套根据竞争强度自动调整的锁策略组合:初始采用乐观锁和轻量级锁,随着竞争加剧逐步升级为悲观锁和重量级锁。详细介绍了锁升级链路:无锁→偏向锁→轻量级锁(基于CAS和自旋)→重量级锁(依赖OS mutex)。还分析了JVM的优化手段包括锁消除和锁粗化,以及CAS机制的原理和引发的ABA问题。最

文章图片
#jvm#java#安全 +2
【码道初阶-Hot100】LeetCode 128. 最长连续序列:从排序双指针扫描到 HashSet,一文讲透为什么 O(n) 解法要用哈希

本文详细解析了LeetCode 128题"最长连续序列"的两种解法。首先介绍了直观的排序+线性扫描方法,时间复杂度为O(n log n),虽能正确解题但不满足题目要求。重点阐述了哈希解法,通过HashSet去重并仅从序列起点扩展,实现O(n)时间复杂度。文章深入分析了为何必须从起点出发以避免重复计算,并提供了高质量注释代码,帮助读者理解两种解法的核心思路与优化关键。

文章图片
#leetcode#哈希算法#算法
Java 类与对象总结:从入门到“少踩坑”一篇就够(适用期末复习,学完一遍过重点)

本文介绍了Java面向对象编程的核心概念,重点讲解了类与对象的区别、this关键字的使用、构造方法的特点、封装思想、访问修饰符、包管理以及static关键字的用法。文章通过代码示例和对比说明,揭示了面向对象编程的核心理念:类作为对象的设计模板,对象是类的具体实例。同时指出了常见的编程误区,如构造方法的默认生成规则、静态方法的访问限制等,帮助开发者避免典型错误。全文以实用为导向,涵盖了Java面向对

#java#开发语言
Java 继承与多态:概念、关键机制与容易踩的坑,一篇读懂

Java继承与多态是面向对象编程的核心机制。继承通过抽取共性代码到父类实现复用,形成"is-a"关系,需注意构造方法执行顺序、访问权限等问题。多态通过父类引用指向子类对象,根据实际对象类型决定行为,需满足继承、重写和父类引用三个条件。关键易错点包括构造方法调用顺序、向下转型安全性、字段无多态性等。合理使用继承与多态能减少重复代码,提高扩展性,但要注意避免过度继承,优先考虑组合方

#java#开发语言
Java 抽象类 & 接口:如何用、何时用、常见坑,一篇彻底搞清楚

摘要: Java中的抽象类和接口是设计模式的核心体现,用于提升代码结构的稳定性和扩展性。抽象类作为“不完整的模板”,适用于存在明确is-a关系的场景(如Shape、Animal),强制子类实现抽象方法,防止误实例化父类。接口则定义“能力规范”(如Runnable、Comparable),支持多继承组合,实现灵活的行为扩展。 关键区别: 抽象类:包含共性属性和部分实现,用于构建继承体系 接口:定义纯

#java#开发语言
Java String类:从“看得懂”到“用得稳”的完整指南

本文全面解析Java String类的核心机制与使用技巧。从String不可变设计、字符串常量池原理到StringBuilder/StringBuffer的选择策略,涵盖字符串构造、比较、查找、替换、分割等关键操作的正确用法与高频易错点。重点指出:字符串字面量与new创建对象的差异、equals与==的区别、正则替换的注意事项、split方法的分隔符转义需求,以及频繁字符串拼接应使用StringB

#java#开发语言
【码道初阶】Leetcode155踩坑最小栈问题:最小栈:算法对了,却输给了 Java 的 “==“?

【摘要】在解决LeetCode 155最小栈问题时,使用双栈法遇到意外错误:小数字测试通过但大数字失败。问题根源在于Java的Integer对象比较使用了==而非.equals()。Java对-128到127的整数有缓存池,导致小数字比较地址相同,而超出该范围的大数字会创建不同对象,地址比较失败。解决方案是改用.equals()比较或拆箱为基本类型。该问题揭示了Java包装类比较的陷阱,提醒开发者

文章图片
#算法#java
个人测试项目:一个可跑、可扩、可复用的 Selenium UI 自动化博客系统全链路测试拆解

摘要: 本文介绍了一个基于Selenium的博客系统全链路自动化测试框架。采用页面对象模型(Page Object)设计模式,将UI操作封装为LoginPage、ListPage、DetailPage等独立类,通过Utils基类提供Driver管理、等待策略和截图等公共能力。框架特点包括:1)WebDriverManager自动管理浏览器驱动;2)隐式+显式等待混合策略;3)按日期归档的智能截图功

文章图片
#selenium#ui#自动化
Selenium中隐式等待(Implicit Wait)和显式等待(Explicit Wait)的区别

本文对比了Selenium中隐式等待和显式等待的核心区别。隐式等待作用于元素查找操作,是全局配置,只能等待元素存在但无法确保元素状态;显式等待则针对特定条件(如元素可见、可点击、alert出现等),是局部精确控制。关键差异在于:隐式等待无法处理alert等非DOM元素场景,而显式等待支持更丰富的条件判断。实际使用中建议以显式等待为主,避免混合使用导致的不可预测超时问题。显式等待提供了更细粒度的控制

文章图片
#selenium#javascript#前端
JavaJUC 并发工具箱:常见类、线程安全集合与死锁

JUC并发编程核心工具摘要 Java并发工具包(JUC)提供了高效的多线程开发组件,主要包括: Callable+FutureTask - 替代传统wait/notify模式,实现带返回值的异步任务处理 ReentrantLock - 比synchronized更灵活的互斥锁,支持超时、公平锁等特性 原子类 - 基于CAS实现无锁线程安全操作,如AtomicInteger的原子增减 线程池 - 通

文章图片
#安全#python#开发语言
    共 14 条
  • 1
  • 2
  • 请选择