07 2018 档案
摘要:一.基本概念 进程间通信:进程之间交换数据的过程叫进程间通信。 进程间通信的方式:、 简单的进程间通信: 命令行:父进程通过exec函数创建子进程时可以附加一些数据 环境变量表:父进程通过exec函数创建子进程顺便传递一张环境变量表 信号:父子进程之间可以根据进程号相互发送信号,进程简单通信 文件:一个进程向文件中写入数据,另一个进程从文件中读取出来。...
阅读全文
摘要:一.基本的概念 1.中断 终止或者暂停当前正在执行的进程,转而去执行其他的任务。 硬中断:来自硬件设备的中断 软中断:来自其他程序的中断 2.信号 信号是一种软中断,可以把他看作是进程与进程,内核与进程通信的一种方式,它为程序的异步执行提供了技术支持。 3.常见的信号 SIGINI(2) 终端中断ctrl+c SIGQUIE(3) 终端退出信号ctrl+/ SIG...
阅读全文
摘要:系统调用: 定义:操作系统把它具有的功能列成一张表,然后给每一个功能取一个编号,当用户层需要调用某个系统功能时,只需要向内核发送对应的编号即可。 1.Linux和Unix系统的绝大多数功能都是通过系统调用形式提供的,不是通过函数形式调用,当需要执行这些功能的时候,可以向内核发送一个编号,那么内核就会把对应的系统调用执行。 2.系统调用是以标准C语言的形式提供的,但是它不属于C语言. 3.一般程...
阅读全文
摘要:一.基本概念 1.进程与程序 程序: 是存储在磁盘上的文件,它是包含要执行的机器指令和数据的静态实体 进程: 是一个正在运行的程序,一个程序可能包含多个进程(多任务,多进程),进程在操作系统中是一个执行特殊任务的一个单元。 2.进程的分类 交互进程:需要用户输入数据,也会显示一些结果给用户看 批处理进程:用来执行脚本的进程,例如Makefile. 守护进程:它是一种一直活跃...
阅读全文
摘要:一.错误处理 通过函数返回值表示错误 1.合法,不合法 数组的查找 练习:计算文件的大小 int file_size(const char *path); 2.NULL或其他地址(0xffffffff) 例子:malloc,fopen,dlopen 练习:实现memcpy void *mem_copy(void *dest,const void *src,size_...
阅读全文
摘要:一.UNIX操作系统 作者:丹尼斯.里奇,肯.汤普逊 版权:贝尔实验室 时间:1971 特点:多用户,多任务(多进程),多CPU(多种CPU架构),高安全,高可靠,高性能,高稳定 应用:构建大型服务器的商业服务器,移动终端的嵌入式手持设备。 三大派生版本: 各大公司对Unix进行的升级扩展: IBM
阅读全文
摘要:介绍红黑树是一个平衡的二叉树,但不是一个完美的平衡二叉树。虽然我们希望一个所有查找都能在~lgN次比较内结束,但是这样在动态插入中保持树的完美平衡代价太高,所以,我们稍微放松逛一下限制,希望找到一个能在对数时间内完成查找的数据结构。这个时候,红黑树站了出来。 阅读以下需要了解普通二叉树的插入以及删除操作。 红黑树是在普通二叉树上,对没个节点添加一个颜色属性形成的,同时整个红黑二叉树需要同时满足一下...
阅读全文
摘要:1.排序算法://****************************Sort.h******************************************** #ifndef SORT_H #define SORT_H #include #include #include //冒泡排序 void BubbleSort(int data[],int len); //简单选...
阅读全文
摘要:1.二分查找和插值查找//************************Search.h*********************************** #ifndef SEARCH_H #define SEARCH_H #include #include int BiSearch(int array[],int n,int key); int IVSearch(int arra...
阅读全文
摘要:1.Prim算法生成最小生成树//Prim算法生成最小生成树 void MiniSpanTree_Prim(MGraph G) { int min,i,j,k; int adjvex[MAXVEX]; int lowcost[MAXVEX]; lowcost[0] = 0; adjvex[0] = 0; for(i = 1;i 0) { f = parent[f]; }...
阅读全文
摘要:1.树的储存方式//****************双亲表示法************************ #define Max_TREE_SIZE 100 typedef int TElemType; typedef struct PTNode //结点结构 { TElemType data; int parent; }PTNode; typedef struct { PTNode...
阅读全文
摘要:1.kmp#include #include #include #include void get_nextval(char *str,int *nextval) { int i,j; i = 0; j = -1; nextval[0] = -1; int len = strlen(str); while(i = lenS)return i-lenS;//必须要由j使...
阅读全文
摘要:1.栈的顺序存储结构//*********************************stack_array.h************************************ #ifndef STACK_ARRAY_H #define STACK_ARRAY_H #define MAXSIZE 1000 #include #include #include typedef i...
阅读全文
摘要:1.单链表//单链表代码,手打纯手工 //***********************************link.h*********************************** #ifndef LINK_H #define LINK_H #include #include #include typedef int datatype; typedef struc...
阅读全文
摘要:附件列表数据结构绪论.jpg
阅读全文
摘要:来源: https://www.devbean.net/2012/09/qt-study-road-2-events/1.事件驱动的概念:我们的程序的执行顺序不再是线性的,而是一个个事件驱动着程序进行。没有事件,程序将阻塞在那里,不执行任何代码。2.总的来说,如果我们使用组件,我们关心的是信号槽;如果我们自定义组件,我们关心的是事件。因为我们可以通过事件来改变组件的默认操作。比如,如果我们要自定义...
阅读全文
摘要:在前面的章节中,我们讨论了 Qt 标准对话框QMessageBox的使用。所谓标准对话框,其实也就是一个普通的对话框。因此,我们同样可以将QDialog所提供的其它特性应用到这种标准对话框上面。今天,我们继续讨论另外一个标准对话框:QFileDialog,也就是文件对话框。在本节中,我们将尝试编写一个简单的文本文件编辑器,我们将使用QFileDialog来打开一个文本文件,并将修改过的文件保存到硬...
阅读全文
摘要:MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) { setWindowTitle(tr("Main Window")); openAction = new QAction(QIcon(":/images/doc-open"), tr("&Open..."), this); openAct...
阅读全文
摘要:参考:https://www.devbean.net/2012/09/qt-study-road-2-standard-dialogs-qmessagebox/1.Qt 的内置对话框大致分为以下几类:QColorDialog:选择颜色;QFileDialog:选择文件或者目录;QFontDialog:选择字体;QInputDialog:允许用户输入一个值,并将其值返回;QMessageBox:模态...
阅读全文
摘要:1.新组件:①QSpinBox 只能输入数字的输入框,并且带有上下箭头的步进按钮②QSlider 带有滑块的滑杆③这两个组件的连接 QObject::connect(slider, &QSlider::valueChanged, spinBox, &QSpinBox::setValue);1 1 QObject::connect(slider, &QSlider::valueChanged,...
阅读全文
摘要:标准 C++ 对象模型在运行时效率方面卓有成效,但是在某些特定问题域下的静态特性就显得捉襟见肘。GUI 界面需要同时具有运行时的效率以及更高级别的灵活性。为了解决这一问题,Qt “扩展”了标准 C++。所谓“扩展”,实际是在使用标准 C++ 编译器编译 Qt 源程序之前,Qt 先使用一个叫做 moc(Meta Object Compiler,元对象编译器)的工具,先对 Qt 源代码进行一次预...
阅读全文
摘要:在主窗口基础之上,添加菜单和工具栏等的动作。// !!! Qt 5 // ========== mainwindow.h #ifndef MAINWINDOW_H #define MAINWINDOW_H #include class MainWindow : public QMainWindow { Q_OBJECT public: MainWindow(QWidget...
阅读全文
摘要:Qt 5 与 Qt 4 最大的一个区别之一是底层架构有了修改。Qt 5 引入了模块化的概念,将众多功能细分到几个模块之中。Qt 4 也有模块的概念,但是是一种很粗的划分,而 Qt 5 则更加细化。本节主要对 Qt 5 的模块进行一个简单的介绍,以便以后大家需要哪些功能的时候知道到哪个模块去寻找。Qt 5 模块分为 Essentials Modules 和 Add-on Modules 两部分。...
阅读全文
摘要:具体实现一个自定义newspaper,reader的信号槽//!!! Qt5 #include ////////// newspaper.h class Newspaper : public QObject { Q_OBJECT public: Newspaper(const QString & name) : m_name(name) { }...
阅读全文
摘要:1.信号槽最常用的方式:connect(sender, signal, receiver, slot);第一个对象是发出信号的对象,第二个是发送对象发出的信号,第三个是接收信号的对象,第四个是接收对象在接收到信号后需要调用的函数。Qt5中QObject::connect()的五个重载:QMetaObject::Connection connect(const QObject *,...
阅读全文
摘要:1.对于Qt程序来说,main()函数一般以创建application对象(gui是QApplication,非gui程序是QCoreApplication.QApplication实际上是QCoreApplication的子类)。后面才是实际业务的代码。这个对象用来管理Qt程序的生命周期,开启事件循环。main函数最后调用app.exec()开启事件循环。我们现在可以简单把事件循环理解成一段无限...
阅读全文
摘要:上一章我们介绍了有关事件的相关内容。我们曾经提到,事件可以依情况接受和忽略。现在,我们就来了解下有关事件的更多的知识。首先来看一段代码://!!! Qt5 // ---------- custombutton.h ---------- // class CustomButton : public QPushButton { Q_OBJECT public: CustomButton...
阅读全文
摘要:一般来说,可执行文件没有扩展名。 Linux不根据扩展名判断文件类型,而是根据文件的内容来判断。所以扩展名的作用是帮助人来识别文件,对于Linux系统本身来说没有什么用处。 .sh结尾表示是shell脚本文件,但是不以.sh结尾的文件也可以是可执行的shell脚本(比如/etc/init.d中的脚本),因为它们的文件开头都有#!/bin/sh这一行
阅读全文
摘要:转于:https://blog.csdn.net/liuyundemhsg/article/details/52525028参数:-c :建立一个压缩文件的参数指令(create 的意思);-x :解开一个压缩文件的参数指令!-t :查看 tarfile 里面的文件!特别注意,在参数的下达中, c/x/t 仅能存在一个!不可同时存在!因为不可能同时压缩与解压缩。-z :是否同时具有 gzip 的属...
阅读全文
摘要:1.vi 编辑器中跳到文件的第一行:键盘按下 小写 gg vi 编辑器跳到文件最后一行:键盘按 shift + g (等于G)跳转到当前行的第一个字符按0,跳转到当前行的最后一个字符按shift+4即$2.跳转到指定行数:输入ngg或者nG或者输入:n3.对全文件或者指定行内文件进行文本替换1) 文件内全部替换::%s#abc#123#g (如文件内有#,可用/替换,:%s/abc/123/g)...
阅读全文
摘要:1.一般来说,主文件夹都在/home下面,比如登陆的账户为LyndonMario,则我的主文件夹为 /home/LyndonMario.2.ctrl+space可以调出输入法.3.CentOS中的默认提供的会话图形界面有GNOME和KDE,GNOME的文件管理系统为鹦鹉螺(nautilus)而KDE的资源管理系统为征服家(Kconqueror).4.run level 3纯文本环境,run lev...
阅读全文
摘要:发展历史:20实际60年代:那时候的计算机一般只有在军事,科研以及学术院校才能见到,不是一般人能接触的东西。开始的时候计算机的时候的输入靠卡片阅读器,即程序开发者在卡片上打洞放入卡片阅读器上输入,在通过打印机输出,后来虽然出现了键盘输入,但是由于计算机的数量过少,大家去用计算机都需要等待很长的时间,这时MIT由此发明了一个分时系统。即一个主机多个终端,终端可以接收输入并接收主机发来的处理结果,这时...
阅读全文
摘要:转至:http://yiweifen.com/v-1-118586.html 前言往常找某草的网站基本上是这样的:先FQ,然后谷歌找1024,出现很多某草的更新地址,大多都是广告,大约需要花十几分钟才能找到真实地址。有了它,现在你不必为此烦恼。安装chrome的SwitchyOmega插件,直接登录某草官网,省去诸多中转环节,一步到位,省时又安全。插件介绍SwitchyOmega是一款在Googl...
阅读全文
摘要:1.分配再静态或栈内存中的对象由编译器自动创建销毁。2.C++中动态内存的管理是通过new:前者为对象非配空间并返回一个指向该对象的指针。delete:接受一个动态对象的指针,摧毁该对象,并释放与之关联的内存。智能指针:负责自动释放所指对象,都定义在memory头文件中shared_ptr:允许多个指针指向同一个对象unique_ptr:独占所指对象。weak_ptr:弱引用,指向shared_p...
阅读全文
摘要:1.关联容器:map关键字-值对,经常被称为关联数组set中每个元素只有一个关键字,即只保存关键字的容器①允许重复的关键字的容器名字都包含multi。②不保持关键字顺序存储的容器的名字都以但粗unordered开头。③无序容器以哈希函数来组织元素。④关联容器的迭代器都是双向的。map set multimap multiset / 无序集合 unordered_map ...
阅读全文
摘要:关键:算法通过在迭代器上进行操作来实现类型无关。算法不改变所操作序列的大小。1.算法大多都定义在algorithm头文件中,标准库还在头文件numeric中定义了一组数值泛型算法。2.泛型算法永远也不会改变底层容器的大小。3.用一个单一迭代器表示第二个程序的算法都假定第二个序列至少与第一个一样长。4.插入迭代器:当我们通过一个插入迭代器赋值时,一个与赋值号右侧值相等的元素被添加到容器中。5.多个算...
阅读全文
摘要:PS:删除元素的成员函数并不检查其参数。在删除元素之前,程序员必须确保它们是存在的。1.迭代器的范围是[begin,end)左闭右开。2.对构成迭代器的要求:①它们指向同一个容器中的元素或者容器的最后一个元素之后的位置。②end不在begin之前。3.当将一个容器初始化为另一个容器的拷贝的时候,两个容器的容器类型和元素类型都必须相同。但是,当传递迭代器参数来拷贝一个范围的时候,新容器和原容器中的元...
阅读全文
摘要:1.IO对象不能拷贝或对IO对象赋值,进行IO操作的函数通常是以引用方式传递和返回流。2.一个流一旦发生错误,其上的后续的IO操作都会失败。代码通常应该在使用一个流之前检查它是否处于良好状态。确定一个流对象的状态的最简单的方法就是将它当作一个条件来使用。(while,for循环条件)3.iostate类型:badbit,failbit,eofbit,goodbit查询这四个标志位的函数:①good...
阅读全文
摘要:类(关键词):数据抽象(数据成员和函数成员),封装(private),构造函数,静态成员1.判断一个类是否是抽象数据类型,可以看我们对这个类的操作是对你内的数据成员操作,自己编写相应的处理函数,还是直接通过它的接口来使用这个类,完全不用知道这个类内具体有什么数据成员。2.当我们设计类的接口的时候,应该考虑如何才能使得类易于使用,而当我们使用类时,不应该顾及类的实现机理。3.任何对类成员的直接访问都...
阅读全文
摘要:1.重载函数,也就是说一个名字可以对应几个不同的函数。2.内置类型的未初始化局部变量将产生未定义的值。3.局部静态对象在程序执行路径第一次进过对象定义语句时初始化,并且直到程序终止才被销毁。内置类型的局部静态变量初始化为0.4.函数的声明也称函数原型。5.含有函数声明的头文件应该被包含到定义函数的源文件中。(来让编译器验证函数的定义和声明是否匹配)6.熟悉C语言的程序员常常使用指针类型的形参访问函...
阅读全文
摘要:1.指用是一个只含有一个单独的分号的语句。什么时候用到:语法上需要一条语句但是逻辑上不需要。2.复合语句是指用花括号括起来的语句和声明的序列,又被称为块。3.悬垂else :规定else与离它最近的尚未匹配的if匹配。4.case语句分支最后的break一般不要省略。如果没写break语句,最好加一段注释说明清楚程序的逻辑。5.在switch下的case条件语句定义一个default是很有必要的,...
阅读全文
摘要:数据类型选择的准则:①当明确知晓数值不可能为负时,选用无符号类型。②使用int执行整数运算。在实际应用中,short常常显得太小而long一般和int有一样的尺寸。如果运算范围超过int的表示范围,则选用long long。③在算术表达式中不要使用char或bool,只有在存放字符或布尔值时才使用它。因为类型char在一些机器上是有符号的,而在一些机器上又是无符号的,所以使用char进行算术运算特...
阅读全文
摘要:1.using用法:using namespace ::name;注意事项:一般不在头文件使用using否则很容易导致运用命名空间不对错误。2.string的方法:①getline(输入流,string对象);注意一点是,函数从给定流读入内容,直到遇到换行符结束,(换行符也被读进来了),然后把所读的内容存入那个string对象中去(注意不存换行符)②size,size函数的返回值是string::...
阅读全文
摘要:1.重载运算符:为已经存在的运算符赋予另外一层含义。2.左值与右值: ①当一个对象被用作右值的时候,用的是对象的值(内容);当一个对象被用作左值的时候,用的是对象的身份(在内存中的位置)。②在需要用的右值的地方可以用左值替代,但是不能把右值当成左值使用。3.在C++中一般的表达式说明符运算对象的求值顺序都没有明确规定,是随机的,因此在这些表达式中的对象来说,如果表达式指向并修改了同一个对象,会引...
阅读全文
摘要:1.C++和C都是一种静态数据类型语言,它对表达式中数据类型的见检查发生在编译时,因此,编译器必须知道程序中每一个变量对应的类型,而像python这种动态数据类型的语言,在程序运行的时候才进行检查,因此python变量不需要指定类型。2.非常量可以转换为常量,反之错误。
阅读全文
摘要:心得体会:因为之前一直在用在学C,因此在看完C++Prime第一章后,就有中在一个培训班中,一个老师用一个简单的项目来带你了解这种语言的特性的感觉。当然这个告诉是在让你脑子固化接受一些点的前提下。感觉到与C的不同之处有如下几点:1.增加了命名空间的概念,使命名不会冲突2.增加了类的概念,以面向对象的方式编程(std::cout,std::cin这些都包括在这里面)1.当执行完一个程序后,可以同过 ...
阅读全文
摘要:1.在利用迭代器进行for循环时候,如果容器中元素为string之类的,循环的条件不要忘记判断容器是否为空例子:for(auto i = v1.begin();i != v1.end && i->empty();i++)
阅读全文
摘要:来源: https://blog.csdn.net/u010558281/article/details/77793644字面意义上的解释:0:整型常量NULL:预处理符号nullptr:空指针类型常量其中前两者在C中出现,最后一个在C++11中出现。我们平常会使用这三个符号来表示空指针,但是他们之间还是有许多差别。NULL 声明在cstdlib中: #ifdef __cplusplus #...
阅读全文
摘要:1.string: ①substr 和substring:区别:主要是两者的参数不同功能:相似 substr :返回一个从指定位置开始的指定长度的子字符串substring :返回位于 String 对象中指定位置的子字符串。用法:stringvar.substr(start , [length ])参数stringvar 必选项。要提取子字符串的字符串文字或 String 对象。...
阅读全文
摘要:1.获取输入的空白字符的方法。①使用istream的get()成员函数(ostream的put()成员函数一般与get配合使用)如果你需要来回切换是否忽略空白的话,这种方法才是首选int count = 0;char c;while (cin.get(c)) { // Always reads whitespace chars. count++; cerr > no...
阅读全文
摘要:1.运行代码的三种情况 a.运行时有逻辑问题 gdb a.out 设置断点 单行执行 b.运行代码没有退出 一直运行 结束不了 挂载调试 跟踪调试-g选项 运行程序 没结束 重新开一个终端 进入到和程序同目录 ps -aux|grep 程序名a.out 找到进程号 gdb a.out 进程号进程号x 1-g选项2运行程序 没结束3重新开一个终端 进入到和程序...
阅读全文
摘要:编译过程的一点心得体会:.h文件其实只在预处理的过程用到,用来将类似#include 这样的行展开为具体内容。那些标准库或者其他库中的函数,是在链接的过程中连接器把相应部分从库中提取出来的,和头文件无关,头文件其实只是做一个函数声明,使编译通过。Chapter 1:1.词法分析的贪心贪心法,即大嘴法:每一个符号应该包括尽可能多的字符。2.如果一个整型常量的第一个字符是数字0,那么该常量会被视作是八...
阅读全文
摘要:C语言总结C语言的概述(自己总结) 起源,发展,现状,特点,优缺点数据类型 内建:C语言自带的数据类型 整型 stdint.h 对数据类型进行了封装 limits.h 各种数据类型的最大值是小值 unsigned uint8_t,uint16_t,uint...
阅读全文
摘要:1.bool定义时候需要加头文件 #include2.强制类型转换的原理:只是在转换的过程中临时生成一个变量来代替原来的量,当操纵结束的时候,这个临时变量也消失。3.类似这样的注释,只能把while(1){}这个东西注释掉,最终程序还是会执行一次printf预处理结果。4.scanf("%d ",&num[i]);%d后加了空格,就会使这个函数在回车的时候还不停止,这是因为加了空格以后,就会跳过所...
阅读全文
摘要:1.类型限定词restrict:对于某指针是访问一个数据对象的唯一且初始的方式,则可以用restrict来修饰int ar[10]; int* restrict restar = (int*)malloc(10*sizeof(int)); int* par = ar; for(n = 0 ; n < 10 ;n++) { par[n] += 5; restar[n] += 5; ...
阅读全文
摘要:1.字符常量如'$'是存储在int中的,但实际上只使用int的一个字节来存储'$'的编码 2.printf的返回值:返回打印的字符的个数,如果有输出错误,那么返回一个负数 scanf的返回值:返回成功读入的项目个数,如果没有读到任何项目(比如它期望读入一个数字,但是你输入了一个非数字的情况)则返回0
阅读全文
摘要:题一,堆和栈的区别是? 题二,Volatile与Register的区别是? 题三,ARM里的大端格式和小端格式分别是什么意思? 题一答案: (1)存储内容不同 栈:在函数调用时,栈中存放的是函数中(最底下是函数调用后的下一条指令)的各个参数(局部变量)。 堆:一般是在堆的头部用一个字节存放堆的大小。
阅读全文