- 博客(41)
- 资源 (9)
- 收藏
- 关注
原创 Bison笔记
Bison笔记2016/1/211.语法结构%{C/C++头文件、全局文件、全局变量、类型定义此法分析器yylex(采用lex进行此法分析)和错误打印函数%}Bison声明区间。定义之后用到的终结符、非终结符、操作符优先级%%Bison语法规则定义%%C/C++代码 需要定义prologue区域函数,或者其他代码,生成的c/c++文件会完全拷贝这份代
2016-10-21 14:15:24
9092
1
转载 实战 Lucene,第 1 部分: 初识 Lucene
原地址:https://www.ibm.com/developerworks/cn/java/j-lo-lucene1/本文首先介绍了 Lucene 的一些基本概念,然后开发了一个应用程序演示了利用 Lucene 建立索引并在该索引上进行搜索的过程。Lucene 简介Lucene 是一个基于 Java 的全文信息检索工具包,它
2016-09-27 14:56:11
513
原创 基于字符串的编辑距离
最近因为项目需要对一个web网页变更进行实时监控,之前项目组有人采用的是比较简单 的文本对比的方式,只要发现文本中一处发生变动就进行告警,最后导致的结果就是误报的情况比较多,比如在对首页进行监控时,后台对用户访问量的统计会在首页实时更新,这样就会被当做网站被改动来处理了,而这并不是我们所需要的,因为我们感兴趣的不是网页动态数据区域的变化,这样我们最终要解决的就是怎么来分离网页的动态区域和静态区域。
2016-04-08 10:10:49
898
转载 开源爬虫Labin,Nutch,Heritrix介绍和对比
开源爬虫Labin,Nutch,Heritrix介绍和对比 转载原文:http://www.open-open.com/bbs/view/1325332257061/从网上找了一些开源spider的相关资料,整理在下面: ------------------------------------
2016-03-26 18:31:03
5010
原创 网站弱点扫描器核心技术研究一
之前一直都是在转载被人的一些网络安全相关的文章,最近有空了就写写之前完成的一个项目的核心技术,对网络安全或是弱点扫描器有兴趣的可以和我一起探讨这方面的知识。ps:当我设计完这款扫描器的时候俨然发现我已经成为一名会写代码的黑客了,不对,应该是白帽子,因为我不会去做坏事,嘿嘿。。。。设计一款网站弱点扫描器的必要基础是你必须非常熟悉http协议和相关的库(如urllib、urllib2,由于
2015-05-14 13:31:06
1640
转载 web攻防之Cookie注入
摘要:随着网络安全技术的发展,SQL注入作为一种很流行的攻击方式被越来越多的人所知晓。很多网站也都对SQL注入做了防护,许多网站管理员的做法就是添加一个防注入程序。这时我们用常规的手段去探测网站的SQL注入漏洞时会被防注入程序阻挡,遇到这种情况我们该怎么办?难道就没有办法了吗?答案是否定的。随着网络安全技术的发展,SQL注入作为一种很流行的攻击方式被越来越多的人所知晓。很多网站也都对SQL
2014-11-20 13:38:30
902
转载 web攻防之跨站脚本攻击漏洞
摘要:XSS跨站脚本攻击一直都被认为是客户端Web安全中最主流的攻击方式。因为Web环境的复杂性以及XSS跨站脚本攻击的多变性,使得该类型攻击很难彻底解决。那么,XSS跨站脚本攻击具体攻击行为是什么,又该如何进行有效的防范呢?本文对此进行了有针对性的具体实例分析。XSS跨站脚本攻击一直都被认为是客户端Web安全中最主流的攻击方式。因为Web环境的复杂性以及XSS跨站脚本攻击的多变性,使得该
2014-11-20 13:34:07
11938
转载 Apache Struts远程命令执行漏洞、开放式式重定向漏洞
摘要:Struts应用开发框架目前广泛应用于大型互联网企业、政府、金融机构等网站建设,并作为网站开发的底层模板使用。近日网上公布了Struts一个严重的命令执行漏洞,在我国互联网环境影响巨大,本文将对这个漏洞进行分析和描述。Struts是Apache软件基金会Jakarta项目组的一个开源项目,它采用MVC模式,帮助java开发者利用J2EE开发Web应用。目前,Struts广泛应用于大型
2014-11-20 13:29:19
13843
转载 织梦Dedecms buy_action.php SQL注入漏洞分析
Dedecms buy_action.php SQL注入漏洞分析0x01 补丁对比通过对比源码和2月25日补丁发现被改动的文件有三个,buy_action.php、uploadsafe.inc.php和sys_info.htm。sys_info.htm只是添加了一个重置cfg_cookie_encode的代码,而且是静态文件,可以忽略掉。uploadsafe.inc.php
2014-11-20 13:16:28
5726
转载 spring框架远程代码执行漏洞
Spring框架远程代码执行0x01 概述2012年12月国外研究者DanAmodio发表《Remote Code with Expression Language Injection》一文,指出Spring框架存在潜在的代码注入风险。在2013年1月,国内安全研究人员在微博上分享了该篇文章的中文翻译内容。文章中指出Spring框架3.0.6以下版本,在一定的条件下,可以被
2014-11-20 13:12:43
9934
转载 Linux五种IO模型性能分析
socket阻塞与非阻塞,同步与异步作者:huangguisu1. 概念理解 在进行网络编程时,我们常常见到同步(Sync)/异步(Async),阻塞(Block)/非阻塞(Unblock)四种调用方式:同步: 所谓同步,就是在发出一个功能调用时,在没有得到结果之前,该调用就不返回。也就是必须一件一件事做,等前一件做
2014-01-11 15:53:55
34551
转载 Windows五种IO模型性能分析
重叠I/O模型的另外几个优点在于,微软针对重叠I/O模型提供了一些特有的扩展函数。当使用重叠I/O模型时,可以选择使用不同的完成通知方式。 采用事件对象通知的重叠I/O模型是不可伸缩的,因为针对发出WSAWaitForMultipleEvents调用的每个线程,该I/O模型一次最多都只能支持6 4个套接字。假如想让这个模型同时管理不止64个套接字,必须创建额外的工作者线程,以便等待更多的事件对
2014-01-11 15:38:55
9691
转载 使用C/C++扩展Python
使用C/C++扩展Python翻译:gashero如果你会用C,实现Python嵌入模块很简单。利用扩展模块可做很多Python不方便做的事情,他们可以直接调用C库和系统调用。为了支持扩展,Python API定义了一系列函数、宏和变量,提供了对Python运行时系统的访问支持。Python的C API由C源码组成,并包含 “Python.h” 头文件。编写扩展模块与你的系统
2013-12-16 10:58:50
1881
转载 75个顶级开源安全应用
随着网络犯罪的日益增多,或许我们需要更多资金投入到安全方面。不过,你并非一定要花钱购买安全应用,开源社区一直在不断开发优秀的安全工具,以满足更广泛的安全需要。下面是由国外专家总结出来的75个顶级开源安全应用,共大家参考。反病毒/反恶意软件工具1、ClamAV最著名、最受欢迎的开源反病毒引擎,大量商业和开源安全应用都使用了该引擎。该软件可以运行在Linux/Unix操作系统上
2013-12-07 12:30:35
4055
1
原创 驱动层主动发数据到应用层
上次转载的一片博客已经介绍了驱动层主动发送数据给应用层的方法,下面介绍的一种方法有点差异之处,上次的是在应用层创建事件对象,在驱动层创建MDL(内存描述符)来实现同步通信,而这次则是在应用层创建虚拟内存,驱动程序将虚拟地址转换成物理地址,然后再转成驱动程序能访问的虚拟地址,同样能达到内存共享的目的。驱动层部分代码switch (ioControlCode){ case 2001:
2013-11-20 15:44:37
4201
转载 应用层与驱动层同步事件处理方法
应用层与驱动层同步事件处理方法 关于这个问题高手略过吧。 Ring3与Ring0同步是很有用的手段,在此做一个简要的整理,希望对开发这方面程序的朋友有帮助,好了,开始吧。 1 同步的策略 初写驱动的朋友都知道,通过DeviceIoControl这个API函数,
2013-11-20 15:23:06
2658
1
转载 IO_STACK_LOCATION
如前文所述,nt内核的驱动模型没有完全使用函数调用栈,而是自己山寨出来一个IO_STACK_LOCATION,里面保存了驱动调用序列。我们知道函数调用栈的push和pop都是编译器帮忙弄的,你甚至都可以在完全不了解内幕的前提下写代码,但是驱动开发不一样,调用序列要你自己去关心,何时入栈,何时出栈,栈内保留的什么内容,全部都要照顾好,否则BSOD就在前方不远等你。与IO_STACK_LOCA
2013-10-19 00:32:50
3451
原创 驱动开发笔记(二)入门篇
学习驱动开发也有大半年时间了,刚好国庆也过完了,今天逛了下csdn博客,发现自己好久没写博客了,一时兴起想写点什么关于驱动的,因为我刚学驱动开发时对一些概念不清楚,可能是文档没讲清楚或是我理解错了,我觉得有必要把我自己理解的讲出来。这里我以文件过滤驱动为例。(此处我认为大家都看过楚狂人的驱动编程基础文档,如有理解错误的地方,请不吝指正)首先你要了解驱动对象和设备对象驱动对象(DRIVER_
2013-10-07 14:37:02
1069
原创 NDIS中间层驱动开发在Win7系统下和Windows XP系统下的区别
http://bbs.pediy.com/showthread.php?t=137545
2013-09-08 00:36:26
1028
原创 Windows NT 驱动程序开发人员提示 -- 应注意避免
下面是开发人员在使用 Windows NT 设备驱动程序时应当避免的事项列表: 一定不要在没有标注 I/O 请求数据包 (IRP) 挂起 (IoMarkIrpPending) 的情况下通过调度例程返回 STATUS_PENDING。一定不要通过中断服务例程 (ISR) 调用 KeSynchronizeExecution。 它会使系统死锁。一定不要将 DeviceObject->Flag
2013-04-26 17:17:01
1067
原创 windows驱动开发笔记
突然发现自己好长时间没写博客了,而且也没什么浏览量就没写了。今天突然想写一下这段时间的学习经历,以纪念看代码时逝去的青春岁月。因为申请了学校的创新项目要做一个驱动层的文件透明加密系统,自己有从来没接触过,只好硬着头皮从零学起了。文件系统驱动又分好几种,如NTFS、FAT32、网络文件系统、CD_ROM文件系统等等。从最开始编译别人的驱动程序、搭建调试环境、自己建一个驱动程序开始算是步入了驱
2013-04-14 20:36:45
688
原创 微软面试题解题笔记——二元查找树的镜像转换
(题目来源于v_JULY_v的整理,微软公司等数据结构+算法面试100题,July博客http://blog.youkuaiyun.com/v_JULY_v)题目:输入一颗二元查找树,将该树转换为它的镜像,即在转换后的二元查找树中,左子树的结点都大于右子树的结点。用递归和循环两种方法完成树的镜像转换。 例如输入: 8 / \ 6 10 / \ / \5
2013-01-17 23:13:12
641
原创 线段树思想实现矩形切割
因为前段时间碰到一个问题,是要对一组相交、重叠、相离的矩形进行切割,一组大致有几百个矩形,当时写了个算法,虽然没有问题单总感觉时间复杂度比较大,判断次数比较多,那个算法就不发了,今天没事有研究了下这个问题,发现用线段树思想爱解决这个问题比较容易,准确说是用线段树里面的二维矩形树,这里只说下对两个相交矩形的切割,对一组矩形的切割就比较简单了。如下图,对矩形1按x和y方向切割后
2012-12-18 15:56:56
906
原创 共享内存
今天花了一天时间写的一个共享类,通过共享内存区来实现进程间的通信,写的不完整的请改正,下面贴代码#pragma once/************************************************************************//* 文件名 : MemMap.h 创建时间:[29/11/2012] 作者: J-K
2012-11-29 16:46:17
818
原创 串口通信
这里采用字符串池实现串口数据接收,串口类改自一个老外写的CSerialPort类。/*** FILENAME CSerialPort.h**** PURPOSE This class can read, write and watch one serial port.** It sends messages to its owner when something h
2012-11-25 22:27:56
4509
1
转载 stl string用法总结
在平常工作中经常用到了string类,本人记忆了不好用到了的时候经常要去查询。在网上摘抄一下总结一下,为以后的查询方便:string类的构造函数:string(const char *s); //用c字符串s初始化string(int n,char c); //用n个字符c初始化string类的字符操作:const char &operator[](int n)c
2012-11-25 16:01:08
573
转载 x264源码分析
相关说明:1. 使用版本: x264-cvs-2004-05-112. 这次的分析基本上已经将代码中最难理解的部分做了阐释,对代码的主线也做了剖析,如果这个主线理解了,就容易设置几个区间,进行分工阅读,将各个区间击破了.3. 需要学习的知识:a) 编码器的工作流程.b) H.264的码流结构,像x264_sps_t
2012-11-15 22:19:53
722
原创 Socket Send和Recv函数详解
send函数int send( SOCKET s, const char FAR *buf, int len, int flags ); 不论是客户还是服务器应用程序都用send函数来向TCP连接的另一端发送数据。客户程序一般用send函数向服务器发送请求,而服务器则通常用send函数来向客户程序发送应答。该函数的第一个参数指定发送端
2012-11-14 18:09:51
661
转载 CxImage编译
CxImage图像库CxImage下载地址:http://www.codeproject.com/KB/graphics/cximage/cximage600_full.zip作者:Davide Pizzolato CxImage简介 CxImage是一个可以简便而快速地打开、保存、显示和转换图像文件的 C++类库,它可以用于MFC
2012-11-05 14:52:39
1743
转载 LibJpeg编译过程
在Unix或Linux系统上的编译情况如下:1. tar xzvf jpegsrcv6b.tar.gz2. cd jpeg-6b3. ./configure4. make5. make test(编译测试程序,看看能否在系统上正确运行)6. make install
2012-10-30 22:20:34
806
原创 改写libjpeg实现自定义压缩方案
这几天网上看的libjpeg内存压缩讲的不是很清楚,自己就去看了下源文档,理解了调用原理才能实现符合程序的压缩方案,。背景:对屏幕上的小矩行进行压缩自定义协议:数据长度+RECT结构+jpeg数据部分协议头typedef struct tagBuffAreaHeader{ int nBuffLength; RECT rect;}BuffAreaHeader;自定义目标输出
2012-10-30 14:06:42
2847
原创 setjmp和longjmp
setjmp和longjmp是C语言独有的,只有将它们结合起来使用,才能达到程序控制流有效转移的目的,按照程序员的预先设计的意图,去实现对程序中可能出现的异常进行集中处理。先来看一下这两个函数的定义吧:setjmp和longjmp的函数原型在setjmp.h中函数原型:int setjmp(jmp_buf envbuf);setjmp函数用缓冲区envbuf
2012-10-28 21:34:32
506
原创 托盘
一、托盘简介 所谓的“托盘”,在Windows系统界面中,指的就是下面任务条右侧,有系统时间等等的标志的那一部分。在程序最小化或挂起,但又不希望占据任务栏的时候,就可以把程序放到托盘区。其实,托盘区的编程很简单,下面简要阐述一下子喽^_^ 二、托盘编程相关函数 其实呢,把程序放到托盘上的本质就是先在托盘区绘制一个图标,然后把程序隐藏不见,再对托盘的图标进行消息处理,就可
2012-10-22 21:02:00
550
原创 SetWindowsHookEx详解
SetWindowsHookEx详解函数功能:该函数将一个应用程序定义的挂钩处理过程安装到挂钩链中去,您可以通过安装挂钩处理过程来对系统的某些类型事件进行监控,这些事件与某个特定的线程或系统中的所有事件相关.函数原形:HHOOK SetWindowsHookEx( int idHook, HOOKPROC lpfn,HINSTANCE hMod,DWORD dwThreadId );参
2012-10-18 13:32:43
1128
转载 设计模式7大原则(三)
五、接口隔离原则1. 定义 i. 客户端不应该依赖那些它不需要的接口。 ii. 一旦一个接口太大,则需要将它分割成一些更细小的接口,使用该接口的客户端仅需知道与之相关的方法即可。 2.分析 i. 接口隔离原则是指使用多个专门的接口,而不使用单一的总接口。每一个接口应该承担一种相对独立的角色,不多不少,不干
2012-10-13 09:47:04
850
转载 设计模式7大原则(二)
二、依赖倒转原则 1.依赖倒转原则定义 i. 高层模块不应该依赖低层模块,它们都应该依赖抽象。抽象不应该依赖于细节,细节应该依赖于抽象。 ii. 要针对接口编程,不要针对实现编程。 2. 依赖倒转原则分析
2012-10-13 09:46:03
710
转载 设计模式7大原则(一)
花絮 每天都在和面向对象打交道,但是我们在应用面向对象的时候感觉自己的面向对象技术应用的很合理?理解的很到位?应用的很到位?用的时候恰到好处?用的是否符合软件的发展趋势? 上面很多一连串的问题,没有把你搞晕吧!我想说的面向对象的应用也有面向对象的原则,一个程序员的编程素质从一个小例子几十行代码就可以展现出来。面向对象编程是是面向对象的基础中的基础,废话不
2012-10-13 09:44:57
832
原创 STL list中对象排序
#pragma once#include class CCell{public: RECT rect;public: CCell(); CCell(RECT rc); ~CCell(void); int GetLeft() const;//获取左上角x坐标 int GetTop() const;//获取左上角y坐标};#include "StdAfx.h"#inclu
2012-10-04 15:26:29
783
原创 内存映射实现进程间通信
示例通过内存映射实现从服务器加载bmp位图到内存,客户端从内存读取并显示。//服务器部分代码void CServerDlg::OnCreateFileMap() { // TODO: Add your control notification handler code here CButton* pButton = (CButton*)GetDlgItem(IDC_BUTTON1)
2012-09-28 22:18:22
1170
原创 MFC中线程创建的一般方法
说到线程的创建,常用到的函数有3类,CreateThread、_beginthread或_beginthreadex、AfxrBeginThread,以前刚学多线程的时候,只要是创建线程,我一般都是用的_beginthread或_beginthreadex,因为用的多,也就比较熟悉了,但是,线程创建时是要分情况的,控制台下用_beginthread或_beginthreadex比较多,下面看看函数
2012-09-08 16:29:36
3290
1
c++模拟实现动态分区式存储管理算法(带文档)
2012-12-03
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人