
Java 提高篇
文章平均质量分 67
azhegps
技术源于不断滴追求!
展开
-
Java提高篇(一):subList的缺陷
我们经常使用subString方法来对String对象进行分割处理,同时我们也可以使用subList、subMap、subSet来对List、Map、Set进行分割处理,但是这个分割存在某些瑕疵。一、subList返回仅仅只是一个视图首先我们先看如下实例:public static void main(String[] args) { List list1转载 2016-08-31 19:26:51 · 2324 阅读 · 0 评论 -
Java提高篇(十二):浅谈Java中的hashcode方法
浅谈Java中的hashcode方法 哈希表这个数据结构想必大多数人都不陌生,而且在很多地方都会利用到hash表来提高查找效率。在Java的Object类中有一个方法: 1 public native int hashCode(); 根据这个方法的声明可知,该方法返回一个int类型的数值,并且是本地方法,因此在Object类中并没有给出具体的实...转载 2016-10-27 18:08:56 · 402 阅读 · 0 评论 -
Java提高篇(十四):Java List、Map的深度克隆
关于java List的深度克隆List是java容器中最常用的顺序存储数据结构之一。有些时候我们将一组数据取出放到一个List对象中,但是可能会很多处程序要读取他或者是修改他。尤其是并发处理的话,显然有的时候有一组数据有的时候是不够用的。这个时候我们通常会复制出一个甚至多个克隆List来执行更多的操作。常见的List的克隆方式有很多,下面我们来列举几种常见的List复制的方式:(首先...原创 2016-11-16 18:35:05 · 25084 阅读 · 4 评论 -
Java提高篇(十五):Java中布尔类型操作&=,|=与^=的使用
直接上代码 public static boolean returnTrue() { System.out.println("true execute"); return true; } public static boolean returnFalse() { System.out.println("false execute"); return false; ...原创 2016-11-21 16:33:43 · 2021 阅读 · 0 评论 -
Java提高篇(十六):hashCode方法与HashSet类
只有存储集合是哈希算法这种集合,那么hashcode值,才有意义。如果不是,比如说是数组,那么hashcode就没有意义。 不同的区域。如果重写了hashcode方法,让其一样,那么remove后就是2个了。如果修改,那么remove的时候,就remove不掉了。...原创 2017-06-10 23:12:21 · 399 阅读 · 0 评论 -
Java提高篇(十七):Spring3和java8的冲突问题
最近项目中有个问题,困扰了我快一天,最后那是一行一行的定位分析。靠。Spring3和java8的冲突。简单一句话就是:Spring Framework 4.0.3 发布,此版本是基于 OpenJDK 8 GA 版本,最新的 ASM 5.0.1 构建的,详情请看这里。此版本包括许多显著的改进:大大的改进了 WebSocket 空间;集成了许多 real-life 反馈到框架和配置选项;...原创 2017-06-13 16:03:44 · 3422 阅读 · 0 评论 -
深入理解Java:注解(Annotation)基本概念
什么是注解(Annotation): Annotation(注解)就是Java提供了一种元程序中的元素关联任何信息和着任何元数据(metadata)的途径和方法。Annotion(注解)是一个接口,程序可以通过反射来获取指定程序元素的Annotion对象,然后通过Annotion对象来获取注解里面的元数据。 Annotation(注解)是JDK5.0及以后版本引入的。它可以用于创建...原创 2017-05-04 19:37:07 · 294 阅读 · 0 评论 -
Java提高篇(十三):10种简单的Java性能优化
你是否正打算优化hashCode()方法?是否想要绕开正则表达式?Lukas Eder介绍了很多简单方便的性能优化小贴士以及扩展程序性能的技巧。最近“全网域(Web Scale)”一词被炒得火热,人们也正在通过扩展他们的应用程序架构来使他们的系统变得更加“全网域”。但是究竟什么是全网域?或者说如何确保全网域?扩展的不同方面全网域被炒作的最多的是扩展负载(Scaling load),比如...转载 2016-11-06 23:29:28 · 2202 阅读 · 0 评论 -
Java提高篇(二):asList的缺陷
在实际开发过程中我们经常使用asList讲数组转换为List,这个方法使用起来非常方便,但是asList方法存在几个缺陷:一、避免使用基本数据类型数组转换为列表使用8个基本类型数组转换为列表时会存在一个比较有味的缺陷。先看如下程序:public static void main(String[] args) { int[] ints = {1,2,3,4,5转载 2016-09-01 11:24:39 · 378 阅读 · 0 评论 -
Java提高篇(三):fail-fast机制
在JDK的Collection中我们时常会看到类似于这样的话:例如,ArrayList:注意,迭代器的快速失败行为无法得到保证,因为一般来说,不可能对是否出现不同步并发修改做出任何硬性保证。快速失败迭代器会尽最大努力抛出 ConcurrentModificationException。因此,为提高这类迭代器的正确性而编写一个依赖于此异常的程序是错误的做法:迭代器的快速失败行为应转载 2016-08-31 19:44:51 · 378 阅读 · 0 评论 -
Java提高篇(九):保持compareTo和equals同步
在Java中我们常使用Comparable接口来实现排序,其中compareTo是实现该接口方法。我们知道compareTo返回0表示两个对象相等,返回正数表示大于,返回负数表示小于。同时我们也知道equals也可以判断两个对象是否相等,那么他们两者之间是否存在关联关系呢?public class Student implements Comparable{ private Str转载 2016-09-01 10:55:52 · 750 阅读 · 0 评论 -
Java提高篇(八):实现多重继承
多重继承指的是一个类可以同时从多于一个的父类那里继承行为和特征,然而我们知道Java为了保证数据安全,它只允许单继承。有些时候我们会认为如果系统中需要使用多重继承往往都是糟糕的设计,这个时候我们往往需要思考的不是怎么使用多重继承,而是您的设计是否存在问题.但有时候我们确实是需要实现多重继承,而且现实生活中也真正地存在这样的情况,比如遗传:我们即继承了父亲的行为和特征也继承了母亲的行为和特征。可幸的转载 2016-09-01 10:41:42 · 339 阅读 · 0 评论 -
Java提高篇(七):强制类型转换
在java中强制类型转换分为基本数据类型和引用数据类型两种,这里我们讨论的后者,也就是引用数据类型的强制类型转换。 在Java中由于继承和向上转型,子类可以非常自然地转换成父类,但是父类转换成子类则需要强制转换。因为子类拥有比父类更多的属性、更强的功能,所以父类转换为子类需要强制。那么,是不是只要是父类转换为子类就会成功呢?其实不然,他们之间的强制类型转换是有条件的。转载 2016-09-01 10:39:49 · 694 阅读 · 0 评论 -
Java提高篇(四):渐析java的浅拷贝和深拷贝
首先来看看浅拷贝和深拷贝的定义: 浅拷贝:使用一个已知实例对新创建实例的成员变量逐个赋值,这个方式被称为浅拷贝。 深拷贝:当一个类的拷贝构造方法,不仅要复制对象的所有非引用成员变量值,还要为引用类型的成员变量创建新的实例,并且初始化为形式参数实例值。这个方式称为深拷贝 也就是说浅拷贝只复制一个对象,传递引用,不能复制实例。而深拷贝对对象内部的引转载 2016-09-01 09:45:29 · 382 阅读 · 0 评论 -
Java提高篇(五):使用序列化实现对象的拷贝
我们知道在Java中存在这个接口Cloneable,实现该接口的类都会具备被拷贝的能力,同时拷贝是在内存中进行,在性能方面比我们直接通过new生成对象来的快,特别是在大对象的生成上,使得性能的提升非常明显。然而我们知道拷贝分为深拷贝和浅拷贝之分,但是浅拷贝存在对象属性拷贝不彻底问题。关于深拷贝、浅拷贝的请参考这里:渐析java的浅拷贝和深拷贝一、浅拷贝问题我们先看如下代码:转载 2016-09-01 09:57:36 · 291 阅读 · 0 评论 -
Java提高篇(六):详解内部类
可以将一个类的定义放在另一个类的定义内部,这就是内部类。 内部类是一个非常有用的特性但又比较难理解使用的特性(鄙人到现在都没有怎么使用过内部类,对内部类也只是略知一二)。第一次见面 内部类我们从外面看是非常容易理解的,无非就是在一个类的内部在定义一个类。public class OuterClass { private String转载 2016-09-01 10:29:27 · 250 阅读 · 0 评论 -
Java提高篇(十):java单例模式的误导性
“单例一个最常见的设计模式。 既简单,又复杂。“周末几个同事聚在一起聊天,回顾起当初面试时经常问起的关于 java 的单例模式。有同事提出单例类的对象在 jvm 中只存在一个,这个观点是否正确?其实这种观点看似正确,给人很强的误导性,但并不准确。因为 java 的对象实例化与 classloader 密切相关。每个 classloader 都有自身的命名空间,在同一命名空间中是不允许同名类...转载 2016-09-19 14:00:02 · 300 阅读 · 0 评论 -
Java提高篇(十一):一个tomcat有几个jvm
1、一个tomcat是一个进程,其中有很多线程(与有多少个application无关) 2、一个tomcat启动一个JVM,其中可以有很多application3、一个tomcat中部署的多个app,虽然同处一个JVM里,但是由于无法相互调用,所以也可以认为是分布式的 Question: 在一个servlet容器(比如说tomcat)里部署了3个.war,那么启动后会有几个JVM存在呢,是一个JV...原创 2016-09-19 14:02:10 · 5115 阅读 · 0 评论 -
CountDownLatch、CyclicBarrier、Semaphore的区别
在java 1.5中,提供了一些非常有用的辅助类来帮助我们进行并发编程,比如CountDownLatch,CyclicBarrier和Semaphore,今天我们就来学习一下这三个辅助类的用法。以下是本文目录大纲:一.CountDownLatch用法二.CyclicBarrier用法三.Semaphore用法一.CountDownLatch用法CountDownLatch类...原创 2019-02-24 11:29:43 · 211 阅读 · 0 评论