<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[技术是我的毕生追求]]></title><description><![CDATA[Email: xianlubird@gmail.com]]></description><link>https://blog.youkuaiyun.com/a352193394</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; a352193394]]></copyright><item><title><![CDATA[《自己动手写Docker》书摘之一： Linux Namespace]]></title><link>https://blog.youkuaiyun.com/a352193394/article/details/80130262</link><guid>https://blog.youkuaiyun.com/a352193394/article/details/80130262</guid><author>a352193394</author><pubDate>Wed, 28 Jun 2017 18:12:12 +0800</pubDate><description><![CDATA[Linux Namespace 介绍我们经常听到说Docker 是一个使用了Linux Namespace 和 Cgroups 的虚拟化工具，但是什么是Linux Namespace 它在Docker内是怎么被使用的，说到这里很多人就会迷茫，下面我们就先介绍一下Linux Namespace 以及它们是如何在容器里面使用的。概念Linux Namespace 是kernel 的一个功能，它可以隔离...]]></description><category></category></item><item><title><![CDATA[《自己动手写Docker》书摘之三---Union File System介绍]]></title><link>https://blog.youkuaiyun.com/a352193394/article/details/53411215</link><guid>https://blog.youkuaiyun.com/a352193394/article/details/53411215</guid><author>a352193394</author><pubDate>Wed, 30 Nov 2016 17:49:16 +0800</pubDate><description><![CDATA[Union File SystemUnionFSunionfs是一种为Linux，FreeBSD和NetBSD操作系统设计的把其他文件系统联合到一个联合挂载点的文件系统服务。它使用branch把不同文件系统的文件和目录“透明地”覆盖，形成一个单一一致的文件系统。这些branches或者是read-only或者是read-write的，所以当对这个虚拟后的联合文件系统进行写操作的时候，系统是真正写到了]]></description><category></category></item><item><title><![CDATA[《自己动手写Docker》书摘之二---Linux Cgroups介绍]]></title><link>https://blog.youkuaiyun.com/a352193394/article/details/53381050</link><guid>https://blog.youkuaiyun.com/a352193394/article/details/53381050</guid><author>a352193394</author><pubDate>Mon, 28 Nov 2016 17:33:43 +0800</pubDate><description><![CDATA[Linux Cgroups介绍上面是构建Linux容器的namespace技术，它帮进程隔离出自己单独的空间，但Docker又是怎么限制每个空间的大小，保证他们不会互相争抢呢？那么就要用到Linux的Cgroups技术。概念Linux Cgroups(Control Groups) 提供了对一组进程及将来的子进程的资源的限制，控制和统计的能力，这些资源包括CPU，内存，存储，网络等。通过Cgroup]]></description><category></category></item><item><title><![CDATA[《自己动手写Docker》书摘之一： Linux Namespace]]></title><link>https://blog.youkuaiyun.com/a352193394/article/details/53344167</link><guid>https://blog.youkuaiyun.com/a352193394/article/details/53344167</guid><author>a352193394</author><pubDate>Fri, 25 Nov 2016 23:41:23 +0800</pubDate><description><![CDATA[Linux Namespace 介绍我们经常听到说Docker 是一个使用了Linux Namespace 和 Cgroups 的虚拟化工具，但是什么是Linux Namespace 它在Docker内是怎么被使用的，说到这里很多人就会迷茫，下面我们就先介绍一下Linux Namespace 以及它们是如何在容器里面使用的。概念Linux Namespace 是kernel 的一个功能，它可以隔离一]]></description><category></category></item><item><title><![CDATA[Intel 中国研究院面试经历]]></title><link>https://blog.youkuaiyun.com/a352193394/article/details/41319287</link><guid>https://blog.youkuaiyun.com/a352193394/article/details/41319287</guid><author>a352193394</author><pubDate>Thu, 20 Nov 2014 20:41:30 +0800</pubDate><description><![CDATA[今天接着写Intel 中国研究院的面试经历。Intel面试题是我面试过的比较简单的一个。第一次是在下午五点半左右，
我正在食堂和好几个基友吃20元巨资买的清蒸草鱼。正在吐沫星子四处飞溅的时候，一个010开头的电话打进来。我心
想又是哪个卖信用卡的骚扰电话，结果那头说自己是Intel中国的，想给我来个电话面试，我瞬间咽下口中的鱼肉，出去
找了一个黑暗的猥琐角落蹲着开始电话面试。他说大概20分钟]]></description><category></category></item><item><title><![CDATA[IBM 中国研究院面试经历]]></title><link>https://blog.youkuaiyun.com/a352193394/article/details/41256277</link><guid>https://blog.youkuaiyun.com/a352193394/article/details/41256277</guid><author>a352193394</author><pubDate>Tue, 18 Nov 2014 22:11:36 +0800</pubDate><description><![CDATA[继上次面试MSRA失败后，严重刺激了我幼小的心灵。从此苦学算法准备面试更多其他的公司刷一刷Offer以解心
头之恨。这个带来的IBM 中国研究院的面试经历。
IBM的面试相比于MSRA，简直就是简单的要命。刚开始都是一样，聊了聊自己的项目经验，这个面试官对我接的
一个私活貌似非常感兴趣，我们就这个私活聊了很多。从刚开始怎么接的，到中途如何完成，到最终客户反复修改如何
应对，怎么收取维护费，]]></description><category></category></item><item><title><![CDATA[MSRA面试总结]]></title><link>https://blog.youkuaiyun.com/a352193394/article/details/41255081</link><guid>https://blog.youkuaiyun.com/a352193394/article/details/41255081</guid><author>a352193394</author><pubDate>Tue, 18 Nov 2014 21:57:25 +0800</pubDate><description><![CDATA[前段时间有幸参加了微软亚洲研究院的参观活动，顺便投了一份简历，没想到就迎来了两次面试机会，而且是连续
的两次被拒绝，严重的刺激到了我，导致我疯狂的复习刷Offer。现在终于算是告于段落，现在也终于有空沉下心来总结
总结最近的面试情况。


首先说的第一家面试就是MSRA。原来不知道他的高大上，去面试之后才知道原来MSRA还是那么牛逼。第一次面
试的组是操作系统组，很不幸的是，第一轮面试]]></description><category></category></item><item><title><![CDATA[KNN K~近邻算法笔记]]></title><link>https://blog.youkuaiyun.com/a352193394/article/details/40377883</link><guid>https://blog.youkuaiyun.com/a352193394/article/details/40377883</guid><author>a352193394</author><pubDate>Wed, 22 Oct 2014 16:08:47 +0800</pubDate><description><![CDATA[K~近邻算法是最简单的机器学习算法。工作原理就是：将新数据的每个特征与样本集中数据对应的特征进行比较，然后算法提取样本集中特征最相似的数据的分类标签。一般来说，只提取样本数据集中前K个最相似的数据。通常K不大于20，最后选择K个最相似数据中出现次数最多的分类，最为新的数据分类。


但是K~近邻算法必须保存全部的数据集，如果训练数据集很大，必须使用打量的存储空间。此外，由于必须对数据集中每个]]></description><category></category></item><item><title><![CDATA[Java多线程之~~~线程安全容器的非阻塞容器]]></title><link>https://blog.youkuaiyun.com/a352193394/article/details/40021683</link><guid>https://blog.youkuaiyun.com/a352193394/article/details/40021683</guid><author>a352193394</author><pubDate>Sun, 12 Oct 2014 21:45:58 +0800</pubDate><description><![CDATA[在并发编程中，会经常遇到使用容器。但是如果一个容器不是线程安全的，那么他在多线程的插入或者删除的过程
中就会出现各种问题，就是不同步的问题。所以JDK提供了线程安全的容器，他能保证容器在多线程的情况下安全的插
入和删除。当然，线程安全的容器分为两种，第一种为非阻塞似的，非阻塞的意思是当请求一个容器为空或者这个请求
不能执行的时候，就会报出异常，第二种阻塞的意思是，不能执行的命令不会报出异常，]]></description><category></category></item><item><title><![CDATA[Mybatis之使用注解开发CRUD]]></title><link>https://blog.youkuaiyun.com/a352193394/article/details/39940259</link><guid>https://blog.youkuaiyun.com/a352193394/article/details/39940259</guid><author>a352193394</author><pubDate>Thu, 09 Oct 2014 22:08:49 +0800</pubDate><description><![CDATA[上一篇演示了如何使用XML来操作Mybatis实现CRUD，但是大量的XML配置文件的编写是非常烦人的。因此
Mybatis也提供了基于注解的配置方式，下面我们来演示一下使用接口加注解来实现CRUD的的例子。
首先是创建一个接口。
package com.bird.mybatis.bean;

import java.util.List;

import org.apache.ibatis.]]></description><category></category></item><item><title><![CDATA[Mybatis 简单的CRUD  基于XML文件配置]]></title><link>https://blog.youkuaiyun.com/a352193394/article/details/39939381</link><guid>https://blog.youkuaiyun.com/a352193394/article/details/39939381</guid><author>a352193394</author><pubDate>Thu, 09 Oct 2014 21:39:58 +0800</pubDate><description><![CDATA[所有的ORM框架学习曲线都是先来一个CRUD爽一爽，下面我们就来CRUD一下，所有的配置都是基于上一篇的配置。废话不多说，直接上代码。

<!DOCTYPE mapper
  PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

	
	
		insert into]]></description><category></category></item><item><title><![CDATA[Mybatis初探之环境的配置]]></title><link>https://blog.youkuaiyun.com/a352193394/article/details/39936761</link><guid>https://blog.youkuaiyun.com/a352193394/article/details/39936761</guid><author>a352193394</author><pubDate>Thu, 09 Oct 2014 19:53:01 +0800</pubDate><description><![CDATA[很早之前就想学习mybatis,据说很多公司都使用这个框架。以前我都使用老掉牙的DBCP，Hibernate感觉太大，现
在来学学这个中性的框架。


首先是环境的配置，我使用maven创建项目，pom.xml文件如下
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/]]></description><category></category></item><item><title><![CDATA[Java多线程之~~~Fork/Join框架的同步和异步]]></title><link>https://blog.youkuaiyun.com/a352193394/article/details/39899049</link><guid>https://blog.youkuaiyun.com/a352193394/article/details/39899049</guid><author>a352193394</author><pubDate>Wed, 08 Oct 2014 20:56:35 +0800</pubDate><description><![CDATA[在Fork/Join框架中，提交任务的时候，有同步和异步两种方式。以前使用的invokeAll()的方法是同步的，也就是任
务提交后，这个方法不会返回直到所有的任务都处理完了。而还有另一种方式，就是使用fork方法，这个是异步的。也
就是你提交任务后，fork方法立即返回，可以继续下面的任务。这个线程也会继续运行。


下面我们以一个查询磁盘的以log结尾的文件的程序例子来说明异步的用法]]></description><category></category></item><item><title><![CDATA[使用Java7提供的Fork/Join框架]]></title><link>https://blog.youkuaiyun.com/a352193394/article/details/39872923</link><guid>https://blog.youkuaiyun.com/a352193394/article/details/39872923</guid><author>a352193394</author><pubDate>Tue, 07 Oct 2014 23:55:11 +0800</pubDate><description><![CDATA[在Java7中，JDK提供对多线程开发提供了一个非常强大的框架，就是Fork/Join框架。这个是对原来的Executors更
进一步，在原来的基础上增加了并行分治计算中的一种Work-stealing策略，就是指的是。当一个线程正在等待他创建的
子线程运行的时候，当前线程如果完成了自己的任务后，就会寻找还没有被运行的任务并且运行他们，这样就是和
Executors这个方式最大的区别，更加有]]></description><category></category></item><item><title><![CDATA[Java多线程~~~ScheduledThreadPoolExecutor 计划任务类的使用]]></title><link>https://blog.youkuaiyun.com/a352193394/article/details/39587607</link><guid>https://blog.youkuaiyun.com/a352193394/article/details/39587607</guid><author>a352193394</author><pubDate>Fri, 26 Sep 2014 22:08:59 +0800</pubDate><description><![CDATA[前面我们已经学习了使用ThreadPoolExecutor类来实现自动创建和运行线程。但是na'xie]]></description><category></category></item><item><title><![CDATA[Java多线程之~~~Callable接口获得返回值]]></title><link>https://blog.youkuaiyun.com/a352193394/article/details/39505307</link><guid>https://blog.youkuaiyun.com/a352193394/article/details/39505307</guid><author>a352193394</author><pubDate>Tue, 23 Sep 2014 22:11:12 +0800</pubDate><description><![CDATA[ThreadPoolExecutor提供了另一个非常强有力的接口，那就是callable。这个接口和runnable类似，但是实现这个
接口的方法是call方法，这个方法是可以返回值的，弥补了runnable不能返回值的悲哀。而且这个方法可以配合ThreadP
oolExecutor使用，获得Future接口，从这个接口的名字我们就能知道，返回的这个类似于指向这个线程的一个指针，我
们能通过]]></description><category></category></item><item><title><![CDATA[Java多线程之~~~使用ThreadPoolExecutor来创建线程]]></title><link>https://blog.youkuaiyun.com/a352193394/article/details/39504357</link><guid>https://blog.youkuaiyun.com/a352193394/article/details/39504357</guid><author>a352193394</author><pubDate>Tue, 23 Sep 2014 21:20:53 +0800</pubDate><description><![CDATA[以前我们创建线程的时候都是主动的new一个Thread，然后调用他们的start方法，但是如果线程非常多，任务也非
常多的时候，这样写就会显得非常麻烦，当然可能效率也不是很高，Java给我们提供了叫线程创建器这个样概念的类，
他可以帮助我们管理这些线程，你做的就是编写好代码，然后交给他，她就会自动帮你运行。
当然，带cache的threadpool 对于死掉的线程重新调用，在性能上也会有非常]]></description><category></category></item><item><title><![CDATA[Java多线程之~~~使用Exchanger在线程之间交换数据]]></title><link>https://blog.youkuaiyun.com/a352193394/article/details/39503857</link><guid>https://blog.youkuaiyun.com/a352193394/article/details/39503857</guid><author>a352193394</author><pubDate>Tue, 23 Sep 2014 20:48:07 +0800</pubDate><description><![CDATA[在多线程中，两个线程之间交换数据是非常常见的情况，我们可以使用公共的数据结构，同样，Java也提供了很好
的类供我们使用，那就是Exchanger类，这个类可以帮助我们在两个线程之间同步数据结构，下面我们以这个类再来实
现一遍生产者消费者模型，貌似这个模型已经被写烂了。


package com.bird.concursey.charpet5;

import java.util.Li]]></description><category></category></item><item><title><![CDATA[Java多线程之~~~Phaser重写onAdvance方法]]></title><link>https://blog.youkuaiyun.com/a352193394/article/details/39503445</link><guid>https://blog.youkuaiyun.com/a352193394/article/details/39503445</guid><author>a352193394</author><pubDate>Tue, 23 Sep 2014 20:20:57 +0800</pubDate><description><![CDATA[在Phaser类中，我们在每个线程中，每个线程进行完一个阶段完成后都会等待其他线程完成后再一起进行，当所
有线程都完成了一个任务的时候，会调用Phaser的onAdvance方法，如果我们想在每个阶段，所有线程都完成他们的阶
段工作后做点啥事的话，那就得继承Phaser类来重写Onadvance这个方法来实现我们的目的，下面我们用一个例子来说
明，例子就是模拟多个学生考试，考试分为三个阶段，]]></description><category></category></item><item><title><![CDATA[Java多线程之~~~Phaser类实现任务的同步]]></title><link>https://blog.youkuaiyun.com/a352193394/article/details/39483817</link><guid>https://blog.youkuaiyun.com/a352193394/article/details/39483817</guid><author>a352193394</author><pubDate>Mon, 22 Sep 2014 23:23:12 +0800</pubDate><description><![CDATA[在多线程开发中，经常会碰到将多个任务分配给多个线程，每个线程执行他的任务，但是，每个任务又分为好几个
阶段，每个阶段期望各个线程同时达到，意思是，每一步每个线程都要同步，当有一个线程走完第一步的时候，他得等
待其他的线程都完成第一步了才能继续下一步，步调一致能解决很多问题。下面我们使用一个例子，这个例子是模拟遍
历机器上的一些文件，找出以log结尾的文件，并且他的最后修改时间为24小时以内，]]></description><category></category></item></channel></rss>