自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Vern的专栏

新博客地址:http://www.vernonzheng.com

  • 博客(66)
  • 收藏
  • 关注

原创 新博客vernonzheng.com

csdn blog不再维护,以后转向github的新博客 。http://www.vernonzheng.com欢迎来访!

2014-12-15 01:27:12 1831 2

原创 BTrace介绍和生产环境例子

BTrace latest realese:release-1.2.5.1 BTrace guide(1.2-20101020):http://kenai.com/projects/btrace/pages/UserGuide例子:在压缩包内有。 一/简单介绍 BTrace 是一个可靠的,用来动态跟踪Java程序的工具。它通过动态对运

2014-08-16 14:57:43 3111

原创 About me

email:[email protected]:https://github.com/vernonzhengblog:http://blog.csdn.net/vernonzhengdouban book:http://www.douban.com/people/vernonzheng/

2014-08-15 18:01:48 1232

原创 Aop拦截Action 使得@Autowired 无法自动装配问题解决

对Struts1/2 Action应用Spring AOP问题小结       之前使用SSH三大经典框架的时候,写了一个简单的统计Action每个方法执行时间的功能类,代码如下:import javax.servlet.http.HttpServletRequest;import org.aopalliance.intercept.MethodInterceptor;import

2013-03-28 09:57:55 6591 1

原创 Java中Runtime.getRuntime().exec()错误:Cannot allocate memory!

用java的Runtime.getRuntime().exec(cmd)方式,执行aapt命令行解包apk文件时,遇到“Cannot allocate memory”的错误。但是直接在linux上使用aapt命令可以正常使用。网上查询资料整理如下:Cannot allocate memory在Linux上调试一个比较复杂的Java程序,称为JavaA吧,

2013-03-07 09:20:47 6549 9

原创 自己动手封装js工具类(JS中定义类的几种方式:混合的构造函数/原型方式,动态原型等)

整理内容来源网络:1、工厂方式   function Car(){   var ocar = new Object;   ocar.color = "blue";   ocar.doors = 4;   ocar.showColor = function(){   document.write(this.color)   };   return ocar

2013-01-12 23:18:44 4778

原创 深入JVM系列(三)之类加载、类加载器、双亲委派机制与常见问题

一.概述定义:虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的java类型。类加载和连接的过程都是在运行期间完成的。二. 类的加载方式1):本地编译好的class中直接加载2):网络加载:java.net.URLClassLoader可以加载url指定的类3):从jar、zip等等压缩文件

2013-01-03 16:19:15 12868 5

原创 深入JVM系列(二)之GC机制、收集器与GC调优

一、回顾JVM内存分配需要了解更多内存模式与内存分配的,请看 深入JVM系列(一)之内存模型与内存分配1.1、内存分配:1、对象优先在EDEN分配2、大对象直接进入老年代 3、长期存活的对象将进入老年代 4、适龄对象也可能进入老年代:动态对象年龄判断动态对象年龄判断:虚拟机并不总是要求对象的年龄必须达到MaxTenuringThresho

2013-01-03 00:07:48 12226 8

原创 深入JVM系列(一)之内存模型与内存分配

一、JVM内存区域划分大多数 JVM 将内存区域划分为 Method Area(Non-Heap),Heap,Program Counter Register,Java Method Stack,Native Method Stack 和Direct Memomry(注意 Directory Memory 并不属于 JVM 管理的内存区域)。前三者一般译为:方法区、堆、程序计数器。

2013-01-02 11:43:38 15379 16

原创 深入Hibernate的flush机制

一、理解flush机制之后单纯用原始的Hibernate框架做了一些验证,并且打开执行SQL打印输出台的,得出的结论:前提是在同一事务中间:1、利用sql语句, session.createSQLQuery(sql).executeUpdate();进行插入,输出台打印出sql插入语句; 再利用sql语句,进行session.cr

2012-12-22 20:45:39 5273

原创 Hibernate三种状态(Transient、Persistent、Detached)各种保存(save,persist,update,saveOrUpdte,merge,flush,lock)区别

一、三种状态(Transient、Persistent、Detached)在Hibernate中有三种状态,对它的深入理解,才能更好的理解hibernate的运行机理,刚开始不太注意这些概念,后来发现它是重要的。对于理解hibernate,JVM和sql的关系有更好的理解。对于需要持久化的JAVA对象,在它的生命周期中有三种状态,而且互相转化。1,  临时状态(Transien

2012-12-22 15:55:34 5651 2

原创 HTTP Keep Alive分析与优化总结

一、什么是HTTP Keep AliveHTTP Keep-Alive 很大程序上被误解了,下面介绍一下它在HTTP/1.0和HTTP/1.1版本下是如何工作的,以及其在JAVA中的运行原理及优化建议。HTTP是一个请求响应模式的典型范例,即客户端向服务器发送一个请求信息,服务器来响应这个信息。在老的HTTP版本中,每个请求都将被创建一个新的客户端->服务器的连接,在这个连接上发送

2012-12-22 14:16:09 4838

原创 走出重构(Refactoring)的误区

一、什么是重构?重构(Refactoring)这个词最初由Martin Fowler 和 Kent Beck给下的定义,它是一种修改,使软件的内部结构更容易理解,在不改变软件的可见行为方式前提下使软件更容易变更…它是一种有节制的整理代码、使bug产生几率最小化的方法。二、重构不是重新设计有些人喜欢把对一个系统的重新设计或重

2012-12-16 12:27:47 5679

原创 Java多线程(十二)之线程池深入分析(下)

一、数据结构与线程构造方法由于已经看到了ThreadPoolExecutor的源码,因此很容易就看到了ThreadPoolExecutor线程池的数据结构。图1描述了这种数据结构。图1 ThreadPoolExecutor 数据结构其实,即使没有上述图形描述ThreadPoolExecutor的数据结构,我们根据线程池的要求也很能够猜测出其数据结构出来。

2012-12-15 22:48:55 7289 6

原创 Java多线程(十一)之线程池深入分析(上)

线程池是并发包里面很重要的一部分,在实际情况中也是使用很多的一个重要组件。下图描述的是线程池API的一部分。广义上的完整线程池可能还包括Thread/Runnable、Timer/TimerTask等部分。这里只介绍主要的和高级的API以及架构和原理。大多数并发应用程序是围绕执行任务(Task)进行管理的。所谓任务就是抽象、离散的工作单元(unit of work)。把一个

2012-12-15 15:58:39 14428 12

原创 Java多线程(十)之ReentrantReadWriteLock深入分析

一、ReentrantReadWriteLock与ReentrantLock  说到ReentrantReadWriteLock,首先要做的是与ReentrantLock划清界限。它和后者都是单独的实现,彼此之间没有继承或实现的关系。ReentrantLock实现了标准的互斥操作,也就是一次只能有一个线程持有锁,也即所谓独占锁的概念。前面的章节中一直在强调这个特点。显然

2012-12-15 00:02:08 8102 4

原创 Java多线程(九)之ReentrantLock与Condition

一、ReentrantLock 类1.1 什么是reentrantlockjava.util.concurrent.lock 中的 Lock 框架是锁定的一个抽象,它允许把锁定的实现作为 Java 类,而不是作为语言的特性来实现。这就为 Lock 的多种实现留下了空间,各种实现可能有不同的调度算法、性能特性或者锁定语义。 ReentrantLock 类实现了 Lock ,它

2012-12-12 21:41:39 55898 4

原创 Java IO流分析、IO整理与IO优化

一、IO流的概念Java中对文件的操作是以流的方式进行的。流是Java内存中的一组有序数据序列。Java将数据从源(文件、内存、键盘、网络)读入到内存中,形成了流,然后将这些流还可以写到另外的目的地(文件、内存、控制台、网络),之所以称为流,是因为这个数据序列在不同时刻所操作的是源的不同部分。二、IO流的分类Java中的流,可以从不同的角度进行分类。按照数据

2012-12-11 22:13:06 6108 4

转载 java中的IO整理

写在前面:本文章基本覆盖了java IO的全部内容,java新IO没有涉及,因为我想和这个分开,以突出那个的重要性,新IO哪一篇文章还没有开始写,估计很快就能和大家见面。照旧,文章依旧以例子为主,因为讲解内容的java书很多了,我觉的学以致用才是真。代码是写出来的,不是看出来的。最后欢迎大家提出意见和建议。【案例1】创建一个新文件?12345

2012-12-11 21:31:54 2755

原创 Java多线程(八)之Semaphore、CountDownLatch、CyclicBarrier、Exchanger

一、引言Semaphore               :一个计数信号量CountDownLatch          :一个同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待。 CyclicBarrier           :一个同步辅助类,它允许一组线程互相等待,直到到达某个公共屏障点    Exchanger

2012-12-10 22:50:10 8546 2

原创 Java多线程(七)之同步器基础:AQS框架深入分析

一、什么是同步器多线程并发的执行,之间通过某种 共享 状态来同步,只有当状态满足 xxxx 条件,才能触发线程执行 xxxx 。这个共同的语义可以称之为同步器。可以认为以上所有的锁机制都可以基于同步器定制来实现的。而juc(java.util.concurrent)里的思想是 将这些场景抽象出来的语义通过统一的同步框架来支持。juc 里所有的这些锁机制都是基

2012-12-09 20:38:03 30298 5

原创 Java多线程(六)之Deque与LinkedBlockingDeque深入分析

一、双向队列DequeQueue除了前面介绍的实现外,还有一种双向的Queue实现Deque。这种队列允许在队列头和尾部进行入队出队操作,因此在功能上比Queue显然要更复杂。下图描述的是Deque的完整体系图。需要说明的是LinkedList也已经加入了Deque的一部分(LinkedList是从jdk1.2 开始就存在数据结构)。 Deque在Q

2012-12-07 00:00:22 21469 2

原创 Java中断的本质与分析

一、Java中断的现象首先,看看Thread类里的几个方法:public static boolean interrupted测试当前线程是否已经中断。线程的中断状态 由该方法清除。换句话说,如果连续两次调用该方法,则第二次调用将返回 false(在第一次调用已清除了其中断状态之后,且第二次调用检验完中断状态前,当前线程再次中断的情况除外)。publ

2012-12-02 21:52:03 3626

原创 Java多线程(五)之BlockingQueue深入分析

一、概述:BlockingQueue作为线程容器,可以为线程同步提供有力的保障。二、BlockingQueue定义的常用方法1.BlockingQueue定义的常用方法如下: 抛出异常特殊值阻塞超时插入add(e)offer(e)put(e)offer(e, time, unit)移除

2012-12-01 23:15:41 67072 16

转载 Web Service学习笔记(webservice、soap、wsdl、jws详细分析)

Web Service概述 Web Service的定义 W3C组织对其的定义如下,它是一个软件系统,为了支持跨网络的机器间相互操作交互而设计。Web Service服务通常被定义为一组模块化的API,它们可以通过网络进行调用,来执行远程系统的请求服务。 这里我们从一个程序员的视角来观察web service。在传统的程序编码中,存在这各种的函数方法调用。通常,我们知道一个程序

2012-12-01 13:25:47 5293

原创 Java多线程(四)之ConcurrentSkipListMap深入分析

一、前言 concurrentHashMap与ConcurrentSkipListMap性能测试在4线程1.6万数据的条件下,ConcurrentHashMap 存取速度是ConcurrentSkipListMap 的4倍左右。但ConcurrentSkipListMap有几个ConcurrentHashMap 不能比拟的优点:1、ConcurrentSkipLis

2012-11-30 21:10:44 12023 5

原创 Java多线程(三)之ConcurrentHashMap深入分析

一、Map体系Hashtable是JDK 5之前Map唯一线程安全的内置实现(Collections.synchronizedMap不算)。Hashtable继承的是Dictionary(Hashtable是其唯一公开的子类),并不继承AbstractMap或者HashMap。尽管Hashtable和HashMap的结构非常类似,但是他们之间并没有多大联系。Concurrent

2012-11-29 21:56:28 8270 3

翻译 Runtime.exec() 的陷阱

原文地址:http://www.javaworld.com/javaworld/jw-12-2000/jw-1229-traps.html?page=4作为Java语言的一部分。java.lang包被隐藏的导入到每一个Java程序。这个包的表面陷阱,经常影响到大多数程序员。这个月,我将讨论运行时exec()方法时的潜伏陷阱。陷阱4:当运行exec()不会java.lang.Ru

2012-11-25 13:54:32 10121 2

原创 Java多线程(二)之Atomic:原子变量与原子类

一、何谓Atomic? Atomic一词跟原子有点关系,后者曾被人认为是最小物质的单位。计算机中的Atomic是指不能分割成若干部分的意思。如果一段代码被认为是Atomic,则表示这段代码在执行过程中,是不能被中断的。通常来说,原子指令由硬件提供,供软件来实现原子方法(某个线程进入该方法后,就不会被中断,直到其执行完成)  在x86 平台上,CPU提供了在指令执行期

2012-11-21 09:19:35 19700 1

原创 Java多线程(一)之volatile深入分析

volatile 变量提供了线程的可见性,并不能保证线程安全性和原子性。什么是线程的可见性:锁提供了两种主要特性:互斥(mutual exclusion) 和可见性(visibility)。互斥即一次只允许一个线程持有某个特定的锁,因此可使用该特性实现对共享数据的协调访问协议,这样,一次就只有一个线程能够使用该共享数据。可见性要更加复杂一些,它必须确保释放锁之前

2012-11-19 23:29:55 11259 8

原创 vim学习笔记

vim 使用笔记 V1. 默认字符编码为utf8,打开使用gb2312编码的文件,中文全为乱码,如何恢复正常显示? 输入 edit ++enc=cp936V2. 如何在vim系统中执行命令? 输入 !cmdV3. 使用vim直接打开并编辑.*gz文件,而无须解压,读取,编辑,再压缩. 压缩文件的支持是通过pluginvim ls-lrR.txt.gzV4. 如何Vi

2012-11-18 15:40:58 2616

原创 zip解压中文乱码解决与使用ant实现zip解压缩

缘由:java对於文字的编码是以unicode为基础,因此,若是以ZipInputStream及ZipOutputStream来处理压缩及解压缩的工作,碰到中文档名或路径,那当然是以unicode来处理罗! 但是,现在市面上的压缩及解压缩软体,例如winzip,却是不支援unicode的,一碰到档名以unicode编码的档案,它就不处理。 那要如何才能做出让winzip能够处理的压缩档

2012-11-14 11:08:45 7780 3

原创 StringTokenizer类与String.split()的区别

一、StringTokenizer:字符串分隔解析类型属于:java.util包。1、构造函数。1. StringTokenizer(String str) :构造一个用来解析str的StringTokenizer对象。java默认的分隔符是“空格”、“制表符(‘\t’)”、“换行符(‘\n’)”、“回车符(‘\r’)”。2. StringTokenizer(Str

2012-11-10 19:28:17 9361 1

原创 Java中equals()与hashCode()的原理与设计

1.何时需要重写equals()当一个类有自己特有的“逻辑相等”概念(不同于对象身份的概念)。2.为什么改写equals()的时候,总是要改写hashCode()两个原则:hashCode()的返回值和equals()的关系如下:如果x.equals(y)返回“true”,那么x和y的hashCode()必须相等。如果x.equals(y)返

2012-11-06 16:58:21 2252

转载 Java HashMap实现详解

1.    HashMap概述:   HashMap是基于哈希表的Map接口的非同步实现。此实现提供所有可选的映射操作,并允许使用null值和null键。此类不保证映射的顺序,特别是它不保证该顺序恒久不变。 2.    HashMap的数据结构:   在java编程语言中,最基本的结构就是两种,一个是数组,另外一个是模拟指针(引用),所有的数据结构都可以用这两个基本结构

2012-11-01 23:16:20 1752 1

原创 Javascript三种文字编码方式(对应java里的编解码)

一、Javascript里三种编码方式js对文字进行编码涉及3个函数:escape,encodeURI,encodeURIComponent,相应3个解码函数:unescape,decodeURI,d  ecodeURIComponent1、   传递参数时需要使用encodeURIComponent,这样组合的url才不会被#等特殊字符截断。

2012-10-31 22:30:23 2572

原创 Hash一致性算法在分布式中的应用实践

一、Hash算法与分布式架构的发展第一阶段考虑到单服务器不能承载,因此使用了分布式架构,最初的算法为 hash() mod n, hash()通常取用户ID,n为节点数。此方法容易实现且能够满足运营要求。缺点是当单点发生故障时,系统无法自动恢复。第二阶段为了解决单点故障,使用 hash() mod (n/2), 这样任意一个用户都有2个服务器备选,可由clien

2012-10-27 16:02:26 1592

原创 页面显示js和HTML标签内容(防js注入攻击)

(1)只需要由界面输出的话,可以用document.write()(2)通用性更高的一种方法是使用textarea来完成。可以满足从后台批量取数据显示。比如这是个分页的表格内有个绑定字段包含html标签,如果不做处理,第一条记录的评论内容显示为空,如果内容由客户端上传,就可能会被js注入,获取cookies等信息。这里可以用第二种方法完美解决,“

2012-10-26 13:07:04 4107

原创 CAP,BASE和最终一致性是NoSQL数据库存在的三大基石

CAPCAP理论最早是在2000年7月19号,由Berkeley的Eric Brewer教授在ACM PODC会议上的一个开题演讲中提出,PPT在此。此后,MIT的Seth Gilbert和Nancy Lynch,理论上证明了Brewer猜想是正确的,CAP理论在学术上正式作为一个定理出现了。CAP理论的C就是一致性(Consistency),这里不多解释,想了解的可以看看我之

2012-10-25 23:02:36 4946

转载 hyperic mysql scaling 案例学习(数据库优化)

这是看了Sun 的communityone 上一篇介绍hyperic 在mysql 上scaling 的介绍写的笔记.hyperic 是一个在大型数据中心用作服务器管理和监控的软件,Hyperic HQ 提供中心服务器来收集多台主机的状态和性能指标,并且在一个中心界面上管理…… 其他的好处看后面的参考资料Hyperic 默认是支持三种数据库mysql,oracle,postgresql

2012-10-25 11:09:20 1712

空空如也

空空如也

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

TA关注的人

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