<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[touch_future的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/touch_future</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; touch_future]]></copyright><item><title><![CDATA[java Queue 接口]]></title><link>https://blog.youkuaiyun.com/touch_future/article/details/78002336</link><guid>https://blog.youkuaiyun.com/touch_future/article/details/78002336</guid><author>touch_future</author><pubDate>Sat, 16 Sep 2017 12:15:56 +0800</pubDate><description><![CDATA[1  队列（Queue）代表一种数据结构：先插入的元素先被处理，即所谓的“先进先出”。
2  Queue 继承了 Collection 接口，除了集合的方法以外，队列特有三种操作：插入/获取/检查。这三种方法都有两种形式：如果操作失败的话返回特定值或者抛出异常。
 



 
抛出异常
返回特殊值


insert
add(e)
offer(e)


remove]]></description><category></category></item><item><title><![CDATA[linux source bash ./ sh fork exec 的区别]]></title><link>https://blog.youkuaiyun.com/touch_future/article/details/77920551</link><guid>https://blog.youkuaiyun.com/touch_future/article/details/77920551</guid><author>touch_future</author><pubDate>Sun, 10 Sep 2017 10:26:33 +0800</pubDate><description><![CDATA[在linux 里做一件事的方法往往有很多种，比如执行一个脚本的就有很多种方式，那么这些方式有什么区别呢？
首先，执行一个shell 脚本的方法有以下几种：source  sh  ./  bash ，那么这些方式有什么区别呢？它们的区别主要是在当前shell环境中运行还是另外开启一个子shell运行以及运行该shell对当前shell环境的影响。
1 source
source 是在当前she]]></description><category></category></item><item><title><![CDATA[mysql lower_case_table_names 参数引起的一起事故]]></title><link>https://blog.youkuaiyun.com/touch_future/article/details/70850471</link><guid>https://blog.youkuaiyun.com/touch_future/article/details/70850471</guid><author>touch_future</author><pubDate>Thu, 27 Apr 2017 14:57:45 +0800</pubDate><description><![CDATA[异常情况描述：
 hive 集群本来运行状况良好，突然之间不能用了，重启也没用，看日志显示hive metastore 启动异常，一个表找不到了，导致 hive metastore 启动不起来。此时当然是到mysql（hive metastore 的存储数据库）看里面是不是有这个表，用show table 发线表是存在的， SELECT count 发现mysql报表不存在。。。真是诡异，同属说]]></description><category></category></item><item><title><![CDATA[如何分析java进程中哪个线程最耗资源]]></title><link>https://blog.youkuaiyun.com/touch_future/article/details/70767429</link><guid>https://blog.youkuaiyun.com/touch_future/article/details/70767429</guid><author>touch_future</author><pubDate>Tue, 25 Apr 2017 21:35:30 +0800</pubDate><description><![CDATA[我们知道，java程序一般都很耗资源，动辄都是好几G的内存，甚至几十G。对外，java进程是一个整体，而且java是共享内存模型，所以很难分析单个线程，但是我们还是可以分析java线程消耗cpu的情况。
1 首先得到要分析的java程序进程id，可以通过jps命令：
[make@master ~]$ jps -l
10242 com.intellij.idea.Main
10597 org.j]]></description><category></category></item><item><title><![CDATA[linux shell 中数组的定义和for循环遍历]]></title><link>https://blog.youkuaiyun.com/touch_future/article/details/70766277</link><guid>https://blog.youkuaiyun.com/touch_future/article/details/70766277</guid><author>touch_future</author><pubDate>Tue, 25 Apr 2017 20:00:43 +0800</pubDate><description><![CDATA[linux shell中的语法和普通编程语言 c/c++  java 的不太一样，平时用的不多，所以总是记不住，写脚本才会去查怎么用。今天突然被问到数组怎么去遍历。平时写shell脚本也经常遍历数组，但是一下没答上来，被鄙视了。所以平时学习还是好好总结吧，不能每次都问度娘谷爷。IT 知识体系较为庞大，细节的东西也太多，平时遇到问题应该的多总结记笔记。


linux 中定义一个数据的语法为：]]></description><category></category></item><item><title><![CDATA[java stack 和 queue的区别和联系]]></title><link>https://blog.youkuaiyun.com/touch_future/article/details/70478084</link><guid>https://blog.youkuaiyun.com/touch_future/article/details/70478084</guid><author>touch_future</author><pubDate>Sat, 22 Apr 2017 23:23:02 +0800</pubDate><description><![CDATA[queue是一个接口，它继承了 Collect接口。对应数据结构中的队列。
stack 是一个类，它继承了Vector 类，而Vector则继承AbastractList，实现List，randomAccess/cloneable/serialization 接口。对应数据结构中的栈。
这两个类中的元素都是有序的，注意增删改查等方法。
这两个类的方法见jdk 源码。


Queue 是]]></description><category></category></item><item><title><![CDATA[Erasure code 原理]]></title><link>https://blog.youkuaiyun.com/touch_future/article/details/62882160</link><guid>https://blog.youkuaiyun.com/touch_future/article/details/62882160</guid><author>touch_future</author><pubDate>Fri, 17 Mar 2017 10:15:08 +0800</pubDate><description><![CDATA[1. 什么是erasure code?



erasure code可以认为是RAID的通式，任何RAID都可以转换为特定的erasure code。在传统的RAID中，仅支持少量的磁盘分布，当系统中存在多个分发点和多节点时，RAID将无法满足需求。比如RAID5只支持一个盘失效，即使是RAID6也仅支持两个盘失效，所以支持多个盘失效的算法也就是erasure code是解决这一问题的办]]></description><category></category></item><item><title><![CDATA[java 面试题基础]]></title><link>https://blog.youkuaiyun.com/touch_future/article/details/58691224</link><guid>https://blog.youkuaiyun.com/touch_future/article/details/58691224</guid><author>touch_future</author><pubDate>Tue, 28 Feb 2017 22:29:02 +0800</pubDate><description><![CDATA[1、一个".java"源文件中是否可以包括多个类（不是内部类）？有什么限制？ 

　　可以有多个类，但只能有一个public的类，并且public的类名必须与文件名相一致。

2、Java有没有goto? 

　　java中的保留字，现在没有在java中使用。

3、说说&和&&的区别。 

　　&和&&都可以用作逻辑与的运算符，表示逻辑与（and），当运算符两边的表达式的结果]]></description><category></category></item><item><title><![CDATA[JVM调优：选择合适的GC collector]]></title><link>https://blog.youkuaiyun.com/touch_future/article/details/58664147</link><guid>https://blog.youkuaiyun.com/touch_future/article/details/58664147</guid><author>touch_future</author><pubDate>Tue, 28 Feb 2017 21:20:45 +0800</pubDate><description><![CDATA[正文之前，先介绍一人：Jon Masamitsu。此人背景不详，不过他在SUN做的就是JVM，所以他的blog我认为是每一个想对JVM调优的人都应该读一读的。本文的很多观点和一些图也是取自他的blog。
blog link：http://blogs.sun.com/jonthecollector/ 

在他的一篇blog【1】中，写到了GC调优的最重要的三个选项：
排在第三位的是young]]></description><category></category></item><item><title><![CDATA[Java 并发开发：内置锁 Synchronized]]></title><link>https://blog.youkuaiyun.com/touch_future/article/details/58295039</link><guid>https://blog.youkuaiyun.com/touch_future/article/details/58295039</guid><author>touch_future</author><pubDate>Mon, 27 Feb 2017 22:17:40 +0800</pubDate><description><![CDATA[摘要：

在多线程编程中，线程安全问题是一个最为关键的问题，其核心概念就在于正确性，即当多个线程访问某一共享、可变数据时，始终都不会导致数据破坏以及其他不该出现的结果。而所有的并发模式在解决这个问题时，采用的方案都是序列化访问临界资源 。在 Java 中，提供了两种方式来实现同步互斥访问：synchronized 和 Lock。本文针对 synchronized 内置锁 详细讨论了其在 Jav]]></description><category></category></item><item><title><![CDATA[Docker基础命令]]></title><link>https://blog.youkuaiyun.com/touch_future/article/details/54564772</link><guid>https://blog.youkuaiyun.com/touch_future/article/details/54564772</guid><author>touch_future</author><pubDate>Sun, 15 Jan 2017 21:32:36 +0800</pubDate><description><![CDATA[转载于 http://blog.youkuaiyun.com/birdben/article/details/49873725

Docker基础命令

下面简单介绍一下Docker常用的一些基础命令
# 在ubuntu中安装docker
$ sudo apt-get install docker.io

# 查看docker的版本信息
$ docker version

# 查看安装docker的]]></description><category></category></item><item><title><![CDATA[一位老电子工程师十年的职场感悟]]></title><link>https://blog.youkuaiyun.com/touch_future/article/details/54410844</link><guid>https://blog.youkuaiyun.com/touch_future/article/details/54410844</guid><author>touch_future</author><pubDate>Fri, 13 Jan 2017 17:49:12 +0800</pubDate><description><![CDATA[一位老电子工程师十年的职场感悟




[1]好好规划自己的路，不要跟着感觉走！根据个人的理想决策安排，绝大部分人并不指望成为什么院士或教授，而是希望活得滋润一些，爽一些。那么，就需要慎重安排自己的轨迹。从哪个行业入手，逐渐对该行业深入了解，不要频繁跳槽，特别是不要为了一点工资而转移阵地，从长远看，这点钱根本不算什么，当你对一个行业有那么几年的体会，以后钱根本不是问题。频繁地动荡不是上策]]></description><category></category></item><item><title><![CDATA[深入理解Java G1垃圾收集器]]></title><link>https://blog.youkuaiyun.com/touch_future/article/details/53947668</link><guid>https://blog.youkuaiyun.com/touch_future/article/details/53947668</guid><author>touch_future</author><pubDate>Fri, 30 Dec 2016 23:54:41 +0800</pubDate><description><![CDATA[本文首先简单介绍了垃圾收集的常见方式，然后再分析了G1收集器的收集原理，相比其他垃圾收集器的优势，最后给出了一些调优实践。

一，什么是垃圾回收

首先，在了解G1之前，我们需要清楚的知道，垃圾回收是什么？简单的说垃圾回收就是回收内存中不再使用的对象。

垃圾回收的基本步骤

回收的步骤有2步：

查找内存中不再使用的对象释放这些对象占用的内存

1,查找内存中不再使用的对]]></description><category></category></item><item><title><![CDATA[mysql 5.7 ERROR 1045 (28000): Access denied for user 'root'@'localhost']]></title><link>https://blog.youkuaiyun.com/touch_future/article/details/53932545</link><guid>https://blog.youkuaiyun.com/touch_future/article/details/53932545</guid><author>touch_future</author><pubDate>Thu, 29 Dec 2016 21:50:36 +0800</pubDate><description><![CDATA[mysql 安装了最新版，但是初始化登陆不了，网上找了很多资料，但是都没用，后来在网上看到说是新版本的mysql初始化安装会随机生成一个root密码，如果你不知道这个密码，或者没有留意到这个密码，则会出现我这样的情况，安装了登不了，总是报错：
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password]]></description><category></category></item><item><title><![CDATA[spark rdd]]></title><link>https://blog.youkuaiyun.com/touch_future/article/details/53526674</link><guid>https://blog.youkuaiyun.com/touch_future/article/details/53526674</guid><author>touch_future</author><pubDate>Thu, 08 Dec 2016 23:10:56 +0800</pubDate><description><![CDATA[本文面向的读者是具有一定spark使用经验，想提升对spark理解的童鞋们。
RDD 是spark最主要的抽象（其他两个是Accumulator 和 BroadCast）。一个RDD 本身是一个java（scala）对象，它代表的是分布在集群中不同节点上的数据。那么很自然，这个对像的属性如下：
1 a list of partitions： 也就是构成这个 RDD 的partition
2 ]]></description><category></category></item><item><title><![CDATA[MapReduce 调优基本思路]]></title><link>https://blog.youkuaiyun.com/touch_future/article/details/53501384</link><guid>https://blog.youkuaiyun.com/touch_future/article/details/53501384</guid><author>touch_future</author><pubDate>Wed, 07 Dec 2016 09:12:08 +0800</pubDate><description><![CDATA[mapreduce 的调优一般都是基于shuffle阶段的。下面就讲讲基本思路。
调优的基本原则就是给 shuffle 阶段尽可能大的内存。但是因为map和reduce函数的执行也需要内存，所以shuffle需要多少内存需要权衡一下，比如尽量避免在 map reduce 用 哈希表等结构对数据进行聚合操作，让 map 和 reduce 占用的内存尽可能小。
map 和 reduce 任务占用的]]></description><category></category></item><item><title><![CDATA[MapReduce 的过程详解]]></title><link>https://blog.youkuaiyun.com/touch_future/article/details/53471388</link><guid>https://blog.youkuaiyun.com/touch_future/article/details/53471388</guid><author>touch_future</author><pubDate>Mon, 05 Dec 2016 23:10:05 +0800</pubDate><description><![CDATA[从整体上，mapreduce 框架可以分为五个不同实体：
1）客户端：提交 MapReduce job。
2）Yarn 资源管理器（resource manager）：协调集群计算资源的分配
3）Yarn 节点管理器（node manager）：启动和监视集群中每个节点的计算容器。
4）Mapreduce]]></description><category></category></item><item><title><![CDATA[hadoop map reduce 阶段笔记]]></title><link>https://blog.youkuaiyun.com/touch_future/article/details/53428078</link><guid>https://blog.youkuaiyun.com/touch_future/article/details/53428078</guid><author>touch_future</author><pubDate>Thu, 01 Dec 2016 22:52:02 +0800</pubDate><description><![CDATA[shuffle and sort
MR 框架保证：每个 reducer 的输入都是按照 key 键排过序的。
shuffle：将map输出结果送到reducer和排序的功能。
1） map：每个map task将结果输出到环形内存缓冲区，当到达一定阈值，则启动一个后台进程将缓存中的数据 1: 按照 reduce 阶段 reducer 的个数将数据分区，然后在每个分区里面的数据按照key键值排]]></description><category></category></item><item><title><![CDATA[数据结构之查找]]></title><link>https://blog.youkuaiyun.com/touch_future/article/details/53088460</link><guid>https://blog.youkuaiyun.com/touch_future/article/details/53088460</guid><author>touch_future</author><pubDate>Tue, 08 Nov 2016 21:08:31 +0800</pubDate><description><![CDATA[本文是我学习查找的一点感悟，希望给没有接触过的人的一个大体的概念。


数据结构这门课程中，树是比较难以理解的，但是树在工作中用的也是最多的，要想弄懂底层的一些细节，树是必须要掌握的，即使它在难，只要持之以恒，都是可以学会弄懂，做到融会贯通的。


查找，就是在一堆元素中找到自己需要的那个。比较简单的，大家都能想到的，就是把自己要找的和这些记录逐个比较，找到符合自己的，然后取出来，如果]]></description><category></category></item><item><title><![CDATA[HBase region 查找]]></title><link>https://blog.youkuaiyun.com/touch_future/article/details/53046234</link><guid>https://blog.youkuaiyun.com/touch_future/article/details/53046234</guid><author>touch_future</author><pubDate>Sat, 05 Nov 2016 16:43:32 +0800</pubDate><description><![CDATA[hbase 中，为了让客户端找到特定主键的 region，HBase提供了两张特殊的目录表 -ROOT- 和 .META.。
-ROOT-表用来查询所有保存 .META. 表的 region 的位置。
-ROOT-表从不进行拆分，从而保证类似与B+树结构的三层查找结构：
1 在Zookeeper 中包含-ROOT-表的服务器，
2 在-ROOT-表中查找对应.META. region 的位]]></description><category></category></item></channel></rss>