- 博客(16)
- 资源 (1)
- 收藏
- 关注
ServiceLoader服务提供者加载设施帮助类
ServiceLoader是jdk提供的一个简单的服务提供者加载设施,一个服务(接口)的实现者在其资源目录META-INF/services 中放置提供者配置文件 来标识服务提供者。 文件名称是服务类型的完全限定名称。该文件包含一个具体提供者类的完全限定名称列表,每行一个。 通过ServiceLoader.load创建服务实现者加载器,通过iterator以延迟方式加载此加载器服务的可用提供...
2016-05-26 10:29:47 190
原创 JVM工具类
JVM工具类,提供jstack jmap memory等信息的输出. import java.io.File; import java.io.OutputStream; import java.lang.management.ManagementFactory; import java.lang.management.MemoryMXBean; import java.security...
2016-05-24 14:26:28 303
原创 spring ApplicationContext获取
spring ApplicationContext获取方式: 1.通过配置文件,获取ApplicationContext。 代码: ApplicationContext ac = new FileSystemXmlApplicationContext("applicationContext.xml"); ac.getBean("beanId"); 说明: 这种方式适用于采用Spring框架...
2015-12-28 16:38:08 438
原创 RSA 工具类
记录下RSA 工具类,提供加密,解密,签名,生成密钥对等方法,以便以后使用。 import java.io.File; import java.io.IOException; import java.security.Key; import java.security.KeyFactory; import java.security.KeyPair; import java.sec...
2015-06-29 16:55:04 140
原创 Base64
开发中经常要使用Base64对字符串进行编码,记录下Base64的工具类。 import java.io.UnsupportedEncodingException; public final class Base64 { static private final int BASELENGTH = 128; static private fina...
2015-06-29 14:27:50 133
原创 动态代理
1.proxy代理模式 代理模式为其他对象提供一种代理,并以控制对这个对象的访问。通过代理可以实现对象的延迟加载和对象的访问控制,在具体调用的前后执行特殊处理或者是完全改变具体实现。代理模式能够协调调用者和被调用者,在一定程度上降低了系统的耦合度。 代理模式结构图如下: 2.java动态代理 jdk通过InvocationHandle...
2014-08-22 12:40:30 115
Atomic
Atomic是指不能分割成若干部分的意思。如果一段代码被认为是 Atomic,则表示这段代码在执行过程中,是不能被中断的。通常来说,原子指令由硬件提供,供软件来实现原子方法(某个线程进入该方法后,就不会被中 断,直到其执行完成). Atomic的原理是:CAS(比较并交换)。现在大多数的处理器都提供对并发 访问的支持,这个支持的反映方式就是提供硬件的指令支持多处...
2014-06-12 16:54:08 151
并发集合和阻塞队列
一、阻塞队列BlockingQueue BlockingQueue 是线程安全的java阻塞队列,主要应用于生产者消费者模式、消息传递、并行任务执行和相关并发设计的大多数常见使用上下文。 BlockingQueue 可以是限定容量的。它在任意给定时间都可以有一个 remainingCapacity,超出此容量,便无法无阻塞地 put 附加元素。没有任何内部容量约束的...
2014-06-11 18:06:58 213
Executor框架
Executor框架是指java 5中引入的一系列并发库中与executor相关的一些功能类,其中包括线程池,Executor,Executors,ExecutorService,CompletionService,Future,Callable等。框架结构图如下: 使用Executor来执行多个线程的好处是用来避免线程的创建和销毁的开销,以提升效率。因...
2014-06-10 14:29:48 96
原创 Lock使用
Lock是java.util.concurrent.locks包下的接口,Lock 实现提供了比使用synchronized 方法和语句可获得的更广泛的锁定操作,它能以更优雅的方式处理线程同步问题,可以支持多个相关的 Condition对象。使用最多的Lock类是ReentrantLock、ReentrantReadWriteLock.ReadLock、ReentrantReadWriteL...
2014-05-21 10:26:18 126
volatile关键字使用
Java 语言中的 volatile 变量可以被看作是一种 “程度较轻的 synchronized”;与 synchronized 块相比,volatile 变量所需的编码较少,并且运行时开销也较少,但是它所能实现的功能也仅是 synchronized 的一部分。Volatile 变量具有 synchronized 的可见性特性,但是不具备原子特性,这就是说线程能够自动发现 v...
2014-04-22 12:17:27 73
wait, notify使用
在Java多线程编程中,wait()、notify()、notifyAll()这三个方法,都是Java语言提供的实现线程间阻塞(Blocking)和控制进程内调度(inter-process communication)的底层机制。Java内任何对象都能成为锁(Lock),同时任何对象也都能成为条件队列(Condition queue)。而这个对象里的wait(), notify(...
2014-04-21 16:59:13 107
ThreadLocal使用
ThreadLocal提供了线程局部 (thread-local) 变量,访问某个变量(通过其 get 或 set 方法)的每个线程都有自己的局部变量(变量值的副本),它独立于变量的初始化副本,是Java中一种较为特殊的线程绑定机制,是每一个线程都可以独立地改变自己的副本,而不会和其它线程的副本冲突。ThreadLocal 实例通常是类中的 private static 字段,每个...
2014-04-17 15:58:43 98
synchronized用法
synchronized关键字用于解决线程同步,其可以用于方法和代码段,锁定的都是对象,范围是实例对象或类对象。每个对象有且只有一个锁与之相关。 锁提供了两种主要特性:互斥(原子性)(mutual exclusion) 和可见性(visibility)。互斥即一次只允许一个线程持有某个特定的锁,因此可使用该特性实现对共享数据的协调访问协议,这样,一次就只有一个线...
2014-04-15 17:52:54 73
原创 netty ChannelBuffer
ChannelBuffer是netty自己的缓冲区,用于替代nio的Buffer,这种替代具有显著的优势,解决了Buffer存在的一些问题,满足了日常网络应用程序开发的需求。具有以下特点: 如果必要的话,可以定义自己的ChannelBuffer。 通过复合缓冲区CompositeChannelBuffer实现透明的零拷贝”Zero-Copy-Capable”。 提供了一个...
2014-03-14 12:17:30 279
原创 nio buffer
Buffer是一个用于特定基本类型数据的容器, 是特定基本类型元素的线性有限序列,对于每个非 boolean 基本类型,此类都有一个子类与之对应。Buffer非线程安全。类图如下: 一、属性 mark,用于标记一个位置,配合reset()使用,初始值-1,调用mark()后将值设置为当前position的值。 position,下一个读或者写的位置。 limit,...
2014-03-11 17:19:28 83
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人