自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(216)
  • 资源 (34)
  • 收藏
  • 关注

转载 Linux进程模型

-------------原文链接:http://www.cnblogs.com/biyeymyhjob/archive/2012/08/01/2617884.html-----------------------------------Linux进程通过一个task_struct结构体描述,在linux/sched.h中定义,通过理解该结构,可更清楚的理解linux进程模型。       包含进

2015-01-31 09:52:25 2685 1

原创 数据结构基础(21) --DFS与BFS

DFS    从图中某个顶点V0 出发,访问此顶点,然后依次从V0的各个未被访问的邻接点出发深度优先搜索遍历图,直至图中所有和V0有路径相通的顶点都被访问到(使用堆栈). //使用邻接矩阵存储的无向图的深度优先遍历template void Graph::DFS(){ stack iStack; showVertex(0); vertexList[0]->wasVi

2015-01-14 15:54:52 2767 3

原创 数据结构基础(20) --图的存储结构

图的结构定义    图是由一个顶点集 V 和一个弧集 E构成的数据结构。     Graph = (V , E )   其中,E = {| v,w∈V 且 P(v,w)} 表示从 v 到 w 的一条弧,并称 v 为弧尾,w 为弧头。谓词 P(v,w) 定义了弧 的意义或信息。   由顶点集和边集构成的图称作无向图。   如果”弧”是有方向的,则称由顶点集和弧集构成的图为有向图。 邻接矩阵   定义

2015-01-14 15:50:08 2443 1

原创 数据结构基础(19) --堆与堆排序

完全二叉树 首先让我们回顾一下完全二叉树的两个性质:  性质1:具有n个结点的完全二叉树的深度为[logn](向下取整)+1。  性质2:若对含 n 个结点的完全二叉树从上到下且从左至右进行 1 至 n 的编号,则对完全二叉树中任意一个编号为 i 的结点:    (1) 若 i=1,则该结点是二叉树的根,无双亲,否则,编号为 [i/2](向下取整)的结点为其双亲结点;    (2) 若 2i>n,

2015-01-13 20:19:47 2789 1

原创 数据结构基础(18) --哈希表的设计与实现

哈希表    根据设定的哈希函数 H(key)和所选中的处理冲突的方法,将一组关键字映射到一个有限的、地址连续的地址集 (区间) 上,并以关键字在地址集中的“映像”作为相应记录在表中的存储位置,如此构造所得的查找表称之为“哈希表”。 构造哈希函数的方法1. 直接定址法(数组)  哈希函数为关键字的线性函数H(key) = key 或者 H(key) = a*key + b  此法仅适合于:地址集合

2015-01-13 20:10:50 11788 4

原创 数据结构基础(17) --二叉查找树的设计与实现

二叉排序树的特征二叉排序树或者是一棵空树,或者是具有如下特性的二叉树:    1.每一元素都有一个键值, 而且不允许重复;    2.若它的左子树不空,则左子树上所有结点的值均小于根结点的值;    3.若它的右子树不空,则右子树上所有结点的值均大于根结点的值;    4.它的左、右子树也都分别是二叉排序树。二叉排序树保存的元素构造template class Element{public:

2015-01-11 15:15:46 3116 1

原创 数据结构基础(16) --树与二叉树

树的基本术语 1.结点:{数据元素+若干指向子树的分支} 2.结点的度:分支的个数(子树的个数) 3.树的度:树中所有结点的度的最大值 4.叶子结点:度为零的结点 5.分支结点:度大于零的结点(包含根和中间结点) 6.(从根到结点的)路径:由从根到该结点所经分支和结点构成; 7.结点的层次:假设根结点的层次为1,则根的孩子为第2层,如果某节点在第L层,则其子树的根在L+1层。 8.树的深度:树中叶

2015-01-11 14:59:07 2685 1

原创 数据结构基础(15) --基数排序

基数排序是一种借助“多关键字排序”的思想来实现“单关键字排序”的内部排序算法。实现多关键字排序通常有两种作法:   最低位优先法(LSD)    先对K[0]{基数的最低位}进行排序,并按 K(0) 的不同值将记录序列分成若干子序列之后,分别对 K[1] 进行排序,..., K[d-1]依次类推,直至最后对最次位关键字排序完成为止。  最高位优先法(MSD)    先对 K[d-1]{基数的最高位

2015-01-11 10:57:22 4960 1

原创 数据结构基础(14) --链式队列的设计与实现

链式队列是基于单链表的一种存储表示, 其形状如下图所示:     (队列的队头指针指向单链表的第一个结点, 队尾指针指向单链表的最后一个结点, 注意没有无用的空[头/尾]节点)    用单链表表示的链式队列特别适合于数据元素变动比较大的情况, 而且不存在队列满而产生溢出的情况; 链式队列结点构造:[这次我们将节点构造成了类LinkQueue的嵌套类]struct ChainNode{ C

2015-01-10 20:37:23 2761 1

原创 数据结构基础(13) --链式栈的设计与实现

采用链式存储的栈成为链式栈(或简称链栈), 链栈的优点是便于多个栈共享存储空间和提高其效率, 且不存在栈满上溢的情况(因为链栈是靠指针链接到一起,只要内存够大, 则链栈理论上可以存储的元素是没有上限的);    与顺序栈相比, 由于顺序栈是采用的数组实现, 因此一旦数组填满, 则必须重新申请内存, 并将所有元素”搬家”, 而链栈则省略了这一”耗时耗力”的工作, 但却需要付出附加一个指针的代价; 

2015-01-06 19:38:16 3092 1

原创 数据结构基础(12) --双向循环链表的设计与实现

双向链表的操作特点:    (1) “查询” 和单链表相同;    (2)“插入” 和“删除”时需要同时修改两个方向上的指针。   但是对于双向循环链表则在表尾插入非常的迅速, 只需O(1)的时间,因为有指向前面的指针, 因此双向循环链表会很容易的找到位于表尾的元素,因此双向循环链表比较适用于频繁在表尾插入的情况.空链表:双向循环链表节点构造:class DoubleListNode{priv

2015-01-06 19:19:17 3233 1

原创 数据结构基础(11) --循环链表的设计与实现

循环链表:最后一个结点的指针域的指针又指回第一个结点的链表;    循环单链表与单链表的区别在于:表中最有一个节点的指针不再是NULL, 而改为指向头结点(因此要对我们原来的MyList稍作修改), 从而整个链表形成一个环.    因此, 循环单链表的判空条件不再是头结点的指针是否为空, 而是他是否等于头结点;    其实如果只是单纯的实现循环链表对单链表的性能提升是不明显的, 反而增加了代码上实

2015-01-05 20:50:12 3260 1

原创 数据结构基础(10) --单链表迭代器的设计与实现

为了向 STL 致敬(O(∩_∩)O~), 我们模仿STL中的list的迭代器, 我们也自己实现一个MyList的迭代器, 以供遍历整个链表的所有元素:首先:Node节点需要做如下修改(注意后缀有+的代码)//链表节点template class Node{ friend class MyList; friend class ListIterator; //+ te

2015-01-05 20:44:44 3187 2

原创 数据结构基础(9) --单链表的设计与实现(2)之高级操作

链表的链接:    将第二条链表的所有内容链接到第一条链表之后, 其完整实现代码与解析如下://链表的链接template void MyList::concatenate(const MyList &list){ if (isEmpty())//如果自己的链表为空 { first = list.first; return ; }

2015-01-05 20:35:04 2499 1

原创 数据结构基础(8) --单链表的设计与实现(1)之基本操作

链表简介数组的缺点:     1.元素插入:除了在数组的末尾插入元素之外,在数组的其他任何位置插入元素都需要进行数组元素的频繁移动(插入位置之后的元素都需往后移动), 时间复杂度约为O(N);     2.数组的删除:除了在数组的末尾删除元素之外,在数组的其他任何位置删除元素都需要进行数组元素的频繁移动(删除位置之后的元素都需往前移动), 时间复杂度也为O(N); 链表的特点:   由于在链表中插

2015-01-05 20:31:07 3402 2

原创 数据结构基础(7) --循环队列的设计与实现

队列    队列简称队, 也是一种操作受限的线性表, 只允许在表的一端进行插入, 而在表的另一端进行删除.其特点为”先进先出(FIFO)”,故又称为先进先出的线性表,简单队列如图所示: 循环队列    顺序队列有一个先天不足, 那就是空间利用率不高, 会产生”假溢出”现象,即:其实队列中还有空闲的空间以存储元素, 但我们在判断队列是否还有空间时, 队列告诉我们队列已经满了, 因此这种溢出并不是真正

2015-01-03 20:46:17 4029 1

原创 数据结构基础(6) --顺序栈的设计与实现

栈是一种只允许在一端进行插入或删除操作的线性表.其特点为:先进后出(FILO)/后进先出(LIFO); 栈 VS. 队列    栈和队列都是动态集合, 但在栈中, 可以去掉的是最近插入的那一个,:栈实现了一种后进先出(last-in, first-out)的策略;类似的, 在队列中, 可以去掉的元素总是在集合中存在时间最长的那一个:队列实现了先进先出(first-in, first-out)的策略

2015-01-03 20:07:46 3568 1

原创 数据结构基础(5) --归并排序

归并排序的基本思想:    将两个或两个以上的有序子序列”归并”为一个有序序列:假定待排序表含有n个记录, 则可以看成是n个有序的子表, 每个子表长度为1, 然后两两归并, 得到[n/2]个长度为2或1的有序表,; 再量量归并, ...., 如此重复, 直到合并成为一个长度为n的有序表为止, 这种排序方法称为2-路归并排序.如图为一个2-路归并拍下的一个示例:/**说明: 将有序的记录序列 in

2015-01-03 19:50:00 2892 1

原创 数据结构基础(4) --快速排序

快速排序是最流行的,也是速度最快的排序算法(C++ STL 的sort函数就是实现的快速排序); 快速排序(Quicksort)是对冒泡排序的一种改进。由C. A. R. Hoare在1962年提出。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数

2015-01-03 14:08:02 3152 3

原创 数据结构基础(3) --Permutation & 插入排序

Permutation(排列组合)排列问题: 设R = {r1, r2, ... , rn}是要进行排列的n个元素, Ri = R-{ri}; 集合X中元素的全排列记为Permutation(X), (ri)Permutation(X)表示在全排列Permutation(X)的每一个排列前加上前缀ri得到的排列.R的全排列可归纳定义如下: 当n=1时,Permutation(R)={r},r是集合

2015-01-01 11:44:23 2518 3

原创 数据结构基础(2) --顺序查找 & 二分查找

顺序查找适用范围: 没有进行排序的数据序列缺点: 速度非常慢, 效率为O(N)//实现template Type *sequenceSearch(Type *begin, Type *end, const Type &searchValue)throw(std::range_error){ if ((begin == end) || (begin == NULL) || (end

2015-01-01 10:44:25 3296 1

原创 数据结构基础(1) --Swap & Bubble-Sort & Select-Sort

Swap的简单实现//C语言方式(by-pointer):template bool swapByPointer(Type *pointer1, Type *pointer2){ //确保两个指针不会指向同一个对象 if (pointer1 == NULL || pointer2 == NULL) { return false; }

2015-01-01 10:36:24 2939 3

原创 重装Windows后修复Linux引导

装了双系统(Windows和Linux)的机器重新安装Windows后会导致Linux的引导丢失而无法进入原先的Linux系统[其原因是Windows会覆盖原先MBR中的Linux的BootLoader-GRUB]。这种情况可以通过修复引导而重新找回Linux。   以Ubuntu14.04为例;首先找到一张Linux的安装盘,放入光驱后重启电脑。进入BIOS让电脑从光盘启动,然后进入Live C

2014-10-20 10:23:09 7965

原创 gdb学习(二)[第二版]

查看运行时数据print - 查看变量值 ptype – 查看变量类型 #ptype i #ptype “aaa” 打印字符串”aaa”的类型 #ptype array 打印数组array的类型 #ptype main 打印main函数的类型 print array – 查看数组 #p arr1 #p arr1[2] 查看数组arr2第三个元素值 #p &arr1[2] 打印数组元素的地

2014-10-12 22:19:31 2985 1

原创 gcc学习(二)[第二版]

头文件与库文件1、概要 在使用C语言和其他语言进行程序设计的时候,我们需要头文件来提供对常数的定义和对系统及库函数调用的声明。 库文件是一些预先编译好的函数集合,那些函数都是按照可重用原则编写的。它们通常由一组互相关联的用来完成某项常见工作的函数构成。比如用来处理屏幕显示情况的函数(ncurses库)和数据库访问例程(dbm库)等。 2、使用库的优点: 1)模块化开发 2)可重用性 3)可维护性

2014-10-12 17:14:30 2775

转载 Linux程序分析工具介绍—ldd,nm

原文件链接:http://blog.csdn.net/statdm/article/details/7759100

2014-10-12 16:59:28 3070

原创 gcc学习(一)[第二版]

gcc简介1、 gcc是GNU Compiler Collection的缩写。最初是作为C语言的编译器(GNU C  Compiler),作者为Richard Stallman,是GNU项目的奠基者;现在已经支持多种语言,如C、C++、Java、Pascal、Ada、COBOL语言等 。 2、主要特征: gcc是一个可移植的编译器,支持多种硬件平台,甚至对Don Knuth 设计的 MMIX 这类

2014-10-12 12:56:22 5562 1

原创 gdb学习(一)[第二版]

概述 gdb是GNU debugger的缩写,是编程调试工具。 功能 1、启动程序,可以按照用户自定义的要求随心所欲的运行程序。 2、可让被调试的程序在用户所指定的断点处停住 (断点可以是条件表达式)。 3、当程序停住时,可以检查此时程序中所发生的事。 4、动态改变程序的执行环境。  示例:gcc -Wall -g simple.c -o simple #一定要记得加上-g选项,以便生成调试信息

2014-10-11 21:02:26 4346

原创 Makefile学习(三)[第二版]

make常用内嵌函数1、函数调用   $(function arguments) #$引用的结果就是函数生成的结果 2、Makefile下常用的函数 1)$(wildcard PATTERN) #匹配当前目录下的文件 例如:src=$(wildcard *.c) #匹配当前目录下所有的.c文件  2)$(patsubst PATTERN,REPLACEMENT,TEXT) #模式替换函数 例如:$

2014-10-10 18:09:04 2740

原创 Linux下的tree命令 --Linux下目录树查看

Linux下的tree命令--Linux下目录树查看  有时我们需要生成目录树结构,可以使用的有ls -R,但是实际效果并不好  这时需要用到tree命令,但是大部分Linux系统是默认不安装该命令的,需要自己安装一下;tree的常见用法: tree -a  #显示所有 tree -d  #仅显示目录 tree -L n  #n代表数字..表示要显示几层... tree -f  #显示完整路

2014-10-10 12:09:29 44108

原创 Makefile学习(二)[第二版]

复杂实例#示例1:在上一个示例的基础上再增加一个可执行文件03test[修改之处已标红].PHONY: clean all  CC = gcc CFLAGS = -Wall -gBIN = 01test 02test 03testSOURCES = $(BIN:=.c)OBJECTS = $(BIN:=.o) all: $(BIN) 01test: 01test.o02test: 02test.o

2014-10-10 11:23:05 2604

原创 Makefile学习(一)[第二版]

简介 1)make:利用 make 工具可以自动完成编译工作。这些工作包括:如果仅修改了某几个源文件,则只重新编译这几个源文件[make通过比对相应的.c文件与.o文件的时间];如果某个头文件被修改了,则重新编译所有包含该头文件的源文件。利用这种自动编译可大大简化开发工作,避免不必要的重新编译。 2)Mackfile:make工具通过一个称为 Mackfile 的文件来完成并自动维护编译工作。Ma

2014-10-10 11:13:27 3571

原创 Linux下top命令详解

Linux下top命令详解  top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器。top是一个动态显示过程,即可以通过用户按键来不断刷新当前状态.如果在前台执行该命令,它将独占前台,直到用户终止该程序为止. 比较准确的说,top命令提供了实时的对系统处理器的状态监视.它将显示系统中CPU最“敏感”的任务列表.该命令可以按CPU使用

2014-10-08 20:40:12 4321 2

原创 Shell编程入门(第二版)(下)

流程控制语句三、select/in[较少用]格式:[python] view plaincopy    select [变量] in [关键字]      do           command 1           ... ...           command n       done   #select把关键字中的每一项做成类似表单,以交互的方式执行do和done之间的命令  示例-

2014-09-29 12:00:12 2942

原创 Shell编程入门(第二版)(中)

变量测试语句-test作用:用来测试变量是否相等,是否为空,文件类型等。格式: test 测试条件 或 [] #范围:整数,字符串,文件   1)整数测试:  test int1 -eq int2  测试整数是否相等  test int1 -ge int2  测试int1是否>=int2  test int1 -gt int2  测试int1是否>int2  test int1 -le

2014-09-28 21:19:56 2766

原创 Shell编程入门(第二版)(上)

简单的示例Shell程序示例1.#!/bin/bash#This is to show what a shell script looks likeecho "Our first example"echo # This inserts an empty line in output.echo "We are currently in the following directory."/b

2014-09-28 18:46:04 3773

原创 Linux用户管理案例(第二版)

批量添加用户1、按照/etc/passwd文件格式编写用户信息文件users.info xiaofang01::1001:503::/home/xiaofang01:/bin/bash  #注意不能有空行,不然会报错 2、newusers   3、pwunconv #取消shadow password功能 4、以[用户名:密码]的格式编写密码文件passwd.info  5、chpasswd  6

2014-09-27 10:05:23 3289

原创 用户管理实用命令(第二版)

用户管理实用命令pwck #检测/etc/passwd文件 #如果对/etc/passwd进行了误操作,他就会提示 vipw #编辑/etc/passwd文件,他与VI的唯一不同,会锁定/etc/passwd文件 id #查看用户id和组信息 finger [username] #查看用户详细信息[有时需要自己安装] su 切换用户 #加了–同时会有环境变量与宿主目录的切换【加了- ,-左右都

2014-09-27 07:00:47 2658

原创 Linux用户管理命令(第二版)

添加用户1、useradd -设置选项 用户名 【-D 查看缺省参数 】 选项: u: UID 【必须是系统中没有的】 g:缺省所属用户组GID[最好有] G: 指定用户所属多个组【可以指定这个用户所属的部门等】  d: 宿主目录【可以任意指定】  s: 命令解释器Shell 【必须是包含在/etc/shells文件中的】 c:描述信息【可以用于描述该用户是谁,有什么权限,最好要有】  e

2014-09-26 21:04:03 2426

原创 Linux特殊权限分析(第二版)

SetUID[权限值=4]问题:为什么普通用户可以修改自己的密码?ll $(which passwd) 1、SetUID:当一个可执行程序/命令具有SetUID 权限,用户执行这个程序时,将以这个程序的所有者的身份执行。 2、加SetUID权限: chmod u+s [filename] 或 chmod 4755 [filename] #SetUID权限值=4  E.g. chmod u+s $(

2014-09-26 16:53:05 2982

TCPIP系列博客

计算机网络系列博客打包下载, 主要面向正在处于找工作阶段的本科生阅读

2015-04-08

epoll封装与测试代码

  在本部分我们实现一个较为好用实用的Epoll并发类, 由于实现代码与使用方式较简单, 因此就不在此赘述了, 下面我还使用了该类实现了一个基于Epoll的echo-server, 以演示该类的用法;   由于此处仅为Epoll类库的第一个版本, 因此错误之处必然会存在, 如果读者在阅读的过程中发现了该类库的BUG, 还望这篇博客的读者朋友不吝赐教; 而作者也会不断的更新该类库(主要更新代码我会发布到此处), 以处理新的业务需求;

2015-03-11

shutdown_close

  1.close终止了数据传送的两个方向;   而shutdown可以有选择的终止某个方向的数据传送或者终止数据传送的两个方向。

2015-03-09

Socket 类封装 改进版

实现中的几个注意点:   1 Socket类几个成员函数的访问权限为protected 使Socket类可以进行继承 但不允许私自使用;   2 TCPClient类的send receive方法使用了著名的writen readn 来源UNP 实现 解决了TCP的粘包问题   3 TCPSe

2015-03-09

est_for_shutdown_and_close源代码

  1.close终止了数据传送的两个方向;   而shutdown可以有选择的终止某个方向的数据传送或者终止数据传送的两个方向。   2.shutdown how=SHUT_WR(关闭写端)可以保证对等方接收到一个EOF字符(FIN段),而不管是否有其他进程已经打开了套接字(shutdown并没采用引用计数)。   而close需要等待套接字引用计数减为0时才发送FIN段。也就是说直到所有的进程都关闭了该套接字。

2015-03-09

test_for_shutdown_and_close

  1.close终止了数据传送的两个方向;   而shutdown可以有选择的终止某个方向的数据传送或者终止数据传送的两个方向。   2.shutdown how=SHUT_WR(关闭写端)可以保证对等方接收到一个EOF字符(FIN段),而不管是否有其他进程已经打开了套接字(shutdown并没采用引用计数)。   而close需要等待套接字引用计数减为0时才发送FIN段。也就是说直到所有的进程都关闭了该套接字。

2015-03-09

Socket-类封装

实现中的几个注意点:   1)Socket类几个成员函数的访问权限为protected, 使Socket类可以进行继承,但不允许私自使用;   2)TCPClient类的send/receive方法使用了著名的writen/readn(来源UNP)实现, 解决了TCP的粘包问题.   3)TCPServer端添加了地址复用, 可以方便TCP服务器重启;   4)添加了异常类,让我们在编写易出错的代码时,可以解放思想,不用一直考虑该函数调用出错会发生什么情况!

2015-02-28

echoServer(按行读取版本)

使用recv_peek实现按行读取readline(只能用于socket)

2015-02-27

echoServer定长包与添加报头版本

自定义应用层协议实践 发报文时:前四个字节长度+报文内容一次性发送; 收报文时:先读前四个字节,求出报文内容长度;根据长度读数据。 发送结构:

2015-02-27

基于多进程的P2P聊天程序

server端与client都有两个进程:   父进程负责从socket中读取数据将其写至终端, 由于父进程使用的是read系统调用的阻塞版本, 因此如果socket中没有数据的话, 父进程会一直阻塞; 如果read返回0, 表示对端连接关闭, 则父进程会发送SIGUSR1信号给子进程, 通知其退出;   子进程负责从键盘读取数据将其写入socket, 如果键盘没有数据的话, 则fgets调用会一直阻塞;

2015-02-27

echoserver多进程版

  我们的echo服务器最大的缺点就是无法支持多客户连接,即使客户端能够连接到服务器上,服务器也不为该客户做服务,(直接没什么反应),虽然链接是有的(也就是说,客户端是已经连接到服务器上的了,但是服务器就是不搭理你....)

2015-02-26

红黑树(RBtree)实现代码

一个基于C++的红黑树实现, RedBlackTree, C++, 二叉树, 平衡二叉树

2015-02-17

线程池(C/C++版)

C/C++ threadpool封装, 线程池, Linux, 多线程, pthread

2015-02-16

生产者消费者代码(C++版)

用Posix信号量, Posix互斥量, 解决生产者消费者问题(c++版)

2015-02-13

echoServer(thread版)源代码

将并发echo server改造成多线程形式   注意线程竞速问题的解决

2015-02-11

ShmFifo源代码(C++版)

  我们首先完成C语言版本的shmfifo(基于过程调用), 然后在此基础上实现C++版本的ShmFifo, 将1块共享内存与3个信号量(1个mutext信号量, 1个full信号量, 1个empty信号量)封装成一个类ShmFifo, 然后编写各自的测试代码

2015-02-10

shmfifo源代码(C语言版)

使用消息队列即可实现消息的先进先出(FIFO), 但是使用共享内存实现消息的先进先出则更加快速; 所涉及计数: 将申请到的共享内存作为一块缓冲区, 读/写进程不断的从其中读出/写入数据, 而读/写进程则就相当于生产者/消费者了, 因此,使用信号量sem_mutex(初值为1)来互斥访问共享内存, 使用sem_full(初值为共享缓冲区块数), sem_empty(初值为0)来同步两个进程;

2015-02-10

NetCat后门工具

Netcat,Windows后门工具,希望能够遵守相关法律,谢谢

2014-01-25

C++面向对象多线程编程.pdf

挺好的一本书,朋友给分享的,分享给大家,大家就不用到淘宝买PDF版得了

2013-11-12

C++ 多范型设计.pdf

挺好的一本书,朋友给分享的,分享给大家,大家就不用到淘宝买PDF版得了

2013-11-12

C++程序员必备常识.pdf

挺好的一本书,朋友给分享的,分享给大家,大家就不用到淘宝买PDF版得了

2013-11-12

C++ 编程思想 第2卷 实用编程技术.pdf

挺好的一本书,朋友给分享的,分享给大家,大家就不用到淘宝买PDF版得了

2013-11-12

C/C++语言硬件程序设计基于TMS320C5000系列DSP

挺好的一本书,朋友给分享的,分享给大家,大家就不用到淘宝买PDF版得了

2013-11-12

C 库函数 Word版

C 库函数 Word版 千辛万苦找打的 的确很有用

2013-10-25

GDAL1.8 已经编译完成

一个师兄发给的GDAL1.8 已经编译完成的 省去了大家自己编译繁琐的步骤 遥感 图像处理

2013-10-25

Java 程序员上班那点事儿

Java 程序员上班那点事儿 全本 清晰扫描版 花了两块大洋买的

2013-10-24

C++ 标准模版库

C++ STL (Standard Template Library标准模板库) 是通用类模板和算法的集 合,它提供给程序员一些标准的数据结构的实现如 queues(队列), lists(链表), 和 stacks(栈)等. C++ STL 提供给程序员以下三类数据结构的实现: 标准容器类 顺序性容器 vector 从后面快速的插入与删除,直接访问任何元素 deque 从前面或后面快速的插入与删除,直接访问任何元素 list 双链表,从任何地方快速插入与删除 关联容器 set 快速查找,不允许重复值 multiset 快速查找,允许重复值 map 一对多映射,基于关键字快速查找,不允许重复值 multimap 一对多映射,基于关键字快速查找,允许重复值 容器适配器 stack 后进先出 queue 先进先出 priority_queue 最高优先级元素总是第一个出列

2013-10-20

codeblocks12.10汉化包

code blocks 汉化插件 1 解压压缩文件 将codeblocks mo文件放到codeblocks根目录下: CodeBlocks share CodeBlocks locale zh CN (locale和zh CN没有的话自己新建) 2 重启codeblocks: "setting environment view internationnal "构选这个选项 下拉框中选中“chinese” ok">code blocks 汉化插件 1 解压压缩文件 将codeblocks mo文件放到codeblocks根目录下: CodeBlocks share CodeBlocks locale zh CN (locale和zh CN没有的话自己新建) 2 重启codeblocks: "setting environment view internationnal "构选这个选项 下拉 [更多]

2013-08-09

C_free_中文版

很好用的一个C/C++开发工具,安装是需要加载密匙,只要百度一下就可以.

2013-08-07

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除