- 博客(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
原创 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
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人