自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 Comparator 和 Comparable比较

1. Comparator 和 Comparable 相同的地方他们都是java的一个接口, 并且是用来对自定义的class比较大小的,什么是自定义class: 如 public class Person{ String name; int age }.当我们有这么一个personList,里面包含了person1, person2, persion3....., 我们用Collect

2016-09-28 21:01:23 375

转载 Java虚拟机工作原理详解

一、类加载器首先来看一下java程序的执行过程。                         从这个框图很容易大体上了解java程序工作原理。首先,你写好java代码,保存到硬盘当中。然后你在命令行中输入[java] view plain copyjavac YourClassName.java  

2016-09-09 14:19:35 362

原创 Maven学习博客汇总

1、http://www.cnblogs.com/xdp-gacl/tag/Maven%E5%AD%A6%E4%B9%A0%E6%80%BB%E7%BB%93/           Maven学习总结(九)——使用Nexus搭建Maven私服         Maven学习总结(八)——使用Maven构建多模块项目         Maven学习总结(七

2016-09-09 11:06:28 379

转载 Maven学习 (六) 搭建多模块企业级项目

首先,前面几次学习已经学会了安装maven,如何创建maven项目等,最近的学习,终于有点进展了,搭建一下企业级多模块项目。好了,废话不多说,具体如下:首先新建一个maven项目,pom.xml的文件如下:搭建多模块项目,必须要有一个packaging为pom的根目录。创建好这个maven项目后,我们对着项目右键-->new输入你的项目名称

2016-09-09 10:46:14 372

转载 Maven学习 (五) Elipse中发布一个Maven项目到Tomcat

对于maven初学者的我,经常遇到一个问题就是,maven项目创建成功后,本来已经添加了jar的依赖,但是发布到Tomcat中就是没有jar包存在,启动Tomcat总是报没有找到jar包,可项目结构中确实已经有jar了,一直很郁闷,所以记录下来。1、首先确定好我们已经安装好maven需要的环境,并且已经创建好一个Maven依赖的Web项目,可以查看前几篇maven的学习内容搭建ma

2016-09-09 10:43:05 272

转载 Maven学习 (四) 使用Nexus搭建Maven私服

为什么要搭建nexus私服,原因很简单,有些公司都不提供外网给项目组人员,因此就不能使用maven访问远程的仓库地址,所以很有必要在局域网里找一台有外网权限的机器,搭建nexus私服,然后开发人员连到这台私服上,这样的话就可以通过这台搭建了nexus私服的电脑访问maven的远程仓库。1.首先确定我们的环境安装好maven,jdk等必须的环境2.这些都准备好之后,去下载最新版本的n

2016-09-09 10:31:45 293

转载 Maven学习 (三) 使用m2eclipse创建web项目

1.首先确认你的eclipse已经安装好m2eclipse的环境,可以参照上两篇Maven学习内容2.新建一个maven的项目3.下一步默认配置,使用默认的工作空间,或者你可以自己选择其他的空间4.一般我们都是web开发,所以选择maven-archetype-webapp5. 填写好相应的groupId,artifactId,version

2016-09-09 10:12:53 221

转载 Maven学习 (二) Eclipse 上安装 Maven3插件

eclipse 安装插件的方式最常见的有两种:    1. 一种是在线安装,这貌似是用的最多的,就是:Help  -->  Install New Software,然后输入 HTTP 地址来安装,但有一个很明显的缺点,就是慢,即使网络好也不见得很快安装好!    2. 另一种是离线安装的方式,用 link 的方式来安装,这种方式可拔性更好,非常方便。    下

2016-09-09 10:00:42 278

转载 Maven学习 (一) 搭建Maven环境

有两种方式可以配置maven的环境配置,本人推荐使用第二种,即使用本地的maven安装文件,个人感觉这样可以方便管理下载jar包的存放位置,错误信息的输出等,可以在dos窗口中可以清晰看到,虽然比较麻烦,每次都要敲dos命令,但可以写批处理文件来解决.方式一:不使用本地的maven安装文件环境配置(也即使用的是m2eclipse插件的默认配置) settings.x

2016-09-09 09:41:19 252

转载 23种设计模式汇总

目录创建型1. Factory Method(工厂方法)2. Abstract Factory(抽象工厂)3. Builder(建造者)4. Prototype(原型)5. Singleton(单例)结构型6. Adapter Class/Object(适配器)7. Bridge(桥接)8. Composite(组合)9. Decorator(装饰)

2016-08-22 17:32:27 340

转载 ReentrantLock学习

ReentrantLock是一个可重入的互斥锁,重入锁是一种递归无阻塞的同步机制。ReentrantLock由最近成功获取锁,还没有释放的线程所拥有,当锁被另一个线程拥有时,调用lock的线程可以成功获取锁。如果锁已经被当前线程拥有,当前线程会立即返回。 重入锁的构造方法提供一个可选的公平参数:     公平情况下,操作会排一个队按顺序执行,来保证执行顺序。

2016-08-19 13:57:58 284

转载 MyBatis学习(二)--走进MyBatis的世界

mybatis是个持久层的框架,用来执行数据库操作的,无外乎增删改查,上一节对mybatis有了宏观上的了解后,这一篇博客主要通过一个小示例来入门mybatis,先看一下要写的示例需求:根据用户id查询用户信息 根据用户名称模糊查询用户信息 添加用户、删除用户、更新用户  其实也就是增删改查,掌握这些,基本上就掌握了mybatis的基本操作了,下面一个个模块来完成。

2016-08-15 14:54:30 411

转载 MyBatis学习(一)--宏观上把握MyBatis框架

今天开始学习mybatis框架,博客主要记录学习过程中的一些总结,如有错误之处,欢迎留言指正~先用mybatis的鸟鸟来镇个楼,咳咳~~   mybatis框架是一个持久层框架,是Apache下的顶级项目。mybatis可以让开发者的主要精力放在sql上,通过mybatis提供的映射方式,自由灵活的生成满足需要的sql语句。MyBatis可以将向preparedStatemen

2016-08-15 14:46:05 333

原创 原子操作类学习(一)

原子操作类分类原子更新方式原子更新基本类型原子更新数组原子更新引用原子更新属性(字段)原子更新基本类型AtomicBoolean :原子更新布尔类型AtomicInteger: 原子更新整型AtomicLong: 原子更新长整型原子更新数组AtomicIntegerArray :原子更新整型数组里的元素AtomicLongArray :原

2016-08-15 13:39:18 261

转载 ConcurrentLinkedQueue学习(三)

ConcurrentLinkedQueue应该注意的地方  刚开始认为使用了ConcurrentLinkedQueue类之后意味着不需要自己进行任何同步或加锁操作,查了下资料,如果直接使用它提供的函数,比如:queue.add(obj); 或者 queue.poll(obj);,这样我们自己不需要做任何同步。但如果是非原子操作,比如:  if(!queue.isEmpty()) {

2016-08-12 14:52:01 278

转载 ConcurrentLinkedQueue学习(二)

服务端原本有个定时任务对一个集合ArrayList 中的消息做处理。 因为考虑到处理消息是先进先出原则,所以优化的时候考虑改用ConcurrentLinkedQueue 当时没仔细深入研究过这个集合就匆匆上线了。结果刚上线第二天就出问题了。服务端一次优化演变成了一个缺陷,还好及时回退了版本,后果才不是很严重。回退后对ConcurrentLinkedQueue 做了一个简单的测试代码如下

2016-08-12 14:50:07 252

转载 ConcurrentLinkedQueue学习(一)

Java并发包中有很多精心设计的高并发容器。有ConcurrentHashMap、ConcurrentSkipListMap 、ConcurrentLinkedQueue等。ConcurrentLinkedQueue就是其中设计最为优雅的高并发容器。它被设计成了无锁的、无界的、非阻塞式的单向链表结构。现在就让我们来一步一步揭开他们神秘的面纱。        一说到链表结构,我们首先就会想到的就

2016-08-12 14:37:02 252

转载 concurrentHashMap学习(四)

package JUC;import java.util.Collections;import java.util.HashMap;import java.util.Hashtable;import java.util.Map;import java.util.concurrent.ConcurrentHashMap;/** * 测试HashMap和ConcurrentHashMap

2016-08-12 11:42:17 261

转载 concurrentHashMap学习(三)

ConcurrentHashMap的简要总结:1、public V get(Object key)不涉及到锁,也就是说获得对象时没有使用锁;2、put、remove方法要使用锁,但并不一定有锁争用,原因在于ConcurrentHashMap将缓存的变量分到多个Segment,每个Segment上有一个锁,只要多个线程访问的不是一个Segment就没有锁争用,就没有堵塞,各线程用各自

2016-08-12 11:32:51 210

原创 concurrentHashMap学习(二)

一、ConcurrentHashMap的初始化下面我们来结合源代码来具体分析一下ConcurrentHashMap的实现,先看下初始化方法:public ConcurrentHashMap(int initialCapacity, float loadFactor, int concurrencyLevel) { if (!(l

2016-08-12 11:26:47 245

原创 concurrentHashMap学习(一)

集合是编程中最常用的数据结构。而谈到并发,几乎总是离不开集合这类高级数据结构的支持。比如两个线程需要同时访问一个中间临界区(Queue),比如常会用缓存作为外部文件的副本(HashMap)。这篇文章主要分析jdk1.5的3种并发集合类型(concurrent,copyonright,queue)中的ConcurrentHashMap,让我们从原理上细致的了解它们,能够让我们在深度项目开发中获益非浅

2016-08-12 11:04:55 248

转载 设计包含min函数的栈

前言  这是一道经常遇见的面试题。好像网易和google都曾出过此题。这道题解法也胜多。这里给出普遍的一种解法。即增加一个辅助堆栈来存储最小值。    本系列文章均系笔者所写,难免有一些错误或者纰漏,如果小伙伴们有好的建议或者更好的算法,请不吝赐教。正文【题目】   定义栈的数据结构,要求添加一个min函数,能够得到栈的最小元素。要求函数min、push以及pop的时间

2016-06-02 18:34:06 215

转载 《Spring技术内幕》学习笔记2——IoC定位Bean定义资源

1.IoC容器初始化:spring的IoC容器初始化包括:Bean定义资源文件的定位、载入和注册3个基本过程。(1).Bean定义资源文件的定位:Bean定义资源文件定位由ResourceLoader通过统一的Resource接口来完成,Resource接口将各种形式的Bean定义资源文件封装成统一的、IoC容器可进行载入操作的对象。(2).Bean定义资源文件的载入:Bean

2016-05-19 13:58:03 308

转载 《Spring技术内幕》学习笔记1——IoC容器体系结构

1. BeanFactory类结构体系:BeanFactory接口及其子类定义了spring IoC容器体系结构,由于BeanFactory体系非常的庞大和复杂,因此要理解Spring IoC,需要先理清BeanFactory的继承机构。2. ApplicationContext的结构体系:ApplicationContext接口是一个BeanFactory基础上封装了更多功能的,

2016-05-18 16:56:59 257

转载 Java NIO原理

一.java NIO 和阻塞I/O的区别     1. 阻塞I/O通信模型     2. java NIO原理及通信模型二.java NIO服务端和客户端代码实现 具体分析: 一.java NIO 和阻塞I/O的区别 1. 阻塞I/O通信模型 假如现在你对阻塞I/O已有了一定了解,我们知道阻塞I/O在调用InputStream.read()方法时是阻塞的

2016-04-27 09:33:53 441

转载 struts上传和下载

在做B/S系统时,通常会涉及到上传文件和下载文件,在没接struts2框架之前,我们都是使用apache下面的commons子项目的FileUpload组件来进行文件的上传,但是那样做的话,代码看起来比较繁琐,而且不灵活,在学习了struts2后,struts2为文件上传下载提供了更好的实现机制,在这里我分别就单文件上传和多文件上传的源代码进行一下讲解,这里需要导入文件下载上传的两个jar文件,一

2016-04-21 15:29:21 305

转载 Servlet是如何实现MVC的

Servlet是一种服务器端的编程语言,是J2EE中比较关键的组成部分,Servlet技术的推出,扩展了Java语言在服务器端开发的功能,巩固了Java语言在服务器端开发中的地位,而且现在使用非常广泛的JSP技术也是基于Servlet的原理.JSP+JavaBeans+Servlet成为实现MVC模式的一种有效的选择。如果我们要实现一个对用户的增删改查,并且要求符合对扩展开发,

2016-04-20 10:59:31 429

原创 堆排序(Java实现)

在程序设计相关领域,堆(Heap)的概念主要涉及到两个方面:一种数据结构,逻辑上是一颗完全二叉树,存储上是一个数组对象(二叉堆)。垃圾收集存储区,是软件系统可以编程的内存区域。本文所说的堆,指的是前者。堆排序的时间复杂度是O(nlgN),与快速排序达到相同的时间复杂度。但是在实际应用中,我们往往采用快速排序而不是堆排序。这是因为快速排序的一个好的实现,往往比堆排序具有更好的

2016-04-19 16:04:53 320

转载 java 二叉树遍历

import java.util.HashMap;import java.util.LinkedList;import java.util.Map;import java.util.Queue;import java.util.Stack;/** * * @author kerryfish * JAVA实现二叉树的先序、中序、后序、层序遍历 * 递归和非递归版本 * */

2016-04-19 09:30:04 374

转载 反射机制

反射,当时经常听他们说,自己也看过一些资料,也可能在设计模式中使用过,但是感觉对它没有一个较深入的了解,这次重新学习了一下,感觉还行吧!          一,先看一下反射的概念:             主要是指程序可以访问,检测和修改它本身状态或行为的一种能力,并能根据自身行为的状态和结果,调整或修改应用所描述行为的状态和相关的语义。            反射是j

2016-04-19 09:04:19 280

转载 java中的深复制和浅复制

Java语言的一个优点就是取消了指针的概念,但也导致了许多程序员在编程中常常忽略了对象与引用的区别,本文会试图澄清这一概念。并且由于Java不能通过简单的赋值来解决对象复制的问题,在开发过程中,也常常要要应用clone()方法来复制对象。本文会让你了解什么是影子clone与深度clone,认识它们的区别、优点及缺点。      看到这个标题,是不是有点困惑:Java语言明确说明取消了指针,

2016-04-19 08:54:03 267

转载 阿里校招面试

写在前面 : 2015 年 7 月初,参加阿里巴巴校招内推, 8 月 15 日拿到研发工程师 JAVA 的 offer 。我的专业并非计算机,也没有在互联网公司实习过,只有一些学习和面试心得,供大家参考。阿里巴巴 90%以上使用 Java ,所以下面的分享也基于 Java 岗,如有表达不准确的地方,请提出建议和指正。7 月上旬投递简历, 7 月 27 号至 29 号连续三天,每天一面,在 8

2016-04-18 09:31:20 1545 1

转载 Bean复制的几种框架性能比较(Apache BeanUtils、PropertyUtils,Spring BeanUtils,Cglib BeanCopier)

作为一个新员工,一个首要的工作就是阅读别人的代码,阅读代码的诸多好处就不说了,我就直奔主题,通过预读代码,发现了几种实现两个不同类型的Bean之间实现值复制的几种方式,上网查询后发现性能上会有差异,于是就萌生自己深入了解几种实现的想法。第一步就是先本着实事求是的原则去探求一下大家总结出来的性能差异是否正确。       比较的是四种复制的方式,分别为Apache的BeanUtils和Pro

2016-04-15 08:57:02 696

原创 BeanUtils的使用

BeanUtils工具包是由Apache公司所开发,主要是方便程序员对Bean类能够进行简便的操作。在使用BeanUtils工具包之前我们需要的Jar包有以下几种:(1)   BeanUtils相关包commons-beanutils-1.8.3.jarcommons-beanutils-1.8.3-javadoc.jarcommons-beanutils-1.8.3-java

2016-04-15 08:41:08 363

转载 单链表

import java.util.HashMap;import java.util.Scanner;import java.util.Stack;/** * * @author kerryfish * 关于java中链表的操作 * 1. 求单链表中结点的个数: getListLength * 2. 将单链表反转: reverseList(遍历),reverseListRec(

2016-04-13 21:00:15 223

转载 归并排序

归并排序,图解,详细过程。代码如下:[java] view plain copy package com.collonn.algorithm.sort;    /**  *   * 经典归并排序  *   */  public class MergeSort {

2016-04-11 15:28:46 235 1

转载 插入排序

插入排序                                                                                                                                                                    By   Yujian冒泡排序、选择排序、插入排

2016-04-11 10:17:03 237

转载 选择排序

选择排序   选择排序(Selection Sort)的基本思想是:每一趟从待排序的记录中选出关键字最小的记录,顺序放在已排好序的子文件的最后,直到全部记录排序完毕。      常用的选择排序方法有简单选择排序和堆排序。  简单选择排序 在介绍选择排序算法前,我们再回顾下冒泡算法。 冒泡算法是通过两两比较,不断交换,逐个推进的方式,来进行

2016-04-11 10:16:20 251

转载 冒泡排序

是不是觉得冒泡算法很简单?是的,确实很简单,中心思想是两两交换。 那你能写出冒泡算法吗?你能解释冒泡算法中的各层含义是什么吗?你又能写出几种冒泡算法呢?  曾经在面试中,遇到过冒泡算法,我能模糊的写出,却纠结于参数边界值的控制。为了不再继续模糊下去,为了不至于被人鄙视----硕士毕业3年了,连这个小算法也搞不好。于是趁此离职时

2016-04-11 09:23:19 354

原创 String、StringBuffer与StringBuilder之间区别

最近学习到StringBuffer,心中有好些疑问,搜索了一些关于String,StringBuffer,StringBuilder的东西,现在整理一下。关于这三个类在字符串处理中的位置不言而喻,那么他们到底有什么优缺点,到底什么时候该用谁呢?下面我们从以下几点说明一下  1.三者在执行速度方面的比较:StringBuilder >  StringBuffer  >  String

2016-04-10 19:17:50 181

空空如也

空空如也

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

TA关注的人

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