java深入
文章平均质量分 70
can_chen
自知无知,永远求知!
展开
-
虚拟机类加载机制
当我们第一次new一个类的实例对象时,会先进行类的初始化操作,即完成静态变量赋值操作以及执行静态代码块;然后才是实例变量的赋值操作、普通代码块的执行、构造方法的执行;当我们第二次再new这个类的实例对象时,由于类已经被初始化过了,因此直接进行实例变量的赋值操作、普通代码块的执行、构造方法的执行。一个类的完整生命周期包含:加载、验证、准备、解析、初始化、使用、卸载七个阶段。类加载过程包含加载、验证、准备、解析、初始化五个阶段。3、关于静态常量的赋值时机。1、无类继承关系的情形。2、有类继承关系的情形。原创 2022-10-09 00:31:29 · 234 阅读 · 0 评论 -
JVM之垃圾收集器
新生代垃圾收集器Serial:单线程垃圾收集器,当垃圾收集线程工作时,会导致所有用户线程暂停运行(Stop The World);这会给用户带来很不好的体验,就相当于你的电脑每运行一小时就要暂停响应五分钟,是很不好的体验ParNew:是Serial垃圾收集器的多线程并行版本,多线程并行指的是支持多条垃圾回收线程同时运行,但是还是会产生Stop The World;只是可以缩短用户线程暂停响应的时间Parallel Scavenge:与ParNew垃圾收集器的区别在于关注点不同,ParNew关注的是如原创 2020-09-24 21:28:02 · 180 阅读 · 0 评论 -
Spring之面试常问的知识点
Spirng框架是非常重要的,是我们学习其他框架的一个基础,Spring中有很多重要的知识点,例如IOC、DI、AOP等,Spring的相关知识也是面试官常问的一个模块,所以我们有必要去了解一下Spring底层的一些实现原理,以下整理了Spring在面试中经常被问到的一些问题:1. Spring Bean 的作用域①singleton:单例作用域,默认,用到了单例模式创建bean②prototype:原型作用域,用到了原型模式创建bean③request:同一个 Http Request 共享一个原创 2020-08-06 22:11:00 · 336 阅读 · 0 评论 -
jdk1.8新特性——Optional类
Java 8增加了很多新的工具类,这里要介绍的就是在开发中非常有用的一个jdk8新增的工具类,java.util.Optional;Optional 类是一个可以为null的容器对象。如果值存在则isPresent()方法会返回true,调用get()方法会返回该对象。Optional 是个容器:它可以保存类型T的值,或者仅仅保存null。Optional提供很多有用的方法,这样我们就不用显式进行空值检测。总而言之,Optional 类的引入很好的解决空指针异常,给无数开发者带来便利。我们先看看下面的例子原创 2020-06-21 15:58:32 · 1088 阅读 · 2 评论 -
jdk1.8新特性——方法引用
方法引用主要是为了进一步简化Lambda表达式而生,采用的语法是双冒号 :: 写法,主要有以下几种情况:通过对象名引用成员方法public class Main { public static void testA(InterfaceA a){ a.show(); } public static void main(String[] args) { //Lambda表达式写法 testA(()->{ ClassA c=new ClassA(); c.say();原创 2020-06-21 15:54:04 · 670 阅读 · 0 评论 -
jdk1.8新特性——Stream流式编程
Stream流是Java 8新加入的最常用的流接口,位于java.util.stream包下(java.util.stream.Stream ),这并不是一个函数式接口,接口里面包含了很多抽象方法,这些方法对于Stream流的操作都是至关重要的,最常见的方法有filter、map、foreach、count、limit、skip、concat获取Stream流的两种方法所有的 Collection 集合都可以通过 stream 默认方法获取流,stream()方法是Collection集合接口的一个默原创 2020-06-21 15:51:07 · 2233 阅读 · 0 评论 -
jdk1.8新特性——Lambda表达式与函数式接口
书到用时方恨少,由于前几日在对接公司的一个项目中,发现该项目用到了很多jdk8的新特性,代码非常的简洁,但是却由于对jdk8的新特性了解甚少,以致很多代码逻辑都看不懂,所以花了些时间学习了jdk8比较重要的几个新特性,并在此进行总结!Lambda表达式在java集合中,通过forEach方法遍历集合就用到了jdk1.8的新特性:Lambda表达式与函数式接口先看forEach方法的源码:default void forEach(Consumer<? super T> action) {原创 2020-06-21 15:47:30 · 876 阅读 · 0 评论 -
Java内存区域
java与C++之间有一堵由内存动态分配和垃圾收集技术所围成的高墙,墙外面的人想进去,墙里面的人想出来——《深入理解java虚拟机》jvm内存模型(也叫java虚拟机运行时数据区)1.程序计数器(Program Counter Register):线程私有,可以看作是当前线程所执行的字节码的行号指示器。此内存区域是唯一一个在《Java虚拟机规范》中没有任何OutOfMemoryError情...原创 2020-03-14 14:48:19 · 303 阅读 · 0 评论 -
JVM的垃圾回收机制与垃圾回收算法
java与C++之间有一堵由内存动态分配和垃圾收集技术所围成的高墙,墙外面的人想进去,墙里面的人想出来—《深入理解java虚拟机》关于垃圾收集(Garbage Collection),需要完成的三件事情:① 哪些内存需要回收?②什么时候回收?③如何回收?如何判断对象是否存活?①引用计数法: 给对象增加一个引用计数器,每当有一个地方引用它时,计数器就+1;当引用失效时,计数器就-1;任何...原创 2020-03-17 01:59:17 · 372 阅读 · 1 评论