
C/C++类技术文章
文章平均质量分 71
freedom0203
你想了解什么?尽管来问吧
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
c++流缓冲学习---rdbuf()
我们使用STL编程的时候有时候会想到把一个流对象指向的内容用另一个流对象来输出,比如想把一个文件的内容输出到显示器上,我们可以用简单的两行代码就可以完成。ifstream infile("test.txt");cout 上面的代码就把infile流对象中的流重定向到标准输出cout上,您可以在屏幕上看到test.txt的内容。下面的例子来自MSDN,清晰的描述了rdbuf函数转载 2008-08-21 15:33:00 · 12313 阅读 · 2 评论 -
windows核心编程14
第1 4章 虚拟内存这一章不再介绍抽象的概念,而要具体介绍几个Windows函数,这些函数能够提供关于系统内存管理以及进程中的虚拟地址空间等信息。 14.1 系统信息许多操作系统的值是根据主机而定的,比如页面的大小,分配粒度的大小等。这些值决不应该用硬编码的形式放入你的源代码。相反,你始终都应该在进程初始化的时候检索这些值,并在你的源代码中使用检索到的值。 下面函数将原创 2008-03-08 14:37:00 · 435 阅读 · 0 评论 -
windows核心编程13
第三部分内存管理 第1 3章 Windows的内存结构操作系统使用的内存结构是理解操作系统如何运行的最重要的关键。 13.1 进程的虚拟地址空间每个进程都被赋予它自己的虚拟地址空间。对于32位进程来说,这个地址空间是4GB,因为32位指针可以拥有从0x00000000至0xFFFFFFFF之间的任何一个值。这使得一个指针能够拥有4294967296个值中的一个值,它覆原创 2008-03-06 20:15:00 · 678 阅读 · 0 评论 -
windows核心编程12
第12章 纤程Microsof t公司给Windows添加了一种纤程,以便能够非常容易地将现有的UNIX服务器应用程序移植到Windows中。UNIX服务器应用程序属于单线程应用程序(由Windows定义),但是它能够为多个客户程序提供服务。换句话说, UNIX应用程序的开发人员已经创建了他们自己的线程结构库,他们能够使用这种线程结构库来仿真纯线程。该线程包能够创建多个堆栈,保存某些CP原创 2008-03-03 22:59:00 · 394 阅读 · 0 评论 -
windows核心编程9
第9章 线程与内核对象的同步上一章介绍了如何使用允许线程保留在用户方式中的机制来实现线程同步的方法。用户方式同步的优点是它的同步速度非常快。如果强调线程的运行速度,那么首先应该确定用户方式的线程同步机制是否适合需要。 虽然用户方式的线程同步机制具有速度快的优点,但是它也有其局限性。对于许多应用程序来说,这种机制是不适用的。例如,互锁函数家族只能在单值上运行,根本无法使线程进入等待原创 2008-02-29 15:40:00 · 646 阅读 · 0 评论 -
windows核心编程8
第8章用户方式中线程的同步当所有的线程在互相之间不需要进行通信的情况下就能够顺利地运行时,Wi n d o w s的运行性能最好。但是,线程很少能够在所有的时间都独立地进行操作。通常情况下,要生成一些线程来处理某个任务。当这个任务完成时,另一个线程必须了解这个情况。 系统中的所有线程都必须拥有对各种系统资源的访问权,这些资源包括内存堆栈,串口,文件,窗口和许多其他资源。原创 2008-02-28 22:25:00 · 453 阅读 · 0 评论 -
windows核心编程7
第7章线程的调度、优先级和亲缘性抢占式操作系统必须使用某种算法来确定哪些线程应该在何时调度和运行多长时间。每个线程拥有一个上下文结构的,这个结构维护在线程的内核对象中。这个上下文结构反映了线程上次运行时该线程的C P U寄存器的状态。每隔2 0 m s左右,Wi n d o w s要查看当前存在的所有线程内核对象。在这些对象中,只有某些对象被视为可以调度的对象。Wi n d o原创 2008-02-27 22:47:00 · 1097 阅读 · 0 评论 -
ACE 安装指南
The ADAPTIVE Communication Environment (ACE) 是一套免费的、开源的面向对象框架,它为大规模并发通信软件实现了许多核心的设计模式。ACE提供了一套丰富的、可重用的C++封装类和框架组件,并且可以跨平台实现大多数常见的通信软件的功能。本文将通过几个非常简单,并且可以说是粗糙的小例子,为大家讲述ACE的安装及配置过程。通过这些简单的小例子,带领大家以最快的转载 2008-02-23 12:08:00 · 659 阅读 · 0 评论 -
ACE在win32平台上的安装,与VC6的集成
(ACE版本:ACE5.5)wind使用Microsoft Visual C++ 在win32平台上生成和安装ACE:注意:关于MSVC5.0和Service Pack 3的使用有一些问题,过去一些用户在sp2中使用良好的代码在sp3种却会引发一些问题。感谢Bill 的细心查找,这一神秘的问题被解决了。答案?(哦,这儿有一个好答案。。。)这可能是因为有多个版本的sp3较早版本的sp3有一转载 2008-02-23 12:07:00 · 653 阅读 · 0 评论 -
windows核心编程4
第4章进程本章介绍系统如何管理所有正在运行的应用程序。首先讲述什么是进程,以及系统如何创建进程内核对象,以便管理每个进程。然后将说明如何使用相关的内核对象来对进程进行操作。接着,要介绍进程的各种不同的属性,以及查询和修改这些属性所用的若干个函数。还要讲述创建或生成系统中的辅助进程所用的函数。当然,如果不深入说明如何来结束进程的运行,那么这样的介绍肯定是不完整的。 进程通常被定义为原创 2008-02-23 15:46:00 · 618 阅读 · 0 评论 -
windows核心编程2
第2章U n i c o d e2.1 字符集软件的本地化要解决的真正问题,实际上就是如何来处理不同的字符集。问题是,有些文字和书写规则(比如日文中的汉字就是个典型的例子)的字符集中的符号太多了,因此单字节(它提供的符号最多不能超过2 5 6个)是根本不敷使用的。为此出现原创 2008-02-20 14:12:00 · 380 阅读 · 0 评论 -
windows核心编程16
有时系统会在你自己进程的地址空间中保留一些区域。第3章讲过,对于进程和线程环境块来说,就会出现这种情况。另外,系统也可以在你自己进程的地址空间中为线程的堆栈保留一些区域。 每当创建一个线程时,系统就会为线程的堆栈(每个线程有它自己的堆栈)保留一个堆栈空间区域,并将一些物理存储器提交给这个已保留的区域。按照默认设置,系统保留1 MB的地址空间并提交两个页面的内存。但是,这些默认值是可以原创 2008-03-15 17:18:00 · 476 阅读 · 0 评论 -
windows核心编程19
第19章 DLL基础自从Microsoft公司推出第一个版本的Windows操作系统以来,动态链接库(DLL)一直是这个操作系统的基础。Windows API 中的所有函数都包含在DLL中。3个最重要的DLL是:Kernel32.dll,它包含用于管理内存、进程和线程的各个函数;User32.dll,它包含用于执行用户界面任务(如窗口的创建和消息的传送)的各个函数;GDI32原创 2008-03-15 17:19:00 · 760 阅读 · 0 评论 -
windows核心编程20
第2 0章 DLL的高级操作技术20.1 DLL模块的显式加载和符号链接如果线程需要调用DLL模块中的函数,那么DLL的文件映像必须映射到调用线程的进程地址空间中。可以用两种方法进行这项操作。第一种方法是让应用程序的源代码只引用DLL中包含的符号。这样,当应用程序启动运行时,加载程序就能够隐含加载(和链接)需要的DLL。第二种方法是在应用程序运行时让应用程序显式加载需要原创 2008-03-19 15:11:00 · 1084 阅读 · 0 评论 -
控制台程序窗口隐藏
大家都知道,当编写一个win32 console application时,当运行此类程序的时候默认情况下会有一个类似dos窗口的console窗口,但是有的时候我们只想在程序中运行一段功能代码,不希望显示这个console窗口,让代码执行完毕之后程序自动退出.下面就介绍一下,如何隐藏win32 console application的console窗口 因为此种方法是通过设置编译器的链转载 2008-08-21 10:03:00 · 19231 阅读 · 1 评论 -
解决VisualStudio2005的MSVCP80D.dll找不到的问题
今天装了个VisualStudio2005,发现比VC6.0强大多了,可是随便写个小程序都发现出“MSVCP80D.dll找不到”的错误,参考了一些资料:项目->属性->配置属性->清单工具->常规->使用FAT32解决办法改为“是”即可此时,应该将上次产生的debug文件夹删除才能正确运行。来自http://hi.baidu.com/cxh198412,但是如果这样每次都改不是很麻烦转载 2008-08-21 09:00:00 · 2041 阅读 · 1 评论 -
使用临界段实现优化的进程间同步对象-原理和实现
使用临界段实现优化的进程间同步对象-原理和实现 1.概述: 在多进程的环境里,需要对线程进行同步.常用的同步对象有临界段(Critical Section),互斥量(Mutex),信号量(Semaphore),事件(Event)等,除了临界段,都是内核对象。 在同步技术中,临界段(Critical Section)是最容易掌握的,而且,和通过等待和释放内核态互斥对象实转载 2008-04-18 15:37:00 · 856 阅读 · 0 评论 -
Visual C++开发工具与调试技巧整理
Visual C++开发工具与调试技巧整理 1、如何在Release状态下进行调试 Project->Setting=>ProjectSetting对话框,选择Release状态。C/C++标签中的Category选General,Optimizations选Disable(Debug),Debut info选Program Database。在Link标签中选中Genera转载 2008-04-16 10:29:00 · 550 阅读 · 0 评论 -
构建跨平台的自由桌面开发环境(C/C++)(二)软件安装和配置
构建跨平台的自由桌面开发环境(C/C++)(二)软件安装和配置 (二)软件安装和配置 在IBM的DevelopWorks网站上已经有一篇文章(1)讲述了如何在Eclipse平台上使用CDT开发C/C++应用,重点是介绍CDT,可以和本段相互参考。 与一般软件安装的情形不同,这里首先我会安排大家安装编译环境,然后才是IDE。这也跟霸道的微软作风有所不同,可能有人认转载 2008-01-21 09:42:00 · 1054 阅读 · 0 评论 -
构建跨平台的自由桌面开发环境(C/C++)(一、软件介绍)
构建跨平台的自由桌面开发环境(C/C++)(一、软件介绍) 按:随着互联网的兴起,各种新兴跨越网络和异种平台的“企业”开发及运行环境大行其道,新生程序员对传统的桌面开发环境逐渐淡漠起来。但真正从事软件事业的人们终究会意识到所谓的企业应用只是这个世界上万千计算机应用中的一种,还有更多的各种传统应用仍然 在发挥着重大作用。在工业、通讯、智能终端以及传统桌面,乃至操作系统本身还有着巨大转载 2008-01-21 09:41:00 · 1948 阅读 · 0 评论 -
移动电子地图开发包J2ME
[原创]移动电子地图开发包J2ME 引路蜂电子地图J2ME开发包 使用引路蜂电子地图 (服务器) API,MIDlet可以使用yahoo,Micrsoft ,Google 提供的电子地图服务,显示电子地图,查询地址以及路径等 screen.wi原创 2008-04-06 14:50:00 · 1568 阅读 · 1 评论 -
c/c++实现一个密集型server/socket多路复用select
作一个tcp的服务程序,同时可能有大量的客户端连上来,希望分别记住各个socket谁有数据过来,就读出来,放到一个请求队列--这些事情用一个线程完成 另外有一个结果队列,如果结果里包含了socket的编号,用一个线程专门:取出来按编号找回原来发送者socket,发回给原来的客户端 还有一个就是处理线程(池),它取出请求队列里的一个请求,进行处理,把处理结果放入结转载 2008-04-01 16:51:00 · 2432 阅读 · 0 评论 -
windows核心编程18
对内存进行操作的第三个机制是使用堆栈。堆栈可以用来分配许多较小的数据块。例如,若要对链接表和链接树进行管理,最好的方法是使用堆栈,而不是第1 5章介绍的虚拟内存操作方法或第1 7章介绍的内存映射文件操作方法。堆栈的优点是,可以不考虑分配粒度和页面边界之类的问题,集中精力处理手头的任务。堆栈的缺点是,分配和释放内存块的速度比其他机制要慢,并且无法直接控制物理存储器的提交和回收。 从内部原创 2008-03-15 17:19:00 · 462 阅读 · 0 评论 -
运行时库
1)运行时库就是C run-time library,是C而非C++语言世界的概念:取这个名字就是因为你的 C程序运行时需要这些库中的函数. 2)C语言是所谓的“小内核”语言,就其语言本身来说很小(不多的关键字,程序流程控制,数据类型等);所以,C 语言内核开发出来之后,Dennis Ritchie 和 Brian Kernighan 就用C 本身重写了 90%转载 2008-03-15 17:16:00 · 515 阅读 · 0 评论 -
windows核心编程6
第6章线程的基础知识进程是由两个部分构成的,一个是进程内核对象,另一个是地址空间。同样,线程也是由两个部分组成的:* 一个是线程的内核对象,操作系统用它来对线程实施管理。内核对象也是系统用来存放线程统计信息的地方。* 另一个是线程堆栈,它用于维护线程在执行代码时需要的所有函数参数和局部变量(第16章将进一步介绍系统如何管理线程堆栈)。 进程是不活泼的。进程从来不执行任何东原创 2008-02-24 14:05:00 · 2333 阅读 · 0 评论 -
windows核心编程3
第3章内核对象 在介绍Windows API的时候,首先要讲述内核对象以及它们的句柄。准确地理解内核对象对于想要成为一名Wi n d o w s软件开发能手的人来说是至关重要的。内核对象可以供系统和应用程序使用来管理各种各样的资源,比如进程、线程和文件等。 3.1 什么是内核对象 每个内核对象只是内核分配的一个内存块,并且只能由该内核访问。该内存块是一种原创 2008-02-23 13:49:00 · 526 阅读 · 0 评论 -
QT中的多语言翻译
基本原理:为了在使用多语言,必须做两件事情:1,把想要翻译的字符串放入tr()中,如 QString str=tr("Legal");2, 在开始的时候载入预先制作好的翻译文件(.qm)。以下利用Qt提供的工具,把翻译文件制作出来,并在程序中加载。 实践转载 2008-02-04 12:59:00 · 587 阅读 · 0 评论 -
c++网络编程学习笔记(4)
CHAPTER 3. 并发设计空间一、循环、并发及反应式服务器循环服务器在处理后续请求之前,会完整地处理每一个客户请求。因此,在处理一个请求时,循环服务器要么将其他请求排成队列,要么忽略它们。循环服务器适合以下两种服务:l 短期服务l 不经常运行的服务在内部,循环服务器常常在“单进程”地址空间中执行服务请求。 并发服务器同时处理多个客户原创 2008-02-09 21:31:00 · 499 阅读 · 0 评论 -
浅谈Windows中的多线程编程
进程与线程 进程和线程是两个相对的概念,通常来说,一个进程可以定义程序的一个实例(Instance)。在Win32中,进程并不执行什么,它只是占据应用程序所使用的地址空间。为了让进程完成一定的工作,进程必须至少占有一个线程,正是这个线程负责包含进程地址空间中的代码。实际上,一个进程可以包含几个线程,它们可以同时执行进程地址空间中的代码。为了做到这一点,每个线程有自己的一组CPU寄存器和堆栈。每个进转载 2008-01-30 11:00:00 · 515 阅读 · 0 评论 -
Windows多线程多任务设计初步
Windows多线程多任务设计初步 [前言:]当前流行的Windows操作系统,它能同时运行几个程序(独立运行的程序又称之为进程),对于同一个程序,它又可以分成若干个独立的执行流,我们称之为线程,线程提供了多任务处理的能力。用进程和线程的观点来研究软件是当今普遍采用的方法,进程和线程的概念的出现,对提高软件的并行性有着重要的意义。现在的应用软件无一不是多线程多任务处理,单线城的软件是不可想象的转载 2008-01-30 14:04:00 · 378 阅读 · 0 评论 -
实现热键激活后台进程
在DOS下编写常驻内存的应用(TSR)程序时,一般设置了热键激活方式,DOS用户对此非常熟悉。在Windows 9X环境下,有的时侯前台运行程序隐藏了Windows的任务栏,使用户不能切换,许多Game程序运行时便是如此。如果在你的后台进程中加入热键呼出功能,便无此虑了。 程序实现原理:首先用户预定一个热键,无论该程序是前台程序还是后台程序,只要用户按了这个键,该程序就会立即变为前台程序。转载 2008-01-30 10:45:00 · 573 阅读 · 0 评论 -
C++修改注册表启动项
//C++控制台程序//写入注册表程序,开机启动//将工程->设置->general中的microsoft foundation classes选use MFC in a shared dll#include void main(){ HKEY hKey; LPCTSTR StrKey="Software//Microsoft//Windows//CurrentVers原创 2008-01-24 15:12:00 · 1207 阅读 · 0 评论 -
MFC贴图代码段
void CMy07View::OnPaint() { RECT rect; CPaintDC dc(this); // device context for painting // TODO: Add your message handler code here CDC *md=new CDC; CBitmap *bitmap=new CBitmap;转载 2008-01-24 15:11:00 · 766 阅读 · 0 评论 -
以下代码可以屏蔽掉alt+f4
以下代码可以屏蔽掉alt+f4:void CMainFrame::OnSysCommand(UINT nID, LPARAM lParam) { if(nID==SC_CLOSE&&lParam==0) { return; } CFrameWnd::OnSysCommand(nID, lParam);}只要在相应的框架(或对话框)加OnSysCommand以及响应函数即可1. *.h中原创 2008-01-24 15:09:00 · 1611 阅读 · 0 评论 -
VC调试入门
VC调试入门概述调试是一个程序员最基本的技能,其重要性甚至超过学习一门语言。不会调试的程序员就意味着他即使会一门语言,却不能编制出任何好的软件。这里我简要的根据自己的经验列出调试中比较常用的技巧,希望对大家有用。本文约定,在选择菜单时,通过/表示分级菜单,例如File/Open表示顶级菜单File的子菜单Open。 设置为了调试一个程序,首先必须使程序中包含调试信息。一般情况下,一个从AppWiz转载 2008-01-24 11:02:00 · 373 阅读 · 0 评论 -
句柄概念
句柄 今天开始,我向大家讲有关API的是实质性内容。我们就从句柄开始。 只要你来到了API的世界,经常碰到的问题之一就是句柄。那么究竟什么是句柄呢 如果你从来都没有听说过句柄这个词,可能首先觉得句柄当中有很多内容。其实不然,所谓句柄实际上是一个数据,是一个Long (整长型)的数据。在API中,它经常是以一个参数的形式传递给各种API函数。如 Public Declare Function Get转载 2008-01-23 17:36:00 · 817 阅读 · 0 评论 -
用MFC编写多线程程序实例
用MFC编写多线程程序实例 线程技术使不同的代码可以同时运行。当然,只有在多C P U的计算机上,多个线程才能够真正地同时运行。然而,由于操作系统把C P U的时间分成很短的片段分配给每个线程,这样给人的感觉好像是多个线程真的同时运行。 线程的概念与1 6位环境中的多任务有很大的不同。或许曾听人们这样讲: Win32是一种抢占式操作系统,而Windows 3.1 是一种协转载 2008-01-30 14:05:00 · 1586 阅读 · 0 评论 -
c++网络编程学习笔记(1)
前序在多个OS平台上开发和移植网络应用程序时,将面临错综复杂的挑战。这些复杂性的表现形式各异:网络协议不兼容,在不同软、硬件平台上具有不同的API和语义的组件库,OS本身的进程间通信(IPC)机制和并发机制的局限性造成的“偶发复杂性”。 直接针对OS API编程会导致以下两个问题:1. 容易出错。因为用C写成的、OS本身的具有的API一般都缺乏安全、可移植、可重入、可扩原创 2008-02-09 21:24:00 · 551 阅读 · 0 评论 -
c++网络编程学习笔记(2)
CHAPTER 1.通信设计空间 一、无连接协议与面向连接协议所谓协议,就是一组规则,用来指定“控制信息”和“数据信息”如何在通信实体之间的交换。无连接协议:提供“面向消息”的服务。其中,每一条消息都可以独立寻址和发送。面向连接协议:一种字节流(bytestream)协议,不保护应用程序消息的边界。 二、同步及异步消息交换在很多网络应用程序中,客户向服务器发送原创 2008-02-09 21:26:00 · 552 阅读 · 0 评论 -
windows核心编程1
第1章对程序错误的处理 在开始介绍Microsoft Windows 的特性之前,必须首先了解Windows的各个函数是如何进行错误处理的。 当调用一个Windows函数时,它首先要检验传递给它的的各个参数的有效性,然后再设法执行任务。如果传递了一个无效参数原创 2008-02-20 13:36:00 · 398 阅读 · 0 评论