
Java基础
chenyang1010
通讯行业Java程序员
展开
-
ThreadLocal的原理及使用场景
ThreadLocal一般被用来存储线程变量的副本,各个线程存储数据都是独立的,互不产生影响。由于这种隔离性,使得线程之间没有资源竞争的关系,因此也不需要做线程同步。ThreadLocal主要提供一下集中方法:public T get() { } //取数据public void set(T value) { } //存数据public void remove() { } //删...原创 2018-10-18 09:33:26 · 629 阅读 · 0 评论 -
java 泛型详解
本文转自:https://blog.youkuaiyun.com/s10461/article/details/53941091概述泛型在java中有很重要的地位,在面向对象编程及各种设计模式中有非常广泛的应用。什么是泛型?为什么要使用泛型?泛型,即“参数化类型”。一提到参数,最熟悉的就是定义方法时有形参,然后调用此方法时传递实参。那么参数化类型怎么理解呢?顾名思义,就是将类型由原来的具体的类型...转载 2019-04-09 16:24:19 · 115 阅读 · 0 评论 -
java之注解Annotation
什么是java注解java注解是java代码的元数据,用来声明或者配置java代码,而不影响java代码的正常的运行逻辑。java注解的本质是一种特殊类型的接口,该接口继承Annotation接口。注解的分类java注解分为两种类型:元注解和自定义注解。元注解用来注解注解的注解,主要包含四个,@Target,@Retention,@Documented,@Inherited。@Docu...原创 2019-04-08 19:52:32 · 131 阅读 · 0 评论 -
comparable对象在数组中排序的判断
一值都对Comparable对象中compareTo方法的实现对其在数组中的排序不太明确,每次遇到这个问题,都会迟钝一会,今天终于看明白怎么判断了,希望下次再看见不再迟钝。// 如果返回1,则o1要排在o2后面,目前来看,只有o1大于o2的情况下,才会返回1// 因此,这个表达式的意思是o1大于o2的情况下o1排在o2后面,即升序public int compare(int o1, in...原创 2019-01-29 22:49:09 · 494 阅读 · 0 评论 -
HashMap扩容代码片段分析
HashMap扩容代码片段分析Hash扩容部分的代码,由于没有同步,可能发生循环链,导致查询出现严重问题1. 源代码void transfer(Entry[] newTable) { Entry[] src = table; //旧的Hash表赋给src int newCapacity = newTable.length; //获取新的hash表的大...原创 2018-11-05 22:37:08 · 495 阅读 · 0 评论 -
StringBuilder和StringBuffer的区别联系
之前刚开始接触java语言的时候,经常会记忆一下java工具类的特性,但是,时间长了,如果不温习这些知识,这种知识点的对比,很快会忘记。思考过这个问题,发现还是理解不够深刻,或者说是印象不太深刻,我觉得jdk的源码是一个可以让人深刻的东西,一起来看一下吧,so easy~1. 结论StringBuilder和StringBuffer都试用于大量字符串的拼接过程,其效率都高于String类,...原创 2018-11-05 14:00:55 · 113 阅读 · 0 评论 -
基于JDK的动态代理和基于CGLIB的代理异同
基于JDK的动态代理基于jdk的动态代理,底层是依赖java反射来实现增强逻辑织入到业务逻辑里面的。Spring AOP在目标累实现接口的情况下,默认采用JDK的动态代理方式进行目标类的代理。下面来看看JDK动态代理的原理:我们的目标类是Person,他实现了接口Voice,然后我们实现一个MyHandler,MyHandler持有Person,在调用invok的时候,利用反射机制先判断调用的...原创 2018-11-01 23:17:50 · 398 阅读 · 0 评论 -
TreeMap核心方法源码分析--基于红黑树的算法实现
我们知道,TreeMap是一个基于key有序的二叉查找树,其底层实现的原理是一颗红黑树。本文从源码的角度,分析TreeMap的最重要的几个方法,来对红黑树的原理作出讲解。红黑树的特性:1.所有节点不是红色就是黑色2.红色节点后面必须是黑色节点3.根节点必须是黑色节点4.叶子节点必须是黑色节点5.任意一个节点到叶子节点的黑色节点必须相同左旋方法 private void...原创 2018-10-29 22:58:18 · 206 阅读 · 0 评论 -
Thread的isInterrupted()和interrupted()的区别
isInterrupted()和interrupted()都是用来检测线程状态的方法从java的Thread的源码可以看出,interrupted()会清楚线程中断的状态位, 而isInterrupted()不会,他们内部都是调用的同一个方法,只不过传入的参数不太一样。public static boolean interrupted() { return curre...原创 2018-10-16 19:10:24 · 320 阅读 · 0 评论 -
java线程中timed和blocked两种状态的区别
今天出去参加一个卖货公司的interview,抱着学习的态度去看了一下,interviewer还是不错的,问的问题都在点上,让平时对java语言很自信的我,发现自己有些方面,其实理解有严重误区。希望这篇帖子能给到大家帮助。java线程的几种状态:new,runnable,running,blocked,waiting,timed_waiting,dead好了,问题来了,blocked和w...原创 2019-04-13 12:39:45 · 1000 阅读 · 0 评论