- 博客(35)
- 资源 (24)
- 收藏
- 关注
原创 临界区,互斥量,信号量,事件的区别
临界区(Critical Section)仅允许一个线程同时访问同享资源,进程内使用。需要资源少,速度快。如果共享资源只使用于同一进程内,推荐使用临界区。互斥量(Mutex) 仅允许一个线程同时访问同享资源。创建互斥量可以命名,所以可跨进程使用。需要资源多于临界区。信号量(Semaphore)允许一个或多个线程中有限数量的线程同时访问共享资源,可跨进程使用。事件(Event
2015-11-02 20:22:56
488
1
原创 常用编码总结
GBK,GB2312 一个英文符号用一个字节存储,算一个字符,编码与ASCⅡ相同。一个汉字用两个字节存储,算两个字符。 Unicode(UCS) 一个符号集,没有规定二进制代码如何存储。一个符号用两个字节,算一个字符。 UTF-8 Unicode的实现方式之一一个符号用1到4个字节 UTF-8的编码规则很简单,只有二条: 1)对于
2015-10-15 16:32:05
434
原创 UML学习之类图关系
1.泛化(继承) 2.实现3.关联 是一种拥有的关系。4.聚合是整体与部分的关系,且部分可以离开整体而单独存在。5.组合是整体与部分的关系,但部分不能离开整体而单独存在。6.依赖是一种使用的关系。
2015-10-08 20:19:39
390
原创 我的第一个驱动程序
////////////////////////////HelloDDK.C//////////////////////////#include #define PAGEDCODE code_seg("PAGE")#define LOCKEDCODE code_seg()#define INITCODE code_seg("INIT")#define PAGEDDATA data_seg(
2010-02-03 17:55:00
749
原创 简单排序
#includevoid BubbleSort(int *num){ for(int i=1; i { for(int j=6-1; j>=1; j--) { if(num[j] > num[j+1]) { int temp = 0; temp = num[j]; num[j] = num[j+1]; num[j+1] = temp; } } }
2010-01-28 17:12:00
398
原创 队列实现
#includeclass node{public: int data; node *plink;};class List{public: node *head;public: List() { head = NULL; } ~List() { node *temp; while(head) { temp = head->plink; delete head; head =
2010-01-28 17:10:00
393
原创 栈实现
#includeclass node{public: int data; node *plink;};class List{public: node *head;public: List() { head = NULL; } ~List() { node *temp; while(head) { temp = head->plink; delete head; head =
2010-01-28 17:09:00
452
原创 链表实现
#includeclass node{public: int data; node *plink;};class List{public: node *head;public: List() { head = NULL; } ~List() { node *temp; while(head) { temp = head->plink; delete head; head =
2010-01-28 17:08:00
380
转载 linux常用目录的作用[转]
bin是binary的缩写。这个目录沿袭了UNIX系统的结构,存放着使用者最经常使用的命令。例如cp、ls、cat,等等。 /boot 这里存放的是启动Linux时使用的一些核心文件。 /dev dev是device(设备)的缩写。这个目录下是所有Linux的外部设备,其功能类似DOS下的.sys和Win下的.vxd。在Linux中设备和文件是用同种方法访问的。例如:/dev/hda代表第
2010-01-08 22:00:00
439
转载 linux常用命令[转]
LINUX常用命令(基础)1. man 对你熟悉或不熟悉的命令提供帮助解释eg:man ls 就可以查看ls相关的用法注:按q键或者ctrl+c退出,在linux下可以使用ctrl+c终止当前程序运行。2. ls 查看目录或者文件的属*,列举出任一目录下面的文件eg: ls /usr/manls -la.d表示目录(directory),如果是一个"-"表示是文件,如果
2010-01-08 21:59:00
449
转载 linux操作系统下c语言编程入门 [转]-----非常经典的文章
linux操作系统下c语言编程入门 整理编写:007xiong 原文:Hoyt等 (一)目录介绍 1)Linux程序设计入门--基础知识 2)Linux程序设计入门--进程介绍 3)Linux程序设计入门--文件操作 4)Linux程序设计入门--时间概念 5)Linux程序设计入门--信号处理 6)Linux程序设计入门--消息管理 7)Linux程序设计入门--线程操作 8)Linux程序设计
2010-01-08 14:27:00
3477
原创 vim文字补全插件word_complete的使用
把word_complete.vim文件放到vim的安装目录下的plugin中. 然后在vimrc文件中配置. let g:WC_min_len=3 当输入到第3个字母时才自动补全,自己可以改变.:autocmd BufEnter * call DoWordComplete() 每个buffer自动启用自动补全.
2010-01-01 17:51:00
2704
原创 vim插件taglist的使用
taglist可以显示文件中的宏,全局变量,函数等。并可以在用户点击tag时切换到tag定义的位置。 要使用taglist插件,必须满足:打开vim的文件类型自动检测功能;系统中装有ctags,并taglist能够找到此工具;你的vim支持system调用; 下载并解压taglist包后,里面包含doc,plugin目录.把这个目录中的文件拷贝到vim相应的目录中.
2010-01-01 17:35:00
1193
1
原创 使用vim编辑和打开多个文件
使用vim打开多个文件:vim file1 file2 file3 file4 ... 使用vim编辑多个文件1.下载vim的插件Buffer Explorer,解压.2.解压后的文件复制到docs和plugin.3.重启vim.使用"/be"就可以直接看到全部打开的文件列表.4.还可以使用"s"对文件列表进行排序
2009-12-30 20:37:00
519
原创 文件IO和标准IO的比较
文件IO和标准IO的比较文件IO是一种不带缓冲机制,需要自己建立缓冲区的低级IO。标准IO自己带有缓冲区。 各自使用的函数如下. 文件IOopenclosereadwritelseek 标准IOfopenfclosegetc,fscanf,fgetsputc,fputs,fprintffseek,ftell 进程默认产生的三个文件
2009-12-11 11:24:00
509
原创 linux的标准输入输出和重定向
标准输入输出: 我们知道,执行一个shell命令时通常会打开三个标准文件,即标准输入文件stdin,通常对应终端的键盘;标准输出文件stdout和标准错误文件stderr,这两个文件都对应终端的屏幕。进程将从标准输入文件中取得数据,将正常输出数据到标准输出文件,而错误信息送到标准错误文件中。 输入和输出重定向: 输入重定向是指把命令的标准输入重定向到指定的文件中。输出重
2009-12-06 14:54:00
1148
原创 我的第一个make file
终于弄好了第一个make file,写文章纪念一下. 程序写在test.c里面,用到了libmisc.a 我的Makefile: test: test.c libmisc.a(TAB) gcc tets.c libmisc.a -o test 说明:gcc前需要有一个TAB, 否则会报类似下面的错误Makefile:2: *** 遗漏分隔符 make
2009-12-04 20:36:00
375
原创 安装配置proftpd
终于在linux下弄好ftp了,虽然只是点皮毛,但我还是得把这个记下来,查了好久资料啊。 我选择的是proftpd,为什么选择这个,我也不知道,别人说这个好,呵呵。 从chinaunix下把安装文件下下来,解压,然后从终端进到解压后的目录。 #./configure --prefix = /usr/local/proftpd #make #make inst
2009-11-26 21:49:00
395
原创 vi/vim命令
vi file_name 打开文件i 切换到插入模式esc 切换到命令行模式: 切换到低行模式wq 退出vi并保存文件set nu 显示行数 下面是常用的编辑指令 删除文字 「x」:每按一次,删除光标所在位置的“后面”一个字符。 「#x」:例如,「6x」表示删除光标所在位置的“后面”6个字符。 「X」:大写的X,每按一次,删除
2009-11-19 14:30:00
424
原创 李开复-----成长的十个启示
1自信不失谦虚,谦虚不失自信。 2天赋就是兴趣,兴趣就是天赋。3思考比传道更重要,观点比解惑更重要。4我不同意你,但是我支持你。5挫折不是惩罚,而是学习的机会。6创新不重要,有用的创新才重要。7完美的工作:学习成长,兴趣,影响力。8用勇气改变可以改变的事情,用胸怀接受不可以改变的事情,用智慧分辨两者的不同。9最好的领导,让你的员工学习
2009-10-24 21:55:00
629
转载 static用法小结[转]
static关键字是C, C++中都存在的关键字, 它主要有三种使用方式, 其中前两种只指在C语言中使用, 第三种在C++中使用(C,C++中具体细微操作不尽相同, 本文以C++为准). (1)局部静态变量 (2)外部静态变量/函数 (3)静态数据成员/成员函数 下面就这三种使用方式及注意事项分别说明 一、局部静态变量 在
2009-10-15 18:02:00
383
转载 堆和栈的区别(转过无数次的文章)[转帖]
一、预备知识—程序的内存分配 一个由C/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其 操作方式类似于数据结构中的栈。 2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回 收 。注意它与数据结构中的堆是两回事,分配方式倒是
2009-10-09 10:25:00
428
转载 指针与数组的区别与联系[完整版][转帖]
指针与数组的区别与联系[完整版]2008-05-02 20:501.把数组作为参数传递的时候,会退化为指针数组名作为函数形参时,在函数体内,其失去了本身的内涵,仅仅只是一个指针; 很遗憾,在失去其内涵的同时,它还失去了其常量特性,可以作自增、自减等操作,可以被修改。 所以,数据名作为函数形参时,其全面沦落为一个普通指针!它的贵族身份被剥夺,成了一个地地道道的只拥有4个字
2009-10-07 10:21:00
1640
转载 指针和引用的区别[转帖]
引用是一种没有指针语法的指针.与指针一样,引用提供对对象的间接访问.--《c++ primer》p29虽然引用也可以被用作一种指针,但是象对指针一样用一个对象的地址初始化一个引用却是错误的。例如:int i=0;int &refi=i; //ok,refi指向一个i的引用//int &refi=&i; 错误,不能用指针初始化引用一旦引用已定义,它就不能再指向其他的对象(这也是为什么必须要被初始化的
2009-10-04 16:39:00
568
原创 float与double类型的内存分布,精度和范围
float与double类型的内存分布,精度和范围 内存分布: C/c++的浮点数据类型有float和double两种。 float大小为4字节,内存中的存储方式如下:符号位(1bit)指数(8bit)尾数(23bit) double大小为8字节,内存中的存储方式如下:符号位(1bit)指数(11bit)尾数(52bit) 符号位决定浮点数的正负,0正1负。指数和
2009-09-22 10:01:00
8373
原创 文件选择对话框,文件夹浏览
文件选择对话框,文件夹浏览 char szInitPath[MAX_PATH]={0}; strcpy(szInitPath,g_strOrigPath); if(m_bIsFile) { CFileDialog filedlg(TRUE,NULL,NULL,OFN_FILEMUSTEXIST|OFN_ALLOWMULTISELECT,"Files(*.*)|*.*||"); file
2009-09-19 09:59:00
940
原创 显示文件或文件夹的属性
SHELLEXECUTEINFO ShExecInfo ={0};ShExecInfo.cbSize = sizeof(SHELLEXECUTEINFO);ShExecInfo.fMask = SEE_MASK_INVOKEIDLIST ;ShExecInfo.hwnd = NULL;ShExecInfo.lpVerb = "properties";ShExecInfo.lpFile = "c:/
2009-09-19 09:58:00
590
原创 如何在用户区显示一张图片
如何在用户区显示一张位图 显示一张位图,基本的有以下三种形式:一、位图资源的显示(设资源ID为IDB——BITMAP1程序如下){ CBitmap bitmap; CBitmap* pOldBitmap; CDC MemDC; MemDC.CreateCompatibleDC(&dc); ///建立与显示设备兼容的内存设备场境 bitmap.LoadBitmap(I
2009-09-19 09:57:00
457
原创 16进制转10进制
16进制-->10进制计算示例:1EBB-0-7=11;11*1=11;E-0-7=14;11*16=224;1-0=1;1*16*16=256;256+224+11=491就是10进制程序代码:unsigned long CFunPowTestDlg::strX2dwdD(CString strNum){ char* pch; int iNumLength = strNum.
2009-09-19 09:53:00
811
原创 通配符算法
// ?代表一个字符,*代表n个字符 BOOL WildCard(CString strWildCard, CString strTestText, BOOL &bMatch){ if(strWildCard.IsEmpty() && strTestText.IsEmpty()) { bMatch = TRUE; return TRUE; } else if(strWildCard.I
2009-09-19 09:51:00
742
转载 技术以外的功夫(转贴)
记得看过冯仑的“赚钱以外的功夫”有感而发,写写我们IT人技术以外的功夫。 有时候发现做技术做长了,很多的人的性格都会发生变化,变得内向,变得封闭。有的会发现市场团队的开会,大家都你一言我一语,踊跃发言,争相斗艳。而有的时候程序员开会要么一声不吭,要么就会变成牢骚会,这需求不好,那个做法不对。 我们为何不换个角度看问题或者处理问题呢:我觉得如果这么做可能更好,如果那么做可以
2009-09-16 09:48:00
451
转载 设计log函数库的几个要点(转贴)
文章出处:http://www.limodev.cn/blog作者联系方式:李先静 只要留意一下大项目的源码,你会发现,几乎无一例外的包括一个log模块。它的功能很直观:记录一些程序运行时信息,多数情况是用来辅助debug的。大项目都有一套的log的函数,在它的基础上开发,调用它提供的Log函数就行了,比如linux内核、apache等。也有开源log函数库,可以直接拿过用。这里,我们并不鼓励重新
2009-09-15 15:05:00
1228
1
原创 计算机名和ip的转换
通过计算机名获得ipCString GetHostIP(LPCSTR szHostName){ CString csIP; WSAData wsaData; WSAStartup(MAKEWORD(2, 0), &wsaData); HOSTENT *lpHostEnt = gethostbyname(szHostName); int m_IPNum = 0; for(int
2009-09-15 14:47:00
874
原创 函数调用规范
函数调用规范是指进行一次函数调用时所采用的传递参数的方法,返回值的处理以及调用堆栈的清理.Microsoftc/c++语言中采用了五中调用规范,分别是_cdecl,_stdcall,_fastcall,thiscall和nake.每一种调用都是利用eax返回,如果函数返回值是64位的,则利用edx:eax返回. 各种调用规范的参数传递方法和调用堆栈清理如下:_cdecl 堆栈清理者(
2009-09-15 14:39:00
466
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人