- 博客(119)
- 收藏
- 关注
转载 1、基础数据
数据类型理解为固定内存大小的别名。数据类型是创建变量的模子。 2、有符号与无符号数据类型的最高位用于标识数据的符号。最高位为1,表明这个数为负数。最高位为0,表面这个数为负号。有符号数的表示法:在计算机内部用补码表示有符号数。正数的补码为正数本身。负数的补码为负数的绝对值各位取反后加一。在计算机内部用源码表示无符号数。无符号数默认为正数,无符号数没有符号位。...
2018-08-06 17:11:29 1134
转载 72、进程与线程
72、进程与线程的概念值得深思的问题:什么是程序?什么是进程?程序和进程有什么关系?程序是计算机存储系统中的数据文件:源代码程序:文本文件,描述程序行为和功能。不能直接运行可执行程序:二进制文件,直接加载并执行。源代码程序->编译器->可执行程序(二进制)进程的概念:有了程序不见得有进程,执行程序得到的广义概念:程序关于某个数据集合的一次运行活动。狭义概念:程序被加...
2018-07-30 17:04:30 756
转载 32、qt中的文件操作+
32qt中的文件操作+qt中io操作的处理方式:(类似linux思想外部设备:一切皆文件)qt通过统一的接口简化了文件与外部设备的操作方式,qt中的文件被看做一种特殊的外部设备,qt中的文件操作与外部设备的操作相同。 统一的IO操作方式io操作中的关键函数接口:打开设备:bool open(OpenMode mode)读取数据:QByteArray read(qint64 ma...
2018-07-27 17:34:04 1896
转载 10、实模式到保护模式上
从计算机的示例谈起:远古的程序开发:直接操作物理内存CPU指令的操作数直接使用实地址(实际内存地址)程序员拥有绝对的权利(利用cpu指哪打哪)绝对的权利带来的问题:1难以重定位:程序每次都需要同样地址的内存执行。有的程序用了开头和结尾,当在别的电脑上运行后,512k内存编写的程序用了开头32k,结尾8k,在256内存的设备上就不能执行了。2给多道程序设计带来障碍:A程序...
2018-07-16 12:26:34 428
转载 6、突破512字节的限制一
辅助函数-->字符串打印,软盘读取问题:主引导程序中如何进行字符串打印?BIOS中的字符串打印:指定打印参数(AX=0X1301,BX=0x0007)指定字符串的内存地址(ES:BP=串地址)段地址和段内偏移地址来指定目标字符串的内存地址指定字符串的长度(CX=串长度)中断调用(int 0x10)字符串打印示例://指定字符串地址:mov ax, msg(字符串在段内偏移地址)mov bp,...
2018-07-10 20:03:53 1320
转载 4、主引导程序的扩展上+
主引导程序是BIOS后运行的第一个程序,位于第0扇区,以55aa为结束符,大小不超过512字节512字节能完成操作系统功能么?限制:主引导程序的代码量不能超过512字节!突破限制的思路:主引导程序:1、完成最基本的初始化工作2、从存储介质中加载程序到内存中3、将控制权交由新加载的程序执行。存储介质 0扇区Boot...Program...找到程序加载到内存控制权交给内存内存 ...
2018-07-09 13:30:13 594
转载 1、进阶操作系统
什么是操作系统?windows,unix,linux,macos,android,ios...操作系统是直接运行于硬件之上的计算机程序。操作系统用于管理和控制计算机的硬件与软件资源。操作系统为用户软件的开发提供必要的服务和接口。现代计算机系统架构:硬件层-BIOS()-操作系统-用户软件(编译软件)BIOS-(base input & output system)BIOS是计算机上电后第一...
2018-07-07 17:56:54 444
转载 21、系统模块管理的设计
系统模块化设计将系统中有关联的部分组合在一起,构成具有特定功能的子系统。划分模块的内部组成具有较强的耦合性,模块本身具有一定的通用性。不同的模块间可以进行相互组合与依赖,进而构成不同的产品。模块化设计:结构化设计 面向对象设计示例:Module Demointerface123 int function(); class0 class1 class2接口比模块先实现,用来各个模块交互...
2018-07-06 18:31:11 6956 1
转载 18、设计、软件质量之本
软件设计是什么?一种创造性的活动,力求以简单优雅的方式解决实际问题、软件设计是一门技术:数据结构,组成原理,操作系统,编程语言。软件设计是一门艺术。并不是技术知识的简单堆砌,分析抽象,取舍。软件设计的意义(构架的意义)软件设计:功能,部署,交互,复用性,维护性,扩展性。特定:是一个塑造模型(概念)的过程是一个取舍的过程,是一个分而治之的过程是一个在理性范围内追求完美的过程什么是软件质量?用户角度:...
2018-07-05 17:27:29 343
转载 16、混淆指针与数组的问题
下面的程序输出什么?#include <stdio.h> //main.cextern char* g_name; //使用define.c定义的全局数组g_nemeint main(){ define_print();printf("main():%s\n",g_name);return 0;}#include <stdio.h> // define.ccha...
2018-07-05 15:28:20 256
转载 13、深入理解程序结构
程序由不同的段构成(代码段,数据段):程序的静态特征就是指令和数据。程序的动态特征就是执行指令处理数据。源程序到可执行程序文件的对应关系:图13.1初始化后去.data 未初始化去.bss局部变量在栈上,可执行函数语句去代码段大部分去了可执行程序。代码段(.text):可执行不可写源代码中的可执行语句编译后进入代码段。代码段在有内存管理单元的系统中具有只读属性。预防恶意软件破坏代码段的大小在编译结...
2018-07-04 19:44:20 422
转载 11、调试利器GDB
什么是GDB? GNU项目中的调试器(gnu debuger)能够跟踪程序的执行,也能够恢复程序奔溃前的状态。为什么需要GDB?软件不是一次性开发完成的(是软件就有bug,是程序就有问题)调试是软件开发过程中不可或缺的技术(调试工具很重要)GDB的常规应用:自定义程序的启动方式(指定影响程序运行的参数)设置条件断点(在条件满足时暂停程序的执行)回溯检查导致程序异常就结束的原因(Core Dump)...
2018-07-03 14:34:38 342
转载 7、链接器
问题:源文件被编译成目标文件,这些目标文件如何生成最终的可执行程序?链接器的意义:链接器的主要作用是把各个模块之间相互引用的部分处理好,使得各个模块之间能够正确的衔接。文标文件的秘密:各个段没有具体的起始地址,只有段大小信息。各个标识符没有实际地址,只有段中的相对地址。段和标识符的实际地址需要链接器具体确定。链接器的工作内容:将目标文件和库文件整合为最终的可执行程序。合并各个目标文件中的段(.te...
2018-07-02 13:02:45 364
转载 1、处理器
处理器:微控制器vs微处理器微控制器:cpu+片内内存+片内外设微处理器:cpu注意:微控制器具有成本低,功耗低等优点,常用于嵌入式系统设计。对于软件工程师而言,微控制器和微处理器没有任何区别。寄存器分类:cpu寄存器:专用指令执行,数据运算,变量处理,参数传递。外设寄存器:用于控制外设的行为和工作方式,寄存器值的配置需要根据芯片手册完成。处理器中的关键寄存器:...
2018-06-30 18:46:52 531
转载 15、make中的隐式规则
如果同一个目标的命令拆分的写到不同地方,会发生什么?下面的程序怎么执行?为什么?makefile中出现同名目标时:依赖:所有的依赖将合并在一起,成为目标的最终依赖。命令:当多处出现同一目标时,make发出警告。所有之前定义的命令被最后定义的命令取代。注意事项:当使用include关键字包含其他文件时,需要确保被包含文件中的同名目标只有依赖,没有命令。否则,同名目标的命令将被覆盖。什么是隐式规则(b...
2018-06-25 18:11:57 667
转载 11、自动生成依赖关系
值得思考的问题目标文件(.o)是否只依赖与源文件(.c)?编译器如何编译源文件和头文件?test.out->test.c test.h编译行为带来的缺陷:预处理器将头文件中的代码直接插入源文件。编译器只通过预处理后的源文件产生目标文件。因此,规则中以源文件为依赖,命令可能无法执行。因为可能.h修改,.c可能没有修改。下面的makefile有没有问题?OBJS :=func.o main.o ...
2018-06-24 21:15:51 516 1
转载 6、变量的高级主题
变量值的替换:使用指定字符(串)替换变量值中的后缀字符(串)。语法格式:$(var:a=b)或${var:a=b}替换表达式中不能有任何的空格.make中支持使用${}对变量进行取值。src :=a.cc b.cc c.ccobj :=$(src:cc=o) //(a.o b.o c.o)test : @echo "obj =>$(obj)"变量的模式替换:使用%保留变量值中的指定字符...
2018-06-22 13:57:01 223
转载 1、make和makefile
思考:什么是make,为什么需要make?make是一个应用程序:解析源程序之间的依赖关系,根据依赖关系自动维护编译工作,执行宿主操作系统中的各种命令。makefile是一个描述文件:定义了一系列的规则来指定源文件编译的先后顺序。拥有特定的语法规则,支持函数定义和函数调用。能够直接集成操作系统中的各种命令。make和makefile之间的关系:makefile中的描述用于指导make程序如何完成工...
2018-06-20 23:04:33 431
转载 71、图的定义与操作
定义:图是由顶点集合(Vertex)及顶点间的关系集合边(Edge)组成的一种数据结构:Graph=(V,E)V={x|x属于某个数据对象}是顶点的有穷非空集合。E={{x,y}|x,y属于V}是顶点之间关系的有穷集合。无向边:顶点x和y之间的边没有方向,则称该边为无向边。(x,y)与(y,x)意义相同,表示x,y之间有连接无向图:图中任意两个顶点之间的边均是无向边,则称该图为无向图。有向边:顶点...
2018-06-14 13:13:55 267
转载 70、二叉树题目
单度结点删除:编写一个函数用于删除单度结点,删除后,其唯一的子节点替代它的位置。结点包含指向父结点的指针:定义功能:delOdd1(node)删除node为根结点的二叉树中的单度结点delOdd1(node)=return; node==NULLparent=node->parent;parent->child=node->child;node->child->par...
2018-06-12 13:32:45 195
转载 52、二叉树
树到二叉树的转换:通用树结构:双亲孩子表示法:每个结点都有一个指向其双亲的指针,每个结点都有若干个指向其孩子的指针。另一种树结构模型:孩子兄弟表示法:每个结点都有一个指向其第一个孩子的指针,每个结点都有一个指向其第一个右兄弟的指针。孩子兄弟表示法的特点:1、能够表示任意的树形结构2、每个结点包含一个数据成员和两个指针成员3、孩子结点指针和兄弟结点指针构成了“树杈”二叉树的定义:二叉树是由n个结点组...
2018-06-11 14:05:14 441
转载 51、树的定义(非线性)(工厂模式)
树是一种非线性的数据结构。树是由n(n>=0)个结点组成的有限集合。如果n=0,称为空树;如果n>0,则:有一个特定的称之为根(root)的结点。根结点只有直接后继,但没有直接前驱。除根以外的其它结点划分为m(m>=0)个互不相交的有限集合T0,T1,...,Tm-1,每个集合又是一棵树,并且称之为根的子树(sub tree)。树中度的概念:树的结点包含一个数据及若干指向子树的分...
2018-06-08 12:23:06 392
转载 31、软件开发流程
30中有内存泄漏什么是软件开发流程?通过一系列步骤保证软件产品的顺利完成软件产品的生命期内管理方法学软件开发流程的本质:开发流程与具体技术无关,开发流程是开发团队必须遵守的规则。常见软件开发流程:即兴模型(Build-and-Fix Model):没有规则瀑布模型(Waterfall Model)增量模型(Incremental Mode)螺旋模型(Spiral Model)敏捷模型(Agile ...
2018-06-05 21:59:26 514
转载 46、排序的概念
排序的一般定义:排序是计算机经常进行的一种操作,其目的是将一组无序数组调整为有序数组。数学定义:假设n个数据元素的序列{R1,R2,....,Rn},其相应的关键字序列为{k1,k2,...,kn}这些关键字可以进行比较,即:存在关系kp1<=kp2<=...按此固有关系将上式记录为:{RP1, Rp2,Rp3,...Rpn}的操作成为排序。排序的稳定性:如果在序列中有两个元素ri和r...
2018-06-03 17:28:14 618
转载 27、应用程序中的主窗口文本编辑器
27、应用程序中的主窗口文本编辑器文本编辑器,应用程序中的主窗口:主窗口是与用户进行长时间交互的顶层窗口,程序的绝大多数功能直接由主窗口提供,主窗口通常是应用程序启动后显示的第一个窗口,整个程序由一个主窗口和多个对话框组成。qt中的主窗口:之前开发的也属于主窗口,qt开发平台中直接支持主窗口的概念,QMainWindow是qt中主窗口的基类,QMainWindow继承于QW...
2018-06-03 16:26:21 383
转载 26、布局管理器综合实例
26、向导界面练习开发一个向导用户界面:在同一个界面上展现不同的向导页面,通过上一步和下一步按钮进行切换不同页面上的元素组件和组件排布都不相同,页面中的组件通过布局管理器进行排布。通过布局嵌套进行界面设计:通过QStackedLayout管理不同的页面QStackedLayout-->QWidget1,,QWidget2,,QWidget3通过子组...
2018-06-02 11:06:15 411
转载 18、登录对话框示例分析25计时器
18、登录对话框示例分析登录对话框是应用程序中常用部件。思考:如何开发一个可以在不同项目间复用的登录对话框?登录对话框需求分析:可复用软件部件。获取用户名和密码。附加需求:随机验证码。如何获取用户输入的用户名和密码?如何在两个不同的对话框间传递数据?通过附加的成员变量和成员函数完成不同对话框间的数据传递。检查用户名和密码是否为空:提示错误随机验证码:当验证码输入...
2018-06-01 12:29:01 348
转载 16、Qt对象间的父子关系
QCalculatorUI类对象在堆空间中创建了文本框和按钮,但没有对应的delete代码,是一个bug吗?qt对象间可以存在父子关系,每一个对象都保存有它所有子对象的指针,每一个对象都有一个指向其父对象的指针。当指定qt对象的父对象时,其父对象会在子对象链表中加入该对象的指针,该对象会保存指向其父对象的指针。#include <QtCore/QCoreApplication>#inc...
2018-05-31 12:40:01 821
转载 8、计算机
QLineEdit用于接受用户输入,QLineEdit能够获取用户输入的字符串,是功能性组件,需要父组件作为容器,能够在父组件中进行定位。Qwidget w; //生成QWidget对象,顶级组件QLineEdit le(&w); //生成QLineEdit对象,其父组件为QWidgetle.setAlignment(QT::AlignRight); //设置显示的字符串向...
2018-05-30 22:26:39 210
转载 1、qt
命令行应用程序:命令行应用程序是一种基于顺序执行结构的可执行程序,程序执行过程中不需要与用户产生交互,程序执行后给出最终的运行结果。gcc a.c b.c c.c //编译三个c程序编译过程中不产生用户交互,编译结束后或者生成可执行程序或者给出错误信息。ls 就是一个命令行程序,列出目录和文件main->function1()->function2()特点:程序的运行有固定的开始和固定...
2018-05-29 22:03:01 293
转载 43、递归的思想与应用1
递归是一种数学上分而自治的思想将原问题分解为规模较小的问题进行处理。分解后的问题与原问题的类型完全相同,但规模较小。通过小规模问题的求解,能够轻易求得原问题的解。问题的分解是有限的(递归不能无限进行):当边界条件不满足时,分解问题(递归继续进行),当边界条件满足时,直接求解(递归结束)。地规模型的一般表示法:f(n)=an并f(n-1) n>1, a1 n==1递归在程序设计中的应用递归函...
2018-05-28 20:57:18 221
转载 42、kmp的应用
如何在目标字符串中查找是否存在指定的子串?字符串类中的新功能:indexOf(s):查找子串s在字符串中的位置。remove(s):将字符串中的子串s删除。operator-(s):定义字符串减法。replace(s,t):将字符串中的子串s替换为t。sub(i,len):从字符串中创建子串。子串查找(kmp算法的直接运用)int indexOf(const char* s)constint in...
2018-05-28 16:40:35 303 1
转载 41、子串查找算法
发现:匹配失败时的右移位数与子串相关,与目标串无关。移动位数=已匹配的字符数-对应的部分匹配值。任意子串都存在一个唯一的部分匹配表。部分匹配表示例PMTA B C D A B D0 0 0 0 1 2 0用法:BBC ABCDAB ABCDABCDABDE ABCDABD第七位匹配失败->前6位匹配成功->查表PMT[6]->右移位数6-PMT[6]=6-2=4前缀:...
2018-05-28 15:19:43 715
转载 40、字符串创建(下)
operator[](i):操作符重载函数,访问指定下标的字符。startWith(s):判断字符串是否以s开头endOf(s);判断字符串是否以s结束insert(i,s):在字符串的位置i处插入strim():去掉字符串两端的空白重载数组访问操作符[]:char& operator [](int i);char operator [](int i)const;注意事项:当i的取值不合法...
2018-05-28 12:41:15 327
转载 39、字符串类的创建
历史遗留问题:C语言不支持真正意义上的字符串,C语言用字符数组和一组函数实现字符串操作,C语言不支持自定义类型,因此无法获得字符串类型。以\0结束就是C语言中的字符串从c到c++的进化过程引入了自定义类型。在c++中可以通过类完成字符串类型的定义。问题:c++中的原生类型系统不包含字符串类型。实现时的注意事项:无缝实现String对象与char*字符串的互操作,操作符重载函数需要考虑是否支持con...
2018-05-28 10:30:52 190
转载 38、栈与队列的转换
问题:栈和队列能相互转换吗?问题分析:用栈实现队列等价于用“后进先出”的特性实现先进先出的特性。解决方案:两个栈,stack_in,stack_out实现思路:准备两个栈用于实现队列:stack_in和stack_out当有新元素入队时:将其压入stack_in当需要出队时:stack_out.size()==0;将stack_in中的元素逐一弹出并压入stack_out,将stack_out的栈...
2018-05-27 11:09:49 230
转载 36、队列的概念及实现(上)
队列是一种特殊的线性表。队列仅能在线性表的两端进行操作队头(Front):取出数据元素的一端。队尾(Rear):插入数据元素的一端。队列的特性:先进先出(First in first out)操作:创建队列(queue()),销毁,清空,进,出,获取队头,长度StaticQueue设计要点:类模板,使用原生数组作为队列的存储空间,使用模板参数决定队列的最大容量。StaticQueue实现要点(循环...
2018-05-26 21:53:13 234
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人