- 文章首发于:Java并发编程(四)— 死锁的发生与避免 前言 上一篇我们介绍了如何通过synchronized 来加锁保护资源。但是,不当的加锁方式可能就会导致死锁。 死锁发生的场景 最典型的就是哲学家问题, 场景:5个哲学家,5跟筷子,5盘意大利面,大家围绕桌子而坐,进行思考与进食活动。 哲学家的活动描述: 哲学家除了吃面、还要思考、所以要么放下左右手筷子进... 文章首发于:Java并发编程(四)— 死锁的发生与避免 前言 上一篇我们介绍了如何通过synchronized 来加锁保护资源。但是,不当的加锁方式可能就会导致死锁。 死锁发生的场景 最典型的就是哲学家问题, 场景:5个哲学家,5跟筷子,5盘意大利面,大家围绕桌子而坐,进行思考与进食活动。 哲学家的活动描述: 哲学家除了吃面、还要思考、所以要么放下左右手筷子进...
- 文章目录 JavaConfig@ComponentScan@Import@Conditional@ConfigurationProperties与@EnableConfigurationProperties组合注解总结 上一篇我们介绍了 Spring中Bean的生命周期,这一篇我们接着学习在Spring Boot中的一些常用注解。 JavaConfi... 文章目录 JavaConfig@ComponentScan@Import@Conditional@ConfigurationProperties与@EnableConfigurationProperties组合注解总结 上一篇我们介绍了 Spring中Bean的生命周期,这一篇我们接着学习在Spring Boot中的一些常用注解。 JavaConfi...
- 前言 今天来学习下与JVM垃圾收集机制相关的一些基本概念。 如何判断对象是否存活 垃圾收集器首要的任务的任务就是判断哪些对象是存活的,哪些对象已经死去了(这里死去的意思是对象不再被任何途径使用)。 引用计数算法 引用计数算法是在对象中添加一个引用计数器,每当有一个地方引用它时,计数器值就加一;当引用失效时,计数器值就减一;任何时刻计数器为零的对象就是不可能被使... 前言 今天来学习下与JVM垃圾收集机制相关的一些基本概念。 如何判断对象是否存活 垃圾收集器首要的任务的任务就是判断哪些对象是存活的,哪些对象已经死去了(这里死去的意思是对象不再被任何途径使用)。 引用计数算法 引用计数算法是在对象中添加一个引用计数器,每当有一个地方引用它时,计数器值就加一;当引用失效时,计数器值就减一;任何时刻计数器为零的对象就是不可能被使...
- 专栏系列文章 第二篇:原子类的说明与使用第三篇:Lock的学习与使用第四篇:走近CopyOnWriteArrayList第五篇:HashMap的源码分析第六篇:走近ConcurrentHashMap(JDK1.8)第七篇:ConcurrentHashMap(JDK1.8)扩容的详细介绍以及多线程测试第八篇:链表的学习:链表的头插法和尾插法第九篇:队列的学习,用数组和链... 专栏系列文章 第二篇:原子类的说明与使用第三篇:Lock的学习与使用第四篇:走近CopyOnWriteArrayList第五篇:HashMap的源码分析第六篇:走近ConcurrentHashMap(JDK1.8)第七篇:ConcurrentHashMap(JDK1.8)扩容的详细介绍以及多线程测试第八篇:链表的学习:链表的头插法和尾插法第九篇:队列的学习,用数组和链...
- 文章目录 一些基本概念数据类型基本数据类型引用数据类型 堆和栈栈中存什么?堆中存什么?Java中的参数传递时传值?还是传引用? 为什么要把堆和栈区分出来呢? 运行时数据区域1. 程序计数器2. Java虚拟机栈3. 本地方法栈4.Java堆新生代老年代持久代 5.方法区6. 运行时常量池7.直接内存 面试的几个问题总结参考 一些基本概念 数据类型 ... 文章目录 一些基本概念数据类型基本数据类型引用数据类型 堆和栈栈中存什么?堆中存什么?Java中的参数传递时传值?还是传引用? 为什么要把堆和栈区分出来呢? 运行时数据区域1. 程序计数器2. Java虚拟机栈3. 本地方法栈4.Java堆新生代老年代持久代 5.方法区6. 运行时常量池7.直接内存 面试的几个问题总结参考 一些基本概念 数据类型 ...
- 代理 创建代理对象 要想创建一个代理对象,需要使用Proxy类的newProxyInstance方法。这个方法有三个参数: 1. 一个类加载器,作为Java安全模型的一部分,对于系统类和从因特网上下载下来的类,可以使用 不同的类加载器。 2. 一个Class对象数组,每个元素都是需要实现的接口 3. 一个调用处理器。 使用代理可能出于很多原因,例如: 1... 代理 创建代理对象 要想创建一个代理对象,需要使用Proxy类的newProxyInstance方法。这个方法有三个参数: 1. 一个类加载器,作为Java安全模型的一部分,对于系统类和从因特网上下载下来的类,可以使用 不同的类加载器。 2. 一个Class对象数组,每个元素都是需要实现的接口 3. 一个调用处理器。 使用代理可能出于很多原因,例如: 1...
- 什么是ASM ASM 是一个可以操作Java 字节码的框架。可以读取/修改class中的字节码。ASM可以直接产生二进制class文件,也可以在类被加载Java虚拟机之前动态改变类行为,Java class被存储在严格格式定义的.class文件里,这些文件拥有足够的元数据来解析勒种的所有元素:类名称, 方法,属性以及Java字节码(指令)。ASM从类文件中读入信息后,... 什么是ASM ASM 是一个可以操作Java 字节码的框架。可以读取/修改class中的字节码。ASM可以直接产生二进制class文件,也可以在类被加载Java虚拟机之前动态改变类行为,Java class被存储在严格格式定义的.class文件里,这些文件拥有足够的元数据来解析勒种的所有元素:类名称, 方法,属性以及Java字节码(指令)。ASM从类文件中读入信息后,...
- 前言 上一篇我们介绍了JVM07-虚拟机故障处理命令行工具。这一篇将继续介绍虚拟机故障处理之可视化故障处理工具JConsole工具。这个工具我们可以在JDK的bin目录下找到。 JConsole的介绍 JConsole是一款基于JMX(Java Management Extensions)的可视化监视、管理工具。它主要是通过JMX的MBean对系统进行信息收集和参... 前言 上一篇我们介绍了JVM07-虚拟机故障处理命令行工具。这一篇将继续介绍虚拟机故障处理之可视化故障处理工具JConsole工具。这个工具我们可以在JDK的bin目录下找到。 JConsole的介绍 JConsole是一款基于JMX(Java Management Extensions)的可视化监视、管理工具。它主要是通过JMX的MBean对系统进行信息收集和参...
- 定义 Optional是一个容器,它可以保存类型T的值,或者仅仅保存null,Optional类主要是用来避免空指针异常(NPE),其提供的一系列的方法配合Lambda表达式可以让代码更加清晰,语义化,以及避免了空指针异常的问题,这里要注意是避免空指针异常,而不是避免返回null。 Optional方法的使用 empty 方法返回一个不包含值的Optional实例... 定义 Optional是一个容器,它可以保存类型T的值,或者仅仅保存null,Optional类主要是用来避免空指针异常(NPE),其提供的一系列的方法配合Lambda表达式可以让代码更加清晰,语义化,以及避免了空指针异常的问题,这里要注意是避免空指针异常,而不是避免返回null。 Optional方法的使用 empty 方法返回一个不包含值的Optional实例...
- 前言 本节我们将要学习如何实现setter 注入。此博文是学习刘欣老师《从零开始造Spring》的学习笔记。 为啥要实现setter 注入 在上一篇博客中我们实现了Bean实例的生成,但是 Bean与Bean之间的依赖关系我们还没有实现,例如:当A类(Bean) 依赖于B类(Bean)时,我们就需要将B类的实例注入到A类中。常见的注入方式有三种: - sette... 前言 本节我们将要学习如何实现setter 注入。此博文是学习刘欣老师《从零开始造Spring》的学习笔记。 为啥要实现setter 注入 在上一篇博客中我们实现了Bean实例的生成,但是 Bean与Bean之间的依赖关系我们还没有实现,例如:当A类(Bean) 依赖于B类(Bean)时,我们就需要将B类的实例注入到A类中。常见的注入方式有三种: - sette...
- 文章首发于:https://mp.weixin.qq.com/s/sbkY-Il1AQ0Ew-b7LKc33g 前言 上一篇我们介绍了死锁的发生条件,以及避免死锁的方式。其中 破坏占有且等待的处理是,通过一个单例类一次性申请所有资源,直到成功。如while (!Allocator.getAllocator().applyResource(this, target))... 文章首发于:https://mp.weixin.qq.com/s/sbkY-Il1AQ0Ew-b7LKc33g 前言 上一篇我们介绍了死锁的发生条件,以及避免死锁的方式。其中 破坏占有且等待的处理是,通过一个单例类一次性申请所有资源,直到成功。如while (!Allocator.getAllocator().applyResource(this, target))...
- 上一篇我们介绍了ArrayList的相关源码,这篇我们将了解一下fail-fast机制的相关知识 fail-fast的简介fail-fast的相关示例fail-fast的解决办法 fail-fast的原理解决fail-fast的原理 fail-fast的简介 fail-fast机制是java 集合的一种错误机制。 当多个线程对同一个集合的内容进行操作时,就会产生fai... 上一篇我们介绍了ArrayList的相关源码,这篇我们将了解一下fail-fast机制的相关知识 fail-fast的简介fail-fast的相关示例fail-fast的解决办法 fail-fast的原理解决fail-fast的原理 fail-fast的简介 fail-fast机制是java 集合的一种错误机制。 当多个线程对同一个集合的内容进行操作时,就会产生fai...
- 摘要 并发编程世界里,由于CPU缓存导致的可见性问题,线程切换导致的原子性问题,以及编译器重排序导致的有序性问题是并发编程Bug的根源。 正文 可见性 一个线程对共享变量的修改。另外一个线程能够立刻看到,我们称之为可见性。共享变量指的是存放在堆内存,由所有线程所共享的变量。比如:实例变量,静态变量。 如图所示: 共享变量V可以由线程A和线程B同时操作,线程A和... 摘要 并发编程世界里,由于CPU缓存导致的可见性问题,线程切换导致的原子性问题,以及编译器重排序导致的有序性问题是并发编程Bug的根源。 正文 可见性 一个线程对共享变量的修改。另外一个线程能够立刻看到,我们称之为可见性。共享变量指的是存放在堆内存,由所有线程所共享的变量。比如:实例变量,静态变量。 如图所示: 共享变量V可以由线程A和线程B同时操作,线程A和...
- 这一章,我们对HashMap进行学习。 HashMap介绍 HashMap是一个散列表,它存储的内容是键值对(key-value)映射。 HashMap继承于AbstractMap,实现了Map,Cloneable,java.io.Serializable接口 HashMap的实现不是同步的,这意味着它是线程不安全的。它的key、value都可以为null,此外... 这一章,我们对HashMap进行学习。 HashMap介绍 HashMap是一个散列表,它存储的内容是键值对(key-value)映射。 HashMap继承于AbstractMap,实现了Map,Cloneable,java.io.Serializable接口 HashMap的实现不是同步的,这意味着它是线程不安全的。它的key、value都可以为null,此外...
- 泛型程序设计 简要介绍 类型变量使用大写形式,且比较短,在Java库中,使用变量E表示集合的元素类型,K和V分别表示表的关键字与值得类型。Object 表示”任意类型”程序清单使用了Pair类,静态的minmax方法遍历了数组并同时计算出最大值和最小值。它用一个Pair对象返回了两个结果。compareTo 方法只有 Comparable 接口有该方法,所以我们要将... 泛型程序设计 简要介绍 类型变量使用大写形式,且比较短,在Java库中,使用变量E表示集合的元素类型,K和V分别表示表的关键字与值得类型。Object 表示”任意类型”程序清单使用了Pair类,静态的minmax方法遍历了数组并同时计算出最大值和最小值。它用一个Pair对象返回了两个结果。compareTo 方法只有 Comparable 接口有该方法,所以我们要将...
上滑加载中
推荐直播
-
华为云码道 × 仓颉编程:工程化AI编码探索2026/05/27 周三 19:00-21:00
刘俊杰-华为云仓颉语言专家/李炎-华为云码道技术专家/王智鹏-OpenCangjie开源社区发起人
本场直播围绕华为云仓颉语言与华为云码道的深度结合,展示华为云智能编程从零基础到高效落地的完整生态能力。以华为云码道为引擎,仓颉语言为载体,带给大家日常提效、趣味创新到极速量产的开发体验。
回顾中 -
一个AI团队帮你写代码:华为云码道Agent Space实战2026/06/25 周四 19:00-21:00
张翰文-华为云码道工程师/郭英旭-青软创新科技集团股份有限公司 软件架构师
本场直播聚焦华为云码道Agent Space两大模式:研发办公、代码开发,亲身体验从需求到代码的AI自动化能力。实操演示基于华为 CodeArts CLI,依托 OpenSpec 规格体系从零搭建业务项目。
回顾中
热门标签