- 博客(48)
- 资源 (13)
- 收藏
- 关注
原创 linux标准库红黑树的使用示例
内核提供的有红黑树的标准操作代码,结合自己得理解以及参考网上的使用实例,自己写了一个,此方法使用于快速数据。.h file:/* Red Black Trees (C) 1999 Andrea Arcangeli This program is free software; you can redistribute it and/or modify it unde
2016-03-23 22:34:37
559
原创 双向链表代码实例
一个双向链表的实例,把数据封装在结构中的data指针中,是的链表和数据各自独立。.h file#ifndef ListOper_H #define ListOper_H #include #include //--------------data结构体-------------------------typedef struct struct_data { int id
2016-03-23 22:28:27
427
原创 linux下红黑树使用实例
最近使用到红黑树写了一个电话本,使用的linux内核中的标准接口,然后加上了一些自己写的接口和测试程序,记录如下,方便后续使用,以下代码网上几乎都可以找到,只是根据自己所做的项目做了一点修正:rbtree.h/* Red Black Trees (C) 1999 Andrea Arcangeli This program is free software; you c
2016-01-19 23:17:45
1419
原创 自动监控脚本
最近写了一个script,需要具有监控单板是否断电或者重启的功能,通过log的打印实现监控:#!/bin/shalarmrate=28 # 备份目录的最大容量file_max_size=2 #1min # 每个日记的大小限制 1h =160log_dir=/home/log # 日记产出目录backup_dir=/home/backup # 日记备份目录
2015-08-10 22:58:57
533
原创 第一个驱动程序之中断处理
一,初始化工作并创建工作队列。概念:工作队列(work queue )是一种将工作推后执行的形式。我们把推后执行的任务叫做工作(work),描述它的数据结构为work_struct,这些工作以队列结构组织成工作队列(workqueue),其数据结构为workqueue_struct,而工作线程就是负责执行工作队列中的工作。使用场景:创建自己的工作队列来添加工作。step1:
2015-07-25 13:17:00
463
转载 第一个驱动程序之gpio配置实例
一:看电路图,查找datasheet以及ProgrammingGuid确定引脚及待时用的寄存器//实际引脚是:GE2_R XD1, 对应GPIO67。二:编码头文件 key_driver.h#ifndef __RALINK_GPIO_H__ #define __RALINK_GPIO_H__#include #include #include #
2015-07-25 10:25:52
1419
转载 第一个驱动程序之i2c驱动架构介绍
编写一个I2C设备驱动程序的工作可分为两部分,一是定义和注册I2C设备,即i2c_client;二是定义和注册I2C设备驱动,即i2c_driver。下面我们就以mini2440的I2C设备at24c08 EEPROM为例,介绍如何完成这两个工作。一、定义和注册I2C设备步骤1:用i2c_board_info保存I2C设备相关信息在Linux中,struct i2c_clien
2015-07-20 22:37:49
1237
转载 临界区锁和互斥对象锁对比介绍
在Win32平台上进行多线程编程,常会用到锁。下边用C++实现了互斥对象(Mutex)锁和临界区(CRITICAL_SECTION)锁,以加深理解和今后方便使用。代码已在VS2005环境下编译测试通过。Lock.h#ifndef _Lock_H#define _Lock_H#include //锁接口类class ILock{public: virtual ~I
2015-04-19 22:24:59
446
原创 使用tinyxml封装或解析xml形式字符串
有时封装一些SDK接口,但是一些入参的参数容易变动,如对不同设备的操作,他们的一些删选条件会不同,所以调用接口时其参数也不同。既然是sdk接口了就不能经常改动,所以对于易变的一些设备参数,在sdk上层我们封装为一个数据结构体,然后转化为一个一个xml形式的字符串,接着以字符串的形式传入sdk接口,最后在sdk接口函数中解析xml形式的字符串。这样有以下几个优点:1,保证了s
2015-03-21 23:13:12
3004
原创 事件对象控制线程
Step1:创建线程,然后挂起。CFTPCtr:m_pFTPMainThrd = (CFTPMainThrd*)CWinThread* AFXAPI AfxBeginThread(CRuntimeClass* CFTPMainThrd,THREAD_PRIORITY_NORMAL,0,CREATE_SUSPENDED,NULL);Step2:创建事件对象,然后等待事件对象消息。
2015-01-31 16:47:04
365
原创 VC中Rich Edit控件实现打印信息显示为指定颜色
1,特别说明:VC中在对话框上使用Rich Edit控件前一定要用AfxInitRichEdit()初始化RichEdit环境。2,代码实现: CHARFORMAT cf; ZeroMemory(&cf, sizeof(CHARFORMAT)); cf.cbSize = sizeof(CHARFORMAT); cf.dwMask = CFM_BOLD | CFM_COLOR |
2015-01-25 22:54:26
733
原创 位移运算符学习总结
在C语言中,涉及位移的运算符有2个,>>表示右移,而汇编指令中,SHL和SHR表示逻辑左移和逻辑右移,SAR和SAL表示算术左移和算术右移。其中,逻辑左移和算术左移都是寄存器二进制位整体向左移动,并在右边补0。而右移则不同,逻辑右移是整体向右移,并在左边补0,而算术左移则是根据原符号位的值补与其相同的值。怎么判断何时使用逻辑和算术位移呢?如果在位移运算符左边的变量是有符号数,如
2015-01-18 19:32:20
563
原创 MD5算法使用心得
最近了解了下MD5算法,以前觉得可能很复杂,一直没敢去学习了解,这次学习使用之后,认为这是一个很常用的东东,故总结下我使用的一些步骤,以示记录。 1,加密准则:只要文件的内容一致,使用加密算法所得加密密钥都会一致,否则不同。,2,一般使用的步骤(以xml操作为例)如下: 第一步:根据xml的操作,读取除加密秘钥之外的所有xml内容,我记录为csMyXmlContent;
2015-01-17 21:20:01
7977
转载 串口通信之项目实例一
最近有个项目,使用到了串口,所以就整理了下,总结记录下来。一,串口操作步骤:串口的操作可以有两种操作方式:同步操作方式和重叠操作方式(又称为异步操作方式)。同步操作时,API函数会阻塞直到操作完成以后才能返回(在多线程方式中,虽然不会阻塞主线程,但是仍然会阻塞监听线程);而重叠操作方式,API函数会立即返回,操作在后台进行,避免线程的阻塞。无论那种操作方式,一般都通过四个步骤来完成:
2015-01-08 20:12:46
1203
转载 红黑树学习终极篇
至此,红黑树内容基本学习完了,不过代码实现是个什么样子呢,这里转载网上搜到一篇blog:http://blog.youkuaiyun.com/yukid2012/article/details/40660633c代码实现,写的不错,之前看过,好像打印节点颜色有点问题,太晚了不仔细看了。。。#include #include typedef int EleType;typedef enum C
2015-01-07 23:16:25
412
转载 红黑树学习下篇
本篇讲述红黑树的删除,学完前面的三篇,应该发现红黑树真的很经典,删除是最复杂的的,也是最能考验一个人的逻辑思维能力的,我比较笨,学了大半天才搞明白怎么回事,好几处都搞蒙了,所以,我写这一篇的时候会把我自己的心得写一下,免得后学的童鞋和我一样多走一些绕绕。1,介绍几个此篇中使用到的概念:Z指向需要删除的节点,Y指向实质结构上被删除的结点,x指向顶替y的节点,w为x的兄弟节点,其中Y是Z的后继
2015-01-07 22:21:02
497
转载 红黑树学习中篇
本篇讲述红黑树的插入,学完前面的两篇,就拥有了二成功力,学完此篇则拥有五成功力,开始吧。。。 疑问:为什么插入的节点是红节点?答:红黑树的节点插入默认是节点为红色的,插入黑点会增加路径上黑点的数目,一定会破坏性质5;插入红点,当其父节点为黑色时,不影响平衡,继续保持红黑性质,当其父节点为红色时,可能破坏性质2(根节点是黑色的)、性质4(红色节点的子节点一定是黑色节点),需要进行修正。但
2015-01-07 21:59:40
523
原创 红黑树学习上篇
如果你已经掌握了红黑树前篇的内容,那么很高兴你已经具备了学习红黑树的资本。左旋转和右旋转是红黑树中为了调节红黑个数而设计的方案,所以,此篇主要讲解一下旋转问题。旋转是红黑树中最简单的东东,不过也是最基础的,由于涉及到红黑树的性质,所以先从学习红黑树的五个性质开始吧。1,红黑树的五个性质: 1)每个结点要么是红的,要么是黑的。 2)根结点是黑的。 3)每个叶结点,即空结点(
2015-01-07 21:32:27
585
转载 红黑树学习前篇
最近学习红黑树,个人觉得,作为一名程序员,一些经典的算法非常值得研究,他的思想他的操作对自己都是一个很好地补充学习。不过学习红黑树之前,必须要先学会二叉查找树,红黑树操作=二叉查找树操作+为符合红黑树性质所做的特殊修正。本文为红黑树学习前篇,内容主要参考:http://blog.youkuaiyun.com/yukid2012/article/details/40479067。自己做了一些修改,添加了
2015-01-06 23:43:56
578
转载 windbg定位线程死锁和句柄泄露
有异常处理程序定义处理引发的异常时,将调用该 UnhandledExceptionFilter 函数。 通常,该函数会将异常传递给在 Ntdll.dll 为文...没有异常处理程序定义处理引发的异常时,将调用该 UnhandledExceptionFilter 函数。 通常,该函数会将异常传递给在 Ntdll.dll 为文件其中捕获,并尝试处理设置。 在进程的内存快照所在某些情况下,可以看
2014-12-03 23:02:19
1940
原创 winDbg定位异常崩溃和线程死锁三步骤
第一步: 附件进程(Attach to process)或者直接打开执行进程,通过.dump /mf C:/dump.dmp保存dump文件;此时可以stop Debuging。第二步:设置符合文件路径和设置代码源路径;第三步:分析异常(!analyze -v -hang),通过process the threads查看进程,通过 ~进程号s 转换进程,通过!cs 地址 查看其堆栈。
2014-12-03 22:28:06
3218
原创 模板函数、拷贝构造函数使用总结
模板:经验一:今天写了一个模块函数,使用的环境是vc6.0,结果报了一个错误:error LNK2001: unresolved external symbol,网上查了一下,原来是模板函数现在大部分编译器还不支持定义和实现分离。经验二:工程里使用了几个同名函数,只是参数不同,代码的实现思想一致,但是具体处理有点小差别,想了很久感觉可以写成模板函数,但是就是写不出来,问了下旁边的同事,瞄了
2014-12-02 20:44:48
1223
转载 C++ socket实现获取本机IP&MAC
#include //该头文件定义了Socket编程的功能#include //该头文件声明了输入输出流函数#include //该头文件定义了一些通用函数#include //该头文件支持HTTP请求#include //该头文件定义了Windows的所有数据基本型态#include
2014-09-21 21:40:25
1489
原创 常用函数之指定目录下查询文件
一,结构体_finddata_t 介绍:struct _finddata_t {unsigned attrib; time_t time_create;time_t time_access; time_t time_write; _fsize_t size; char name[_MAX_FNAME];}; unsigned atrrib:文件属
2014-09-05 22:48:36
445
转载 进程间通信之命名管道
命名管道具有以下几个特征:(1)命名管道是双向的,所以两个进程可以通过同一管道进行交互。(2)命名管道不但可以面向字节流,还可以面向消息,所以读取进程可以读取写进程发送的不同长度的消息。(3)多个独立的管道实例可以用一个名称来命名。例如几个客户端可以使用名称相同的管道与同一个服务器进行并发通信。(4)命名管道可以用于网络间两个进程的通信,而其实现的过程与本地进程通信完全一致。实
2014-09-05 22:04:45
791
转载 进程间通信之异步管道
异步管道实现的流程图说明:1)。父进程是我们需要实现的,其中需要创建管道A,管道B,和子进程,整个实现流程分为4个操作。2)。管道A:输入管道3)。管道B:输出管道4)。操作A:把输入文件sample.in的数据写入输入管道(管道A)5)。操作B:子进程从输入管道中读取数据,作为该进程的加工原料。通常,程序的输入数据由标准的输入设备输入,这里实现输入重定向,即把输入管道作为输入
2014-09-05 00:01:12
739
转载 va_start、va_end、va_list的使用
va_start、va_end、va_list的使用1:当无法列出传递函数的所有实参的类型和数目时,可用省略号指定参数表void foo(...);void foo(parm_list,...);2:函数参数的传递原理函数参数是以数据结构:栈的形式存取,从右至左入栈.eg:#include void fun(int a, ...){int *te
2014-09-02 19:46:28
413
转载 进程间通信:使用file-mapping kernel object(文件映射内核对象)
A程序:#include #include #include #define BUF_SIZE 256TCHAR szName[]=TEXT("Global\\MyFileMappingObject");int main(){ HANDLE hMapFile; char * pBuf; hMapFile = CreateFileMapping( INV
2014-09-02 19:37:31
648
转载 MySQL之常用C API详述
2013-11-23 20:32299人阅读评论(0)收藏举报一、C API数据类型MYSQL:该结构代表1个数据库连接的句柄。不应尝试拷贝MYSQL结构。不保证这类拷贝结果会有用。MYSQL_RES: 该结构代表返回行的查询结果(SELECT, SHOW, DESCRIBE, EXPLAIN)。MYSQL_ROW:这是1行数据的“类型安全”表示。行是通过调用mysql_f
2014-09-02 19:24:36
462
转载 vc中ShellExecute的使用(调用外部程序)
有三个API函数可以运行可执行文件WinExec、ShellExecute和CreateProcess。CreateProcess因为使用复杂,比较少用。 WinExec主要运行EXE文件。如:WinExec(’Notepad.exe Readme.txt’, SW_SHOW); ShellExecute不仅可以运行EXE文件,也可以运行已经关联的文件。 首先必须引用shellap
2014-09-01 21:30:10
1056
转载 wininet实现ftp客户端关于传输进度的分析
wininet提供了接口FtpGetFile实现从ftp服务器下载文件;提供了接口FtpPutFile实现把文件上传到ftp服务器上。通过这两个接口,我们能够完成基本的ftp文件传输客户端功能。但是在传输的同时,我们希望知道当前大概传输了多少,传输完整个文件大概需要多长时间,当前进度是多少,大概还有多长时间才能传输完毕。 单纯依靠这两个接口,我们无法实现这个功能。仔细翻阅msdn,发现win
2014-08-10 12:21:19
964
转载 unix平台下ftp客户端c++实现实例
#ifndef CLIENT_H_#define CLIENT_H_#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include
2014-08-10 11:45:02
687
转载 vc6.0实现操作excle之下篇
2, 通过ODBC服务2.1,类和方法使用说明为使用CDatabase,构造一个CDatabase对象并调用它的OpenEx成员函数。这打开了一个连接。在接着构造CRecordset对象以操纵连接的数据源时,向CDatabase对象传递记录集构造程序指针。完成使用连接时调用Close成员函数并销毁CDatabase对象。Close关闭以前没有关闭的任何记录集。#inclu
2014-08-04 21:50:45
705
转载 vc6.0实现操作excle文件之上篇
最近写了一个小工具,使用到了vc6.0对excel的操作,搜集了些文件资料以及自己的的总结,记录下。这里共总结了两种对excle的操作,一种为通过excle对象,一种为通过ODBC服务;1, 通过excle对象1.1, excle对象使用类2. _Application:表示整个的Excel应用程序,包含一个工作簿集合3. Workbo
2014-08-04 21:39:20
972
转载 常用正则表达式
一、校验数字的表达式 1 数字:^[0-9]*$ 2 n位的数字:^\d{n}$ 3 至少n位的数字:^\d{n,}$ 4 m-n位的数字:^\d{m,n}$ 5 零和非零开头的数字:^(0|[1-9][0-9]*)$ 6 非零开头的最多带两位小数的数字:^([1-9][0-9]*)+(.[0-9]{1,2})?$ 7 带1-2位小数的正数或负数:^(\-)?\d+(\.\d{1,
2014-07-21 21:12:07
390
转载 常用函数之检测目录、多级目录创建
编写代码中经常回遇到一些常用的函数,这些函数并不是很容易用脑袋瓜子记录下来,为了以后更方便的使用且不再去做无用功,收集的函数暂以博客的形式记录下来。///检测一个目录是否存在,存在返回true,不存在返回false;bool fnDirIsExist(const string &strPath){ WIN32_FIND_DATA wfd; ZeroMemory(
2014-07-21 20:49:30
415
转载 关于 SHFILEOPSTRUCT
在Windows的shellapi文件中定义了一个名为SHFileOperation()的外壳函数,用它可以实现各种文件操作,如文件的拷贝、删除、移动等,该函数使用起来非常简单,它只有一个指向SHFILEOPSTRUCT结构的参数。使用SHFileOperation()函数时只要填写该专用结构--SHFILEOPSTRUCT,告诉Windows执行什么样的操作,以及其它重要信息就行了。SHFile
2014-07-18 00:07:45
523
ARM Cortex-M0权威指南-中文和英文两版-都带目录
2018-11-15
Windows系统编程之进程间通信
2014-09-05
ftp客户端源码
2014-08-02
ftp工作原理
2014-06-30
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人