jdk
玩名堂_
勤于求知,细于做事
展开
-
HashMap与HashTable的区别
首先,从JDK源码来看,HashMap和HashTable都实现了Map接口:可以看出,HashTable是从JDK1.0就有的,HashMap而是从JDK1.2才有的。二者实现的接口一致。因此,对外方法API也基本一致:内部存储方式也基本一致,都是邻接表形式:基本操作也基本一致,以put方法为例,都是先算Key的ha转载 2017-07-18 13:03:20 · 194 阅读 · 0 评论 -
Jdk1.8中的HashMap实现原理
转载自:http://blog.csdn.net/fjse51/article/details/53811465HashMap概述HashMap是基于哈希表的Map接口的非同步实现。此实现提供所有可选的映射操作,并允许使用null值和null键。此类不保证映射的顺序,特别是它不保证该顺序恒久不变。HashMap的数据结构在Java编程语言中,最基本的结构就是两种,一转载 2017-09-18 18:54:36 · 348 阅读 · 0 评论 -
位运算的威力
转载出处:http://blog.csdn.net/iukey/article/details/7195265一、有关位运算的基础知识总结位运算包括:&(与)、|(或)、^(异或)、~(取反)、>>(右移)、环境预设:32位机下面,int占2个字节,有符号int a = 11;int b = 1000;(a)2 = (00000000 00001011 )2转载 2017-09-20 17:15:51 · 382 阅读 · 0 评论 -
Java代码性能优化技巧
尽量指定类、方法的final修饰符Java编译器会寻找机会内联所有的final方法,内联对于提升Java运行效率作用重大,具体参见Java运行期优化。此举大概能够使性能平均提高50%。尽量重用对象特别是String对象的使用,出现字符串连接时应该使用StringBuilder/StringBuffer代替。尽可能使用局部变量及时关闭流:进行数据库连接、I/O流操作,原创 2017-11-18 12:48:41 · 706 阅读 · 0 评论 -
Java8特性详解 lambda表达式和StreamAPI
1. lambda表达式Java8最值得学习的特性就是Lambda表达式和Stream API,如果有python或者javascript的语言基础,对理解Lambda表达式有很大帮助lambda写的好可以极大的减少代码冗余,同时可读性也好过冗长的内部类,匿名类。先列举两个常见的简化(简单的代码同样好理解)创建线程 排序 lambda表达式配合Java8新特性Stre原创 2017-12-10 16:48:41 · 1518 阅读 · 0 评论 -
Java中RuntimeException和Exception的区别
在java的异常类体系中,Error和RuntimeException是非检查型异常,其他的都是检查型异常。所有方法都可以在不声明throws的情况下抛出RuntimeException及其子类 不可以在不声明的情况下抛出非RuntimeException 简单的说,非RuntimeException要自己写catch块处理掉。 1.RuntimeException今天摩根IT电面...转载 2018-02-08 21:35:13 · 10968 阅读 · 0 评论 -
java编程之美(一)
实践编程已经有足足6年多时间,也算是有一定经验,经常在工作中遇到各种让人不爽的代码编写方式,今天忍不住要来唠叨下。为什么叫编程之美? 在我看来,代码有丑陋难看和赏心悦目两类,当然还有介于两者之间的。优秀开源框架的源码,让人看了就觉得舒服;而有些新手写的代码,让人看了别扭、添堵。本人也是从新手一步步过来的,想想自己早年写得代码,也是很丑的。当年丑不要紧,一直丑就要命了。废话不转载 2018-01-29 13:54:02 · 332 阅读 · 0 评论 -
HashMap和LinkedHashMap的区别
HashMap,LinkedHashMap,TreeMap都属于MapMap 主要用于存储键(key)值(value)对,根据键得到值,因此键不允许键重复,但允许值重复。HashMap 是一个最常用的Map,它根据键的HashCode 值存储数据,根据键可以直接获取它的值,具有很快的访问速度。HashMap最多只允许一条记录的键为Null;允许多条记录的值为 Null;HashMap不...原创 2018-04-22 00:40:04 · 11204 阅读 · 5 评论 -
java项目常用工具类之beancopy,bean和map转换工具类
项目环境:jdk1.8+spring4.3.12一、问题描述及试用场景: 在项目规范中,要求类名以DO为尾的类作为数据库层实体bean,类名以MO为尾的类作为系统传输层实体bean,类名以VO为尾的类作为服务端与前端交互的实体bean。由于以上要求,需要在各个bean直接进行copy数据,除了傻瓜式的set/get or constructor来copy数据外,spring提供了直接co...转载 2018-04-27 18:07:34 · 2193 阅读 · 0 评论 -
Integer比较值大小==,大于等于128的返回false
code:Integer a1 = 127;Integer b1 = 127;if(a1==b1){ System.out.println("相等");}else{ System.out.println("不等");}Integer a = 128;Integer b = 128;if(a==b){ System.out.println("相等");...原创 2018-07-05 12:32:10 · 1243 阅读 · 0 评论 -
Java IO的RandomAccessFile的使用
现有如下的一个需求,向已存在1G数据的txt文本里末尾追加一行文字,内容如下“Lucene是一款非常优秀的全文检索库”。可能大多数朋友会觉得这个需求很easy,说实话,确实easy,然后XXX君开始实现了,直接使用Java中的流读取了txt文本里原来所有的数据转成字符串后,然后拼接了“Lucene是一款非常优秀的全文检索库”,又写回文本里了,至此,大功告成。后来需求改了,向5G数据的txt文本里追转载 2017-08-29 19:51:39 · 223 阅读 · 0 评论 -
java并发包中Lock的实现原理
1. Lock 的简介及使用 Lock是java 1.5中引入的线程同步工具,它主要用于多线程下共享资源的控制。本质上Lock仅仅是一个接口(位于源码包中的java\util\concurrent\locks中),它包含以下方法//尝试获取锁,获取成功则返回,否则阻塞当前线程void lock(); //尝试获取锁,线程在成功获取锁之前被中断,则放弃获取锁,抛转载 2017-07-27 19:14:37 · 265 阅读 · 0 评论 -
Java NIO系列教程
原文地址:http://www.iteye.com/magazines/132-Java-NIOJava NIO(New IO)是从Java 1.4版本开始引入的一个新的IO API,可以替代标准的Java IO APIJava NIO提供了与标准IO不同的IO工作方式: Channels and Buffers(通道和缓冲区):标准的IO基于字节流和字符流进行操作的,而N转载 2017-07-30 20:44:21 · 265 阅读 · 0 评论 -
java泛型深入理解
泛型之前在面向对象编程语言中,多态算是一种泛化机制。例如,你可以将方法的参数类型设置为基类,那么该方法就可以接受从这个基类中导出的任何类作为参数,这样的方法将会更具有通用性。此外,如果将方法参数声明为接口,将会更加灵活。在Java增加泛型类型之前,通用程序的设计就是利用继承实现的,例如,ArrayList类只维护一个Object引用的数组,Object为所有类基类。转载 2017-07-21 19:23:19 · 388 阅读 · 0 评论 -
ConcurrentHashMap实现原理
ConcurrentHashMap是Java1.5中引用的一个线程安全的支持高并发的HashMap集合类。这篇文章总结了ConcurrentHashMap的内部实现原理,是对于自己理解后的一些整理。1.HashTable与ConcurrentHashMap的对比HashTable本身是线程安全的,写过Java程序的都知道通过加Synchronized关键字实现线程安全,这样对整转载 2017-07-18 20:07:46 · 314 阅读 · 0 评论 -
Fork/Join框架介绍
1. 什么是Fork/Join框架Fork/Join框架是Java7提供了的一个用于并行执行任务的框架, 是一个把大任务分割成若干个小任务,最终汇总每个小任务结果后得到大任务结果的框架。我们再通过Fork和Join这两个单词来理解下Fork/Join框架,Fork就是把一个大任务切分为若干子任务并行的执行,Join就是合并这些子任务的执行结果,最后得到这个大任务的结果。比如计算1+转载 2017-07-31 13:47:05 · 364 阅读 · 0 评论 -
java反射机制详解 及 Method.invoke解释 getMethod
Java反射机制JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。Java反射机制主要提供了以下功能: 在运行时判断任意一个对象所属的类;在运行时构造任意一个类的对象;在运行时判断任意一个类所具有的成员变量和方法;在运行时调用任意一个对转载 2017-07-24 16:08:14 · 512 阅读 · 0 评论 -
解析java的hashmap死循环问题
原文地址:http://coolshell.cn/articles/9606.html问题的症状从前我们的Java代码因为一些原因使用了HashMap这个东西,但是当时的程序是单线程的,一切都没有问题。后来,我们的程序性能有问题,所以需要变成多线程的,于是,变成多线程后到了线上,发现程序经常占了100%的CPU,查看堆栈,你会发现程序都Hang在了HashMap.get()转载 2017-07-24 16:22:13 · 327 阅读 · 0 评论 -
探秘Java中的String、StringBuilder以及StringBuffer
转载地址:http://www.cnblogs.com/dolphin0520/p/3778589.html一.你了解String类吗? 想要了解一个类,最好的办法就是看这个类的实现源代码,String类的实现在 \jdk1.6.0_14\src\java\lang\String.java 文件中。 打开这个类文件就会发现String类是被fi转载 2017-07-24 20:56:40 · 260 阅读 · 0 评论 -
Java并发编程:volatile关键字解析
原文链接:http://www.cnblogs.com/dolphin0520/p/3920373.html一.内存模型的相关概念 大家都知道,计算机在执行程序时,每条指令都是在CPU中执行的,而执行指令过程中,势必涉及到数据的读取和写入。由于程序运行过程中的临时数据是存放在主存(物理内存)当中的,这时就存在一个问题,由于CPU执行速度很快,而从内存读取数据和向内转载 2017-07-25 18:48:50 · 261 阅读 · 0 评论 -
高精度操作数值 BigDecimal类和BinInteger类
Java1.1增加了两个类,用于进行高精度的计算,BigDecimal类和BinInteger类。尽管他们大致可以划分为"封装器"类型,但两者都没有对应的“主类型”。原文地址:http://www.cnblogs.com/hellojava/archive/2013/01/06/2845423.html1、简介 JAVA中提供了可以进行大数字的操作类:BigDecim转载 2017-07-26 16:02:39 · 388 阅读 · 0 评论 -
Java Object对象之clone方法
克隆的目的:快速创建一个已有对象的副本。克隆的步骤:创建一个对象 将原有对象的数据导入到新创建的数据中 1. Object的clone()源代码简介 /** * Creates and returns a copy of this {@code Object}. The default * implementation returns a so-called...原创 2018-07-07 20:50:12 · 478 阅读 · 0 评论