Skip to content

chamlion/num_sort

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

48 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

num_sort

	author  chamlion 
	mail    [email protected]
	2016.9.13
***********************************项目出处****************************************************************************
	看了陈硕老师在知乎上的一篇回答,why dont i give it a try!
	要求如下:
	一、多机数据处理。有 10 台机器,每台机器上保存着 10 亿个 64-bit 整数(不一定刚好 10亿个,可能有上下几千万的浮动)
	一共约100亿个整数(其实一共也就 80GB 数据,不算大,选这个量级是考虑了 VPS 虚拟机的容量,便于实验)。编程求出:
	1. 这些数的平均数。
	2. 这些数的中位数。
	3. 出现次数最多的 100 万个数。
	*4. (附加题)对这 100 亿个整数排序,结果顺序存放到这 10 台机器上。
	*5. (附加健壮性要求)你的程序应该能正确应对输入数据的各种分布(均匀、正态、Zipf)。
	*6. (附加伸缩性要求)你的程序应该能平滑扩展到更多的机器,支持更大的数据量。比如 20 台机器、一共 200 亿个整数,
	或者 50台机器、一共 500 亿个整数。
	作者:陈硕
	链接:http://www.zhihu.com/question/22608820/answer/21968467
	来源:知乎
	著作权归作者所有,转载请联系作者获得授权
	特别感谢陈硕老师,阅读了他的muduo库,收益良多
***********************************************************************************************************************
文件结构 :
|
|-----build.sh 
|-----CmakeLists.txt
|-----README.md
|-----num_base
|      |-----CmakeLists.txt
|      |-----bolcking_task_queue.h      实现无锁队列
|      |-----fucntions{.cc,.h}          包含得到当前文件路径、得到某个文件夹所有文件名、程序运行时间计时、noncopyable类 
|      |-----num_sort{.cc,.h}           单个文件排序
|      |-----success_tree{.cc,.h}       将排序好的文件中的数据进行多路归并排序
|      |-----thread_poll{.cc,.h}        线程池 可用在对多个单文件的排序
|-----num_net
|      |-----CmakeLists.txt
|      |-----epoll_server{.cc,.h}       服务器基础类 包含对client端连接断开处理,以及对client端发送数据的处理 以及排序结果的写入
|      |-----sock_client{.cc,.h}        客户端基础类 包含和server端的基础通信,以及按照server端的指令发送相应的数据
|-----src                               测试文件
|      |-----CmakeLists.txt
|      |-----bolcking_task_queue_test.cc   
|      |-----num_sort_test.cc
|      |-----success_tree_test.cc
|      |-----thread_poll_test.cc
|      |-----sock_client_test.cc
|      |-----epoll_server_test.cc
开发环境 :
系统           ubuntu 15.04
编译器         g++ 5.2.1
调试器         gdb  7.10
编译方法       在build.sh 目录下 执行 sudo ./build.sh  则会生成相应的静态库 及测试文件	
静态库的使用   比如欲使用functions.h 则应包含头文件<num/base/functions.h>

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published