JAVA基础及JVM原理
文章平均质量分 91
JAVA基础
摆烂的小趴菜
写个博客,记记笔记。
展开
-
了解Java线程池的原理和监控
了解Java线程池的原理和监控原创 2022-10-24 22:04:05 · 3502 阅读 · 0 评论 -
SpringMVC简介
MVC(model view control)本质上是一种设计模式,而在我们的web项目中,spring通过这种设计模式管理了我们的项目,即SpringMVC。 SpringMVC 简单介绍 SpringMVC 框架是以请求为驱动,围绕 Servlet 设计,将请求发给控制器,然后通过模型对象,分派器来展示请求结果视图。其中核心类是 DispatcherServlet,它是一个 Servlet,顶层是实现的Servlet接口。 SpringMVC 使用 需要在 web.xml 中配置 Dispatcher原创 2021-08-17 22:32:05 · 89 阅读 · 0 评论 -
动态代理简介
在了解动态代理之前,我们首先要理解什么是代理模式,动态代理究竟要解决什么问题。因此,在介绍动态代理之前,先介绍下代理模式(静态代理) 静态代理 充分利用了Java的多态性,通过对接口的多个实现,另代理类与被代理类实现同一个接口,通过代理类调用接口方法,实现了调用被代理类(另一个实现类)的方法。 具体实现:在编写代理类时,在代理类中声明父类接口,构造方法入参即为父类接口。在主方法中创建被代理类对象时,会调用被代理类的构造器,此时通过java的多态性,将接口的实现类声明为父接口,并将其作为参数传入被代理类,这样原创 2021-08-15 19:29:31 · 191 阅读 · 0 评论 -
GC实现机制
一、GC实现机制-我们为什么要去了解GC和内存分配? 说道这个问题,我有一个简单的回答:在真实工作中的项目中,时不时的会发生内存溢出、内存泄露的问题,这也是不可避免的Bug,这些潜在的Bug在某些时候会影响到项目的正常运行,如果你的项目没有合理的进行业务内存分配,将会直接影响到的项目的并发处理,当垃圾收集成为系统达到更高并发量的瓶颈时,我们就需要对这些“自动化”的技术实施必要的监控和调节,而了解了GC实现机制则是我们一切监控和调节的前提。 二、GC实现机制-Java虚拟机将会在什么地方进行垃圾回收? 说起垃原创 2021-08-14 22:43:27 · 305 阅读 · 0 评论 -
Java锁的简介
Java中锁的分类 在读很多并发文章中,会提及各种各样锁如公平锁,乐观锁等等,这篇文章介绍各种锁的分类。介绍的内容如下: 公平锁/非公平锁 可重入锁 独享锁/共享锁 互斥锁/读写锁 乐观锁/悲观锁 分段锁 偏向锁/轻量级锁/重量级锁 自旋锁 上面是很多锁的名词,这些分类并不是全是指锁的状态,有的指锁的特性,有的指锁的设计,下面总结的内容是对每个锁的名词进行一定的解释。 公平锁/非公平锁 公平锁是指多个线程按照申请锁的顺序来获取锁。 非公平锁是指多个线程获取锁的顺序并不是按照申请锁的顺序,有可能后申请的线原创 2021-08-14 21:56:01 · 97 阅读 · 0 评论 -
Java8 中的 HashMap 和 ConcurrentHashMap 解析
Java8 HashMap Java8 对 HashMap 进行了一些修改,最大的不同就是利用了红黑树,所以其由 数组+链表+红黑树 组成。 根据 Java7 HashMap 的介绍,我们知道,查找的时候,根据 hash 值我们能够快速定位到数组的具体下标,但是之后的话,需要顺着链表一个个比较下去才能找到我们需要的,时间复杂度取决于链表的长度,为 O(n)。 为了降低这部分的开销,在 Java8 中,当链表中的元素超过了 8 个以后,会将链表转换为红黑树,在这些位置进行查找的时候可以降低时间复杂度为 O(l转载 2021-08-13 23:27:03 · 360 阅读 · 0 评论 -
Java7 中的 HashMap 和 ConcurrentHashMap 解析
阅读建议:四节基本上可以进行独立阅读,建议初学者可按照 Java7 HashMap -> Java7 ConcurrentHashMap -> Java8 HashMap -> Java8 ConcurrentHashMap 顺序进行阅读,可适当降低阅读门槛。 阅读前提:本文分析的是源码,所以至少读者要熟悉它们的接口使用,同时,对于并发,读者至少要知道 CAS、ReentrantLock、UNSAFE 操作这几个基本的知识,文中不会对这些知识进行介绍。Java8 用到了红黑树,不过本文不会转载 2021-08-13 22:56:54 · 89 阅读 · 0 评论 -
双亲委派机制
双亲委派 想要知道为什么要破坏双亲委派,就要先从什么是双亲委派说起,在此之前,我们先要了解一些概念: 对于任意一个类,都需要由加载它的类加载器和这个类本身来一同确立其在Java虚拟机中的唯一性。 什么意思呢?我们知道,判断一个类是否相同,通常用equals()方法,isInstance()方法和isAssignableFrom()方法。来判断,对于同一个类,如果没有采用相同的类加载器来加载,在调用的时候,会产生意想不到的结果: public class DifferentClassLoaderTest原创 2021-08-11 00:14:10 · 101 阅读 · 0 评论