<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[xiaoliuhu的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/xiaoliuhu</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; xiaoliuhu]]></copyright><item><title><![CDATA[PDFBox – How to read PDF file in Java]]></title><link>https://blog.youkuaiyun.com/xiaoliuhu/article/details/78055802</link><guid>https://blog.youkuaiyun.com/xiaoliuhu/article/details/78055802</guid><author>xiaoliuhu</author><pubDate>Thu, 21 Sep 2017 19:16:34 +0800</pubDate><description><![CDATA[1. Get PDFBox

pom.xml
dependency>
        groupId>org.apache.pdfboxgroupId>
        artifactId>pdfboxartifactId>
        version>2.0.6version>
dependency>


2. Print PDF file

Example to extr]]></description><category></category></item><item><title><![CDATA[ThreadPoolExcutor详解]]></title><link>https://blog.youkuaiyun.com/xiaoliuhu/article/details/56012028</link><guid>https://blog.youkuaiyun.com/xiaoliuhu/article/details/56012028</guid><author>xiaoliuhu</author><pubDate>Mon, 20 Feb 2017 13:39:50 +0800</pubDate><description><![CDATA[1、概念：
     用于管理java的多线程。线程的生命周期包括创建、就绪、运行、阻塞、销毁，当有大量的线程任务需要创建时，内存的开销就大了，此时，使用线程池，在一定程度上能够很好的缓解线程的大开销。
2、优势：
     (1)降低资源消耗。通过重复利用已创建的线程降低线程创建、销毁线程造成的消耗。
     (2)提高响应速度。当任务到达时，任务可以不需要等到线程创建就能立即执行。]]></description><category></category></item><item><title><![CDATA[HDFS简单入门]]></title><link>https://blog.youkuaiyun.com/xiaoliuhu/article/details/55210091</link><guid>https://blog.youkuaiyun.com/xiaoliuhu/article/details/55210091</guid><author>xiaoliuhu</author><pubDate>Wed, 15 Feb 2017 15:16:38 +0800</pubDate><description><![CDATA[本文地址：http://www.cnblogs.com/archimedes/p/hadoop-simple.html，转载请注明源地址。

为什么我们需要HDFS

文件系统由三部分组成：与文件管理有关软件、被管理文件以及实施文件管理所需数据结构。



既然读取一块磁盘的所有数据需要很长时间，写入更是需要更长时间（写入时间一般是读取时间的3倍）。我们需要一个巨大文件难道得换传输]]></description><category></category></item><item><title><![CDATA[GitLab事故之技术详叙]]></title><link>https://blog.youkuaiyun.com/xiaoliuhu/article/details/54848345</link><guid>https://blog.youkuaiyun.com/xiaoliuhu/article/details/54848345</guid><author>xiaoliuhu</author><pubDate>Fri, 03 Feb 2017 17:21:41 +0800</pubDate><description><![CDATA[本文对GitLab事件进行了全盘回顾，继续追踪GitLab在2月1日发布的申明，追溯各种问题根本原因。然后陈列了恢复在线后，GitLab声明了哪些下一步举措。最后摘录了一些网友在Twitter和YouTube的评论，大多数人都对GitLab表达了自己的支持和宽容。

事件总览

2017年1月31日18:00（UTC时间），GitLab通过推特发文承认300GB生产环境数据因为UNIX S]]></description><category></category></item><item><title><![CDATA[千万级规模高性能、高并发的网络架构经验分享]]></title><link>https://blog.youkuaiyun.com/xiaoliuhu/article/details/53220050</link><guid>https://blog.youkuaiyun.com/xiaoliuhu/article/details/53220050</guid><author>xiaoliuhu</author><pubDate>Fri, 18 Nov 2016 17:53:04 +0800</pubDate><description><![CDATA[架构以及我理解中架构的本质

在开始谈我对架构本质的理解之前，先谈谈对今天技术沙龙主题的个人见解，千万级规模的网站感觉数量级是非常大的，对这个数量级我们战略上 要重 视 它 ， 战术上又 要 藐 视 它。先举个例子感受一下千万级到底是什么数量级？现在很流行的优步(Uber)，从媒体公布的信息看，它每天接单量平均在百万左右， 假如每天有10个小时的服务时间，平均QPS只有30左右。对于一个后台服]]></description><category></category></item><item><title><![CDATA[ElasticSearch安装部署，基本配置(Ubuntu14.04)]]></title><link>https://blog.youkuaiyun.com/xiaoliuhu/article/details/53022974</link><guid>https://blog.youkuaiyun.com/xiaoliuhu/article/details/53022974</guid><author>xiaoliuhu</author><pubDate>Thu, 03 Nov 2016 16:42:58 +0800</pubDate><description><![CDATA[ElasticSearch部署文档(Ubuntu 14.04)

安装java
sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update
sudo apt-get install oracle-java8-installer
sudo apt-get install oracle-java8-set-default
]]></description><category></category></item><item><title><![CDATA[ubuntu如何在线安装java7?]]></title><link>https://blog.youkuaiyun.com/xiaoliuhu/article/details/53022931</link><guid>https://blog.youkuaiyun.com/xiaoliuhu/article/details/53022931</guid><author>xiaoliuhu</author><pubDate>Thu, 03 Nov 2016 16:40:04 +0800</pubDate><description><![CDATA[root@localhost:~# sudo apt-get install oracle-java7-installer  
sudo: unable to resolve host localhost.localdomain  
Reading package lists... Done  
Building dependency tree  
Reading state informatio]]></description><category></category></item><item><title><![CDATA[ubuntu下 vi输入方向键会变成ABCD的解决方法]]></title><link>https://blog.youkuaiyun.com/xiaoliuhu/article/details/52996404</link><guid>https://blog.youkuaiyun.com/xiaoliuhu/article/details/52996404</guid><author>xiaoliuhu</author><pubDate>Tue, 01 Nov 2016 15:29:45 +0800</pubDate><description><![CDATA[最近从redhat9.0换到了ubuntu 12.04.3,发现secureCRT端在vi编辑模式下按方向键会变成ABCD,




找到了此解决办法:


ubuntu下 vi输入方向键会变成ABCD，这是ubuntu预装的是vim tiny版本，安装vim full版本即可解决。

先卸载vim-tiny：

$ sudo apt-get remove vim-comm]]></description><category></category></item><item><title><![CDATA[用十条命令在一分钟内检查Linux服务器性能]]></title><link>https://blog.youkuaiyun.com/xiaoliuhu/article/details/52995212</link><guid>https://blog.youkuaiyun.com/xiaoliuhu/article/details/52995212</guid><author>xiaoliuhu</author><pubDate>Tue, 01 Nov 2016 13:53:15 +0800</pubDate><description><![CDATA[如果你的Linux服务器突然负载暴增，告警短信快发爆你的手机，如何在最短时间内找出Linux性能问题所在？来看Netflix性能工程团队的这篇博文，看它们通过十条命令在一分钟内对机器性能问题进行诊断。

概述

通过执行以下命令，可以在1分钟内对系统资源使用情况有个大致的了解。

uptimedmesg | tailvmstat 1mpstat -P ALL 1pidstat 1ios]]></description><category></category></item><item><title><![CDATA[不恰当使用线程池处理 MQ 消息引起的故障]]></title><link>https://blog.youkuaiyun.com/xiaoliuhu/article/details/52994252</link><guid>https://blog.youkuaiyun.com/xiaoliuhu/article/details/52994252</guid><author>xiaoliuhu</author><pubDate>Tue, 01 Nov 2016 11:30:18 +0800</pubDate><description><![CDATA[现状

业务部门反应网站访问特别慢，负责运维监控的同事说MQ消息队列积压了，中间件的说应用服务器内存占用很高，GC 一直回收不了内存，GC 线程占了近 100% 的 CPU，其他的基本上都在等待，数据库很正常，完全没压力。没啥办法，线程、堆
 dump 出来后，重启吧，然后应用又正常了。

分析

这种故障之前其实也碰到过了，分析了当时 dump 出来的堆后发现，处理 MQ 消息的线]]></description><category></category></item><item><title><![CDATA[关于消息队列的使用（转载）]]></title><link>https://blog.youkuaiyun.com/xiaoliuhu/article/details/52994224</link><guid>https://blog.youkuaiyun.com/xiaoliuhu/article/details/52994224</guid><author>xiaoliuhu</author><pubDate>Tue, 01 Nov 2016 11:28:34 +0800</pubDate><description><![CDATA[一、消息队列概述


消息队列中间件是分布式系统中重要的组件，主要解决应用耦合，异步消息，流量削锋等问题
实现高性能，高可用，可伸缩和最终一致性架构
使用较多的消息队列有ActiveMQ，RabbitMQ，ZeroMQ，Kafka，MetaMQ，RocketMQ

二、消息队列应用场景
以下介绍消息队列在实际应用中常用的使用场景。异步处理，应用解耦，流量削锋和消息通讯四个场景]]></description><category></category></item><item><title><![CDATA[Dubbo架构设计详解]]></title><link>https://blog.youkuaiyun.com/xiaoliuhu/article/details/52980173</link><guid>https://blog.youkuaiyun.com/xiaoliuhu/article/details/52980173</guid><author>xiaoliuhu</author><pubDate>Mon, 31 Oct 2016 10:19:05 +0800</pubDate><description><![CDATA[Dubbo是Alibaba开源的分布式服务框架，它最大的特点是按照分层的方式来架构，使用这种方式可以使各个层之间解耦合（或者最大限度地松耦合）。从服务模型的角度来看，Dubbo采用的是一种非常简单的模型，要么是提供方提供服务，要么是消费方消费服务，所以基于这一点可以抽象出服务提供方（Provider）和服务消费方（Consumer）两个角色。关于注册中心、协议支持、服务监控等内容，详见后面描述。]]></description><category></category></item><item><title><![CDATA[Java 并发工具包 java.util.concurrent 用户指南]]></title><link>https://blog.youkuaiyun.com/xiaoliuhu/article/details/52955000</link><guid>https://blog.youkuaiyun.com/xiaoliuhu/article/details/52955000</guid><author>xiaoliuhu</author><pubDate>Fri, 28 Oct 2016 11:54:05 +0800</pubDate><description><![CDATA[译序

本指南根据 Jakob Jenkov 最新博客翻译，请随时关注博客更新：http://tutorials.jenkov.com/java-util-concurrent/index.html。
本指南已做成中英文对照阅读版的 pdf 文档，有兴趣的朋友可以去 Java并发工具包java.util.concurrent用户指南中英文对照阅读版.pdf[带书签] 进行下载。


]]></description><category></category></item><item><title><![CDATA[JVM调优总结全面]]></title><link>https://blog.youkuaiyun.com/xiaoliuhu/article/details/52953997</link><guid>https://blog.youkuaiyun.com/xiaoliuhu/article/details/52953997</guid><author>xiaoliuhu</author><pubDate>Fri, 28 Oct 2016 10:27:53 +0800</pubDate><description><![CDATA[堆大小设置
JVM 中最大堆大小有三方面限制：相关操作系统的数据模型（32-bt还是64-bit）限制；系统的可用虚拟内存限制；系统的可用物理内存限制。32位系统下，一般限制在1.5G~2G；64为操作系统对内存无限制。我在Windows Server 2003 系统，3.5G物理内存，JDK5.0下测试，最大可设置为1478m。
典型设置：

java -Xmx3550m -Xms355]]></description><category></category></item><item><title><![CDATA[RocketMQ性能压测分析]]></title><link>https://blog.youkuaiyun.com/xiaoliuhu/article/details/52804910</link><guid>https://blog.youkuaiyun.com/xiaoliuhu/article/details/52804910</guid><author>xiaoliuhu</author><pubDate>Thu, 13 Oct 2016 10:44:16 +0800</pubDate><description><![CDATA[原创文章，转载请注明出处：http://jameswxx.iteye.com/blog/2093785

 


一   机器部署
1.1  机器组成

1台nameserver

1台broker  异步刷盘

2台producer
2台consumer
 
1.2  硬件配置

CPU  两颗x86_64cpu,每颗cpu12核，共24核

内存 48G]]></description><category></category></item><item><title><![CDATA[【Java深入学习系列】之CPU的分支预测(Branch Prediction)模型]]></title><link>https://blog.youkuaiyun.com/xiaoliuhu/article/details/52797594</link><guid>https://blog.youkuaiyun.com/xiaoliuhu/article/details/52797594</guid><author>xiaoliuhu</author><pubDate>Wed, 12 Oct 2016 15:24:46 +0800</pubDate><description><![CDATA[背景

先来看段c++代码，我们用256的模数随机填充一个固定大小的大数组，然后对数组的一半元素求和：
#include 
#include 
#include 

int main()
{
    // 随机产生整数，用分区函数填充，以避免出现分桶不均
    const unsigned arraySize = 32768;
    int data[arraySize];

    f]]></description><category></category></item><item><title><![CDATA[如何优化Java代码]]></title><link>https://blog.youkuaiyun.com/xiaoliuhu/article/details/52700191</link><guid>https://blog.youkuaiyun.com/xiaoliuhu/article/details/52700191</guid><author>xiaoliuhu</author><pubDate>Thu, 29 Sep 2016 11:02:34 +0800</pubDate><description><![CDATA[通过使用一些辅助性工具来找到程序中的瓶颈，然后就可以对瓶颈部分的代码进行优化。一般有两种方案：即优化代码或更改设计方法。我们一般会选择后者，因为不去调用以下代码要比调用一些优化的代码更能提高程序的性能。而一个设计良好的程序能够精简代码，从而提高性能。

下面将提供一些在JAVA程序的设计和编码中，为了能够提高JAVA程序的性能，而经常采用的一些方法和技巧。 
 
1、  对象的生成和大小的]]></description><category></category></item><item><title><![CDATA[CAS单点登录]]></title><link>https://blog.youkuaiyun.com/xiaoliuhu/article/details/52700163</link><guid>https://blog.youkuaiyun.com/xiaoliuhu/article/details/52700163</guid><author>xiaoliuhu</author><pubDate>Thu, 29 Sep 2016 11:00:45 +0800</pubDate><description><![CDATA[1、摘要
单点登录（Single Sign On , 简称 SSO ）是目前比较流行的服务于企业业务整合的解决方案之一， SSO 使得在多个应用系统中，用户只需要登录一次就可以访问所有相互信任的应用系统。CAS(Central Authentication Service)是一款不错的针对 Web 应用的单点登录框架，本文介绍了 CAS 的原理、协议、在 Tomcat 中的配置和使用，对于采用 ]]></description><category></category></item><item><title><![CDATA[Spring 动态数据源配置]]></title><link>https://blog.youkuaiyun.com/xiaoliuhu/article/details/52700118</link><guid>https://blog.youkuaiyun.com/xiaoliuhu/article/details/52700118</guid><author>xiaoliuhu</author><pubDate>Thu, 29 Sep 2016 10:59:01 +0800</pubDate><description><![CDATA[一、     目的 
不同的用户登录到具有表结构相同的各自数据库(一个oracle 服务器)，来操作各自的数据，而dao 不知道这些改变。 
二、     实现方法 
1、分析applicationContext.xml 
 
数据源bean配置
xml 代码
bean
id="dataSource"
singleton="true"
class="org.apache.com]]></description><category></category></item><item><title><![CDATA[Spring动态数据源路由实现]]></title><link>https://blog.youkuaiyun.com/xiaoliuhu/article/details/52700089</link><guid>https://blog.youkuaiyun.com/xiaoliuhu/article/details/52700089</guid><author>xiaoliuhu</author><pubDate>Thu, 29 Sep 2016 10:58:14 +0800</pubDate><description><![CDATA[在Spring 2.0.1中引入了AbstractRoutingDataSource, 该类充当了DataSource的路由中介, 能有在运行时, 根据某种key值来动态切换到真正的DataSource上, 同时对于不支持事务隔离级别的JTA事务来说, Spring还提供了另外一个类IsolationLevelDataSourceRouter来处理这个问题. 下面的例子将通过context来切换不]]></description><category></category></item></channel></rss>