摘要: #include <pthread.h>#include <stdio.h>#include <stdlib.h>#include <unistd.h>void* func1(void *p){ int i = 5; printf("address of func1:i is %p\n",&i); sleep(4); printf("%d\n",*((int *)((unsigned int)(&i) - 1024 * 10244)));}void* func2(void *p){ int 阅读全文
posted @ 2013-01-13 13:18 GOD_YCA 阅读(1793) 评论(0) 推荐(0) 编辑
摘要: 哈希函数就是根据输入的键值对,将键相同的键值对放入同一个桶中,但是有可能不同的键也放入到相同的桶中,那么办,桶中桶,通过二次哈希,进一步将不同的键值对放入不同的桶中,或者通过拉链法,拉出一条链来,将这个桶中的所有键值对都入链,不管任何一种方法,在第一次哈希的时候,必须能保证所有的键值对能均匀的分布在不同的桶内,这个才是关键。所有的map任务和reduce任务都是运行在分布式文件系统上,因为文件很大,所有文件被分成很多块,而如何划分呢?当然是通过hash函数,将大的文件划分为不同的文件块,每一个文件块是一个键值对,map任务的输入就是由这些文件块组成,并且键相同的文件块在同一个map任务上处理, 阅读全文
posted @ 2013-01-13 01:02 GOD_YCA 阅读(672) 评论(0) 推荐(0) 编辑
摘要: On program startup, the integer file descriptors associated with the streams stdin, stdout, and stderr are 0, 1, and 2, respectively. The preprocessor symbols STDIN_FILENO, STDOUT_FILENO, and STDERR_FILENO are defined with these values in <unistd.h>. (Applying freopen(3) to one of these stream 阅读全文
posted @ 2013-01-12 15:50 GOD_YCA 阅读(803) 评论(0) 推荐(0) 编辑
摘要: 每个进程都有自己的虚拟地址空间,我们知道除了堆中的虚拟内存我们可以由程序员灵活分配和释放,其他的区域的虚拟内存都有系统控制,那么还有没有其他方法让程序员去灵活控制虚拟内存呢?linux下的mmap函数就此而来,mmap函数可以为我们在进程的虚拟空间开辟一块新的虚拟内存,你可以将一个文件映射到这块新的虚拟内存,所以操作新的虚拟内存就是操作这个文件,下面我将介绍mmap函数的运用。首先介绍mmap函数的头文件以及函数声明:#include <sys/mman.h>void *mmap(void* start, size_t length, int prot, int flags, in 阅读全文
posted @ 2013-01-12 15:43 GOD_YCA 阅读(2104) 评论(0) 推荐(0) 编辑
摘要: 云的出现,正在改变我们对于传统IT的观念认识。云并不像它的概念一样虚无缥缈,而是以各种形式出现在我们面前,而最让人耳熟能详的莫过于云存储和云计算。云存储的出现改变了一些人的存储方式和习惯,而云计算又将给我们带来什么?在这个云的时代,服务器又将走向何处呢?云计算来了目前,中国有望成为全球云计算产业增长最快的新兴市场,包括IBM、微软、Cisco、Citrix、VMware、Salesforce、Oracle/SUN、DELL、HP、EMC、NetApp、华为、中兴、施耐德等一大指国际厂商和包括中软、浪潮、八百客、阿里云、全时、263在内的一大批云计算厂商/服务商将在中国市场展开竞争。未来三到五年 阅读全文
posted @ 2013-01-11 12:51 GOD_YCA 阅读(1123) 评论(0) 推荐(0) 编辑
摘要: http://blog.sina.com.cn/s/blog_6444798b0100pslu.htmlhttp://www.liaoqiqi.com/blog/2010/discussion-about-the-memory-allocation-using-heap-stack-static-area/http://my.oschina.net/solu/blog/2537http://hi.baidu.com/gungod/item/65853f1ae8c9b316e3f98648下面两种动态内存管理的方法:堆内存分配和mmap的内存分配,此两种分配方法都是通过相应的Linux 系统调用 阅读全文
posted @ 2013-01-10 22:00 GOD_YCA 阅读(463) 评论(0) 推荐(0) 编辑
摘要: 以应聘外企为例,下面总结归纳了应聘外企面试时一般会提的10个问题,同时附上我们认为比较好的回答,或者说是我们希望你能这样来回答比较好,希望对大家有所帮助:1、请介绍一下你自己。这是外企常问的问题。一般人回答这个问题过于平常,只说姓名、年龄、爱好、工作经验,这些在简历上都有,其实,外企最希望知道的是求职者能否胜任工 作,包括:最强的技能、最深入研究的知识领域、个性中最积极的部分、做过的最成功的事,主要的成就等,这些都可以和学习无关,也可以和学习有关,但要突出 积极的个性和做事的能力,说得合情合理外企才会相信。外企很重视一个人的礼貌,求职者要尊重考官,在回答每个问题之后都说一句“谢谢”。外企喜欢有 阅读全文
posted @ 2013-01-10 21:36 GOD_YCA 阅读(1359) 评论(0) 推荐(0) 编辑
摘要: 为什么不要再代码里频繁的new和delete了呢,因为new是在堆中搜索一块可用的内存给程序使用,在堆中分配的内存不是连续的,不像栈,后进先出,你不可能在栈的中间pop出一块内存,所以想要使用栈中某一块内存,你必须先释放这块内存中上面的内存,也就是出栈,但是堆不一样,堆的分配的内存不连续,所以当你在程序中new了很多次,而你的程序还没有及时delete这些内存,那么就会造成最后有内存,你却new不出,因为不够大,无法满足的你需要的大小,这个就是内存碎片的问题,那么如何解决内存碎片呢?以后再探讨,可能自己需要写一个内存分配算法,还有内存池的方法,等等。。。。我觉得最好改变动态分配内存不连续的问题 阅读全文
posted @ 2013-01-10 14:41 GOD_YCA 阅读(5737) 评论(0) 推荐(1) 编辑
摘要: 我们都知道C++中有三种创建对象的方法,如下:#include <iostream>using namespace std;class A{private: int n;public: A(int m):n(m) { } ~A(){}};int main(){ A a(1); //栈中分配 A b = A(1); //栈中分配 A* c = new A(1); //堆中分配 delete c; return 0;}第一种和第二种没什么区别,一个隐式调用,一个显式调用,两者都是在进程虚拟地址空间中的栈中分配内存,而第三种使用了new,... 阅读全文
posted @ 2013-01-10 14:28 GOD_YCA 阅读(27976) 评论(1) 推荐(2) 编辑
摘要: 一段漂亮的代码必须考虑到内存泄漏的问题,而内存泄漏根本原因是因为你的程序在heap中分配的内存没有释放掉,当然没有释放掉的原因很多,最简单的就是你new完之后没有写delete,当然还有很多其他的原因,下面是我最近的一些新得。 #include <iostream>using namespace std;#define true 1class A{private: int n;public: A(int m){ cout<<"A() is called\n";} ~A(){ cout<<"~A() is called\n&quo 阅读全文
posted @ 2013-01-09 22:47 GOD_YCA 阅读(1397) 评论(0) 推荐(2) 编辑