自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

MasaWong的专栏

Tech Otaku save the world

  • 博客(53)
  • 资源 (8)
  • 收藏
  • 关注

原创 HBase分析之Region定位

以前的理论是:客户端向ZooKeeper请求 -ROOT- 表的位置,然后通过 -ROOT- 表找 META 表的位置,再通过 META 表定位到Region Server位置。但这个理论已经过时了, -ROOT- 表已经消失在历史的尘埃中。现在的ZooKeeper直接缓存了 META 表所在的位置信息(本质是一样的,只是这跳过了 -ROOT- 表,这个过程本来就很多余。。),可以直接通过ZooKe

2017-11-02 22:10:45 2769

原创 HBase分析之Get、Scan(三)StoreScanner

继续看StoreScanner.next,这篇里将看到如何找到下一行数据。依然是一段巨长的代码,而且里面好多TODO是什么鬼?!上来先这个StoreScanner先把自己锁了,方法的最后在把自己解锁。@Overridepublic boolean next(List<Cell> outResult, ScannerContext scannerContext) throws IOExcepti

2017-10-15 21:20:32 775

原创 HBase分析之Get、Scan(二)RegionScanner

这篇我们继续看moreRows = scanner.nextRaw(values, scannerContext);,这里的scanner是通过HRegion#getScanner创建出来的一个RegionScannerImpl实例,他的nextRaw方法调用了RegionScannerImpl#nextInternal方法。这个方法主要目的是获取下一条数据放入results,并取得返回值表示是否还

2017-10-15 21:19:37 1151

原创 HBase分析之Get、Scan(一)

GetGet操作调用的是RSRpcServices的get方法,调用过程首先找到包含数据的Region,然后从这个Region中获取需要的数据。public GetResponse get(final RpcController controller, final GetRequest request) throws ServiceException { ... try {

2017-10-08 21:30:20 3915

原创 HBase分析之Put操作

Put操作是在HRegion#doMiniBatchMutation方法中执行的。private long doMiniBatchMutation(BatchOperationInProgress batchOp) throws IOException 为什么方法名不叫doPut呢?从这个方法里的一段代码就可以看出,这个方法不仅是Put的执行方法,而且是Delete的执行方法,Put、D

2017-09-26 23:18:59 2043

原创 HBase分析索引

最近在看HBase 1.2.6的源码,准备写一个HBase系列。目前想到的列表是这样的,会逐步将这些文章写出来。写的不好,如果有地方没说清楚的,欢迎提出,我会继续修改。

2017-09-26 23:17:53 426

原创 HBase分析之概念

华为的一张图概括得十分精彩。图片太大,切割成几张图片了。

2017-09-24 09:40:51 382

原创 HBase源码分析之远程调试

远程调试是JDWP提供的,通过Agent library的形式加载到JVM中,所以与编译无关,只要运行Java程序时加入调试参数即可。我们通过IDE来创建调试配置,以Intellij IDEA为例,选择Edit Configurations,添加Remote,就可以看到IDE提供的调试参数,把它加到Java的运行参数里就可以了。在运行脚本start-hbase.sh时,

2017-09-17 15:05:29 637

原创 HBase源码分析之Ranger权限验证

HBase源码分析之权限验证中讲过了自带的simple认证方式,Apache有个项目,也提供了权限验证,就是Ranger。Ranger的安装方式比较复杂,具体看:https://cwiki.apache.org/confluence/display/RANGER/Apache+Ranger+0.5.0+Installation个人感觉Ranger还是一个粗糙的应用,和我预期的Apa

2017-09-13 22:08:32 2499

原创 HBase源码分析之Simple权限验证

有了用户的机制,见HBase源码分析之用户,就可以对用户进行权限控制了,HBase提供了AccessController作为自带的认证方式,HBase称之为simple。1. 配置AccessControllerHBase自带了AccessController,所以只要在conf/hbase-site.xml中设置好以下属性,即可生效。property> name>hba

2017-09-13 22:01:46 1735 1

原创 HBase源码分析之用户

HBase的用户机制和Hadoop的用户机制是一样的。但对刚接触的人来说,相当的隐蔽,启动HBase不用设置用户名、密码,连接HBase也不需要设置用户名、密码。但HBase(实质上是Hadoop)提供了默认的用户来执行操作。超级用户如果没有特意配置,那么HBase会选择启动HBase的系统用户作为超级用户。如果需要改变超级用户,可通过修改hbase-site.xml来配置,加入hbase.superuser。

2017-09-10 16:17:00 3833 1

转载 Annotation

定制注释类型    好的,让我们创建一个自己的注释类型(annotation type )吧。它类似于新创建一个接口类文件,但为了区分,我们需要将它声明为@interface, 如下例:public @interface NewAnnotation {}使用定制的注释类型    我们已经成功地创建好一个注释类型NewAnnotation ,现在让我们来尝试使用它吧,如果你

2014-02-02 23:08:00 446

转载 C++中 overload 、override、overwrite 之间的区别

转自:http://blog.csdn.net/jszhangyili/article/details/7570311Overload  重载在C++程序中,可以将语义、功能相似的几个函数用同一个名字表示,但参数不同(包括类型、顺序不同),即函数重载。(1)相同的范围(在同一个类中);(2)函数名字相同;(3)参数不同;请注意,重载解析中不考虑返回类型,而且在不同的作用域里

2013-12-03 16:09:58 603

原创 一些面试考点的准备

1、C库函数的实现内存拷贝函数的实现void *memcpy(void *dst, const void *src, size_t count) { assert(dst != NULL && src != NULL); void * ret = dst; while (count--) { *(char *)dst = *(char *)src; dst =

2013-10-08 19:19:22 656

原创 10/8-10/14待字闺中面试题练习

题目来自陈利人的微博:http://weibo.com/p/10050519155482912013/10/8城市的环形路有n个加油站,第i个加油站的油量用gas[i]来表示,你有如下的一辆车:它的油缸是无限量的,初始是空的;它从第i个加油站到第i+1个加油站消耗油量为cost[i]。从任意加油站开始,路过加油站可以不断的加油,问是否能够走完环形路。HANDWRITING:

2013-10-08 16:39:27 1254 2

原创 9/29-10/6待字闺中面试题练习

题目来自待字闺中:http://mp.weixin.qq.com/mp/appmsg/show?__biz=MjM5ODIzNDQ3Mw==&appmsgid=10000259&itemidx=1&sign=4ebbbb120407c33d1fee68a112621d97给定两个字符串A和B,判断A中是否包含由B中字符重新排列成的新字符串。例如:A=abcdef, B=ba,结果应该返回tru

2013-09-30 17:12:22 950

原创 84. 用不平均概率构造平均概率

已知一随机发生器,产生0 的概率是p,产生1 的概率是1-p,现在要你构造一个发生器,使得它构造0 和1 的概率均为1/2;构造一个发生器,使得它构造1、2、3 的概率均为1/3;...,构造一个发生器,使得它构造1、2、3、...n 的概率均为1/n,要求复杂度最低。HANDWRITING:产生0 的概率是p,产生1 的概率是1-p1、那么01,10的概率是一样的,使

2013-09-25 20:10:19 659

原创 76.复杂链表的复制

题目:有一个复杂链表,其结点除了有一个m_pNext 指针指向下一个结点外,还有一个m_pSibling 指向链表中的任一结点或者NULL。其结点的C++定义如下:struct ComplexNode { int m_nValue; ComplexNode* m_pNext; ComplexNode* m_pSibling;};下图是一个含有5 个结点的该类型复杂链表。

2013-09-25 17:11:02 732

原创 75.二叉树两个结点的最低共同父结点

题目:二叉树的结点定义如下:struct TreeNode { int m_nvalue; TreeNode* m_pLeft; TreeNode* m_pRight;};输入二叉树中的两个结点,输出这两个结点在数中最低的共同父结点。分析:求数中两个结点的最低共同结点是面试中经常出现的一个问题。这个问题至少有两个变种。HANDWRITING:Tree

2013-09-25 09:53:59 569

原创 74.数组中超过出现次数超过一半的数字

题目:数组中有一个数字出现的次数超过了数组长度的一半,找出这个数字。分析:这是一道广为流传的面试题,包括百度、微软和Google 在内的多家公司都曾经采用过这个题目。要几十分钟的时间里很好地解答这道题,除了较好的编程能力之外,还需要较快的反应和较强的逻辑思维能力。HANDWRITING:int search(int a[], int size) { int tmp

2013-09-25 09:49:52 619

转载 71. 数值的整数次方

题目:实现函数double Power(double base, int exponent),求base的exponent次方。不需要考虑溢出。分析:这是一道看起来很简单的问题。可能有不少的人在看到题目后30秒写出如下的代码:double Power(double base, int exponent){ double result = 1.0; fo

2013-09-23 16:01:58 510

原创 69.旋转数组中的最小元素

题目:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个排好序的数组的一个旋转,输出旋转数组的最小元素。例如数组{3, 4, 5, 1, 2}为{1, 2, 3, 4, 5}的一个旋转,该数组的最小值为1。分析:这道题最直观的解法并不难。从头到尾遍历数组一次,就能找出最小的元素,时间复杂度显然是O(N)。但这个思路没有利用输入数组的特性,我们应该能找到更好的解法。

2013-09-22 14:48:32 644

原创 68.把数组排成最小的数

题目:输入一个正整数数组,将它们连接起来排成一个数,输出能排出的所有数字中最小的一个。例如输入数组{32, 321},则输出这两个能排成的最小数字32132。请给出解决问题的算法,并证明该算法。分析:这是09 年6 月份百度的一道面试题,从这道题我们可以看出百度对应聘者在算法方面有很高的要求。HANDWRITING:关键问题在于怎么排,从头依次比较数字,小者在前

2013-09-22 14:28:23 643

原创 67. 两个闲玩娱乐

1.扑克牌的顺子从扑克牌中随机抽5 张牌,判断是不是一个顺子,即这5 张牌是不是连续的。2-10 为数字本身,A 为1,J 为11,Q 为12,K 为13,而大小王可以看成任意数字。HANDWRITING:大小王当0,5张牌排好序bool straight (int poker[]) { int jokers = 0, i; for (i = 0; poker[

2013-09-22 09:33:23 1006

转载 66.颠倒栈

题目:用递归颠倒一个栈。例如输入栈{1, 2, 3, 4, 5},1 在栈顶。颠倒之后的栈为{5, 4, 3, 2, 1},5 处在栈顶。HANDWRITING:用递归颠倒栈。。折腾。。void reverse (stack s) {if (stack.empty()) return ;int tmp = stack.top();stack.pop();

2013-09-21 23:17:44 655

原创 63.在字符串中删除特定的字符

题目:输入两个字符串,从第一字符串中删除第二个字符串中所有的字符。例如,输入”They are students.”和”aeiou”, 则删除之后的第一个字符串变成”Thy r stdnts.”。分析:这是一道微软面试题。在微软的常见面试题中,与字符串相关的题目占了很大的一部分,因为写程序操作字符串能很好的反映我们的编程基本功。HANDWRITING:char *chang

2013-09-21 21:52:05 507

转载 61.找出数组中两个只出现一次的数字

题目:一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂度是O(n),空间复杂度是O(1)。HANDWRITING:如果数组里只有1个数字出现1次,其他的都2次,那轻轻松松秒掉2个的话,就轻轻松松的被秒掉,不会。。。来自剑指OFFER的解答:http://zhedahht.blog.163.com/blo

2013-09-21 20:53:17 543

原创 54.调整数组顺序使奇数位于偶数前面

题目:输入一个整数数组,调整数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。要求时间复杂度为O(n)。HANDWRITING:void reset (int a[], int size) { int s = 0, e = size - 1; while (1) { while (a[s] % 2 == 1) ++s; while (

2013-09-21 20:41:32 462

原创 51.和为n连续正数序列

这是网易的一道面试题。题目:输入一个正数n,输出所有和为n 连续正数序列。例如输入15,由于1+2+3+4+5=4+5+6=7+8=15,所以输出3 个连续序列1-5、4-6 和7-8。HANDWRITING:想着用1 ~ i 的和偏移 j 个位置,即1+j + 2+j + …+ i+j = n ==> 1 + 2 +…+ i + i * j = n,开写v

2013-09-21 20:33:16 561

原创 48.微软,偏移数组中找数

一个数组是由一个递减数列左移若干位形成的,比如{4,3,2,1,6,5}是由{6,5,4,3,2,1}左移两位形成的,在这种数组中查找某一个数。HANDWRITING:int find(int a[], int start, int end, int k) {if (start > end) return -1;int mid = start + (end - start)

2013-09-21 20:04:32 500

原创 47.创新工场:求最长递减子序列

求一个数组的最长递减子序列比如{9,4,3,2,5,4,3,2}的最长递减子序列为{9,5,4,3,2}HANDWRITING:int sequence(int *input, int size, int *&output) { int *len = new int[size]; int max = 1, pos = 0; len[0] = 1; for (int i

2013-09-21 18:48:06 771

原创 46.搜狐:四对括号可以有多少种匹配排列方式

四对括号可以有多少种匹配排列方式?比如两对括号可以有两种:()()和(())HANDWRITING:之前左括号的数量必须比右括号多,即卡特兰数令h(0)=1,h(1)=1,catalan数满足递推式h(n)= h(0)*h(n-1)+h(1)*h(n-2) + ... + h(n-1)h(0) (n>=2)例如:h(2)=h(0)*h(1)+h(1)*h(0)=

2013-09-21 16:11:00 1351

原创 38. 百度面试

1.用天平(只能比较,不能称重)从一堆小球中找出其中唯一一个较轻的,使用x 次天平,最多可以从y 个小球中找出较轻的那个,求y 与x 的关系式。2.有一个很大很大的输入流,大到没有存储器可以将其存储下来,而且只输入一次,如何从这个输入流中随机取得m 个记录。3.大量的URL 字符串,如何从中去除重复的,优化时间空间复杂度HANDWRITING:1

2013-09-21 13:48:55 601

原创 32. 交换ab中的值,使得差最小

有两个序列a,b,大小都为n,序列元素的值任意整数,无序;要求:通过交换a,b 中的元素,使[序列a 元素的和]与[序列b 元素的和]之间的差最小。例如:var a=[100,99,98,1,2, 3];var b=[1, 2, 3, 4,5,40];HANDWRITING:首先求的2数组差D,交换一对数a[i],b[j],则差变化2(a[i] - b[j]

2013-09-21 13:25:56 840

原创 29.栈的push、pop 序列

题目:输入两个整数序列。其中一个序列表示栈的push 顺序,判断另一个序列有没有可能是对应的pop 顺序。为了简单起见,我们假设push 序列的任意两个整数都是不相等的。比如输入的push 序列是1、2、3、4、5,那么4、5、3、2、1 就有可能是一个pop 系列。因为可以有如下的push 和pop 序列:push 1,push 2,push 3,push 4,pop,pus

2013-09-20 20:09:03 520

原创 25. 在字符串中找出连续最长的数字串

写一个函数,它的原形是int continumax(char *outputstr,char *intputstr)功能:在字符串中找出连续最长的数字串,并把这个串的长度返回,并把这个最长数字串付给其中一个函数参数outputstr 所指内存。例如:"abcd12345ed125ss123456789"的首地址传给intputstr 后,函数将返回9,outputstr 所指的

2013-09-20 19:40:25 349

原创 24. 链表就地逆置

链表操作,(1).单链表就地逆置(2)合并链表HANDWRITING:struct Node {int value;Node *next;};(1).单链表就地逆置Node *reverse (Node *head) { Node *pre = 0, *cur = head, next = head->next; while (nex

2013-09-20 18:58:07 586

原创 22. 推理,猜头上的2张牌

有4 张红色的牌和4 张蓝色的牌,主持人先拿任意两张,再分别在A、B、C 三人额头上贴任意两张牌,A、B、C 三人都可以看见其余两人额头上的牌,看完后让他们猜自己额头上是什么颜色的牌,A 说不知道,B 说不知道,C 说不知道,然后A 说知道了。请教如何推理,A 是怎么知道的。如果用程序,又怎么实现呢?HANDWRITING:最爱智力题,头上的牌可以是2红,2蓝,红蓝,一共2个条

2013-09-20 16:42:15 11565

原创 21. 1~n任意取数组成m

输入两个整数n 和m,从数列1,2,3.......n 中随意取几个数,使其和等于m ,要求将其中所有的可能组合列出来.TRY:void search(int n, int m, int *com, int pos) { if (m == 0) { for (int i = pos - 1; i >= 0; --i) cout<<com[i]<<" "; co

2013-09-20 16:07:59 728

原创 20. 字符串转整数

题目:输入一个表示整数的字符串,把该字符串转换成整数并输出。例如输入字符串"345",则输出整数345。TRY:int transform (string num) { if (num.length() == 0) return 0; string::iterator i = num.begin(); int flag = 1, n = 0; if (*i ==

2013-09-20 15:10:50 455

Java实现文件读写类

Java实现对文件的读写,可设置编码格式

2013-04-12

pcre-8.12.tar.gz

pcre源码包,安装过程如下: #>tar -zxpf pcre-8.12.tar.gz #>cd pcre-8.12 #>./configure #>make #>make install

2013-04-10

libpcap-1.1.1.tar.gz

libpcap源码包,安装过程如下: #>tar –zxpf libpcap-1.1.1.tar.gz #> cd libpcap-1.1.1 #>./configure #>make #>make install

2013-04-10

sysfsutils-2.1.0.tar.gz

sysfsutils源码包,安装过程如下: #>tar –zxpf sysfsutils-2.1.0.tar.gz #>cd sysfsutils-2.1.0 #>./configure #>make #>make install

2013-04-10

bridge-utils-1.4.tar.gz

编译安装bridge-utils,安装过程如下: #tar zxvf bridge-utils-1.4.tar.gz #cd bridge-utils-1.4 #autoconf #./configure #make #make install #cp/usr/local/sbin/brctl/sbin

2013-04-10

java写的SSH连接类

使用JSch写的纯java的SSH连接类,脱离底层,可在windows,linux下运行

2013-03-25

java写的Mysql类

Java写的Mysql连接及语句执行,注释完整,简单易读

2013-03-25

Java文件读写类

Java实现对文件的读写,可设置编码格式

2013-03-25

空空如也

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

TA关注的人

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