自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Disruptor 学习笔记

Disruptor 是什么 Disruptor 是一个高性能异步处理框架,也可以认为是一个消息框架,它实现了观察者模式。 Disruptor 比传统的基于锁的消息框架的优势在于:它是无锁的、CPU友好;它不会清除缓存中的数据,只会覆盖,降低了垃圾回收机制启动的频率。   Disruptor 为什么快 1. 不使用锁。通过内存屏障和原子性的CAS操作替换锁。 2. 缓存基于数组而不是链...

2015-04-12 23:06:17 239

原创 Zookeeper 笔记

ZooKeeper   ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、名字服务、分布式同步、组服务等。     zookeeper的安装基本上可以按照以官网的步骤完成:http://zookeeper.apache.o...

2015-04-12 22:42:53 161

Netty 源码阅读学习

背景    最忌工作中接触到Netty相关应用场景,之前看过mima的部分源码,所以最近看了Netty的部分源码和学习其设计思想,做个简单的分享(学习代码为:Netty:3.6.3.FINALE)。   Netty概述 官方:Netty is an asynchronous event-driven network application framework for rapid de...

2014-09-18 21:40:11 217

原创 ThreadLocal

ThreadLocal作用 ThreadLocal提供了一种规范的方法来维持线程的封闭性。为每个线程单独保存一份变量副本,避免并发访问导致的问题。如果同个线程的变量需要在线程内不同的上下文中传递,通过ThreadLocal可以减少传递的成本(通过延迟初始化,还可以减少初始化成本)。   ThreadLocal实现原理 ThreadLocal的构造函数相当简单,没有任何参数,也不执行任何...

2014-08-05 21:08:50 96

原创 ReentrantLock AQS 源码阅读笔记

ReentrantLock是JDK1.5引入的,它拥有与synchronized相同的并发性和内存语义,并提供了超出synchonized的其他高级功能(例如,中断锁等候、条件变量等),并且使用ReentrantLock比synchronized能获得更好的可伸缩性 AQS(AbstractQueuedSynchronizer)主要利用硬件原语指令(CAS compare-and-swap),...

2014-08-05 21:06:29 380

原创 Java 内存可见性与volatile

在多核系统中,处理器一般有一层或者多层的缓存,这些的缓存通过加速数据访问(因为数据距离处理器更近)和降低共享内存在总线上的通讯(因为本地缓存能够满足许多内存操作)来提高CPU性能。如图:处理器的多层缓存模型  JVM需要实现跨平台的支持,它需要有一套自己的同步协议来屏蔽掉各种底层硬件和操作系统的不同,因此就引入了Java内存模型JMM。 JMM(Java Memory Model)主要是为...

2014-06-28 23:24:51 144

nio Selector 阻塞 唤醒 原理

Selector:java nio无阻塞io实现的关键。阻塞io和无阻塞io:阻塞io是指jdk1.4之前版本面向流的io,服务端需要对每个请求建立一堆线程等待请求,而客户端发送请求后,先咨询服务端是否有线程相应,如果没有则会一直等待或者遭到拒 绝请求,如果有的话,客户端会线程会等待请求结束后才继续执行。当并发量大,而后端服务或客户端处理数据慢时就会产生产生大量线程处于等待中,即上述的阻塞。 ...

2014-03-18 16:18:43 1125 4

原创 java nio Buffer 学习笔记

Buffer 是一个对象, 它包含一些要写入或者刚读出的数据,即数据的缓冲区。在 NIO 中加入 Buffer 对象,体现了新库与原 I/O 的一个重要区别,在面向流的 I/O 中,您将数据直接写入或者将数据直接读到 Stream 对象中。buffer + channel 类似原io包中的BufferedInputStream/BufferedOutputStream,对数据流做了缓冲,减少磁...

2014-03-17 14:54:05 126

原创 java nio channel 学习笔记

Channel直译就是通道的意思,通道表示对数据源头和数据目标流经途径的抽象描述,和io中的InputStream和OutputStream类似。 首先借用网络上一张Channel的类图: 从channel的类层次结构来看在接口层面有区分读和写两种操作(ReadableByteChannel和WritableByteChannel),这点类似InputStream和OutputStre...

2014-03-10 23:20:36 134

原创 java 动态代理

java的动态代理可以动态的创建并动态的处理所代理的方法调用,可以提供对另一个对象的访问,同时隐藏实际对象的具体事实,代理对象对客户隐藏了实际对象。动态代理可以对请求进行其他的一些处理,在不允许直接访问某些类,或需要对访问做一些特殊处理等,这时候可以考虑使用代理。   java动态代理主要是通过 java.lang.reflect.Proxy 类和 java.lang.reflect.In...

2013-09-25 23:29:00 69

原创 java 泛型通配符

泛型是Java SE 1.5的新特性,泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。这种参数类型可以用在类、接口和方法的创建中,分别称为泛型类、泛型接口、泛型方法。    泛型的好处是在编译的时候检查类型安全,并且所有的强制转换都是自动和隐式的,提高代码的重用率。 其中通配符“?”表示未知类型,可以是任何引用类型。通配符一般会结合extend或super使用,来约束泛型...

2013-09-25 23:25:57 89

原创 java堆和栈

Java把内存划分成两种:一种是栈内存,一种是堆内存。 1. 栈(stack)与堆(heap)都是Java用来在Ram中存放数据的地方。2. 栈的优势是,存取速度比堆要快,仅次于直接位于CPU中的寄存器;缺点是,存在栈中的数据大小与生存期必须是确定的,缺乏灵活性。另外,栈数据可以共享。堆的优势是可以动态地分配内存大小,生存期也不必事先告诉编译器,Java的垃圾收集器会自动收走这些不再使用的数据...

2013-09-23 22:58:30 67

原创 Java nio 基础概念笔记

  Channel: ServerSocketChannel 创建服务器端Socket,监听某特定端口,接收客户端请求。 SocketChannel 用于描述在一个客户端连接,既可以是发起请求的客户端本身的连接,也可以在表示该请求在服务器端与之对应的SocketChannel连接对象。几乎所有的数据读写操作都在这个类中完成。可以有block和nonblock两种方式。     Byte...

2012-12-27 12:09:08 83

Apache MINA (4) 接收处理请求的过程

上一篇博客 Apache MINA (3) NioSocketAcceptor初始化 了解了NioSocketAcceptor的初始化过程,完成了初始化,Acceptor线程被阻塞,处于等待客户端请求到达的状态,通过进一步研究源代码了解Mina处理请求的过程。 当有客户端的请求到达时selector.select()被唤醒   if (selected > 0) { ...

2012-12-23 23:50:18 457

原创 Apache MINA (3) NioSocketAcceptor初始化

上一篇博客Apache MINA (2) Hello World! 以一个例子实现了mina客户端和服务端的通讯,现在通过源码来了解建立连接和通讯的过程(基于tcp/ip的实现)。 服务端通过创建一个NioSocketAcceptor来接受请求,客户端通过创建NioSocketConnector来连接服务端并发送请求,从整体的体系结构来看二者的关系。  IoService是对于服务器端接受连接...

2012-12-09 16:53:24 300

原创 Apache MINA (2) Hello World!

了解完Apach MINA的一些基本概念Apache MINA (1) 简介 ,开始进入MINA相关的代码学习,以一个简单HelloWorld程序开始,完成客户端与服务端之间的通讯。   准备工作: org.apache.mina 版本4.0 org.slf4j 1.6.1 (Simple Logging Facade for Java)mina所使用的日志框架,该版本是与min...

2012-07-26 23:40:47 97

原创 Apache MINA (1) 简介

简介: Apache MINA(Multipurpose Infrastructure for Network Applications) 是一个网络应用框架,有助于用户非常方便地开发高性能、高伸缩性的网络应用。它通过Java NIO提供了一个抽象的、事件驱动的、异步的位于各种传输协议(如TCP/IP和UDP/IP)之上的API。Mina 框架:    IoService Io...

2012-07-26 22:14:45 106

原创 BufferedInputStream 源码学习笔记

BufferedInputStream 是一个带有内存缓冲的 InputStream. 1.首先来看类结构 : BufferedInputStream是继承自FilterInputStream。 FilterInputStream继承自InputStream属于输入流中的链接流,同时引用了InputStream,将InputStream封装成一个内部变量,同时构造方...

2012-06-17 19:01:15 594

原创 linux 查看系统命令

系统 # uname -a               # 查看内核/操作系统/CPU信息 # head -n 1 /etc/issue   # 查看操作系统 版本 # cat /proc/cpuinfo      # 查看CPU信息 # hostname               # 查看计算机名 # lspci -tv              # 列出所有PCI设备...

2012-01-06 13:23:00 72

原创 [转]JVM崩溃Log日志分析

转自:http://blog.sina.com.cn/s/blog_4c98b9600100jq38.html   Java的应用有时候会因为各种原因Crash,这时候会产生一个类似java_errorpid.log的错误日志。可以拿到了 这个日志,怎样分析Crash的原因呢?下面我们来详细讨论如何分析java_errorpid.log的错误日志。 一. 如何得到这个日志文件 如...

2011-11-02 15:21:31 309

javascript 实现 java 中String的hashcode方法

javascript中有需要用到像类似java中的hashcode方法,想把java中的hashcode方法直接搬到js中发现不行 /** * Returns a hash code for this string. The hash code for a * <code>String</code> object is computed as ...

2011-07-14 14:20:16 356

原创 SAR系统性能检测工具

/**  * sar man手册简译, 欢迎大家补充、指正  * Author: cnscn  * Time  : 2006-10-17 09:10  *  */sar ---  收集、报告或保存系统活动信息 Collect, report, or save system activity information Options:   -A     列出保存的当天的所有活动的文...

2011-02-15 17:24:03 105

原创 java 反射内部类

内部类的初始化同一般类的初始化基本相同,只是内部类的类名全称有些区别。下面定义了一个Outer类和一个Inner类: public class Outer{ public class Inner{ } }    通过如下方法可以得到Inner类的类名: public class Outer{ public class Inner{ } p...

2011-01-17 22:05:45 150

原创 java虚拟机体系结构

java虚拟机(Java Virtual Machine)是运行所有Java程序的抽象计算机,是Java语言的运行环境。支持Java面向网络体系结构三大支柱的所有方面:平台无关性、安全性和网络移动性。     根据上图所示,java虚拟机体系结构中最重要的部分就是类装载子系统、运行时数据区、执行引擎等   类装载子系统  Java虚拟机中,负责查找并装载类型的那部分称为类...

2010-12-25 21:19:41 99

原创 java虚拟机生命周期

    一个运行时的Java虚拟机负责运行一个Java程序。当启动一个Java程序时,一个虚拟机实例也就诞生了。当程序关闭退出,这个虚拟机实例也就随之消亡。如果在同一台计算机上同时运行三个Java程序,将得到三个Java虚拟机实例。每个Java程序都运行于它自己的Java虚拟机实例中。     Java虚拟机实例通过调用某个初始类的main()方法来运行一个Java程序。而这个main()方法必...

2010-12-25 20:56:24 87

原创 (转)spring.jar包详解

spring.jar是包含有完整发布的单个jar包,spring.jar中包含除了spring-mock.jar里所包含的内容外其它所 有jar包的内容,因为只有在开发环境下才会用到spring-mock.jar来进行辅助测试,正式应用系统中是用不得这些类的。     除了spring.jar文件,Spring还包括有其它13个独立的jar包,各自包含着对应的Spring组件,用户可以根据自...

2010-02-20 16:13:15 80

maven起步

1.maven介绍 maven是一个apache的基于Java的项目管理工具,用来管理和构建项目使用的,它的功能类似于Ant,能很好的管理项目的生命周期、项目的依赖,Ant的构建脚本名为build.xml,Maven的构建脚本名为pom.xml,它把ANT所具有的很多功能都 包装成了一个个的插件,这样使用者就可以用一个命令完成ANT要写大量XML脚本完成的任务。 2.ma...

2009-11-17 17:28:00 110

js跨域问题之跨域iframe自适应大小

问题: A域名下的页面a.htm中通过iframe嵌入B域名下的页面b.html,由于b.html的大小等是不可预知而且会变化的,所以需要a.htm中的iframe自适应大小. 问题本质 : js的跨域问题,因为要控制a.htm中iframe的大小就必须首先读取得到b.html的大小,A、B不属于同一个域,js的访问受限,读取不到b.html的大小.   解决方案: 首先前提...

2009-07-15 20:44:51 265

设计模式学习之--Factory

     工厂模式是用来创建对象的(工厂)。 抽象工厂就是工厂的工厂- -# 适用场景:如果创建实例的时做的事情不是如赋值这样简单的事,可能是很长一段代码的操作,如果也写入构造函数中,那明显的就违背了面向对象的原则.封装(Encapsulation)和分派(Delegation);此时就需要将创建实例的责任与使用实例的责任分开。 抽象工厂结构图:   优点: i.    具体的部件类与...

2009-07-13 16:11:48 72

原创 敏捷设计原则

软件设计是一个抽象的概念。它和程序的概括形状(Shape)、结构以及每一个模块、类和方法的详细形状和结构有关。可以使用许多不同的媒介去描绘它,但是它最终体现为源代码。最后,源代码就是设计。       拙劣设计的症状 僵化性(Rigidity):设计难以改变。很难对系统进行改动,因为每个改动都会迫使...

2009-07-13 15:29:17 133

原创 Spring中编程式事务处理(使用TransactionTemplate)

Spring的编程式事务处理,需要使用Hibernate事务回调接口,事务回调接口可以管理Hibernate的事务: TransactionCallbackWithoutResult —— 执行事务没有返回值,例如save、update、delete等等; TransactionCallback —— 执行事务处理后有返回值,如find要返回结果集(List); 使用Spring的IoC容器...

2009-07-13 11:35:53 132

空空如也

空空如也

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

TA关注的人

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