- 博客(33)
- 资源 (1)
- 收藏
- 关注
原创 STL list链表的用法详解
本文以List容器为例子,介绍了STL的基本内容,从容器到迭代器,再到普通函数,而且例子丰富,通俗易懂。不失为STL的入门文章,新手不容错过! 0 前言 1 定义一个list 2 使用list的成员函数push_back和push_front插入一个元素到list中 3 list的成员函数empty() 4 用for循环来处理list中的元素 5 用STL
2014-08-11 15:56:55 432 1
转载 PF_RING实现分析
内核版本:Linux 2.6.30.9PF_RING版本:4.1.0最近看了一个PF_RING的实现,看了个大概,发上来大家讨论讨论,共同学习。一、什么是PF_RINGPF_RING是一个第三方的内核数据包捕获接口,类似于libpcap,它的官方网址是:http://www.ntop.org/PF_RING.html二、为什么需要PF_RING一切为了效率,
2014-07-30 11:29:39 821
转载 unix下的cc命令
多数UNIX平台都通过CC调用它们的C编译程序.除标准和CC以外,LINUX和FREEBSD还支持gcc. 基本的编译命令有以下几种: -c 编译产生对象文件(*.obj)而不链接成可执行文件,当编译几个独立的模块,而待以后由链接程序把它们链接在一起时,就可以使用这个选项,如: $cc -c hello.c ===> hello.o
2014-07-25 14:27:00 1081
转载 USB协议
USB协议 2011-07-28 15:26:08| 分类: USB|举报|字号 订阅一 枚举过程:◆ 用户将一个USB设备插入USB端口,主机为端口供电,设备此时处于上电状态。◆主机检测设备。◆集线器使用中断通道将事件报告给主机。◆主机发送Get_Port_Status(读端口状态)请求,以获取更多的设备信息。◆集线器检测设
2014-07-24 17:38:39 482
转载 Windows平台下libnet的编译、安装以及使用
这两天开始搞网络课程设计,要用到libnet去构造数据包。又因为是做某个网络游戏的分析,所以得在windows下面做。于是开始倒腾。先从sourceforge上下载了libnet 0.10.11版,用于Windows的是个zip包,然后解压出来放桌面上。在几个文件夹里翻翻,看了看readme,发现丫居然要手动编译。还好已经有批处理写好了直接用就行。按照readme里面的说法,我把b
2014-07-07 23:26:12 4603
转载 Struts框架原理分析之我见
struts是早期的成熟MVC前端控制层框架,具有诸多优点,近两天又系统了研究了一下框架的原理,希望能够从原理上研究一下struts框架的实现思路。也就是说如果理解了这些原理的相关应用技术,就可以自己写出一个山寨版的struts了,当然根据水平的不同,写出的框架的健壮性、扩展性、重用性肯定会相差很多的。 struts的有两个控制器,分别
2014-05-27 09:33:49 516
转载 寄存器定义
寄存器是中央处理器内的组成部分。寄存器是有限存贮容量的高速存贮部件,它们可用来暂存指令、数据和位址。在中央处理器的控制部件中,包含的寄存器有指令寄存器(IR)和程序计数器(PC)。在中央处理器的算术及逻辑部件中,包含的寄存器有累加器(ACC)。 寄存器是内存阶层中的最顶端,也是系统获得操作资料的最快速途径。寄存器通常都是以他们可以保存的位元数量来估量,举例来说,一个 “8 位元寄存器”或 “
2014-03-14 14:39:11 2143
转载 KeServiceDescriptorTable 结构及获取
KeServiceDescriptorTable 结构 KeServiceDescriptorTable:是由内核(Ntoskrnl.exe)导出的一个表,这个表是访问SSDT的关键,具体结构是 typedef struct ServiceDescriptorTable { PVOID ServiceTableBase; PVOID ServiceCounterTabl
2014-03-14 14:29:44 3865
转载 VC读写注册表实现程序自启动的实现源代码
VC读写注册表实现程序自启动的实现源代码本页内容为:VC读写注册表实现程序自启动的实现源代码,该文章本站转载自网络,如有侵权请告之,我们将会及时将其删除,其正文内容如下://写入注册表,开机自启动 HKEY hKey; //找到系统的启动项 LPCTSTR lpRun = "Software\\Microsoft\\Windows\\CurrentVersion\\Ru
2014-03-08 17:14:25 903
转载 RTLCOPYMEMORY与RTLMOVEMEMORY
RtlCopyMemory和RtlMoveMemory都是内存复制。其区别是,RtlCopyMemory非重叠复制,而RtlMoveMemory是重叠复制,具体解释如下: ABCD分别代表三段内存的起始地址和终止地址。如果需要将A到C段的内存复制到B到D段内存上,这是B到C段的内存就是重叠部分。RtlCopyMemory函数的内部实现方法是依靠memcpy函数实现的。根据C99
2014-03-06 14:03:26 1348
原创 CTL_CODE定义中Method的说明
CTL_CODE定义中有一个Method域,该域的功能意义是定义用于与在驱动程序中获取应用程序数据缓冲区的地址方式。如果你看了我前边的文章,你可以看到在DeviceIoControl的使用说明中对DeviceIoControl参数进行描述中关于lpInBuffer 和lpOutBuffer 的描述。简单的说,Method域就是定义了lpInBuffer 和lpOutBuffer 缓冲区在驱动程
2014-03-06 11:29:00 593
原创 驱动程序的初始化与清除
驱动程序的DriverUnload例程主要负责删除设备与取消符号连接,同时也可释放在DriverEntry中所分配的资源。当数据包捕获驱动程序卸载时,操作系统调用NPF_Unload函数。调用IoDeleteSymbolicLink函数删除符号连接,调用IoDeleteDevice函数删除设备对象,并调用NdisDeregisterProtocol函数从NDIS中取消注册,并释放各相关资源。
2014-03-05 10:30:02 1205
转载 Windows内核函数(1) - 字符串处理函数
.ASCII字符串和宽字符串打印一个ASCII字符串:CHAR* string = “Hello”;KdPrint((“%s\n”, string)); //s为小写 打印一个宽字符字符串WCHAR* string = L”Hello”;KdPrint((“%S\n”,string)); //s为大写
2014-03-05 10:22:22 780
转载 VC编程实现动态截获并显示窗口DC
我在网上看到很多屏幕截取的文章,相信大家也看过不少。人类每一次的进步总是建立在别人的基础之上,我今天要做得是如何将一个窗口动态地显示在另外一个窗口上。 方法很简单,核心算法是要完成对一个窗口DC显示到另外一个窗口的DC,为了方便代码的重用,我特地把它放到一个自己编写的函数: BOOL CShow_WindowDCView::Show_WindowDC(CWnd *pW
2014-02-28 15:00:06 504
转载 实现进程监视清除多余进程
创建多进程处理程序的时候,需要对多进程进行监视,例如QQ启动多了,内存很卡,就得清除一些多余进程。详细请见代码分析,实现进程监视与清除多余进程#include "stdafx.h" #include "GetAllInfo.h" #include "GetAllInfoDlg.h"
2014-02-28 14:57:21 579
转载 VC编程实现内核方法实现进程保护
《Windows Rootkit开发初步》这篇文章大致讲地是Rootkit实现进程隐藏,当时我受益匪浅。后来看到这期另外一篇文章名为《木马编程DIY之线程守护》这篇文章,提到了一个双进程实现进程守护的方法。不过他的引言里提到了Icesword的一种HOOK系统底层函数的方法,但是没有细讲。然后我查询很多资料加上自己的研究,试验成功了这个方法。代码原理和Rootkit文章的原理类似,不过我稍加改进更
2014-02-28 14:43:51 794
原创 VC判断系统和进程是64位还是32位
//判断操作系统是64位还是32位//返回TRUE位64位,返回FALSE位32位///////////////////////////////////////////////////////////////////////////////////////方法一:BOOL IsWow64() { typedef BOOL (WINAPI *LPFN_
2014-02-27 10:43:15 951
原创 strcpy和memcpy的区别
strcpy和memcpy都是标准C库函数,它们有下面的特点。strcpy提供了字符串的复制。即strcpy只用于字符串复制,并且它不仅复制字符串内容之外,还会复制字符串的结束符。已知strcpy函数的原型是:char* strcpy(char* dest, const char* src);memcpy提供了一般内存的复制。即memcpy对于需要复制的内容没有限制,因此用途更广。
2014-02-27 09:32:44 403
原创 获取硬盘的详细信息
用到的常量及数据结构有以下一些:// IOCTL控制码// #define DFP_SEND_DRIVE_COMMAND 0x0007c084#define DFP_SEND_DRIVE_COMMAND CTL_CODE(IOCTL_DISK_BASE, 0x0021, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACC
2014-02-26 17:34:09 840 1
原创 DeviceIOControl实战
实战DeviceIoControl 之一:通过API访问设备驱动程序Q 在NT/2000/XP中,我想用VC编写应用程序访问硬件设备,如获取磁盘参数、读写绝对扇区数据、测试光驱实际速度等,该从哪里入手呢?A 在NT/2000/XP中,应用程序可以通过API函数DeviceIoControl来实现对设备的访问—获取信息,发送命令,交换数据等。利用该接口函数向指定的设备驱动发送正确
2014-02-24 14:00:27 904
原创 归并排序
合并算法的基本步骤如下所示: 1)把0~length-1的数组分成左数组和右数组 2)对左数组和右数组进行迭代排序 3)将左数组和右数组进行合并,那么生成的整个数组就是有序的数据数组代码:
2014-02-21 14:51:51 340
原创 快速算法
快速算法原理: 1、 判断输入参数的合法性 2、把数组的第一个数据作为比较的原点,比该数据小的数据排列在左边,比该数据大的数据排列在右边 3、按照(2)的方法分别对左边的数组和右边的数据进行和(2)一样的数据排列编程过程: a)首先,判断数据的合法性? void isLegal(int array[],int
2014-02-21 09:11:45 637
转载 目标跟踪小结
一、引言:在需要监控的环境里,如何能够判断出进入特定区域的目标,并且能够跟踪目标的轨迹。分为两种情况:一是静态背景下的目标跟踪;二是动态背景下的目标跟踪。二、静态背景下的目标跟踪方法 1、单目标:目标跟踪还可以分为单目标的跟踪和多目标的跟踪。单目标的静态背景下的目标跟踪指的是摄像头是固定在某一方位,其所观察的视野也是静止的。通常采用背景差分法,即先对背景进行建模,然后从视频流中
2014-02-19 16:17:58 875
原创 闪屏图形特技效果的实现之关键源代码
在程序实际开发中,闪屏是我们经常用到的。如果程序初始化要一些时间,设计闪屏更加有必要,不但使你的程序也漂亮,还能在上面写上你的版本信息。好处是多多的。在VC++6.0组件库中有一个splash screen闪屏组件,可以添加到程序中。但是初学者打开源代码学习时,里面函数太多,一时之间也搞不明白。而且显示的闪屏很呆板。为了使初学者明白,我搞了一个很简单的类,里面只有二个函数,结构很清晰。一看就明白,
2014-02-19 14:04:07 1034
转载 信号量机制
一、信号量的定义?交通灯的作用是什么?我们如何通过交通灯的指示来判断是否能通过?信号量,也叫信号灯,是一个确定的二元组(S,Q),其中S是个具有非负初值的整型变量,且S的值只能由定义在信号量上的P操作原语和V操作原语来改变,而Q是个初始状态为空的队列。记录型信号量是一个记录型的数据结构,包含两个数据项,一个是计数值域,另一个是等待该信号量的进程队列首指针域。记录型信号量结构可以
2014-02-18 11:01:17 2046
转载 Math.random() 及其相关函数的详细介绍
Math.random()该Javascript示例解释:这个示例用到了Math.random(),这个函数返回值是一个大于等于0,且小于1的随机数Random 函数在flash里是非常有用的,可以生成基本的随机数,创建随机的移动,以及随机的颜色和其他更多的作用。在下面这个例子中当你每次按下按钮就会显示一 个从-100到100的随机数,这个教程将解释如何做出这个例子以及如何
2013-11-27 21:30:08 744
转载 openCV学习笔记-- 图像剪切
图像的剪切有多种方法,其中一种是使用ROI的方法 第一步:将需要剪切的图像图像不部分设置为ROIcvSetImageROI(src , cvRect(x,y,width,height)); 第二步:新建一个与需要剪切的图像部分同样大小的新图像cvCreateImage(cvSize(width,height),IPL_DEPTH,nchannels); 第三步:将源
2013-11-07 15:28:00 742
原创 人脸检测、跟踪与人脸识别
OpenCV支持的目标检测的方法是利用样本的Haar特征进行的分类器训练,得到的级联boosted分类器(Cascade Classification)。注意,新版本的C++接口除了Haar特征以外也可以使用LBP特征。先介绍一下相关的结构,级联分类器的计算特征值的基础类FeatureEvaluator,功能包括读操作read、复制clone、获得特征类型getFeatureType,
2013-11-06 15:50:32 1758
转载 数据对齐
为什么要数据对齐?所谓数据对齐是指访问数据的地址要满足一定的条件,能被这个数据的长度所整除。 例如,1字节数据已经是对齐的,2字节的数据的地址要被2整除,4字节的数据地址要 被4整除。但为什么要数据对齐呢?简单地说,数据对齐是为了读取数据的效率。假如说每一次 读取数据时都是一个字节一个字节读取,那就不需要对齐了,这跟读一个字节没有什 么区别,就是多读几次。但是这样读取数据效率不高。
2013-10-31 09:33:12 905
转载 C语言文件的打开与关闭
文件在进行读写操作之前要先打开,使用完毕要关闭。所谓打开文件,实际上是建立文件的各种有关信息,并使文件指针指向该文件,以便进行其它操作。关闭文件则断开指针与文件之间的联系,也就禁止再对该文件进行操作。在C语言中,文件操作都是由库函数来完成的。在本章内将介绍主要的文件操作函数。13.1.1文件的打开(fopen函数)fopen函数用来打开一个文件,其调用的一般形式为:
2013-10-30 19:35:42 706
转载 sql中的group by 和 having 用法解析
--sql中的group by 用法解析:-- Group By语句从英文的字面意义上理解就是“根据(by)一定的规则进行分组(Group)”。--它的作用是通过一定的规则将一个数据集划分成若干个小的区域,然后针对若干个小区域进行数据处理。--注意:group by 是先排序后分组;--举例子说明:如果要用到group by 一般用到的就是“每这个字” 例如说明现在有一个这样的表:
2013-09-08 15:35:49 360
转载 数据库中表的内联、外联、右联都有什么区别?
内联:a inner join b on a.id=b.id查两张表都有的id记录左外联:a left join b on a.id=b.id只要表a有的id,表a有,b没有的b字段为NULL右外联:a right join b on a.id=b.id只要表b有记录,与左相反 数据库的外联和内联知识 使用关系代数合并数据 1 关系代数合并数据集合的理论基础是关系代
2013-09-08 15:01:15 1782
转载 Access Violation
当你运行程式得到了一个AV(Access Violation)错误的时候,这意味着你的程式正在试图访问一块不再有效的内存,请注意我所提到的“不再 ”有效。大多数的情况下,出现这个错误要么是因为你试图访问一块已经被释放的内存,要么是想使用一个还未创建对象的指针。 幸运的是:Win32的内存体系在不同的进程(Process)间使用了独立的地址空间。所以我们可以不必担心会访问到其他的进
2013-09-08 09:48:41 738
jython-standalone-2.5.4-rc1.jar
2018-05-23
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人