- 博客(17)
- 资源 (2)
- 收藏
- 关注
转载 内核态和用户态
就像世界上的人并不平等一样,并不是所有的程序都是平等的。世界上有的人占有资源多,有的人占有资源少,有的人来了,别人得让出资源,有的人则专门为别人让出资源。程序也是这样,有的程序可以访问计算机的任何资源,有的程序则只能访问非常受限的少量资源。而操作系统作为计算机的管理者,自然不能和被管理者享受一样的待遇,它应该享有更多的方便或特权。为了区分不用程序的不同权利,人们发胆了内核和用户态的概念。那
2014-07-29 17:28:41 795
转载 临界区(Critical section)与互斥体(Mutex)的区别
1、临界区只能用于对象在同一进程里线程间的互斥访问;互斥体可以用于对象进程间或线程间的互斥访问。2、临界区是非内核对象,只在用户态进行锁操作,速度快;互斥体是内核对象,在核心态进行锁操作,速度慢。3、临界区和互斥体在Windows平台都下可用;Linux下只有互斥体可用。1、临界区:通过对多线程的串行化来访问公共资源或一段代码,速度快,适合控制数据访问。2、互斥量:为协调共同对
2014-07-29 17:16:07 2124
转载 Windows内存管理
本文主要内容:1.基本概念:物理内存、虚拟内存;物理地址、虚拟地址、逻辑地址;页目录,页表2.Windows内存管理3.CPU段式内存管理4.CPU页式内存管理 一、基本概念1. 两个内存概念物理内存:人尽皆知,就是插在主板上的内存条。他是固定的,内存条的容量多大,物理内存就有多大(集成显卡系统除外)。但是如果程序运行很多或者程序本身很大的话,就会导致大量的物理内存
2014-07-29 16:42:13 522
转载 串的模式匹配
所谓串的模式匹配,简单说就是指给定一个主串T(text)和一个子串P(pattern),求在T中第一次出现P的位置索引。例如T=”timercrack likes to sleep”,P=”likes”,则P在T中的位置索引为12。首先,让我们来看一种朴素的匹配算法,设T[n]存放主串,P[m]存放子串(模式串),则算法可以这样描述://朴素的模式匹配算法int
2014-07-29 14:01:28 3065
转载 const char*, char const*, char*const的区别
const char*, char const*, char*const的区别问题几乎是C++面试中每次都会有的题目。 这个知识易混点之前是看过了,今天做Linux上写GTK程序时又出现个Warning,发散一下又想到这个问题,于是翻起来重嚼一下。事实上这个概念谁都有只是三种声明方式非常相似:Bjarne在他的The C++ Programming Language里面给出过一个助
2014-07-28 20:18:33 734
转载 c中不安全的函数
C 中大多数缓冲区溢出问题可以直接追溯到标准 C 库。最有害的罪魁祸首是不进行自变量检查的、有问题的字符串操作(strcpy、strcat、sprintf 和 gets)。一般来讲,象“避免使用 strcpy()”和“永远不使用 gets()”这样严格的规则接近于这个要求。 今天,编写的程序仍然利用这些调用,因为从来没有人教开发人员避免使用它们。某些人从各处获得某个提示,但即使
2014-07-28 18:04:58 12870
转载 关于Windows消息队列的几个问题
1.是否所有的消息都是以WM_开头? 否,还有Prefix Message categoryDocumentationABM and ABN Application desktop toolbarShell Messages and NotificationsACM and ACN Animation controlAnimation Con
2014-07-28 16:34:38 732
转载 windows消息和消息队列
与基于MS - DOS的应用程序不同,Windows的应用程序是事件(消息)驱动的。它们不会显式地调用函数(如C运行时库调用)来获取输入,而是等待windows向它们传递输入。 windows系统把应用程序的输入事件传递给各个窗口,每个窗口有一个函数,称为窗口消息处理函数。窗口消息处理函数处理各种用户输入,处理完成后再将控制权交还给系统。窗口消息处理函数一般是在注册一个窗口的时候指定的。你可以从典
2014-07-28 16:27:34 570
转载 全局变量与单件模式
全局变量是最容易引起初学者兴趣的了,在整个项目中,任何一个函数,每一行代码都可以轻易访问所有的全局变量,并且可以不用付出额外的代价,全局变量看起来就像是为懒惰的程序员设计的一条绿色通道,如果不想看到函数因为要与其他模块通信而动辄很多参数,或者像给程序始末的关键信息寻找一个最合适的存储位置,那么全局变量就是很好的解决方案但是在项目中,全局变量肯定不少,这个时候,使用起来就会比较混乱,这个时候
2014-07-25 14:18:33 1729
转载 Socket send函数和recv函数详解
1.send 函数int send( SOCKET s, const char FAR *buf, int len, int flags ); 不论是客户还是服务器应用程序都用send函数来向TCP连接的另一端发送数据。客户程序一般用send函数向服务器发送请求,而服务器则通常用send函数来向客户程序发送应答。 该函数的第一个参数指定发送端套接
2014-07-25 11:52:50 11402
转载 IO - 同步,异步,阻塞,非阻塞
同步(synchronous) IO和异步(asynchronous) IO,阻塞(blocking) IO和非阻塞(non-blocking)IO分别是什么,到底有什么区别?这个问题其实不同的人给出的答案都可能不同,比如wiki,就认为asynchronous IO和non-blocking IO是一个东西。这其实是因为不同的人的知识背景不同,并且在讨论这个问题的时候上下文(context)也不
2014-07-25 10:32:38 482
转载 COM特性 包容和聚合
包容:假定我们已经实现了一个COM对象,不妨称它为对象A,它实现了接口ISomeIntf,之后,考虑到新的需要,我们要实现一个新的COM对象,称它为B,它既要实现接口ISomeIntf,也要实现接口IOtherIntf,而且,ISomeIntf接口所提供的服务与对象A所提供的服务基本一致,于是,我们考虑在实现对象B的过程中重用对象A的功能,只需要实现新添加的功能就可以完成对象B的开发工作。最简单的
2014-07-11 14:16:18 910
转载 要么滚回去,要么拼命
以前在墨尔本的一个室友,突然打电话给我,在我这里马上要凌晨3点的时候。他让我猜他现在在哪里,我说不是在墨尔本嘛,你还能去哪。他很神秘地说,不是哦,我现在在西班牙。然后我一下子就愣住了。因为很久之前我在一个人人相册里看到有关西班牙的照片的时候,曾经跟他说,西班牙那么漂亮自己将来一定要去一次。 我没有想到的是,在我就要把自己曾经一闪而过的想法忘记的时候,他的电话就这么来了。到最后,站在我最想去的地方的
2014-07-11 13:06:07 1463
转载 C++ VS 2008中ATL的创建,使用。并在C++项目中进行调用测试
一、前言 1、本回讲解的是在 VS 2008 下的使用ATL. 并使用Win 32 Console Application进行测试以及C#项目进行测试(调用COM). 2、这第一个组件,除了所有 COM 组件必须的 IUnknown 接口外,我们再实现一个自己定义的接口 IFunTest,它有一个简单的函数: Sum()完成两个数值的加法 3、ATL的介绍
2014-07-11 12:49:10 888
转载 用VC进行COM编程所必须掌握的理论知识
一、为什么要用COM 软件工程发展到今天,从一开始的结构化编程,到面向对象编程,再到现在的COM编程,目标只有一个,就是希望软件能象积方块一样是累起来的,是组装起来的,而不是一点点编出来的。结构化编程是函数块的形式,通过把一个软件划分成许多模块,每个模块完成各自不同的功能,尽量做到高内聚低藕合,这已经是一个很好的开始,我们可以把不同的模块分给不同的人去做,然后合到一块,这已经有了组装的
2014-07-09 22:59:29 762
转载 可靠UDP传输的实现
一直纠结于UDP的可靠传输,在查看了UDT的相关介绍后,发现并不是我需要的,我需要的是一个可以进行多点传输的的可靠UDP。最终,还是自己慢慢把它完成了,虽然还不够好,不过总算出来个框架了,以后改就容易了 。 在算法上并没有什么特别的,就是不断的采用超时重发机制。在发送端,建立了一个庞大的发送缓冲区队列,每个发送过的发送单元都将自动被添加到这个发送缓冲区中,然后由维护线程来管理。在
2014-07-09 18:01:48 846
转载 C++的cout高阶格式化操作
这篇文章主要讲解如何在C++中使用cout进行高级的格式化输出操作,包括数字的各种计数法(精度)输出,左或右对齐,大小写等等。通过本文,您可以完全脱离scanf/printf,仅使用cout来完成一切需要的格式化输入输出功能(从非性能的角度而言)。更进一步而言,您还可以在、上使用这些格式化操作,从而代替sprintf和fprintf函数。为方便描述,下文仅以cout为例进行介绍。
2014-07-01 21:17:21 2783
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人