
Java基础
文章平均质量分 64
Scnu_wang
Keep learning and you will be closer to success!
展开
-
使用XStream实现Java对象与XML之间的快速互转
需求:如何实现Java对象与XML之间的快速互转? 要实现这个需求,解决方法太多了,今天为大家展示的是XStream,可能很多朋友已经知道这个工具。 下面来看看XStream如何使用。 第一步导包:这个是使用Maven的方式引入包,很方便,不用经常去找jar包和考虑这个jar包有哪些依赖,所以也推荐大家在开发的时候尽可能的使用Maven。 <dependency> <grou原创 2017-04-01 09:55:47 · 905 阅读 · 0 评论 -
HashSet vs. TreeSet vs. LinkedHashSet
Set集合不包含重复的元素,这是使用Set的主要原因。有三种常见的Set实现——HashSet, TreeSet和LinkedHashSet。什么时候使用它们,使用哪个是个重要的问题。总体而言,如果你需要一个访问快速的Set,你应该使用HashSet;当你需要一个排序的Set,你应该使用TreeSet;当你需要记录下插入时的顺序时,你应该使用LinedHashSet。1. Set接口Set接口继转载 2017-08-29 00:01:56 · 290 阅读 · 0 评论 -
Java中的equals()和hashCode()契约
java.lang.Object类中有两个非常重要的方法:12public boolean equals(Object obj)public int hashCode()理解这两个方法非常的重要,尤其是将用户自定义的对象添加到Map中的时候。有时候就算是久经沙场的老程序员也弄不清楚该如何正确使用它们。这篇文章中,我将用一个例子让大家看看大家经常会犯的错误,然后解释equals()和hashCod转载 2017-08-29 00:04:21 · 368 阅读 · 0 评论 -
ArrayList vs. LinkedList vs. Vector
1. List概览List,就像它的名字暗示的一样,是一组排列有序的元素。当我们讨论List的时候,很容易将它和Set作比较。Set是一组唯一的而且排列无序的元素。下图是集合类的层次结构图。你可以总体上知道我们今天讨论的主题。2. ArrayList vs. LinkedList vs. Vector从上图可知,它们都实现了List接口。它们的用法差不多,主要的区别在于它们对于不同操作的操作速转载 2017-08-29 00:06:22 · 361 阅读 · 0 评论 -
可以重写静态方法吗?
问:你可以重写静态方法吗?答:如果从重写方法会有什么特点来看,我们是不能重写静态方法的。虽然就算你重写静态方法,编译器也不会报错。也就是说,如果你试图重写静态方法,Java不会阻止你这么做,但你却得不到预期的结果(重写仅对非静态方法有用)。重写指的是根据运行时对象的类型来决定调用哪个方法,而不是根据编译时的类型。让我们猜一猜为什么静态方法是比较特殊的?因为它们是类的方法,所以它们在编译阶段就使用编转载 2017-08-29 00:08:23 · 2608 阅读 · 0 评论 -
HashMap和Hashtable的区别
HashMap和Hashtable的比较是Java面试中的常见问题,用来考验程序员是否能够正确使用集合类以及是否可以随机应变使用多种思路解决问题。HashMap的工作原理、ArrayList与Vector的比较以及这个问题是有关Java 集合框架的最经典的问题。Hashtable是个过时的集合类,存在于Java API中很久了。在Java 4中被重写了,实现了Map接口,所以自此以后也成了Java集转载 2017-08-29 00:09:37 · 369 阅读 · 0 评论 -
HashMap和HashSet的区别
HashMap和HashSet的区别是Java面试中最常被问到的问题。如果没有涉及到Collection框架以及多线程的面试,可以说是不完整。而Collection框架的问题不涉及到HashSet和HashMap,也可以说是不完整。HashMap和HashSet都是collection框架的一部分,它们让我们能够使用对象的集合。collection框架有自己的接口和实现,主要分为Set接口,List转载 2017-08-29 00:10:24 · 452 阅读 · 0 评论 -
LinkedList和ArrayList的区别
LinkedeList和ArrayList都实现了List接口,但是它们的工作原理却不一样。它们之间最主要的区别在于ArrayList是可改变大小的数组,而LinkedList是双向链接串列(doubly LinkedList)。ArrayList更受欢迎,很多场景下ArrayList比LinkedList更为适用。这篇文章中我们将会看看LinkedeList和ArrayList的不同,而且我们试图转载 2017-08-29 00:11:43 · 712 阅读 · 0 评论 -
HashMap vs. TreeMap vs. Hashtable vs. LinkedHashMap
Map是最重要的数据结构。这篇文章中,我会带你们看看HashMap, TreeMap, HashTable和LinkedHashMap的区别。1. Map概览Java SE中有四种常见的Map实现——HashMap, TreeMap, Hashtable和LinkedHashMap。如果我们使用一句话来分别概括它们的特点,就是:HashMap就是一张hash表,键和值都没有排序。TreeMap转载 2017-08-28 23:59:21 · 376 阅读 · 0 评论 -
HashMap的工作原理
先来些简单的问题“你用过HashMap吗?” “什么是HashMap?你为什么用到它?”几乎每个人都会回答“是的”,然后回答HashMap的一些特性,譬如HashMap可以接受null键值和值,而Hashtable则不能;HashMap是非synchronized;HashMap很快;以及HashMap储存的是键值对等等。这显示出你已经用过HashMap,而且对它相当的熟悉。但是面试官来个急转直转载 2017-08-28 23:57:25 · 281 阅读 · 0 评论 -
Java加密解密快速入门上篇【包括MD5、BASE64、DES、RSA等算法】
搞Java的攻城狮应该比较欣喜若狂的,不仅Sun公司的JDK提供了庞大的类库,而且还有众多的开源组织和个人不断地丰富着Java的生态系统。没错的,诸如MD5、BASE64、DES、RSA等经典加密解密算法,JDK都有提供专门的API来封装相关操作。程序猿只需要了解算法的思想,以及学习如何使用API即可。当然,针对BASE64算法,JDK仅仅提供了非常标准的实现,在某些场景下无法满足应用需求。在最后一转载 2017-05-25 14:43:26 · 964 阅读 · 0 评论 -
Java加密解密快速入门下篇【包括MD5、BASE64、DES、RSA等算法】
在上一篇博客中已经简要的介绍了MD5、BASE64、DES、RSA等算法在Java中的具体应用。现在可以考虑对这些代码封装成一个工具类EncryptUtil,然后再补充一下Commons Codec对BASE64的扩展支持! <一>. EncryptUtil工具类: 1. 使用commons-logging记录异常日志。 2. 提取常量字段、公共字段。 3. 提取公共方法: Java代码 //创转载 2017-05-25 14:46:27 · 450 阅读 · 0 评论 -
各种锁整理
(1)互斥锁 a.每个对象都对应于一个可称为“互斥锁”的标记,这个标记用来保证在任一时刻,只能有一个线程访问该对象。 b.Java对象默认是可以被多个线程共用的,只是在需要时才启动“互斥锁”机制,成为专用对象。 c.关键字synchronized用来与对象的互斥锁联系 d.当某个对象用synchronized修饰时,表明该对象已启动“互斥锁”机制,在任一时刻只能由一个线程访问原创 2017-05-17 09:58:42 · 951 阅读 · 0 评论 -
Java序列化、反序列化以及串行化与并行化
序列化:把对象转换为字节序列的过程称为对象的序列化。 反序列化:把字节序列恢复为对象的过程称为对象的反序列化。 1、序列化基本实现 a)最基本的序列化:实现Serializable接口,通过文件流的方式将对象持久化到磁盘。public class Person implements Serializable{//主要用于保证序列化对象的版本兼容 private static final l原创 2017-02-14 14:24:32 · 2152 阅读 · 0 评论 -
常用关键字整理
Volatile: Volatile修饰的成员变量在每次被线程访问时,都强迫从主内存中重读该成员变量的值。而且,当成员变量发生变化时,强迫线程将变化值回写到主内存。这样在任何时刻,两个不同的线程总是看到某个成员变量的同一个值。 Java语言规范中指出:为了获得最佳速度,允许线程保存共享成员变量的私有拷贝,而且只当线程进入或者离开同步代码块时才与共享成员变量的原始值对比。 这样当多个原创 2017-05-17 10:38:45 · 1566 阅读 · 0 评论 -
ConcurrentHashMap总结
并发编程实践中,ConcurrentHashMap是一个经常被使用的数据结构,相比于Hashtable以及Collections.synchronizedMap(),ConcurrentHashMap在线程安全的基础上提供了更好的写并发能力,但同时降低了对读一致性的要求(这点好像CAP理论啊 O(∩_∩)O)。ConcurrentHashMap的设计与实现非常精巧,大量的利用了volatile,fi转载 2017-07-05 17:13:09 · 281 阅读 · 0 评论 -
详解equals()方法和hashCode()方法
前言Java的基类Object提供了一些方法,其中equals()方法用于判断两个对象是否相等,hashCode()方法用于计算对象的哈希码。equals()和hashCode()都不是final方法,都可以被重写(overwrite)。本文介绍了2种方法在使用和重写时,一些需要注意的问题。目录一、equal()方法二、hashCode()方法 1、Object的hashCode()转载 2017-08-10 22:52:25 · 214 阅读 · 0 评论 -
再有人问你Java内存模型是什么,就把这篇文章发给他
原创: Hollis Hollis 原文链接:https://mp.weixin.qq.com/s/ME_rVwhstQ7FGLPVcfpugQ 前几天,发了一篇文章,介绍了一下JVM内存结构、Java内存模型以及Java对象模型之间的区别。有很多小伙伴反馈希望可以深入的讲解下每个知识点。Java内存模型,是这三个知识点当中最晦涩难懂的一...转载 2018-07-02 10:48:28 · 648 阅读 · 0 评论