- 博客(15)
- 资源 (4)
- 收藏
- 关注
原创 linux socket网络编程详解
一、系统调用和应用编程接口在讨论网络通信之前,首先明确两个概念:系统调用(system call) 和 应用编程接口(Application Programming Interface,API)。操作系统使用 系统调用 机制来实现 在应用程序 与 操作系统 之间进行控制权传递。当某个应用进程启动了系统调用时,控制权就从应用程序传递给操作系统。操作系统执行某个内部
2015-08-27 23:45:10 1544
原创 linux进程环境及进程属性
进程是linux下资源管理的基本单元,每个进程有自己独立的运行空间。每个进程都有一个独立的进程控制块(PCB)来管理每个进程资源。进程的资源分为两大部分:内核空间进程资源 和 用户空间进程资源。其中,内核空间进程资源是指:PCB相关信息,即进程PID、PPID、UID等,包括进程控制块本身、打开的文件表项等等。简而言之,就是内核通过PCB可以访问到的资源。用户空间进程资源是
2015-08-25 21:12:29 2430
原创 面试题54——表示数值的字符串
题目描述请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串"+100","5e2","-123","3.1416"和"-1E-16"都表示数值。 但是"12e","1a3.14","1.2.3","+-5"和"12e+4.3"都不是。解题思路:这道题没什么别的技巧,按照数值的表示规则,逐个扫描字符串,看是否符合要求。数值有如下几种情况:1、
2015-08-19 09:56:54 910
原创 同步与异步的区别
多进程多线程系统中同步与异步的区别:1、同步:当一个进程在执行某个请求的时候,请求的信息需要等一段时间才能够返回,那么该进程就一直等待,直到请求的信息返回。2、异步:当一个进程在执行某个请求的时候,不必等待请求信息的返回,直接执行接下来的操作。不管其他进程的状态。当有消息返回时系统会通知进程进行处理,这样可以提高执行的效率。简单来说:同步需要等待,异步不需要等待
2015-08-15 15:23:01 943
原创 面试题_53——正则表达式匹配
题目描述请实现一个函数用来匹配包括'.'和'*'的正则表达式。模式中的字符'.'表示任意一个字符,而'*'表示它前面的字符可以出现任意次(包含0次)。 在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串"aaa"与模式"a.a"和"ab*ac*a"匹配,但是与"aa.a"和"ab*a"均不匹配解题思路从左到右,逐个匹配判断:1、若*(pattern
2015-08-13 09:27:35 1677
原创 C/C++知识要点6——定义只能在堆/栈上生成对象的类
在C++中,类的对象建立分为两种,一种是静态建立,如A a;另一种是动态建立,如A* ptr=new A;区别:静态建立一个类对象,是由编译器为对象在栈空间中分配内存,是通过直接移动栈顶指针,挪出适当的空间,然后在这片内存空间上调用构造函数形成一个栈对象。使用这种方法,直接调用类的构造函数。动态建立类对象,是使用new运算符将对象建立在堆空间中。这个过程分为两步,第一步是执
2015-08-11 09:32:54 1280
原创 LintCode_138——子数组和为零
题目:给定一个整数数组,找到和为零的子数组。你的代码应该返回满足要求的子数组的起始位置和结束位置。样例给出[-3, 1, 2, -3, 4],返回[0, 2] 或者 [1, 3].解题思路:依次求数组的前缀和,同时执行如下操作:假定当前位置是i,查找i之前位置的前缀和,是否存在j位置,使得,j位置的前缀和 等于 i位置的前缀和。若有,则j 到
2015-08-10 17:30:28 3227
原创 C/C++知识要点5——智能指针原理及自定义实现
智能指针概述:智能指针用来管理动态对象。其行为类似于常规指针,重要的区别是:它负责自动释放所指向的对象。C++ 11标准库提供两种智能指针:shared_ptr、unique_ptr区别是:shared_ptr允许多个指针指向同一个对象;unique_ptr则独占所指向的对象。另外,还有一种weak_ptr的伴随类,它是一种弱引用,指向shared_ptr所管理的对象。
2015-08-10 10:51:16 2619 1
原创 C/C++知识要点4——printf函数以及cout的计算顺序
printf函数的计算顺序:先从右到左压栈,然后从左到右出栈。例程:#include"stdio.h"int main(){ int arr[] = { 1, 2, 3, 4, 5 }; int *ptr = arr; printf("%d %d\n", *ptr, *(++ptr)); return 0;}输出:2 ,2计算顺序:先计算
2015-08-07 09:33:44 1787
原创 C/C++知识要点3——类成员函数的重载、覆盖和隐藏的区别
1、类成员函数的重载:重载:如果同一作用域内的几个函数名字相同但是形参列表不同,我们称之为重载。成员函数被重载的特征:(1)相同的范围(比如在同一个类中);(2)函数名字相同;(3)参数不同;(4)virtual 关键字可有可无。2、覆盖是指派生类函数覆盖基类函数,特征是:(1)不同的范围(分别位于派生类与基类);(2)函数名字相同;(3)参数相同;
2015-08-07 09:09:25 1115
原创 C/C++知识要点2——STL中Vector、Map、Set容器的实现原理
1、Vector是顺序容器,是一个动态数组,支持随机存取、插入、删除、查找等操作,在内存中是一块连续的空间。在原有空间不够情况下自动分配空间,增加为原来的两倍。vector随机存取效率高,但是在vector插入元素,需要移动的数目多,效率低下。注意:vector动态增加大小时,并不是在原空间之后持续新空间(因为无法保证原空间之后尚有可供配置的空间),而是以原大小的两倍另外配置一块较大的空间,然
2015-08-06 10:40:06 5983
原创 面试题41_和为连续序列
输出描述:输出所有和为S的连续正数序列。序列内按照从小至大的顺序,序列间按照开始数字从小到大的顺序。解题思路:设置small 和 big 前后两个指针,累加small->big之间和,是否为给定和。若是,则输出;若小于,则big后移,big++; cursum += big;若大于,则small后移,cursum -= small;small++;
2015-08-04 11:29:39 616
原创 面试题40_数组中只出现一次的数字
题目描述一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。解题思路:若是数组中只有一个数字出现一次,其余的数字都出现偶数次,那么直接将数组中所有的数进行异或运算,得到的最后的结果就是出现一次的数(出现奇数次的数字)但是,题目要求是有两个数出现一次,那么上述方法得到的结果是这两个数的一个异或结果。我们可以考虑:
2015-08-04 10:58:35 740
原创 C/C++ Prime学习要点1——实现memcpy库函数
实现一个Memcpy函数。Memcpy函数用于 把资源内存(src所指向的内存区域) 拷贝到目标内存(dest所指向的内存区域);拷贝多少个?有一个size变量控制拷贝的字节数。函数原型:void *memcpy(void *dest, void *src, unsigned int count);用法:(1)可以拷贝任何类型的对象,因为函数的参数类型是void*(未定义类型指针)
2015-08-04 09:16:23 1231
原创 面试题38_数字在排序数组中出现的次数
题目描述统计一个数字在排序数组中出现的次数。解题思路数组是排序的,所以重复出现的数字是相邻排列的。用二分查找算法,找到第一次出现的位置,和 最后一次出现的位置。判断第一次出现的位置条件为:当前数字的前一个是否与之相等,若是则继续查找,否则该位置就是第一次出现的位置。判断最后一次出现的位置条件为:当前数字的后一个是否与之相等,若是则继续查找,否则该位置就是最后一次出现的位置。
2015-08-03 00:08:51 1010
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人