- 博客(159)
- 问答 (3)
- 收藏
- 关注
原创 atoi()函数的实现
atoi()函数的功能:将字符串转换成整型数;atoi()会扫描参数nptr字符串,跳过前面的空格字符,直到遇上数字或正负号才开始做转换,而再遇到非数字或字符串时('\0')才结束转化,并将结果返回(返回转换后的整型数)。写atoi函数的时候需要注意一下几点1. 字符串前的空白2. 字符串所表示数值的正负号
2016-08-18 14:05:50 2987
转载 约瑟夫环问题
约瑟夫环问题:一圈共有N个人,开始报数,报到M的人自杀,然后重新开始报数,问最后自杀的人是谁?如图:内环表示人排列的环,外环表示自杀顺序;上面N=41,M=3。最普通办法就是模拟整个过程:建一个bool数组,true表示此人还活着,false表示已经自杀。可以模拟整个过程[cpp] view plain copy #include using
2016-08-18 11:12:58 364
转载 二叉树的镜像 (剑指offer)!!!(两个有序链表的合并,链表的逆置)
面试题19:二叉树的镜像(来自《剑指Offer》)题目:请完成一个函数,输入一个二叉树,该函数输出它的镜像。二叉树结点的定义如下:[cpp] view plain copy print?struct BinaryTreeNode { int data; BinaryTreeNode *Left; BinaryTreeNod
2016-08-18 11:07:08 557
原创 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 491
原创 进程间通信
1,进程中的两种关系 进程同步与进程互斥 1,顺序程序特征(顺序性,封闭性,确定性,可再现性) 2,并发程序的特征(共享性,并发性,随机性) 互斥:由于进程间要求资
2016-08-16 14:22:46 422
转载 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 5215
原创 一个简单线程池的实现
什么是线程池???1,包含若干个线程,是线程的集合 线程池当中的线程个数不是越多越少,太多了会增加系统的开销。太少了又会降低并发量。 所以线程池当中的线程的个数有严格的要求 若干个线程通常都小于并发的任务量2,线程池中的线程用于执行大量的相对短暂的任务 当某一个时刻来了大量的并发任务时,我们要用若干个相对较少的线程来调度这些大量的任务。。。由于线程的 个数小于
2016-08-09 17:59:35 451
转载 字符串(替换空格-剑指offer!!!)
C/C++中:每个字符串都以字符'\0'作为结尾,这样我们就能很方便的找到字符串的最后尾部。但是由于这个特 点,每个字符串中都有一个额外字符的开销,我们要防止越界 为了节省内存,C/C++把常量字符串放到单独的一个内存区域。当几个指针赋值给相同的常量字符串时,它们实际上会指向相同的内存地址。但用常量内存初始化数组,情况却有所不同。我们来看看下面这个代码:#inc
2016-08-08 15:03:02 624
原创 POSIX条件变量(生产者,消费者)
POSIX条件变量1,当一个线程互斥的访问条件变量的时候,它发现这个变量当前的状态不满足这个线程得以继续执行的要求 就需要等待其它线程对该变量进行更改,直到满足它的要求,不然的话,它什嘛也不做。。。。。。。。。 等待条件的满足。这个时候呢,,,就需要用到条件变量 如上,一个全局变量n = 0; 两个线程,都有加锁机制,一旦进入临界区,当线程1进入临界区之后,那么
2016-08-07 23:49:10 950 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 1488
原创 线程的基本属性(分离,栈大小,保护区,竞争,调度并发)以及TSD特定数据
线程的属性: 我们知道,在创建一个线程的时候可以指定一个线程的属性,通过第二个参数来指定:pthread_attr_t *attr. 一般情况下,我们都将这个参数设置为空,表示这个线程使用的是默认属性 那么如果,我们要将线程属性设定为一个特定的值的话,这时候:我们就需要一个线程属性变量(类型:pthread_attr_t),这种类型的变量需要首先初始化后才能用,可以调用这个函数
2016-08-06 16:47:51 1041
转载 快排的优化(简直神乎其神了!!!)
本文转载于:http://www.blogjava.net/killme2008/archive/2010/09/08/quicksort_optimized.html quicksort可以说是应用最广泛的排序算法之一,它的基本思想是分治法,选择一个pivot(中轴点),将小于pivot放在左边,将大于pivot放在右边,针对左右两个子序列重复此过程,直到序列为空或者只
2016-08-06 00:35:40 9193 2
原创 为什么会引入线程(进程,优缺点,模型)!!!
1,为什么会产生或者引入线程呢???2,程序,进程,线程之间的区别???3,线程的优缺点,线程的模型(1:1,N:M,N:1)???
2016-08-05 20:14:49 18284 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 867
转载 Linux 僵尸进程
本文转载:http://www.cnblogs.com/hazir/p/zombie_process.html僵尸进程指的是那些虽然已经终止的进程,但仍然保留一些信息,等待其父进程为其收尸僵尸进程如何产生的?如果一个进程在其终止的时候,自己就回收所有分配给它的资源,系统就不会产生所谓的僵尸进程了。那么我们说一个进程终止之后,还保留哪些信息?为什么终止之后还需要保留这
2016-08-05 16:02:55 428
原创 初始FTP
FTP简介:1,文件传输协议FTP(File Transfer Protocol由RFC959描述)2,FTP设计的目的是为了不同主机之间高效的文件传输,能够屏蔽不同主机不同的文件系统的差异3,工作在TCP/IP协议族的应用层,传输层使用的是TCP协议,是基于客户/服务器模式工作的FTP所支持的文件类型(因为是在不同主机的不同文件系统之间进行数据传输,文件共享):1,A
2016-08-05 00:18:39 983
转载 旋转数组的最小数字(剑指offer)
题目:把一个数组最开始的若干个元素搬到数组的末尾,我们称为数组的旋转.输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素.例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1. 这道题的直观解法并不难,从头到尾遍历数组一次,我们就能找出最小的元素.这种思路的时间复杂度显然是O(N).但是这个思路没有利用输入旋转数组的特性,肯定达不到面
2016-08-03 17:33:47 428
原创 算法的简单概况
1. 字典树(单词搜索树) Trie是个简单但实用的数据结构,通常用于实现字典查询。我们做即时响应用户输入的AJAX搜索框时,就是Trie开始。本质上,Trie是一颗存 储多个字符串的树。相邻节点间的边代表一个字符,这样树的每条分支代表一则子串,而树的叶节点则代表完整的字符串。和普通树不同的地方是,相同的字符串前 缀共享同一条分支。还是例子最清楚。给出一组单词,inn, int, a
2016-08-03 14:30:18 1690
转载 二维数组的查找(剑指offer)
数组: 可以说是最简单的一种数据结构,它占据一块连续的内存并按照顺序存储数据.创建数组时:我们需要首先制定数组的容量的大小,然后根据大小分配内存.即使我们只在数组中存储一个数字,也需要为所有的数据预先分配内存.因此数组的空间效率不是很好,经常会有空闲的区域没有得到充分的利用..... 由于数组中的内存都是连续的,于是我们可以根据下标在O(1)时间(直接检索下标获得存储的数据
2016-08-03 13:53:26 460
转载 两个链表的第一个公共节点(剑指offer)
题目:输入两个链表,找出它们的第一个公共节点.链表节点定义如下:struct ListNode{ int m_key; ListNode* m_pNext;}面试的时候,碰到这道题,我们的第一反应蛮力法:在第一个链表上顺序遍历每个节点,每遍历到一个节点的时候,在第二个链表上顺序遍历每个节点,每遍历到一个节点的时候,在第二个链表上顺序遍历每个节点,如果在第二个
2016-08-03 13:52:30 498
转载 有关海量数据的处理简单总结
本文转载与:http://my.oschina.net/winHerson/blog/209420第一部分、十道海量数据处理面试题1、海量日志数据,提取出某日访问百度次数最多的那个IP。首先是这一天,并且是访问百度的日志中的IP取出来,逐个写入到一个大文件中。注意到IP是32位的,最多有个2^32个IP。同样可以采用映射的方法, 比如模1000,把整个大文件
2016-08-01 21:30:02 551
转载 外排序-多路归并
本文转载:http://www.cnblogs.com/huangxincheng/archive/2012/12/19/2824943.html说到排序,大家第一反应基本上是内排序,是的,算法嘛,玩的就是内存,然而内存是有限制的,总有装不下的那一天,此时就可以来玩玩外排序,当然在我看来,外排序考验的是一个程序员的架构能力,而不仅仅局限于排序这个层次。 一:N路归并排序
2016-08-01 21:27:55 7531
转载 C/C++中对象和变量的区别!!!
本文转载与:http://blog.csdn.net/yby4769250/article/details/7377526对象和变量这两个概念莫要搞乱,颈是颈,椎是椎,虽然两者都对应着一块内存,但是从不同的角度去理解内存就会产生不同的意义。变量:所谓变量就是一种定义,通过定义编译器将会开辟一段空间,并将这段内存空间和这个变量的名字捆绑在一起。从这个意思去理解,其实说白了:变
2016-07-31 11:38:05 3357 1
转载 Linux14.04下安装网易云音乐和搜狗输入法(太棒了!!!)
本文转载于:http://blog.csdn.net/tao_627/article/details/51535294注:本人比较喜欢挺音乐,一直用的是Linux版本,一直苦苦的用着网页版的网易云音乐,哎呀,反正不太好,不舒服,今天由于其他原因重装系统的 过程中,发现自带的输入法有很多问题,不能切换中文输入法,太难受了,就找,没想到,这么棒,竟然找到了,关于网
2016-07-30 20:50:06 6686
转载 进程和线程关系及区别
本文转载于:http://blog.csdn.net/yaosiming2011/article/details/442807971.定义进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位.线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.线程自己基本上不拥有系统资源,只拥有一点在
2016-07-29 19:00:16 271
转载 如何让类对象只在栈(堆)上分配空间?
本文转载于:http://blog.csdn.net/hxz_qlh/article/details/13135433昨天一个同学去网易面试C++研发,问到了这么一个问题:如何限制一个类对象只在栈(堆)上分配空间?一般情况下,编写一个类,是可以在栈或者堆分配空间。但有些时候,你想编写一个只能在栈或者只能在堆上面分配空间的类。这能不能实现呢?仔细想想,其实也是可以滴。在C++
2016-07-29 18:41:51 947
原创 UDP浅析!!!(客户-服务通信源码)
UDP协议的特点:1,无连接,也就是说:UDP内部并没有维护端到端的状态,这跟TCP是不一样的。UDP不需要三次握手,2,基于消息的数据传输服务,传输的是数据报,跟TCP基于字节流是不一样的,不会出现所谓的粘包问题,就是这些 数据报是有边界的,而TCP是没有边界的3,不可靠,表现在数据报可能会丢失,也可能会重复,也可能会乱序,缺乏流量控制所以说:一般情况下,U
2016-07-29 17:15:43 5051 1
原创 epoll与selectpoll的区别!!!
select,poll都可以来实现并发(select限制)1,一个进程所能打开的最大文件描述符的个数是有限的2,select中集合的限制(fd_set)FD_SETSIZEpoll:只有最大文件描述符的个数限制,而没有FD_SETSIZE限制而我们所能打开的最大文件描述符的个数,我们可以通过一个命令来修改:ulimit -n number但是这个number
2016-07-29 12:36:40 728 1
转载 舵机的工作原理和控制
控制信号由接收机的通道进入信号调制芯片,获得直流偏置电压。它内部有一个基准电路,产生周期为20ms,宽度为1.5ms的基准信号,将获得的直流偏置电压与电位器的电压比较,获得电压差输出。最后,电压差的正负输出到电机驱动芯片决定电机的正反转。当电机转速一定时,通过级联减速齿轮带动电位器旋转,使得电压差为0,电机停止转动。舵机的控制一般需要一个20
2016-07-27 00:25:40 8706
原创 stm32简说步进电机(有代码)!!!
步进电机(也称脉冲电机)是将电脉冲信号转变为角位移或线位移的开环控制元件。在非超载的情况下,电机的转速,停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载的变化,即给电机一个脉冲信号,电机则转过一个步距角。这一线性关系的存在,加上步进电机只有周期性的误差而无累积误差等特点,使得步进电机在速度,位置等控制领域的操作相对简单
2016-07-25 12:56:55 78929 20
原创 close和shutdown、套接字超时、timeout
close函数:终止数据传送的两个方向。。。。1,客户端A调用close函数,也就是说:socket(A)不能向socket(B)发送数据,也不能接收从B发送来的据。。。 当客户端A调用了close函数时(一般情况下:会发送一个FIN分节),对端read返回为0,但是这并不意味着对端 socket(B)不能向A发送数据,,,这也是允许的,,,(因为B收到FIN只
2016-07-23 14:35:15 1998
转载 一步一图一代码,一定要让你真正彻底明白红黑树 (July算法!!!)
一步一图一代码,一定要让你真正彻底明白红黑树 作者:July 二零一一年一月九日-----------------------------本文参考:I、 The Art of Computer Programming Volume III、 Introduction to Algorithms, Second EditionIII、The Annota
2016-07-21 19:16:40 2389
转载 递归的logN的优化(菲波那契数列,青蛙上台阶问题,母牛问题)!!!!
矩阵乘法 矩阵乘法是一种高效的算法可以把一些一维递推优化到log( n ),还可以求路径方案等,所以更是是一种应用性极强的算法。矩阵,是线性代数中的基本概念之一。一个m×n的矩阵就是m×n个数排成m行n列的一个数阵。由于它把许多数据紧凑的集中到了一起,所以有时候可以简便地表示一些复杂的模型。矩阵乘法看起来很奇怪,但实际上非常有用,应用也十分广泛。基本定义 它是这样定义
2016-07-21 10:03:19 1085
转载 从B 树、B+ 树、B* 树谈到R 树(转载)
本文转载自(写的真心太好了,,,,,):http://blog.csdn.net/v_JULY_v/article/details/6530142/从B 树、B+ 树、B* 树谈到R 树 作者:July、weedge、Frankie。编程艺术室出品。说明:本文从B树开始谈起,然后论述B+树、B*树,最后谈到R 树。其中B树、B+树及B*树部分由weedge完成,R 树部
2016-07-20 19:58:38 610
原创 二叉树初解(度,确定型,二叉排序,平衡二叉)!!!
1,如何确定一颗二叉树(唯一)???2,二叉树度的问题(叶子节点与度为2的节点加1)???3,二叉排序树的插入,删除,简单理解4,平衡二叉树的构建过程,,,,
2016-07-20 10:57:14 2314
原创 C++的简单总结(复制构造函数,深拷贝,前拷贝,默认属性)
类的三大属性:private,public,protected1,对于类的成员变量或者函数,缺省即为私有#include using namespace std;class A{ int y; //私有成员 int x; //私有成员
2016-07-17 18:56:04 3942
原创 小解继承!!!(公有继承,私有继承,保护继承)
继承:是面向对象程序设计的一个重要机制,该机制自动地为一个类提供来自另一个类的操作和数据结构,这使得 程序员只需在新类中定义已有类中没有的成员来建立新类。也就是说:新类不但可以共享原有类的属性, 并且具有新的特性,这样就形成了类的层次。单继承和多继承:单继承:如果一个派生类只有一个基类
2016-07-15 13:13:45 1864
原创 五种I/O,select
一个输入操作通常包括两个不同的阶段:1,等待数据准备好:2,从内核中向进程复制数据:对于一个套接字上的输入操作:1,等待数据从网络中到达。当所有的等待分组到达时,它被复制到内核中的某个缓冲区。2,数据从内核缓冲区复制到应用进程缓冲区。套接口的默认状态是阻塞的。这就意味着当发出一个不能立即完成的套接字调用时,其进程将被投入睡眠,等待相应操作完成。
2016-07-15 09:49:08 1712
原创 protues-秒表计时(8255,8253)(内含简单源码-数码管亮)
刚刚完成了课设,用protues实现仿真秒表计时,里面用到了一些芯片(8253,8255,8086),这里是我查到的一下东西,希望能帮到大家,,,RESPACK-8:一般是接在51单片机的P0口,因为P0口内部没有上拉电阻,不能输出高电平,所以要接上拉电阻。排阻就是好多电阻连载一起,他们有一个公共端。1端为公共端接VCC或地,看你是上拉还是下拉呢,其他接
2016-07-01 23:08:44 30451 5
空空如也
linux,进程控制块的数据结构(task_struct)
2016-05-10
关于tcp,udp中的问题
2016-04-15
关于栈区分配空间问题??不是说好的从高到底吗??
2016-04-10
TA创建的收藏夹 TA关注的收藏夹
TA关注的人