自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(178)
  • 资源 (19)
  • 收藏
  • 关注

原创 FileContext等的坑?

FileContext等的坑?问题场景具体问题解决方案问题在minifilter中,可以使用CtxGetFileContext,CtxCreateFileContext等函数保存context。以FileContext为例,新建的文件可以保存一个context进去,然后当这个文件被删除的时候,操作系统会调用minifilter的清理函数来删除相应的context。那么坑:如果海量创建文件...

2019-01-19 12:11:05 1318

原创 如何在Minifilter驱动的IRP中获取操作文件路径?

如何在IRP中获取操作的文件路径?文件路径普通办法如何获取FileMapping操作在IRP_MJ_WRITE等IRP中的文件路径呢?IRP_MJ_CREATE获取文件路径并保存IRP_MJ_WRITE中获取路径文件路径在minifilter中,主要处理的是各种IRP,做DLP也好,做加解密也好。文件路径总是绕不开的。比如在IRP_MJ_WRITE中,绝大多数情况都得知道当前这次操作的文件路径...

2018-12-20 09:00:26 4605

原创 FileMapping写的内容什么时候会flush到磁盘?

FileMapping写的内容什么时候会flush到磁盘?FileMapping写文件什么时候写入磁盘?强迫操作系统写入磁盘FileMapping写文件这是个简单的file mapping 写文件例子:void TestIOFileMapping() { HANDLE hFile; hFile = CreateFile(L"testfilemapping.foo", ...

2018-12-18 14:50:00 963

原创 Minifilter 拦截FileMapping IO事件

Minifilter 拦截FileMapping IO事件IO类型Minifilter拦截FileMapping拦截结论IO类型在Windows上一般常见的两种IO:普通IO, 如通过ReadFile,WriteFile等Windows API进行读写FileMapping,通过CreateFile打开一个文件,然后通过CreateFileMapping创建FileMapping对象,通...

2018-12-18 09:15:42 2811

原创 HTTP - WEB 基础 (3)

web开发就是基于HTTP的。那么一个典型的WEB开发是怎么样的呢?HTML页面先整个HTML静态页面,如下:MyTestTest Image Upload Select Image Test login User name: Password:

2016-08-23 18:32:29 626

原创 HTTP - TCP实现HTTP GET请求 (2)

我们尝试用TCP来实现HTTP GET基本TCP通信首先写一段TCP通信的例子。这是一些测试代码,不要看代码质量,我们目的只是验证。服务器:先写个服务器,这里用了select。// SelectServer.cpp : Defines the entry point for the console application.//#include "stdafx.h"

2016-08-22 17:13:28 8173

原创 HTTP - 基本知识 (1)

HTTP 应该说是最常见的应用层协议了。现在绝大多数的app都是使用HTTP和服务器通信的吧。在讲HTTP之前应该先对网络通信有个初步的了解。OSI 七层网络模型学过《网络原理》的人都知道网络有7层模型,如下:实际上,很多人觉得这7层模型太累赘了,更常见的是TCP/IP四层模型。TCP/IP四层模型一般我们只要知道这四层就行了。这4层,每层都有对

2016-08-22 14:10:15 662

原创 Lex/Yacc Lex结合Yacc

这次就来尝试lex结合yacc。简单lex先写个简单lex,如下:%{#include "name.tab.h"#include #include extern char* yylval;%}char [A-Za-z]num [0-9]eq [=]name {char}+age {num}+%%{name} { yylval = strdup(yytext);

2016-06-11 00:15:11 1653

原创 Lex/Yacc 初识Lex

因工作需要接触了一下Lex和Yacc,个人感觉挺有趣的,所以就写下来了。Lex是Lexical的缩写,大概就可以理解为词汇提取。Yacc是Yet another compiler compiler, 可以翻译为“还有另一个编译器的编译器”,挺拗口的,不过没关系,先不管它。安装Lex和YaccLex和Yacc是一种标准,当然会有很多的实现了,其中有2个是免费的(好像还有商业版本),那

2016-06-10 23:32:28 4729

原创 AsyncTask 坑 (四) 多个task是串行执行还是并行的

AsyncTask作为一个优秀的封装,很多人都在用,可是我估计很多人并不清楚多个AsyncTask对象到底是串行执行的,还是并行执行的,如果是并行的,那么最多同时执行几个异步任务呢?源码面前无秘密,我们看一下源代码就知道了。这里以Android-23为例。AyncTask调用例子 AsyncTask task = new AsyncTask() {

2016-06-09 21:12:49 16552

原创 AsyncTask 坑 (三)AsyncTask对象多次执行

经常看到网上有这种面试题目:一个AsyncTask对象能不能被多次执行?其实,想知道答案,最好的办法就是看文档说明,要是文档说不行那就是不行,行就是行。如果想知道的更多,那就看代码呗。AsyncTask的execute函数excute是用来启动一个异步任务的API,先看看这个函数, @MainThread public final AsyncTask ex

2016-05-29 13:17:01 8157

原创 AsyncTask 坑 (二) AsyncTask对象生命周期

当我第一次看到AsyncTask的调用代码时候,我第一感就有个疑问。 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main);

2016-05-25 16:38:57 3564 1

原创 AsyncTask 坑(一) 哪些线程可以调用AsyncTask

看到很多文章说,只有主线程(UI线程)可以创建AsyncTask。个人觉得这个说法不对。从AsyncTask的角度讲,任何线程都可以创建并且使用AsyncTask。之所以会有主线程才能创建AsyncTask的说法,我想无非是onPostExecute, onProgressUpdate等回调里面想操作UI吧。假如一个后台线程创建了一个AsyncTask对象,并且使用它,那么当任务完成后,通过han

2016-05-24 20:40:16 3859 5

原创 AsyncTask - 基本原理 后台线程和UI线程的交互

前面一个文章大概描述了一下任务是怎么被执行的?http://blog.csdn.net/zj510/article/details/51485120其实也就是AsyncTask里面的doInBackground怎么通过FutureTask和WorkerRunnable在ThreadPoolExecutor的某个线程里面执行的。那么执行过程中和执行完毕了总要通知主调线程(主线程)吧?

2016-05-24 13:30:24 1591

原创 AsyncTask - 基本原理 图文剖析

最近用到了AsyncTask,这玩意每个写android程序的都会用,可是不见得每个人都能用的好。如果想要用好,那么首先势必对基本原理有个大概了解。其实网上对这类问题的说明已经很多很多了,这里我就用自己的思维整理一下。AsyncTask概述AsyncTask是google公司封装的一个轻量级的异步任务类。实际上它内部也是通过Thread + handler实现的。如果没有AsyncTask

2016-05-24 00:16:08 6641

转载 MQTT协议 - Mosquitto安装测试

http://blog.csdn.net/xukai871105/article/details/39252653

2016-05-15 16:16:41 638

转载 IOS 静态库/动态库 简单说明

http://my.oschina.net/u/2361492/blog/483689?p=1

2015-09-22 17:11:08 590

转载 接口和抽象类的区别,这种题目有意思吗?

仁者见仁,知者见者。个人观点,无需纠结。http://www.csdn.net/article/2015-09-15/2825699

2015-09-16 15:55:28 763 1

原创 随手写了一段C++访问LDAP, 并且获取sid的代码

直接上代码,获取sid,并且转换成字符串形式。没有仔细优化代码,这只能是一段demo代码,但是能跑成功。跟大家share一下。// LDAPTest.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include #include "Winldap.h"#include

2015-09-07 11:54:14 4414 7

原创 ARC中的block

在arc之后,block变得更加简单了。只有global和heap block了,原来的stack block没有了。从log里面清楚的看到,原来非arc的stack block变成了mallocblock,也就是常说的堆block。然后我们看看car对象的释放:很清楚car的dealloc的调用是在Block2释放以后。那么也就是说,我们在Block2=Block

2015-09-06 16:50:31 1809 1

原创 堆block & block访问oc变量

block有三种:global,stack和heap。通常默认情况下都是stack或者global的,而heap block呢?另外一个问题如果block里面引用了oc变量,那么就要小心了。如:#import @interface Car : NSObject@property(nonatomic, readwrite, retain) NSString* name;@en

2015-09-06 16:21:42 1108

原创 Objective-C Block一步一步分析

Block作为OC语言对于闭包的实现,使用频率是非常高的。所有有必要深入理解。一个简单的栈block首先敲入一个简单的block,如://// main.m// MyConsole3#import int main(int argc, const char * argv[]) { @autoreleasepool { // inser

2015-09-06 15:39:48 784 1

转载 uPnp概述

http://www.h3c.com.cn/MiniSite/Technology_Circle/Net_Reptile/The_Five/Home/Catalog/201206/747039_97665_0.htm

2015-08-23 22:36:47 550

转载 aes的几种模式简单说明

http://www.cnblogs.com/happyhippy/archive/2006/12/23/601353.html

2015-08-12 11:04:21 1343

原创 HTTPS 证书处理 objective-c实现

前一篇文章用c#处理了证书,这次就使用oc来试一下,其实基本原理累似,一般都是自己覆盖几个函数,然后自己处理证书相关的东西。自己创建一个类,如:@interface MyURLConnection : NSObject- (void) sendPostRequest: (NSURL*)url postData: (NSData*)postData;@end我比较喜欢把一些不需

2015-07-02 14:30:14 4403

原创 HTTPS访问中证书的处理

现在基本大家都在使用HTTPS,比如REST API, 或者其他类似的SOAP啥的。因为HTTP是明文传输太不安全了。使用HTTPS会有个比较麻烦的问题就是证书的处理。这里有几种证书的问题:1. 如果判断HTTPS中的证书是否是正确的?所谓的正确有2种意思:a. 证书是假的,并非权威机构签发的,比如自己做的测试证书。        b. 证书也是权威机构签发的,但并不是自己公司的。比如

2015-07-01 10:33:07 6434

原创 Windows 异步IO的几种实现方式

Windows上的异步IO有好几种实现方式。设备内核对象这是最简单的一种了,直接用设备内核对象的状态。比如文件句柄,线程句柄等等,这些内核对象都是有一个触发状态的,比如当一个线程结束后,线程内核对象就会被触发。对于文件内核对象,如果一个异步IO完成了,就会把文件句柄设置为触发状态,但是有个问题就是:如果有多个异步io,那么只要有一个异步io完成了,文件句柄就会被设置为触发状态。

2015-03-26 18:00:30 13379 3

翻译 Reactor Proactor 两个IO多路复用的方法

今天看了一篇文章,感觉不错,就决定翻译一下。原文:http://www.artima.com/articles/io_design_patterns2.html译文:比较两个高性能的 I/O 设计模式反应器和前摄器: 两个 I/O 多路复用的方法总体上来讲, I/O 多路复用机制依赖于一个事件多路解调器,多路解调器是一个把一定数量的源的IO事件分发到合适的读写事件处理器(handl

2015-03-24 12:10:29 1334 1

转载 一篇不错的IOCP和EPoll的介绍。

http://blog.csdn.net/teleinfor/article/details/5249934

2015-03-23 15:33:09 1937 1

原创 动态语言 & ios程序 - lua基础

经常有看到一些游戏可以不通过appstore而修改一些东西,比如增加功能。这个其实就是通过下载脚本来实现的。常见的脚本就是js和lua吧。个人对lua比较熟悉。lua这货还是挺牛的,解释器非常小,速度也非常快,和C语言函数的交互也很容易。集成lua到xcode工程很容易,1. 到lua官网,下载源代码,http://www.lua.org/download.html2.

2015-03-04 14:32:09 1305

转载 UML 中的各种关系,泛化 = 实现 > 组合(强聚合)> 聚合 > 关联 > 依赖

http://www.open-open.com/lib/view/open1328059700311.html

2015-02-28 11:08:16 1011

原创 Core Animation - 过渡动画 CATransition

CAAnimation有三个子类:CAAnimationGroup,CAPropertyAnimation,CATransition。其中,CATransition就是一个过渡动画类,比如一个UIImageView从一张图片过渡到另外一张图片。其实使用真的是非常简单,下面的例子就是一个UIImageView _myImage已经显示了一张图片A,然后在一个按钮函数里面,设置成B,再创建

2015-02-09 17:24:40 1118

原创 Core Animation - 属性动画CAPropertyAnimation

core animation里面有个很重要的类CAPropertyAnimation,它有两个子类,CABasicAnimation和CAKeyFrameAnimation。类图如下:CABasicAnimation可以设置一些属性,比如位置从A到B,然后就会移动过去。CAKeyFrameAnimation基本就和flash里面说的补间动画一样(tweening),设置一些值,

2015-02-09 16:53:54 2395

原创 Core Animation 多个动画顺序播放

同时播放多个动画效果很容易,多次调用addAnimation或者CAAnimationGroup就可以。那么如何序列化播放多个动画呢?搜索了一下,也不知道是我没搜到,还是苹果就没有提供相应的封装,反正我是没看到官方的做法。那就自己搞个解决方案吧。看了一下CAAnimation的定义,发现有个delegate,@interface CAAnimation : NSObject

2015-02-05 16:18:48 6996 4

原创 Core Animation 叠加

之前做过一些游戏,现在的游戏引擎基本都支持多个动画同时播放。看了一下core animation,也是支持多个动画同时播放的。其实也是很简单,就是多次调用CALayer的addAnimation函数。比如代码: CALayer *sublayer =[CALayer layer]; sublayer.backgroundColor =[UIColor orangeColo

2015-02-05 15:37:03 1004

原创 Core Animation 基础

Core Animation是一个框架,这里面提供了一些动画效果的封装。这里有个图片,可以看到一些类的关系。CALayer有个函数- (void)addAnimation:(CAAnimation *)anim forKey:(NSString *)key;通过这个函数可以把一个动画对象加到CALayer对象里面,这样就可以实现动画效果了。ios sdk已经帮我们实现了一

2015-02-05 14:48:13 1096

原创 CALayer 基础

UIView在ios开发里面是非常重要的。几乎所有的控件都是从UIView继承下来的。比如UILabel,UIText等。今天有空看了一下UIView的内部结构。发现其实UIView的显示部分其实委托给CALayer(Core Animation Layer)来做的。UIView类片段NS_CLASS_AVAILABLE_IOS(2_0) @interface UIView : U

2015-02-05 14:22:32 2030

转载 转几篇不错的关于REST/RESTful的解释文章

http://www.ruanyifeng.com/blog/2011/09/restful.html

2015-02-03 09:56:24 711

转载 iOS 视频预览 录制

http://www.cocoachina.com/appstore/20141027/10048.html

2015-01-07 22:22:36 867

原创 iOS - 集成game center (leader board)

最近又一次用到game center里面的leader board。其实这个事情很简单,只是很容易忘记。所以就打算写下来。iTunes Connect上创建app,然后启用game center创建app就省略了,等创建成功后,不需要提交。我们就可以设置game center了。首先点击新建的app,找到Game Center,如图点击进入具体的game c

2015-01-06 17:16:35 4163

COM 连接点简单例子

一个简单的连接点例子,包括一个客户程序和一个COM组件。

2014-09-05

MTA客户跨线程调用STA对象

一个简单例子,MTA客户跨线程调用STA对象,直接传递COM对象。

2014-08-26

STA客户跨线程调用STA对象

STA客户跨线程调用STA对象,使用了marshal,消息循环。

2014-08-25

STA组件简单调用(MTA客户,STA客户)

实现了一个STA组件, 然后里面有STA客户调用和MTA客户调用。

2014-08-25

OSX服务端+iphone客户端 网络通信小程序

基于OS X的一个CFNETWORK写的服务端 iphone上的一个客户端,NSStream写的。 实现了基本通信和客户端切到后台后继续保持连接。

2013-05-16

OS X网络程序简单例子

用CFNETWORK和NSStream写的一个简单通信例子,包括服务端和客户端。 用的xcode。

2013-05-16

C# 处理xml

写了几行C#处理xml的代码。非常简单的几行代码。

2013-03-01

封装了一个带上下刷新功能的table(UITableView子类)

封装了一个带上下刷新功能的table(UITableView子类)。 这样在想使用刷新功能的地方,只要使用这个类替换标准UITableView就可以了。

2012-12-28

IOS开发 Table上下拉动刷新(表头下拉,表尾上拉)

在别人的基础上修改的,在一个class里面支持表头下拉刷新,表尾上拉刷新。

2012-12-28

ios自定义table例子

一个简单的自定义table例子。自定义cell,里面可以随意画自己想要的东西。

2012-12-27

WDM驱动-完成例程

wdm驱动,完成例程的一个例子。包含3部分: 1. 目录1是一个功能驱动, 2. 目录2是一个过滤驱动,附在#1上面, 3. 另外还有一个测试代码。 直接跑测试代码,就可以看到完成例程的效果。

2012-12-21

wdm驱动-过滤驱动

wdm驱动,包括功能驱动和附在它上面的过滤驱动(上层过滤驱动)。一个很简单的例子。

2012-12-19

WDM驱动多个设备对象

WDM驱动,AddDevice里面多次调用IoCreateDevice创建多个设备对象。遍历整个设备链。

2012-12-14

WDM驱动取消例程

StartIo例程的基本例子,包括如何取消irp

2012-12-13

WDM驱动StartIo例程

用WDM实现的StartIo例子。将多个线程创建的IRP串行化处理。

2012-12-12

异步IRP例子

一个WDM驱动,使用异步IRP。caller通过异步方式打开驱动设备,然后使用WaitForSingleObject查看驱动是否已经完成请求。

2012-11-26

使用DeviceIoControl进行通信(直接方式)

一个WDM驱动,然后caller使用DeviceIoControl进行和驱动的通信。输出buffer使用METHOD_IN_DIRECT进行数据传输。

2012-11-23

缓冲区方式WDM驱动例子

使用缓冲区方式(DO_BUFFERED_IO)进行用户模式和内核模式地址的数据交互。包括驱动程序和用户模式的测试程序。用DDK编译驱动,VS2008编译测试程序。

2012-11-22

一个简单的WDM驱动例子

一个简单的WDM驱动例子,包括驱动和用户模式的调用测试。(例子来自于《windows驱动开发技术详解》,只是稍微做了一些改变)

2012-11-21

空空如也

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

TA关注的人

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