代码改变世界

Linux系统编程概略

2012-09-17 21:22 by iamzhaiwei, 174 阅读, 0 推荐, 收藏, 编辑
摘要:基础知识文件IOint open(const char *pathname, int oflag, mode_t mode);int close(int fd);off_t lseek(int fd, off_t offset, int whence); // whence: SEEK_SET SEEK_CUR, SEEK_ENDssize_t read(int fd, void *buf, size_t nbytes);ssize_t write(int fd, const void *buf, size_t nbytes);fcntl高级IO非阻塞IO对一个描述符调用open或fcntl函 阅读全文

C++虚函数表汇总

2012-09-04 20:36 by iamzhaiwei, 203 阅读, 0 推荐, 收藏, 编辑
摘要:一般来说,对于开发者我们只需要知道虚函数的使用方法,以及虚函数表的存在即可。但面试时往往会遇到更细节的问题,比如让你实现一个虚函数机制,虽然不太实用,总归了解些底层知识也是件好事。但如果有人苦苦相逼一定要拿这个刷人,你就去骂他吧,你才是写编译器的,你们全家都是写编译器的。唉,我有些失态了...1. 虚函数与虚函数表基本知识这里有一篇介绍,只需看前两页,各种配图,很形象:http://dev.yesky.com/208/8061708.shtml这篇文章则更精练,只需看第一段就好:http://blog.csdn.net/jiangnanyouzi/article/details/3720807 阅读全文

C++虚函数表解析

2012-09-04 20:15 by iamzhaiwei, 148 阅读, 0 推荐, 收藏, 编辑
摘要:前言 C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码来实现可变的算法。比如:模板技术,RTTI技术,虚函数技术,要么是试图做到在编译时决议,要么试图做到运行时决议。 关于虚函数的使用方法,我在这里不做过多的阐述。大家可以看看相关的C++的书籍。在这篇文章中,我只想从虚函数的实现机制上面为大家一个清晰的剖析。当然,相同的文章在网上也出现过一些了,但我总感觉这些文章不是很容易阅读,大段大段的代码,没有. 阅读全文

数据挖掘——决策树算法

2012-09-02 19:22 by iamzhaiwei, 509 阅读, 0 推荐, 收藏, 编辑
摘要:决策树算法1、摘要 在前面两篇文章中,分别介绍和讨论了朴素贝叶斯分类与贝叶斯网络两种分类算法。这两种算法都以贝叶斯定理为基础,可以对分类及决策问题进行概率推断。在这一篇文章中,将讨论另一种被广泛使用的分类算法——决策树(decision tree)。相比贝叶斯算法,决策树的优势在于构造过程不需要任何领域知识或参数设置,因此在实际应用中,对于探测式的知识发现,决策树更加适用。2、决策树引导 通俗来说,决策树分类的思想类似于找对象。现想象一个女孩的母亲要给这个女孩介绍男朋友,于是有了下面的对话: 女儿:多大年纪了? 母亲:26。 女儿:长的帅不帅? 母亲:挺帅的。 女儿:收入高不? 母亲:不算很高 阅读全文

设计MP3搜索引擎

2012-09-02 18:44 by iamzhaiwei, 247 阅读, 0 推荐, 收藏, 编辑
摘要:(百度)假设一个 mp3 搜索引擎收录了 2^24 首歌曲,并记录了可收听这些歌曲的 2^30 条 URL,但每首歌的 URL 不超过 2^10 个。系统会定期检查这些 URL,如果一个 URL 不可用则不出现在搜索结果中。现在歌曲名和 URL 分别通过整型的 SONG_ID 和 URL_ID 唯一确定。对该系统有如下需求:1) 通过 SONG_ID 搜索一首歌的 URL_ID,给出 URL_ID 计数和列表2) 给定一个 SONG_ID,为其添加一个新的URL_ID3) 添加一个新的 SONG_ID4) 给定一个 URL_ID,将其置为不可用限制条件:内存占用不超过 1G,单个文件大小不超过 阅读全文

设计海量key-value数据的存储查询模块

2012-09-02 18:42 by iamzhaiwei, 935 阅读, 0 推荐, 收藏, 编辑
摘要:(百度2011)单机存储100亿大数据量的key-value数据,要求能够支持插入和查询操作,单条数据长度不定,平均约1024字节,假设可用内存10G,磁盘空间不限,请设计一个存储查询模块,支持按照key来获取对应的value,设计目标以查询性能为先,尽量节约资源,查询可以理解为网民的检索行为。1)说明该设计方案和主要思路,以及优缺点2)请详细说明该设计思路下查询和插入的操作流程3)如果增加更新操作,请评估前面的设计方案是否可行,需要做怎样的修改,不可行则指明主要问题点。分析:1)数据量大小为:data_size=100亿*1024Byte=10^10*10^3Byte=10^13Byte=1 阅读全文

数据结构与算法试题集锦

2012-08-30 20:05 by iamzhaiwei, 955 阅读, 0 推荐, 收藏, 编辑
摘要:1 数组1.1 两个已排序的整型数组,求交集,最快算法(百度)输入:两个已排序的整型数组(int a[m], b[n])输出:两个数组的交集分析:注意有4种情况:a升序,b升序;a升序,b降序;a降序,b升序;a降序,b降序。1.2 逆序对(百度)多人排成一个队列,我们认为从低到高是正确的序列,但是总有部分人不遵守秩序。如果说,前面的人比后面的人高(两人身高一样认为是合适的),那么我们就认为这两个人是一对“捣乱分子”,比如说,现在存在一个序列:176, 178, 180, 170, 171这些捣乱分子对为 <176, 170>, <176, 171>, <178, 阅读全文

百度笔试题

2012-08-27 20:52 by iamzhaiwei, 239 阅读, 0 推荐, 收藏, 编辑
摘要:一、选择题:15 分共 10 题1. 在排序方法中,关键码比较次数与记录地初始排列无关的是:DA. Shell 排序 B. 归并排序 C. 直接插入排序 D. 选择排序2. 以下多线程对 int 型变量x的操作,哪几个需要进行同步:B CA. x=y; B. x++; C. ++x; D. x=1;3. 代码void func(){ static int val; …}中,变量 val 的内存地址位于:BA. 已初始化数据段 B.未初始化数据段 C.堆 D.栈4. 同一进程下的线程可以共享以下:BA. stack B. data section C. register set D.thre.. 阅读全文

选择原料工厂

2012-07-28 17:13 by iamzhaiwei, 284 阅读, 0 推荐, 收藏, 编辑
摘要:12个工厂分布在一条东西向高速公路的两侧,工厂距离公路最西端的距离分别是0、4、5、10、12、18、27、30、31、38、39、47.在这12个工厂中选取3个原料供应厂,使得剩余工厂到最近的原料供应厂距离之和最短,问应该选哪三个厂?分析:1、是一维问题,不是二维,可以抽象成:有12个点分布在一维坐标轴上,选择3个点,使得剩余的点到最近的点的距离之和最小。2、工厂距离是从小到大排序的。3、从N个工厂中选择1个原料厂,选择位于中位数位置的工厂,距离之和最短。4、设A[i][j]表示从前i个工厂选择j个原料厂的最短距离,B[i][j]表示从第i个工厂到第j个工厂选择1个原料厂的最短距离。对B[i 阅读全文

C语言标准IO

2012-07-27 16:00 by iamzhaiwei, 1502 阅读, 0 推荐, 收藏, 编辑
摘要:这几天参加中兴捧月比赛,用到了C语言的标准IO库。由于对其中的一些细节不是非常清楚,导致了许多Bug,花了好长时间来调试。所以在此做个笔记,以备后查。1. 缓冲区全缓冲。在这种情况下,当填满标准I/O缓存后才进行实际I/O操作。对驻留在磁盘上的文件的访问通常是由标准I/O库实施全缓冲的。缓冲区可由标准IO例程自动冲洗(如当填满一个缓冲区时),或调用函数fflush强制冲洗。行缓冲。在这种情况下,当在输入和输出中遇到新行符时,标准I/O库执行I/O操作,这允许我们一次输出一个字符(如fputc函数),但只有写了一行之后才进行实际I/O操作。当流涉及一个终端时(例如标准输入和标准输出),典型地使用 阅读全文