- 博客(210)
- 资源 (44)
- 收藏
- 关注
原创 浅谈windows句柄表
浅谈windows句柄表 windows定义了很多内核对象:进程对象、线程对象、互斥量对象、信号量对象、事件对象、文件对象等等。在调用相应的函数创建这些对象后,我们都可以通过HANDLE类型的句柄来引用它们。或许你在一些书上看到过说句柄相当于指针,它指向具体的对象。在某种程度上来说这是不错的,但是进一步深入探究时就会发现这样的说法很不准确。说到句柄就不能不提句柄表,句柄必须通过句柄表才能找到所引用
2013-03-22 22:15:40 10259 3
转载 视频文件的容器格式和编码格式
人们设定了不同的视频文件格式来把视频和音频放在一个文件中,以方便同时回放,实际上都是一个容器里面 包裹着不同的轨道。容器是用来区分不同文件的数据类型的,而编码格式则由音视频的压缩算法决定,我们一般所说的文件格式或者是后缀名指的就是文件的容器。对于一种容器,可以包含不同编码格式的一种视频和音频。 文件格式(容器): AVI (*.avi) 其含义是Audio Video Interacti
2013-03-14 18:14:44 5364
原创 windows程序员进阶系列:《软件调试》之五windows操作系统概要
windows程序员进阶系列:《软件调试》之五:Windows操作系统概要 操作系统是计算机系统中的基本软件。它负责管理系统中的软硬件资源。通常都包括文件管理、内存管理、进程管理、打印管理、网络管理等基本功能。除此之外,支持调试也是操作系统设计的一项根本任务。 从被调试对象的角度来看,可以把操作系统的调试支持分为以下三个方面: 一:对应用程序的调试。即如何简单高效的
2013-03-13 21:31:44 10282 4
转载 asf文件结构
最近一个月经理让我把我公司.vm4格式的video文件,封装成MS的ASF文件。ASF文件是一个容器。理论上来说,可以包容各种video文件。这些文件可以用MS自己的codec,也可用第三方的codec。ASF主要有三个部分组成(我们把这些部分叫做对象):文件头对象,数据对象,索引对象!E文:Header Object ,Data Object, Index ObjectHeader Object
2013-03-11 18:11:53 2237
转载 音视频基础 、IPB帧及其特点
基本概念讲解媒体:是表示,传输,存储信息的载体,常人们见到的文字、声音、图像、图形等都是表示信息的媒体。多媒体: 是声音、动画、文字、图像和录像等各种媒体的组合,以图文并茂,生动活泼的动态形式表现出来,给人以很强的视觉冲击力,留下深刻印象多媒体技术:是将文字、声音、图形、静态图像、动态图像与计算集成在一起的技术。它要解决的问题是计算机进一步帮助人类按最自然的和最习惯的方式接受和处理信息。流媒体 :
2013-03-10 21:12:08 6612 2
原创 windows程序员进阶系列:《软件调试》之O--- WinDbg使用介绍
windows程序员进阶系列:《软件调试》之O--- WinDbg使用介绍 拥有一个顺手的武器是每一个武林高手梦寐以求的。对于windows程序员来说,WinDbg调试器就是我们的武器。熟练使用调试器能大大提高我们的调试能力。本博文将详细介绍涉及到WinDbg调试器的基本使用方法以及在实际调试过程中经常使用到得各种命令和技巧。 WinDbg是一个功能非常强大的调试器。它支持多
2013-03-03 13:02:40 26766 5
转载 CRT初始化 (参考自MSDN)
CRT Initialization This topic describes how the CRT initializes global states in native code. By default, the linker includes the CRT library, which provides its own startup code. This startup c
2013-02-14 14:46:07 3495
转载 #pragma 的用法
在所有的预处理指令中,#Pragma 指令可能是最复杂的了,它的作用是设定编译器的状态或者是指示编译器完成一些特定的动作。#pragma指令对每个编译器给出了一个方法,在保持与C和C++语言完全兼容的情况下,给出主机或操作系统专有的特征。依据定义,编译指示是机器或操作系统专有的,且对于每个编译器都是不同的。 常用参数 1.message 参数 2.code_seg 3.#pragma once 4
2013-02-13 10:57:09 3038
转载 PE文件详解
参考数据书籍:《加密与解密(第三版)》 看雪论坛PE文件学习笔记整理:自己学习PE文件的一个总结,只是一个起步,对PE文件的概念的一个学习吧,属于比较菜的阶段,学习完这一部分之后就要先放下一段时间来做更正要的事情了。PE文件之后的应用之后再慢慢的学习吧。希望可以给我同时也给你们带来一些帮助。图是来自己截的图,有书上的,有自己实际操作的。如果需要的话可以Q我我发给你,包括这个word。
2013-02-13 10:18:49 4168
转载 main函数前的秘密
如何让一段代码跑在main()函数前面。一个熟练的C++开发者能够轻易给出答案,即静态初始化。 除此之外,下面讲一个VC里的方法。int initBeforeMain(){ printf( "initBeforeMain (%p)\r\n", initBeforeMain ); return 0;}int init2BeforeMain(){ printf( "in
2013-02-13 09:45:36 2426
转载 DPL RPL CPL区别与联系
先说说他们的含义和存储的位置!PL:Privilege Level.特权级CPL(Current):当前任务的特权级!内核态的时候,CPL = 0,用户态的时候,CPL = 3;linux中只用了这两个!他的值存在CS或者SS的低两位!DPL(Descriptor):描述符特权级!存在段描述符中。规定访问该段的权限级别。RPL(Request):请求特权级别!存在与段选择符的低两位。RPL是用来做
2013-02-12 17:52:56 2938 1
转载 搭讪技巧,希望所有单身的程序员兄弟都有女朋友哦!!
刚搭讪认识的妹子,匆匆互留电话号码,彼此了解有限,该如何通过短信与MM聊天呢?因为搭讪建立的安全感不会很高,所以认识之后不适合马上进入追求程序,下面我们先列举一些错误的短信聊天方式,看看你中枪了没有吧…… 一些错误的短信聊天方式: 单刀直入型:“今天有空一起吃饭吗?”(太着急了,没有铺垫,女孩一般不喜欢,当然也有很爷们的那种会愿意。) 户籍管理型:“你好,我叫xxx,在yyy上班,
2013-02-04 21:03:29 3937 3
原创 关于本博客
本博客大部分博文均属原创,转载都有注明。 好多人问我博客是自己感悟出来的还是从书上抄的。只能说是二者的结合。因为我读书有个习惯就是做阅读笔记,而博文就是对自己学习过程的记录。当然避免不了的参考书上的东西,我想大部分人写书也都会参考别人的书籍,要不然书的最后一页也不会出现那么多参考目录。 写博客也是为了加深自己对知识的理解,因为写博客已经成为我的一种习惯。再者博客也可以更好的在记录我
2013-02-04 16:56:39 2042 2
原创 windows程序员进阶系列:《软件调试》之四:断点和单步调试
windows程序员进阶系列:《软件调试》之四:断点和单步调试 断点和单步调试是两个经常使用的调试功能,也是调试器的核心功能。在第一篇文章中曾简单介绍了下,本文我们将会对它们进行更详细的介绍。 软件断点 INT3断点指令是专门用来支持调试的指令。它的目的就是是cpu中断到调试器,以供调试者对执行现场进行各种分析。当我们在调试软件时,可以在某出插入INT3指令,当cpu执行到此断
2013-02-03 14:56:24 18271 11
原创 windows程序员进阶系列:《软件调试》之三:中断和异常
windows程序员进阶系列:《软件调试》之三:中断和异常 中断和异常是计算机原理中很重要的概念。在任务切换、时间更新、系统调用、软件调试等的许多功能都是依靠中断和异常机制实现的。 EIP存储着cpu下一条要执行的指令的地址,执行完一条再取一条,如此往复循环。有了中断机制可以让cpu暂时停下当前的任务,转去处理突然事件或其他需要处理的任务。 中断 中断通常是由外部输
2013-02-02 14:54:27 4194
原创 windows程序员进阶系列:《软件调试》之二:cpu基础
windows程序员进阶系列:《软件调试》之二:cpu基础 by ithzhang blog.csdn.net/ithzhang 转载请注明出处!! 本文将会介绍与软件调试密切相关的cpu基础。很多软件开发人员对硬件知识了解都比较少,为了帮助大家更好的入门软件调试,这里简单帮大家回顾下硬件的一些基础知识。涉及cpu的基础,如寄存器啦,指令了啥
2013-02-01 08:40:19 5564 3
原创 Windows程序员进阶系列:《软件调试》之一:调试基础
Windows程序员进阶系列:《软件调试》之一:调试基础 一位著名的计算机科学家曾说过:软件调试要比编写代码困难一倍。因此在阅读《软件调试》这本书之前,我已经做好了攻坚克难的准备。希望广大读者也要心里有个谱,做好这个准备。 软件调试是软件开发和维护中一项非常繁重的任务。 一方面是难度很高,另一方面是任务繁重。因此在一个典型的软件团队中,往往会花费可观的时间用在软件调试中。在进入
2013-01-31 09:56:08 5786 5
转载 理解程序内存
理解程序内存内存对很多人来说感觉是个很熟悉的东西,因为我们在用VC调试程序时,很多时候都会察看内存中变量的值。但是,很多时候我们的思维也就因此局限在有源码的模块,当遇到一些跨模块或是没有源代码的Bug,我们还是无从下手。因此,很有必要我们要对整个程序内存有个比较全局性的认识,这样遇到任何问题,你都能从容面对。我这里以32位的程序为例,我们知道32位程序总共有4G内存空间,其中低2G是用户地址空间,
2013-01-30 16:48:21 1998 2
原创 Windows用户态调试器原理
Windows用户态调试器原理 Windows操作系统提供了一组API来支持调试器。 这些API可以分为三类: 创建调试目标的API; 在调试循环中处理调试事件的API。 查看和修改调试目标的API。 接下来将会分别对这三种API进行介绍。 创建调试目标 在调试器工作之前,需要创建调试目标。用户态调试器有两种创建调试目标的方法:一是
2013-01-29 08:46:59 8244 3
转载 Windows程序员进阶应该看的那些书
Windows程序员进阶应该看的那些书 业内有一个普遍的现象,一般Windows程序员在写了3-5年的代码的时候会有一段迷茫期,因为这个时期的程序员已经掌握了常用的一些编程技巧,对某种编程语言已经比较熟悉,可以完成常规的任务,但是这个时候的程序员也很容易迷茫。主要的表现有以下几种:第一种,开始不停尝试不同的编程语言,但是慢慢的发现,其实语言大同小异,疲于学习,收获不大。第二种,开始转向linu
2013-01-27 09:00:37 2426 1
原创 Windows socket之IOCP实例----IOCP开发驾照理论考试系统
Windows socket IO完成端口开发驾照理论考试系统实例 这一节我们讲解如何利用套接字完成端口开发驾照理论考试系统。该系统由服务器和客户端两部分组成。 服务器负责对题库和学生信息的管理,主要包括以下功能: 1:试卷管理:从题库读取试卷和向客户端发送试卷。 2:客户端管理(CClientManager类)。从数据库读取学生信息,验证学生信息。 3:监视
2013-01-23 10:58:37 8871 10
原创 Windows socket之IO完成端口(IOCP)模型开发
Windows socket之IO完成端口(IOCP)模型开发 IO完成端口是一种内核对象。利用完成端口,套接字应用程序能够管理数百上千个套接字。应用程序创建完成端口对象后,通过指定一定数量的服务线程,为已经完成的重叠IO操作提供服务。该模型可以达到最后的系统性能。 完成端口是一种真正意义上的异步模型。在重叠IO模型中,当Windows socket应用程序在调用WSARe
2013-01-21 16:31:56 32772 11
转载 socket中的nagle算法
Nagel算法 TCP/IP协议中,无论发送多少数据,总是要在数据前面加上协议头,同时,对方接收到数据,也需要发送ACK表示确认。为了尽可能的利用网络带宽,TCP总是希望尽可能的发送足够大的数据。(一个连接会设置MSS参数,因此,TCP/IP希望每次都能够以MSS尺寸的数据块来发送数据)。Nagle算法就是为了尽可能发送大块数据,避免网络中充斥着许多小数据块。 Nagle算法
2013-01-19 14:30:25 6850
原创 《Windows核心编程系列》十异步IO之IO完成端口
http://blog.csdn.net/ithzhang/article/details/8508161转载请注明出处!! IO完成端口
2013-01-16 10:06:46 23124 11
转载 VC调试以及TRACE()函数的用法
1. VC调试入门设置为了调试一个程序,首先必须使程序中包含调试信息。一般情况下,一个从AppWizard创建的工程中包含的Debug Configuration自动包含调试信息,但是是不是Debug版本并不是程序包含调试信息的决定因素,程序设计者可以在任意的Configuration中增加调试信息,包括Release版本。为了增加调试信息,可以按照下述步骤进行: 打开Project settin
2013-01-15 11:03:39 4276
原创 Windows socket之重叠IO:事件通知
Windows socket重叠IO模型开发。 利用套接字重叠IO模型,应用程序能一次投递一个或多个IO请求,当系统完成IO操作后通知应用程序。该模型以win32异步IO机制为基础。与前面介绍的所有IO模型相比较,该模型是真正意义上的异步IO模型,它能使Windows socket应用程序达到更高的性能。 关于异步IO机制可以参考:《Windows核心编程系列》十谈谈同步设备IO
2013-01-12 14:56:18 8934 1
原创 Windows socket之WSAEventSelect模型
WSAEventSelect模型 WSAEventSelect模型是Windows socekts提供的另一个有用异步IO模型。该模型允许在一个或多个套接字上接收以事件为基础的网络事件通知。Windows sockets应用程序可以通过调用WSAEventSelect函数,将一个事件与网络事件集合关联起来。当网络事件发生时,应用程序以事件的形式接收网络事件通知。
2013-01-07 13:36:30 9657 3
原创 Windows socket 之WSAAsyncSelect模型
WSAAsyncSelect模型 WSAAsyncSelect模型是Windows socket的一个异步IO模型。利用该模型可以接收以Windows消息为基础的网络事件。Windows sockets应用程序在创建套接字后,调用WSAAsyncSelect函数注册感兴趣的网络事件,当该事件发生时Windows窗口收到消息,应用程序就可以对接收到的网络时间进行处理。 WSAAsy
2013-01-04 14:07:42 13653 4
原创 Nachos内存管理实现
Nachos内存管理实现 存储器管理包括两个层次的内容:分别是内存管理和文件系统管理。 每个用户进程都是自己的地址空间。当进程运行时它们都会被加载到内存中。 接下来我们仍使用Nachos源代码来讲述地址空间是怎样实现在Nachos模拟的物理内存上实现的。 为了运行一个程序,需要执行一下三步: 1:编译器将各个模块的源代码编译成对应的目标
2013-01-02 15:11:37 6723 1
原创 Nachos线程管理
Nachos线程管理 Nachos中的线程是在内核中以一个thread类的对象的方式实现的。线程控制块是以类的数据成员的方式实现。 //thread类源代码--定义class Thread { private: // NOTE: DO NOT CHANGE the order of these first two members.
2013-01-01 11:30:24 7870
转载 优秀程序员不得不知道的20个位运算技巧
优秀程序员不得不知道的20个位运算技巧 一提起位运算,人们往往想到它的高效性,无论是嵌入式编程还是优化系统的核心代码,适当的运用位运算总是一种迷人的手段,或者当您求职的时候,在代码中写入适当的位运算也会让您的程序增加一丝亮点,最初当我读《编程之美》求“1的数目”时,我才开始觉得位运算是如此之美,后来读到 《Hacker's Delight》,感慨到Henry S.Warren
2013-01-01 09:10:52 1511
转载 网络编程相关函数说明
网络编程相关函数说明一、获取计算机的IP地址和名称:利用函数GetComputerName()The GetComputerName function retrieves the NetBIOS name of the local computer. This name is established at system startup, when the system reads it
2012-12-28 18:54:28 3045
原创 Windows socket基础
Windows socket 基础 Windows socket是一套在Windows操作系统下的网络编程接口。它不是一种网络协议,而是一个开放的、支持多个协议的Windows下的网络编程接口。 Windows socket是以Unix socket为基础,因此Windows socket中的许多函数名与Unix都是一样的。除此之外它还允许开发人员充分利用Wind
2012-12-28 18:33:08 20813 6
原创 《谈谈Windows核心编程系列》导读
《谈谈Windows核心编程系列》导读 谈谈Windows核心编程系列终于发布完了。 发布这些文章的目的: 一是为了总结之用,当需要的时候可以迅速的找出。 二也是在记录学习轨迹。 慢慢的养成了一种习惯,好像不写笔记就不算读过书一样。读书的时候会不自觉的加快速度,有时候看的不是很仔细,有时甚至看了很多遍还是
2012-12-28 13:32:48 14099 4
转载 链接器都干了什么?
第一篇: 链接器都干了些什么?目前项目在不停的增长,我想还是在它规模仍旧很小的时候把它的模块分清楚,不同模块分到不同的 projects 里面,这里面出现了很多问题,也反映了我知识上的很多不足。1 , project 最后的输出要设置清楚,有的是 static lib ,有的是 dll ,有的是 exe ,不一样的输出要设置好,它们都是 linker 的成果,但是以不
2012-12-28 10:58:07 2081
原创 《Windows核心编程系列》十四谈谈默认堆和自定义堆
堆 前面我们说过堆非常适合分配大量的小型数据。使用堆可以让程序员专心解决手头的问题,而不必理会分配粒度和页面边界之类的事情。因此堆是管理链表和数的最佳方式。但是堆进行内存分配和释放时的速度比其他方式都慢,而且无法对物理存储器的调拨和撤销调拨进行控制。 什么是堆? 在系统内部堆就是一块预定的地址空间区域。刚开始堆的大部分页面都没有调拨物理存储器。随着我
2012-12-28 10:52:48 7674 1
原创 《Windows核心编程系列》十三谈谈在应用程序中使用虚拟内存
在应用程序中使用虚拟内存 Windows提供了以下三种机制对内存进行操控: 一:虚拟内存。最适合来管理大型对象数据或大型结构数组。 二:内存映射文件。最适合用来管理大型数据流,以及在同一机 器上运行的多个进程之间共享数据。 三:堆。最适合用来管理大量的小型对象。 很多人都对VirtualAlloc和malloc
2012-12-27 12:43:21 6613 2
原创 《Windows核心编程系列》十二谈谈Windows内存体系结构
Windows内存体系结构 理解Windows内存体系结构是每一个励志成为优秀的Windows程序员所必须的。 进程虚拟地址空间 每个进程都有自己的虚拟地址空间。对于32位操作系统来说,它的地址空间是4GB。这是因为32位指针可以表示从0x00000000到0xFFFFFFFF之间的任一值。对于64位的操作系统来说有0--2的64次方之间的任一值。
2012-12-23 10:51:51 5702 4
原创 《Windows核心编程系列》十一谈谈Windows线程池
Windows线程池 上一篇博文我们介绍了IO完成端口。得知IO完成端口可以非常智能的分派线程。但是IO完成端口仅对等待它的线程进行分派,创建和销毁线程的工作仍然需要我们自己来做。 我们自己也可以创建线程,但是涉及到线程的编码操作比较复杂,容易出现差错。为了简化程序员的工作,Windows提供了一个线程池机制来简化线程的创建、销毁以及日常管理。这个新线程池可能不
2012-12-22 15:41:36 22672 8
原创 Windows socket之Select模型开发
Windows socket select模型开发。 套接字select模型是一种比较常用的IO模型。利用该模型可以使Windows socket应用程序可以同时管理多个套接字。 使用select模型,可以使当执行操作的套接字满足可读可写条件时,给应用程序发送通知。收到这个通知后,应用程序再去调用相应的Windows socket API去执行函数调用。
2012-12-21 14:55:40 19997 8
虚函数的原理,虚函数实现方式
2011-08-23
live555类关系结构图
2014-07-25
E:\233\ebook
2014-07-25
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人