
转载
文章平均质量分 95
ithzhang
继续向架构师挺进
展开
-
windbg常用命令
基本知识和常用命令(1) Windbg下载地址http://msdn.microsoft.com/en-us/windows/hardware/gg463009.aspx安装完后执行windbg –I将Windbg设置成默认调试器 (2) Windbg的命令分为标准命令,原命令和扩展命令,输入问号(?)可以显示所有的标准命令的帮助信息; 元命令以一个点(.)开始,输入.he转载 2014-03-03 22:29:56 · 11008 阅读 · 0 评论 -
#pragma 的用法
在所有的预处理指令中,#Pragma 指令可能是最复杂的了,它的作用是设定编译器的状态或者是指示编译器完成一些特定的动作。#pragma指令对每个编译器给出了一个方法,在保持与C和C++语言完全兼容的情况下,给出主机或操作系统专有的特征。依据定义,编译指示是机器或操作系统专有的,且对于每个编译器都是不同的。 常用参数 1.message 参数 2.code_seg 3.#pragma once 4转载 2013-02-13 10:57:09 · 3075 阅读 · 0 评论 -
main函数前的秘密
如何让一段代码跑在main()函数前面。一个熟练的C++开发者能够轻易给出答案,即静态初始化。 除此之外,下面讲一个VC里的方法。int initBeforeMain(){ printf( "initBeforeMain (%p)\r\n", initBeforeMain ); return 0;}int init2BeforeMain(){ printf( "in转载 2013-02-13 09:45:36 · 2512 阅读 · 0 评论 -
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 · 3567 阅读 · 0 评论 -
PE文件详解
参考数据书籍:《加密与解密(第三版)》 看雪论坛PE文件学习笔记整理:自己学习PE文件的一个总结,只是一个起步,对PE文件的概念的一个学习吧,属于比较菜的阶段,学习完这一部分之后就要先放下一段时间来做更正要的事情了。PE文件之后的应用之后再慢慢的学习吧。希望可以给我同时也给你们带来一些帮助。图是来自己截的图,有书上的,有自己实际操作的。如果需要的话可以Q我我发给你,包括这个word。转载 2013-02-13 10:18:49 · 4242 阅读 · 0 评论 -
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 · 3088 阅读 · 1 评论 -
搭讪技巧,希望所有单身的程序员兄弟都有女朋友哦!!
刚搭讪认识的妹子,匆匆互留电话号码,彼此了解有限,该如何通过短信与MM聊天呢?因为搭讪建立的安全感不会很高,所以认识之后不适合马上进入追求程序,下面我们先列举一些错误的短信聊天方式,看看你中枪了没有吧…… 一些错误的短信聊天方式: 单刀直入型:“今天有空一起吃饭吗?”(太着急了,没有铺垫,女孩一般不喜欢,当然也有很爷们的那种会愿意。) 户籍管理型:“你好,我叫xxx,在yyy上班,转载 2013-02-04 21:03:29 · 4153 阅读 · 3 评论 -
socket中的nagle算法
Nagel算法 TCP/IP协议中,无论发送多少数据,总是要在数据前面加上协议头,同时,对方接收到数据,也需要发送ACK表示确认。为了尽可能的利用网络带宽,TCP总是希望尽可能的发送足够大的数据。(一个连接会设置MSS参数,因此,TCP/IP希望每次都能够以MSS尺寸的数据块来发送数据)。Nagle算法就是为了尽可能发送大块数据,避免网络中充斥着许多小数据块。 Nagle算法转载 2013-01-19 14:30:25 · 6947 阅读 · 0 评论 -
理解程序内存
理解程序内存内存对很多人来说感觉是个很熟悉的东西,因为我们在用VC调试程序时,很多时候都会察看内存中变量的值。但是,很多时候我们的思维也就因此局限在有源码的模块,当遇到一些跨模块或是没有源代码的Bug,我们还是无从下手。因此,很有必要我们要对整个程序内存有个比较全局性的认识,这样遇到任何问题,你都能从容面对。我这里以32位的程序为例,我们知道32位程序总共有4G内存空间,其中低2G是用户地址空间,转载 2013-01-30 16:48:21 · 2086 阅读 · 2 评论 -
Windows程序员进阶应该看的那些书
Windows程序员进阶应该看的那些书 业内有一个普遍的现象,一般Windows程序员在写了3-5年的代码的时候会有一段迷茫期,因为这个时期的程序员已经掌握了常用的一些编程技巧,对某种编程语言已经比较熟悉,可以完成常规的任务,但是这个时候的程序员也很容易迷茫。主要的表现有以下几种:第一种,开始不停尝试不同的编程语言,但是慢慢的发现,其实语言大同小异,疲于学习,收获不大。第二种,开始转向linu转载 2013-01-27 09:00:37 · 2461 阅读 · 1 评论 -
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 · 2306 阅读 · 0 评论 -
音视频基础 、IPB帧及其特点
基本概念讲解媒体:是表示,传输,存储信息的载体,常人们见到的文字、声音、图像、图形等都是表示信息的媒体。多媒体: 是声音、动画、文字、图像和录像等各种媒体的组合,以图文并茂,生动活泼的动态形式表现出来,给人以很强的视觉冲击力,留下深刻印象多媒体技术:是将文字、声音、图形、静态图像、动态图像与计算集成在一起的技术。它要解决的问题是计算机进一步帮助人类按最自然的和最习惯的方式接受和处理信息。流媒体 :转载 2013-03-10 21:12:08 · 6714 阅读 · 2 评论 -
如果一个程序跑10000次只失败一次,你会怎么调试?
在前面调试Bug的神兵利器:通过WinDbg条件断点收集Log这篇文章中,我讲到了如何通过条件断点收集各种信息来判断Bug究竟出在哪里。但是,这个方法还是不太管用,因为它不能够反复执行某个程序。下面我要讲一种技巧可以用来调试类似这样的问题,这种技巧主要适用于下面几种情况:在程序出错的时候,某些信息、状态已经丢失,无法通过当前出错时候的状态推断出之前的状态。说的稍微具体一点就是,比如某个变量变成了N转载 2013-10-27 15:09:39 · 3972 阅读 · 0 评论 -
通过WinDbg条件断点收集Log
前段时间花了几天一直在用WinDbg调试一个比较棘手的Bug。这个Bug是C# Team那边发现的,他们的Testcase跑大概10分钟左右会出一个在CLR内部的ASSERT。比较难调试的主要原因在于ASSERT表明一个全局的数据结构出现了问题,本来不应该用完的数组却已经用完了(因为按照设计,这个数组是边使用边清理的,是不会用完的)。初步想到的有下面几种方案来调试:1. 设置数据断点2. 一步一步转载 2013-10-27 15:08:41 · 4086 阅读 · 0 评论 -
VC运行库版本不同导致链接.LIB静态库时发生重复定义问题的一个案例分析和总结
BackgroundMSDN中对于在不同的配置下Link的LIB作了说明:C Runtime Library:开关对应的库版本/MDMSVCRT.LIB多线程DLL的Release版本/MDdMSVCRTD.LIB多线程DLL的Debug版本/MTLIBCMT.LIB多线程静态链接的Release版本/MTdLIBCMTD.LIB多线程静态链接的Debug版本/clrMSVCMRT.LIB托管代码转载 2013-10-27 15:05:59 · 3697 阅读 · 0 评论 -
Windbg 32位版本和64位版本的选择
习惯了Vsiual Studio的兄弟们可能会因为先入为主的原因以为所有的调试器都应该像它那样,其实不然,当你安装Debugging Tools for Windows的时候,你将发现有两个系列的工具,一系列32位的工具和一系列64位的工具。这让人觉得和费解,因为在我们安装Microsoft Visual Studio的时候你根本不需要考虑32位还是64位。如果你正使用windbg调试工具集(Wi转载 2013-10-26 19:07:02 · 11236 阅读 · 0 评论 -
音视频同步-时间戳
音视频同步-时间戳 媒体内容在播放时,最令人头痛的就是音视频不同步。从技术上来说,解决音视频同步问题的最佳方案就是时间戳:首先选择一个参考时钟(要求参考时钟上的时间是线性递增的);生成数据流时依据参考时钟上的时间给每个数据块都打上时间戳(一般包括开始时间和结束时间);在播放时,读取数据块上的时间戳,同时参考当前参考时钟上的时间来安排播放(如果数据块的开始时间大于当前参考时钟上的时间,则转载 2013-10-06 20:10:01 · 2648 阅读 · 1 评论 -
yuv格式
YUV是指亮度参量和色度参量分开表示的像素格式,而这样分开的好处就是不但可以避免相互干扰,还可以降低色度的采样率而不会对图像质量影响太大。YUV是一个比较笼统地说法,针对它的具体排列方式,可以分为很多种具体的格式。转载一篇对yuv格式解释的比较清楚地文章,也可以直接参考微软的那篇文章。对于YUV格式,比较原始的讲解是MPEG-2 VIDEO部分的解释,当然后来微软有一个比较经典的解释,中文的大多是转载 2013-08-05 21:34:09 · 2348 阅读 · 0 评论 -
RAII惯用法:C++资源管理的利器
RAII惯用法:C++资源管理的利器RAII是指C++语言中的一个惯用法(idiom),它是“Resource Acquisition Is Initialization”的首字母缩写。中文可将其翻译为“资源获取就是初始化”。虽然从某种程度上说这个名称并没有体现出该惯性法的本质精神,但是作为标准C++资源管理的关键技术,RAII早已在C++社群中深入人心。我记得第一次学到RAII惯用法是在Bjar转载 2013-06-06 14:48:35 · 4249 阅读 · 0 评论 -
跟我一起写 Makefile
概述 什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和professional的程序员,makefile还是要懂。这就好像现在有这么多的HTML的编辑器,但如果你想成为一个专业人士,你还是要了解HTML的标识的含义。特别在Unix下的软件编译,你就不能不自己写makefile了,会不会写mak转载 2013-04-08 16:18:28 · 2309 阅读 · 0 评论 -
视频文件的容器格式和编码格式
人们设定了不同的视频文件格式来把视频和音频放在一个文件中,以方便同时回放,实际上都是一个容器里面 包裹着不同的轨道。容器是用来区分不同文件的数据类型的,而编码格式则由音视频的压缩算法决定,我们一般所说的文件格式或者是后缀名指的就是文件的容器。对于一种容器,可以包含不同编码格式的一种视频和音频。 文件格式(容器): AVI (*.avi) 其含义是Audio Video Interacti转载 2013-03-14 18:14:44 · 5456 阅读 · 0 评论 -
优秀程序员不得不知道的20个位运算技巧
优秀程序员不得不知道的20个位运算技巧 一提起位运算,人们往往想到它的高效性,无论是嵌入式编程还是优化系统的核心代码,适当的运用位运算总是一种迷人的手段,或者当您求职的时候,在代码中写入适当的位运算也会让您的程序增加一丝亮点,最初当我读《编程之美》求“1的数目”时,我才开始觉得位运算是如此之美,后来读到 《Hacker's Delight》,感慨到Henry S.Warren转载 2013-01-01 09:10:52 · 1538 阅读 · 0 评论 -
链接器都干了什么?
第一篇: 链接器都干了些什么?目前项目在不停的增长,我想还是在它规模仍旧很小的时候把它的模块分清楚,不同模块分到不同的 projects 里面,这里面出现了很多问题,也反映了我知识上的很多不足。1 , project 最后的输出要设置清楚,有的是 static lib ,有的是 dll ,有的是 exe ,不一样的输出要设置好,它们都是 linker 的成果,但是以不转载 2012-12-28 10:58:07 · 2132 阅读 · 0 评论 -
网络编程相关函数说明
网络编程相关函数说明一、获取计算机的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 · 3155 阅读 · 0 评论 -
外挂基础
一、 前言 所谓游戏外挂,其实是一种游戏外辅程序,它可以协助玩家自动产生游戏动作、修改游戏网络数据包以及修改游戏内存数据等,以实现玩家用最少的时间和金钱去完成功力升级和过关斩将。虽然,现在对游戏外挂程序的“合法”身份众说纷纭,在这里我不想对此发表任何个人意见,让时间去转载 2011-08-17 21:39:46 · 2484 阅读 · 0 评论 -
c++继承中的内存布局
今天在网上看到了一篇写得非常好的文章,是有关c++类继承内存布局的。看了之后获益良多,现在转在我自己的博客里面,作为以后复习之用。——谈VC++对象模型(美)简.格雷程化 译 译者前言 一个C++程序员,想要进一步提升技术水平的话,应该多了解一些语言转载 2011-08-09 16:31:57 · 5420 阅读 · 1 评论 -
C++临时对象(1)
作者:唐风出处: http://www.cnblogs.com/liyiwen本文版权归作者和博客园共有,欢迎转载,但请保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。 C++ 是一门以效率见长的语言(虽然近来越来越多的人“不齿”谈转载 2011-08-09 16:39:36 · 3754 阅读 · 0 评论 -
C++虚函数表解析
C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码来实现可变的算法。比如:模板技术,R转载 2011-08-09 16:38:17 · 1242 阅读 · 0 评论 -
《深度探索C++对象模型》读书笔记(1)
《深度探索C++对象模型》读书笔记(1)。 在C++中,有两种class data members:static和nonstatic,以及三种class member functions:static、nonstatic和virtual.已知下面这个class转载 2011-08-09 16:32:58 · 2510 阅读 · 0 评论 -
C++临时对象(2)
与临时对象的斗争(下) 作者:唐风原载:www.cnblos.com/liyiwen在上篇 里,我们看到了 (N)RVO 和右值引用,下面我们来看看表达式模板。Expression Template(表达式模板,ET) 如果有“系统地”学习转载 2011-08-09 16:40:55 · 1735 阅读 · 0 评论 -
《深度探索C++对象模型》读书笔记(2)。
default constructor仅在编译器需要它时,才会被合成出来。 通常来说,由编译器合成出来的default constructor是没啥用的(trivial),但有以下几种例外: (1)带有“Default Constructor”的Mem转载 2011-08-09 16:35:08 · 1756 阅读 · 0 评论 -
C++进阶书籍阅读顺序!
<br />推荐的阅读顺序:<br />level 1<br />从<<essential c++>>开始,短小精悍,可以对c++能进一步了解其特性<br />以<<c++ primer>>作字典和课外读物,因为太厚不可能一口气看完<br /><br />level 2<br />然后从<<effective c++>>开始转职,这是圣经,请遵守10诫,要经常看,没事就拿来翻翻<br />接着是<<exceptional c++>>,个人认为Herb Sutter主席大人的语言表达能力不及Scott Mey原创 2011-04-25 22:23:00 · 9487 阅读 · 0 评论 -
如何写好C++
<br />昨天写了一篇如何学好C语言,就有人回复问我如何学好C++,所以,我把我个人的一些学习经验写在这里,希望对大家有用。首先,因为如何学好C语言中谈到了算法和系统,所以这里就只谈C++语言。C++是最难的语言。这个世界上最难的编程语言可能非C++莫属了。你千万不要以为几天就可以学好C++,C++的学习曲线是相当BT的,你可以看看这篇文章。C++是一门很自由的语言,自由到了有点BT和恐怖的地步。我甚至认为C++并不是一门成熟的编程语言,因为太容易犯错了。所以,你一定要在一开始就要有很小心谨慎的态度,并把转载 2011-04-12 21:28:00 · 2590 阅读 · 1 评论 -
变长参数函数(转载)
变长参数的函数即参数个数可变、参数类型不定 的函数。设计一个参数个数可变、参数类型不定的函数是可能的,最常见的例子是printf函数、scanf函数和高级语言的Format函数。在C/C++中,为了通知编译器函数的参数个数和类型可变(即是不定的、未知的),就必须以三个点结束该函数的声明。view plaincopy to clipboardprint?// pr转载 2011-11-28 22:42:11 · 14965 阅读 · 1 评论 -
DLL中.def文件的使用
DLL中导出函数的声明有两种方式:一种为在函数声明中加上__declspec(dllexport),这里不再举例说明;另外一种方式是采用模块定义(.def) 文件声明,.def文件为链接器提供了有关被链接程序的导出、属性及其他方面的信息。首先创建 一个DLL程序,.cpp中[cpp] view plaincopyprint?int __stdcall A转载 2012-11-21 15:04:08 · 13486 阅读 · 0 评论 -
秒杀多线程第十二篇 多线程同步内功心法——PV操作上 .
阅读本篇之前推荐阅读以下姊妹篇:《秒杀多线程第四篇一个经典的多线程同步问题》《秒杀多线程第五篇经典线程同步关键段CS》《秒杀多线程第六篇经典线程同步事件Event》《秒杀多线程第七篇经典线程同步互斥量Mutex》《秒杀多线程第八篇经典线程同步信号量Semaphore》《秒杀多线程第九篇经典线程同步总结关键段事件互斥量信号量》《秒杀多线程第十篇生产者消费者问题》《秒杀转载 2012-10-08 08:38:44 · 2393 阅读 · 0 评论 -
常见的计算机专业词汇
作为计算机相关专业学生,面试或者笔试时不可避免地会遇到与专业相关的问题,而考核专业问题的时候,又不可避免地涉及到很多专业词汇,这就需要求职者掌握好常见的专业词汇,才能在阐述问题时得心应手,避免出现表达错误引起误解。以下是计算机专业常见相关词汇。5.4.1 计算机专业相关课程计算机导论 Introduction to Computer Science转载 2012-07-18 08:27:54 · 35193 阅读 · 6 评论 -
堆与堆排序
堆排序与快速排序,归并排序一样都是时间复杂度为O(N*logN)的几种常见排序方法。学习堆排序前,先讲解下什么是数据结构中的二叉堆。二叉堆的定义二叉堆是完全二叉树或者是近似完全二叉树。二叉堆满足二个特性:1.父结点的键值总是大于或等于(小于或等于)任何一个子节点的键值。2.每个结点的左子树和右子树都是一个二叉堆(都是最大堆或最小堆)。当父结点的键值总是大于或等于任何一个子节转载 2012-07-14 15:32:39 · 1901 阅读 · 0 评论 -
软件开发之动物庄园
每一软件开发团队中的不同成员都拥有不同的角色、承担不同的责任,从而完成不同的使命。在一个新建的团队或者是创业型团队中,根据他们各自的投入程度,存在着三种主要分工:猪、鸡和鹦鹉。这三种角色各自承担着怎样的职责和风险呢?图片来自网络 在一个神奇的国度里生活着许多动物,其中有猪,鸡和鹦鹉。 它们每天搞头脑风暴,琢磨如何创业,最后鹦鹉提议它们合伙开一个早餐店。具转载 2012-06-15 14:53:07 · 2309 阅读 · 0 评论 -
程序员人生之路
程序员人生之路(强烈推荐,分析的透彻!),某程序达人的人生感悟,估计没有半个甲子的时间,是绝对不可能感悟出来的。 看到这篇文章,感觉心里酸酸的,不知道路在何方? 相对同时刚出校门同学从事其它行业而言优厚的薪水,以及不断学习更新的专业知识不仅仅让你感到生活的充实,更满足了你那不让外人知的虚荣心。在刚出校门的几年中,你经常回头看看被你落在后面的同学们,在内心怜悯转载 2011-07-12 23:48:15 · 1560 阅读 · 0 评论