摘要:
笔者在实际工作中,有幸接触到海量的数据处理问题,对其进行处理是一项艰巨而复杂的任务。原因有以下几个方面: 一、数据量过大,数据中什么情况都可能存在。如果说有10条数据,那么大不了每条去逐一检查,人为处理,如果有上百条数据,也可以考虑,如果数据上到千万级别,甚至过亿,那不是手工能解决的了,必须通过工具或者程序进行处理,尤其海量的数据中,什么情况都可能存在,例如,数据中某处格式出了问题,尤其在程序处 理时,前面还能正常处理,突然到了某个地方问题出现了,程序终止了。 二、软硬件要求高,系统资源占用率高。对海量的数据进行处理,除了好的方法,最重要的就是合理使用工具,合理分配系统资源。一般情况... 阅读全文
摘要:
引言当您经常使用某个系统时,往往会陷入某种固定的使用模式。有时,您没有养成以尽可能最好的方式做事的习惯。有时,您的不良习惯甚至会导致出现混乱。纠正此类缺点的最佳方法之一,就是有意识地采用抵制这些坏习惯的好习惯。本文提出了 10 个值得采用的 UNIX 命令行习惯——帮助您克服许多常见使用怪癖,并在该过程中提高命令行工作效率的好习惯。下面列出了这 10 个好习惯,之后对进行了更详细的描述。在单个命令中创建目录树。更改路径;不要移动存档。将命令与控制操作符组合使用。谨慎引用变量。使用转义序列来管理较长的输入。在列表中对命令分组。在find之外使用xargs。了解何时grep应该执行计数——何时应该 阅读全文
摘要:
当然这个算不上是困难的算法,面试考的也不少,实现起来可以有多种方法,但是你能写出最优秀的吗? 大概有这几种: reverse1.新建一个单链表把原链表的内容逐个头插法插入新链表中.从而实现了链表的翻转. reverse2.新建一个数组把原链表的内容copy到数组和新链表中.从而实现了链表的翻转. reverse3.一次遍历单链表,原地将原链表翻转 评注: reverse1 在实现的时候,也只是遍历了一次原链表,但是却要新创建一个链表,来保存原链表的反转内容,相当于原链表的副本.虽然时间复杂度上为O(n),但却浪费了空间,而且还有链表的头插入,带来指针的移动额外的开支... 阅读全文
摘要:
Stevens的《unix网络编程》,由于客观原因,未能跟上Linux的新进展,尤其在linux内核日新月异的今天。本文解释下Unix的select/poll和linux下的epoll之主要区别。1. 支持一个进程打开大数目的socket描述符(FD) select最不能忍受的是一个进程所打开的FD是有一定限制的,由FD_SETSIZE设置,默认值是2048。对于那些需要支持的上万连接数目的IM服务器来说显然太少了。这时候你一是可以选择修改这个宏然后重新编译内核,不过资料也同时指出这样会带来网络效率的下降;二是可以选择多进程的解决方案(传统的Apache方案),不过虽然Linux上面创建进.. 阅读全文