自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 排序算法总结

排序大的分类可以分为两种:内排序和外排序。在排序过程中,全部记录存放在内存,则称为内排序,如果排序过程中需要使用外存,则称为外排序。下面讲的排序都是属于内排序。  内排序有可以分为以下几类:  (1)、插入排序:直接插入排序、二分法插入排序、希尔排序。  (2)、选择排序:简单选择排序、堆排序。  (3)、交换排序:冒泡排序、快速排序。  (4)、归并排序  (5)、基数排序(1)插入排序•关键问

2016-08-31 21:10:19 641

转载 字符串全排列

[java] view plain copy import org.junit.Test;    public class AllSort {        public void permutation(char[] buf, int start, int end) {          if (start == end) {// 当只要求对数

2016-08-27 17:15:00 586

转载 ConcurrentHashMap源码解析

最近有点想研究下java.util.concurrent 包下的一些类中的实现,在现实中也对这包里的类应用不少,但都没怎么去深入理解,只是听说里面的实现在高并发中有不错的性能。。接下将对里面的几个比较常用的类的源码进行分析。。    ConcurrentHashMap类   研究源码时,我一般喜欢从实际的应用中去一步步调试分析。。这样理解起来容易很多。   

2016-08-21 11:59:19 536

转载 Java集合-CopyOnWriteArrayList

CopyOnWriteArrayList是ArrayList 的一个线程安全的变体,其中所有可变操作(add、set等等)都是通过对底层数组进行一次新的复制来实现的。     这一般需要很大的开销,但是当遍历操作的数量大大超过可变操作的数量时,这种方法可能比其他替代方法更 有效。在不能或不想进行同步遍历,但又需要从并发线程中排除冲突时,它也很有用。“快照”风格的迭代器方法在创建迭代器时使用了对

2016-08-21 11:42:27 381

转载 Java集合---ConcurrentHashMap原理分析

转自:http://www.cnblogs.com/ITtangtang/p/3948786.html 集合是编程中最常用的数据结构。而谈到并发,几乎总是离不开集合这类高级数据结构的支持。比如两个线程需要同时访问一个中间临界区(Queue),比如常会用缓存作为外部文件的副本(HashMap)。这篇文章主要分析jdk1.5的3种并发集合类型(concurrent,copyonwrite,qu

2016-08-21 11:40:05 387

转载 ACM-直方图最大面积-Largest Rectangle in Histogram

Largest Rectangle in Histogram题目描述:Given n non-negative integers representing the histogram’s bar height where the width of each bar is 1, find the area of largest rectangle in the histogram.

2016-08-20 21:01:12 898

转载 Strusts2原理解析

首先我们看一下struts官方给我们提供的struts执行流程从上面流程图我们可以看出struts执行的流程大体分一下阶段:1. 初始的请求通过一条标准的过滤器链,到达servlet 容器( 比如tomcat 容器,WebSphere 容器)。2. 过滤器链包括可选的ActionContextCleanUp 过滤器,用于系统整合技术,如SiteMesh 插件

2016-08-20 10:47:14 1342

转载 Java初始化顺序

1  无继承情况下的Java初始化顺序:class Sample{      Sample(String s)      {            System.out.println(s);      }      Sample()      {            System.out.println("Sample默认构造函数被调用");    

2016-08-20 10:00:35 332

转载 java中线程执行顺序控制

一:join()方法.thread.Join把指定的线程加入到当前线程,可以将两个交替执行的线程合并为顺序执行的线程。比如在线程B中调用了线程A的Join()方法,直到线程A执行完毕后,才会继续执行线程B。publicclass JoinTest2 {     // 1.现在有T1、T2、T3三个线程,你怎样保证T2在T1执行完后执行,T3在T2执行

2016-08-19 19:50:53 6017

转载 详解Java GC的工作原理+Minor GC、FullGC

除直接调用System.gc外,触发Full GC执行的情况有如下四种。1. 旧生代空间不足旧生代空间只有在新生代对象转入及创建为大对象、大数组时才会出现不足的现象,当执行Full GC后空间仍然不足,则抛出如下错误:java.lang.OutOfMemoryError: Java heap space 为避免以上两种状况引起的Full GC,调优时应尽量做到让

2016-08-19 11:50:05 4844

转载 操作系统之信号量

信号量的定义:为了防止出现因多个程序同时访问一个共享资源而引发的一系列问题,我们需要一种方法,它可以通过生成并使用令牌来授权,在任一时刻只能有一个执行线程访问代码的临界区域。临界区域是指执行数据更新的代码需要独占式地执行。而信号量就可以提供这样的一种访问机制,让一个临界区同一时间只有一个线程在访问它,也就是说信号量是用来调协进程对共享资源的访问的。信号量是一个特殊的变量,程序对其访

2016-08-19 11:00:51 3967

转载 JAVA容器-HashTable

有两个类都提供了一个多种用途的hashTable机制,他们都可以将可以key和value结合起来构成键值对通过put(key,value)方法保存起来,然后通过get(key)方法获取相对应的value值。一个是前面提到的HashMap,还有一个就是马上要讲解的HashTable。对于HashTable而言,它在很大程度上和HashMap的实现差不多,如果我们对HashMap比较了解的话,对Has

2016-08-19 10:59:50 334

转载 HashMap遍历的两种方式

第一种: Java代码  Map map = new HashMap();  Iterator iter = map.entrySet().iterator();  while (iter.hasNext()) {      Map.Entry entry = (Map.Entry) iter.next();      Object key = 

2016-08-10 17:43:46 338

转载 Java 遍历HashMap并修改(remove)

遍历HashMap的方法有多种,比如通过获取map的keySet, entrySet, iterator之后,都可以实现遍历,然而如果在遍历过程中对map进行读取之外的操作则需要注意使用的遍历方式和操作方法。public class MapIteratorTest { private static Map map = new HashMap(); public st

2016-08-10 17:35:18 17836

转载 hashCode与equals的区别与联系

为什么覆盖(不是重载)equals方法一定要覆盖hashCode方法因为如果只覆盖了equals而没有覆盖hashCode, 则两个不同的instance a和b虽然equals结果(业务逻辑上)相等,但却会有不同的hashcode,这样hashmap里面会同时存在a和b,而实际上我们需要hashmap里面只能保存其中一个,因为从业务逻辑方向看它们是相等的. equals方法和ha

2016-08-10 17:26:30 3785

转载 Java HashSet详解

HashSet 的实现 对于 HashSet 而言,它是基于 HashMap 实现的,HashSet 底层采用 HashMap 来保存所有元素,因此 HashSet 的实现比较简单,查看 HashSet 的源代码,可以看到如下代码: Java代码  public class HashSet    extends AbstractSet    

2016-08-10 16:43:20 403

转载 JAVA HashMap详解

HashMap 和 HashSet 是 Java Collection Framework 的两个重要成员,其中 HashMap 是 Map 接口的常用实现类,HashSet 是 Set 接口的常用实现类。虽然 HashMap 和 HashSet 实现的接口规范不同,但它们底层的 Hash 存储机制完全一样,甚至 HashSet 本身就采用 HashMap 来实现的。 通过 HashMap

2016-08-10 15:44:30 344

转载 ThreadLocal类的用法与源码解析

首先,ThreadLocal 不是用来解决共享对象的多线程访问问题的,一般情况下,通过ThreadLocal.set() 到线程中的对象是该线程自己使用的对象,其他线程是不需要访问的,也访问不到的。各个线程中访问的是不同的对象。 另外,说ThreadLocal使得各线程能够保持各自独立的一个对象,并不是通过ThreadLocal.set()来实现的,而是通过每个线程中的new 对象 的操作

2016-08-10 11:30:17 394

转载 Concurrent包总结——线程任务执行框架

一 Executor接口Executor接口的对象是一种执行任务的方式。它能够使提交的任务和执行任务的线程的管理解耦。我们通常用Executor来代替new一个Thread对象来执行任务。这样可以省略底层线程的管理细节。例如:executor.excute(new RunnableTask());concurrent包中提供了比较常用的Executor的实现,这些实

2016-08-10 11:28:08 483

转载 Concurrent包总结——线程安全的集合操作

java中提供了丰富的集合类操作,大概可以分为无序结合Set,有序集合List和无序键值对集合Map。Java5之后又新增了队列操作集合Queue。Java1.5之后新增了线程安全的集合操作类,阻止在java.util.concurrent包中。本文仅仅探讨该包下面的线程安全的结合操作类。先看下concurrent包下面线程安全类的类图结构:   1.Cop

2016-08-10 11:27:45 5490

转载 Concurrent包总结——包结构概要

concurrent包是java提供的并发编程框架的一个库,该库为java并发编程提供各种各样的组件,主要包括以下几个方面:Atomic数据类型该部分主要是针对java的基础数据类型Boolean,Integer,Long,Reference,实现了其原子化操作的数据类型,该部分被放在java.util.concurrent.atomic包里   提供了线程安全

2016-08-10 11:08:42 769

原创 Course Schedule

There are a total of n courses you have to take, labeled from 0 to n - 1.Some courses may have prerequisites, for example to take course 0 you have to first take course 1, which is expressed as

2016-08-05 21:18:09 287

转载 Java并发编程:深入剖析ThreadLocal

想必很多朋友对ThreadLocal并不陌生,今天我们就来一起探讨下ThreadLocal的使用方法和实现原理。首先,本文先谈一下对ThreadLocal的理解,然后根据ThreadLocal类的源码分析了其实现原理和使用需要注意的地方,最后给出了两个应用场景。  以下是本文目录大纲:  一.对ThreadLocal的理解  二.深入解析ThreadLocal类  

2016-08-01 20:09:26 300

转载 我眼中的KMP

0、关于KMPKMP是用于字符匹配的一个常用算法。关于KMP概念、前缀、后缀概念参考文章中有详细介绍,这里就不做详细讨论,本文详细关注讨论KMP核心点,next数组的作用及求解思路,KMP算法的思路。1、next数组是什么next数组里面存放的是要查找的字符串前i个字符串的所有前缀、后缀相等的公共串中,最大的长度值。比如需要查找的一个子串ababcd,next[

2016-08-01 11:25:59 295

转载 关于图片或者文件在数据库的存储方式归纳

商品图片,用户上传的头像,其他方面的图片。目前业界存储图片有两种做法:1、  把图片直接以二进制形式存储在数据库中一般数据库提供一个二进制字段来存储二进制数据。比如mysql中有个blob字段。oracle数据库中是blob或bfile类型 2、  图片存储在磁盘上,数据库字段中保存的是图片的路径。 一、图片以二进制形式直接存储在数据库中 

2016-07-31 16:38:16 1526

转载 JAVA --String类笔试面试题

字符串对象是一种特殊的对象.String类是一个不可变的类..也就说,String对象一旦创建就不允许修改String类有一个对应的String池,也就是 String pool.每一个内容相同的字符串对象都对应于一个pool里的对象.1 看下面一段代码.String s = new String("abc");  String s1 = "abc";  Strin

2016-07-30 20:53:09 242

转载 Hibernate 延迟加载机制

一、延迟加载机制的基本原理当访问实体对象时,并不是立即到数据库中查找。而是在真正要使用实体对象的时候,才去数据库查询数据。具备这样功能的方法session.load(...)query.iterator()注意:这些方法返回的对象,里面没有数据,数据在使用的时候(调用 getXXX()方法时)才取。二、实现原理1)load 方

2016-07-29 11:22:50 391

转载 网络面试题整理

TCP/IP协议的工作流程如下:●在源主机上,应用层将一串应用数据流传送给传输层。●传输层将应用层的数据流截成分组,并加上TCP报头形成TCP段,送交网络层。●在网络层给TCP段加上包括源、目的主机IP地址的IP报头,生成一个IP数据包,并将IP数据包送交链路层。●链路层在其MAC帧的数据部分装上IP数据包,再加上源、目的主机的MAC地址和帧头,并根据其目的MAC地址,将MAC帧发

2016-07-28 11:20:48 606

转载 网易实习生笔试编程题 比较重量

小明陪小红去看钻石,他们从一堆钻石中随机抽取两颗并比较她们的重量。这些钻石的重量各不相同。在他们们比较了一段时间后,它们看中了两颗钻石g1和g2。现在请你根据之前比较的信息判断这两颗钻石的哪颗更重。给定两颗钻石的编号g1,g2,编号从1开始,同时给定关系数组vector,其中元素为一些二元组,第一个元素为一次比较中较重的钻石的编号,第二个元素为较轻的钻石的编号。最后给定之前的比较次数n。请

2016-07-26 21:05:18 1020

原创 网易实习生笔试编程题 二叉树

有一棵二叉树,树上每个点标有权值,权值各不相同,请设计一个算法算出权值最大的叶节点到权值最小的叶节点的距离。二叉树每条边的距离为1,一个节点经过多少条边到达另一个节点为这两个节点之间的距离。给定二叉树的根节点root,请返回所求距离。import java.util.*;/*public class TreeNode { int val = 0;

2016-07-26 17:07:24 1228

转载 深入理解java虚拟机(三):String.intern()-字符串常量池

深入理解java虚拟机(一):java内存区域(内存结构划分)深入理解java虚拟机(二):java内存溢出实战 深入理解java虚拟机(三):String.intern()-字符串常量池深入理解java虚拟机(四):对象存活判定算法和垃圾收集算法深入理解java虚拟机(五):hotspot垃圾收集算法实现 深入理解java虚拟机(六):java垃圾收集分析实战(内存分配与回收

2016-07-23 14:46:42 502

转载 深入理解java虚拟机(一):java内存区域(内存结构划分)

图一:java内存结构划分由上图可知,java内存主要分为6部分,分别是程序计数器,虚拟机栈,本地方法栈,堆,方法区和直接内存,下面将逐一详细描述。1、程序计数器线程私有,即每个线程都会有一个,线程之间互不影响,独立存储。代表着当前线程所执行字节码的行号指示器。2、虚拟机栈线程私有,它的生命周期和线程相同。描述的是java方法执行的内存模型:每个方法在执

2016-07-23 10:23:28 490

转载 String.intern()-字符串常量池

看源码: public native String intern();  Returns a canonical representation for the string object.A pool of strings, initially empty, is maintained privately by the class String.When the i

2016-07-23 10:16:47 412

转载 Java并发编程:并发容器之CopyOnWriteArrayList(转载)

原文链接:  http://ifeve.com/java-copy-on-write/    Copy-On-Write简称COW,是一种用于程序设计中的优化策略。其基本思路是,从一开始大家都在共享同一个内容,当某个人想要修改这个内容的时候,才会真正把内容Copy出去形成一个新的内容然后再改,这是一种延时懒惰策略。从JDK1.5开始Java并发包里提供了两个使用CopyOn

2016-07-20 23:20:53 598

转载 Spring中 @Autowired标签与 @Resource标签 的区别

Spring不但支持自己定义的@Autowired注解,还支持由JSR-250规范定义的几个注解,如:@Resource、 @PostConstruct及@PreDestroy。1. @Autowired    @Autowired是Spring 提供的,需导入    Package:org.springframework.beans.factory.annotation.Autowi

2016-07-20 16:46:16 240

转载 Struts2之异常处理机制

我们在知道在软件开发中的异常处理是很重要的,作为成熟的MVC框架的Struts2也提供了异常处理处理机制,对于一场处理:用户发送请求-->Action控制器-->发现相应的异常-->转到相应的试图进行显示错误信息..    (一)平时我们对于出现异常,可以直接使用try{}catch(){}进行拦截处理,或者使用throw new XXXException()进行抛出异常,看下

2016-07-19 20:47:18 401

转载 hashCode相关性能优化

学习下hashMap中用到的关于hashCode性能优化技巧,作为笔记,为之后并发深入作基础。1.关于提高性能的hash算法在被模的位数为2的n次方时,用位与代替效率低下的模运算。位与效率相比模运算效率更高。例:15%4=3,代替为 15 & 3=1111 & 0011=0011=3hashmap中在求得某个key后,需要找到在哪个Entry数组下标的运算如下:

2016-07-18 21:20:49 261

转载 struts2处理请求的过程分析

和struts2启动一样,它也有一个入口,那就是org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter的doFilter方法。[java] view plain copy public void doFilter(ServletRequest req, Servlet

2016-07-17 18:00:55 782

转载 struts2处理请求的过程

官方的流程图:客户端对tomcat服务器发出请求,将请求封装成HttpRequest对象,并进行预处理操作(如设置编码等);通过web.xml文件 找到struts2的前端控制器StrutsPrepareAndExcuteFilter,并调用doFilter()方法。[java] view plain copy p

2016-07-17 17:59:29 5447

转载 Struts1与Struts2原理 区别 详解 汇总

1.struts1和struts2 是2个完全不同的框架,其实struts2核心就是 webwork框架struts1以ActionServlet作为核心控制器,由ActionServlet负责拦截用户的所有请求。Struts 1框架有3个重要组成部分:Action、ActionForm和ActionForward对象。ActionForm必须实现ActionForm的基类,设计上并不是真正的P

2016-07-17 12:08:09 386

空空如也

空空如也

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

TA关注的人

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