`
zhangwei_david
  • 浏览: 469609 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论
文章列表
         我们可以通过闭锁(CountDownLatch)来同时启动一组相关线程,或等待一组相关线程的结束。可是闭锁是一次性对象,一旦进入终止状态,就不能被重置。栅栏类似于闭锁,它能够阻塞一组线程直到某个事件发生。Cyc ...
    实现并发的最直接方式是在操作系统级别使用进程。进程是运行在自己的地址空间内的自包容程序。多任务操作系统可以通过周期性地将CPU从一个进程切换到另一个进程,来实现同时运行多个进程的。操作系统将进程相互 ...
   排它锁(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 ...

ZK简介

                            ZooKeeper: 分布式应用的分布式协调服务   ZooKeeper是一个分布式的,开源的分布式协调服务。它公开了一系列原语可以帮助分布式服务实现更高层的同步,配置维护,分组和命名服务。它 ...
    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对象,在初始化过程中会创建一个客户端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来监控系统的运行状态或管理系统的某些方面,比如清空缓存、重新加载配置文件等 优点可以非 ...

dom4j的使用

    博客分类:
  • Java
   -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=" ...
Global site tag (gtag.js) - Google Analytics