
源码
文章平均质量分 91
我不是臭弟弟
好吃懒做 无所不为
展开
-
Tomcat打破双亲委派
复习复习JVM类加载机制,再谈谈 Tomcat 的类加载器如何打破 Java 的双亲委托机制。 JVM 的类加载器 Java 的类加载,就是把字节码格式“.class”文件加载到 JVM 的方法区,并在 JVM 的堆区建立一个java.lang.Class对象的实例,用来封装 Java 类相关的数据和方法。那 Class 对象又是什么呢?你可以把它理解成业务类的模板,JVM 根据这个模板来创建具体业务类对象实例。 JVM 并不是在启动时就把所有的“.class”文件都加载一遍,而是程序在运行过程中用到了这个原创 2021-05-16 23:12:29 · 418 阅读 · 1 评论 -
Java中的锁
] 1.乐观锁 乐观锁与悲观锁是一种广义上的概念,体现了看待线程同步的不同角度。在Java和数据库中都有此概念对应的实际应用。 先说概念。对于同一个数据的并发操作,悲观锁认为自己在使用数据的时候一定有别的线程来修改数据,因此在获取数据的时候会先加锁,确保数据不会被别的线程修改。Java中,synchronized关键字和Lock的实现类都是悲观锁。 而乐观锁认为自己在使用数据时不会有别的线程修改数据,所以不会添加锁,只是在更新数据的时候去判断之前有没有别的线程更新了这个数据。如果这个数据没有被更新,当前线程转载 2020-11-08 22:21:51 · 122 阅读 · 1 评论 -
ArrayList是如何实现序列化的
从jdk源码中可以看出 /** * The array buffer into which the elements of the ArrayList are stored. * The capacity of the ArrayList is the length of this array buffer. Any * empty ArrayList with elementData == DEFAULTCAPACITY_EMPTY_ELEMENTDATA * w原创 2020-11-01 22:32:18 · 2390 阅读 · 0 评论 -
jdk源码学习——StringBuilder和StringBuffer源码分析
StringBuilder和StringBuffer源码分析前言javadoc小结分析类的声明成员变量看几个常见方法的不同实现StringBufferStringBuilderStringBuilder.toString()StringBuffer.toString()底层扩容机制两者对比总结思考 前言 StringBuilder和StringBuffer是两个容易混淆的概念,本文从源码入手,简单看二者的异同。 容易知道的是,这两者有一个是线程安全的,而且线程安全的那个效率低。 javadoc小结 java原创 2020-07-18 10:07:05 · 573 阅读 · 0 评论 -
jdk源码学习——AbstractStringBuilder类
类图结构 类的申明 1.默认访问控制修饰符,说明只能在包内使用,即只能在JDK内部使用,可能有人会问我创建一个java.lang包然后里面的类就可以使用AbstractStringBuilder类了,想法不错,但jkd不允许,会报SecurityException : Prohibited package name: java.lang。故这个类只是给StringBuffer和StringBuilder类使用的。 2.类名用abstract修饰说明是一个抽象类,只能被继承,不能直接创建对象。查了里面的方法原创 2020-07-17 20:08:15 · 248 阅读 · 0 评论 -
jdk源码学习——String类
String类String类String类属性String类构造函数String类的常用方法equalscompareTohashCodeconcatreplacetrimintern其他常用的简单方法总结 String类 String类被final所修饰,也就是说String对象是不可变量。String类实现了Serializable, Comparable, CharSequence接口。 Comparable接口有compareTo(String s)方法,CharSequence接口有length原创 2020-07-17 13:28:58 · 497 阅读 · 0 评论 -
jdk源码学习——你真的了解Object源码吗
前言 Object应该算是比较简单的源码了。Object是类层次结构的根,Java体系里面的每个类默认都有一个超类就是 Object。总之,所有对象,包含数组,都默认实现该类的方法。 主体框架 native关键字 因为 Object 类里面有很多地方都用到 native 关键字。我们先了解一下这家伙。native 关键字是 JNI(Java Native Interface)的重要体现。什么是 JNI ,JNI 是Java调用其他语言(c,c++) 的一种机制。native 关键字修饰的是方法,起声明作用原创 2020-07-17 00:26:53 · 183 阅读 · 0 评论 -
简单实用的IDEA搭建JDK1.8阅读环境
1、新建一个HelloWorld的java程序。 2、将JDK目录下的src.zip解压并将下面的文件夹放入新程序的src包下 3、如果启动程序报内存不足 File->Settings->Build,Execution,Deployment->Compiler->Build process heap size(Mbytes): 将 700 改为 1000) 4、Project Structure->Project Settings->Libraries下左上角有个+原创 2020-07-16 21:06:34 · 378 阅读 · 0 评论 -
为什么 ConcurrentHashMap 的读操作不需要加锁?
前言 我们知道,ConcurrentHashmap(1.8)这个并发集合框架是线程安全的,当你看到源码的get操作时,会发现get操作全程是没有加任何锁的,这也是这篇博文讨论的问题——为什么它不需要加锁呢? ConcurrentHashMap的简介 我想有基础的同学知道在jdk1.7中是采用Segment + HashEntry + ReentrantLock的方式进行实现的,而1.8中放弃了Segment臃肿的设计,取而代之的是采用Node + CAS + Synchronized来保证并发安全进行实现原创 2020-06-29 00:23:05 · 173 阅读 · 0 评论