自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(15)
  • 资源 (5)
  • 收藏
  • 关注

原创 java序列化、hessian和protostuff性能比较

序列化机制可以把对象转化成字节数组,将字节数组还原为对象称为反序列化。序列化常用于网络传输对象或存储对象,RPC(远程过程调用)函数调用的参数和结果就是通过序列化成字节数组传递的。 java内置的序列化能将实现了Serilazable接口的对象进行序列化和反序列化,ObjectOutputStream的writeObject()方法可序列化对象生成字节数组 ByteArrayOutputStr

2016-03-02 18:40:52 2926

原创 命令模式

命令模式:将请求封装成对象,实现对客户调用的参数化,对请求排队或者记录请求日志,支持撤销请求。 Command声明执行请求的接口 interface Command { void execute(); }ConcreteCommand关联命令对象和命令的执行者,实现execute()方法 class ConcreteCommand implements Command

2016-03-01 10:14:39 345

原创 命令模式

命令模式:将请求封装成对象,实现对客户调用的参数化,对请求排队或者记录请求日志,支持撤销请求。

2016-03-01 10:13:46 133

原创 jdk源码学习:线程池

java中使用线程池一般使用Executors的工厂方法配置,newCachedThreadPool()创建无界线程池,可以进行线程的自动回收,newFixedThreadPool(int)创建固定大小的线程池,newSingleThreadExecutor()创建单线程线程池,它们通过对构造函数传递不同的参数来配置不同类型的线程池。 线程池构造函数:ThreadPoolExecutor(int

2016-02-29 15:33:35 330

原创 java nio学习:简单的echo服务

代码实现了一个简单单线程的echo服务,首先创建并绑定监听通道,接着注册到选择器中,选择器等待事件的发生,当有连接到来时创建新的连接并注册读事件,当连接有数据可读时读取并返回数据,当对端关闭连接时则注销事件并关闭连接 ServerSocketChannel acceptor = ServerSocketChannel.open();//创建监听通道 acceptor.configureBlock

2016-02-27 15:01:32 268

原创 java nio学习:缓冲区、通道和选择器

java nio中引入了缓冲区,缓冲区中的数据可以写入通道,也可以从通道中读取数据到缓冲区。nio中的缓冲区就是对数组的简单封装,缓冲区有读模式和写模式,缓冲区的属性有容量(capacity)、限制(limit)、位置(position),容量表示数组的大小,限制表示第一个不能读写的位置,位置表示读写索引的位置。 新申请一个1024字节的缓冲区 ByteBuffer buf = ByteBuf

2016-02-27 10:48:38 756 1

转载 Java NIO与IO的主要区别

原文地址:http://tutorials.jenkov.com/java-nio/nio-vs-io.html 作者:Jakob Jenkov   译者:郭蕾    校对:方腾飞 当学习了Java NIO和IO的API后,一个问题马上涌入脑海: 我应该何时使用IO,何时使用NIO呢?在本文中,我会尽量清晰地解析Java NIO和IO的差异、它们的使用场景,以及它们如何影响您的代

2016-02-26 11:25:32 281

原创 java IO和NIO性能比较

学习了java nio原理,一直停留在理论的阶段,今天就来对java中的IO和NIO性能做个测试,测试代码主要通过堆内存、直接内存和内存映射读取一个88M的文件,测试代码如下,刚开始缓冲大小都是1KB,后面改为文件大小(88MB)。 public class IOTest { //读取的文件,大小为88M static private File file = new File("D://1

2016-02-25 17:12:27 703

原创 123

[code=Java] import java.lang.reflect.Method; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; class Person { private String name; private int id;

2016-02-25 11:48:50 108

原创 sping AOP模拟实现

AOP即面向切面编程,是对OOP的很好的补充。OOP通过继承和多态可以向具有关系的对象引入公共的行为,AOP则可以向分散的对象引入公共的行为。AOP常用于日志、事务、调试等。 Sping可以通过多种方式实现AOP,本文通过jdk动态代理模拟经典的基于代理的AOP。 //代理接口 interface Say { void say(); } //被代理类 class RealPers

2016-02-25 11:05:44 531

原创 sping Ioc原理及模拟实现

IOC即控制反转,sping通过配置xml文件来创建和维护类和类之间的关系,当需要修改类或参数时只需要修改配置文件而不需要修改程序,这降低了程序中类的耦合性。sping就相当于一个工厂,通过解析xml配置文件获得类的属性,并通过java的反射机制来生成类。 一个sping的简单实例: 定义Person类 public class Person { private String name;

2016-02-24 16:01:12 272

转载 JDK动态代理实现原理

之前虽然会用JDK的动态代理,但是有些问题却一直没有搞明白。比如说:InvocationHandler的invoke方法是由谁来调用的,代理对象是怎么生成的,直到前几个星期才把这些问题全部搞明白了。      废话不多说了,先来看一下JDK的动态是怎么用的。  Java代码   package dynamic.proxy;       import java.la

2016-02-23 19:31:08 198

原创 代理模式与动态代理

代理模式为其它对象提供了一个代理来控制对对象的访问。 代理对象和实际对象通过实现相同的接口,其它类通过访问代理对象,代理对象将请求转发给实际对象来实现对实际对象的访问。 //代理接口 interface Interface { void doSomething(); void doElse(); } //实际对象 class RealObject implements Inter

2016-02-23 15:03:02 208

原创 linux系统编程

1.避免僵尸进程 如果调用fork()系统调用产生子进程却不等待子进程终止,子进程退出时就会形成僵尸进程,资源得不到释放。可以连续fork()两次,让进程的子进程再产生孙子进程,自己终止,这样孙子进程的父进程就会成为pid = 1的init进程,init进程会为孙子进程善终。   int main() { if(fork() == 0) { if(fork() > 0) exit(

2015-01-11 16:36:54 389

原创 memcached源码分析一一基本工作原理

Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态、数据库驱动网站的速度。Memcached基于一个存储键/值对的hashmap。其守护进程(daemon )是用C写的,但是客户端可以用任何语言来编写,并通过memcached协议与守护进程通信。

2015-01-03 00:05:43 116

离散数学及其应用

离散数学,程序员的数学,编程的内功所在,计算机以及软件专拣必修课。

2014-06-22

C++程序设计(谭浩强).pdf

c++程序设计,特别适合初学C++的软件开发人员

2014-06-03

空空如也

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

TA关注的人

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