- 博客(178)
- 资源 (19)
- 收藏
- 关注
原创 FileContext等的坑?
FileContext等的坑?问题场景具体问题解决方案问题在minifilter中,可以使用CtxGetFileContext,CtxCreateFileContext等函数保存context。以FileContext为例,新建的文件可以保存一个context进去,然后当这个文件被删除的时候,操作系统会调用minifilter的清理函数来删除相应的context。那么坑:如果海量创建文件...
2019-01-19 12:11:05
1447
原创 如何在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
4843
原创 FileMapping写的内容什么时候会flush到磁盘?
FileMapping写的内容什么时候会flush到磁盘?FileMapping写文件什么时候写入磁盘?强迫操作系统写入磁盘FileMapping写文件这是个简单的file mapping 写文件例子:void TestIOFileMapping() { HANDLE hFile; hFile = CreateFile(L"testfilemapping.foo", ...
2018-12-18 14:50:00
1051
原创 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
3157
原创 HTTP - WEB 基础 (3)
web开发就是基于HTTP的。那么一个典型的WEB开发是怎么样的呢?HTML页面先整个HTML静态页面,如下:MyTestTest Image Upload Select Image Test login User name: Password:
2016-08-23 18:32:29
671
原创 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
8339
原创 HTTP - 基本知识 (1)
HTTP 应该说是最常见的应用层协议了。现在绝大多数的app都是使用HTTP和服务器通信的吧。在讲HTTP之前应该先对网络通信有个初步的了解。OSI 七层网络模型学过《网络原理》的人都知道网络有7层模型,如下:实际上,很多人觉得这7层模型太累赘了,更常见的是TCP/IP四层模型。TCP/IP四层模型一般我们只要知道这四层就行了。这4层,每层都有对
2016-08-22 14:10:15
705
原创 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
1734
原创 Lex/Yacc 初识Lex
因工作需要接触了一下Lex和Yacc,个人感觉挺有趣的,所以就写下来了。Lex是Lexical的缩写,大概就可以理解为词汇提取。Yacc是Yet another compiler compiler, 可以翻译为“还有另一个编译器的编译器”,挺拗口的,不过没关系,先不管它。安装Lex和YaccLex和Yacc是一种标准,当然会有很多的实现了,其中有2个是免费的(好像还有商业版本),那
2016-06-10 23:32:28
4925
原创 AsyncTask 坑 (四) 多个task是串行执行还是并行的
AsyncTask作为一个优秀的封装,很多人都在用,可是我估计很多人并不清楚多个AsyncTask对象到底是串行执行的,还是并行执行的,如果是并行的,那么最多同时执行几个异步任务呢?源码面前无秘密,我们看一下源代码就知道了。这里以Android-23为例。AyncTask调用例子 AsyncTask task = new AsyncTask() {
2016-06-09 21:12:49
16701
原创 AsyncTask 坑 (三)AsyncTask对象多次执行
经常看到网上有这种面试题目:一个AsyncTask对象能不能被多次执行?其实,想知道答案,最好的办法就是看文档说明,要是文档说不行那就是不行,行就是行。如果想知道的更多,那就看代码呗。AsyncTask的execute函数excute是用来启动一个异步任务的API,先看看这个函数, @MainThread public final AsyncTask ex
2016-05-29 13:17:01
8249
原创 AsyncTask 坑 (二) AsyncTask对象生命周期
当我第一次看到AsyncTask的调用代码时候,我第一感就有个疑问。 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main);
2016-05-25 16:38:57
3636
原创 AsyncTask 坑(一) 哪些线程可以调用AsyncTask
看到很多文章说,只有主线程(UI线程)可以创建AsyncTask。个人觉得这个说法不对。从AsyncTask的角度讲,任何线程都可以创建并且使用AsyncTask。之所以会有主线程才能创建AsyncTask的说法,我想无非是onPostExecute, onProgressUpdate等回调里面想操作UI吧。假如一个后台线程创建了一个AsyncTask对象,并且使用它,那么当任务完成后,通过han
2016-05-24 20:40:16
3932
原创 AsyncTask - 基本原理 后台线程和UI线程的交互
前面一个文章大概描述了一下任务是怎么被执行的?http://blog.youkuaiyun.com/zj510/article/details/51485120其实也就是AsyncTask里面的doInBackground怎么通过FutureTask和WorkerRunnable在ThreadPoolExecutor的某个线程里面执行的。那么执行过程中和执行完毕了总要通知主调线程(主线程)吧?
2016-05-24 13:30:24
1639
原创 AsyncTask - 基本原理 图文剖析
最近用到了AsyncTask,这玩意每个写android程序的都会用,可是不见得每个人都能用的好。如果想要用好,那么首先势必对基本原理有个大概了解。其实网上对这类问题的说明已经很多很多了,这里我就用自己的思维整理一下。AsyncTask概述AsyncTask是google公司封装的一个轻量级的异步任务类。实际上它内部也是通过Thread + handler实现的。如果没有AsyncTask
2016-05-24 00:16:08
6724
转载 MQTT协议 - Mosquitto安装测试
http://blog.youkuaiyun.com/xukai871105/article/details/39252653
2016-05-15 16:16:41
675
转载 接口和抽象类的区别,这种题目有意思吗?
仁者见仁,知者见者。个人观点,无需纠结。http://www.youkuaiyun.com/article/2015-09-15/2825699
2015-09-16 15:55:28
808
原创 随手写了一段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
4567
3
原创 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
1856
原创 堆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
1147
原创 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
819
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
595
转载 aes的几种模式简单说明
http://www.cnblogs.com/happyhippy/archive/2006/12/23/601353.html
2015-08-12 11:04:21
1422
原创 HTTPS 证书处理 objective-c实现
前一篇文章用c#处理了证书,这次就使用oc来试一下,其实基本原理累似,一般都是自己覆盖几个函数,然后自己处理证书相关的东西。自己创建一个类,如:@interface MyURLConnection : NSObject- (void) sendPostRequest: (NSURL*)url postData: (NSData*)postData;@end我比较喜欢把一些不需
2015-07-02 14:30:14
4531
原创 HTTPS访问中证书的处理
现在基本大家都在使用HTTPS,比如REST API, 或者其他类似的SOAP啥的。因为HTTP是明文传输太不安全了。使用HTTPS会有个比较麻烦的问题就是证书的处理。这里有几种证书的问题:1. 如果判断HTTPS中的证书是否是正确的?所谓的正确有2种意思:a. 证书是假的,并非权威机构签发的,比如自己做的测试证书。 b. 证书也是权威机构签发的,但并不是自己公司的。比如
2015-07-01 10:33:07
6526
原创 Windows 异步IO的几种实现方式
Windows上的异步IO有好几种实现方式。设备内核对象这是最简单的一种了,直接用设备内核对象的状态。比如文件句柄,线程句柄等等,这些内核对象都是有一个触发状态的,比如当一个线程结束后,线程内核对象就会被触发。对于文件内核对象,如果一个异步IO完成了,就会把文件句柄设置为触发状态,但是有个问题就是:如果有多个异步io,那么只要有一个异步io完成了,文件句柄就会被设置为触发状态。
2015-03-26 18:00:30
13550
1
翻译 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
1382
转载 一篇不错的IOCP和EPoll的介绍。
http://blog.youkuaiyun.com/teleinfor/article/details/5249934
2015-03-23 15:33:09
1985
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
1423
转载 UML 中的各种关系,泛化 = 实现 > 组合(强聚合)> 聚合 > 关联 > 依赖
http://www.open-open.com/lib/view/open1328059700311.html
2015-02-28 11:08:16
1051
原创 Core Animation - 过渡动画 CATransition
CAAnimation有三个子类:CAAnimationGroup,CAPropertyAnimation,CATransition。其中,CATransition就是一个过渡动画类,比如一个UIImageView从一张图片过渡到另外一张图片。其实使用真的是非常简单,下面的例子就是一个UIImageView _myImage已经显示了一张图片A,然后在一个按钮函数里面,设置成B,再创建
2015-02-09 17:24:40
1154
原创 Core Animation - 属性动画CAPropertyAnimation
core animation里面有个很重要的类CAPropertyAnimation,它有两个子类,CABasicAnimation和CAKeyFrameAnimation。类图如下:CABasicAnimation可以设置一些属性,比如位置从A到B,然后就会移动过去。CAKeyFrameAnimation基本就和flash里面说的补间动画一样(tweening),设置一些值,
2015-02-09 16:53:54
2439
原创 Core Animation 多个动画顺序播放
同时播放多个动画效果很容易,多次调用addAnimation或者CAAnimationGroup就可以。那么如何序列化播放多个动画呢?搜索了一下,也不知道是我没搜到,还是苹果就没有提供相应的封装,反正我是没看到官方的做法。那就自己搞个解决方案吧。看了一下CAAnimation的定义,发现有个delegate,@interface CAAnimation : NSObject
2015-02-05 16:18:48
7087
1
原创 Core Animation 叠加
之前做过一些游戏,现在的游戏引擎基本都支持多个动画同时播放。看了一下core animation,也是支持多个动画同时播放的。其实也是很简单,就是多次调用CALayer的addAnimation函数。比如代码: CALayer *sublayer =[CALayer layer]; sublayer.backgroundColor =[UIColor orangeColo
2015-02-05 15:37:03
1049
原创 Core Animation 基础
Core Animation是一个框架,这里面提供了一些动画效果的封装。这里有个图片,可以看到一些类的关系。CALayer有个函数- (void)addAnimation:(CAAnimation *)anim forKey:(NSString *)key;通过这个函数可以把一个动画对象加到CALayer对象里面,这样就可以实现动画效果了。ios sdk已经帮我们实现了一
2015-02-05 14:48:13
1139
原创 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
2075
转载 转几篇不错的关于REST/RESTful的解释文章
http://www.ruanyifeng.com/blog/2011/09/restful.html
2015-02-03 09:56:24
753
原创 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
4264
OSX服务端+iphone客户端 网络通信小程序
2013-05-16
封装了一个带上下刷新功能的table(UITableView子类)
2012-12-28
WDM驱动-完成例程
2012-12-21
使用DeviceIoControl进行通信(直接方式)
2012-11-23
缓冲区方式WDM驱动例子
2012-11-22
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人