- 0 相关源码 1 竞态条件与临界区 多个线程访问了相同的资源,向这些资源做了写操作时,对执行顺序有要求。 1.1 临界区 incr 方法内部就是临界区域,关键部分代码的多线程并发执行,会对执行结果产生影响。 1.2 竞态条件 可能发生在临界区域内的特殊条件。多线程执行incr方法中的i++关键代码时,产生了竞态条件 2 共享资源 如果一段代码是线程安全的... 0 相关源码 1 竞态条件与临界区 多个线程访问了相同的资源,向这些资源做了写操作时,对执行顺序有要求。 1.1 临界区 incr 方法内部就是临界区域,关键部分代码的多线程并发执行,会对执行结果产生影响。 1.2 竞态条件 可能发生在临界区域内的特殊条件。多线程执行incr方法中的i++关键代码时,产生了竞态条件 2 共享资源 如果一段代码是线程安全的...
- 1 案例 熟悉的 DCL 单例实现 测试类 可见对Singleton的序列化、反序列化得到的对象是一个新的对象,说明破坏了Singleton的单例性。 2 序列化破坏单例的源码分析 看关键代码readOrdinaryObject 该处创建的obj就是本方法要返回的对象 isInstantiable:若一个serializable/external... 1 案例 熟悉的 DCL 单例实现 测试类 可见对Singleton的序列化、反序列化得到的对象是一个新的对象,说明破坏了Singleton的单例性。 2 序列化破坏单例的源码分析 看关键代码readOrdinaryObject 该处创建的obj就是本方法要返回的对象 isInstantiable:若一个serializable/external...
- 最近在学习Java多线程设计的时候,在网上看到一个面试题目的讨论,虽然楼主所说有些道理,但感觉还是有些问题,故此在和同事讨论以后还是有了若干收获,在此略作总结。 首先,来看看这个面试题目吧。 public class MyStack { private List<String> list = new ArrayList<String>(); ... 最近在学习Java多线程设计的时候,在网上看到一个面试题目的讨论,虽然楼主所说有些道理,但感觉还是有些问题,故此在和同事讨论以后还是有了若干收获,在此略作总结。 首先,来看看这个面试题目吧。 public class MyStack { private List<String> list = new ArrayList<String>(); ...
- 1 概述 JVM : Java Virtual Machine ,也就是Java虚拟机。 虚拟机是指:通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的计算机系统。 JVM是通过软件来模拟Java字节码的指令集,是Java程序的运行环境。 2 JVM核心架构设计 核心功能 通过ClassLoader 寻找和装载class文件解释字节码成为指令并执行... 1 概述 JVM : Java Virtual Machine ,也就是Java虚拟机。 虚拟机是指:通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的计算机系统。 JVM是通过软件来模拟Java字节码的指令集,是Java程序的运行环境。 2 JVM核心架构设计 核心功能 通过ClassLoader 寻找和装载class文件解释字节码成为指令并执行...
- 栈Stack 堆栈是“后进先出”(LIFO)集合。它有时被称为叠加栈(pushdown stack),因为最后“压入”(push)栈的元素,第一个被“弹出”(pop)栈。经常用来类比栈的事物是带有弹簧支架的自助餐厅托盘。最后装入的托盘总是最先拿出来使用的。 Java 1.0 中附带了一个 Stack 类,结果设计得很糟糕(为了向后兼容,永远坚持 Java ... 栈Stack 堆栈是“后进先出”(LIFO)集合。它有时被称为叠加栈(pushdown stack),因为最后“压入”(push)栈的元素,第一个被“弹出”(pop)栈。经常用来类比栈的事物是带有弹簧支架的自助餐厅托盘。最后装入的托盘总是最先拿出来使用的。 Java 1.0 中附带了一个 Stack 类,结果设计得很糟糕(为了向后兼容,永远坚持 Java ...
- 1 当反射遇到方法重载 重载grade方法,入参分别是int和Integer。 不通过反射,选用哪个重载方法很清晰,比如传入666走int参数重载方法,传入Integer.valueOf(“666”)走Integer重载。 但你若墨守成规认为反射调用方法也是根据入参类型确定方法重载。 使用getDeclaredMethod获取 grade方法,然后传入Intege... 1 当反射遇到方法重载 重载grade方法,入参分别是int和Integer。 不通过反射,选用哪个重载方法很清晰,比如传入666走int参数重载方法,传入Integer.valueOf(“666”)走Integer重载。 但你若墨守成规认为反射调用方法也是根据入参类型确定方法重载。 使用getDeclaredMethod获取 grade方法,然后传入Intege...
- 0 Edit 与Command模式中的Command类似的一个概念。Command模式将操作的执行逻辑封装到一个个Command对象中,解耦了操作发起者和操作执行逻辑之间的耦合关系:操作发起者要进行一个操作,不用关心具体的执行逻辑,只需创建一个相应的Command实例,调用它的执行接口即可。 而在swing中,与界面交互的各种操作,比如插入,删除等被称之为Edit,实... 0 Edit 与Command模式中的Command类似的一个概念。Command模式将操作的执行逻辑封装到一个个Command对象中,解耦了操作发起者和操作执行逻辑之间的耦合关系:操作发起者要进行一个操作,不用关心具体的执行逻辑,只需创建一个相应的Command实例,调用它的执行接口即可。 而在swing中,与界面交互的各种操作,比如插入,删除等被称之为Edit,实...
- 0 前言 全是干货的技术殿堂 文章收录在我的 GitHub 仓库,欢迎Star/fork: Java-Interview-Tutorial https://github.com/Wasabi1234/Java-Interview-Tutorial 自动装箱和拆箱从Java 1.5开始引入,目的是将原始类型值转自动地转换成对应的对象。自动装箱与拆箱的机制可... 0 前言 全是干货的技术殿堂 文章收录在我的 GitHub 仓库,欢迎Star/fork: Java-Interview-Tutorial https://github.com/Wasabi1234/Java-Interview-Tutorial 自动装箱和拆箱从Java 1.5开始引入,目的是将原始类型值转自动地转换成对应的对象。自动装箱与拆箱的机制可...
- 接口只是定义了一个标准,很多类可以实现这个接口: List list = new ArrayList(); // 实例化的是ArrayList这个类 List list = new Vector(); // 实例化的是Vector这个类 12 其中:ArrayList 和 Vector 这两个类都实现了List接口 A instanceof B 的作用: 1、 对... 接口只是定义了一个标准,很多类可以实现这个接口: List list = new ArrayList(); // 实例化的是ArrayList这个类 List list = new Vector(); // 实例化的是Vector这个类 12 其中:ArrayList 和 Vector 这两个类都实现了List接口 A instanceof B 的作用: 1、 对...
- 1 概念 1.1 任务 - Mission JaCoCo应该为基于Java VM的环境中的代码覆盖率分析提供标准技术。重点是提供一个轻量级,灵活且文档齐全的库,以与各种构建和开发工具集成。 有几种适用于Java的开源覆盖技术。在实现Eclipse插件EclEmma时,观察到它们都不是真正为集成而设计的。它们中的大多数特别适合特定工具(Ant任务,命令行,... 1 概念 1.1 任务 - Mission JaCoCo应该为基于Java VM的环境中的代码覆盖率分析提供标准技术。重点是提供一个轻量级,灵活且文档齐全的库,以与各种构建和开发工具集成。 有几种适用于Java的开源覆盖技术。在实现Eclipse插件EclEmma时,观察到它们都不是真正为集成而设计的。它们中的大多数特别适合特定工具(Ant任务,命令行,...
- Java Instrument有什么作用? 使开发者可以构建一个独立于应用程序的代理程序Agent,用来监控和协助运行在JVM上的程序,更重要的是能够替换和修改某些类的定义; 最大的作用:可以实现一种虚拟机级别支持的AOP实现方式; 在JDK 1.5 、1.6中,Java Instrument做了哪些变动支持? JDK 1.5:支持静态Instrument,就是... Java Instrument有什么作用? 使开发者可以构建一个独立于应用程序的代理程序Agent,用来监控和协助运行在JVM上的程序,更重要的是能够替换和修改某些类的定义; 最大的作用:可以实现一种虚拟机级别支持的AOP实现方式; 在JDK 1.5 、1.6中,Java Instrument做了哪些变动支持? JDK 1.5:支持静态Instrument,就是...
- 1 不同环境的排查思路 1.1 Dev 可以随意使用任何熟悉的工具排查。只要问题能重现,排查就不会太难,最多就是把程序调试到各种框架源码,所以这也是为何面试都会问源码,不求都看过,但要有思路知道如何去看能解决问题。 1.2 Test 比开发环境少了debug,不过也可使用jvisualvm或Arthas,附加到远程JVM进程。 还有测试环境是允许造数据来模拟我... 1 不同环境的排查思路 1.1 Dev 可以随意使用任何熟悉的工具排查。只要问题能重现,排查就不会太难,最多就是把程序调试到各种框架源码,所以这也是为何面试都会问源码,不求都看过,但要有思路知道如何去看能解决问题。 1.2 Test 比开发环境少了debug,不过也可使用jvisualvm或Arthas,附加到远程JVM进程。 还有测试环境是允许造数据来模拟我...
- 我的人生就像在白夜里走路。 ——东野圭吾《白夜行》 0 前言 上篇我们分析了HashSet,它是组合了 HashMap 实现的,那TreeSet会是怎么实现的呢?没错!组合 TreeMap 实现. 1 继承体系 继承了抽象类AbstracSet,方便扩展实现的 SortedSet,解锁如下方法实现 NavigableSet 接口,和 Navigabl... 我的人生就像在白夜里走路。 ——东野圭吾《白夜行》 0 前言 上篇我们分析了HashSet,它是组合了 HashMap 实现的,那TreeSet会是怎么实现的呢?没错!组合 TreeMap 实现. 1 继承体系 继承了抽象类AbstracSet,方便扩展实现的 SortedSet,解锁如下方法实现 NavigableSet 接口,和 Navigabl...
- org.apache.ibatis.annotations包下有着 mybatis 所有的注解,让我们一文打尽! 1 @Mapper MyBatis映射器的标记接口 从mybatis3.4.0开始加入了@Mapper注解,目的就是为了不再写mapper映射文件 但是源码中并没有对于这个注解的详细解释 添加了@Mapper注解之后这个接口在编译时会生成相应的实... org.apache.ibatis.annotations包下有着 mybatis 所有的注解,让我们一文打尽! 1 @Mapper MyBatis映射器的标记接口 从mybatis3.4.0开始加入了@Mapper注解,目的就是为了不再写mapper映射文件 但是源码中并没有对于这个注解的详细解释 添加了@Mapper注解之后这个接口在编译时会生成相应的实...
- 字节码助记符指令含义0x00nopNone0x01aconst_null将null推送至栈顶0x02iconst_m1将int型-1推送至栈顶0x03iconst_0将int型0推送至栈顶0x04iconst_1将int型1推送至栈顶0x05iconst_2将int型2推送至栈顶0x06iconst_3将int型3推送至栈顶0x07iconst_4将int型4推送至栈顶0x0... 字节码助记符指令含义0x00nopNone0x01aconst_null将null推送至栈顶0x02iconst_m1将int型-1推送至栈顶0x03iconst_0将int型0推送至栈顶0x04iconst_1将int型1推送至栈顶0x05iconst_2将int型2推送至栈顶0x06iconst_3将int型3推送至栈顶0x07iconst_4将int型4推送至栈顶0x0...
上滑加载中
推荐直播
-
华为云码道Skill实战与极速交付,智能开发全链路实战2026/07/22 周三 19:00-21:00
王一男-华为云码道产品规划专家;李炎-华为云码道产品专家;姜浩-华为云HCDG核心组成员
直播深度解读华为云码道6月产品新特性,从Skill市场安装专家技能,带你零距离体验从需求,开发,审查,重构全链路闭环的开发过程。从零构建并交付一个完整项目,让您体验从代码提交到服务上线的“极速”之旅。
回顾中 -
聚开发者之力,创具身新未来2026/07/23 周四 15:00-17:00
张豪杰/程文/王军/刘新春/黄钦开 /张晓天
本次华为云具身智能开发平台CloudRobo培训面向具身智能开发者,带您全流程体验机器人本体R2C小时级接入、环境重建与轨迹生成仿真数据生产、PB级数据管理、数据评测、模型训推、强化学习和Benchmark一键评测等功能,并体验业界主流具身模型应用。
回顾中
热门标签