自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Hbase数据模型

HBase 以表的形式存储数据。表由行和列族组成。列划分为若干个列族(row family),其逻辑视图如下:几个关键概念:1) 行键(RowKey) 行键是字节数组, 任何字符串都可以作为行键; 表中的行根据行键进行排序,数据按照 Row key 的字节序(byte order)排序存储; 所有对表的访问都要通过行键 (单个 RowKey 访问,或 RowKey ...

2019-04-29 22:57:08 426

原创 HBase简介

HBase – Hadoop Database,是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,利用 HBase 技术可在廉价 PC Server 上搭建起大规模结构化存储集群。HBase 是 Apache Hadoop 中的一个子项目,Hbase 依托于 Hadoop 的 HDFS 作为最基本存储基础单元,通过使用 hadoop 的 DFS 工具就可以看到这些这些数据存储文件夹的结构...

2019-04-29 22:36:24 273

原创 Zookeeper访问控制

传统的文件系统中,ACL 分为两个维度,一个是属组,一个是权限,子目录/文件默认继承父目录的 ACL。而在 Zookeeper 中,node 的 ACL 是没有继承关系的,是独立控制的。Zookeeper 的 ACL,可以从三个维度来理解:一是 scheme; 二是 user; 三是 permission,通常表示为 scheme:id:permissions, 下面从这三个方面分别来介绍:1)...

2019-04-28 22:00:55 696

原创 Zookeeper数据模型

ZooKeeper 拥有一个层次的命名空间,这个和标准的文件系统非常相似从图中我们可以看出 ZooKeeper 的数据模型,在结构上和标准文件系统的非常相似,都是采用这种树形层次结构,ZooKeeper 树中的每个节点被称为—Znode。和文件系统的目录树一样,ZooKeeper 树中的每个节点可以拥有子节点。但也有不同之处:1) 引用方式:Zonde 通过路径引用,如同 Unix 中...

2019-04-27 22:24:52 147

原创 MapReduce工作原理

通过 Client、JobTrask 和 TaskTracker 的角度来分析 MapReduce 的工作原理:首先在客户端(Client)启动一个作业(Job),向 JobTracker 请求一个 Job ID。将运行作业所需要的资源文件复制到 HDFS 上,包括 MapReduce 程序打包的 JAR 文件、配置文件和客户端计算所得的输入划分信息。这些文件都存放在 JobTracker...

2019-04-27 22:09:28 4451

原创 MapReduce 错误处理机制

MapReduce 任务执行过程中出现的故障可以分为两大类:硬件故障和任务执行失败引发的故障。1) 硬件故障在 Hadoop Cluster 中,只有一个 JobTracker,因此,JobTracker 本身是存在单点故障的。如何解决 JobTracker 的单点问题呢?我们可以采用主备部署方式,启动 JobTracker主节点的同时,启动一个或多个 JobTracker 备用节点。...

2019-04-26 23:15:16 848

原创 MapReduce 数据本地化(Data-Local)

首先,HDFS 和 MapReduce 是 Hadoop 的核心设计。对于 HDFS,是存储基础,在数据层面上提供了海量数据存储的支持。而 MapReduce,是在数据的上一层,通过编写MapReduce 程序对海量数据进行计算处理。在前面 HDFS 章节中,知道了 NameNode 是文件系统的名字节点进程,DataNode是文件系统的数据节点进程。MapReduce 计算框架中负责计算任...

2019-04-26 23:13:13 1263

原创 MapReduce执行流程

MapReduce 计算框架的一般流程:1) 输入和拆分:不属于 map 和 reduce 的主要过程,但属于整个计算框架消耗时间的一部分,该部分会为正式的 map 准备数据。分片(split)操作:split 只是将源文件的内容分片形成一系列的 InputSplit,每个 InputSpilt 中存储着对应分片的数据信息(例如,文件块信息、起始位置、数据长度、所在节点列表…),并...

2019-04-26 23:11:51 223

原创 MapReduce编程模型

Map 和 Reduce 的概念是从函数式变成语言中借来的,整个 MapReduce 计算过程分为 Map 阶段和 Reduce 阶段,也称为映射和缩减阶段,这两个独立的阶段实际上是两个独立的过程,即 Map 过程和 Reduce 过程,在 Map 中进行数据的读取和预处理,之后将预处理的结果发送到 Reduce 中进行合并。案例:分布式计算出一篇文章中的各个单词出现的次数,也就是 WordCo...

2019-04-26 23:08:20 339

原创 操作HDFS的基本命令

1) 打印文件列表(ls)标准写法:hadoop fs -ls hdfs:/ #hdfs: 明确说明是 HDFS 系统路径简写:hadoop fs -ls / #默认是 HDFS 系统下的根目录打印指定子目录:hadoop fs -ls /package/test/ #HDFS 系统下某个目录2) 上传文件、目录(put、copyFromLocal)put 用法:上传新文件:h...

2019-04-26 23:03:02 1238 1

原创 HDFS读取和写入流程

1) 读文件的过程: 首先 Client 通过 File System 的 Open 函数打开文件,Distributed File System 用 RPC调用 NameNode 节点,得到文件的数据块信息。对于每一个数据块,NameNode 节点返回保存数据块的数据节点的地址。Distributed File System 返回 FSDataInputStream 给客户...

2019-04-26 23:01:33 259

原创 Linux内核中的jiffies及其作用介绍及jiffies等相关函数详解

在LINUX的时钟中断中涉及至二个全局变量一个是xtime,它是timeval数据结构变量,另一个则是jiffies,首先看timeval结构struct timeval{time_t tv_sec; /***second***/susecond_t tv_usec;/***microsecond***/}到底microsecond是毫秒还是微秒??1秒=1000毫秒(3个零),1...

2019-04-26 22:51:30 301

原创 C语言中的static 详细分析

google了近三页的关于C语言中static的内容,发现可用的信息很少,要么长篇大论不知所云要么在关键之处几个字略过,对于想挖掘底层原理的初学者来说参考性不是很大。所以,我这篇博文博采众家之长,把互联网上的资料整合归类,并亲手编写程序验证之。C语言代码是以文件为单位来组织的,在一个源程序的所有源文件中,一个外部变量(注意不是局部变量)或者函数只能在一个源...

2019-04-23 22:28:58 201

原创 strcpy函数和strcat函数

strcat函数:将两个char类型连接。char d[20]="GoldenGlobal"; char *s="View"; strcat(d,s);结果放在d中printf("%s",d);输出 d 为 GoldenGlobalView (中间无空格)d和s所指内存区域不可以重叠且d必须有足够的空间来容纳s的字符串。返回指向d的指针。原型是extern char *strca...

2019-04-23 22:27:49 725

原创 strrchr函数

原型:char *strrchr(const char *str, char c);#include<string.h>找一个字符c在另一个字符串str中末次出现的位置(也就是从str的右侧开始查找字符c首次出现的位置),并返回从字符串中的这个位置起,一直到字符串结束的所有字符。如果未能找到指定字符,那么函数将返回NULL。#include <stdio.h>...

2019-04-23 22:26:04 204

原创 命令行选项解析函数(C语言):getopt()和getopt_long()

上午在看源码项目 webbench 时,刚开始就被一个似乎挺陌生函数 getopt_long() 给卡住了,说实话这函数没怎么见过,自然不知道这哥们是干什么的。于是乎百度了一番,原来是处理命令行选项参数的,的确,正规点的大型程序一般第一步就是处理命令行参数的,接着才是主干程序。在百度和 man 的帮助下,找到了具体使用方法和解释,二话不说赶紧学习一下,并总结出文档记录一下。 平时在写程序...

2019-04-23 22:18:32 176

原创 C语言中函数strcpy ,strncpy ,strlcpy的用法

好多人已经知道利用strncpy替代strcpy来防止缓冲区越界。但是如果还要考虑运行效率的话,也许strlcpy是一个更好的方式。1. strcpystrcpy 是依据 \0 作为结束判断的,如果 to 的空间不够,则会引起 buffer overflow。strcpy 常规的实现代码如下char * strcpy(char *to, const char *from){...

2019-04-21 10:20:01 376

转载 Linux内核链表的研究与应用

前言:在Linux内核中使用了大量的链表来组织其数据,其采用了双向链表作为其基本的数据结构。但是与我们传统的数据结构中所学的双向链表又有着本质的一些不同(其不包含数据域)。其主要是Linux内核链表在设计时给出了一种抽象的定义。采用这种定义有以下两种好处:1是可扩展性,2是封装。可扩展性肯定是必须的,内核一直都是在发展中的,所以代码都不能写成死代码,要方便修改和追加。将链表常见的操作都进行封...

2019-04-20 22:22:08 161

原创 Linux 内核源码中likely()和unlikely()

ikely()与unlikely()在2.6内核中,随处可见,那为什么要用它们?它们之间有什么区别呢?首先明确:if (likely(value))等价于if (value)if (likely(a>b)) {fun1();if (unlikely(value))等价于if (value)也就是说likely()和unlikely()从阅读和理解的角度是一样的。这两个宏在内核中...

2019-04-20 22:19:22 160

转载 Linux内核哈希表分析与应用

前言:1.基本概念:散列表(Hash table,也叫哈希表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。2. 常用的构造散列函数的方法散列函数能使对一个数据序列的访问过程更加迅速有效,通过散列函数,数据元素将被更快地定位。散列表的常用构造方法有...

2019-04-20 22:18:19 290

原创 Linux内核里线程,进程的区别

从内核的角度来说,它并没有线程这个概念。Linux把所有线程都当做进程来实现。内核并没有准备特别的调度算法或者定义特别的数据结构来表示线程。相反,线程仅仅被视为一个与其他进程共享某些资源的进程。每个线程都拥有唯一属于自己的task_struct,所以在内核中,它看起来就像是一个普通的进程(只是该进程和其他一些进程共享某些资源,如地址空间)一.内核线程1.内核经常需要在后台执行一些操作。这种...

2019-04-20 22:17:12 498

原创 字符串比较函数-strcasecmp()和strncasecmp()

函数说明 strcasecmp()用来比较参数s1和s2字符串,比较时会自动忽略大小写的差异。返回值 若参数s1和s2字符串相同则返回0。s1长度大于s2长度则返回大于0 的值,s1 长度若小于s2 长度则返回小于0的值.首先给出这两个函数的具体实现:47 /************************************************************...

2019-04-20 22:12:09 527

原创 C++STL中vector容器 begin()与end()函数、front()与back()的用法

一、begin函数函数原型:iterator begin();const_iterator begin();功能:返回一个当前vector容器中起始元素的迭代器。二、end函数函数原型:iterator end();const_iterator end();功能:返回一个当前vector容器中末尾元素的迭代器。三、front函数函数原...

2019-04-20 22:08:22 1372

原创 C语言itoa()函数和atoi()函数详解

C语言提供了几个标准库函数,可以将任意类型(整型、长整型、浮点型等)的数字转换为字符串。1.int/float to string/array:C语言提供了几个标准库函数,可以将任意类型(整型、长整型、浮点型等)的数字转换为字符串,下面列举了各函数的方法及其说明。● itoa():将整型值转换为字符串。● ltoa():将长整型值转换为字符串。● ultoa():将无符号长整型值转换...

2019-04-20 22:07:15 410

转载 面试感悟----一名3年工作经验的程序员应该具备的技能

前言因为和同事有约定再加上LZ自己也喜欢做完一件事之后进行总结,因此有了这篇文章。这篇文章大部分内容都是面向整个程序员群体的,当然因为LZ本身是做Java开发的,因此有一部分内容也是专门面向咱们Java程序员的。简单先说一下,LZ坐标杭州,13届本科毕业,算上年前在阿里巴巴B2B事业部的面试,一共有面试了有6家公司(因为LZ不想请假,因此只是每个晚上去其他公司面试,所以面试的公司比较少),...

2019-04-20 22:04:49 153

转载 boost库学习总结

第一次使用boost库是因为网络编程,由于时间比较紧,没有时间每个库都学,所以前期想找个专门的boost库网络教程(以前自己就用过socket写过,但是为了跨平台,而且boost库这么好,还是趁早学吧)。终于在网上找到一个很好的boost库教程系列。http://www.gamedev.net/blog/950/entry-2249317-a-guide-to-getting-started-wi...

2019-04-19 23:01:19 480

原创 Callback函数详解

一,回调函数我们经常在C++设计时通过使用回调函数可以使有些应用(如定时器事件回调处理、用回调函数记录某操作进度等)变得非常方便和符合逻辑,那么它的内在机制如何呢,怎么定义呢?它和其它函数(比如钩子函数)有何不同呢?使用回调函数实际上就是在调用某个函数(通常是API函数)时,将自己的一个函数(这个函数为回调函数)的地址作为参数传递给那个函数。而那个函数在需要的时候,利用传递的地址调用回调函数...

2019-04-19 23:00:23 7271

原创 同步IO、异步IO、阻塞IO、非阻塞IO

POSIX同步IO、异步IO、阻塞IO、非阻塞IO,这几个词常见于各种各样的与网络相关的文章之中,往往不同上下文中它们的意思是不一样的,以致于我在很长一段时间对此感到困惑,所以想写一篇文章整理一下。POSIX(可移植操作系统接口)把同步IO操作定义为导致进程阻塞直到IO完成的操作,反之则是异步IO按POSIX的描述似乎把同步和阻塞划等号,异步和非阻塞划等号,但是为什么有的人说同步IO...

2019-04-19 22:57:23 95

原创 单播、多播(组播)和广播

单播、多播和广播单播”(Unicast)、“多播”(Multicast)和“广播”(Broadcast)这三个术语都是用来描写叙述网络节点之间通讯方式的术语。那么这些术语到底是什么意思?差别何在?1.单播:网络节点之间的通信就好像是人们之间的对话一样。假设一个人对另外一个人说话。那么用网络技术的术语来描写叙述就是“单播”。此时信息的接收和传递仅仅在两个节点之间进行。单播在网络中得到了广泛...

2019-04-19 22:55:31 1114

原创 线程、进程概念

一、进程间的通信方式管道( pipe):管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用。进程的亲缘关系通常是指父子进程关系。有名管道(namedpipe):有名管道也是半双工的通信方式,但是它允许无亲缘关系进程间的通信。信号量(semophore):信号量是一个计数器,可以用来控制多个进程对共享资源的访问。它常作为一种锁机制,防止某进程正在访问共享资源时,其...

2019-04-19 22:50:18 139

转载 超级块,i节点,数据块,目录块,间接块

一、物理磁盘到文件系统文件系统用来存储文件内容、文件属性、和目录。这些类型的数据如何存储在磁盘块上的呢?unix/linux使用了一个简单的方法。如图所示.它将磁盘块分为三个部分:1)超级块,文件系统中第一个块被称为超级块。这个块存放文件系统本身的结构信息。比如,超级块记录了每个区域的大小,超级块也存放未被使用的磁盘块的信息。2)i-节点表。超级块的下一个部分就是i-节点表,每个...

2019-04-19 22:49:05 9339

原创 copy_to_user,copy_from_user,get_user,put_user函数详解

字符设备驱动驱动的读,写。如:ssize_t xxx_read(struct file *filp, char __user *buf, size_t count, loff_t *f_pos);ssize_t xxx_write(struct file *filp, const char __user *buf, size_t count, loff_t *f_pos);等函数中,filp...

2019-04-19 22:45:09 1526

原创 Linux并发控制技术

Linux并发控制技术,它的目标是让多个进程访问同一个资源克服其竟态。由现代操作系统都是并发的,例如对同一个资源的读写是并发进行的。为了解决读写的不同步问题,LINUX操作系统引入并发控制技术。这个技术包括如下实现方式:A:原子操作B:自旋锁C:RCUD:信号量E:互斥体F:完成量A:原子操作原子故名思意是不可分割的最小单位(现代物理学发是可以分的,我们估计当...

2019-04-19 22:42:24 248

原创 学习C++的50条忠告

1. 把 C++ 当成一门新的语言学习(和 C 没啥关系!真的。);  2. 看《 Thinking In C++ 》,不要看《 C++ 变成死相》;  3. 看《 The C++ Programming Language 》和《 Inside The C++ Object Model 》,不要因为他们很难而我们自己是初学者所以就不看;  4. 不要被 VC 、 BCB 、 BC...

2019-04-18 22:37:42 170

原创 构造函数,析构函数,拷贝构造函数和赋值函数

一. 构造函数1. 构造函数是一种用于创建对象的特殊成员函数,当创建对象时,系统自动调用构造函数。2. 构造函数名与类名相同,一个类可以拥有多个构造函数(重载),构造函数可以有任意类型的参数,但不能具有返回类型,连Void也不可以,它有隐含的返回值,该值由系统内部使用。3. 构造函数的作用是:为对象分配空间;对数据成员赋初值;请求其他资源。4. 如果一个类没有定义构造函数,编译器会自动生成...

2019-04-18 22:15:50 481

原创 this指针

this指针的含义及其用法:1、this指针是一个隐含于每一个成员函数中的特殊指针。它指向正在被该成员函数操作的那个对象。2、当对一个对象调用成员函数时,编译程序先将对象的地址赋给this指针,然后调用成员函数,每次成员函数存取数据成员时,由隐含使用this指针。3、 当一个成员函数被调用时,自动向它传递一个隐含的参数,该参数是一个指向这个成员函数所在的对象的指针。4、在C++中,t...

2019-04-18 22:14:34 368

原创 C++类

/*1. 编辑编译环境:VS2012 *//*2. 心得体会:*(1)Those types are not "abstract";*they are as real asintandfloat.*这些类型并不"抽象";*它们像int和float一样实际。[ chapter 10 Classes: P234]*(2)Ideal...

2019-04-18 22:12:53 136

原创 字符串中删除特定字符

题目:输入两个字符串,从第一字符串中删除第二个字符串中所有的字符。例如,输入”They are students.”和”aeiou”,则删除之后的第一个字符串变成”Thy r stdnts.”。这道题的基本思路就是在第一个字符串中拿到一个字符,在第二个字符串中查找一下,看它是不是在第二个字符串中。如果在的话,就从第一个字符串中删除。首先我们考虑如何在字符串中删除一...

2019-04-18 21:57:03 671

转载 blktrace + blkparse + btt 分析IO

blktrace是一款block层的trace工具,block层在IO路径上的位置:一个IO的生命周期大约是:●I/O enters block layer – it can be:– Remapped onto another device (MD, DM)– Split into 2 separate I/Os (alignment, size, ...)– A...

2019-04-18 21:50:20 1246

转载 内核中的锁机制--RCU

一、 引言众所周知,为了保护共享数据,需要一些同步机制,如自旋锁(spinlock),读写锁(rwlock),它们使用起来非常简单,而且是一种很有效的同步机制,在UNIX系统和Linux系统中得到了广泛的使用。但是随着计算机硬件的快速发展,获得这种锁的开销相对于CPU的速度在成倍地增加,原因很简单,CPU的速度与访问内存的速度差距越来越大,而这种锁使用了原子操作指令,它需要原子地访问内存,也就...

2019-04-18 21:40:23 789

嵌入式Linux应用开发完全手册

韦东山老师所著嵌入式软件开发教程,讲解环境搭建,最小系统,嵌入式开发流程及外围设备,以及常见驱动开发

2019-04-10

视频监控服务器端代码

视频监控编解码应用部分代码,对各个流程有详细的代码说明

2019-04-10

国嵌高级项目实验手册

几个项目实践过程,对项目的描述分析,流程图规划,代码详解,结果分析

2019-04-10

linux多线程手册

多线程编程手册,帮助读者尽快掌握多线程编程技术

2015-08-17

空空如也

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

TA关注的人

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