随笔分类 - 笔试&&面试
摘要:1.new有六种形式的操作符重载2.free之所以释放时不需要内存大小,是因为系统分配内存时前面有一个内存的描述信息。调用free时首先ptr-MBK;3.数据库为什么使用B+索引为什么使用B-Tree(B+Tree) 二叉查找树进化品种的红黑树等数据结构也可以用来实现索引,但是文件系统及数据库系统普遍采用B-/+Tree作为索引结构。 一般来说,索引本身也很大,不可能全部存储在内存中,因此索引往往以索引文件的形式存储的磁盘上。这样的话,索引查找过程中就要产生磁盘I/O消耗,相对于内存存取,I/O存取的消耗要高几个数量级,所以评价一个数据结构作为索引的优劣最重要的指标就是在查找过程中磁盘I/O
阅读全文
摘要:#include #include #define MAX 10000 int min(int a,int b) { return a>b?b:a; } void rebuild(char *s,char *src) { int i; s[0]='$',s[1]='#'; for(i=0; i i ? min(p[2*id-i], mx-i) : 1; while (s[i + p[i]] == s[i - p[i]]) p[i]++; if (i + p[i] > mx) {...
阅读全文
摘要:#include int overrideMaxNum(int *points,int pointsNum,int L) { int maxNum=1,i=0,j=1; if(L<=0||points==NULL||pointsNum<=0)return 0; while(j<pointsNum) { while(j<pointsNum&&points[j]-points[i]<=L) { maxNum++; j++; } ...
阅读全文
摘要:# 管道( pipe ):管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用。进程的亲缘关系通常是指父子进程关系。# 有名管道 (named pipe) : 有名管道也是半双工的通信方式,但是它允许无亲缘关系进程间的通信。# 信号量( semophore ) : 信号量是一个计数器,可以用来控制多个进程对共享资源的访问。它常作为一种锁机制,防止某进程正在访问共享资源时,其他进程也访问该资源。因此,主要作为进程间以及同一进程内不同线程之间的同步手段。# 消息队列( message queue ) : 消息队列是由消息的链表,存放在内核中并由消息队列标识符标识。消息队
阅读全文
摘要:#include double fangcha(int *arr,int n) { int i; double sum1=0,sum2=0; for(i=0;i<n;i++) { sum1+=arr[i]*arr[i]; sum2+=arr[i]; } return sum1/n-(sum2/n)*(sum2/n); } int main() { int arr[3]={1,2,3}; printf("%f\n",fangcha(arr,3)); retu...
阅读全文
摘要:线程共享的环境包括:进程代码段、进程的公有数据(利用这些共享的数据,线程很容易的实现相互之间的通讯)、进程打开的文件描述符、信号的处理器、进程的当前目录和进程用户ID与进程组ID。 进程拥有这许多共性的同时,还拥有自己的个性。有了这些个性,线程才能实现并发性。这些个性包括:1.线程ID 每个线程都有自己的线程ID,这个ID在本进程中是唯一的。进程用此来标 识线程。2.寄存器组的值 由于线程间是并发运行的,每个线程有自己不同的运行线索,当从一个线 程切换到另一个线程上时,必须将原有的线程的寄存器集合的状态保存,以便 将来该线程在被重新切换到时能得以恢复。3.线程的堆栈 堆栈是保证线程独立运行所必
阅读全文
摘要:http://blog.csdn.net/fall221/article/details/8242706http://www.cnblogs.com/yujunyong/articles/2004724.htmlhttp://blog.csdn.net/fall221/article/details/8243056
阅读全文
摘要:#include #include using namespace std;int main(){ char str[80]; //int arr[80], temp, pos = 0, n = 0, i, max = 0, flag; int temp; int pos = 0; bool flag ; int maxnumer = 0; printf("请输入字符串:\n"); scanf("%s", str); while (str[pos] != '\0') { temp = 0; flag = false;//设置是否有整数的标
阅读全文
摘要:void func(const char *str){ int len = 0; int max_len = 0; const char *max_pos = str; for (;;) { if ('0' max_len) { max_len = len; max_pos = str - len; } len = 0; if (0 == *str) { ...
阅读全文
摘要:一台计算机有1KB内存和1MHZ的处理器,能在该机上运行且确定性终止的所有程序中,最长的运行时间是多少,要求写出推理过程,可作出任意假设。我假设该机是但用户单任务操作系统,实地址模式,运行的程序就是在不断不重复地更改内存状态,程序结束的终止状态为内存的某一确切状态,定义为终止态。于是推理过程如下:1KB的内存共有状态:2^(1024*8) 种1MHZ的处理器每一秒钟可以更改内存状态的次数为: 10^6 次因此,如果一个应用程序,从某个状态出发,遍历了所有的中间状态,最终到大终止态后结束,经历的这段时间即为程序运行的最长时间。为:(2^(1024*8)-1)/10^6 秒
阅读全文
摘要:template int getArrayLen(T& array){ return (sizeof(array) / sizeof(array[0]));}int main(){ char arr[100]; cout << getArrayLen(arr); return 0; }
阅读全文
摘要:#include #include using namespace std;int search(char *text){ int lastpos[256], lmax=0, curmax=0; for(int i=0;i curmax){ curmax++; lmax = max(lmax, curmax); } else curmax = i-lastpos[ text[i] ]; lastpos[ text[i] ] = i; } return ...
阅读全文
摘要:void change(int *p,int a,int b){ int tmp = *(p + a); *(p + a) = *(p + b); *(p + b) = tmp;}int main(){ int a[100]; for (int i = 0 ;i = 90;--i) { change(a,i,rand()%i); cout << a[i] <<endl; } return 0; }
阅读全文
摘要:这个需求应该是很常见的吧,需要从 0 到 n 之间选 k 个不重复的数组成一个序列。我最早遇到这个问题是在给校ACM比赛出题时,需要随机产生一些测试数据,当时我想的是用一个辅助数组记录之前已经产生的随机数,如果当前产生的随机数已经出现过就再重新随机。显然这样的实现效率是很低的,设想从10000个数中随机产生10000个数的序列,当前面9999个数已经确定了时,最后一个数被随机到的概率是 0.0001,也就是说大概需要调用随机函数10000次才会产生。类似的,第9999个数被随机到的概率是0.0002…….....我后来采用了一个改进的办法是,如果当前产生的随机数a已经在之前产生过了,就顺序去找
阅读全文
摘要:1. TCP的三次握手最主要是防止已过期的连接再次传到被连接的主机。如果采用两次的话,会出现下面这种情况。比如是A机要连到B机,结果发送的连接信息由于某种原因没有到达B机;于是,A机又发了一次,结果这次B收到了,于是就发信息回来,两机就连接。传完东西后,断开。结果这时候,原先没有到达的连接信息突然又传到了B机,于是B机发信息给A,然后B机就以为和A连上了,这个时候B机就在等待A传东西过去。2. 三次握手改成仅需要两次握手,死锁是可能发生考虑计算机A和B之间的通信,假定B给A发送一个连接请求分组,A收到了这个分组,并发送了确认应答分组。按照两次握手的协定,A认为连接已经成功地建立了,可以开始发送
阅读全文
摘要:遍历二叉树的无论按照哪一种次序进行遍历,对n个结点时间复杂度为O(n),所需要的辅助空间为树的深度O(d).
阅读全文
摘要:http://www.cnblogs.com/wu8685/archive/2010/12/21/1912347.html1.T(n)=2T(n/2) 和 T(n)=2T(n/2) +k例子有 二叉树的递归遍历时间复杂度 T(n)=O(n)2.T(n)=2T(n/2)+kn+j例子有 快速排序时间复杂度为 T(n)=O(nlogn)3.T(n)=T(n/2)+kn+j例子有 二叉树最近公共祖先时间复杂度为T(n)=O(n)
阅读全文
摘要:typedef struct LinkNode { int data; struct LinkNode* next; }LinkNode , *LinkList; LinkList inverseList(LinkList head) { if(head == NULL || head->next == NULL) return head; LinkList pre = NULL; LinkList curr = head; LinkList next = NULL; while(curr ...
阅读全文
摘要:题目:有n个人,其中一个明星和n-1个群众,群众都认识明星,明星不认识任何群众,群众两两间可能认识也可能不认识,每次问一个人是否认识另外一个人的代价为0(1),试设计一种算法找出明星,并给出时间复杂度。答案:群众都认识明星,明星不认识任何群众。设其中任意2个人A,B,询问A是否认识B。若是,则A不是明星,排除之,否则B不是明星。每次询问都可以排除一人,因此最多询问n-1次,时间复杂度O(n)。
阅读全文

浙公网安备 33010602011771号