Java
文章平均质量分 94
SEU_Calvin
慢慢来,才会更快。
展开
-
Java集合——ArrayList源码详解
0.前言面试的时候常会被问到ArrayList和Vector的区别。要回答这个问题,首先得对ArrayList的源码进行彻底理解,带着这个问题开始今天的文章。本文原创,转载请注明出处:SEU_Calvin的博客。先对ArrayList的特性进行一个概述:(1)ArrayList内部使用数组来保存元素。可以通过下标索引直接查找到指定位置的元素,因此查找效率高,但每次插入或删除元素,就要大量地移动...原创 2016-10-20 21:17:59 · 11146 阅读 · 1 评论 -
Java技术——Java中的static关键字解析
0. 前言 static是Java技术网络中的重要的一个点。也是面试的时候经常被问到的点,如果理解不够很容易给面试官语言基础不扎实的印象。本文从static方法、static内部类、static变量、以及static代码块四个角度分别解析static关键字。1. static方法《Java编程思想》里有这么一句话——“static方法就是没有this的方法。在static方法内部不能调用非静原创 2017-02-21 21:44:09 · 2383 阅读 · 1 评论 -
Java技术——同步锁的各种知识总结
1. 线程同步的方法 1.1 同步方法 就是使用synchronized关键字修饰的方法。由于java的每个对象都有一个内置锁,当用此关键字修饰方法时,内置锁会保护整个方法。在调用该方法前,需要获得内置锁,否则就处于阻塞状态。synchronized关键字也可以修饰静态方法,此时如果调用该静态方法,将会锁住整个类。1.2 同步代码块 即由synchronized关键字修饰的代码块。被该关键原创 2017-03-31 22:05:37 · 4065 阅读 · 1 评论 -
Java面试——多线程面试题
0.前言在任何Java面试当中多线程和并发方面的问题都是必不可少的一部分,本文汇总了常见的一些多线程面试题。一些问题,比如volatile关键词的作用,synchronized和ReentrantLock的区别,wait()和sleep()的区别等等问题,已经在之前写过的文章中提到过了,这里就不赘述了,有兴趣可以查看以下几篇文章:Java并发——线程同步volatile与synchronized详原创 2016-09-02 10:22:35 · 19891 阅读 · 5 评论 -
Java技术——Java中的参数传值方式
0. 前言 昨天10号晚上迎来了今日头条视频面试三连击(Android开发实习生),每场都50都分钟,而且问的问题有些确实有点难(头条的工程师水平确实有点高,面BAT的时候都没这么大压力),不过今日头条是我见过招聘效率最高的公司,第一场面试结束后面试官会让你不要离开视频间,等待HR通知,一般HR在10分钟你就会打电话告知你一面过了,马上开始第二场面试。就这样进行了三轮视频面试,结果差强人意,三面原创 2017-04-11 18:35:31 · 15149 阅读 · 12 评论 -
Java技术——I/O知识学习
0. 前言 I/O是Java技术网络中一个比较重要的点,不仅是平时开发中的家常便饭,也是面试的时候经常被问到的话题。本篇将介绍字节IO、字符IO的基本体系和用法,最后总结一下NIO的一些知识。1. 字节I/O字节流处理单元为1个字节,主要用在处理二进制数据,字节用来与文件打交道,所有文件的储存都是通过字节(byte)的方式,在磁盘上保留的并不是文件的字符而是先把字符编码成字节,再储存这些字节...原创 2016-10-10 20:17:13 · 10962 阅读 · 0 评论 -
Java技术——Java多线程学习
0.前言转载请标明出处:http://blog.csdn.net/seu_calvin/article/details/52400927学习多线程之前需要先了解以下几个概念。进程:一般指一个程序运行时的实例,每个进程有自己独立的地址空间。一个进程无法直接访问另一个进程的数据。线程:是CPU调度的最小单元,一个进程可以有很多线程,每条线程可以并行执行不同的任务。并且每个线程有独立的运...原创 2016-09-01 16:35:43 · 11124 阅读 · 2 评论 -
Java技术——CopyOnWriteArrayList源码解析
0. 前言 CopyOnWriteArrayList是一个线程安全,读操作时无锁,但是写操作有锁的ArrayList。是读写分离思想的体现。实现原理是当某个线程要修改List中的元素时,会把列表中的元素Copy一份,然后在新数组中对元素进行修改,最后把新元素赋值给原来的List的。这样就可以实现读操作不需要加锁。JDK1.5开始Java并发包提供了CopyOnWriteArrayList和Cop原创 2017-04-16 21:20:00 · 1746 阅读 · 2 评论 -
Java技术——ReentrantLock的Condition的作用以及使用
0. 前言 之前知道ReentrantLock类有一个newCondition(),用于获取Lock上的一个条件,还可以多次newCondition()获得多个条件,Condition可用于线程间通信。是对比ReentrantLock和Synchronized关键字的区别时学习到的。但是有次面试被问到有没有用到过ReentrantLock的Condition,瞬间懵逼了。所以搜集了些资...原创 2017-06-30 22:21:46 · 10219 阅读 · 3 评论 -
Java技术——多态的实现原理
0.前言多态在Java技术里有很重要的地位,在面试中也会经常被问到。但是多态太抽象了,查了很多很多资料,连续几天断断续续的看,有时候看着看着就走神了。毕竟太抽象,哈哈~不过依然硬着头皮看下来了(也不知道看了多少遍),并且将很多资料里关于多态的知识进行了整理(添添加加删删减减了很久),便有了这篇文章。通过这篇文章相信可以帮助你更加深刻的理解多态。原创 2016-08-12 15:19:12 · 30842 阅读 · 27 评论 -
Java技术——Interface与abstract类的区别
0. 前言 抽象类与接口是Java语言中对抽象概念进行定义的两种机制,正是由于他们的存在对多态提供了非常好的支持。他们两者有很大的相似,甚至可以互换,但是也有区别。对于他们的选择反应了你对该问题的理解。本文原创,转载请注明出处:1. 两者关系总结 (1)抽象类和接口都不能够实例化,但可以定义抽象类和接口类型的引用。一个类如果继承了某个抽象类或者实现了某个接口都需要对其中的抽象方法全部进行实现原创 2016-11-13 20:32:55 · 3889 阅读 · 3 评论 -
Java集合——TreeMap源码详解
0. 前言先对TreeMap的特性进行一个概述:(1)TreeMap 是一个有序的key-value集合,它是通过红黑树实现的。因为红黑树是平衡的二叉搜索树,所以其put(包含update操作)、get、remove的时间复杂度都为log(n)。(2)TreeMap相比于HashMap多实现了了NavigableMap接口(也就是这个接口,决定了TreeMap与HashMap的不同:HashM...原创 2016-11-25 15:04:31 · 3412 阅读 · 1 评论 -
Java技术——Java泛型详解
1.为什么需要泛型转载请注明出处:http://blog.csdn.net/seu_calvin/article/details/52230032泛型在Java中有很重要的地位,网上很多文章罗列各种理论,不便于理解,本篇将立足于代码介绍、总结了关于泛型的知识。先看下面的代码:List list = new ArrayList();list.add("CSDN_SEU_Ca...原创 2016-08-17 13:24:56 · 26680 阅读 · 20 评论 -
Java并发——Synchronized和ReentrantLock的联系与区别
0 前言本文通过使用synchronized以及Lock分别完成“生产消费场景”,再引出两种锁机制的关系和区别,以及一些关于锁的知识点。本文原创,转载请注明出处:http://blog.csdn.net/seu_calvin/article/details/524011341. synchronized, wait, notify结合实现生产消费场景1.1 生产者类......原创 2016-09-01 16:54:45 · 12462 阅读 · 0 评论 -
Java集合——LinkedHashMap源码详解
0. 前言通过Java集合——HashMap、HashTable以及ConCurrentHashMap异同比较一文我们了解了HashMap的内部存储结构以及各种特性,与HashMap相比,因为LinkedHashMap是继承自HashMap,因此LinkedHashMap:(1)同样是基于散列表实现。(2)同时实现了Serializable 和 Cloneable接口,支持序列化和克隆。(3)并且...原创 2016-09-27 20:32:01 · 11221 阅读 · 1 评论 -
Java集合——HashMap、HashTable以及ConCurrentHashMap异同比较
HashMap和HashTable的区别一种比较简单的回答是:(1)HashMap是非线程安全的,HashTable是线程安全的。(2)HashMap的键和值都允许有null值存在,而HashTable则不行。(3)因为线程安全、哈希效率的问题,HashMap效率比HashTable的要高。但是如果继续追问Java中的另一个线程安全的与HashMap功能极其类似的类是什么?同样是线程安全,它与HashTable在线程同步上有什么不同……原创 2016-09-25 15:56:41 · 33022 阅读 · 8 评论 -
Java面试——String、StringBuider以及StringBuffer的区别和使用场景
1. 为什么我们需要StringBuffer类和StringBuilder类String是不可变的对象,因此在每次对String类型进行改变的时候,都会生成一个新的String对象,然后将指针指向新的String对象,所以经常改变内容的字符串最好不要用String,因为每次生成对象会降低性能,当内存中无引用对象多了GC就会开始工作,性能就会降低。不要使用String类的"+"来进行......原创 2016-08-02 15:56:23 · 15045 阅读 · 2 评论 -
Java技术——Java中创建对象的5种方式
此文为译文原文连接:https://dzone.com/articles/5-different-ways-to-create-objects-in-java-with-ex0. 前言作为Java开发者,我们每天都会创建很多对象,但我们通常使用依赖管理系统,比如Spring去创建对象。然而此文中我们可以学习到更多创建对象的方法。Java中如下5种创建对象的方式,下面给出它们的......翻译 2016-08-08 14:31:09 · 13703 阅读 · 3 评论 -
Java技术——Java反射机制分析
1. Java的反射机制动态语言是指在程序运行时允许改变程序结构或者变量类型,从这个观点看,JAVA和C++一样,都不是动态语言。但Java它却有着一个非常突出的动态相关机制:反射。Java反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。...转载 2016-08-14 21:28:37 · 8611 阅读 · 1 评论 -
Java技术——Iterator和Enumeration的不同
0. Iterator和Enumeration的不同(1)两者的函数接口不同Enumeration只有2个函数接口,通过Enumeration我们只能读取集合的数据,而不能对数据进行修改。 Iterator有3个函数接口。Iterator除了能读取集合的数据之外,也能对数据进行删除操作。尽管前者还没有被弃用但是已经被后者所代替了,Enumeration已经过时的,之所以没有被弃用是因......原创 2016-10-27 22:01:44 · 5878 阅读 · 0 评论 -
Java集合——LinkedList源码详解
0.前言先对LinkedList的特性进行一个概述:(1)LinkedList底层实现为双向循环链表。链表的特点就是插入删除数据快,而查询数据慢。(2)因为使用链表的原因,所以不存在容量不足的问题,没有扩容机制。(3)从后面的源码分析中我们也可以看出,LinkedList支持null并且LinkedList没有同步机制。(4)LinkedList直接继承于AbstractSequentialL...原创 2016-11-02 21:13:18 · 8887 阅读 · 2 评论 -
Java实现——字符串分割以及复制目录下的所有文件
0. 前言今天有个需求,把Android中data/data目录下指定(通过读预置的XML文件)的多个应用下的多个目录全部内容通过OTG模式复制到U盘中。首先读取XML文件内的某个节点的属性值,这个已经在Java实现——Dom4j读写XML文件中详细介绍过了。那么毋庸置疑第一步就是理清如何将一个文件夹内的全部内容一起复制到指定的新的文件夹下。后面这个FileUtils工具类类可以完全满......原创 2016-07-26 15:14:09 · 11949 阅读 · 0 评论 -
Java技术——你真的了解String类的intern()方法吗
0.引言什么都先不说,先看下面这个引入的例子:String str1 = new String("SEU")+ new String("Calvin"); System.out.println(str1.intern() == str1); System.out.println(str1 == "SEUCalvin");本人JDK版本1.8,输出结果为:tru...转载 2016-08-23 16:40:53 · 63741 阅读 · 136 评论 -
Java并发——线程中断学习
1. 使用interrupt()中断线程当一个线程运行时,另一个线程可以调用对应的Thread对象的interrupt()方法来中断它,该方法只是在目标线程中设置一个标志,表示它已经被中断,并立即返回。这里需要注意的是,如果只是单纯的调用interrupt()方法,线程并没有实际被中断,会继续往下执行。如下代码所示:public class SleepInterrupt implements Ru转载 2017-01-31 22:08:21 · 989 阅读 · 0 评论 -
Java面试——从JVM角度比较equals和==的区别
1. Java中数据类型分类1.1基本数据类型又称为原始数据类型,byte,short,char,int,long,float,double,boolean,他们之间的比较应该使用(==),比较的是他们的值。1.2复合数据类型当复合数据类型用(==)进行比较,比较的是他们在内存中的存放地址。当复合数据类型之间进行equals比较时,这个方法的初始行为是比...原创 2016-08-01 20:55:52 · 18499 阅读 · 9 评论 -
Java面试——HashCode的作用原理和实例解析
1. HashCode的特性(1)HashCode的存在主要是用于查找的快捷性,如Hashtable,HashMap等,HashCode经常用于确定对象的存储地址;(2)如果两个对象相同, equals方法一定返回true,并且这两个对象的HashCode一定相同;(3)两个对象的HashCode相同,并不一定表示两个对象就相同,即equals()不一定为true,只能说明这两...原创 2016-08-02 14:50:19 · 42715 阅读 · 10 评论 -
Java技术——Java中的内存泄漏
1.什么是OOMOOM就是说,当JVM因为没有足够的内存来为对象分配空间并且垃圾回收器也已经没有空间可回收时,就会抛出这个Error(注:非Exception,因为这个问题已经严重到不足以被应用处理,当然Exception也分运行时异常和Checked异常,前者编译可通过,运行是抛出异常,后者编译时必须try-catch到,如IO操纵等和运行环境有关而与程序本身无关的异常)。2...原创 2016-08-02 17:23:04 · 14322 阅读 · 2 评论 -
Java技术——String类为什么是不可变的
0. 前言 如果一个对象,在它创建完成之后不能再改变它的状态,包括对象内的成员变量、基本数据类型的值等等。那么这个对象就是不可变的。众所周知String类就是不可变的。转载请注明出处:1. String类为什么是不可变的首先看一下String类的源码中://JDK1.6public final class String implements java.io.Serializab...原创 2016-12-16 19:45:25 · 2462 阅读 · 1 评论 -
DOM、SAX、JDOM、DOM4J以及PULL在XML文件解析中的工作原理以及优缺点对比
1. DOM(DocumentObjectModel)文档对象模型(1)DOM是W3C指定的一套规范标准,DOM的核心是按树形结构处理数据,DOM解析器读入XML文件并在内存中建立一个结构一模一样的树,可以指定要访问的元素,进行随机访问,随意修改XML文件。尤其是向前处理时非常容易。(2)DOM是基于内存的,不管文件有多大,都会将所有的内容预先装载到内存中。从而消耗很大的内存空间。......原创 2016-07-25 21:02:02 · 14851 阅读 · 0 评论 -
Java实现——Dom4j读写XML文件
1. dom4j概述解析DOM4J是一个开源XML解析包,采用了Java集合框架并完全支持DOM,SAX和JAXP。最大的特色是使用了大量的接口,主要接口都在org.dom4j里定义。2. dom4j的使用2.1Doucment相关用法2.11 解析XML文件,获得Document对象SAXReader reader = new SAXReader();Docu......原创 2016-07-22 09:55:08 · 12690 阅读 · 0 评论 -
Java并发——线程同步Volatile与Synchronized详解
Java面试——线程同步volatile与synchronized详解0. 前言面试时很可能遇到这样一个问题:使用volatile修饰int型变量i,多个线程同时进行i++操作,这样可以实现线程安全吗?提到线程安全、线程同步,我们经常会想到两个关键字:volatile和synchronized,那么这两者有什么区别呢?1. volatile与synchronized介绍volatile是变量修原创 2016-08-30 19:09:16 · 45267 阅读 · 10 评论