摘要: 上下文切换(Context Switch) 多任务系统中,上下文切换是指CPU的控制权由运行任务转移到另外一个就绪任务时所发生的事件。 在操作系统中,CPU切换到另一个进程需要保存当前进程的状态并恢复另一个进程的状态:当前运行任务转为就绪(或者挂起、删除)状态,另一个被选定的就绪任务成为当前任务。上下文切换包括保存当前任务的运行环境,恢复将要运行任务的运行环境。 进程上下文用进程的PCB(进程控制块)表示,它包括进程状态,CPU寄存器的值等。 通常通过执行一个状态保存来保存CPU当前状态,然后执行一个状态恢复重新开始运行。 可执行程序代码是进程的重要组成部分。这些代码从可执行文件载入到... 阅读全文
posted @ 2012-09-13 10:29 Ranger98 阅读(558) 评论(0) 推荐(0)
摘要: 2012.6.191、下面的代码输出是什么,为什么?void foo(void){ unsigned int a = 6; int b = -20; (a+b > 6) ? puts("> 6") : puts("<= 6");} 这个问题测试你是否懂得C语言中的整数自动转换原则,我发现有些开发者懂得极少这些东西。不管如何,这无符号整型问题的答案是输出是 ">6"。原因是当表达式中存在有符号类型和无符号类型时所有的操作数都自动转换为无符号类型。因此-20变成了一个非常大的正整数,所以该表达式计算出的结果大于62 阅读全文
posted @ 2012-06-19 13:32 Ranger98 阅读(191) 评论(0) 推荐(0)
摘要: 1、gets()头文件:stdio.hchar*gets(char*buffer)功能:从stdin流中读取字符串,直至接受到换行符或EOF时停止,并将读取的结果存放在buffer指针所指向的字符数组中。换行符不作为读取串的内容,读取的换行符被转换为null值,并由此来结束字符串。 返回值:读入成功,返回与参数buffer相同的指针;读入过程中遇到EOF(End-of-File)或发生错误,返回NULL指针。所以在遇到返回值为NULL的情况,要用ferror或feof函数检查是发生错误还是遇到EOF。gets(s)函数与 scanf("%s",&s) 相似,但不完全 阅读全文
posted @ 2012-04-11 11:22 Ranger98 阅读(1272) 评论(0) 推荐(0)
摘要: 1、No rule to make target '***' 遇见这种问题,意思是说找不到某个模块,我的解决办法是打开pro文件,该文件是由qt自动生成的工程文件,或者说是一个描述文件,包含了对源文件、头文件、qt模块等的声明。出了问题,有可能是你已经删除了某个文件,但是pro里面还包含对该文件的声明,解决办法是删除掉pro中相应文件的声明2、QWT的配置在pro文件中添加如下代码:CONFIG(debug,debug|release):LIBS+= -L”C:\Qt\2010.05\qt\lib” -lqwtd else:LIBS += -L”C:\Qt\2010.05\q. 阅读全文
posted @ 2012-03-25 21:20 Ranger98 阅读(144) 评论(0) 推荐(0)
摘要: 所谓模块,可以把其理解为源文件。python用冒号和代码缩进来区分代码之间的层次。和C/C++区别很大模块导入import sysfrom sys import path前者在当前程序的命名空间中创建导入模块的引用,从而可以使用“类名.属性”的方式调用;而后者只导入模块中的一部分内容,并在当前的命名空间中创建导入对象的引用。中文注释:在文件的最前面加上:# -* coding: UTF-8 -* -跨平台注释:#! /user/bin/python语句的分隔python使用"\"作为换行符python一次新的赋值,将创建一个新的变量。即使变量的名称相同,变量的标示并不相同。 阅读全文
posted @ 2012-03-21 18:49 Ranger98 阅读(260) 评论(0) 推荐(0)
摘要: You need to enable support for console applications in order to use the stdin, stdout and stderr streams at the console. To do this, add the following declaration to your application's project file: CONFIG += console意思就是说如果你想用Qt写控制台程序,需要在工程文件里加上这么一句:CONFIG += console qRegisterMetaType() qRegiste 阅读全文
posted @ 2012-03-13 17:27 Ranger98 阅读(129) 评论(0) 推荐(0)
摘要: 最近开始看各种“宝典”了,发现自己有好多C++死角,赶紧查漏补缺,见招拆招吧。1、外部链接和内部链接。在C++中,外部链接主要包括全局变量(非static,非const)和非静态自由函数(非类成员函数),类的非inline函数(包括静态和非静态),类的静态数据成员(这也是为什么类的static数据成员必须在类定义体外定义)。他们在一个编译单元中定义,其它编译单元通过extern声明访问它们,在整个程序中这些外部链接的变量和函数共用相同的地址;const,static变量和static函数,,类的定义,enum定义,Union定义,inline函数定义,类的inline函数定义,typedef声 阅读全文
posted @ 2012-03-04 17:01 Ranger98 阅读(258) 评论(0) 推荐(0)
摘要: 1.void *memset(void *s, int c, size_t n); 函数解释:将s中前n个字节替换为c并返回s; 头文件<CString>memset:作用是在一段内存块中填充某个给定的值,它是对较大的结构体或数组进行清零操作的一种最快方法。memset是按照字节来进行清除工作的,所以下面这种用法是错误的:#include <iostream> #include <cstring> using namespace std; int main() { int a[5]; memset(a,1,5);//这里改成memset(a,1,5 *siz 阅读全文
posted @ 2012-03-04 12:58 Ranger98 阅读(217) 评论(0) 推荐(0)
摘要: # include <iostream>using namespace std;template <typename T, int SIZE>class array{ T data_[SIZE];public: array(){}; array (const array& other); const array& operator = (const array& other); T& operator[](int i) {return data_[i];} const T& get_elem (int i) const {retu 阅读全文
posted @ 2012-02-29 11:34 Ranger98 阅读(130) 评论(0) 推荐(0)
摘要: 今天查了下msdn,发现getline这个函数有两个版本,string::getline(),basic_istream::getline()。它们都是从输入流获取一行数据到指定的位置。它们的函数原型如下:首先看basic_istream中的版本:该函数从输入流中读取_count-1个元素存储到_Str,最后再附上一个字符串终止符。当函数遇见文件结束符或者在遇见_count-1个元素之前遇见了_Delim,则该函数停止读取。同时,_Delim永远都不会被读取后存储到_Str中,也不会返回到输入流中,而是pass掉。(这一点和get函数不同,所以用get函数后需要处理换行符)再来看string中 阅读全文
posted @ 2012-01-10 22:23 Ranger98 阅读(254) 评论(0) 推荐(0)