自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(39)
  • 收藏
  • 关注

原创 Spring JDBCTemplate VS Hibernate in terms of performance

If you do all you can to make both implementations very fast, the JDBC template will probably be a bit faster, because it doesn’t have the overhead that Hibernate has. But it will probably take much mo

2017-05-05 18:08:29 322

原创 How to custom Spring Batch DelimitedLineTokenizer?

今天在用spring batch分析csv文件的时候,由于csv文件是以$进行分割的,所以需要在配置文件中添加一个属性:<beans xmlns="http://www.springframework.org/schema/beans" xmlns:batch="http://www.springframework.org/schema/batch" xmlns:task="htt

2017-05-04 18:11:11 1094

原创 Java 多线程

package com.wyy.thread;import java.util.ArrayList;import java.util.List;import java.util.concurrent.Callable;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;impor

2017-04-20 22:11:32 241

转载 Java 8 比较器:如何对 List 排序

在本文中,我们将看到几个关于如何在Java 8中对List进行排序的例子。按字母排序字符串列表List<String> cities = Arrays.asList( "Milan", "london", "San Francisco", "Tokyo", "New Delhi");System.out.println(cit

2017-04-14 12:40:47 1056

原创 Hibernate和Spring data jpa的区别?

Hibernate是JPA实现,而Spring Data JPA是JPA数据访问抽象。 Spring Data提供了GenericDao自定义实现的解决方案。 它也可以通过方法名称约定代表您生成JPA查询。使用Spring Data,您可以使用Hibernate,Eclipse Link或任何其他JPA提供程序。 一个非常有趣的好处是您可以使用@Transactional注释声明性地控制事务边界。S

2017-04-07 17:40:33 2891

转载 你了解Volatile关键字吗?

一、Java内存模型想要理解volatile为什么能确保可见性,就要先理解Java中的内存模型是什么样的。Java内存模型规定了所有的变量都存储在主内存中。每条线程中还有自己的工作内存,线程的工作内存中保存了被该线程所使用到的变量(这些变量是从主内存中拷贝而来)。线程对变量的所有操作(读取,赋值)都必须在工作内存中进行。不同线程之间也无法直接访问对方工作内存中的变量,线程间变量值的传递均需要通过主内

2017-04-06 14:36:10 252

原创 Java中的static和volatile变量的区别?

在java中声明一个静态变量,意味着只有一个副本,无论创建了多少个类的对象,即使没有创建对象,变量也可以访问,但是线程可能具有本地缓存的值。当变量volatile而不是静态时,每个object都有一个变量,所以,表面看来,与正常变量没有区别,但是与静态完全不同。然而,即使使用object字段,线程也可能在本地缓存变量值。这意味着如果两个线程同时更新同一个对象的变量,并且该变量未被声明为volat

2017-03-30 15:44:35 5049 2

原创 怎么使用PriorityQueue?

使用比较器Comparator<? super E> comparator,并通过比较器,以适当的方式对排序顺序进行比较,下面是一个简单的例子:public class StringLengthComparator implements Comparator<String>{ @Override public int compare(String o1, String o2) {

2017-03-30 10:47:26 636

原创 Easiest way to convert a List to a Set in Java?

Set<Foo> foo = new HashSet<Foo>(list);

2017-03-27 22:45:10 213

原创 Difference between parseInt and valueOf in java?

parseInt()返回原始的整型(int),valueof返回的是包装类型Integer。

2017-03-23 12:01:01 173

原创 How do I remove repeated elements from ArrayList?

最简单的方法是将元素添加到一个set中(不允许重复的元素),然后再将set集合添加到ArrayList:List<String> al = new ArrayList<>();// add elements to al, including duplicatesSet<String> hs = new HashSet<>();hs.addAll(al);al.clear();al.add

2017-03-22 14:23:12 233

原创 Simple way to repeat a String in java

在java的jdk1.5或以上版本中,可以用如下方法:repeated = new String(new char[n]).replace("\0", s);n代表你要重复的次数,s代表你要重复的字符。当然也可以用Commons lang jar包的方法:String str = "abc";String repeated = StringUtils.repeat(str, n);在java

2017-03-21 16:08:27 251

原创 convert List<String> to a String

在java的jdk1.5或以上版本中,可以用如下方法:repeated = new String(new char[n]).replace("\0", s);n代表你要重复的次数,s代表你要重复的字符。当然也可以用Commons lang jar包的方法:String str = "abc";String repeated = StringUtils.repeat(str, n);在java

2017-03-21 16:08:16 413

原创 How to convert List<Integer> to int[] in Java?

在java的jdk8以前版本中,没有自动可以转换的方法,但是可以用如下方式:int[] oldArray;Integer[] newArray = new Integer[oldArray.length];int i = 0;for(int value : oldArray){ newArray[i++] = Integer.valueOf(value);如果你能用Apache la

2017-03-21 14:42:03 2596

原创 计算字符串中含有的某个字符的个数

int count = StringUtils.countMatches("a.b.c.d", ".");在Spring Framework's中,可以用如下方式:int occurance = StringUtils.countOccurrencesOf(“a.b.c.d”, “.”);

2017-03-20 19:32:32 6977 2

原创 List中对值的改变影响了另一个List的值

今天将一个 A list里面的值赋给另外一个B list之后,然后修改A list的值之后,同时把B list的的值也给修改了。下面是例子:List<RedLightPerson> redLightPersons = redLightPersonDao.findLast(); for(RedLightPerson redLightPerson : redLightPersons

2017-03-16 17:40:48 3074

原创 避免创建不必要的对象

下面是一个比较微妙也比较常见的反面的例子,其中涉及可变的Date对象,他们的值一旦计算出来之后就不再变化。这个类建立了一个模型:其中有一个人,并有一个isBabyBoomer方法,用来检验这个人是否为一个BabyBoomer,换句话说,就是检验这个人是否出生于1946年至1964年之间。public class person { private final Date birthDate =

2017-03-14 20:28:59 172

原创 Read all files in a folder

在java1.7以前,采用如下的方式:public static void listFilesForFolder(final File folder) { for (final File fileEntry : folder.listFiles()) { if (fileEntry.isDirectory()) { listFi

2017-03-14 18:01:48 370

原创 遇到多个构造器参数时要考虑用构建器

重叠构造器模式可行,但是当有许多参数的时候,客户端代码会很难编写 Builder模式: 不直接生成想要的对象,而是让客户端利用所有必要的参数调用构造器,得到一个builder对象。public class NutritionFacts { private final int servingSize; private final int servings; private f

2017-03-14 17:44:12 242

原创 用私有构造器或者枚举类型强化Singleton属性

在java1.5版本之前,实现Singleton有两种方法。这两种方法都要把构造器保持为私有的,并导出公有的静态成员,一遍允许客户端能够访问该类的唯一实例。在第一种方法中,公有静态成员是个final域:public class Elvis{ public static final Elvis INSTANCE = new Elvis(); private Elvis(){...}

2017-03-09 16:03:26 398

原创 java.math.BigInteger cannot be cast to java.lang.Long

I’m getting the following exception.Caused by: java.lang.ClassCastException: java.math.BigInteger cannot be cast to java.lang.Longwith the following code:@Query(value = "SELECT id FROM "+ GlobalConsts.

2017-03-09 11:33:32 10964 1

原创 aop.AopInvocationException: null return value from advice does not match primitive return type for

在用hibernate进行查询的时候,发生了如下异常: aop.AopInvocationException: null return value from advice does not match primitive return type forhere is the DAO interface: @Query(value = “SELECT indexed FROM “+ GlobalC

2017-03-09 11:23:30 8627

原创 当心字符串连接的性能

字符串连接操作符“+”是把多个字符串合并成为一个字符串,要想单独产生一行的输出,或者构造一个字符串来表示一个较小的、大小固定的对象,使用连接操作符是非常合适的,但是它不适合运用在大规模的场景中。为链接n个字符串而重复的使用字符串连接符,需要n的平方级的时间,主要是因为字符串不可变导致的不幸结果。看一个下面的例子: public static void main(String[] args)

2017-03-02 14:59:42 403 1

原创 基本类型优先于装箱基本类型

在基本类型和装箱基本类型中有3个主要区别: 1、基本类型只有值,装箱基本类型具有与它们的值不同的统一性; 2、基本类型只有功能完备的值,而每个装箱基本类型除了它对应基本类型的所有功能值外,还有个非功能值–null; 3、基本类型比装箱基本类型更节省时间和空间。看下面的一个小例子:public class Unbelievable { static Integer i; publ

2017-03-02 14:29:26 571

原创 How do I join two lists in Java?

看到这个问题,你想到肯定是下面的这种方法:List newList = new ArrayList();newList.addAll(listOne);newList.addAll(listTwo);但是有没有更简便的方法呢?请看下面:List newList = new ArrayList(listOne);newList.addAll(listTwo);在创建新列表

2017-03-01 15:04:35 212

原创 Read/convert an InputStream to a String

stackoverflow网站上的一个问题。怎样用最简单的方法将inputstream转化为string类型?比较好的答案:public class InputStreamToString { public static void main(String[] args) { FileInputStream inputStream = null; StringWriter wr

2017-02-28 14:58:03 306

原创 Why is it faster to process a sorted array than an unsorted array?

今天在stackoverflow网站上看了一个投票人数最多的一个题目,为什么处理排过序的数组比没有排序的数组的速度更快。代码如下:import java.util.Arrays;import java.util.Random;public class Main{ public static void main(String[] args) { // Ge

2017-02-27 23:17:36 254

原创 executor和task优先于线程

在java1.5,java平台中增加了java.util.concurrent,它创建了一个在各方面都很好的队列,只需要一行这样的代码:ExecutorService service = Executors.newSingleThreadExecutor();下面是为执行提交一runnable的方法:service.execute(runnable);下面是如何优雅的终止:se

2017-02-27 11:05:32 646

原创 mysql数据导入增加速度方法

前天,在做大数据批量导入数据库中的时候,后台程序用的是jdbctemplate的batchupate方法,每次导入3000个数据,但是一分钟只能导入2000条左右的数据,这速度像蜗牛一样,肯定是不行的。后来在stackoverflow上查了一下该问题,发现别人也遇到了同样的问题,该方法与原生的批量插入方法相比,速度相差了几十倍,具体原因不知道是不是使用的方法不对,后来就改用了jdbctemplat

2017-02-26 23:32:28 327

转载 HashSet和HashMap的区别

HashMap和HashSet的区别是Java面试中最常被问到的问题。如果没有涉及到Collection框架以及多线程的面试,可以说是不完整。而Collection框架的问题不涉及到HashSet和HashMap,也可以说是不完整。HashMap和HashSet都是collection框架的一部分,它们让我们能够使用对象的集合。collection框架有自己的接口和实现,主要分为Set接口,Lis

2015-10-09 15:37:57 477

转载 Java HashMap工作原理

大部分Java开发者都在使用Map,特别是HashMap。HashMap是一种简单但强大的方式去存储和获取数据。但有多少开发者知道HashMap内部如何工作呢?几天前,我阅读了java.util.HashMap的大量源代码(包括Java 7 和Java 8),来深入理解这个基础的数据结构。在这篇文章中,我会解释java.util.HashMap的实现,描述Java 8实现中添加的新特性,并讨论性能

2015-09-23 11:17:02 392

转载 如何阅读Java源码

刚才在论坛不经意间,看到有关源码阅读的帖子。回想自己前几年,阅读源码那种兴奋和成就感(1),不禁又有一种激动。源码阅读,我觉得最核心有三点:技术基础+强烈的求知欲+耐心。说到技术基础,我打个比方吧,如果你从来没有学过Java,或是任何一门编程语言如C++,一开始去啃《Core Java》,你是很难从中吸收到营养的,特别是《深入Java虚拟机》这类书,别人觉得好,未必适合现在的你。虽

2015-09-23 10:39:32 475

转载 IntelliJ IDEA的光芒会盖过Eclipse吗

作为一个资深的Eclipse用户,我想对IntelliJ IDEA做一个更为严谨的审视。JetBrains的工作人员非常的友善,并为Podcastpedia.org和Codingpedia.org这两个 工程给予了我一个开放源码的许可证。在这片文章中,我列出来Eclipse中常用且与IntelliJ等同的一些操作。写这篇文章为了以后遗忘时能够再用做个记录,也为或许能帮助到其他的人。

2015-09-23 10:27:13 525

翻译 关于 hashCode() 你需要了解的 3 件事

在 Java 中,每一个对象都有一个容易理解但是仍然有时候被遗忘或者被误用的 hashCode 方法。这里有3件事情要时刻牢记以避免常见的陷阱。一个对象的哈希码允许算法和数据结构将对象放入隔间,就象打印机类型案件中的字母类型。打印机将所有的“A”类型放到一个房间,它寻找这个“A”的时候就只需要在这个房间进行寻找。这种简单的系统让他在未排序的抽屉中寻找类型的时候更快。这也是基于哈希的集合的想

2015-09-23 10:22:17 274

转载 RAID磁盘阵列中LUN的理解

a、lun的概念    lun的全称是logical unit number,也就是逻辑单元号。我们知道scsi总线上可挂接的设备数量是有限的,一般为6个或者15个,我们可以用target ID(也有称为scsi id的)来描述这些设备,设备只要一加入系统,就有一个代号,我们在区别设备的时候,只要说几号几号就ok了。    而实际上我们需要用来描述的对象,是远远超过该数字的,于是我们引进了

2015-09-23 10:20:43 1967

原创 SWT中的进度条

在进行开发的过程中,经常看到很多软件安装的时候会显示进度,在取消的时候线程也随着取消。所以我们将要进行怎样用线程对进度条进行控制。当单击“开始”按钮时,创建一个线程;当单击取消按钮时,可以结束线程,这样就达到了对线程的控制,不会让线程自生自灭了。先上图:关键代码如下:package com.wyy.ProgressbarComplex;import org.eclips

2015-08-07 14:30:21 2264

原创 SWT中的UI线程

SWT作为一个桌面程序,比普通的Java程序 要多一个UI线程,UI线程负责不断地画出显示的UI控件,当然这个UI线程还要负责事件的处理。什么是事件呢?当单击按钮或者是按下键盘,系统都会生成一个事件放在事件队列中,接下来UI线程按照顺序处理队列中的事件。SWT中的Display对象就是一个UI线程,并且负责管理队列中的事件。

2015-08-07 11:32:32 1001

原创 SWT中的拖放支持

拖放操作无非是将源的数据放置到目标对象中,SWT的处理是在托的过程中将java的数据转化为本地保存的全局变量数据,然后在放的过程中,再从本地保存的全局变量中将数据取出,SWT中使用transfer类来定义一个转化数据的过程。拖放主要需要理解3个概念:托放源、传输数据和托放目标。处理托放目标事件与拖放源对象的处理事件类似,当光标进入到目标对象区域时便会触发目标对象的相关事件。传输数据

2015-08-03 19:27:58 687

原创 java中的单例模式

这个模式很有意思,而且比较简单,使用是如此之广泛,单例就是单一、独苗的意思,那么什么是单一、独苗的意思呢?你的思维是独一份,除此之外还有什么不能山寨的呢?举例:中国的历史上很少出现两个皇帝并存的时期,有但是不多,那么我们认为皇帝就是单例模式,在这个场景中,有皇帝,有大臣,大臣是天天要上朝参见皇帝的,今天参拜的皇帝应该和昨天、前天的一样,大臣磕完头,抬头一看,还是昨天那个皇帝,单例模

2015-08-03 14:46:24 308

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除