自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(82)
  • 资源 (15)
  • 收藏
  • 关注

原创 读书笔记(三)---代码整洁之道(培训)

复杂度度量代码行数函数参数个数调用其他函数、对象、包的数量每行运算符的数量调转语句个数(goto、break、continue、throw)控制结构中的嵌套层数变量个数(临时变量、全局变量)同一变量的先后引用之间的代码行数(跨度)变量生存的代码行数圈复杂度计算方法1:从1开始,一直往下通过程序;2:一旦遇到以下关键字,加1(if、else if、while、for、and、o

2017-09-26 20:35:48 3248

转载 23种设计模式全解析

23种设计模式全解析标签: 设计模式2017-03-13 21:58 1375人阅读 评论(0) 收藏 举报目录(?)[+]出自:http://blog.csdn.net/longyulu/article/details/9159589一、设计模式的分类总体来说设计模式分为三

2017-09-26 08:41:19 477

原创 读书笔记(二)---Google C++ 编码风格

Google C++ 编码风格-笔记标签(空格分隔): 未分类 官方英文地址 官方中文地址头文件1.#define保证为了防止头文件重复包含。通常用#defined保证,符号是唯一的,格式通常为 ___H_。#ifndef FOO_SRC_BAR_BAZ_H#define FOO_SRC_BAR_BAZ_H//todo...#endif2.前向声

2017-09-21 20:46:08 700

原创 读书笔记(一)---正则表达式

基本语法参考:正则表达式30分钟入门教程vim使用参考:Vim查找替换 & 正则表达式 参考:Vim 正则表达式 很强大实例1.将指定单词加上单引号ta:ss ---> 'ta':'ss'tb:sa ---> 'tb':'sa'//【比较简单的方法1】:%s/\(\w\+\)/\'\1\'/gc//【通用的方法2】:%s/\(\w\+\):\(\w\+\)/\'\1\':\'\2\'

2017-09-21 19:33:33 266

原创 基于Highcharts的Web图形化开发

Html介绍html格式参考文章:html简介 Json格式介绍参考文章:JSON 数据格式highcharts介绍简介 Highcharts 是一个用纯JavaScript编写的一个图表库, 能够很简单便捷的在web网站或是web应用程序添加有交互性的图表,并且免费提供给个人学习、个人网站和非商业用途使用。HighCharts支持的图表类型有曲线图、区域图、柱状图、饼状图、散状点图和综合图表

2017-09-16 13:36:37 2030

原创 python学习(二)---爬取网页图片

爬取图片的基本思路1.分析图片地址流程Created with Raphaël 2.1.2Start输入搜索关键词点击【F12】进入开发者界面选择【Network】,选择【All】,点击【Name】列表中的第一个“sad?page=1”如图1不断【F5】刷新,查看【Name】列表变化,找到【header】中Request URL点击【下一页】查看URL变化,同时结合query pa

2017-08-24 21:28:51 1017

原创 python学习(一)---基础知识(安装、pycharm、API查询、常见问题)

安装python由于python发布2.X,3.X两种版本。建议对于windows xp及32bit的系统使用 python2.7。64位系统使用3.5以上。Anaconda(强烈推荐)官网下载 一个开源的Python发行版本,其包含了conda、Python等180多个科学包及其依赖项。[1] 因为包含了大量的科学包,Anaconda 的下载文件比较大(约 50

2017-08-24 21:08:57 3595

原创 机器学习之路(一)---支持向量机SVM

基本概念 凸函数和凸优化优化方法常见的几种最优化方法(梯度下降法、牛顿法、拟牛顿法、共轭梯度法等) logistic回归|梯度下降|牛顿法总结什么是支持向量机(SVM)?支持向量机 (SVM) 是一个类分类器,正式的定义是一个能够将不同类样本在样本空间分隔的超平面。 换句话说,给定一些标记(label)好的训练样本 (监督式学习), SVM算法输出一个最优化的分隔超平

2017-08-23 17:47:02 3548

转载 VisualStudio工程设置(二)---opencv3.2在vs2015开发环境搭建+cmake3.8编译生成opencv x86版本库

转载:http://blog.csdn.net/sinat_27953939/article/details/68948313版权声明:本文为博主原创文章,未经博主允许不得转载。[cpp] view plain copy最近由于学校里一些工作的需要,开始接触opencv,学习期间遇到了不少的问题,还好最

2017-08-18 16:05:58 756

原创 windowns下vim离线安装插件及介绍

对于vimer来说,没有vim是不行的,vim没有插件也是不行的。有网络情况下,可以采用Vundle管理插件,我们可以不需要关系插件的安装方式,可参考[Windows下安装Vim插件管理Vundle及常用插件](http://blog.csdn.net/xiake001/article/details/76407934)。有时候我们使用的电脑没有网络环境或者即使有网络但是无法访问github等网站时

2017-08-18 11:05:07 3833

转载 Source Insight 常用设置和快捷键大全

Source Insight 常用设置和快捷键大全转至:http://www.cnblogs.com/bluestorm/archive/2012/10/28/2743792.htmlSource Insight 4.0 文件类型、编码格式、tab转空格、tab键自动补全设置。。。http://www.cnblogs.com/bluestorm/p/68

2017-08-15 13:57:06 406

转载 Git学习(二)---Untracked files不想add

$ git statusOn branch feature/20160420_complain_630222Untracked files: (use "git add <file>..." to include in what will be committed)在文件夹中,经常会有些“其他”文件,比如上节课最后提到的,编辑器产生~结尾的备份文件,或者一些临时文件。又可能,某些文件我们只是

2017-08-10 21:04:13 6812

原创 Git学习(一)---Windows平台下搭建Git本地仓库

安装Git Windows下要使用很多Linux/Unix的工具时,需要Cygwin这样的模拟环境,Git也一样。Cygwin的安装和配置都比较复杂,就不建议你折腾了。不过,有高人已经把模拟环境和Git都打包好了,名叫msysgit,只需要下载一个单独的exe安装程序,其他什么也不用装,绝对好用。也可以下载ToroiseGit配合使用。 msysgit是Windows版的Gi...

2017-08-10 20:19:00 16786

原创 VisualStudio工程设置(一)---配置

工程属性设置目录配置参考:vs目录 首先演示一个虚拟的解决方案和我们期望得到的目录结构,然后使用VC2008的项目设置功能来一步一步达到我们的需求。虚拟解决方案:该虚拟解决方案名为GMA,包含一个动态链接库项目ChocolateMilk和一个应用程序项目PureMilk,需要使用一个第三方库log4cxx(Apache log4j的C++移植版本,用于日志输出)。log4cx

2017-08-08 20:12:57 7744 1

原创 在windows环境下搭建TensorFlow

TensorFlow介绍TensorFlow是Google的开源深度学习库,你可以使用这个框架以及Python编程语言,构建大量基于机器学习的应用程序。而且还有很多人把TensorFlow构建的应用程序或者其他框架,开源发布到GitHub上。   这次跟大家分享一些GitHub上令人惊奇的TensorFlow项目,你可以直接在你的应用中使用,或者根据自身所需进一步予以改进。   TensorFl

2017-08-08 14:01:52 685 1

原创 Windows下安装Vim插件管理Vundle插件

1. 安装GitVundle基于git架构,每一个插件都是一个项目的Repository,通过Vundle可以用简单的指令,一键安装/更新/删除所有插件。由于我的系统是xp的,最新的版本已经不支持xp了。所以下载v2.10.1版本,并完成安装,可以参考教程将Git的目录加入环境变量E:\Program Files\Git\bin然后运行cmd,输入git --ver

2017-07-30 22:05:25 7375 1

原创 SourceInsight 直接打开当前文件所在文件夹

注意中间的逗号ShellExecute open explorer /select,%f 多一个参数,大家可以试一试又是什么效果ShellExecute open explorer /e,/select,%f 1、选择【Options】->【custom commands】,在【Run:】中输入:   ShellExecute open explorer /e,/s

2017-07-26 14:29:59 9898 1

转载 Everything必知必会搜索教程

Everything必知必会搜索教程一般匹配搜索有三种方式:1、常规搜索:你输入什么搜索什么 2、通配符:使用* ?等符号3、正则表达式:最复杂也最万能的搜索匹配法 一、Everthing常量大小常数日期常数empty0KBTodayyesterdaytiny0-10

2017-07-25 19:02:52 21888

原创 Vim 经典配置

VIM 经典配置" =============================================================================" &lt;&lt; 判断操作系统是 Windows 还是 Linux 和判断是终端还是 Gvim &gt;&gt;" ========================================...

2017-07-23 14:03:25 1463

原创 在Windows下搭建GCC+VIM编译环境

在Windows下搭建GCC+VIM编译环境在windows下进行小型代码测试时,若启动大型的IDE,启动慢、效率低。可以采用GCC作为编译器,Vim作为代码编辑器,再对vim进行配置,集成gcc,可以一键自动化编译。安装VIM安装GCC编译代码 -* 配置VIM一键运行*安装VIM目前Vim已经升级到Vim8.0。下载VIM 配置安装GCCMinGW,即Minimalist GNU Fo

2017-07-23 14:00:43 4034 1

原创 Vim常见指令与问题总结(一)--基本快捷键

Vim常见指令与问题总结1. 常用指令键盘练习:anobvcjklxmdghuwipyqefrstz 4892710536 4892710536`-[#~=)?]^\"{&:,$./@}|%*(;[存活]指令名称指令说明iInsert 模式,按 ESC/[Ctrl+C] 回到 Normal 模式x

2017-07-23 12:46:58 805

原创 Total Commander常见指令与问题总结

Total Command 常见指令与问题总结[快捷键][目录切换]指令名称指令说明Ctrl + D/*可以把常用的目录加入到收藏夹中*//*在项目的标题中插入“&”符号还可以为它设置一个热键*/Ctrl + →/←/*将光标下的文件夹或压缩包在另一个窗口打开*/Alt

2017-07-23 12:43:10 7187 2

转载 微信公众号nodejs版

微信公众号nodejs版前言学习nodejs是从搭建hexo开始的,那时候每天还能写一篇日志,结果中间出差了一周,回来后状态全无,就变懒了…… 好在我并没有彻底放弃学习node,有关于nodejs的学习一直没有停下来,最终算是完成了这个练手版的代码。 之所以用nodejs做微信,一是我的工作就是微信公众平台的开发,对这方面比较了解,还有就是nodejs本身非常适合做微信,于是就

2015-12-26 14:48:22 943

原创 github、操作系统 资料收集

【Github教程】史上最全github使用方法:github入门到精通http://blog.csdn.net/hcbbt/article/details/11651229 http://www.worldhello.net/gotgithub/#如何高效利用GitHubhttp://www.yangzhiping.com/tech/github.html F

2015-10-24 13:05:11 496

转载 C++进阶学习指引

C++进阶学习指引孔令春 posted @ 2010年4月13日 21:58 in 杂七杂八 with tags C++进阶 , 3538 阅读 一、环境推荐        有些人一上手就学VC++,以至于不知不觉中就对VC编译器、MFC库等产生过多的依赖,甚至于有的连VC++与C++的区别都分不清,这是很可怕的事情。建议初学者不要一上来就学VC,可以的话,不防从Lin

2015-08-28 18:26:25 488

转载 用QPainter绘图(Painting with QPainter

要在绘图设备(paint device,一般是一个控件)上开始绘制,我们只要创建一个QPainter,把绘图设备指针传给QPainter对象。例如:oid MyWidget::paintEvent(QPaintEvent *event){    QPainter painter(this);    ...} 使用QPainter的draw…(

2012-09-13 20:15:19 654

转载 解决QT 设置中文文字的时候出现乱码

[代码] 解决QT 设置中文文字的时候出现乱码 (2011-08-13 11:43)分类: QT01#include 02#include 03#include "mainwindow.h"04

2012-09-13 20:13:08 465

转载 哪本书是对程序员最有影响、每个程序员都该阅读的书?

哪本书是对程序员最有影响、每个程序员都该阅读的书?国外知名网站stackoverflow上有一个问题调查: 哪本书是对程序员最有影响、每个程序员都该阅读的书?,这个调查已历时两年,目前为止吸引了153,432人访问,读者共推荐出了478本书(还在增加),其中最火的一本书《Code Complete》被顶了1306次。如果你是个程序员,你一定有兴趣看看这些书里你都看过几本,如果你一本没看

2012-04-12 13:24:04 360

转载 源代码管理的十条戒律

源代码管理的十条戒律源代码管理是我们工作中很重的一部分,是很多开发组的生命。但是我们往往在这方面犯错,不理解很多基本的,核心的版本控制的概念。我在这里列出了十条建议,可以说是戒律。虽然我会用 Subversion 和 .NET 来做示例,但这些戒律和你用的编程语言还有源码管理工具无关。1. 彻底抛弃 VSS!VSS 已死,就让它离去吧。它曾经很有用,但是现在其他 V

2012-04-11 19:10:57 507

转载 如何编写优质的需求文档

如何编写优质的需求文档作者: Job Vranish  来源: 伯乐在线  发布时间: 2012-03-21 17:32  阅读: 1263 次  原文链接  全屏阅读  [收藏]     英文原文:How to write good requirements  编写需求文档,在嵌入式开发领域是非常普遍的。需求文档被用来定义开发任务,协调大规模的研发计划。对于最终的产品

2012-04-11 15:20:06 431

转载 程序员怎样读书

程序员怎样读书 2012-02-08 17:11:39标签:书程序员     做为一名程序员,我一直在读书,一直在学习。可现在仔细回想一下,却似乎没有记住的书,大脑一片空白,读的书去了哪里?    越想越觉得可怕,大把大把的时间,N多的书,却跟没读一个样。我不禁要反思这个问题,这也许不是一个人身上的,也可能是好多程序员的通病。造成这种结果的原因,可能在以下几个方面:

2012-03-08 12:04:43 488

转载 简明 Vim 练级攻略

简明 Vim 练级攻略2011年9月7日 陈皓发表评论阅读评论63,817 人阅读    vim的学习曲线相当的大(参看各种文本编辑器的学习曲线),所以,如果你一开始看到的是一大堆VIM的命令分类,你一定会对这个编辑器失去兴趣的。下面的文章翻译自《Learn Vim Progressively》,我觉得这是给新手最好的VIM的升级教程了,没有列举所有的命令,只是列举了那

2012-03-06 19:54:22 333

转载 程序员技术练级攻略

程序员技术练级攻略2011年7月18日 陈皓发表评论阅读评论111,127 人阅读    月光博客6月12日发表了《写给新手程序员的一封信》,翻译自《An open letter to those who want to start programming》,我的朋友(他在本站的id是Mailper)告诉我,他希望在酷壳上看到一篇更具操作性的文章。因为他也是喜欢编程和技

2012-03-05 21:38:43 369

转载 为程序员量身定制的12个目标

为程序员量身定制的12个目标对程序员们来说挑战自我非常重要,要么不断创新,要么技术停滞不前。新年伊始,我整理了12个月的目标,每个目标都是对技术或个人能力的挑战,而且可以年复一年循环使用。01. 变得有耐心02. 保持健康03. 拥抱变化带来的不适应04. 学习一门新的编程语言05. 自动化06. 学习更多数学知识07. 关注安全

2012-01-15 19:23:57 370

转载 如何学好C++语言

如何学好C++语言2011年3月30日陈皓发表评论阅读评论21,273 人阅读    昨天写了一篇如何学好C语言,就有人回复问我如何学好C++,所以,我把我个人的一些学习经验写在这里,希望对大家有用。首先,因为如何学好C语言中谈到了算法和系统,所以这里就只谈C++语言。C++是最难的语言。这个世界上最难的编程语言可能非C++莫属了。你千万不要以为几天

2012-01-01 15:58:59 470

转载 如何学好C语言

如何学好C语言2011年3月29日陈皓发表评论阅读评论44,167 人阅读    有人在酷壳的留言版上询问下面的问题keep_walker :今天晚上我看到这篇文章。http://programmers.stackexchange.com/questions/62502/small-c-projects我也遇到了和提问的老外一样的问题

2012-01-01 15:55:37 506

转载 程序员需要具备的基本技能

程序员需要具备的基本技能009年4月11日陈皓发表评论阅读评论25,189 人阅读    软件开发是一个跨度很大的技术工作,在语言方面,有C,C++,Java,Ruby等等等等,在环境方面,又分嵌入式,桌面系统,企业级,WEB,基础系统,或是科学研究。但是,不管是什么的情况,总是有一些通用的基本职业技能。这些最基本的职业技能通常决定了一个程序员的级别,能

2011-12-31 10:37:06 799

转载 Debug与Release版本的区别

Debug与Release版本的区别     Debug 和 Release 并没有本质的区别,他们只是VC预定义提供的两组编译选项的集合,编译器只是按照预定的选项行动。如果我们愿意,我们完全可以把Debug和Release的行为完全颠倒过来。当然也可以提供其他的模式,例如自己定义一组编译选项,然后命名为MY_ABC等。习惯上,我们仍然更愿意使用VC已经定义好的名称。     Debu

2011-12-30 15:37:39 593

转载 算法的时间复杂度(计算实例)

算法的时间复杂度(计算实例) (2008-02-17 17:02) 分类: 数据结构 算法的时间复杂度2007年12月02日 星期日 01:17定义:如果一个问题的规模是n,解这一问题的某一算法所需要的时间为T(n),它是n的某一函数 T(n)称为这一算法的“时间复杂性”。当输入量n逐渐加大时,时间复杂性的极限情形称为算法的“渐近时间复杂性”。我们常用大O表示法表示

2011-10-06 10:08:07 867

转载 浅谈多进程多线程的选择

关于多进程和多线程,教科书上最经典的一句话是“进程是资源分配的最小单位,线程是CPU调度的最小单位”,这句话应付考试基本上够了,但如果在工作中遇到类似的选择问题,那就没有这么简单了,选的不好,会让你深受其害。经常在网络上看到有的XDJM问“多进程好还是多线程好?”、“Linux下用多进程还是多线程?”等等期望一劳永逸的问题,我只能说:没有最好,只有更好。根据实际情况来判断,哪个更加合适就是哪个

2011-09-08 16:04:40 366

高级C语言程序员测试必过的十六道最佳题_面试题

很经典,题很难,对于参加笔试和面试的同学很有帮助

2011-12-07

华为笔试题大全(超多且绝大部分附答案)

总结的华为的笔试题,题目很全很多,对于IT笔试是必备的。

2011-12-07

2010宝洁笔试推理题库(带答案及部分解释)

宝洁笔试推理题库(带答案及部分解释),对于应付外企和国企笔试,都是很有帮助。

2011-12-07

Total Commander(完整版)

最强的文件管理工具,含有各种插件,并附有自己总结的word详细说明文档,难得的资料。

2015-07-29

趋势科技笔试真题

趋势科技的笔试真题,全英文扫描的很清晰,对于倾心趋势的同学,很具有参考价值。

2011-12-07

南瑞继保笔试面试题及面经分析

包括笔试题,面经的分享,对于倾心南瑞继保的同学们,还是很有帮助的。

2011-12-07

实战无线通信应知应会2

实战无线通信应知应会,很实用的一本书,对通信工程师很有价值

2015-07-29

LTE空中接口技术与性能

LTE空中接口技术与性能,三大经典LTE教材之一,CSDN里绝无仅有。

2015-07-29

实战无线通信应知应会1

实战无线通信应知应会,很实用的一本书,对通信工程师很有价值

2015-07-29

实战无线通信应知应会3

实战无线通信应知应会,很实用的一本书,对通信工程师很有价值

2015-07-29

Windows 核心编程

目 录 译者序 前言 第一部分 程序员必读 第1章 对程序错误的处理 1 1.1 定义自己的错误代码 4 1.2 ErrorShow示例应用程序 5 第2章 Unicode 11 2.1 字符集 11 2.1.1 单字节与双字节字符集 11 2.1.2 Unicode:宽字节字符集 12 2.2 为什么使用Unicode 13 2.3 Windows 2000与Unicode 13 2.4 Windows 98与Unicode 13 2.5 Windows CE与Unicode 14 2.6 需要注意的问题 14 2.7 对COM的简单说明 14 2.8 如何编写Unicode源代码 15 2.8.1 C运行期库对Unicode的支持 15 2.8.2 Windows定义的Unicode数据类型 17 2.8.3 Windows中的Unicode函数和ANSI 函数 17 2.8.4 Windows字符串函数 19 2.9 成为符合ANSI和Unicode的应用程序 19 2.9.1 Windows字符串函数 19 2.9.2 资源 22 2.9.3 确定文本是ANSI文本还是Unicode 文本 22 2.9.4 在Unicode与ANSI之间转换字符串 23 第3章 内核对象 27 3.1 什么是内核对象 27 3.1.1 内核对象的使用计数 27 3.1.2 安全性 28 3.2 进程的内核对象句柄表 30 3.2.1 创建内核对象 30 3.2.2 关闭内核对象 32 3.3 跨越进程边界共享内核对象 32 3.3.1 对象句柄的继承性 32 3.3.2 改变句柄的标志 35 3.3.3 命名对象 36 3.3.4 终端服务器的名字空间 39 3.3.5 复制对象句柄 39 第二部分 编程的具体方法 第4章 进程 45 4.1 编写第一个Windows应用程序 46 4.1.1 进程的实例句柄 49 4.1.2 进程的前一个实例句柄 50 4.1.3 进程的命令行 50 4.1.4 进程的环境变量 51 4.1.5 进程的亲缘性 54 4.1.6 进程的错误模式 54 4.1.7 进程的当前驱动器和目录 54 4.1.8 进程的当前目录 55 4.1.9 系统版本 56 4.2 CreateProcess函数 58 4.2.1 pszApplicationName和 pszCommandLine 59 4.2.2 psa Process、psa Thread和 binherit Handles 60 4.2.3 fdwCreate 62 4.2.4 pvEnvironment 64 4.2.5 pszCurDir 64 4.2.6 psiStartInfo 64 4.2.7 ppiProcInfo 67 4.3 终止进程的运行 69 4.3.1 主线程的进入点函数返回 69 4.3.2 ExitProcess函数 69 4.3.3 TerminateProcess函数 70 4.3.4 进程终止运行时出现的情况 71 4.4 子进程 72 4.5 枚举系统中运行的进程 73 第5章 作业 91 5.1 对作业进程的限制 93 5.2 将进程放入作业 99 5.3 终止作业中所有进程的运行 99 5.4 查询作业统计信息 100 5.5 作业通知信息 103 5.6 JobLab示例应用程序 104 第6章 线程的基础知识 121 6.1 何时创建线程 121 6.2 何时不能创建线程 122 6.3 编写第一个线程函数 123 6.4 CreateThread函数 124 6.4.1 psa 124 6.4.2 cbStack 124 6.4.3 pfnStartAddr和pvParam 125 6.4.4 fdwCreate 126 6.4.5 pdwThreadID 126 6.5 终止线程的运行 127 6.5.1 线程函数返回 127 6.5.2 ExitThread函数 127 6.5.3 TerminateThread函数 127 6.5.4 在进程终止运行时撤消线程 128 6.5.5 线程终止运行时发生的操作 128 6.6 线程的一些性质 129 6.7 C/C++运行期库的考虑 131 6.7.1 Oops—错误地调用了Create Thread 138 6.7.2 不应该调用的C/C++运行期库函数 138 6.8 对自己的ID概念应该有所了解 139 第7章 线程的调度、优先级和亲缘性 142 7.1 暂停和恢复线程的运行 143 7.2 暂停和恢复进程的运行 144 7.3 睡眠方式 145 7.4 转换到另一个线程 145 7.5 线程的运行时间 146 7.6 运用环境结构 148 7.7 线程的优先级 152 7.8 对优先级的抽象说明 153 7.9 程序的优先级 156 7.9.1 动态提高线程的优先级等级 158 7.9.2 为前台进程调整调度程序 159 7.9.3 Scheduling Lab示例应用程序 160 7.10 亲缘性 167 第8章 用户方式中线程的同步 172 8.1 原子访问:互锁的函数家族 172 8.2 高速缓存行 177 8.3 高级线程同步 178 8.4 关键代码段 180 8.4.1 关键代码段准确的描述 182 8.4.2 关键代码段与循环锁 185 8.4.3 关键代码段与错误处理 185 8.4.4 非常有用的提示和技巧 186 第9章 线程与内核对象的同步 190 9.1 等待函数 191 9.2 成功等待的副作用 194 9.3 事件内核对象 195 9.4 等待定时器内核对象 204 9.4.1 让等待定时器给APC项排队 207 9.4.2 定时器的松散特性 209 9.5 信标内核对象 210 9.6 互斥对象内核对象 211 9.6.1 释放问题 213 9.6.2 互斥对象与关键代码段的比较 214 9.6.3 Queue示例应用程序 214 9.7 线程同步对象速查表 223 9.8 其他的线程同步函数 224 9.8.1 异步设备I/O 224 9.8.2 WaitForInputIdle 224 9.8.3 MsgWaitForMultipleObjects (Ex) 225 9.8.4 WaitForDebugEvent 225 9.8.5 SingleObjectAndWait 226 第10章 线程同步工具包 228 10.1 实现关键代码段:Optex 228 10.2 创建线程安全的数据类型和反信标 239 10.3 单个写入程序/多个阅读程序的保护 251 10.4 实现一个WaitForMultipleExpressions 函数 259 第11章 线程池的使用 274 11.1 方案1:异步调用函数 275 11.2 方案2:按规定的时间间隔调用函数 277 11.3 方案3:当单个内核对象变为已通知状态 时调用函数 283 11.4 方案4:当异步I/O请求完成运行时调用 函数 285 第12章 纤程 287 12.1 纤程的操作 287 12.2 Counter示例应用程序 289 第三部分 内 存 管 理 第13章 Windows的内存结构 299 13.1 进程的虚拟地址空间 299 13.2 虚拟地址空间如何分区 300 13.2.1 NuLL 指针分配的分区—适用于 Windows 2000和Windows 98 300 13.2.2 MS-DOS/16位Windows 应用程序兼容 分区—仅适用于Windows 98 301 13.2.3 用户方式分区—适用于Windows 2000 和Windows 98 301 13.2.4 64 KB禁止进入的分区—仅适用 于Windows 2000 302 13.2.5 共享的MMF分区—仅适用于 Windows 98 303 13.2.6 内核方式分区—适用于Windows 2000和Windows 98 303 13.3 地址空间中的区域 303 13.4 提交地址空间区域中的物理存储器 304 13.5 物理存储器与页文件 304 13.6 保护属性 307 13.6.1 Copy-On-Write 访问 308 13.6.2 特殊的访问保护属性的标志 309 13.7 综合使用所有的元素 309 13.7.1 区域的内部情况 312 13.7.2 与Windows 98地址空间的差别 315 13.8 数据对齐的重要性 319 第14章 虚拟内存 323 14.1 系统信息 323 14.2 虚拟内存的状态 330 14.3 确定地址空间的状态 336 14.3.1 VMQuery函数 337 14.3.2 虚拟内存表示例应用程序 343 第15章 在应用程序中使用虚拟内存 354 15.1 在地址空间中保留一个区域 354 15.2 在保留区域中的提交存储器 355 15.3 同时进行区域的保留和内存的提交 356 15.4 何时提交物理存储器 357 15.5 回收虚拟内存和释放地址空间区域 358 15.5.1 何时回收物理存储器 359 15.5.2 虚拟内存分配的示例应用程序 360 15.6 改变保护属性 368 15.7 清除物理存储器的内容 369 15.8 地址窗口扩展—适用于 Windows 2000 372 第16章 线程的堆栈 385 16.1 Windows 98下的线程堆栈 387 16.2 C/C++运行期库的堆栈检查函数 389 16.3 Summation示例应用程序 390 第17章 内存映射文件 397 17.1 内存映射的可执行文件和DLL 文件 397 17.1.1 可执行文件或DLL的多个实例 不能共享静态数据 398 17.1.2 在可执行文件或DLL的多个实 例之间共享静态数据 400 17.1.3 AppInst示例应用程序 404 17.2 内存映射数据文件 409 17.2.1 方法 1:一个文件,一个缓存 409 17.2.2 方法 2:两个文件,一个缓存 409 17.2.3 方法 3:一个文件,两个缓存 410 17.2.4 方法 4:一个文件,零缓存 410 17.3 使用内存映射文件 410 17.3.1 步骤 1:创建或打开文件内核 对象 411 17.3.2 步骤 2:创建一个文件映射内核 对象 412 17.3.3 步骤 3:将文件数据映射到进程 的地址空间 414 17.3.4 步骤4:从进程的地址空间中撤消 文件数据的映像 416 17.3.5 步骤 5和步骤 6:关闭文件映射对象 和文件对象 417 17.3.6 文件倒序示例应用程序 418 17.4 使用内存映射文件来处理大文件 426 17.5 内存映射文件与数据视图的相关性 427 17.6 设定内存映射文件的基地址 428 17.7 实现内存映射文件的具体方法 429 17.8 使用内存映射文件在进程之间共享 数据 431 17.9 页文件支持的内存映射文件 431 17.10 稀疏提交的内存映射文件 438 第18章 堆栈 451 18.1 进程的默认堆栈 451 18.2 为什么要创建辅助堆栈 452 18.2.1 保护组件 452 18.2.2 更有效的内存管理 453 18.2.3 进行本地访问 453 18.2.4 减少线程同步的开销 453 18.2.5 迅速释放堆栈 453 18.3 如何创建辅助堆栈 454 18.3.1 从堆栈中分配内存块 455 18.3.2 改变内存块的大小 456 18.3.3 了解内存块的大小 456 18.3.4 释放内存块 457 18.3.5 撤消堆栈 457 18.3.6 用C++程序来使用堆栈 457 18.4 其他堆栈函数 460 第四部分 动态链接库 第19章 DLL基础 463 19.1 DLL与进程的地址空间 464 19.2 DLL的总体运行情况 465 19.3 创建DLL模块 467 19.3.1 输出的真正含义是什么 469 19.3.2 创建用于非Visual C++工具 的DLL 471 19.4 创建可执行模块 472 19.5 运行可执行模块 474 第20章 DLL的高级操作技术 477 20.1 DLL模块的显式加载和 符号链接 477 20.1.1 显式加载DLL模块 478 20.1.2 显式卸载DLL模块 479 20.1.3 显式链接到一个输出符号 480 20.2 DLL的进入点函数 481 20.2.1 DLL_PROCESS_ATTACH通知 482 20.2.2 DLL_PROCESS_DETACH通知 483 20.2.3 DLL_THREAD_ATTACH通知 485 20.2.4 DLL_THREAD_DETACH通知 485 20.2.5 顺序调用DllMain 486 20.2.6 DllMain与C/C++运行期库 488 20.3 延迟加载DLL 489 20.4 函数转发器 499 20.5 已知的DLL 499 20.6 DLL转移 500 20.7 改变模块的位置 501 20.8 绑定模块 506 第21章 线程本地存储器 509 21.1 动态TLS 509 21.2 静态TLS 513 第22章 插入DLL和挂接API 515 22.1 插入DLL:一个例子 515 22.2 使用注册表来插入DLL 517 22.3 使用Windows挂钩来插入DLL 518 22.4 使用远程线程来插入DLL 531 22.4.1 Inject Library 示例应用程序 534 22.4.2 Image Walk DLL 541 22.5 使用特洛伊DLL来插入DLL 544 22.6 将DLL作为调试程序来插入 544 22.7 用Windows 98上的内存映射文件 插入代码 544 22.8 用CreateProcess插入代码 544 22.9 挂接API的一个示例 545 22.9.1 通过改写代码来挂接API 546 22.9.2 通过操作模块的输入节来挂接API 546 22.9.3 LastMsgBoxInfo示例应用程序 549 第五部分 结构化异常处理 第23章 结束处理程序 565 23.1 通过例子理解结束处理程序 566 23.2 Funcenstein1 566 23.3 Funcenstein2 566 23.4 Funcenstein3 568 23.5 Funcfurter1 568 23.6 突击测验:FuncaDoodleDoo 569 23.7 Funcenstein4 570 23.8 Funcarama1 571 23.9 Funcarama2 572 23.10 Funcarama3 572 23.11 Funcarama4:最终的边界 573 23.12 关于finally块的说明 574 23.13 Funcfurter2 575 23.14 SEH结束处理示例程序 576 第24章 异常处理程序和软件异常 578 24.1 通过例子理解异常过滤器和异常处理 程序 578 24.1.1 Funcmeister1 578 24.1.2 Funcmeister2 579 24.2 EXCEPTION_EXECUTE_HANDLER 580 24.2.1 一些有用的例子 581 24.2.2 全局展开 583 24.2.3 暂停全局展开 585 24.3 EXCEPTION_CONTINUE_ EXECUTION 586 24.4 EXCEPTION_CONTINUE_ SEARCH 588 24.5 Get Exception Code 589 24.6 Get Exception Information 592 24.7 软件异常 595 第25章 未处理异常和C++异常 598 25.1 即时调试 600 25.2 关闭异常消息框 601 25.2.1 强制进程终止运行 601 25.2.2 包装一个线程函数 601 25.2.3 包装所有的线程函数 601 25.2.4 自动调用调试程序 602 25.3 程序员自己调用UnhandledException Filter 602 25.4 UnhandledExceptionFilter函数的一些 细节 603 25.5 异常与调试程序 604 25.6 C++异常与结构性异常的对比 618 第六部分 窗 口 第26章 窗口消息 623 26.1 线程的消息队列 623 26.2 将消息发送到线程的消息队列中 625 26.3 向窗口发送消息 626 26.4 唤醒一个线程 630 26.4.1 队列状态标志 630 26.4.2 从线程的队列中提取消息的 算法 631 26.4.3 利用内核对象或队列状态标 志唤醒线程 634 26.5 通过消息发送数据 636 26.6 Windows如何处理ANSI/Unicode 字符和字符串 642 第27章 硬件输入模型和局部输入状态 645 27.1 原始输入线程 645 27.2 局部输入状态 646 27.2.1 键盘输入与焦点 647 27.2.2 鼠标光标管理 649 27.3 将虚拟输入队列同局部输入状态挂接 在一起 651 27.3.1 LISLab 示例程序 652 27.3.2 LISWatch 示例程序 666 第七部分 附 录 附录A 建立环境 675 附录B 消息分流器、子控件宏和API宏 686

2011-12-07

华为培训资料通信基础知识

华为培训资料通信基础知识,对于通信知识的大补,很受用,共分享!

2011-12-07

程序员面试宝典(pdf清晰版)

程序员面试宝典,此版本是清晰版本,免费下载,与大家共享,面试必备的。

2011-12-07

Google C++编程规范.pdf

Google C++编程规范,很实用! 目录包括1.头文件;2.作用域;3.类;4.Google特有风情;5.其他C++特性;6.命名约定;7.注释;8格式;9.规则之例外;10.团队合作等十大项内容进行详细阐述。

2011-12-07

VC的多种实用技巧

本文包括VC开发的许多实用的技巧,如:如何彻底删除一个类; 如何快速生成一个现有工程除了工程名外完全相同的新工程;等等

2011-12-08

空空如也

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

TA关注的人

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