摘要:在vc6中实现多语言支持 张志刚 2004年6月30日 随着计算机在各种行业的普及,以及我国软件行业的发展,国产软件在不断的走出国门,所以各种软件的多语言支持也被越来越多的程序员所关注。对于一个软件程序为了支持不同语言,而创建不同的源程序显然不是一个很好的方法。本文主要介绍如何在vc6环境下通过创建支持多语言的资源文件来实现多语言支持。 首先创建一个支持简体中文的工程项目test,对该工程中的所有......
摘要: nunit to write unit tests http://www.nunit.org. ndoc to create code documentation http://ndoc.sourceforge.net nant to build your solutions http://nant.sourceforge.net codesmith to generate code ht......
操作系统中系统调用的必要性与实现上一页 ... 上面的这段代码看似完全没有问题,但下面我们考虑,有两个程序a与b,它们都使用了这个普通函数,于是当它们被载入内存中的时候就会出现如下图所示的情形: 假设a先运行,x_pos与y_pos被初始化为0,这是a打印了五个字符,那么,x_pos的值应当为5,而这时轮到b运行了,由于b使用的是自身的x_pos与y_pos,因此这时对于b来说,x_pos与y_pos的值仍是0,于是b将在(0,0)位置开始打印其字符,也就是说,b运行的结果会覆盖先前a运行的结果.那么我们再想一想,在dos或linux等系统中,你先运行一个程序,再运行第二个程序,第二个程序会覆盖第一个程序的运行结果吗? 【程序编程相关:
全世界所有程序员都会犯的错误】 从上图中我们可以很明显的看到,在这种情况下,a与b都含有myprintf这个函数一份独立的拷贝,也即a与b均使用其自身的x_pos与y_pos定位当前光标位置.于是这就出现了这样一个问题: 【推荐阅读:
JAVA中最为关键的几个知识点】 于是我们是否就可以改动一下系统的接构,只提供一份myprintf函数,而不同的进程都通过一个类似于函数指针的东东来调用它,那么在内存空间中就只会出现一份x_pos与y_pos,这样就不会产生上述的问题了.那么到底由哪个进程来保留这份唯一的myprintf呢?是用a进程还是用b进程呢? 【扩展信息:
建筑的永恒之道】 产生上述不当产生的问题的原因就在于系统内存空间中存在着两份x_pos与y_pos,也就是说相当于存在着两个光标,而实际上系统只有一个光标存在,因此,只因应当有一份x_pos与y_pos,它们被所有的进程所共用. 显然a与b进程都没有能力担任这个责任,因为保留有这唯一一份myprintf的进程必须一直存在于内存当前,以便让不同的进程使用,而a与b很有可能随时被调出内存;其次,这样的进程必须在系统一启动的时候就存在于系统当中,或者是第一个被调入系统内存的,这样才能保存在其它进程被调入内存时,就可以使用myprintf了.由于含有这个myprintf拷贝的进程需要有这些特性,于是我们不难想到把它直接做到内核中,让它成为系统的一部份,无疑是最为方便的.于是,当我们将其采用这种模式重新建构我们的系统后,内存空间的分布便有可能如下图所示: 这样,由于系统中只存在一份myprintf,所以就只有一份x_pos与y_pos,这样就不会出现上述的情况了.由于myprintf目前被做在了系统中,因此我们可以将其称为一个系统调用,其含义为:a与b通过myprintf这个系统调用使用系统所提供的屏幕输出功能,在屏幕上输出信息. 从上面的描述中我们也可以看出系统调用与一般函数不同的地方在于,它们并不被真正的链接到进程中,而在每个进程中只是存放了一个可以调用它的指针,它们只存在于系统中,且只有一份. 那么各个进程是怎样或得这个系统调用的调用入口的呢?系统内部又是怎样实现这种系统调用的呢?这就是本实验将要解决的问题.在这个实验中我们实现了一个屏幕输出的系统调用,当然,我们会继续用pyos做为例子,进行我们的实验. 调用门 从上面的描述中我们可以看出,要想使myprintf能够被所有的进程调用,那么指向它的指针,也即这个系统调用的地址必须是固定的,这样就出现了这样一个问题,到地应当把这个指针放在什么样的一个地方,这样才能使操作系统内核发生改动的时候,这个系统调用的地址却没有改变.仔细分析一下会发现这似乎是一个不可完成的任务,因为操作系统一旦发生变动,我们很难控制其内部的各个部份在内存中的布局即在内存中的存放位置不发生变动,那么怎么解决这个问题呢?我们可以想到在系统中开避这样一个空间,让它存储这个系统调用的指针,那么不论系统怎样改变,只要程序能找到这个空间,它就能获得这个系统调用的指针,于是它就可以调用这个系统调用....
下一页 摘要:有了身体和灵魂,平台的雏形也就有了,但是前后台程序直接的通讯是怎样实现的呢? 现有的系统通讯方式,不外乎自己写通讯协议或者依赖于中间件。不论采用哪种,都得依照一定的通讯格式组织信息。协议的差别、格式的差别不一而足。用过定长 字符流的肯定痛恨冗长的生成代码,如果老板通知你改用fml(或者xml等)格式,估计程序员会手忙脚乱上很长一端事件,修改后的测试也是很麻烦的。好的 程序员都是懒的,不喜欢做大量无......