- 博客(210)
- 资源 (44)
- 收藏
- 关注
原创 《Windows核心编程系列》十谈谈同步设备IO与异步设备IO之异步IO
http://blog.csdn.net/ithzhang/article/details/8316171 同步设备IO与异步设备IO之异步IO介绍 设备IO与cpu速度甚至是内存访问相比较都是比较慢的,而且更不可预测。虽然如此,通过使用异步设备IO我们仍然能够创造出更高效的程序。
2012-12-18 20:45:55 8382 4
原创 《Windows核心编程系列》九谈谈同步设备IO与异步设备IO之同步设备IO
http://blog.csdn.net/ithzhang/article/details/8307633同步设备IO所谓同步IO是指线程在发起IO请求后会被挂起,IO完成后继续执行。 异步IO是指:线程发起IO请求后并不会挂起而是继续执行。IO完毕后会得到设备的通知。而IO完成端口就是实现这种通知的很好的一种方式。 线程是我们开发高性能、响应性好的一个必不可少
2012-12-17 15:31:07 4712
原创 《Windows核心编程系列》八谈谈用内核对象进行线程同步
http://blog.csdn.net/ithzhang/article/details/8291027转载请注明出处!使用内核对象进行线程同步。 前面我们介绍了用户模式下线程同步的几种方式。在用户模式下进行线程同步的最大好处就是速度非常快。因此当需要使用线程同步时用户模式下的线程同步是首选。 但是用户模式下的线程同步也存在缺点。如InterLocked
2012-12-13 15:46:29 5495 6
原创 Windows Socket 非阻塞模式开发
非阻塞套接字 非阻塞模式是指:套接字在执行操作时,调用的函数不管操作是否完成都会立即返回的工作模式。 非阻塞套接字在处理同时建立的多个连接等方面具有明显的优势。但是使用过程中有一定的难度。由于函数在操作没有完成后也仍然会返回,为了实现某些功能必须循环调用,直到完成功能为止。因此非阻塞模式会使程序效率非常低。 把套接字设置为非阻塞模式,即告诉系统:在调用W
2012-12-09 11:38:08 40251 10
原创 零基础学习COM之COM库和类厂介绍
在windows系统中,注册表是一个正式的共享系统数据库。注册表中包含关于系统软硬件以及配置和用户的各种信息。在COM技术中使用注册表存储关于组件的信息。客户可以再注册表中搜索它需要的组件。 注册表有许多关键字构成的层次结构。每个关键字又可以有一些列子关键字、以及值。使用regedit.exe可以编辑、查看注册表。 在注册表HKEY_CLASSES_ROOT分支下有一个
2012-11-24 09:36:30 3973 1
原创 零基础学习COM之IUnknown抽象接口介绍
零基础学习COM之IUnknown抽象接口介绍 传统的软件由单个的二进制文件组成。组件将单个二进制文件分割为多个独立的部分,每个部分都被称为一个组件。采用组件技术后,在需要对程序进行修改和改进时,只需替换某个组件模块即可。 在开发程序时可以从组件库中选择合适的组件快速构造出满足需要的应用程序。这大大提高了程序的可维护性和开发效率。 组件化程序设计思想
2012-11-24 08:36:12 9969 2
转载 DLL中.def文件的使用
DLL中导出函数的声明有两种方式:一种为在函数声明中加上__declspec(dllexport),这里不再举例说明;另外一种方式是采用模块定义(.def) 文件声明,.def文件为链接器提供了有关被链接程序的导出、属性及其他方面的信息。首先创建 一个DLL程序,.cpp中[cpp] view plaincopyprint?int __stdcall A
2012-11-21 15:04:08 13375
转载 dll添加.def文件与直接在需要导出的函数定义处指定_declspec( dllexport )有区别吗?
为dll添加.def文件与直接在需要导出的函数定义处指定_declspec( dllexport )有区别吗?如果有是什么区别?我发现在outdll.c中这样指定:__declspec( dllexport ) HRESULT DllGetClassObject (REFCLSID rclsid, REFIID riid, void **ppv)会产生编译错误:1>------ B
2012-11-21 14:52:22 1949
转载 从def中获得lib文件
程序使用dll时需要lib 文件,下载sqlite3时只能得到def和dll文件,所以可以使用lib 命令生成一个lib ,过程如下1)将C:/Program Files/Microsoft Visual Studio 8/VC/bin放在环境变量path中2)启动CMD,进入到放def 文件的目录3)lib /DEF :sqlite3.def /machine:IX8
2012-11-21 14:51:28 1862
原创 C++学了这么多年,你仍不知道的事!!!
C++学了这么多年你知道为什么定义类时,类的定义放在.h文件中,而类的实现放在cpp文件中。它们为什么能够关联到一起呢?你知道什么东西可以放在.h文件中,什么不能。什么东西又可以放在cpp文件中。如果你忘记了或是压根就不明白,那么读过此文你会清晰无比!! 首先谈下声明与定义的区别。 声明是将一个名称引入程序。定义提供了一个实体在程序中的唯一描述。声明和定义有时是
2012-10-27 19:43:14 41550 88
原创 《windows核心编程系列》七谈谈用户模式下的线程同步
http://blog.csdn.net/ithzhang/article/details/8066658转载请注明出处!用户模式下的线程同步 系统中的线程必须访问系统资源,如堆、串口、文件、窗口以及其他资源。如果一个线程独占了对某个资源的访问,其他线程就无法完成工作。我们也必须限制线程在任何时刻都能访问任何资源。比如在一个线程读内存时要限制其他线程对此块内存进行写入。
2012-10-13 09:51:53 5889 2
转载 你想错了,并不是所有指针都是4字节。
以前自己也一直认为, 指针都一样,32机器的寻址是32位,大小都是4,原来,我一直是错的,成员函数指针的大小就不是4,不过,它应该不是普通的函数指针,看来自己以前对成员函数指针的理解太过于幼稚和肤浅了。 本文将对成员函数指针的一点点小小的总结。 自己只是作了下简单的测试,如下测试如下:[cpp] view plaincopy
2012-10-08 10:18:21 5452
转载 秒杀多线程第十二篇 多线程同步内功心法——PV操作上 .
阅读本篇之前推荐阅读以下姊妹篇:《秒杀多线程第四篇一个经典的多线程同步问题》《秒杀多线程第五篇经典线程同步关键段CS》《秒杀多线程第六篇经典线程同步事件Event》《秒杀多线程第七篇经典线程同步互斥量Mutex》《秒杀多线程第八篇经典线程同步信号量Semaphore》《秒杀多线程第九篇经典线程同步总结关键段事件互斥量信号量》《秒杀多线程第十篇生产者消费者问题》《秒杀
2012-10-08 08:38:44 2364
原创 《windows核心编程系列 》六谈谈线程调度、优先级和关联性
http://blog.csdn.net/ithzhang/article/details/8046723转载请注明出处!线程调度、优先级和关联性 每个线程都有一个CONTEXT结构,保存在线程内核对象中。大约每隔20ms windows就会查看所有当前存在的线程内核对象。并在可调度的线程内核对象中选择一个,将其保存在CONTEXT结构的值载入cpu寄存器。这被称为上下文切换。
2012-10-08 08:06:20 11610 3
原创 《windows核心编程系列》五谈谈线程基础
http://blog.csdn.net/ithzhang/article/details/8046721,转载请注明出处! 线程基础 与前面介绍的进程一样,线程也有两部分组成。一个是线程内核对象。它是一个数据结构,操作系统用它来管理线程以及用它来存储线程的一些统计信息。另一个是线程栈,用于维护线程执行时所需的所有函数参数和局部变量。位于同一个进程
2012-10-08 07:57:08 7790 11
原创 运输层TCP协议详细介绍
TCP是TCP/IP协议族中非常复杂的一个协议。它具有以下特点: 1:面向连接的运输层协议。在使用TCP协议之前,首先需要建立TCP连接。传送数据完毕后,必须释放已经建立的TCP连接。 2:一条TCP连接有两个端点,连接是点对点的。 3:提供可靠交付的服务。通过TCP连接传送的数据,不会出现差错不会丢失并且按序到达。 4:提供全双工通信。TCP允许通信双方的
2012-09-19 14:53:26 8705 4
原创 Dll释放可执行文件
Dll释放可执行文件用途很广泛。一种实现木马注入的方法就是将dll加载到某进程的地址空间后释放木马。接下来介绍下详细的步骤,为后来者提供参考。 需要释放的文件首先必须以资源的形式存储在dll中。然后被读取、写入文件等。 创建dll的步骤就不介绍了。不明白的可以参考我的博客《windows核心编程系列》谈谈dll。http://blog.csdn.net/ithzh
2012-09-19 14:24:35 4225
转载 如何在dll中添加资源
文章转载自http://blog.csdn.net/na_he/article/details/2451822在DLL中使用资源现在最常看见的关于DLL的问题 就是如何在DLL中使用对话框,这是一个很普遍的关于如何在DL L中使用资源的问题。这里我们从Win32 DLL和MFC D LL两个方面来分析并解决这个问题。1.Wi n32 DLL 在Win32 DLL
2012-09-19 11:16:45 6052
转载 在EXE和DLL中,FindResource的区别
在EXE和DLL中,FindResource的区别 以下的代码在EXE中,执行无误。可是在DLL中FindResource返回的值就为0了,我用::GetLastError(),得出的值是1813,也就是取不到资源,这是为什么?BOOL ExtractFile(char *szZlibFile,DWORD dwRID){ HANDLE hFile
2012-09-19 11:10:46 6889
转载 快排
void quicksort(int num[],int start,int end){ int key=num[start]; int prev = start; int last = end; //结束条件必不可少,否则将会进入死循环。 if(prev >= last) { return; } while(prev < last) { while
2012-09-12 08:47:20 1707
原创 《windows核心编程系列》四谈谈进程的建立和终止
http://blog.csdn.net/ithzhang/article/details/7927682转载请注明出处!第二部分:工作机理第一章:进程上一章介绍了内核对象,这一节开始就要不断接触各种内核对象了。首先要给大家介绍的是进程内核对象。进程大家都不陌生,它是资源和分配的基本单位,而进程内核对象就是与进程相关联的一个数据结构。操作系统内核通过它管理进
2012-08-31 09:23:18 11870 5
原创 《windows核心编程系列》三谈谈内核对象及句柄的本质
2012、8、29http://blog.csdn.net/ithzhang/article/details/7920204转载请注明出处! 内核对象 本章讨论的是相对抽象的概念,不涉及任何具体的内核对象的细节而是讨论所有内核对象的共有特性。首先让我们来了解一下什么是内核对象。内核对象通过API来创建,每个内核对象是
2012-08-29 14:45:52 12766 12
翻译 为什么浏览器会使用多进程架构。
在使用浏览器时偶然发现虽然仅仅打开一个标签页,但是在任务管理器内发现有多个浏览器进程在运行,占用了不小的内存,当时很纳闷:为什么一个浏览器却需要多个进程呢?不经意间在网上发现这篇文章,以Google chrome浏览器为例,讲解了使用多进程构架的浏览器。翻译给大家,希望对有英语阅读困难的同学有所帮助,第一次翻译技术文章,好多术语不明白啥意思,也没有搜到都是凭理解翻译的。如cross-site fr
2012-08-28 21:12:29 12769 4
原创 《windows核心编程系列》二谈谈ANSI和Unicode字符集
2012、8、28http://blog.csdn.net/ithzhang/article/details/7916732转载请注明出处!!第二章:字符和字符串处理 使用vc编程时项目--》属性--》常规栏下我们可以设置项目字符集合,它可以是ANSI(多字节)字符集,也可以是unicode字符集。一般情况下说Unicode都是指UTF-16。也就是说每个字符编码为两个字节。65535个字符
2012-08-28 16:29:02 9578 3
原创 《windows核心编程系列》一谈谈windows中的错误处理机制
谈谈windows核心编程系列 2012、8、27http://blog.csdn.net/ithzhang/article/details/7912489转载请注明出处!! 错误处理 我们写的函数会用返回值表示程序执行的正确与否,使用void,就意味着程序一定不会出错。Bool类型标识true时
2012-08-27 15:47:11 7938 2
原创 Vc调用matlab导出的dll,实现vc与matlab混合编程
Vc调用matlab导出的dll,实现vc与matlab混合编程 写这篇博客的目的就是想把前段时间的工作交接下,让后来人接手这个项目的人迅速的入门。文章虽短,在项目初期可是搜刮了很多资料花了不少的时间。 为了与win7兼容,matlab应该安装2010a或2010b。Matlab7导出的dll在win7下的vc2010中不兼容。1:首先为matlab选择编译
2012-07-21 16:10:16 7874 4
转载 常见的计算机专业词汇
作为计算机相关专业学生,面试或者笔试时不可避免地会遇到与专业相关的问题,而考核专业问题的时候,又不可避免地涉及到很多专业词汇,这就需要求职者掌握好常见的专业词汇,才能在阐述问题时得心应手,避免出现表达错误引起误解。以下是计算机专业常见相关词汇。5.4.1 计算机专业相关课程计算机导论 Introduction to Computer Science
2012-07-18 08:27:54 34299 6
转载 堆与堆排序
堆排序与快速排序,归并排序一样都是时间复杂度为O(N*logN)的几种常见排序方法。学习堆排序前,先讲解下什么是数据结构中的二叉堆。二叉堆的定义二叉堆是完全二叉树或者是近似完全二叉树。二叉堆满足二个特性:1.父结点的键值总是大于或等于(小于或等于)任何一个子节点的键值。2.每个结点的左子树和右子树都是一个二叉堆(都是最大堆或最小堆)。当父结点的键值总是大于或等于任何一个子节
2012-07-14 15:32:39 1876
原创 内功修炼之操作系统学习(四:存储管理)
四:存储管理存储器管理负责管理计算机系统中重要的资源---主存储器。任何程序和数据必须载入到主存中才得以执行和处理,因此存储器管理的优劣直接影响系统的性能。 主存分为两部分:一部分是系统区,用于存放操作系统内核程序和数据结构等。另一部分是用户区,用于存放应用程序和数据。 计算机系统采用层次结构的存储系统。以便在容量大小、速度快慢、价格高低等诸多因素中取得平衡。它分为五个
2012-07-05 20:38:37 3536 1
原创 内功修炼之操作系统学习(三:同步、通信及死锁)
内功修炼之操作系统学习三:同步、通信及死锁 进程并发性是指一组进程的执行在时间上是重叠的。所谓时间重叠是指一个进程执行第一条指令是在另一个进程执行完最后一条指令之前开始的。从宏观上来看,并发性反映一个时间段内有几个进程都处于运行态但尚未结束的状态。从微观上来看,任一时刻仅有一个进程的一个操作在处理器上执行。现代计算机硬部件能同时进行工作,程序的编制决定不同硬部件并行工作的能力。好的
2012-06-30 17:48:37 4235
原创 内功修炼之操作系统学习(二:处理器管理)
处理器管理 处理器管理是操作系统的重要组成部分,它负责调度、管理和分配处理器并控制程序的执行。处理器管理中最重要的是处理器调度,即进程调度,也就是控制、协调进程对处理器的竞争。为了提高并发粒度和降低并发开销,现代操作系统引进了线程的概念,此时进程仍然是资源分配和保护的单位。 处理器包括控制器、运算器和寄存器。如果计算机系统只有一个运算器则被称为单处理器,如果包含多个则被称为多处
2012-06-25 10:50:08 7309
原创 内功修炼之操作系统学习(一操作系统概述)。
一:操作系统概述。 操作系统:管理系统资源、控制程序运行、改善人机界面、提供各种服务,并合理组织计算机工作流程和为用户方便而有效的使用计算机提供良好的运行环境的最基本的系统软件 。 传统的操作系统中是指运行在核心态、受硬件保护的软件,shell和window模块不属于操作系统的一部分。随着客户--服务器结构操作系统的出现,传统上被认为是操作系统核心的组建,如文件系统、主存管理、
2012-06-23 16:47:54 3869
转载 软件开发之动物庄园
每一软件开发团队中的不同成员都拥有不同的角色、承担不同的责任,从而完成不同的使命。在一个新建的团队或者是创业型团队中,根据他们各自的投入程度,存在着三种主要分工:猪、鸡和鹦鹉。这三种角色各自承担着怎样的职责和风险呢?图片来自网络 在一个神奇的国度里生活着许多动物,其中有猪,鸡和鹦鹉。 它们每天搞头脑风暴,琢磨如何创业,最后鹦鹉提议它们合伙开一个早餐店。具
2012-06-15 14:53:07 2261
原创 深入浅出MFC学习笔记(第9章:消息映射与命令传递。)
第九章:消息映射与命令传递。 本章将会对MFC的消息映射和 命令传递机制做深入探讨。 MFC规定了消息传递的路线,消息会按照这个路线传递下去,找不到归宿的话就交给DefWindowProc。 在产生窗口之前,如果我们在创建窗口时指定的窗口类为NULL时,MFC会自动注册五个默认的窗口类,每个窗口类有自己的窗口函数。不同窗口得到的消息应该交由不同的窗口函数来处理。所谓的
2012-06-15 09:59:06 4447 1
原创 深入浅出MFC学习笔记(第8章:Document----View深入探讨)
第八章:Document----View深入探讨 MFC之所以为应用程序框架,最重要的特征就是他能够将管理数据的程序代码和负责数据显示的程序代码分离开来。这种能力由文档视图结构提供。Document在MFC的CDocument中被实例化,它本身就是一个空壳,当开发自己的程序时,应该从CDocument派生出一个属于自己的CMyDocument类,并且在类中声明一些成员变量,用以容纳数据。
2012-06-15 08:42:58 7687 1
原创 深入浅出MFC学习笔记(第7章:简单而完整的MFC骨干程序)
第七章简单而完整的MFC骨干程序。 这一章主要是剖析有AppWizard产生的完整的MFC骨干程序。 首先要熟记MFC类层次结构,这是理解MFC构建的前提。 MFC层次结构图:文档视图结构是MFC进化为应用程序框架的灵魂,在MFC中CDocument负责处理数据,它只是个空壳,我们可以重写Serialze函数,派生符合我们需求的类。与CDocument相辅相成的是CV
2012-06-15 08:31:24 3005 2
原创 深入浅出MFC学习笔记(第6章 :MFC程序的生死因果)
第六章 :MFC程序的生死因果本章主要是从MFC程序代码中,找出一个windows程序原本该有的程序入口点、窗口类注册、窗口产生、消息循环、窗口函数等操作。抽丝剥茧彻底理解一个MFC程序的诞生与结束。MFC程序需要windows C runtime函数库、DLL import函数库以及MFC函数库。Windows C runtime函数库为:LIBC.LIB 静态链接版本MS
2012-06-08 10:41:24 5033
转载 TRACE宏的使用方法
TRACE宏对于VC下程序调试来说是很有用的东西,有着类似printf的功能;该宏仅仅在程序的DEBUG版本中出现,当RELEASE的时候该宏就完全消失了,从而帮助你调试也在RELEASE的时候减少代码量。使用非常简单,格式如下: TRACE("DDDDDDDDDDD"); TRACE("wewe%d",333); 同样还存在TRACE0,TRACE1
2012-06-07 15:59:16 3989 1
原创 深入浅出MFC学习笔记(第三章:MFC六大关键技术之仿真:命令传递) .
命令传递(Command routing) 消息如果是仅仅从派生类流向父类,那就非常简单了。然而MFC用来处理消息的C++类,并不是单线发展的。document/view也具有处理消息的能力。因此,消息应该有横向流动的机会。 MFC对消息循环的规定为: 1:若是一般的windows消息(WM_xx)则一定是由派生类流向基类。 2:如果是WM_COMMAN
2012-06-06 14:24:06 3699 2
原创 深入浅出MFC学习笔记(第三章:MFC六大关键技术之仿真:消息映射)
消息映射机制SDK编程中,一般处理消息的方法就是使用switch/case判断消息的类型,然后进行响应。更模块化的方法是使用第一章介绍的消息映射表的方法,把消息和消息处理函数关联起来。应该为每个需要处理消息的类构建一个消息映射表,并将基类与派生类的消息映射表连接起来。当窗口函数比较消息时,就沿着这条继承路线传递下去。 为了实现这个目的我们仍然使用两个宏,完成这个功能复杂的构建。首先定义
2012-06-05 21:04:44 3198
虚函数的原理,虚函数实现方式
2011-08-23
live555类关系结构图
2014-07-25
E:\233\ebook
2014-07-25
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人