轻松理解-中高级java开发必知必会
Boo_T
you can,i can
展开
-
轻松理解 - 中高级java开发必知必会之 HashMap扩容机制
简单的介绍和源码分析 先看put操作的源码: public V put(K key, V value) { //判断当前Hashmap(底层是Entry数组)是否存值(是否为空数组) if (table == EMPTY_TABLE) { inflateTable(threshold);//如果为空,则初始化 } //判断key是否为空 ...原创 2018-11-01 20:03:47 · 166 阅读 · 0 评论 -
轻松理解-中高级java开发必知必会之 遇见最好的单例模式
什么是单例模式? 单例模式确保某个类只有一个实例,而且自行实例化并向整个系统提供这个实例。 很多教程里都写不好的写法和好的写法这里我只介绍好的写法; 使用语法糖是最好的写法,站在巨人的肩膀上会减少很多问题 一、我们使用java的类级内部类和静态初始化来保证单利模式的可行性: 上面的注释非常的清楚,主要的实现思想就是 1.类级的内部类,也就是静态的成员式内部类,该内部类的实例与外部类...原创 2018-11-05 10:59:17 · 208 阅读 · 1 评论 -
轻松理解-中高级java开发必知必会之 代理模式和装饰模式
代理模式和装饰模式分别是什么?有什么区别? 这两个设计模式看起来很像。对装饰器模式来说,装饰者(decorator)和被装饰者(decoratee)都实现同一个 接口。对代理模式来说,代理类(proxy class)和真实处理的类(real class)都实现同一个接口。此外,不论我们使用哪一个模式,都可以很容易地在真实对象的方法前面或者后面加上自定义的方法。 然而,实际上,在装饰器模式和...原创 2018-11-05 10:20:06 · 118 阅读 · 0 评论 -
轻松理解-中高级java开发必知必会之 Callable和Runable
相对于Runable,Callable的出镜率其实并不高,二者区别其实有限,下面是具体分析: 我们进行异步执行的时候,如果需要知道执行的结果,就可以使用callable接口,并且可以通过Future类获取到异步执行的结果信息。如果不关心执行的结果,直接使用runnable接口就可以了,因为它不返回结果,当然啦,callable也是可以的,我们不去获取Future就可以了。 相同点: 两者都是...原创 2018-11-05 09:45:52 · 147 阅读 · 0 评论 -
轻松理解-中高级java开发必知必会之 依赖注入和控制反转
关于Ioc和DI在网上随便一搜都有很多,但是很多人的讲解呢,就是让人感觉深奥,看多了反而有些摸不清了,下面是我找到的一个利于理解的讲解可以看下 Ioc (控制反转) 首先想说说Ioc(Inversion of Control,控制反转)。这是spring的核心,贯穿始终。所谓Ioc,对于spring框架来说,就是由spring来负责控制对象的生命周期和对象间的关系。这是什么意思呢,举个简单...原创 2018-11-02 20:15:26 · 103 阅读 · 0 评论 -
轻松理解 - 中高级java开发必知必会 之 掌握 java阻塞队(ArrayBlockingQueue与LinkedBlockingQueue)
在java开发中有些特殊场景下适用于阻塞队列如: 多线程环境中,通过队列可以很容易实现数据共享,比如经典的“生产者”和“消费者”模型中,通过队列可以很便利地实现两者之间的数据共享。假设我们有若干生产者线程,另外又有若干个消费者线程。如果生产者线程需要把准备好的数据共享给消费者线程,利用队列的方式来传递数据,就可以很方便地解决他们之间的数据共享问题。但如果生产者和消费者在某个时间段内,万一发生数据...原创 2018-11-01 09:37:19 · 354 阅读 · 0 评论 -
轻松理解-中高级java开发必知必会 之 三兄弟 HashMap ,HashTable ,ConcurrentHashMap
这段时间比较闲,可以把之前理解整理出来的文档不断地挪到这上面来 言归正传: 在日常工作中 你会选择hashMap 还是HashTable 还是ConcurrentHashMap 让他们先来自我介绍吧: 首先HashMap和HashTable都实现了Map接口,但是HashTable是基于Dictionary抽象类的 HashTable底层 是数组加链表实现,在线程上是安全的,但是在多线程...原创 2018-11-02 11:54:51 · 274 阅读 · 0 评论 -
轻松理解-中高级java开发必知必会 之 二分查找
二分查找也叫折半查找,二分查找就是将查找的键和子数组的中间键作比较,如果被查找的键小于中间键,就在左子数组继续查找;如果大于中间键,就在右子数组中查找,否则中间键就是要找的元素 但是这个查找必须要求数组中的数字是有顺序性的其实还有很多关于这个二分查找的变种算法,可以自行拓展下。 而且此算法在求职中有很大几率会被提问,所以需要掌握下 上代码: /** * 二分查找,找到该值在数组中的下标,...原创 2018-11-02 09:30:17 · 99 阅读 · 0 评论 -
轻松理解 - 中高级java开发必知必会之 冒泡排序
其实冒泡排序算法是非常经典的算法,放在中高级开发中其实不太合适,但是实际工作后很少碰到这个冒泡排序算法,渐渐地很多开发人员就开始遗忘了。 其核心思想就是将相临近的值比较大小,大的放后面小的放前面,从人文角度来考虑好像不是很厚道啊,但是目的要做排序嘛~~ 此算法求职面试的时候出镜率又是非常的高,所以写下来就当是巩固一下基础吧 直接上代码,遗忘的或者没有学过的可以自己debug下,代码很简单,没...原创 2018-11-01 20:54:08 · 164 阅读 · 0 评论 -
轻松理解-中高级java开发必知必会之 事务@Transactional
事务,项目的重要部分,不可或缺。解决事务问题至关重要,即使出现异常情况,它也可以保证数据的一致性。。 在spring中对事务的操作有@Transactional注解去实现或者写配置xml去实现,因为目前本人全面拥抱springboot框架,所以偏向于与注解的方式去实现; 一般我们会在server的实现类的头上加注@Transactional,将两个a,b连续操作的方法放入一个server方法中...原创 2018-11-05 15:35:51 · 372 阅读 · 0 评论