自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(29)
  • 资源 (4)
  • 收藏
  • 关注

原创 CodeProject: 3D Pie Chart.

so cool. http://www.codeproject.com/KB/graphics/julijanpiechart.aspx

2008-12-04 09:50:00 769

原创 MSDN杂志:ASP.NET AJAX 4.0数据驱动的 Web 应用程序的新 AJAX 支持

http://msdn.microsoft.com/zh-cn/magazine/cc972638.aspx

2008-12-04 03:33:00 603

原创 用户方式中线程的同步

几个知识点: 1.线程需要在下面两种情况下互相进行通信: 当有多个线程访问共享资源而不使资源被破坏时; 当一个线程需要将某个任务已经完成的情况通知另外一个或多个线程时。 2.线程同步问题在很大程度上与原子访问有关,所谓原子访问,是指线程在访问资源时能够确保所有其他线程都不在同一时间访问相同的资源。 3.使用互锁函数可以保证以原子操作方式进行:InterlockedExch

2008-09-11 02:46:00 796

原创 线程与内核对象的同步

1.用户方式的线程同步具有速度快的优点。但是它的局限性也是明显的:互锁函数只能在单值上运行,根本无法使线程进入等待状态;可以使用关键代码段使线程进入等待状态,但是只能用这些代码段对单个进程中的线程实施同步;而且使用关键代码段时,很容易进入死锁状态,因为在等待进入关键代码段时无法设定超时值。 2.使用内核对象来实现线程同步的一个不足之处是它的速度比较慢,因为调用线程必须从用户方式转为内核方式。这个

2008-09-08 05:08:00 1095

原创 线程的调度、优先级和亲缘性

几个知识点: 1.使用SuspendThread和ResumeThread来暂停和恢复线程的运行。 2.通过Sleep函数,线程可以告诉系统,它不想在某个时间段内被调度。系统将在大约的指定毫秒数内使线程不可调度。如果给Sleep函数传递0,表示调用线程将释放剩余的时间片,并迫使系统调度另一个线程。 3.系统提供了一个称为SwitchToThread的函数,使得另一个可调度线程(如果存在的话)

2008-09-05 05:52:00 2002

原创 线程的基础知识

几个知识点: 1.线程由两部分组成:线程的内核对象,操作系统用它来对线程实施管理,内核对象也是系统用来存放线程统计信息的地方;另一个是线程堆栈,它用于维护线程在执行代码时需要的所有函数参数和局部变量。 2.线程在它所属的进程地址空间中执行代码,并且在进程的地址空间中对数据进行操作。 3.注意CreateThread函数是用来创建线程的Windows函数。如果你正在编写C/C++代码,绝不应该

2008-09-03 09:13:00 1163

原创 COM(组件对象模型)简单介绍

什么是COM? 简单地说,COM提供了一种在不同的应用程序和语言之间共享二进制代码的规范。COM定义了软件组件互相通讯的方式。它是一种二进制和网络标准,允许任意两个组件互相通讯,而不管它们是在什么计算机上运行(只要计算机是相连的),也不管计算机运行的是什么操作系统(只要该操作系统支持COM),也不管该组件是用什么语言编写的。COM还提供了位置透明性:当使用COM组件时,该组件是进程内Dll、本地

2008-09-03 03:22:00 24132 4

原创 排序算法之冒泡排序

作者:hustwing         hustwing@126.com  MSN: hustwing@hotmail.com 冒泡排序算是排序算法中比较有名的了,初学排序之时,我们经常拿它来开刀,大学时学习C语言,老师讲的第一个排序算法就是冒泡。然而它的效率低也是众所周知的。只要说起冒泡,大家无不皱起眉头,仿佛用了冒泡就说明你这个人完全没有考虑效率。但是,其实又有多少人真的理解冒泡呢? 我之

2008-08-28 01:14:00 1012

原创 螺旋队列

作者:hustwing         hustwing@126.com  MSN: hustwing@hotmail.com 我最先在《程序员面试宝典》上看到的一个题目: 【题目】 21  22  23  24  25 20  7   8   9   10 19  6   1   2   11 18  5   4   3   12 17 16  15 

2008-08-26 07:07:00 766

原创 以小见大:从小函数实现看应聘者的编程素质(atoi.strcmp...)

作者:hustwing         hustwing@126.com  MSN: hustwing@hotmail.com 在程序员面试的时候,面试官通常会让你实现一个或几个C语言里的库函数,以此来检查你的编程功底。类似的函数实现有atoi.itoa.atof.strcmp.strcpy.memset.memcpy等等。 在平时的编程中,我们可能极少有机会要自己实现这些函数。但是面试官却很

2008-08-26 03:03:00 4466 1

原创 作业

几个知识点: 1.Windows提供一个称为"作业"的内核对象,使我们能够将进程组合在一起,作为单个进程组来处理,并且创建一个"沙箱",以便限制进程能够进行的操作。可以将作业对象视为进程的容器。创建包含单个进程的作业也是有用的,这样就可以对进程加上通常情况下不能加的限制。 2.作业创建后,通过SetInformationObject可以给作业加上若干不同类型的限制,以便限制作业中的进程能够进行

2008-08-25 13:31:00 816

原创 进程

几个知识点: 1.进程通常被定义为一个正在运行的程序的实例。它由两个部分组成:一个是操作系统用来管理进程的内核对象。另一个是地址空间,它包含所有可执行模块或DLL模块的代码和数据,还包括动态内存分配的空间,如线程堆栈和堆分配空间。 2.Windows应用程序必须拥有一个在应用程序启动运行时调用的进入点函数。可以使用的进入点函数有4个:WinMain、wWinMain、main和wmain。操作

2008-08-25 03:15:00 828

原创 内核对象

几个知识点: 1.内核对象是由内核拥有的对象,可以供系统和应用程序使用来管理各种各样的资源。如事件对象、文件对象、文件映射对象、I/O完成端口对象、互斥对象、管道对象等等。 2.系统采用使用计数的机制来撤销对象。内核对象能够得到安全描述符的保护。安全描述符用于描述谁创建了该对象,谁能够访问或使用该对象,谁无权访问该对象,安全描述符通常在编写服务器应用程序时使用。 3.用于判断一个对象究竟是用

2008-08-20 08:41:00 931

原创 尝试调试Fastfat(Fat32)文件系统

本文内容: 说一下怎么才能够调试FAT文件系统,其实步骤比较简单,但是当我第一次想要调试它的时候还是一头雾水,不知道从何下手,驱网上一个网友(dreamsity,again,Thank you!)告诉了我一些基本的步骤和注意事项,我按自己的实践整理成了本文,希望对后来者有所帮助。 调试动机: 没有人愿意没事就调着文件系统玩儿,而且,要实现基于源代码级的调试,你得首先要有源代码才行。我是在自己

2008-08-20 02:18:00 4269 1

原创 Unicode字符问题

几个知识点: 1.Windows98 只支持ANSI,只能为ANSI开发应用程序。 2.Windows2000及以后既支持Unicode,也支持ANSI,因此可以为任意一种开发应用程序,但是需要明白的是,内核只处理了Unicode,系统在处理ANSI时,需要先转换为Unicode,然后将其传递给操作系统,操作系统处理完后,系统再将Unicode转换成ANSI字符串返回给应用程序。 3.Win

2008-08-19 08:28:00 908

原创 对程序错误的处理及C#版的Windows错误码查询

几个知识点: 1.当Windows函数返回值为BOOL时,如果函数运行失败,则返回0值,否则返回非0值。最好对返回值进行测试,以确定它是0还是非0。不要测试返回值是否为TRUE。 2.当返回值为HANDLE时,通常都是失败就返回NULL,但有时函数会返回一个被定义为-1的INVALID_HANDLE_VALUE值。因此,使用函数的时候应该查阅平台SDK文档,以确定返回值是什么。 3.从系统内

2008-08-15 07:22:00 2847

原创 C++基础:指针和const限定符

指针和const限定符之间存在着两种交互类型:指向const对象的指针和const指针。两种类型的含义相信都不难理解(下文马上介绍),但是在具体的应用环境下,相信还是会有很多初学者犯迷糊。尤其是面临找工作的初学者,如果不能弄清const和指针之间的一些细致的区别和联系,可能会给你的笔试或面试带来麻烦。本文的所有基础知识均来源于《C++ Primer》中文版第四版,P110页,去读读吧:)当

2008-07-30 08:36:00 1063

原创 2008百度算法大赛,again,miss it!

2006的时候,就想着参加百度算法比赛,记得那时是临近毕业的时候,可惜注册了以后,一直都没怎么关注,甚至连比赛都没有参加。07年的时候在外出差,也是不可能参加了,今年的这次是我很重视的一次,一方面借这个机会可以锻炼一下自己的算法思维,也看看自己到底是个什么水平;另则,马上要找工作了,正好顺便复习一下自己的算法,若是能够得奖,也将是自己找工作时的一个重要砝码。之前的准备还是很充分,但是昨晚和兄弟

2008-06-01 20:21:00 1379

原创 百度之星算法大赛往年试题(1)

本年度(2008)的百度之星算法大赛马上就要开始了,最近在疯狂地补算法,最大的希望是能够通过初赛,o(∩_∩)o...哈哈题目描述:一个正整数有可能可以被表示为n(n>=2)个连续正整数之和,如: 15=1+2+3+4+5 15=4+5+6 15=7+8 请编写程序,根据输入的任何一个正整数,找出符合这种要求的所有连续正整数序列。  输入数据:一个正整数,以命令行参数的形式提供给程序。 输出数

2008-06-01 11:39:00 1896

原创 不用额外空间的整数交换以及时间复杂度为O(n)空间复杂度为O(1)的排序算法

一看题目这么长,聪明的你肯定已经猜到了这是个标题党。据说这个某个公司的招聘题,某个追求时间和空间极限的bt程序员某个时间脑袋灵光一闪,搞出来这些个所谓的nb算法,然后再自豪地把它们呈给那些技术面试官,让他们用这些来测测我们这些普通程序员的脑袋是否灵光。然而,网络的发达或许让他们的这一想法完全落空,本来就是些高中生都能看懂的算法(似乎我没有夸张),加上网络一传播,地球人都知道了。所以到最后,也只

2008-05-29 07:36:00 5665 3

原创 在C语言中编写支持可变参数的函数

在C语言中,支持可变参数是通过几个宏来实现的,支持可变参数的函数参数表中声明为...(除正常参数外,其余声明为三个点儿),然后使用va_list、va_start、va_arg、va_end来访问不定的参数。下面给出一个求n_values个数的平均数的例子。//支持可变参数 float average(int n_values,...) {     va_list var_arg;    

2008-05-28 03:07:00 871

原创 Fibonacci数列的非递归实现

记得在我们最开始学习C语言的时候,每当讲到递归,无论是课本上,还是老师,都会给出两个经典例子的递归实现,其中一个就是阶乘,另外一个就是Fibonacci(中文多译成斐波那契)数列了。用递归方法计算阶乘的代码如下://递归计算阶乘 long Factorial(int n) {     if (n     {         return 1;     }     return n *

2008-05-27 00:09:00 21284 1

原创 使用WinDbg和虚拟机调试Windows驱动程序

本文范围和说明: 本文只讲解具体的操作过程,不涉及详细的原理,若要深入了解,请参阅Debugging Help(Debugging Tools For Windows); 文中使用Virtual PC 2007作为虚拟机,但对于Virtual PC的其他版本或者VMWare都适用(VMWare设置命名管道的方式有点小不同)。 WinDbg更新很快,几乎月月有更新,下面是微软网站的下载链

2008-05-05 23:47:00 5710 1

原创 指定自定义属性不可用代码生成器赋值

在WinForms编程中,我们经常会用到UserControl或者编写自己的Control,但是,当我们为Control定义一个属性的时候,不希望控件的使用者通过设计器对控件的该属性进行赋值。更显而易见的一个问题是,设计器会为该属性生成缺省的赋值代码,有时候,这样的赋值代码会导致该控件以及使用了该控件的其他控件或窗口无法在设计器中打开。这个时候,给该属性加上Browsable和DesignerSe

2008-05-05 09:59:00 1107

原创 只允许输入数字的TextBox

或许你对这篇文章不屑一顾,因为要实现TextBox只输入数字或其他你要求的什么乱七八糟的咚咚,是一件及其easy的事情。处理TextChange或Validate事件或者其他方法都可以轻易做到。但下面的代码是一个全新的思路,可能你要鄙视我,但是当时我看到这段代码时,真的是相当景仰。public class NumberBox : System.Windows.Forms.TextBox{ 

2008-04-24 17:34:00 784

原创 驱动程序一般调试手段及方法

Windows驱动程序的难于调试是众所周知的,调试步骤繁琐,而且内核环境下固有的多线程环境和代码执行的顺序不确定性,更增加了调试的难度,我自己感觉最好的办法,就是利用DbgPrint(我自己则最常使用KdPrint)打印出足够多的信息,以便于我们分析。下面是一些打印出详细trace的一些手段:利用__LINE__ __FILE__以及__FUNCTION__定位代码位置 这几个编译器指

2008-04-24 16:34:00 1524 2

原创 文件系统过滤驱动(开篇)

"Welcome to the "how hard could it be to write an encryption filter?" club.  It may not make you feel better, but you are merely the latest in a string of people asking these same questions for the pa

2008-04-24 15:14:00 937

原创 让窗口随鼠标左键移动

在窗口程序的开发中,我们经常会需要当用户鼠标点击窗口的任何地方时,能够让窗口随鼠标一起移动。特别是当你的WinForms窗口没有窗口栏(Form.FormBorderStyle = None),用户无法通过点击窗口栏移动窗口时,这种实现就很必要了。应该有很多方法可以实现,我自己发现了两种方法:一种方法就是自己编程实现窗口的位置随鼠标改变;另一种就是直接利用Windows的API。废话不多说了,

2008-04-19 14:05:00 2739

原创 Just Trick!

C# trick里面,记录一些我自己的C#程序设计经验,我在本科刚刚毕业以后(2006年9月份左右的时候)开始接触C#(在此之前,我把C#读作"C井"),之前只有only a little的java程序编写经验(在好友(again,Thank you!CR)的手把手指导下,编过一个作业,MD5算法程序,用JBuilder拖了一个窗口,然后直接调了java的MD5类库,受到了当时老师的点名批评)。对

2008-04-19 13:30:00 785

冒泡排序算法(前向冒泡,后向,双向)

冒泡排序算法,包含前向冒泡、后向冒泡以及双向冒泡

2008-08-27

驱动程序打印调试信息源代码

打印IRP的Flags值、打印FILE_OBJECT的Flags值、打印Volume的DeviceType值以及打印FILE_OBJECT结构中的BOOLEAN值设置、打印当前进程或给定进程的进程名、打印FileInformatinClass的字符串值等等

2008-04-24

Filemon_v4.34源代码

Filemon的可执行程序以及源代码

2008-04-24

Osr_NtStatusToString

Osr上将NTSTATUS值转换成对应字符串值的源代码

2008-04-24

空空如也

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

TA关注的人

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