自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(595)
  • 资源 (4)
  • 收藏
  • 关注

转载 Kafka入门经典教程

问题导读1.Kafka独特设计在什么地方?2.Kafka如何搭建及创建topic、发送消息、消费消息?3.如何书写Kafka程序?4.数据传输的事务定义有哪三种?5.Kafka判断一个节点是否活着有哪两个条件?6.producer是否直接将数据发送到broker的leader(主节点)?7.Kafa consumer是否可以消费指定分区消息?8.Kafka消息是

2015-07-19 23:36:21 103541 18

转载 ab常见问题汇总

测试服务器ab被测试服务器apacheapache版本2.2.25问题一、socket: Too many open files (24)解决(在测试服务器操作):1、查看当前系统设置:open files (-n) 1024为1024[root@localhost ~]# ulimit -acore file siz

2015-07-14 16:42:36 2035 1

转载 GridFS:基于MongoDB的分布式文件存储系统

基本原理GridFS是MongoDB之上的分布式文件系统,其利用了MongoDB的分布式存储机制并通过MongoDB来存储文件数据和文件元数据,兼具文档型数据库和文件系统的优势。GridFS是当前大数据潮流和复杂数据分析需求的产物。简单地来说,GridFS通过将文件数据和文件元数据保存在MongoDB里来实现文件系统,通过复制(Replication)来应对故障切换、数据集成,还可

2015-07-08 11:32:55 4838 1

转载 thrift使用实例

thrift是一个RPC框架,最初由Facebook开发,后来移交apache组织管理。这里用thrift写了一个最简单的例子,服务器和客户端都用java,供大家参考。0. 下载thrift首先需要下载thrift编译器,它把thrift定义编译成对应语言。在thrift官网上有下载http://thrift.apache.org/download这里我下载的是Thrift

2015-07-06 17:57:26 3024 1

转载 Kafka深度解析

背景介绍Kafka简介  Kafka是一种分布式的,基于发布/订阅的消息系统。主要设计目标如下:以时间复杂度为O(1)的方式提供消息持久化能力,即使对TB级以上数据也能保证常数时间的访问性能高吞吐率。即使在非常廉价的商用机器上也能做到单机支持每秒100K条消息的传输支持Kafka Server间的消息分区,及分布式消费,同时保证每个partition内的消息顺序传输同时支持离线数据

2015-07-02 16:39:46 1906

转载 Apache Kafka —一个不同的消息系统

简介Apache Kafka是分布式发布-订阅消息系统。它最初由LinkedIn公司开发,之后成为Apache项目的一部分。Kafka是一种快速、可扩展的、设计内在就是分布式的,分区的和可复制的提交日志服务。Apache Kafka与传统消息系统相比,有以下不同:它被设计为一个分布式系统,易于向外扩展;它同时为发布和订阅提供高吞吐量;它支持多订阅者,当失败时能自

2015-07-02 10:44:59 2404

转载 RocksDB介绍:一个比LevelDB更彪悍的引擎

关于LevelDB的资料网上还是比较丰富的,如果你尚未听说过LevelDB,那请稍微预习一下,因为RocksDB实际上是在LevelDB之上做的改进。本文主要侧重在架构上对RocksDB对LevelDB改进的地方做个简单介绍并添加一些个人的看法,更详细的信息读者可参考其官网:http://rocksdb.org/RocksDB是在LevelDB原来的代码上进行改进完善的,所以在用法上与Le

2015-07-01 18:27:12 3645 1

转载 8天学通MongoDB——第八天 驱动实践

作为系列的最后一篇,得要说说C#驱动对mongodb的操作,目前驱动有两种:官方驱动和samus驱动,不过我个人还是喜欢后者,因为提供了丰富的linq操作,相当方便。 官方驱动:https://github.com/mongodb/mongo-csharp-driver/downloads。下载后,还提供了一个酷似msdn的帮助文档。samus驱动:https://

2015-07-01 13:43:28 682

转载 8天学通MongoDB——第七天 运维技术

这一篇我们以管理员的视角来看mongodb,作为一名管理员,我们经常接触到的主要有4个方面:1.  安装部署2.  状态监控3.  安全认证4.  备份和恢复,下面我们就一点一点的讲解。 一:安装部署        我之前的文章都是采用console程序来承载,不过在生产环境中这并不是最佳实践,谁也不愿意在机器重启后满地找牙似找mon

2015-07-01 13:42:00 788 1

转载 8天学通MongoDB——第六天 分片技术

在mongodb里面存在另一种集群,就是分片技术,跟sql server的表分区类似,我们知道当数据量达到T级别的时候,我们的磁盘,内存就吃不消了,针对这样的场景我们该如何应对。 一:分片     mongodb采用将集合进行拆分,然后将拆分的数据均摊到几个片上的一种解决方案。 下面我对这张图解释一下:     人脸:       代

2015-07-01 13:40:26 800

转载 8天学通MongoDB——第五天 主从复制

从这一篇开始我们主要讨论mongodb的部署技术。    我们知道sql server能够做到读写分离,双机热备份和集群部署,当然mongodb也能做到,实际应用中我们不希望数据库采用单点部署,如果碰到数据库宕机或者被毁灭性破坏那是多么的糟糕。 一:主从复制1: 首先看看模型图  2: 从上面的图形中我们可以分析出这种架构有如下的好处:       数据备份。

2015-07-01 13:37:41 791

转载 8天学通MongoDB——第四天 索引操作

这些天项目改版,时间比较紧,博客也就没跟得上,还望大家见谅。    好,今天分享下mongodb中关于索引的基本操作,我们日常做开发都避免不了要对程序进行性能优化,而程序的操作无非就是CURD,通常我们又会花费50%的时间在R上面,因为Read操作对用户来说是非常敏感的,处理不好就会被人唾弃,呵呵。    从算法上来说有5种经典的查找,具体的可以参见我的算法速成系列,这其中

2015-07-01 13:35:50 781

转载 8天学通MongoDB——第三天 细说高级操作

今天跟大家分享一下mongodb中比较好玩的知识,主要包括:聚合,游标。一: 聚合      常见的聚合操作跟sql server一样,有:count,distinct,group,mapReduce。 count        count是最简单,最容易,也是最常用的聚合工具,它的使用跟我们C#里面的count使用简直一模一样。  distinct       这

2015-07-01 13:32:51 758 1

转载 8天学通MongoDB——第二天 细说增删查改

看过上一篇,相信大家都会知道如何开启mongodb了,这篇就细说下其中的增删查改,首先当我们用上一篇同样的方式打开mongodb,突然傻眼了,擦,竟然开启不了,仔细观察“划线区域“的信息,发现db文件夹下有一个类似的”lock file”阻止了mongodb的开启,接下来我们要做的就是干掉它,之后,开启成功,关于mongodb的管理方式将在后续文章分享。 一: Insert操作

2015-07-01 13:31:26 1126 1

转载 8天学通MongoDB——第一天 基础入门

关于mongodb的好处,优点之类的这里就不说了,唯一要讲的一点就是mongodb中有三元素:数据库,集合,文档,其中“集合”就是对应关系数据库中的“表”,“文档”对应“行”。 一: 下载      上MongoDB官网 ,我们发现有32bit和64bit,这个就要看你系统了,不过这里有两点注意:          ①:根据业界规则,偶数为“稳定版”(如:1

2015-07-01 13:30:01 1984 1

转载 经典漫画讲解HDFS原理

分布式文件系统比较出名的有HDFS  和 GFS,其中HDFS比较简单一点。本文是一篇描述非常简洁易懂的漫画形式讲解HDFS的原理。比一般PPT要通俗易懂很多。不难得的学习资料。1、三个部分: 客户端、nameserver(可理解为主控和文件索引,类似linux的inode)、datanode(存放实际数据)在这里,client的形式我所了解的有两种,通过hadoop提供的

2015-06-29 11:50:16 1657

转载 从数据库层面理解:随机 I/O & 顺序 I/O

在谈这俩概念前、先来说说 大I/O vs. 小I/O     通常、我们把  的I/O认为是小I/O、而 >=32KB 的I/O认为是大I/O     了解I/O的大小、影响到后期对缓存、RAID类型、LUN的一些属性的调优           当前大多数数据库使用的都是传统的机械磁盘     因此、整个系统设计要尽可能顺序I/O     避免昂贵的寻道时间和旋转延迟的开销

2015-06-12 12:00:59 4099 1

转载 神秘的40毫秒延迟与 TCP_NODELAY

最近的业余时间几乎全部献给 breeze 这个多年前挖 下的大坑—— 一个异步 HTTP Server。努力没有白费,项目已经逐渐成型了, 基本的框架已经有了,一个静态 文件模块也已经实现了。写 HTTP Server,不可免俗地一定要用 ab 跑一下性能,结果一跑不打紧,出现了一个困扰了我好几天的问题:神秘的 40ms 延迟。Table of Contents

2014-12-05 11:26:57 4584

转载 在Mac下搭建Docker并共享文件

在Mac OS X上安装docker这个官网上就有,请参考http://docs.docker.io/installation/mac/挂载主机磁盘 - 共享文件[Mac] 安装osxfuse和sshfs, 下载地址: http://osxfuse.github.io# 注:这里我之前用命令行安装osxfuse和sshfs,但运行后会有以下错误, 建议用官网的dmg

2014-12-02 17:05:17 8436 1

转载 Docker使用Link在容器之间建立连接

在使用Docker的时候我们会常常碰到这么一种应用,就是我需要两个或多个容器,其中某些容器需要使用另外一些容器提供的服务。比如这么一种情况:我们需要一个容器来提供mysql的数据库服务,而另外两个容器作为客户端来连接使用mysql数据库服务。下面我们就来看看Docker是怎样通过Link来实现这种功能的。 1. 这里我们首先创建两个容器image,一个用来模拟mysql数据库,另外一个使用

2014-11-29 22:15:38 1386

转载 Docker创建MySQL容器

本文目的是创建一个MySQL的image,并且在新创建出来的容器里自动启动MySQL服务接受外部连接步骤:1. 首先创建一个目录并在目录下创建一个Dockerfile,文件内容如下FROM centos:centos6MAINTAINER Fanbin Kong "[email protected]" RUN yum install -y mysql

2014-11-29 22:07:12 4884

转载 Docker使用Dockerfile创建支持ssh服务自启动的容器镜像

1. 首先创建一个Dockerfile文件,文件内容如下1234567891011121314151617181920212223# 选择一个已有的os镜像作为基础FROM centos:centos6 # 镜像的作者MAINTAINER Fanbin

2014-11-29 21:46:47 1466

转载 Docker创建支持ssh服务的容器和镜像

1. 这里使用的centos作为容器,所以首先下载centos的images1sudodocker pull centos2. 下载后运行一个centos的容器,这里使用centos6作为我测试的容器1sudodocker run --name=centos-ssh

2014-11-29 21:45:05 786

转载 __thread关键字

__thread是GCC内置的线程局部存储设施,存取效率可以和全局变量相比。__thread变量每一个线程有一份独立实体,各个线程的值互不干扰。可以用来修饰那些带有全局性且值可能变,但是又不值得用全局变量保护的变量。       __thread使用规则:只能修饰POD类型(类似整型指针的标量,不带自定义的构造、拷贝、赋值、析构的类型,二进制内容可以任意复制memset,memcpy,且内

2014-11-21 15:18:41 7295

转载 CPU绑定和CPU亲和性

将进程/线程与cpu绑定,最直观的好处就是提高了cpu cache的命中率,从而减少内存访问损耗,提高程序的速度。我觉得在NUMA架构下,这个操作对系统运行速度的提升有较大的意义,而在SMP架构下,这个提升可能就比较小。这主要是因为两者对于cache、总线这些资源的分配使用方式不同造成的,NUMA每个cpu有自己的一套资源体系, SMP中每个核心还是需要共享这些资源的,从这个角度来看,NUMA使用

2014-10-11 18:51:04 2163

转载 Linux内核4级页表的演进

Linux内存管理中core VM代码中,关于页表(page tables)管理的代码是个重点,是虚拟内存(Virtual Memory, VM)的基石,本文探讨Linux的页表实现及发展过程。页表概览在虚拟内存中,页表是个映射表的概念, 即从进程能理解的线性地址(linear address)映射到存储器上的物理地址(phisical address)。很显然,这个页表是需要常驻

2014-10-10 09:18:28 9002

转载 KVM 内存虚拟化及其实现

概述KVM(Kernel Virtual Machine) , 作为开源的内核虚拟机,越来越受到 IBM,Redhat,HP,Intel 等各大公司的大力支持,基于 KVM 的开源虚拟化生态系统也日益完善。而实现 KVM 虚拟化,使客户机高效地、安全地使用宿主机的内存资源,就必须实现内存的虚拟化。客户机物理地址空间为 了实现内存虚拟化,让客户机使用一个隔离的、从零开始且具有

2014-10-06 14:15:45 1773

转载 虚拟化原理

1、虚拟化概念(Virtualization)虚拟化是值计算机元件在虚拟的基础上运行,用逻辑表示资源,摆脱物理的限制。虚拟化在系统中加入一个虚拟化层,虚拟化层将下层资源封装,抽象为另一种形式的资源,提供给上层使用。虚拟化可以将一份资源抽象为多份,也可以将多份资源抽象成一份(通常为前者)。在虚拟化的世界里,要分清Host和Guest,真实的操作系统称为Host,虚拟的操作系统称为Guest。

2014-10-04 18:22:29 1713

转载 Docker 和一个正常的虚拟机有何区别?

问: 我多次重读Docker.io文档,希望搞明白Docker.io和一个完全的虚拟机的区别。Docker是如何做到提供一个完整的文件系统,独立的网络环境等等这些功能,同时还没有如此庞大? 为什么部署软件在一个docker镜像(image)比部署在一致的生产环境上要容易? 答: 

2014-09-27 22:45:03 1065

转载 深入浅出Docker(一):Docker核心技术预览

投稿关于我们合作伙伴欢迎关注我们的:InfoQ - 促进软件开发领域知识与创新的传播登录En |中文 |日本 |Fr |Br482,381 八月 独立访问用户语言 & 开发Java.Net

2014-09-27 22:31:46 978

原创 职责链模式(C语言实现)

一. 概述职责链模式:使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。二. 举个例子员工要求加薪公司的管理者一共有三级:总经理、总监、经理,如果一个员工要求加薪,应该向主管的经理申请,如果加薪的数量在经理的职权内,那么经理可以直接批准,否则将申请上交给总监。总

2014-09-27 18:37:30 2244

原创 观察者模式(C语言实现)

一. 概述Observer 模式要解决的问题为:建立一个一(Subject)对多(Observer)的依赖关系,并且做到当“一”变化的时候,依赖这个“一”的多也能够同步改变。Sbuject 相当于通知者,它提供依赖于它的观察者Observer 的注册(Attach)和注销(Detach)操作,并且提供了使得依赖于它的所有观察者同步的操作(Notify)。Obse

2014-09-27 12:31:52 6385 3

转载 使用monitor command监控QEMU运行状态

使用 monitor command 监控 QEMU 运行状态在虚拟化的研究领域,QEMU 有着举足轻重的地位。2007 年 2 月发布的 Linux 2.6.20 内核中,集成了 KVM 作为其虚拟化的具体实现。而 KVM 是基于 QEMU 并且利用 CPU 的辅助虚拟化特性而略加修改而成的。自此以后,QEMU 项目引起 Linux 开发人员的广泛关注。回页首进入 QEM

2014-09-26 11:49:46 2019

转载 用qemu-nbd实现mount虚拟硬盘到Host上的功能

qemu-nbd在有的系统上叫kvm-nbd,qemu-nbd-xen等。基本上都一样啦。       用qemu-nbd实现mount虚拟硬盘到Host上的功能,需要这么做:      rmmod nbd      modprobenbd max_part=8     因为默认,nbd的增加分区的功能是关闭的,需要指定max_part这个参数。这个参数指定了一个n

2014-09-26 11:17:55 1477

转载 【虚拟化实战】VM设计之一vCPU

作者:范军 (Frank Fan) 新浪微博:@frankfan7虚拟机需要多少个vCPU呢?是不是个数越多性能越好呢?这方面存在着很多误区。给VM配置CPU资源的时候,要精打细算才能最大可能的利用已有资源,来满足商业应用的需要。有的情况下为某个VM设置过多vCPU数目,反而会造成该应能的性能下降。也造成整个系统的资源浪费。本文从概念到实战来阐述如何做好虚拟机上CPU资源规划。

2014-09-25 21:46:39 4402

原创 QEMU ARM异常处理流程

precise exception必须考虑暂存器和内存,其中我理解的暂存器为CPUState,在二进制翻译中,我们关注的是guest的precise exception。因此必须确保当guest代码发生异常时,guest的暂存器(CPUState)和内存必须满足precise exception的要求,这样guest的exception handler才能正确处理该异常。QEMU在每一个可

2014-09-25 17:24:17 2463

原创 pid and lock files

pid文件用于记录程序启动时系统分配给他们的pidhao

2014-09-25 09:18:04 892

转载 qemu中daemonize为什么要两次fork

函数void os_daemonize(void) 将当前进程变成后台进程即放弃终端。一开始不理解为什么要两次fork,后来查网上资料得知,两次fork是为了防止第一个子进程打开终端。首次fork使父进程退出,子进程继承了父进程的进程组ID,但具有一个新的进程ID,这就保证了子进程不是一个进程组的首进程。调用s e t s i d以创建一个新对话期,并使子进程成为了首进程。再次使用fork,使

2014-09-24 22:23:21 1745

转载 C结构体之位域(位段)

有些信息在存储时,并不需要占用一个完整的字节, 而只需占几个或一个二进制位。例如在存放一个开关量时,只有0和1 两种状态, 用一位二进位即可。为了节省存储空间,并使处理简便,C语言又提供了一种数据结构,称为“位域”或“位段”。所谓“位域”是把一个字节中的二进位划分为几个不同的区域, 并说明每个区域的位数。每个域有一个域名,允许在程序中按域名进行操作。 这样就可以把几个不同的对象用一个字节的二进制位

2014-08-22 10:12:58 761

原创 模板模式 (C语言实现)

一. 问题在面向对象系统的分析与设计过程中经常会遇到这样一种情况:对于某一个业务逻辑(算法实现)在不同的对象中有不同的细节实现,但是逻辑(算法)的框架(或通用的应用算法)是相同的。Template提供了这种情况的一个实现框架。二. 模式Template 模式是采用继承的方式实现这一点:将逻辑(算法)框架放在抽象基类中,并定义好细节的接口,子类中实现细节。

2014-06-19 23:36:09 2278

Nitro PDF 7* 序列号

nitro pdf professional 6 & 7 任意版本都可以。仅供学习研究,请支持正版。

2012-09-07

黑客与画家 epub

本书是硅谷创业之父Paul Graham 的文集,主要介绍黑客即优秀程序员的爱好和动机,讨论黑客成长、黑客对世界的贡献以及编程语言和黑客工作方法等所有对计算机时代感兴趣的人的一些话题。书中的内容不但有助于了解计算机编程的本质、互联网行业的规则,还会帮助读者了解我们这个时代,迫使读者独立思考。 本书适合所有程序员和互联网创业者,也适合一切对计算机行业感兴趣的读者。

2012-06-15

kscope-1.6.2

kscope-1.6.2,linux下阅读代码的工具,编译安装过程可参考http://blog.csdn.net/hmsiwtv/article/details/7646673

2012-06-11

VMWare Workstation 8.0.2 and Linux Kernel 3.2 Kernel

可用于linux kernel 3.2和3.3,使用方法请见我的博客

2012-04-04

空空如也

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

TA关注的人

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