<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[PHL的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/aBOUNTWINTER</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; aBOUNTWINTER]]></copyright><item><title><![CDATA[java-源码解读-jdk1.6-LinkedHashMap与HashMap]]></title><link>https://blog.youkuaiyun.com/aBOUNTWINTER/article/details/79803823</link><guid>https://blog.youkuaiyun.com/aBOUNTWINTER/article/details/79803823</guid><author>aBOUNTWINTER</author><pubDate>Tue, 03 Apr 2018 15:16:58 +0800</pubDate><description><![CDATA[摘要：　　HashMap和双向链表合二为一即是LinkedHashMap。所谓LinkedHashMap，其落脚点在HashMap，因此更准确地说，它是一个将所有Entry节点链入一个双向链表的HashMap。由于LinkedHashMap是HashMap的子类，所以LinkedHashMap自然会拥有HashMap的所有特性。比如，LinkedHashMap的元素存取过程基本与HashMap基本...]]></description><category></category></item><item><title><![CDATA[Linux-Linux零拷贝原理]]></title><link>https://blog.youkuaiyun.com/aBOUNTWINTER/article/details/79703117</link><guid>https://blog.youkuaiyun.com/aBOUNTWINTER/article/details/79703117</guid><author>aBOUNTWINTER</author><pubDate>Mon, 26 Mar 2018 19:59:03 +0800</pubDate><description><![CDATA[这是译文 源文请参考源文。到目前为止，几乎所有人都听说过Linux下所谓的零拷贝功能，但我经常遇到对这个主题没有完全了解的人。 正因为如此，我决定写几篇文章，深入探讨这个问题，希望能解开这个有用的特性。在这篇文章中，我们从一个用户的角度看零拷贝，血淋淋的内核级细节被有意省略。什么是零拷贝?为了更好地理解问题的解决方案，我们首先需要了解问题本身。让我们来看看网络服务器处理的简单过程中所涉及到的内容，...]]></description><category></category></item><item><title><![CDATA[算法-trie树]]></title><link>https://blog.youkuaiyun.com/aBOUNTWINTER/article/details/79641319</link><guid>https://blog.youkuaiyun.com/aBOUNTWINTER/article/details/79641319</guid><author>aBOUNTWINTER</author><pubDate>Wed, 21 Mar 2018 15:56:54 +0800</pubDate><description><![CDATA[先记得，以后再补上]]></description><category></category></item><item><title><![CDATA[算法-大数据量的定时超时]]></title><link>https://blog.youkuaiyun.com/aBOUNTWINTER/article/details/79407768</link><guid>https://blog.youkuaiyun.com/aBOUNTWINTER/article/details/79407768</guid><author>aBOUNTWINTER</author><pubDate>Thu, 01 Mar 2018 09:20:43 +0800</pubDate><description><![CDATA[需求：一个集合Map&amp;lt;key,last_update_time&amp;gt;，多线程实时的往集合里添加数据，要求集合里的数据在30秒后过期并删除。实现：方法一：轮询扫描法启动一个线程，当map不为空时，轮询扫描这个map，看每个元素的last_update_time是否超过30秒，如果超过，作超时处理。方法二：多timer触发对集合中的每个元素启动一个timer,30秒后触发，对该元素作超时处理。...]]></description><category></category></item><item><title><![CDATA[java-Java对象的强、软、弱和虚引用原理]]></title><link>https://blog.youkuaiyun.com/aBOUNTWINTER/article/details/79228179</link><guid>https://blog.youkuaiyun.com/aBOUNTWINTER/article/details/79228179</guid><author>aBOUNTWINTER</author><pubDate>Thu, 01 Feb 2018 14:32:07 +0800</pubDate><description><![CDATA[1．Java对象的强、软、弱和虚引用在JDK 1.2以前的版本中，若一个对象不被任何变量引用，那么程序就无法再使用这个对象。也就是说，只有对象处于可触及（reachable）状态，程序才能使用它。这 就像在日常生活中，从商店购买了某样物品后，如果有用，就一直保留它，否则就把它扔到垃圾箱，由清洁工人收走。一般说来，如果物品已经被扔到垃圾箱，想再 把它捡回来使用就不可能了。     但有时候情况并不这...]]></description><category></category></item><item><title><![CDATA[算法-Gossip]]></title><link>https://blog.youkuaiyun.com/aBOUNTWINTER/article/details/79073877</link><guid>https://blog.youkuaiyun.com/aBOUNTWINTER/article/details/79073877</guid><author>aBOUNTWINTER</author><pubDate>Tue, 16 Jan 2018 13:47:15 +0800</pubDate><description><![CDATA[Gossip算法因为Cassandra而名声大噪，Gossip看似简单，但要真正弄清楚其本质远没看起来那么容易。为了寻求Gossip的本质，下面的内容主要参考Gossip的原始论文：<<Efficient Reconciliation and Flow Control for
 Anti-Entropy Protocols>>。
 
1. Gossip背景
Gossip算法如其名，灵感来自]]></description><category></category></item><item><title><![CDATA[Linux-io模型]]></title><link>https://blog.youkuaiyun.com/aBOUNTWINTER/article/details/78962376</link><guid>https://blog.youkuaiyun.com/aBOUNTWINTER/article/details/78962376</guid><author>aBOUNTWINTER</author><pubDate>Wed, 03 Jan 2018 16:10:29 +0800</pubDate><description><![CDATA[1. Linux下的五种I/O模型


1)阻塞I/O（blocking I/O）
2)非阻塞I/O （nonblocking I/O）
3) I/O复用(select 和poll) （I/O multiplexing）
4)信号驱动I/O （signal driven I/O (SIGIO)）
5)异步I/O （asynchronous I/O (the POSIX aio_fun]]></description><category></category></item><item><title><![CDATA[缓存行]]></title><link>https://blog.youkuaiyun.com/aBOUNTWINTER/article/details/78652754</link><guid>https://blog.youkuaiyun.com/aBOUNTWINTER/article/details/78652754</guid><author>aBOUNTWINTER</author><pubDate>Tue, 28 Nov 2017 10:57:38 +0800</pubDate><description><![CDATA[我们经常提到一个短语Mechanical Sympathy，这个短语也是Martin博客的标题（译注：Martin Thompson），Mechanical Sympathy讲的是底层硬件是如何运作的，以及与其协作而非相悖的编程方式。
我在上一篇文章中提到RingBuffer后，我们收到一些关于RingBuffer中填充高速缓存行的评论和疑问。由于这个适合用漂亮的图片来说明，所以我想这是下一个我]]></description><category></category></item><item><title><![CDATA[storm-并行度]]></title><link>https://blog.youkuaiyun.com/aBOUNTWINTER/article/details/78635807</link><guid>https://blog.youkuaiyun.com/aBOUNTWINTER/article/details/78635807</guid><author>aBOUNTWINTER</author><pubDate>Sun, 26 Nov 2017 10:19:30 +0800</pubDate><description><![CDATA[什么让 topology（拓扑）可以运行
worker 进程, executors（执行器）和 tasks（任务）。
一个 worker 进程 执行一个 topology（拓扑）的子集. 一个 worker 进程属于一个指定 topology（拓扑）。
并且针对该 topology 的一个或多个组件（spouts 或 bolts）来说会运行一个或更多的 executors（执行器）。
一个]]></description><category></category></item><item><title><![CDATA[storm-窗口]]></title><link>https://blog.youkuaiyun.com/aBOUNTWINTER/article/details/78633406</link><guid>https://blog.youkuaiyun.com/aBOUNTWINTER/article/details/78633406</guid><author>aBOUNTWINTER</author><pubDate>Sat, 25 Nov 2017 18:32:57 +0800</pubDate><description><![CDATA[1. 简介
Storm可同时处理窗口内的所有tuple。窗口可以从时间或数量上来划分，由如下两个因素决定：

窗口的长度，可以是时间或Tuple数量；滑动间隔(sliding Interval)，同样也可以是时间或Tuple数量，后面Sliding Window中介绍；
2. Window
2.1 Tumbling Window
按照固定的时间间隔或者Tuple数量划分窗口。下面例子就]]></description><category></category></item><item><title><![CDATA[storm-组件]]></title><link>https://blog.youkuaiyun.com/aBOUNTWINTER/article/details/78621057</link><guid>https://blog.youkuaiyun.com/aBOUNTWINTER/article/details/78621057</guid><author>aBOUNTWINTER</author><pubDate>Fri, 24 Nov 2017 09:36:00 +0800</pubDate><description><![CDATA[Bolt
bolt的主要方法：
declareOutputFileds(OutputFieldsDeclarer declarer) ;
prepare(Map conf,TopologyContext context,OutputCollector collector); 仅在Bolt开始处理Tuple之前调用;
execute(Tuple input);处理一个bolt的输入
cle]]></description><category></category></item><item><title><![CDATA[java-源码解读-线程池实现原理-1]]></title><link>https://blog.youkuaiyun.com/aBOUNTWINTER/article/details/78607678</link><guid>https://blog.youkuaiyun.com/aBOUNTWINTER/article/details/78607678</guid><author>aBOUNTWINTER</author><pubDate>Wed, 22 Nov 2017 20:09:39 +0800</pubDate><description><![CDATA[为什么要使用线程池

合理利用线程池能够带来三个好处。(复制过来的，懒)
第一：降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。
第二：提高响应速度。当任务到达时，任务可以不需要的等到线程创建就能立即执行。
第三：提高线程的可管理性。线程是稀缺资源，如果无限制的创建，不仅会消耗系统资源，还会降低系统的稳定性，使用线程池可以进行统一的分配，调优和监控。

线程池的使用

先定义线...]]></description><category></category></item><item><title><![CDATA[storm-ACK的实现原理]]></title><link>https://blog.youkuaiyun.com/aBOUNTWINTER/article/details/78604993</link><guid>https://blog.youkuaiyun.com/aBOUNTWINTER/article/details/78604993</guid><author>aBOUNTWINTER</author><pubDate>Wed, 22 Nov 2017 16:27:13 +0800</pubDate><description><![CDATA[异或运行基本原理
异或xor也叫半加运行，其运行法则相当于不带进位的二进制加法：
0 xor  0=0
1 xor 1 = 0
0 xor 1 =1
1 xor 0= 1
异或运行特性
1.交换律
 a xor b=b xor a
2.结合律
a xor (b xor c)= (a xor b) xor c
3.自反性
a xor a=0
a xor b xor b=a]]></description><category></category></item><item><title><![CDATA[HBase -ROOT-和.META.表结构(region定位原理)]]></title><link>https://blog.youkuaiyun.com/aBOUNTWINTER/article/details/78418096</link><guid>https://blog.youkuaiyun.com/aBOUNTWINTER/article/details/78418096</guid><author>aBOUNTWINTER</author><pubDate>Wed, 01 Nov 2017 20:15:42 +0800</pubDate><description><![CDATA[在HBase中，大部分的操作都是在RegionServer完成的，Client端想要插入，删除，查询数据都需要先找到相应的RegionServer。什么叫相应的RegionServer？就是管理你要操作的那个Region的RegionServer。Client本身并不知道哪个RegionServer管理哪个Region，那么它是如何找到相应的RegionServer的？本文就是在研究源码的基础上揭]]></description><category></category></item><item><title><![CDATA[kerberos认证过程]]></title><link>https://blog.youkuaiyun.com/aBOUNTWINTER/article/details/78418074</link><guid>https://blog.youkuaiyun.com/aBOUNTWINTER/article/details/78418074</guid><author>aBOUNTWINTER</author><pubDate>Wed, 01 Nov 2017 20:14:07 +0800</pubDate><description><![CDATA[一、 基本原理

Authentication解决的是“如何证明某个人确确实实就是他或她所声称的那个人”的问题。对于如何进行Authentication，我们采用这样的方法：如果一个秘密（secret）仅仅存在于A和B，那么有个人对B声称自己就是A，B通过让A提供这个秘密来证明这个人就是他或她所声称的A。这个过程实际上涉及到3个重要的关于Authentication的方面：



Se]]></description><category></category></item><item><title><![CDATA[java-源码解读-线程池提交之execute和submit有何不同]]></title><link>https://blog.youkuaiyun.com/aBOUNTWINTER/article/details/78123422</link><guid>https://blog.youkuaiyun.com/aBOUNTWINTER/article/details/78123422</guid><author>aBOUNTWINTER</author><pubDate>Thu, 28 Sep 2017 14:42:21 +0800</pubDate><description><![CDATA[先上测试用例package com.phl.threadpool;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;

/**
 * @Title:SubmitExecuteMain
 * @Descripti...]]></description><category></category></item><item><title><![CDATA[java-源码解读-java类加载机制]]></title><link>https://blog.youkuaiyun.com/aBOUNTWINTER/article/details/78049401</link><guid>https://blog.youkuaiyun.com/aBOUNTWINTER/article/details/78049401</guid><author>aBOUNTWINTER</author><pubDate>Thu, 21 Sep 2017 10:53:34 +0800</pubDate><description><![CDATA[作为一个java程序员，估计没有人不知道java的类加载机制是委托父加载器加载，也知道java有这么几大类加载器，分别是BootStrapClassLoader，ExtClassLoader，AppClassLoader以及自定义类加载器。但对于他们的之间的关系是怎样建立起来，估计很少有人说得清楚，下面就通过最权威的源码（jdk1.8），回答以上问题。
ClassLoader
java用Cla]]></description><category></category></item><item><title><![CDATA[java-源码解读-线程池实现原理-0]]></title><link>https://blog.youkuaiyun.com/aBOUNTWINTER/article/details/77265600</link><guid>https://blog.youkuaiyun.com/aBOUNTWINTER/article/details/77265600</guid><author>aBOUNTWINTER</author><pubDate>Wed, 16 Aug 2017 19:38:55 +0800</pubDate><description><![CDATA[线程池初识我们一般这样使用线程池：public class ExecutorServiceDemo {  
     public static void main(String[] args) {  
      // 创建一个线程池对象，控制要创建几个线程对象。  
      ExecutorService pool = Executors.newFixedThreadPool(2);  
...]]></description><category></category></item><item><title><![CDATA[maven-常用plugin备忘]]></title><link>https://blog.youkuaiyun.com/aBOUNTWINTER/article/details/77168390</link><guid>https://blog.youkuaiyun.com/aBOUNTWINTER/article/details/77168390</guid><author>aBOUNTWINTER</author><pubDate>Mon, 14 Aug 2017 20:06:05 +0800</pubDate><description><![CDATA[tomcat


   org.apache.tomcat.maven
   tomcat7-maven-plugin
   2.1
   
      /device-manager-provider
      utf-8
      8001
      tomcat
      
         
            JAVA_OPTS
            -Xms256m]]></description><category></category></item><item><title><![CDATA[java-源码解读-FutureTask]]></title><link>https://blog.youkuaiyun.com/aBOUNTWINTER/article/details/75277519</link><guid>https://blog.youkuaiyun.com/aBOUNTWINTER/article/details/75277519</guid><author>aBOUNTWINTER</author><pubDate>Tue, 18 Jul 2017 10:39:53 +0800</pubDate><description><![CDATA[使用场景

java多线程编程中，我们经常使用线程池提交任务，并且通过Future来获取任务执行的结果，以此达到异步或者并行执行的效果。
通常我们是这样使用线程池：


public class ExecutorServiceDemo {
     public static void main(String[] args) {
      // 创建一个线程池对象，控制要创建几个线程对象。
  ...]]></description><category></category></item></channel></rss>