自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

技术是我的毕生追求

Email: xianlubird@gmail.com

  • 博客(262)
  • 资源 (3)
  • 问答 (1)
  • 收藏
  • 关注

原创 《自己动手写Docker》书摘之一: Linux Namespace

Linux Namespace 介绍我们经常听到说Docker 是一个使用了Linux Namespace 和 Cgroups 的虚拟化工具,但是什么是Linux Namespace 它在Docker内是怎么被使用的,说到这里很多人就会迷茫,下面我们就先介绍一下Linux Namespace 以及它们是如何在容器里面使用的。概念Linux Namespace 是kernel 的一个功能,它可以隔离...

2017-06-28 18:12:12 1439

原创 《自己动手写Docker》书摘之三---Union File System介绍

Union File SystemUnionFSunionfs是一种为Linux,FreeBSD和NetBSD操作系统设计的把其他文件系统联合到一个联合挂载点的文件系统服务。它使用branch把不同文件系统的文件和目录“透明地”覆盖,形成一个单一一致的文件系统。这些branches或者是read-only或者是read-write的,所以当对这个虚拟后的联合文件系统进行写操作的时候,系统是真正写到了

2016-11-30 17:49:16 4852

原创 《自己动手写Docker》书摘之二---Linux Cgroups介绍

Linux Cgroups介绍上面是构建Linux容器的namespace技术,它帮进程隔离出自己单独的空间,但Docker又是怎么限制每个空间的大小,保证他们不会互相争抢呢?那么就要用到Linux的Cgroups技术。概念Linux Cgroups(Control Groups) 提供了对一组进程及将来的子进程的资源的限制,控制和统计的能力,这些资源包括CPU,内存,存储,网络等。通过Cgroup

2016-11-28 17:33:43 3524

原创 《自己动手写Docker》书摘之一: Linux Namespace

Linux Namespace 介绍我们经常听到说Docker 是一个使用了Linux Namespace 和 Cgroups 的虚拟化工具,但是什么是Linux Namespace 它在Docker内是怎么被使用的,说到这里很多人就会迷茫,下面我们就先介绍一下Linux Namespace 以及它们是如何在容器里面使用的。概念Linux Namespace 是kernel 的一个功能,它可以隔离一

2016-11-25 23:41:23 5237

原创 Intel 中国研究院面试经历

今天接着写Intel 中国研究院的面试经历。Intel面试题是我面试过的比较简单的一个。第一次是在下午五点半左右,我正在食堂和好几个基友吃20元巨资买的清蒸草鱼。正在吐沫星子四处飞溅的时候,一个010开头的电话打进来。我心想又是哪个卖信用卡的骚扰电话,结果那头说自己是Intel中国的,想给我来个电话面试,我瞬间咽下口中的鱼肉,出去找了一个黑暗的猥琐角落蹲着开始电话面试。他说大概20分钟

2014-11-20 20:41:30 16001 6

原创 IBM 中国研究院面试经历

继上次面试MSRA失败后,严重刺激了我幼小的心灵。从此苦学算法准备面试更多其他的公司刷一刷Offer以解心头之恨。这个带来的IBM 中国研究院的面试经历。IBM的面试相比于MSRA,简直就是简单的要命。刚开始都是一样,聊了聊自己的项目经验,这个面试官对我接的一个私活貌似非常感兴趣,我们就这个私活聊了很多。从刚开始怎么接的,到中途如何完成,到最终客户反复修改如何应对,怎么收取维护费,

2014-11-18 22:11:36 12522 2

原创 MSRA面试总结

前段时间有幸参加了微软亚洲研究院的参观活动,顺便投了一份简历,没想到就迎来了两次面试机会,而且是连续的两次被拒绝,严重的刺激到了我,导致我疯狂的复习刷Offer。现在终于算是告于段落,现在也终于有空沉下心来总结总结最近的面试情况。首先说的第一家面试就是MSRA。原来不知道他的高大上,去面试之后才知道原来MSRA还是那么牛逼。第一次面试的组是操作系统组,很不幸的是,第一轮面试

2014-11-18 21:57:25 25796

原创 KNN K~近邻算法笔记

K~近邻算法是最简单的机器学习算法。工作原理就是:将新数据的每个特征与样本集中数据对应的特征进行比较,然后算法提取样本集中特征最相似的数据的分类标签。一般来说,只提取样本数据集中前K个最相似的数据。通常K不大于20,最后选择K个最相似数据中出现次数最多的分类,最为新的数据分类。但是K~近邻算法必须保存全部的数据集,如果训练数据集很大,必须使用打量的存储空间。此外,由于必须对数据集中每个

2014-10-22 16:08:47 3224

原创 Java多线程之~~~线程安全容器的非阻塞容器

在并发编程中,会经常遇到使用容器。但是如果一个容器不是线程安全的,那么他在多线程的插入或者删除的过程中就会出现各种问题,就是不同步的问题。所以JDK提供了线程安全的容器,他能保证容器在多线程的情况下安全的插入和删除。当然,线程安全的容器分为两种,第一种为非阻塞似的,非阻塞的意思是当请求一个容器为空或者这个请求不能执行的时候,就会报出异常,第二种阻塞的意思是,不能执行的命令不会报出异常,

2014-10-12 21:45:58 7659

原创 Mybatis之使用注解开发CRUD

上一篇演示了如何使用XML来操作Mybatis实现CRUD,但是大量的XML配置文件的编写是非常烦人的。因此Mybatis也提供了基于注解的配置方式,下面我们来演示一下使用接口加注解来实现CRUD的的例子。首先是创建一个接口。package com.bird.mybatis.bean;import java.util.List;import org.apache.ibatis.

2014-10-09 22:08:49 56301 5

原创 Mybatis 简单的CRUD 基于XML文件配置

所有的ORM框架学习曲线都是先来一个CRUD爽一爽,下面我们就来CRUD一下,所有的配置都是基于上一篇的配置。废话不多说,直接上代码。<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> insert into

2014-10-09 21:39:58 4991

原创 Mybatis初探之环境的配置

很早之前就想学习mybatis,据说很多公司都使用这个框架。以前我都使用老掉牙的DBCP,Hibernate感觉太大,现在来学学这个中性的框架。首先是环境的配置,我使用maven创建项目,pom.xml文件如下<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/

2014-10-09 19:53:01 3630

原创 Java多线程之~~~Fork/Join框架的同步和异步

在Fork/Join框架中,提交任务的时候,有同步和异步两种方式。以前使用的invokeAll()的方法是同步的,也就是任务提交后,这个方法不会返回直到所有的任务都处理完了。而还有另一种方式,就是使用fork方法,这个是异步的。也就是你提交任务后,fork方法立即返回,可以继续下面的任务。这个线程也会继续运行。下面我们以一个查询磁盘的以log结尾的文件的程序例子来说明异步的用法

2014-10-08 20:56:35 8864

原创 使用Java7提供的Fork/Join框架

在Java7中,JDK提供对多线程开发提供了一个非常强大的框架,就是Fork/Join框架。这个是对原来的Executors更进一步,在原来的基础上增加了并行分治计算中的一种Work-stealing策略,就是指的是。当一个线程正在等待他创建的子线程运行的时候,当前线程如果完成了自己的任务后,就会寻找还没有被运行的任务并且运行他们,这样就是和Executors这个方式最大的区别,更加有

2014-10-07 23:55:11 18726

原创 Java多线程~~~ScheduledThreadPoolExecutor 计划任务类的使用

前面我们已经学习了使用ThreadPoolExecutor类来实现自动创建和运行线程。但是na'xie

2014-09-26 22:08:59 8837 2

原创 Java多线程之~~~Callable接口获得返回值

ThreadPoolExecutor提供了另一个非常强有力的接口,那就是callable。这个接口和runnable类似,但是实现这个接口的方法是call方法,这个方法是可以返回值的,弥补了runnable不能返回值的悲哀。而且这个方法可以配合ThreadPoolExecutor使用,获得Future接口,从这个接口的名字我们就能知道,返回的这个类似于指向这个线程的一个指针,我们能通过

2014-09-23 22:11:12 17444

原创 Java多线程之~~~使用ThreadPoolExecutor来创建线程

以前我们创建线程的时候都是主动的new一个Thread,然后调用他们的start方法,但是如果线程非常多,任务也非常多的时候,这样写就会显得非常麻烦,当然可能效率也不是很高,Java给我们提供了叫线程创建器这个样概念的类,他可以帮助我们管理这些线程,你做的就是编写好代码,然后交给他,她就会自动帮你运行。当然,带cache的threadpool 对于死掉的线程重新调用,在性能上也会有非常

2014-09-23 21:20:53 9843 1

原创 Java多线程之~~~使用Exchanger在线程之间交换数据

在多线程中,两个线程之间交换数据是非常常见的情况,我们可以使用公共的数据结构,同样,Java也提供了很好的类供我们使用,那就是Exchanger类,这个类可以帮助我们在两个线程之间同步数据结构,下面我们以这个类再来实现一遍生产者消费者模型,貌似这个模型已经被写烂了。package com.bird.concursey.charpet5;import java.util.Li

2014-09-23 20:48:07 5762 2

原创 Java多线程之~~~Phaser重写onAdvance方法

在Phaser类中,我们在每个线程中,每个线程进行完一个阶段完成后都会等待其他线程完成后再一起进行,当所有线程都完成了一个任务的时候,会调用Phaser的onAdvance方法,如果我们想在每个阶段,所有线程都完成他们的阶段工作后做点啥事的话,那就得继承Phaser类来重写Onadvance这个方法来实现我们的目的,下面我们用一个例子来说明,例子就是模拟多个学生考试,考试分为三个阶段,

2014-09-23 20:20:57 4396

原创 Java多线程之~~~Phaser类实现任务的同步

在多线程开发中,经常会碰到将多个任务分配给多个线程,每个线程执行他的任务,但是,每个任务又分为好几个阶段,每个阶段期望各个线程同时达到,意思是,每一步每个线程都要同步,当有一个线程走完第一步的时候,他得等待其他的线程都完成第一步了才能继续下一步,步调一致能解决很多问题。下面我们使用一个例子,这个例子是模拟遍历机器上的一些文件,找出以log结尾的文件,并且他的最后修改时间为24小时以内,

2014-09-22 23:23:12 4804

原创 Java多线程之~~~CyclicBarrier 类的使用

上一节说了CountDown的使用方法,对于用来同步多个线程之间的协作关系,Java更提供了更加高级的方法来实现,这个类就是CyclicBarrier。 它可以实现当多个分支线程完成他们的工作后,调用await方法来等待,然后等所有的分支线程工作完毕后,会自动的调用主线程的run方法,这个主线程是一个实现runnable接口的类,在CyclicBarrier实例化的时候就调用了。下

2014-09-22 10:34:18 3069

原创 Java多线程之~~~使用CountDownLatch来同步多个线程实现一个任务

在多线程开发中,经常会遇到这样的问题,比如,一个线程需要其他的一些辅助线程完成指定的一些任务后才能开启。 类似于一个主线程正在运行,他需要其他分支线程完成一些任务后才能激活他来启动剩下的任务,这里就可以使用Java自带的CountDownLatch这个类来帮我们实现这样的效果。   这个类初始化的时候会指定一个数字,这就是需要等待的资源的数量,每一个资源到位的时候,就调用他的count

2014-09-22 09:38:00 4528 1

原创 Java多线程~~~使用信号量来控制资源获取

在多线程开发中,有一个很经典的名词,那就是信号量。信号量就是用来衡量一个资源的可利用数目的,根据信号量的多少来控制在多线程中各个资源之间的冲突问题,在Java中也提供了对信号量的支持。而且在创建信号量的时候,第二个参数用来指定采取何种分配策略,比如当有很多线程被阻塞,但有一个机会的时候,信号量应该选择谁去运行呢,如果选择true,就采用公平模式,到时候看哪个线程等待的时间最久,

2014-09-21 22:00:34 5307 1

原创 Java多线程开发之~~~多条件Condition接口的使用

我们在多线程开发中,可能会出现这种情况。就是一个线程需要另外一个线程满足某某条件才能继续运行,或者需要其他线程满足好几个条件才能运行,对于这样的多条件的多线程并发,我们如何控制好各个线程之间的关系,使他们能很好的处理冲突不至于相互出现问题呢,下面我们来介绍一下Java提供的Condition这个接口,这个接口很好的实现了这种需求。对于这个问题最经典的例子就是生产者消费者模型,生产者

2014-09-21 19:33:19 4492 2

原创 Java多线程之~~~ReadWriteLock 读写分离的多线程实现

在多线程开发中,经常会出现一种情况,我们希望读写分离。就是对于读取这个动作来说,可以同时有多个线程同时去读取这个资源,但是对于写这个动作来说,只能同时有一个线程来操作,而且同时,当有一个写线程在操作这个资源的时候,其他的读线程是不能来操作这个资源的,这样就极大的发挥了多线程的特点,能很好的将多线程的能力发挥出来。在Java中,ReadWriteLock这个接口就为我们实现了这个需求

2014-09-19 23:25:59 9923 3

原创 Java多线程之~~~Lock接口和ReentrantLock的使用

在多线程开发中,除了synchronized这个关键字外,我们还能通过Lock接口来实现这种效果。通过Lock接口来实现这种多线程加锁效果的好处是非常的灵活,我们不在需要对整个函数加锁,而且可以很方便的把他放在我们函数的任何一个地方,非常的称心,而且从效率上来说,使用Lock接口要比使用synchronized关键字效率高一些,下面我们来使用一个例子来说明这种方法的使用。p

2014-09-19 22:29:10 11071 3

原创 Java多线程之~~~~使用wait和notify实现生产者消费者模型

在多线程开发中,最经典的一个模型就是生产者消费者模型,他们有一个缓冲区,缓冲区有最大限制,当缓冲区满的时候,生产者是不能将产品放入到缓冲区里面的,当然,当缓冲区是空的时候,消费者也不能从中拿出来产品,这就涉及到了在多线程中的条件判断,java为了实现这些功能,提供了wait和notify方法,他们可以在线程不满足要求的时候让线程让出来资源等待,当有资源的时候再notify他们让他们继续

2014-09-18 23:28:02 9822 1

原创 Java多线程之~~~synchronized添加参数来实现独立的代码片段

有时候我们并不想在整个方法前面加上synchronized这个关键字,这样会使整个方法调用变的缓慢,我们只在关键代码的地方增加这个synchronized这个关键字,然后这样就能加快方法或者代码的执行效率。然后可能还有一种情况就是,我们有两个变量,其中任何一个变量都是同时只能一个变量访问,但是两个变量可以在同时被两个变量访问,这种需求下我们就得使用sychronized的带参数的方法来

2014-09-18 22:48:29 4095 1

原创 Java多线程之~~~~synchronized 方法

在多线程开发中,总会遇到多个在不同线程中的方法操作同一个数据,这样在不同线程中操作这个数据不同的顺序或者时机会导致各种不同的现象发生,以至于不能实现你预期的效果,不能实现一致性,这时候就可以使用synchronized关键字对一个方法来说,这个synchronized能保证所有调用这个方法的线程只有一个正在操作这个方法,不会出现同时多个线程进入这个方法的情况,下面我们来一个例子说明这个

2014-09-18 22:07:43 1847 1

原创 Java多线程之-----实现自己的ThreadFactory

工厂模式是最常用的模式之一,在创建线程的时候,我们当然也能使用工厂模式来生产Thread,这样就能替代默认的new THread,而且在自定义工厂里面,我们能创建自定义化的Thread,并且计数,或则限制创建Thread的数量,给每个Thread设置对应的好听的名字,或则其他的很多很多事情,总之就是很爽,下面我们来展示一个简单的Thread工厂模式来创建自己的Thread。

2014-09-16 21:38:35 9885

原创 Java多线程之---ThreadGroup 管理Thread

当创建了好几个线程的时候,很多线程的工作任务是类似或者一致的,这样我们就可以使用ThreadGroup来管理他们,ThreadGroup可以随时的获取在他里面的线程的运行状态,信息,或者一条命令关闭掉这个group里面的所有线程,非常的简单实用,下面我们用一个例子来说明一下如何使用。package com.bird.concursey;import java.util.Da

2014-09-16 21:20:08 25151 2

原创 Java 多线程之--ThreadLocal 简介

在多线程开发中,经常会遇见在run方法里面调用一个公共的属性的事情,由于每次start都会创建一个线程,因此所有的线程共享一个属性,当其中任何一个线程更改了这个属性的值,这个属性在下面的使用过程中都会被改变,这回导致很多不期望发生的事情发生,这就叫做线程不安全的。先来一个例子说明这个问题。package com.bird.concursey;import java.util.Date;

2014-09-16 20:46:36 2414

原创 Java 多线程之-----守护进程

守护进程,顾名思义就是默默在后台运行的进程,当JVM上没有其他进程运行时运行的进程,最典型的一个列子就是JVM自带的垃圾清理机,他就是在其他程序不运行的时候占用CPU来进行清理内存垃圾,因此他具有很强的不确定性,因为你不知道啥时候他就会运行,也不知道啥时候他不会运行,因此适合做一个不太重要的清理工作或者服务器上的监听工作。下面我们使用JVM的daemon来写一个小例子,实现的效果如

2014-09-15 23:38:42 6724 1

原创 Java 多线程之--- Thread.join介绍

许久许久没有写过博客了,以前上班总是没有时间,但是总感觉写博客还是很好的一种记录自己技术进程的一种方式于是在辞职后来到北软,又一次上学了,又一次有时间来写博客了,所以再次开始写博客了,呵呵,再次当学生的感觉真好!!!!   这次说的是Thread的join方法,以前总是使用他的run和sleep方法,哪两个都是比较清楚的,对于这个join方法,他的主要功能就是,当你在一个方

2014-09-15 22:38:15 6073 1

原创 百度云离线下载含有违规内容检测方法分析

最近国家开始一轮净网行动,清除网上的淫秽色情信息。各大互联网厂家纷纷开始行动,比如当年很好用的百度云离线下载就一度关闭。后来再次开启后,就出现了这句经典词,因含有违规内容被屏蔽无法下载。其实被屏蔽的不一定都是不健康视频,有些仅仅是因为文件名含有一些字眼而已,比如一些美国大片的枪版就几乎都不能通过百度云的离线下载检测。据说这种方法还在迅雷等地方都有检测,因此我们来分析一下,这个检测到底是如何

2014-06-27 16:07:11 222858 2

原创 Mark 一下自己折腾Github IO的路途

自从接触github之后,就非常喜欢这个玩意,后来碍于考研没空理这些玩意,现在在家无所事事,正好弄一弄。偶然看到了几个前辈们的Github的博客,有使用Jekyll搭建的,更有大牛自己开发的静态网站。我现在只能简单的配置一下jekyll实现一些简单的博客,但是这种及其简答简洁的写博客风格让我非常的新鲜,更有配置上自己的域名,那将是非常爽的个性化东西,呵呵,今天是折腾Github第一天,

2014-01-26 21:14:09 9565

原创 Android 中使用Pull解析XML文件

解析XML文件是非常常用的功能,在Android客户端中,经常与服务器通信都需要xml文件的支持,我们这里介绍一个简单的xml文件的解析,就是使用android中的pull方法进行解析。在java中,有dom解析和sax解析,这个pull解析有些类似于sax解析,他也是一行一行的读取然后解析内容的方法.首先看一下这个简单的xml文件 -1℃/5℃ 多云 南风3

2014-01-21 15:21:12 3462 4

原创 Android 一个简单的登陆窗口的实现(文件的保存与读取)

好久没写过代码了,现在又开始重操旧业了。想了想,还是回到CSDN博客来吧,原本都是在Github上面自己弄Pages写的,但是还是挺舍不得CSDN的。在这里继续开写吧,反正都是一些菜鸟的流水账的东西。记录Mark一下。今天写的是一个简单的登陆界面,主要功能就是实现记住密码这个简单的功能,说白了就是在Android中实现文件的保存与再次的读取。首先是布局文件,很简单的线性布局。<

2014-01-16 16:46:50 4621

原创 Eclipse上GIT插件EGIT使用手册

首先下载EGIT插件就可以使用,最好下载ZIP文件比较好配置,可恶的Great Wall.地址,http://ishare.iask.sina.com.cn/f/25450726.html   。  把这个文件解压之后放到myeclipse安装目录的dropins文件目录下面重启myeclipse 就可以了。二_使用EGIT前的配置

2013-07-13 22:58:38 12678 2

原创 CODE CSDN Git 配制方法介绍

以前一直使用Github,最近看到CSDN出了CODE代码托管功能,由于国内的阿里云服务器很稳定,而且不会被国墙,所以果断的迁移了,下面就简单的介绍一下CODE的配置使用。其实CSDN的code 何丽萍介绍的很全面了。首先需要下载GIT客户端,http://git-scm.com/downloads。。。   然后再code.csdn.net上面创建一个项目,如果你的项目已经存

2013-07-13 22:51:38 17005 8

Spring3.1 AOP倚赖jar 包汇总

Spring 3.1倚赖的外部jar包汇总

2012-05-21

《高质量C.编程指南》

教你平时不足以注意的编程好习惯,值得一睹

2011-08-25

让你不再害怕指针 C++版本

介绍C++指针的一本好书,适合对指针不了解或者迷茫的哥们看

2011-06-05

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除