摘要: 最近在学习C++,C++有用new和不用new来创建对象,但是两者是有区别的,用new的话,那就要程序员自己去分配和释放内存,因为对象存储在堆中,而不用new呢,对象存储在栈中,栈中的内存是由系统来管理的,不用程序员去释放,那么可以利用这一点,来达到一个目的,就是利用栈中对象随过程的消失而自动调用对象的析构函数释放对象,智能指针就是利用这个特新,如果我们将所有的动态分配的资源放在对象中,那么我们不就可以不用去关心内存是否真的释放了,不用去手动delete,这样就可以解决内存泄漏的问题。下面是写的智能指针的简化版: 1 #include <iostream> 2 3 using na 阅读全文
posted @ 2013-01-13 23:39 GOD_YCA 阅读(460) 评论(0) 推荐(0)
摘要: 什么是lambda函数,中文名叫匿名函数?在你需要的时候采才去定义它,函数形式如下:lambda 参数列表 : 表达式lambda x,y:x*ylambda x: x*2但是这个不行 lambda x: x=x+2 不行,因为不是表达式函数式编程的思想,把所有的函数就当做对象一样看待,而lambda函数也一样,g = lambda x: x*2此时g就相当于函数def g(x): return x*2 那么lambda函数在那可以使用呢?如下一些小函数不需要重用,如果只用一次,而且这个函数可以用一个表达式来表示,那么就可以用lambda函数,当然你也可以不这么干。分割与合并字符串:join. 阅读全文
posted @ 2013-01-13 21:49 GOD_YCA 阅读(2202) 评论(1) 推荐(1)
摘要: 我们都知道频繁的动态内存分配很可能会造成大量的内存碎片和效率低下,因为需要搜索整个空闲链表找到可以被分配的内存块,而且容易造成内存泄漏等问题,那么如何解决这两个问题呢?内存池技术带你走进这个问题的殿堂。内存池技术首先会分配一大块内存给程序,当程序需要分配内存的时候从内存池中去获得,而且不需要去释放内存,当内存池不在用的时候释放整个内存即可,只分配,不释放,大大减少了时间。优势:1·效率快,无需调用malloc或者new,系统调用慢,而且搜索空闲块也慢2·不会产生过多的内存碎片,3·可以避免内存泄漏nginx=NXnginx的内存池设计非常巧妙得利用了HTTP短连接 阅读全文
posted @ 2013-01-13 20:54 GOD_YCA 阅读(1559) 评论(0) 推荐(0)
摘要: list加入新的变量:l.append(n)尾部加l.insert(2,n)在l[2]插入ntriple和list有什么区别:riple是静态的,不可更改,并有自动去重功能数据中有10000个数,其中某个数重复率打到50%以上,求快速找出这数的方法答案:10000个数分成两两一组,然后比较不相同去掉,相同的留下,如果一次不能得到结果,再做一次,最终会得到结果 阅读全文
posted @ 2013-01-13 14:14 GOD_YCA 阅读(300) 评论(0) 推荐(0)
摘要: #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 阅读(1833) 评论(0) 推荐(0)
摘要: 哈希函数就是根据输入的键值对,将键相同的键值对放入同一个桶中,但是有可能不同的键也放入到相同的桶中,那么办,桶中桶,通过二次哈希,进一步将不同的键值对放入不同的桶中,或者通过拉链法,拉出一条链来,将这个桶中的所有键值对都入链,不管任何一种方法,在第一次哈希的时候,必须能保证所有的键值对能均匀的分布在不同的桶内,这个才是关键。所有的map任务和reduce任务都是运行在分布式文件系统上,因为文件很大,所有文件被分成很多块,而如何划分呢?当然是通过hash函数,将大的文件划分为不同的文件块,每一个文件块是一个键值对,map任务的输入就是由这些文件块组成,并且键相同的文件块在同一个map任务上处理, 阅读全文
posted @ 2013-01-13 01:02 GOD_YCA 阅读(694) 评论(0) 推荐(0)