- 1 NIO Server端 1.1 多路复用开发一般步骤 //打开选择器 Selector selector = Selector.open(); //打开通到 ServerSocketChannel socketChannel = ServerSocketChannel.open(); //配置非阻塞模型 socketChannel.configureBlocki... 1 NIO Server端 1.1 多路复用开发一般步骤 //打开选择器 Selector selector = Selector.open(); //打开通到 ServerSocketChannel socketChannel = ServerSocketChannel.open(); //配置非阻塞模型 socketChannel.configureBlocki...
- 上篇我们分析了Java集合的总体类图,下面我们接着来具体探究一下相关的源码。 概要 Collection 简介 Collection 的定义 public interface Collection<E> extends Iterable<E>{} Collection是一个接口,是高度抽象的集合,其包含了集合的基本操作,如添加,删除... 上篇我们分析了Java集合的总体类图,下面我们接着来具体探究一下相关的源码。 概要 Collection 简介 Collection 的定义 public interface Collection<E> extends Iterable<E>{} Collection是一个接口,是高度抽象的集合,其包含了集合的基本操作,如添加,删除...
- 前言 上一篇我们介绍Java内存模型来处理有序性,可见性的问题。但是,还有一个原子性的问题,没有处理,那么针对原子性的问题我们该怎么处理呢?我们知道在并发编程中的原子性问题主要原因就是,一条高级语句可能会被分成多个CPU指令,在指令执行完之后发生了线程切换,中间状态被暴露造成原子性问题。 锁 现实生活中,我们用自己的锁来保护自己的财产,买门票来锁定演唱会的座位。 ... 前言 上一篇我们介绍Java内存模型来处理有序性,可见性的问题。但是,还有一个原子性的问题,没有处理,那么针对原子性的问题我们该怎么处理呢?我们知道在并发编程中的原子性问题主要原因就是,一条高级语句可能会被分成多个CPU指令,在指令执行完之后发生了线程切换,中间状态被暴露造成原子性问题。 锁 现实生活中,我们用自己的锁来保护自己的财产,买门票来锁定演唱会的座位。 ...
- 前言 前面几篇文章,我们学习了synchronized的相关知识,以及死锁的发生条件以及避免的方式,其中有一种破坏死锁的方式就是破坏不可抢占条件,通过synchronzied不能实现的,因为synchronized在申请资源的时候,如果申请不到就只能进入阻塞状态,啥都干不了,也不能中断。所以只能通过本期的主角lock 来处理。 lock 与synchronized ... 前言 前面几篇文章,我们学习了synchronized的相关知识,以及死锁的发生条件以及避免的方式,其中有一种破坏死锁的方式就是破坏不可抢占条件,通过synchronzied不能实现的,因为synchronized在申请资源的时候,如果申请不到就只能进入阻塞状态,啥都干不了,也不能中断。所以只能通过本期的主角lock 来处理。 lock 与synchronized ...
- 文章首发于: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))...
上滑加载中
推荐直播
-
昇腾AI算法挑战赛-核心算子如何优化?专家带你深度解析2025/11/17 周一 16:00-17:00
王老师 华为算子专家
昇腾AI算法挑战赛进阶赛战鼓催征!本期直播间,我们特邀华为算子专家王老师,为你深度剖析Matmul、wholereducesum等核心算子的底层原理与优化技巧,直击赛题核心。想提升代码效率、冲击更高排名?锁定直播,带你破局!
回顾中 -
AI编码实干派,“码”力全开2026/02/26 周四 15:00-16:30
谈宗玮/于邦旭/丁俊卿/陈云亮/王一男
【中国,深圳,2026年2月26日】,以“AI编码实干派,码力全开”为主题的华为云码道(CodeArts)代码智能体新春发布会在线上成功召开。华为云码道公测版正式发布,为开发者和企业提供具备工程化能力的智能编码解决方案。
回顾中 -
华为云码道-玩转OpenClaw,开启在线养虾模式2026/03/11 周三 19:00-20:00
刘昱,华为云高级工程师/谈心,华为云技术专家/李海仑,上海圭卓智能科技有限公司CEO
OpenClaw 火爆开发者圈,华为云码道最新推出 Skill ——开发者只需输入一句口令,即可部署一个功能完整的「小龙虾」智能体。直播带你玩转华为云码道,玩转OpenClaw
回顾中
热门标签