- 文章目录 前言类加载的过程类加载器何为双亲委派模型ClassLoader类的loadClass方法 双亲委派模型存在的问题解决办法以JDBC驱动管理为例 加载资源SpringFactoriesLoader详解 总结 前言 前面我们介绍了JavaConfig和常用的Annotation,这一篇文章我们来聊聊SpringFactoriesLoader,在... 文章目录 前言类加载的过程类加载器何为双亲委派模型ClassLoader类的loadClass方法 双亲委派模型存在的问题解决办法以JDBC驱动管理为例 加载资源SpringFactoriesLoader详解 总结 前言 前面我们介绍了JavaConfig和常用的Annotation,这一篇文章我们来聊聊SpringFactoriesLoader,在...
- 文章目录 前言对象创建1.类加载检查2.分配内存分配内存的方式内存分配的并发问题3.初始化零值4.设置对象头:5. 执行init方法; 对象内存布局对象头实例数据对齐填充 对象访问方式使用句柄访问使用直接指针访问下面举例说明: 总结参考 前言 上一篇我们介绍了JVM的内存区域布局,并且重点介绍了堆和栈的概念。,今天我们接着来学习JVM的对象创建过程... 文章目录 前言对象创建1.类加载检查2.分配内存分配内存的方式内存分配的并发问题3.初始化零值4.设置对象头:5. 执行init方法; 对象内存布局对象头实例数据对齐填充 对象访问方式使用句柄访问使用直接指针访问下面举例说明: 总结参考 前言 上一篇我们介绍了JVM的内存区域布局,并且重点介绍了堆和栈的概念。,今天我们接着来学习JVM的对象创建过程...
- 内部类的简介 内部类是定义在另一个类中的类。 内部类的使用场景 内部类方法可以访问该类定义所在的作用域中的数据,包括私有数据。内部类可以对同一个包中的其他类隐藏起来。当想要定义一个回调函数且不想大量编写代码是时,使用匿名内部类比较便捷 下面我们看一个简单程序 package com.jay.innerClass; import javax.swing.*; ... 内部类的简介 内部类是定义在另一个类中的类。 内部类的使用场景 内部类方法可以访问该类定义所在的作用域中的数据,包括私有数据。内部类可以对同一个包中的其他类隐藏起来。当想要定义一个回调函数且不想大量编写代码是时,使用匿名内部类比较便捷 下面我们看一个简单程序 package com.jay.innerClass; import javax.swing.*; ...
- 概述 今天接着学习设计模式,今天要学习的模式是代理模式。代理模式的应用场景有很多,例如:生活中的代购,明星的经纪人。 定义与结构 代理模式(Proxy)是一种设计模式,为其他对象提供一种代理以控制对这个对象的访问。 在软件开发中有个原则:就是开-闭原则,对新增开放,对修改关闭。尽量不要去修改已经写好的代码。如果需要可以增加一个代理类,来扩展目标代码。 实例 假... 概述 今天接着学习设计模式,今天要学习的模式是代理模式。代理模式的应用场景有很多,例如:生活中的代购,明星的经纪人。 定义与结构 代理模式(Proxy)是一种设计模式,为其他对象提供一种代理以控制对这个对象的访问。 在软件开发中有个原则:就是开-闭原则,对新增开放,对修改关闭。尽量不要去修改已经写好的代码。如果需要可以增加一个代理类,来扩展目标代码。 实例 假...
- 这一篇我们来学习一下JVM中的类加载过程。说到类的加载过程,我们需要先了解一下JVM中类的生命周期。在JVM中类的生命周期有七个阶段。分别是: 加载(Loading):加载是通过类加载器从不同的地方加载进二进制字节流,类加载器可以参考类加载器与双亲委派模型验证(Verification):验证阶段是为了确保Class文件的字节流中包含的信息是否符合《JVM虚拟机规范》... 这一篇我们来学习一下JVM中的类加载过程。说到类的加载过程,我们需要先了解一下JVM中类的生命周期。在JVM中类的生命周期有七个阶段。分别是: 加载(Loading):加载是通过类加载器从不同的地方加载进二进制字节流,类加载器可以参考类加载器与双亲委派模型验证(Verification):验证阶段是为了确保Class文件的字节流中包含的信息是否符合《JVM虚拟机规范》...
- Java异常机制学习&分析 处理错误 Java异常层次简要类图 何时声明受查异常 调用一个抛出受查异常的方法,例如, FileInputStream构造器程序运行过程中发现错误,并且利用throw语句抛出一个受查异常程序出现错误,例如,a[-1]=0会抛出一个ArrayIndexOutOfBoundsException这样的非受查异常。Java 虚拟机和... Java异常机制学习&分析 处理错误 Java异常层次简要类图 何时声明受查异常 调用一个抛出受查异常的方法,例如, FileInputStream构造器程序运行过程中发现错误,并且利用throw语句抛出一个受查异常程序出现错误,例如,a[-1]=0会抛出一个ArrayIndexOutOfBoundsException这样的非受查异常。Java 虚拟机和...
- ConcurrentLinkedQueue的定义 ConcurrentLinkedQueue是 非阻塞的单端队列,其是一个通过链表实现的并发安全的队列。是java中并发环境下性能最好的队列,它是使用非阻塞算法(CAS)来实现线程安全的。它采用先进先出的规则对节点进行排序,当我们添加一个元素时,它会添加到队列的尾部;当我们获取一个元素时,它会返回队列头部的元素。 Co... ConcurrentLinkedQueue的定义 ConcurrentLinkedQueue是 非阻塞的单端队列,其是一个通过链表实现的并发安全的队列。是java中并发环境下性能最好的队列,它是使用非阻塞算法(CAS)来实现线程安全的。它采用先进先出的规则对节点进行排序,当我们添加一个元素时,它会添加到队列的尾部;当我们获取一个元素时,它会返回队列头部的元素。 Co...
- 继承 this关键字的用途 引用隐式参数;调用该类其他的构造器。 super关键字的用途 调用超类的方法。调用超类的构造器。 多态 可以通过 is-a规则,它表明子类的每个对象也是超类的对象。例如,每个 经理都是雇员。因此,将Manager类设计为Employee类的子类是显而易见的,反之不然,并不是每一名雇员都是经理。 is-a 规则的另一种表述法是置... 继承 this关键字的用途 引用隐式参数;调用该类其他的构造器。 super关键字的用途 调用超类的方法。调用超类的构造器。 多态 可以通过 is-a规则,它表明子类的每个对象也是超类的对象。例如,每个 经理都是雇员。因此,将Manager类设计为Employee类的子类是显而易见的,反之不然,并不是每一名雇员都是经理。 is-a 规则的另一种表述法是置...
- 调试技巧 可以用下面的方法打印或记录任意变量的值 System.out.print("x="+x) 或者 Logger.getGlobal().info("x="+x)为每个类添加 main 方法,后期要删除单元测试日志代理是一个子类对象,他可以截获方法调用,并进行日志记录,然后调用超类中的方法,例如: 如果在调用Random类的nextDouble方法时出现... 调试技巧 可以用下面的方法打印或记录任意变量的值 System.out.print("x="+x) 或者 Logger.getGlobal().info("x="+x)为每个类添加 main 方法,后期要删除单元测试日志代理是一个子类对象,他可以截获方法调用,并进行日志记录,然后调用超类中的方法,例如: 如果在调用Random类的nextDouble方法时出现...
- 步骤一、下载安装包 a. 因为Java JDK区分32位和64位,所以安装之前需先判断一下我们操作系统为多少位·,命令如下: uname -a 解释:如果有x86_64就是64位的,没有就是32位的。后面是x686或x86_64则内核是64位的,i686或i386则内核是32位的。  ... 步骤一、下载安装包 a. 因为Java JDK区分32位和64位,所以安装之前需先判断一下我们操作系统为多少位·,命令如下: uname -a 解释:如果有x86_64就是64位的,没有就是32位的。后面是x686或x86_64则内核是64位的,i686或i386则内核是32位的。  ...
- 前言 上一篇我们介绍了在并发编程里面导致bug的三种问题,可见性问题,原子性问题,有序性问题。针对这三个问题,Java语言提供了Java内存模型(JMM)来解决这三种问题,主要是针对有序性和可见性问题。其本质上就是按需禁用缓存和编译优化。接下来我们就详细的阐述下。 Java内存模型介绍 Java 内存模型是一个很复杂的规范,本质上可以理解为:Java内存模型规范了... 前言 上一篇我们介绍了在并发编程里面导致bug的三种问题,可见性问题,原子性问题,有序性问题。针对这三个问题,Java语言提供了Java内存模型(JMM)来解决这三种问题,主要是针对有序性和可见性问题。其本质上就是按需禁用缓存和编译优化。接下来我们就详细的阐述下。 Java内存模型介绍 Java 内存模型是一个很复杂的规范,本质上可以理解为:Java内存模型规范了...
- 问题描述: 用import导入了一个MyEclipse项目,但里面的中文都出现了乱码。 解决方案: 方法一:将整个project设置编码UTF-8 【Window】——【Preferences】——【General】——【Workspace】——【Text file encoding】,将之前的【Default(GBK)】改为【Other:UTF-8】。 ... 问题描述: 用import导入了一个MyEclipse项目,但里面的中文都出现了乱码。 解决方案: 方法一:将整个project设置编码UTF-8 【Window】——【Preferences】——【General】——【Workspace】——【Text file encoding】,将之前的【Default(GBK)】改为【Other:UTF-8】。 ...
- 文章目录 前言一些基本的设置说明堆内存溢出Java栈内存异常方法区和运行时常量池溢出直接内存溢出内存泄露内存泄露的定义:解决办法 内存溢出的原因分析:线上内存溢出的处理方法总结 前言 上一篇我们介绍了JVM03–JVM垃圾收集机制的一些基本概念,这一篇介绍一下JVM中各种内存溢出(包括内存泄露)及其处理方法。 本文会按照JVM中内存划分来介绍各种内存... 文章目录 前言一些基本的设置说明堆内存溢出Java栈内存异常方法区和运行时常量池溢出直接内存溢出内存泄露内存泄露的定义:解决办法 内存溢出的原因分析:线上内存溢出的处理方法总结 前言 上一篇我们介绍了JVM03–JVM垃圾收集机制的一些基本概念,这一篇介绍一下JVM中各种内存溢出(包括内存泄露)及其处理方法。 本文会按照JVM中内存划分来介绍各种内存...
- 定义 装饰者模式也称为包装模式(Wrapper Pattern),属于结构型设计模式。 在不改变原类文件以及不使用继承的情况下,动态地将责任附加到对象中,从而实现动态扩展一个对象的功能。它通过创建一个包装对象,也就是装饰来包裹真实对象。 结构类图 角色 抽象组件(Component): 定义装饰方法的规范被装饰者(ConcreteComponent): Co... 定义 装饰者模式也称为包装模式(Wrapper Pattern),属于结构型设计模式。 在不改变原类文件以及不使用继承的情况下,动态地将责任附加到对象中,从而实现动态扩展一个对象的功能。它通过创建一个包装对象,也就是装饰来包裹真实对象。 结构类图 角色 抽象组件(Component): 定义装饰方法的规范被装饰者(ConcreteComponent): Co...
- 今天开始阅读Java集合源码了。重点掌握ArrayList,HashMap的源码 前置问题: HashMap的数据结构是什么?如何实现的。和HashTable,ConcurrentHashMap的区别ArrayList是如何实现的,ArrayList和LinkedList的区别?ArrayList如何实现扩容。 集合框架类图如下图所示: 接下来我们将按照这个... 今天开始阅读Java集合源码了。重点掌握ArrayList,HashMap的源码 前置问题: HashMap的数据结构是什么?如何实现的。和HashTable,ConcurrentHashMap的区别ArrayList是如何实现的,ArrayList和LinkedList的区别?ArrayList如何实现扩容。 集合框架类图如下图所示: 接下来我们将按照这个...
上滑加载中
推荐直播
-
华为云码道 × 仓颉编程:工程化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 规格体系从零搭建业务项目。
回顾中
热门标签