- 博客(19)
- 资源 (2)
- 收藏
- 关注
原创 编译安装nutch2.3和hbase0.98.8集成
nutch2.3版本官网默认支持的hbase是0.94.14版本,如需升级hbase到更新版本,则需要修改gora的版本到0.6或以上。由于nutch2.3版本还是比较新的,网上安装nutch2.3的教程并不是很多,接下来就是根据网上教程安装nutch2.3版本的一个整合描述:1、修改ivy/ivy.xmldefault"/> default" /> default"/>
2015-12-04 14:20:42
2831
原创 hadoop native本地库问题总结
最近,打算hbase建表用snappy压缩时,碰到一些hadoop本地库的问题。其实这些问题是一直存在的,只是不影响正常使用,就没有引起重视。这次希望彻底解决以下问题:问题一:执行start-dfs.sh时出现以下日志xxxx: Java HotSpot(TM) 64-Bit Server VM warning: You have loaded library /usr/local/had
2015-08-18 19:19:47
37331
原创 spark streaming kafka1.4.1中的低阶api createDirectStream使用总结
由于目前每天需要从kafka中消费20亿条左右的消息,集群压力有点大,会导致job不同程度的异常退出。原来使用spark1.1.0版本中的createStream函数,但是在数据处理速度跟不上数据消费速度且job异常退出的情况下,可能造成大量的数据丢失。幸好,spark后续版本对这一情况有了很大的改进,1.2版本加入WAL特性,但是性能应该会受到一些影响(本人未测试),1.3版本刻意直接通过低阶A
2015-08-06 09:59:38
17477
2
原创 C++ IPv4与IPv6的兼容编码
这里不再对IPv6 socket相关编程的基础知识进行讲解,只提供一个IP协议无关的服务端和客户端的代码,仅供参考。服务端代码:#include #include #include #include #include #include #include #include using namespace std;int tcp_listen(const char *ho
2014-01-22 17:53:57
11191
3
原创 查找数组中第K大元素
前面几篇讨论了一些常用排序算法,在此基础上刚好可以讨论一下本篇的主题。在N个元素中查找第K大元素,一般比较简单的方法就是先快速排序,然后直接返回array[N - K]或者利用扫描法,每一次扫描都找到当前数组中最大的元素,这个其实就是部分冒泡排序。前一种算法的时间复杂度是O(NlogN),后一种算法的时间复杂度是K*N。当然,这里我们不打算具体讨论以上两种方案,接下来看看其他方法。
2012-09-10 17:20:18
8890
原创 常用排序算法递归篇之堆排序
在讲堆排序之前,我们先来了解一下什么是堆,堆的定义如下: n个关键字序列array[0...n-1]称为(Heap),当且仅当该序列满足如下性质: array[i] =号。array[i]相当于二叉树的非叶结点,array[2i + 1]则是左孩子,array[2i + 2]是右孩子。 若将此序列array[0...n-1]看做是一棵完全二叉树,则堆实
2012-08-24 11:23:41
2881
原创 常用排序算法递归篇之归并排序
合并排序是建立在归并操作上的一种有效的排序算法。该算法是采用分治法的一个非常典型的应用。合并排序法是将两个(或两个以上)有序表合并成一个新的有序表,即把待排序序列分为若干个子序列,每个子序列是有序的。然后再把有序子序列合并为整体有序序列。 将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为2-路归并。合并排序也叫归并排序。
2012-08-23 11:06:44
1155
原创 常用排序算法递归篇之快速排序
上一篇讲了几种非递归实现的常用排序算法,接下来把常用的几种用递归实现的排序算法也讲一下。本篇先讲快速排序,首先来描述一下快速排序的基本思想:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。 快速排序的实现描述: 1、
2012-08-22 20:17:57
828
原创 常用排序算法非递归篇
一直以来,对于冒泡、插入、选择这样的简单排序算法都没有弄得特别清楚,总是弄混淆。趁着晚上有空,把相关的排序算法回忆一下并做个记录。接下来讲的排序算法都以对整数的排序为例: 冒泡排序的实现描述: 1、将所有待排序的整数放入数组中; 2、从数组的第一个数字到倒数第二个数字进行逐个检查:若某一位上的整数大于它的下一位,则将它与它的下一位交换; 3、
2012-08-16 19:57:36
833
原创 参数不确定的宏定义
在很多项目中,不管是记录日志还是打印错误信息到标准(错误)输出,为了能尽快定位到代码所在位置,可能需要记录或者打印代码所在文件和行数等信息。当然我们可以这样做:printf("%s(%s:%d): %s\n",__FILE__, __FUNCTION__, __LINE__, err_msg);或者fprintf(fp, "%s(%s:%d): %s\n", __FILE__, _
2012-08-04 14:13:05
1407
原创 宏定义中的#、##和#@符号
1、# 字符串化操作符 其作用是:将宏定义中的传入参数名转换成用一对双引号括起来的参数名字符串。 其只能用于有传入参数的宏定义中,且必须置于宏定义体中的参数名前。 如: #define TEST_MACRO1(para) printf("Welcome to the C world, %s!\n", #para) 当使用该宏定义时:
2012-08-04 13:50:07
1051
原创 void在C/C++中的两种不同含义
在wrlinux3.0环境下编译项目代码,报出大量的'' has incomplete type,invalid use of 'VOS_VOID'的错误,经分析大致原因如下: void作为一个C/C++关键字,有两层含义。第一层含义就是大家熟知的,作为一种“不是类型”的类型。它还有另一层含义,就是写在函数的参数表里面,表示这个函数不接受任何参数。后一种含义其实是从C语言中继承而来,
2012-07-14 13:39:43
3740
原创 求集合的所有子集(续)
上一篇《求集合的所有子集》中给出的两种方法虽然解决了求所有子集的问题,但是也留下了一点缺陷,没法根据字典序输出所有子集。这里利用回溯法来求解,保证了按字典序输出所有子集。大致思路:首先得利用辅助数组index来记录所有选中元素的下标,对于辅助数组index需满足以下两个条件:(1)index[i + 1] > index[i],即后一个元素的下标必须大于前一个元素的下标(2)index
2012-03-31 18:42:29
3025
原创 求集合的所有子集
现有一个包含N个元素的集合S,求集合S的所有子集?例如:集合S包含三个元素{a, b, c},则它的所有子集为:{ }(空集), {a}, {b}, {c}, {a, b}, {a, c}, {b, c} 和{a, b, c}。这里先用位操作的思路来求解,具体方法:用2进制Bit位来标记集合中的某个元素是否被选中,1代表选中,0代表未选中。例如集合{a, b, c}的所有子集可如下表示:
2012-03-28 19:52:49
4459
原创 排列组合
给定一个n个不同元素的集合,列出所有的排列方式。例如:集合{a, b, c}的所有排列方式如下:{a, b, c}, {a, c, b}, {b, a, c}, {b, c, a}, {c, a, b}, {c, b, a}。n个不同元素的排列方式一共有n!种,这里提供一种递归的方法来解决这个问题。令E = {e1, e2, ......, en}表示n个不同元素的集合,Ei为E中移去
2012-03-02 20:01:22
744
原创 CPU占用率高问题定位
1、用top命令找到CPU利用率最高的进程root@XXX:/# toptop - 09:36:26 up 22 min, 2 users, load average: 6.02, 5.10, 3.58Tasks: 43 total, 1 running, 42 sleeping, 0 stopped, 0 zombieCpu(s): 1.0%us, 12.6%sy, 0.
2012-02-16 21:11:06
3706
原创 求比正整数N大的最小正整数M,且M与N的二进制表示中有相同数目的1
一般最容易想到的方法就是先计算正整数N用二进制表示时1的个数count1,然后不停地计算N++用二进制表示时1的个数count2,直到碰到count1 == count2成立,代码如下:typedef unsigned int uint; //解法一: uint count1Bits(uint n) { uint count = 0; while (0 != n)
2012-02-15 22:43:13
5447
原创 ftp/sftp自动上传、下载脚本
ftp脚本:#! /bin/shserver=172.23.3.150remotedir=/users/tmp/filename=test.txtftp -in << EOM open $server user username password bin cd $remotedir put $filename byeEOM
2012-02-13 18:50:14
21039
原创 【微创】求整数的二进制表示中有多少个1
现有一整数n,求n用二进制表示中有多少个1?解法一的步骤:(1)判定n是否为0,若为0,计算结束;否则继续计算(2)取n mod 2的值,若为1,计数器加1(3)对n进行除2,并返回到步骤(1)代码如下:int count1Bits(int n){ int count = 0; int mod = 0; //假设需要考虑负数 if (0 >
2012-02-11 16:05:12
805
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人