2014年5月7日
摘要: 在C++中const变量定义时必须进行初始化,否则无法通过编译。初始化的方式有多种,可以通过字面值对其进行初始化,也可以通过变量对其初始化,或其他方式,只要能给const变量赋初值即可(当然初值应该有其意义)。例:int i = -1;const int ic1 = -1;const int ic2... 阅读全文
posted @ 2014-05-07 15:41 运动和行动 阅读(3628) 评论(0) 推荐(0) 编辑
  2014年4月26日
摘要: 编程之美一书中寻找发帖“水王“的扩展问题描述如下:统计结果表明,有3个发帖很多的ID,它们的发帖数码都超过了帖子总数目的N的1/4。你能从发帖ID列表中快速找出它们的ID吗?参考书中”超级水王“的求解方案,我们每次删除4个不同的ID(不管是否包含题设中的3个ID),那么在剩下的ID列表中,题设中的3... 阅读全文
posted @ 2014-04-26 19:44 运动和行动 阅读(351) 评论(0) 推荐(0) 编辑
  2014年4月18日
摘要: 守护进程一直后台运行,与终端脱离,一般负责周期性地执行系统任务,服务器应用一般以守护进程进行运行。实现一个守护进程主要分为5部:1.脱离父进程2.setsid(可以选择再次fork)3.umask4.close 打开的描述符5.chdir待续。。。。。。。。。。 阅读全文
posted @ 2014-04-18 23:20 运动和行动 阅读(138) 评论(0) 推荐(0) 编辑
  2014年4月17日
摘要: 浅析Linux下进程间通信:共享内存共享内存允许两个或多个进程共享一给定的存储区。因为数据不需要在客户进程和服务器进程之间复制,所以它是最快的一种IPC。使用共享内存要注意的是,多个进程之间对一给定存储区的同步访问。主要用到的函数有:shmget(),shmctl(),shmat(),shmdt()... 阅读全文
posted @ 2014-04-17 22:43 运动和行动 阅读(127) 评论(0) 推荐(0) 编辑
  2014年3月30日
摘要: 1. 已知一个递归算法的算法复杂度计算公式为T(n) = T(n/2) + n,则T(n)的算法复杂度为多少?解:O(n)T(n) = T(n/2) + n = T(n/4) + n/2 + n = T(n/8) + n/4 + n/2 + n...... =T(1) + ... + n/16 + n/8 + n/4 + n/2 + n当n取很大值时,T(n)就趋向于n有一个通用公式:详细推导点这里。2. 小组赛,每个小组有5支队伍,互相之间打单循环赛,胜一场3分,平一场1分,输一场不得分,小组前三名出线。平分抽签。一个队最少拿多少分就有理论上的出线希望。解:2分这题主要考察逻辑思... 阅读全文
posted @ 2014-03-30 23:03 运动和行动 阅读(274) 评论(0) 推荐(0) 编辑
  2014年1月6日
摘要: select与poll函数介绍在所有依从POSIX的平台上,select函数使我们可以执行I/O多路转接。传向select的参数告诉内核:1)我们所关心的描述符2)对于每个描述符我们所关心的状态(是否读一个给定的描述符?是否想写一个给定的描述符?是否关心一个描述符的异常状态?)3)愿意等待多长时间(可以永远等待,也可以等待一个固定量时间,或完全不等待)从select返回时,内核告诉我们:1)已准备好的描述符的数量2)对于读、写或异常这三个状态中的每一个,哪些描述符已准备好使用这些返回信息,就可以调用相应的I/O函数(一般是read或write),并且确知该函数不会阻塞。函数原型:#includ 阅读全文
posted @ 2014-01-06 23:01 运动和行动 阅读(196) 评论(0) 推荐(0) 编辑
摘要: ps是收集进程信息的重要工具。它提供的信息包括:拥有进程的用户、进程的起始时间、进程所对应的命令行路径、进程ID(PID)、进程所属的终端(TTY)、进程使用的内存、进程占用的CPU等。例如:$ psPID TTY TIME CMD8116 pts/3 00:00:00 bash8743 pts/3 00:00:00 psps命令通常结合一系列参数使用。如果不使用任何参数,ps将显示运行在当前终端(TTY)中的进程。第一列显示进程ID(PID),第二列是TTY(终端),第三列是进程启动后过去的时间,最后一列是CMD(进程所对应的命令)。上面的ps命令没有什么用处,因为它没有提供当... 阅读全文
posted @ 2014-01-06 00:06 运动和行动 阅读(520) 评论(0) 推荐(0) 编辑
  2014年1月5日
摘要: 原文链接:http://www.cnblogs.com/ggjucheng/archive/2012/01/08/2316692.html简介strace常用来跟踪进程执行时的系统调用和所接收的信号。 在Linux世界,进程不能直接访问硬件设备,当进程需要访问硬件设备(比如读取磁盘文件,接收网络数据等等)时,必须由用户态模式切换至内核态模式,通 过系统调用访问硬件设备。strace可以跟踪到一个进程产生的系统调用,包括参数,返回值,执行消耗的时间。输出参数含义root@ubuntu:/usr# strace cat /dev/null execve("/bin/cat", 阅读全文
posted @ 2014-01-05 22:58 运动和行动 阅读(285) 评论(0) 推荐(0) 编辑
摘要: STREAMS流机制基本概念STREAMS(流)是系统V提供的构造内核设备驱动程序和网络协议包的一种通用方法,对STREAMS进行讨论的目的是为了理解系统V的终端接口,I/O多路转接中poll(轮询)函数的使用,以及基于STREAMS的管道和命名管道的实现。流在用户进程和设备驱动程序之间提供了一条全双工通路。流无需和实际硬件设备直接会话,流也可以用来构造伪设备驱动程序。在流首(stream head)之下可以压入处理模块,这可以用ioctl命令实现。STREAMS模块是作为内核的一部分执行的,这类似于设备驱动程序。当构造内核时,STREAMS模块联编进入内核。STREAMS消息STREAMS的 阅读全文
posted @ 2014-01-05 19:54 运动和行动 阅读(343) 评论(0) 推荐(0) 编辑
摘要: 记录锁基本概念若两个人同时编辑一个文件,其后果将如何呢?在很多unix系统中,该文件的最后状态取决于写该文件的最后一个进程。但是对于有些应用程序(例如数据库),进程有时需要确保它正在单独写一个文件。为了向进程提供这种功能,商用unix系统提供了记录锁机制。记录锁的功能是:当一个进程正在读或修改文件的某个部分时,它可以阻止其他进程修改同一文件区。对于unix系统而言,"记录"该词并不恰当,更适合的术语可能是字节范围锁(byte-range locking),因为它锁定的只是文件中的一个区域(当然,也可能是整个文件)。POSIX.1 形式记录锁本文主要介绍POSIX.1的fcn 阅读全文
posted @ 2014-01-05 13:05 运动和行动 阅读(332) 评论(0) 推荐(0) 编辑