Java进阶
文章平均质量分 96
系统讲解注解、反射、泛型、APT、JVM、多线程等Java进阶知识。
我赌一包辣条
纸上得来终觉浅,绝知此事要躬行。
展开
-
浅析Java 中的动态代理
在之前的一篇文章《静态代理这么用?聊一聊ViewPagerIndicator重构的一些经验》中详细的介绍了 java 中的静态代理,并且使用静态代理对IndicatorView进行了重构。静态代理的优点不必多说,它可以让代码具有扩展性,也可以让代码解耦。但在现实开发中,静态代理有时候也存在很多弊端,列举如下:当接口需要增加、删除、修改方法时,被代理类与代理类都需要修改,不易维护。由于代理类要实现与被代理类一致的接口,当有多个类需要被代理时,会存在以下问题:如果让代理类实现所有被代理类的接口,这样会原创 2021-08-22 11:51:55 · 272 阅读 · 0 评论 -
Java并发系列番外篇:ThreadLocal原理其实很简单
多线程并发是Java语言中非常重要的一块内容,同时,也是Java基础的一个难点。说它重要是因为多线程是日常开发中频繁用到的知识,说它难是因为多线程并发涉及到的知识点非常之多,想要完全掌握Java的并发相关知识并非易事。也正因此,Java并发成了Java面试中最高频的知识点之一。本系列文章将从Java内存模型、volatile关键字、synchronized关键字、ReetrantLock、Atomic并发类以及线程池等方面来系统的认识Java的并发知识。通过本系列文章的学习你将深入理解volatile关键字原创 2021-07-19 00:23:36 · 221 阅读 · 1 评论 -
Java并发系列终结篇:彻底搞懂Java线程池的工作原理
多线程并发是Java语言中非常重要的一块内容,同时,也是Java基础的一个难点。说它重要是因为多线程是日常开发中频繁用到的知识,说它难是因为多线程并发涉及到的知识点非常之多,想要完全掌握Java的并发相关知识并非易事。也正因此,Java并发成了Java面试中最高频的知识点之一。本系列文章将从Java内存模型、volatile关键字、synchronized关键字、ReetrantLock、Atomic并发类以及线程池等方面来系统的认识Java的并发知识。通过本系列文章的学习你将深入理解volatile关键字原创 2021-07-10 17:05:53 · 355 阅读 · 1 评论 -
深入理解Java线程的等待与唤醒机制(二)
本文已参与好文召集令活动,点击查看:后端、大前端双赛道投稿,2万元奖池等你挑战!多线程并发是Java语言中非常重要的一块内容,同时,也是Java基础的一个难点。说它重要是因为多线程是日常开发中频繁用到的知识,说它难是因为多线程并发涉及到的知识点非常之多,想要完全掌握Java的并发相关知识并非易事。也正因此,Java并发成了Java面试中最高频的知识点之一。本系列文章将从Java内存模型、volatile关键字、synchronized关键字、ReetrantLock、Atomic并发类以及线程池等方面来系原创 2021-07-03 19:15:43 · 351 阅读 · 2 评论 -
深入理解Java线程的等待与唤醒机制(一)
多线程并发是Java语言中非常重要的一块内容,同时,也是Java基础的一个难点。说它重要是因为多线程是日常开发中频繁用到的知识,说它难是因为多线程并发涉及到的知识点非常之多,想要完全掌握Java的并发相关知识并非易事。也正因此,Java并发成了Java面试中最高频的知识点之一。本系列文章将从Java内存模型、volatile关键字、synchronized关键字、ReetrantLock、Atomic并发类以及线程池等方面来系统的认识Java的并发知识。通过本系列文章的学习你将深入理解volatile关键字原创 2021-07-02 01:12:02 · 374 阅读 · 0 评论 -
这一次,彻底搞懂Java并发包中的Atomic原子类
多线程并发是Java语言中非常重要的一块内容,同时,也是Java基础的一个难点。说它重要是因为多线程是日常开发中频繁用到的知识,说它难是因为多线程并发涉及到的知识点非常之多,想要完全掌握Java的并发相关知识并非易事。也正因此,Java并发成了Java面试中最高频的知识点之一。本系列文章将从Java内存模型、volatile关键字、synchronized关键字、ReetrantLock、Atomic并发类以及线程池等方面来系统的认识Java的并发知识。通过本系列文章的学习你将深入理解volatile关键字原创 2021-06-26 15:33:42 · 529 阅读 · 0 评论 -
这一次,彻底搞懂Java中的ReentranLock实现原理
多线程并发是Java语言中非常重要的一块内容,同时,也是Java基础的一个难点。说它重要是因为多线程是日常开发中频繁用到的知识,说它难是因为多线程并发涉及到的知识点非常之多,想要完全掌握Java的并发相关知识并非易事。也正因此,Java并发成了Java面试中最高频的知识点之一。本系列文章将从Java内存模型、volatile关键字、synchronized关键字、ReetrantLock、Atomic并发类以及线程池等方面来系统的认识Java的并发知识。通过本系列文章的学习你将深入理解volatile关键字原创 2021-06-19 23:20:04 · 1387 阅读 · 1 评论 -
这一次,彻底搞懂Java中的synchronized关键字
多线程并发是Java语言中非常重要的一块内容,同时,也是Java基础的一个难点。说它重要是因为多线程是日常开发中频繁用到的知识,说它难是因为多线程并发涉及到的知识点非常之多,想要完全掌握Java的并发相关知识并非易事。也正因此,Java并发成了Java面试中最高频的知识点之一。本系列文章将从Java内存模型、volatile关键字、synchronized关键字、ReetrantLock、Atomic并发类以及线程池等方面来系统的认识Java的并发知识。通过本系列文章的学习你将深入理解volatile关键字原创 2021-06-14 17:21:44 · 1681 阅读 · 1 评论 -
这一次,彻底搞懂Java内存模型与volatile关键字
多线程并发是Java语言中非常重要的一块内容,同时,也是Java基础的一个难点。说它重要是因为多线程是日常开发中频繁用到的知识,说它难是因为多线程并发涉及到的知识点非常之多,想要完全掌握Java的并发相关知识并非易事。也正因此,Java并发成了Java面试中最高频的知识点之一。本系列文章将从Java内存模型、volatile关键字、synchronized关键字、ReetrantLock、Atomic并发类以及线程池等方面来系统的认识Java的并发知识。通过本系列文章的学习你将深入理解volatile关键字原创 2021-05-30 00:04:35 · 249 阅读 · 0 评论 -
Java进阶--Java中的泛型详解
Java泛型是在JDK1.5中引进来的一个概念。泛型意为泛化的参数类型,英文为**Generics **,翻译过来其实就是通用类型的意思。泛型在平时开发中经常用到,例如常用的集合类、Class类等都是JDK给我们提供的泛型类,更多的时候我们还会使用自定义泛型。可见,泛型在Java体系中还是一个很重要的知识。那么,本篇文章我们就来系统的学习一下Java的泛型。一、为什么要引入泛型上边已经提到,泛型是在JDK 1.5引进来的一个概念。我们知道,现在声明一个List集合是需要指定List的泛型的,指定了Lis原创 2021-01-16 22:12:15 · 943 阅读 · 1 评论 -
Java进阶--深入理解Java的反射机制
Java原创 2021-01-14 23:53:35 · 579 阅读 · 1 评论 -
Java进阶--探索Java虚拟机的类加载机制
我们知道Java语言是一门可以跨平台执行的程序语言。之所以能实现跨平台这一特性,都归根于Java虚拟机。Java虚拟机通过运行Java字节码屏蔽了系统平台的差异。在初学Java的时候相信大家都使用过javac的命令去编译Java文件,通过javac命令会编译成一个.class的字节码文件。Java虚拟机所能识别的就是字节码文件。在Java程序执行之前,虚拟机必须要将执行程序所需要的类库字节码以及程序代码的字节码先加载到虚拟机。那么,今天我们就来深入了解一下JVM加载字节码的这个过程。...原创 2020-12-25 00:45:24 · 514 阅读 · 0 评论 -
Java进阶--编译时注解处理器(APT)详解
上篇文章我们使用注解+反射实现了一个仿ButterKnife功能的示例。考虑到反射是在运行时完成的,多少会影响程序性能。因此,ButterKnife本身并非基于注解+反射来实现的,而是用Annotation Processor在编译时处理注解的。Annotation Processor是javac的一个工具,它用来在编译时扫描和处理注解。 一、了解Annotation Processor 自定......原创 2019-08-24 03:18:44 · 32169 阅读 · 14 评论 -
Java进阶--Java注解及其实例应用
Java注解在我们项目开发 中是非常常见的。比如经常用到的几种java内置的注解: @Override,表示当前的方法定义将覆盖超类中的方法。 @Deprecated,表示当前方法即将废弃,不推荐使用。 @SuppressWarnings,表示忽略编译器的警告信息。对于上面几个注解想必大家都不会陌生。除此之外,我们还经常在一些第三方框架中看到一些自定义注解......原创 2018-08-25 18:34:47 · 2341 阅读 · 1 评论 -
Java进阶--深入理解Java中的字符串(二)
上篇文章我们深入分析了String的一些特性,在对String字符串拼接的分析中,我们用StringBuilder做了对比,从中认识到了StringBuilder在字符串操作中所表现出来的优秀性能。而提到StringBuilder又不得不提StringBuffer。本篇文章我们就来深入的认识一下StringBuilder和StringBuffer。......原创 2020-09-12 04:31:10 · 184 阅读 · 0 评论 -
Java进阶--深入理解Java中的字符串(一)
初学Java时我们已经知道Java中可以分为两大数据类型,分别为基本数据类型和引用数据类型。而在这两大数据类型中有一个特殊的数据类型String,String属于引用数据类型,但又有区别于其它的引用数据类型。可以说它是数据类型中的一朵奇葩。那么,本篇文章我们就来深入的认识一下Java中的字符串。一、String的内存分配方式我们知道,实例化一个字符串可以通过两种方法来实现,第一种最常用的是通过字面量赋值的方式来实例化字符串,另一种是通过构造方法的方式来实例化字符串。代码如下: String str1=原创 2020-09-08 02:08:20 · 499 阅读 · 1 评论 -
Java进阶--Java垃圾回收机制全面解析
提起Java的垃圾回收机制大家应该都不陌生。它不仅是面试的常客,也是Java体系中相当重要的一块知识。深入理解Java的GC机制,有助于我们在开发中提高程序的性能。本篇文章将对JVM的垃圾回收机制进行深入分析,同时还会带大家认识众多垃圾回收器的特性。一、GC机制概述在《温故知新–JVM运行时内存区域详解》这篇文章中我们对JVM的运行时内存区域进行了详细的分析。我们知道对象的创建是由JVM完成的,在对象创建的时候JVM会在Java堆中开辟一块空间用来存储这个对象。而当对象“死亡”的时候,同样是由JVM来处原创 2020-09-19 23:51:18 · 4744 阅读 · 1 评论 -
Java进阶--Java运行时内存区域详解
Java内存分配是Java基础中非常重要的一部分内容,深入理解JVM的内存分配机制将有助于我们解决开发中遇到的很多问题。同时,内存分配这一块也是面试常客。笔者作为面试官也问过不少内存分配的问题,但令笔者惊讶的是不少三五年经验的面试者对于这块内容的回答也是含糊其辞,显然没有完全搞明白。那么本节内容我们就来系统的回顾一下Java中的内存分配机制。JVM内存分配概述首先,我们应该明白一点,JVM并不是单一的存在,在Java二十多年的发展史中曾经涌现出了许多优秀的虚拟机,如大家耳熟能详的HotSpot虚拟机就是原创 2020-09-04 03:08:15 · 1428 阅读 · 0 评论