<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[xiaoddt的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/xiaoddt</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; xiaoddt]]></copyright><item><title><![CDATA[适配器模式]]></title><link>https://blog.youkuaiyun.com/xiaoddt/article/details/74942976</link><guid>https://blog.youkuaiyun.com/xiaoddt/article/details/74942976</guid><author>xiaoddt</author><pubDate>Tue, 11 Jul 2017 11:37:05 +0800</pubDate><description><![CDATA[java设计模式，适配器模式]]></description><category></category></item><item><title><![CDATA[java三种工厂模式：简单工厂、工厂方法、抽象工厂]]></title><link>https://blog.youkuaiyun.com/xiaoddt/article/details/74937952</link><guid>https://blog.youkuaiyun.com/xiaoddt/article/details/74937952</guid><author>xiaoddt</author><pubDate>Tue, 11 Jul 2017 10:34:36 +0800</pubDate><description><![CDATA[java设计模式，工厂模式、简单工程、工厂方法、抽象工厂]]></description><category></category></item><item><title><![CDATA[使用CGLIB实现动态代理]]></title><link>https://blog.youkuaiyun.com/xiaoddt/article/details/73650432</link><guid>https://blog.youkuaiyun.com/xiaoddt/article/details/73650432</guid><author>xiaoddt</author><pubDate>Fri, 23 Jun 2017 17:32:57 +0800</pubDate><description><![CDATA[CGLIB动态代理原理:]]></description><category></category></item><item><title><![CDATA[代理和动态代理]]></title><link>https://blog.youkuaiyun.com/xiaoddt/article/details/73618669</link><guid>https://blog.youkuaiyun.com/xiaoddt/article/details/73618669</guid><author>xiaoddt</author><pubDate>Fri, 23 Jun 2017 11:45:30 +0800</pubDate><description><![CDATA[静态代理和JDK动态代理原理详解]]></description><category></category></item><item><title><![CDATA[线程同步工具-CyclicBarrier]]></title><link>https://blog.youkuaiyun.com/xiaoddt/article/details/72878096</link><guid>https://blog.youkuaiyun.com/xiaoddt/article/details/72878096</guid><author>xiaoddt</author><pubDate>Tue, 06 Jun 2017 14:40:37 +0800</pubDate><description><![CDATA[CyclicBarrier可以允许一个或者多个线程在一个确定的点同步数据，他的使用上和CountDownLatch类似，但是有趣的是你可以传递一个外加的 Runnable 对象作为初始参数，并且当全部线程都到达同一个点时，CyclicBarrier类 会把这个对象当做线程来执行，这在使用分区处理编程的时候能很好的发挥其并发性能]]></description><category></category></item><item><title><![CDATA[线程同步工具-CountDownLatch]]></title><link>https://blog.youkuaiyun.com/xiaoddt/article/details/72876074</link><guid>https://blog.youkuaiyun.com/xiaoddt/article/details/72876074</guid><author>xiaoddt</author><pubDate>Tue, 06 Jun 2017 11:04:14 +0800</pubDate><description><![CDATA[CountDownLatch类：允许一个或者多个线程等待直到一组操作完成。在使用时，CountDownLatch初始化一个等待数，这个数的大小就是指定参与工作的线程数量，当某一个参加工作线程都达到某个程序点时，使用countDown()方法使CountDownLatch内部计数器-1，直到CountDownLatch内部计数器的值为0]]></description><category></category></item><item><title><![CDATA[线程同步工具-Semaphore]]></title><link>https://blog.youkuaiyun.com/xiaoddt/article/details/72875652</link><guid>https://blog.youkuaiyun.com/xiaoddt/article/details/72875652</guid><author>xiaoddt</author><pubDate>Tue, 06 Jun 2017 10:36:26 +0800</pubDate><description><![CDATA[Semaphore(信道)是一个控制访问多个资源的“计数器” 
当线程要访问某个资源时，他可以获得Semaphore，如果其内部计数器的值大于0，则允许线程访问并将计数器的值-1.如果内部计数器的值等于0，则表示全部的共享资源已经在被使用.Semaphore会让线程进入休眠. 
当线程访问完贡献资源以后，会将Semaphore中计数器的值加1，使资源可以对外提供访问。]]></description><category></category></item><item><title><![CDATA[jvm常用工具-jps]]></title><link>https://blog.youkuaiyun.com/xiaoddt/article/details/72872625</link><guid>https://blog.youkuaiyun.com/xiaoddt/article/details/72872625</guid><author>xiaoddt</author><pubDate>Mon, 05 Jun 2017 23:38:29 +0800</pubDate><description><![CDATA[JPS-虚拟机进程状况工具 JVM Processs Status Tool，显示指定系统内，所有HotSpot虚拟机进程。]]></description><category></category></item><item><title><![CDATA[线程的生命周期]]></title><link>https://blog.youkuaiyun.com/xiaoddt/article/details/72871914</link><guid>https://blog.youkuaiyun.com/xiaoddt/article/details/72871914</guid><author>xiaoddt</author><pubDate>Mon, 05 Jun 2017 22:01:22 +0800</pubDate><description><![CDATA[线程的生命周期是由CPU直接掌控的]]></description><category></category></item><item><title><![CDATA[java实现生产者和消费者问题的几种方式]]></title><link>https://blog.youkuaiyun.com/xiaoddt/article/details/72869428</link><guid>https://blog.youkuaiyun.com/xiaoddt/article/details/72869428</guid><author>xiaoddt</author><pubDate>Mon, 05 Jun 2017 17:32:15 +0800</pubDate><description><![CDATA[java实现生产者和消费者问题的几种方式]]></description><category></category></item><item><title><![CDATA[一道面试题的拓展]]></title><link>https://blog.youkuaiyun.com/xiaoddt/article/details/71205840</link><guid>https://blog.youkuaiyun.com/xiaoddt/article/details/71205840</guid><author>xiaoddt</author><pubDate>Fri, 05 May 2017 14:41:48 +0800</pubDate><description><![CDATA[Integer 爬坑]]></description><category></category></item><item><title><![CDATA[HashMap源码实现]]></title><link>https://blog.youkuaiyun.com/xiaoddt/article/details/56485654</link><guid>https://blog.youkuaiyun.com/xiaoddt/article/details/56485654</guid><author>xiaoddt</author><pubDate>Sun, 30 Apr 2017 18:49:47 +0800</pubDate><description><![CDATA[HashMap源码实现]]></description><category></category></item><item><title><![CDATA[vmware-nat模式下网络模型]]></title><link>https://blog.youkuaiyun.com/xiaoddt/article/details/56307203</link><guid>https://blog.youkuaiyun.com/xiaoddt/article/details/56307203</guid><author>xiaoddt</author><pubDate>Tue, 21 Feb 2017 21:39:25 +0800</pubDate><description><![CDATA[vmware的nat模式下网络模型]]></description><category></category></item><item><title><![CDATA[zookeeper三：zkClient的使用]]></title><link>https://blog.youkuaiyun.com/xiaoddt/article/details/55512471</link><guid>https://blog.youkuaiyun.com/xiaoddt/article/details/55512471</guid><author>xiaoddt</author><pubDate>Fri, 17 Feb 2017 16:17:41 +0800</pubDate><description><![CDATA[在生产环境中常常会遇到session exprie这类异常，需要在发生异常以后重新连接，重新建立session，直接使用ZooKeeperAPI 实现的话，可能会比较麻烦。而且ZooKeeper的watcher是一次性的。如果基于watcher做发布/订阅模式，需要做额外的一些编码。以实现每次watcher失效后重新注册，将一次性订阅包装成持久订阅。并且，ZooKeeper的API接口中，节点数据默]]></description><category></category></item><item><title><![CDATA[ZooKeeper二：客户端使用]]></title><link>https://blog.youkuaiyun.com/xiaoddt/article/details/55271889</link><guid>https://blog.youkuaiyun.com/xiaoddt/article/details/55271889</guid><author>xiaoddt</author><pubDate>Fri, 17 Feb 2017 15:13:04 +0800</pubDate><description><![CDATA[zookeeper API的使用 和 zhCli常用命令介绍]]></description><category></category></item><item><title><![CDATA[ZooKeeper一：认识ZooKeeper]]></title><link>https://blog.youkuaiyun.com/xiaoddt/article/details/55224338</link><guid>https://blog.youkuaiyun.com/xiaoddt/article/details/55224338</guid><author>xiaoddt</author><pubDate>Thu, 16 Feb 2017 15:12:14 +0800</pubDate><description><![CDATA[随着互联网的高速发展，企业对计算机系统的计算，存储能力越来越高。最简单的证明就是出现了诸如高并发，海量存储之类的词汇。在这样的背景下，单纯依靠少量高性能主机来完成计算任务已经不能满足企业的需求，企业的IT架构逐步从集中式像分布式过渡。所谓的分布式是指：把一个计算任务分解成若干的计算单元，并且分派到若干不同的计算机去执行，然后汇总计算结果。]]></description><category></category></item><item><title><![CDATA[JVM线程资源同步及交互机制]]></title><link>https://blog.youkuaiyun.com/xiaoddt/article/details/55057004</link><guid>https://blog.youkuaiyun.com/xiaoddt/article/details/55057004</guid><author>xiaoddt</author><pubDate>Tue, 14 Feb 2017 14:58:01 +0800</pubDate><description><![CDATA[java程序采用多线程的方式来支撑大量的并发请求处理，程序在多线程方式 执行的情况下，复杂程度远高于单线程串行执行程序。多线程执行程序最明显的问题是线程之间共同管理的资源的竞争及线程之间的交互。本节主要介绍JVM线程资源同步机制和线程之间的交互机制。



线程资源同步机制

首先来看一段获取id的程序

int i = 0 ; 
public int getNextInt(){
    retu]]></description><category></category></item><item><title><![CDATA[JVM内存管理]]></title><link>https://blog.youkuaiyun.com/xiaoddt/article/details/55050215</link><guid>https://blog.youkuaiyun.com/xiaoddt/article/details/55050215</guid><author>xiaoddt</author><pubDate>Mon, 13 Feb 2017 21:35:10 +0800</pubDate><description><![CDATA[java不在需要开发人员显示的分配内存和回收内存，而是由JVM自动管理内存的分配和回收(又称为垃圾回收-GC)，这简化了编程难度，但同时可能使得程序员在不知不觉中浪费了很多内存，导致JVM花费很多时间进行垃圾回收。另外还有可能由于不清楚JVM的内存分配和回收机制造成内存泄露。最终导致JVM内存不够用。]]></description><category></category></item><item><title><![CDATA[java基础-并发-如何捕获线程异常]]></title><link>https://blog.youkuaiyun.com/xiaoddt/article/details/53898670</link><guid>https://blog.youkuaiyun.com/xiaoddt/article/details/53898670</guid><author>xiaoddt</author><pubDate>Tue, 27 Dec 2016 20:12:26 +0800</pubDate><description><![CDATA[由于线程本质特性，使得我们不能捕获从线程中逃逸的异常。一旦异常逃出线程的run方法，他就会向外传播到控制台。]]></description><category></category></item><item><title><![CDATA[Tomcat工作原理(五)-tomcat容器]]></title><link>https://blog.youkuaiyun.com/xiaoddt/article/details/53894371</link><guid>https://blog.youkuaiyun.com/xiaoddt/article/details/53894371</guid><author>xiaoddt</author><pubDate>Tue, 27 Dec 2016 11:56:31 +0800</pubDate><description><![CDATA[一个tomcat容器需要实现org.apache.catalina.Container,你可以在tomcat的连接器中使用setContainer方法传递一个容器给连接器。]]></description><category></category></item></channel></rss>