![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java
文章平均质量分 58
疏雨过风林破
这个作者很懒,什么都没留下…
展开
-
java反射机制及其应用
Java反射机制是在运行状态中,对任意一个类都能够知道这个类的所有属性和方法;对于任意一个对象都能够调用它的任意一个方法。这种动态获取信息和动态调用对象方法的功能称为Java语言的反射机制。 类的反射机制中类有Class对应,方法有Method对应,属性由Field对应。反射机制的功能在运行中分析类的功能。在运行时判断任意一个对象所属的类;在运行时构造任意一个类的对象;在运行时...原创 2018-03-16 17:44:54 · 301 阅读 · 0 评论 -
单例模式的写法及破坏单例模式的方法
单例模式的五种写法1)懒汉式(线程安全) 2)DCL(双重校验锁) 3)饿汉式:多线程安全 4)登记式/静态内部类(按需加载)public class Singleton { private Singleton(){} /**懒汉式 * 缺点:每次通过属性instance得到Singleton的实例,都会试图加上一个同步锁,而加锁是一个非常耗时的操作,在没有...原创 2018-08-20 21:53:01 · 326 阅读 · 0 评论 -
类加载器
类加载器的种类类加载器用于实现类的加载动作,每一个类加载器都有一个独立的类名称空间。 绝大部分java程序都会使用一下三种系统提供的类加载器: 1)启动类加载器(Bootstrap ClassLoader) 负责将存放在< JAVA_HOME>\lib目录中的并且被虚拟机识别的类库加载到虚拟机内存中; 2)扩展类加载器(Extension ClassLoader) 负责加...原创 2018-08-20 15:53:29 · 164 阅读 · 0 评论 -
类变量和类初始化
类的初始化当遇到new、getstatic、putstatic、invokestatic这四条字节码指令时,如果类没有进行初始化,则需要初始化。 这四条指令什么时候生成呢? 1)使用new关键字实例化对象的时候; 2)读取或者设置一个类的静态字段的时候(被final修饰、已在编译期把结果放入常量池的静态字段除外); 3)调用一个类的静态方法的时候使用java.lang.reflec...原创 2018-08-18 17:44:42 · 1115 阅读 · 0 评论 -
ReentrantLock的实现原理
了解ReentrantLock的实现原理之前先梳理一下它所关联的知识点:首先ReentrantLock是基于AbstractQueuedSynchronizer的,AbstractQueuedSynchronizer是此锁同步控制的基础,使用AQS的状态来表示持有该锁的数量。AbstractQueuedSynchronizer中的等待队列是CLS队列锁的变种CLS锁是一种基于链表的高性能...原创 2018-06-07 17:51:59 · 702 阅读 · 0 评论 -
Java锁机制
synchronized关键字synchronized是一种同步锁。它修饰的对象有以下几种:一个代码块,被修饰的代码块称为同步语句块,作用的对象是调用这个代码块的对象; 一个方法,被修饰的方法称为同步方法,其作用的范围是整个方法,作用的对象是调用这个方法的对象; 一个静态的方法,其作用的范围是整个静态方法,作用的对象是这个类的所有对象; 一个类,其作用的范围是synchronize...原创 2018-06-12 17:40:47 · 540 阅读 · 1 评论 -
Hashmap源码解析(jdk1.8)及面试问题
Hashmap源码分析import java.io.IOException;import java.io.InvalidObjectException;import java.io.Serializable;import java.lang.reflect.ParameterizedType;import java.lang.reflect.Type;import java.ut...原创 2018-04-19 12:21:40 · 1349 阅读 · 0 评论 -
队列——数组存储结构JAVA
/** * 基于数组的队列(循环队列) * 队空判断:front == rear * 队满判断:(rear+1) % maxsize == front * 队头指针进1:front = (front+1)%maxsize * 队尾指针进1:rear = (rear+1)%maxsize * 队列元素个数:(rear-front+maxsize)%maxsize*/public cl...原创 2018-04-11 09:57:24 · 299 阅读 · 0 评论 -
Java——String的equals和==的区别
先贴代码 String s1="abc"+"def"; String s2=new String(s1); String s3 = s1; System.out.println("s1: "+s1); System.out.println("s2: "+s2); System.out.printl...原创 2018-03-21 11:27:19 · 175 阅读 · 0 评论 -
KMP字符串匹配算法过程原理
KMP算法是无回溯的字符串匹配算法此算法的关键是求next(j); 若设在进行某一趟匹配比较时在模式P的第j位失配,如果j>0,那么在下一趟比较时模式串P的起始比较位置是next[j],目标串T的指针不回溯,仍指向上一趟失配的字符;如果j=0,则目标串指针T进一,模式串指针P回到p0p0p_0,继续进行下一趟匹配比较。知道了next数组怎么使用后,再介绍KMP算法的原理。...原创 2018-03-30 16:27:52 · 1896 阅读 · 0 评论 -
Java内存模型、先行发生原则
由于计算机的存储设备和处理器的运算速度有几个数量级的差距,所以计算机系统不得不加入一层读写速度尽可能接近处理器运算速度的高速缓存来作为内存与处理器之间的缓冲。但这引入了新问题:缓存一致性为了使得处理器内部的运算单元能尽量被充分利用,处理器可能会对输入代码进行乱序执行优化,类似的java虚拟机的即时编译器中也有类似的指令重排序优化。java内存模型java内存模型可屏蔽掉各种硬件和操作...原创 2018-08-23 18:26:02 · 325 阅读 · 0 评论