- 博客(29)
- 问答 (3)
- 收藏
- 关注
原创 牛客网-访问单个节点的删除
实现一个算法,删除单向链表中间的某个结点,假定你只能访问该结点。给定带删除的节点,请执行删除操作,若该节点为尾节点,返回false,否则返回true/*struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) {}};*/class
2016-08-31 07:25:29 512
原创 图
1,图(Graph)是由顶点的有穷非空集合和顶点之间的边的集合组成,通常表示为:G(V,E), 其中,G表示一个图,V是图G中顶点的集合,E是图G中边的集合 1,线性表中我们把数据元素叫元素,树中将数据元素叫节点,在图中数据元素, 我们则称之为顶点(Vertex) 2,线性表中可以没有数据元素,称为空表.数中可以没有节点,叫做空树.但是对于图而言,
2016-08-30 08:48:04 1593
原创 TCP_NODELAY,Nagle算法
什么是Nagle算法???使用该算法能够获得那些数据通信特性???或者说,有什么优势呢???Nagle算法:为防止因数据包过多而发生网络过载,Nagle算法在1984年诞生了。应用于TCP层,非常简单。其使用不使用导致如下的差异: 如上图:展示了通过Nagle算法发送字符串“Nagle”和未使用Nagle算法的差别。 可以得到如下结论: 只有收到前一数
2016-08-29 16:05:39 1068
转载 最长公共子序列问题 和 最长公共子串问题
问题描述:最长公共子序列也称作最长公共子串(不要求连续),英文缩写为LCS(Longest Common Subsequence)。其定义是,一个序列 S ,如果分别是两个或多个已知序列的子序列,且是所有符合此条件序列中最长的,则 S 称为已知序列的最长公共子序列。 例如:X(A,B,C,B,D,A,B) Y(B,D,C,A,B,A) 那么最长公共子序列就是:
2016-08-18 15:38:50 721
转载 只用位运算来实现整数的加减乘除四则运算 (转载,还没有来得及整理!!!!)
听同学百度二面中,不准用四则运算操作符来实现四则运算。一想就想到了计算机组成原理上学过的。位运算的思想可以应用到很多地方,这里简单的总结一下用位运算来实现整数的四则运算。首先回忆计算机组成原理学过的内容,数字在机器ALU运算逻辑单元内部是以补码形式进行运算的,因为补码有两个优势:1、能做到符号位和数值部分一起运算,这样无需单独考虑符号。2、能把减法运算转化为加法运算来处理。
2016-08-18 15:27:23 897
转载 树中两个结点的最低公共祖先(剑指offer!!!)
面试题050】树中两个结点的最低公共祖先题目: 树中两个节点的最低公共祖先。 思路一: 输入两个树节点,求他们的最低公共祖先,——如果是二叉树,而且是二叉搜索树,那么是可以找到公共节点的。二叉搜索树都是排序过的,位于左子树的节点都比父节点小,而位于右子树上面的节点都比父节点大。如果当前节点的值比两个结点 的值都大,那么最低的共同的父节点一定是在当
2016-08-18 14:38:00 826
原创 atoi()函数的实现
atoi()函数的功能:将字符串转换成整型数;atoi()会扫描参数nptr字符串,跳过前面的空格字符,直到遇上数字或正负号才开始做转换,而再遇到非数字或字符串时('\0')才结束转化,并将结果返回(返回转换后的整型数)。写atoi函数的时候需要注意一下几点1. 字符串前的空白2. 字符串所表示数值的正负号
2016-08-18 14:05:50 2944
转载 约瑟夫环问题
约瑟夫环问题:一圈共有N个人,开始报数,报到M的人自杀,然后重新开始报数,问最后自杀的人是谁?如图:内环表示人排列的环,外环表示自杀顺序;上面N=41,M=3。最普通办法就是模拟整个过程:建一个bool数组,true表示此人还活着,false表示已经自杀。可以模拟整个过程[cpp] view plain copy #include using
2016-08-18 11:12:58 355
转载 二叉树的镜像 (剑指offer)!!!(两个有序链表的合并,链表的逆置)
面试题19:二叉树的镜像(来自《剑指Offer》)题目:请完成一个函数,输入一个二叉树,该函数输出它的镜像。二叉树结点的定义如下:[cpp] view plain copy print?struct BinaryTreeNode { int data; BinaryTreeNode *Left; BinaryTreeNod
2016-08-18 11:07:08 538
原创 C++默认编写并调用了那些函数(构造,析构,赋值)!!!
1,什么时候empty class(空类),不再是一个empty class呢???2,对于创建的类而言,它的大小是多少呢???对象呢???如下代码:#include using namespace std;class A{ int a; char b; public: void print
2016-08-16 15:18:41 480
原创 进程间通信
1,进程中的两种关系 进程同步与进程互斥 1,顺序程序特征(顺序性,封闭性,确定性,可再现性) 2,并发程序的特征(共享性,并发性,随机性) 互斥:由于进程间要求资
2016-08-16 14:22:46 410
转载 error: cast from ‘char*’ to ‘int’ loses precision
编译时出现错误: error: cast from ‘char*’ to ‘int’ loses precision原因:程序中存在char* addrCom; addrCom= ......//赋值 if(-1 == (int)addrCom) //导致编译出错 { ...... } 上面是隐式转换,将其改为标准C++显示类型转换:
2016-08-12 09:28:14 5107
原创 一个简单线程池的实现
什么是线程池???1,包含若干个线程,是线程的集合 线程池当中的线程个数不是越多越少,太多了会增加系统的开销。太少了又会降低并发量。 所以线程池当中的线程的个数有严格的要求 若干个线程通常都小于并发的任务量2,线程池中的线程用于执行大量的相对短暂的任务 当某一个时刻来了大量的并发任务时,我们要用若干个相对较少的线程来调度这些大量的任务。。。由于线程的 个数小于
2016-08-09 17:59:35 436
转载 字符串(替换空格-剑指offer!!!)
C/C++中:每个字符串都以字符'\0'作为结尾,这样我们就能很方便的找到字符串的最后尾部。但是由于这个特 点,每个字符串中都有一个额外字符的开销,我们要防止越界 为了节省内存,C/C++把常量字符串放到单独的一个内存区域。当几个指针赋值给相同的常量字符串时,它们实际上会指向相同的内存地址。但用常量内存初始化数组,情况却有所不同。我们来看看下面这个代码:#inc
2016-08-08 15:03:02 613
原创 POSIX条件变量(生产者,消费者)
POSIX条件变量1,当一个线程互斥的访问条件变量的时候,它发现这个变量当前的状态不满足这个线程得以继续执行的要求 就需要等待其它线程对该变量进行更改,直到满足它的要求,不然的话,它什嘛也不做。。。。。。。。。 等待条件的满足。这个时候呢,,,就需要用到条件变量 如上,一个全局变量n = 0; 两个线程,都有加锁机制,一旦进入临界区,当线程1进入临界区之后,那么
2016-08-07 23:49:10 934 5
原创 POSIX信号量与互斥锁(生产者,消费者)
POSIX信号量相关函数 POSIX信号量的打开操作跟POSIX消息队列,共享内存的打开方式是一样的 sem_open(打开),sem_close(关闭),sem_unlink(删除一个信号量) sem_open - initialize and open a named semaphore sem_close - close a named semap
2016-08-07 15:30:21 1470
原创 线程的基本属性(分离,栈大小,保护区,竞争,调度并发)以及TSD特定数据
线程的属性: 我们知道,在创建一个线程的时候可以指定一个线程的属性,通过第二个参数来指定:pthread_attr_t *attr. 一般情况下,我们都将这个参数设置为空,表示这个线程使用的是默认属性 那么如果,我们要将线程属性设定为一个特定的值的话,这时候:我们就需要一个线程属性变量(类型:pthread_attr_t),这种类型的变量需要首先初始化后才能用,可以调用这个函数
2016-08-06 16:47:51 1030
转载 快排的优化(简直神乎其神了!!!)
本文转载于:http://www.blogjava.net/killme2008/archive/2010/09/08/quicksort_optimized.html quicksort可以说是应用最广泛的排序算法之一,它的基本思想是分治法,选择一个pivot(中轴点),将小于pivot放在左边,将大于pivot放在右边,针对左右两个子序列重复此过程,直到序列为空或者只
2016-08-06 00:35:40 9170 2
原创 为什么会引入线程(进程,优缺点,模型)!!!
1,为什么会产生或者引入线程呢???2,程序,进程,线程之间的区别???3,线程的优缺点,线程的模型(1:1,N:M,N:1)???
2016-08-05 20:14:49 18168 2
原创 POSIX线程,线程的客户/服务通信(pthread_join,pthread_exit,pthread_detach,pthread_self)
我们所熟知的线程函数:1,pthread_create,pthread_join,pthread_exit,pthread_detach,pthread_self2,如何避免产生僵尸线程(进程)3,多线程引发的客户/服务通信
2016-08-05 19:42:38 836
转载 Linux 僵尸进程
本文转载:http://www.cnblogs.com/hazir/p/zombie_process.html僵尸进程指的是那些虽然已经终止的进程,但仍然保留一些信息,等待其父进程为其收尸僵尸进程如何产生的?如果一个进程在其终止的时候,自己就回收所有分配给它的资源,系统就不会产生所谓的僵尸进程了。那么我们说一个进程终止之后,还保留哪些信息?为什么终止之后还需要保留这
2016-08-05 16:02:55 420
原创 初始FTP
FTP简介:1,文件传输协议FTP(File Transfer Protocol由RFC959描述)2,FTP设计的目的是为了不同主机之间高效的文件传输,能够屏蔽不同主机不同的文件系统的差异3,工作在TCP/IP协议族的应用层,传输层使用的是TCP协议,是基于客户/服务器模式工作的FTP所支持的文件类型(因为是在不同主机的不同文件系统之间进行数据传输,文件共享):1,A
2016-08-05 00:18:39 942
转载 旋转数组的最小数字(剑指offer)
题目:把一个数组最开始的若干个元素搬到数组的末尾,我们称为数组的旋转.输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素.例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1. 这道题的直观解法并不难,从头到尾遍历数组一次,我们就能找出最小的元素.这种思路的时间复杂度显然是O(N).但是这个思路没有利用输入旋转数组的特性,肯定达不到面
2016-08-03 17:33:47 416
原创 算法的简单概况
1. 字典树(单词搜索树) Trie是个简单但实用的数据结构,通常用于实现字典查询。我们做即时响应用户输入的AJAX搜索框时,就是Trie开始。本质上,Trie是一颗存 储多个字符串的树。相邻节点间的边代表一个字符,这样树的每条分支代表一则子串,而树的叶节点则代表完整的字符串。和普通树不同的地方是,相同的字符串前 缀共享同一条分支。还是例子最清楚。给出一组单词,inn, int, a
2016-08-03 14:30:18 1659
转载 二维数组的查找(剑指offer)
数组: 可以说是最简单的一种数据结构,它占据一块连续的内存并按照顺序存储数据.创建数组时:我们需要首先制定数组的容量的大小,然后根据大小分配内存.即使我们只在数组中存储一个数字,也需要为所有的数据预先分配内存.因此数组的空间效率不是很好,经常会有空闲的区域没有得到充分的利用..... 由于数组中的内存都是连续的,于是我们可以根据下标在O(1)时间(直接检索下标获得存储的数据
2016-08-03 13:53:26 447
转载 两个链表的第一个公共节点(剑指offer)
题目:输入两个链表,找出它们的第一个公共节点.链表节点定义如下:struct ListNode{ int m_key; ListNode* m_pNext;}面试的时候,碰到这道题,我们的第一反应蛮力法:在第一个链表上顺序遍历每个节点,每遍历到一个节点的时候,在第二个链表上顺序遍历每个节点,每遍历到一个节点的时候,在第二个链表上顺序遍历每个节点,如果在第二个
2016-08-03 13:52:30 486
转载 有关海量数据的处理简单总结
本文转载与:http://my.oschina.net/winHerson/blog/209420第一部分、十道海量数据处理面试题1、海量日志数据,提取出某日访问百度次数最多的那个IP。首先是这一天,并且是访问百度的日志中的IP取出来,逐个写入到一个大文件中。注意到IP是32位的,最多有个2^32个IP。同样可以采用映射的方法, 比如模1000,把整个大文件
2016-08-01 21:30:02 543
转载 外排序-多路归并
本文转载:http://www.cnblogs.com/huangxincheng/archive/2012/12/19/2824943.html说到排序,大家第一反应基本上是内排序,是的,算法嘛,玩的就是内存,然而内存是有限制的,总有装不下的那一天,此时就可以来玩玩外排序,当然在我看来,外排序考验的是一个程序员的架构能力,而不仅仅局限于排序这个层次。 一:N路归并排序
2016-08-01 21:27:55 7441
空空如也
linux,进程控制块的数据结构(task_struct)
2016-05-10
关于tcp,udp中的问题
2016-04-15
关于栈区分配空间问题??不是说好的从高到底吗??
2016-04-10
TA创建的收藏夹 TA关注的收藏夹
TA关注的人