iteye_18891
码龄7年
关注
提问 私信
  • 博客:13,407
    13,407
    总访问量
  • 暂无
    原创
  • 1,059,393
    排名
  • 4
    粉丝
  • 0
    铁粉
IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:北京市
  • 加入CSDN时间: 2018-07-11
博客简介:

iteye_18891的博客

查看详细资料
个人成就
  • 获得3次点赞
  • 内容获得2次评论
  • 获得25次收藏
创作历程
  • 34篇
    2014年
  • 10篇
    2013年
创作活动更多

超级创作者激励计划

万元现金补贴,高额收益分成,专属VIP内容创作者流量扶持,等你加入!

去参加
  • 最近
  • 文章
  • 代码仓
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

今日成为CSDN认证专家

认证时写的申请材料: 程序猿一枚毕业于南开工作于上海。喜欢读书,喜欢跑步,激情似火,心静如水。 喜欢编程,喜欢寻根问底各种技术,喜欢在各种新技术中汲取营养。 喜欢分享,因此以一些高质量的博文来回报各位可爱可敬的程序猿们。 从2013年12月开博3个月,共发表博文43篇,访问量接近20万,多篇文章被推荐到首页和边栏的推荐文章;创建了专栏《Linux调试技巧》,收录博文7篇,有4万多的访问量...
原创
发布博客 2014.03.14 ·
574 阅读 ·
1 点赞 ·
0 评论 ·
0 收藏

存储那些事儿(五):BTRFS文件系统之Btree结构详解

Btree数据结构可以说是BTRFS文件系统的基础。它提供了一个通用的方式去存储不同的数据类型。它仅仅存储3个数据类型:key, item和block header。 btrfs_header的定义如下:struct btrfs_header { u8 csum[32]; u8 fsid[16]; __le64 blocknr; __le64 flag...
原创
发布博客 2014.03.13 ·
393 阅读 ·
0 点赞 ·
0 评论 ·
2 收藏

Linux Debugging(七): 使用反汇编理解动态库函数调用方式GOT/PLT

本文主要讲解动态库函数的地址是如何在运行时被定位的。首先介绍一下PIC和Relocatable的动态库的区别。然后讲解一下GOT和PLT的理论知识。GOT是Global Offset Table,是保存库函数地址的区域。程序运行时,库函数的地址会设置到GOT中。由于动态库的函数是在使用时才被加载,因此刚开始GOT表是空的。地址的设置就涉及到了PLT,Procedure Linkage Tab...
原创
发布博客 2014.03.06 ·
551 阅读 ·
1 点赞 ·
0 评论 ·
1 收藏

Linux Debugging(六): 动态库注入、ltrace、strace、Valgrind

实际上,Linux的调试方法非常多,针对不同的问题,不同的场景,不同的应用,都有不同的方法。很难去概括。本篇文章主要涉及本专栏还没有涵盖,但是的确有很重要的方法。本文主要包括动态库注入调试;使用ltrace命令处理动态库的调试;使用strace调试系统调用的问题;Valgrind的简要介绍。1. 动态库注入 如何排除其他library的调用问题?动态库注入(library inject...
原创
发布博客 2014.03.06 ·
486 阅读 ·
0 点赞 ·
1 评论 ·
2 收藏

存储那些事儿(四):传统商业存储融入云计算之路

一年前开始学习Hadoop。Hadoop, 大数据的事实标准,被Facebook, Yahoo,eBay,taobao,baidu广泛应用。Hadoop本身很复杂,包含了很多子项目,不同的应用场景催生了不同的子项目。 最近要做OpenStack的项目,开始学习OpenStack。也反思了一下我现在所从事的行业:企业存储,路在何方? IT的技术发展可以说是日新月异。在人们还没有正在逐...
原创
发布博客 2014.03.05 ·
150 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

存储那些事儿(三):OpenStack的块存储Cinder与商业存储的融合

OpenStack是一个美国国家航空航天局和Rackspace合作研发的云端运算‎软件,以Apache许可证授权,并且是一个自由软件和开放源代码项目。OpenStack是IaaS(基础设施即服务)‎软件,让任何人都可以自行建立和提供云端运算服务。此外,OpenStack也用作建立防火墙内的“私有云”(Private Cloud),提供机构或企业内各部门共享资源。 Cinder提供了Op...
原创
发布博客 2014.03.04 ·
356 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

存储那些事儿(二): 下一代Linux文件系统BTRFS简介

BTRFS,通常念成 Butter FS,Better FS 或B-tree FS。下一代的Linux文件系统。 它基于写时拷贝(copy-on-write),支持高效的snapshot和clone。它使用b-tree作为存储的数据结构。在BTRFS项目主页上对自己是这么描述的:"一个新的针对Linux的写时复制文件系统,致力于实施高级的功能,同时关注容错、修复和管理方便性。" 它有哪些...
原创
发布博客 2014.03.03 ·
245 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

RabbitMQ消息队列的小伙伴: ProtoBuf(Google Protocol Buffer)

什么是ProtoBuf? 一种轻便高效的结构化数据存储格式,可以用于结构化数据串行化,或者说序列化。它很适合做数据存储或 RPC 数据交换格式。可用于通讯协议、数据存储等领域的语言无关、平台无关、可扩展的序列化结构数据格式。目前提供了 C++、Java、Python 三种语言的 API。 它可以作为RabbitMQ的Message的数据格式进行传输,由于是结构化的数据,这样就极大的方便了...
原创
发布博客 2014.02.24 ·
273 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

RabbitMQ消息队列(七):适用于云计算集群的远程调用(RPC)

在云计算环境中,很多时候需要用它其他机器的计算资源,我们有可能会在接收到Message进行处理时,会把一部分计算任务分配到其他节点来完成。那么,RabbitMQ如何使用RPC呢?在本篇文章中,我们将会通过其它节点求来斐波纳契完成示例。1. 客户端接口 Client interface 为了展示一个RPC服务是如何使用的,我们将创建一段很简单的客户端class。 它将会向外提供名字为call的...
原创
发布博客 2014.02.23 ·
258 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

RabbitMQ消息队列(六):使用主题进行消息分发

在上篇文章RabbitMQ消息队列(五):Routing 消息路由 中,我们实现了一个简单的日志系统。Consumer可以监听不同severity的log。但是,这也是它之所以叫做简单日志系统的原因,因为是仅仅能够通过severity设定。不支持更多的标准。 比如syslog unix的日志工具,它可以通过severity (info/warn/crit...) 和模块(auth/cron/...
原创
发布博客 2014.02.23 ·
413 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

RabbitMQ消息队列(五):Routing 消息路由

上篇文章中,我们构建了一个简单的日志系统。接下来,我们将丰富它:能够使用不同的severity来监听不同等级的log。比如我们希望只有error的log才保存到磁盘上。1. Bindings绑定 上篇文章中我们是这么做的绑定:channel.queue_bind(exchange=exchange_name, queue=queue_name) ...
原创
发布博客 2014.02.21 ·
356 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

RabbitMQ消息队列(四):分发到多Consumer(Publish/Subscribe)

<===RabbitMQ消息队列(三):任务分发机制 上篇文章中,我们把每个Message都是deliver到某个Consumer。在这篇文章中,我们将会将同一个Message deliver到多个Consumer中。这个模式也被成为 "publish / subscribe"。 这篇文章中,我们将创建一个日志系统,它包含两个部分:第一个部分是发出log(Producer),第二个...
原创
发布博客 2014.02.21 ·
949 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

RabbitMQ消息队列(三):任务分发机制

<=== RabbitMQ消息队列(二):”Hello, World“ 在上篇文章中,我们解决了从发送端(Producer)向接收端(Consumer)发送“Hello World”的问题。在实际的应用场景中,这是远远不够的。从本篇文章开始,我们将结合更加实际的应用场景来讲解更多的高级用法。 当有Consumer需要大量的运算时,RabbitMQ Server需要一定的分发机制来ba...
原创
发布博客 2014.02.21 ·
1157 阅读 ·
0 点赞 ·
0 评论 ·
2 收藏

RabbitMQ消息队列(二):”Hello, World“

<== RabbitMQ消息队列(一): Detailed Introduction 详细介绍 本文将使用Python(pika 0.9.8)实现从Producer到Consumer传递数据”Hello, World“。 首先复习一下上篇所学:RabbitMQ实现了AMQP定义的消息队列。它实现的功能”非常简单“:从Producer接收数据然后传递到Consumer。它能保证多并发,...
原创
发布博客 2014.02.20 ·
177 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

RabbitMQ消息队列(一): Detailed Introduction 详细介绍

1. 历史 RabbitMQ是一个由erlang开发的AMQP(Advanced Message Queue )的开源实现。AMQP 的出现其实也是应了广大人民群众的需求,虽然在同步消息通讯的世界里有很多公开标准(如 COBAR的 IIOP ,或者是 SOAP 等),但是在异步消息处理中却不是这样,只有大企业有一些商业实现(如微软的 MSMQ ,IBM 的 Websphere MQ 等),因...
原创
发布博客 2014.02.20 ·
325 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

并发编程入门(三): 使用C++11实现无锁stack(lock-free stack)

前几篇文章,我们讨论了如何使用mutex保护数据及使用使用condition variable在多线程中进行同步。然而,使用mutex将会导致一下问题:等待互斥锁会消耗宝贵的时间 — 有时候是很多时间。这种延迟会损害系统的scalability。尤其是在现在可用的core越多越多的情况下。低优先级的线程可以获得互斥锁,因此阻碍需要同一互斥锁的高优先级线程。这个问题称为优先级倒置(prior...
原创
发布博客 2014.02.13 ·
194 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

并发编程入门(二):分析Boost对 互斥量和条件变量的封装及实现生产者消费者问题...

请阅读上篇文章《并发编程实战: POSIX 使用互斥量和条件变量实现生产者/消费者问题》。当然不阅读亦不影响本篇文章的阅读。Boost的互斥量,条件变量做了很好的封装,因此比“原生的”POSIX mutex,condition variables好用。然后我们会通过分析boost相关源码看一下boost linux是如何对pthread_mutex_t和pthread_cond_t进行的封装。...
原创
发布博客 2014.02.12 ·
214 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

并发编程入门(一): POSIX 使用互斥量和条件变量实现生产者/消费者问题

boost的mutex,condition_variable非常好用。但是在Linux上,boost实际上做的是对pthread_mutex_t和pthread_cond_t的一系列的封装。因此通过对原生态的POSIX 的mutex,cond的生成者,消费者的实现,我们可以再次体会boost带给我们的便利。1. 什么是互斥量 互斥量从本质上说是一把锁,在访问共享资源前对互斥量进行加...
原创
发布博客 2014.02.10 ·
381 阅读 ·
0 点赞 ·
0 评论 ·
4 收藏

Linux Debugging(五): coredump 分析入门

作为工作几年的老程序猿,肯定会遇到coredump,log severity设置的比较高,导致可用的log无法分析问题所在。 更悲剧的是,这个问题不好复现!所以现在你手头唯一的线索就是这个程序的尸体:coredump。你不得不通过它,来寻找问题根源。 通过上几篇文章,我们知道了函数参数是如何传递的,和函数调用时栈是如何变化的;当然了还有AT&T的汇编基础,这些,已经可以使我们具备了一...
原创
发布博客 2014.01.27 ·
137 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Linux Debugging(四): 使用GDB来理解C++ 对象的内存布局(多重继承,虚继承)

前一段时间再次拜读《Inside the C++ Object Model》 深入探索C++对象模型,有了进一步的理解,因此我也写了四篇博文算是读书笔记:Program Transformation Semantics (程序转换语义学)The Semantics of Copy Constructors(拷贝构造函数之编译背后的行为)The Semantics of Constru...
原创
发布博客 2014.01.27 ·
320 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏
加载更多