- 浏览: 479608 次
- 性别:
- 来自: 杭州
-
最新评论
-
基地分子:
zk中获取的netty怎么保证一定能用呢?如果某个netty服 ...
Zookeeper实现简单的分布式RPC框架 -
javaeyetodj:
你好,想请教下,前置通知、后置通知如何插入到目标方法的前面和后 ...
Spring aop的多种配置方式以及源码分析 -
yjy1304:
List<String> nodes = zk.g ...
ZK实现分布式排它锁 -
model1235:
都spring4了,还在介绍这么古老的方法
Spring 事务处理(二)源码分析 -
zhangwei_david:
lopez 写道楼主直接new一个接口(new Resourc ...
java多线程lock详解
文章列表
我们可以通过闭锁(CountDownLatch)来同时启动一组相关线程,或等待一组相关线程的结束。可是闭锁是一次性对象,一旦进入终止状态,就不能被重置。栅栏类似于闭锁,它能够阻塞一组线程直到某个事件发生。Cyc ...
实现并发的最直接方式是在操作系统级别使用进程。进程是运行在自己的地址空间内的自包容程序。多任务操作系统可以通过周期性地将CPU从一个进程切换到另一个进程,来实现同时运行多个进程的。操作系统将进程相互 ...
ZK实现分布式排它锁
- 博客分类:
- zookeeper
排它锁(Exclusive Locks,简称X锁)又称之为独占锁,是一种基本的锁类型。排他锁的核心就是如何保证仅有一个线程获取到锁,并且在锁释放后,可以及时地通知到其他等待获取锁定的线程。下面使用ZK实现了一个简单的排它锁。
定义锁
在ZK下定义一个临时节点节点表示锁
/**排它锁节点**/ private final String EXCLUSIVE_LOCK = "/zk-demo/lock";
获取锁
在需要获取锁时,所有客户端都需要视图通过调用create()方法在 ...
在Spring web项目中XmlWebApplicationContext是如何创建的?首先在web.xml中我们可以看到如下配置
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath*:META-INF/spring/*.xml</param-value>
</context-param>
<listener>
<listener-class ...
ZooKeeper: 分布式应用的分布式协调服务 ZooKeeper是一个分布式的,开源的分布式协调服务。它公开了一系列原语可以帮助分布式服务实现更高层的同步,配置维护,分组和命名服务。它 ...
DispatchServlet源码分析
- 博客分类:
- Spring
DispatcheServlet类图,我们根据其类图进行源码分析
GenericServlet 源码分析
/**
* 定义一个通用的,协议无关的Servlet.如果需要编写一个在Web中使用的Http Severlet需要继承HttpServlet
* GeneraicServlet实现了Servlet接口和ServletConfig接口。GenericServlet *可以直接通过Servlet扩展,虽然这是比较常见的一种是继承特殊协议的子类,如HttpServlet
* GenericServlet使写Servlet变 ...
上一节分析了ZooKeeper的部分代码,下面我们看看客户端网络连接器的部分代码
/**
这个类管理客户端的socket I/O。ClientCnxn维护一个可用服务器列表可以根据需要透明地切换服务器
*
*/
public class ClientCnxn {
private static final Logger LOG = LoggerFactory.getLogger(ClientCnxn.class);
private static final String ZK_SASL_CLIENT_USERNAME =
...
ZooKeeper源码分析(一)
- 博客分类:
- zookeeper
为了更好地了解ZooKeeper客户端的工作原理,首先需要从客户端的会话创建过程学起。
初始化阶段:
初始化ZooKeeper对象
通过调用ZooKeeper的构造方法实例化一个ZooKeeper对象,在初始化过程中会创建一个客户端Watcher管理器ClientWatcherManager
设置会话默认Watcher
如果构造方法中传入了一个Watcher对象,那么客户端将这个Watcher对象作为默认Watcher保存到ClientWatcherManager中
构造ZK服务器地址列表管理器HostProvi ...
/**
*通过注解方式MBean导出器,继承MBeanExporter
*/
public class AnnotationMBeanExporter extends MBeanExporter {
private final AnnotationJmxAttributeSource annotationSource =
new AnnotationJmxAttributeSource();
private final MetadataNamingStrategy metadataNamingStrategy =
new Metad ...
Spring集成JMX是很简单的,这里通过注解发方式暴露JMX,有的时序我们需要监听JMX属性的改变,下面我们在Spring配置文件中配置监听器。
涉及到三个重要的annotation:@ManagedResource @ManagedAttribute 和 @ManagedOperation。
用途 Commons Attributes属性 JDK 5.0注解 属性/注解类型
将类的所有实例标识为JMX受控资源
ManagedResource
@ManagedResource
Class 类
将方法标识为JMX操作
ManagedOperation
@ ...
/**
* JMX 导出器允许导出任何Spring管理Bean为 JMX,不需要在类中定义任何JMX信息
* 如果一个bean已经实现了一个JMX 管理接口,MBeanExporter可以通过它的自动检查过程简单地通过MBeanServer注册
*
* 如果一个bean 没有实现任何JMX 管理接口,MBeanExporter将使用提供的MBeanInfoAssembler创建一个管理信息
*
*/
public class MBeanExporter extends MBeanRegistrationSupport
implements MBeanExp ...
JMX 基础Demo
- 博客分类:
- JMX
JMX在Java编程语言中定义了应用程序以及网络管理和监控的体系结构、设计模式、应用程序接口以及服务。通常使用JMX来监控系统的运行状态或管理系统的某些方面,比如清空缓存、重新加载配置文件等
优点可以非 ...
-Node为所有的dom4j中XML节点定义了多态行为;
-Branch为能够包含子节点的节点如XML元素(Element)和文档(Docuemnts)定义了一个公共的行为;
|-Element 定义XML 元素;
|-Document定义了XML文档;
-DocumentType 定义XML DOCTYPE声明;
-Entity定义 XML entity;
-Attribute定义了XML的属性;
-ProcessingInstruction 定义
iBatis的二级缓存支持FIFO,LRU,MEMORY,OSCACHE; 从源码去分析这些缓存是如何实现的
FIFO
/**
*先进先出缓存控制器
* FIFO (first in, first out) cache controller implementation
*/
public class FifoCacheController implements CacheController {
//缓存大小
private int cacheSize;
//缓存
private Map cache;
//缓存中key的列表
...
在实际使用缓存的过程中,我们希望放入缓存的并不是一个String类型参数而是一个Object对象,而且希望从缓存中取出的也是一个Object对象
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:p="http://www.springframework.org/schema/p" xmlns:xsi=" ...