自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(34)
  • 收藏
  • 关注

原创 Qt(知识要点3)

一、线程同步互斥量(互斥锁)QMutex 就是POSIX中的pthread_mutex_t的封装。常用的两个成员函数lock、unlock。读写锁QReadWriteLock它比QMutex更实用常用的三个成员函数lockForRead、lockForWrite、unlockA读 B读 OKA写 B读 NOA写 B写 NO信号量QSemaphore用于管理多个资源QSema...

2019-09-11 20:19:50 236

原创 Qt(知识要点2)

一、定时器Qt中的QTimer有两种使用方式:信号:void start(int msec)成员函数,开启定时器并设置定时器的时间间隔。时间到后会发出timeout信号,连接槽函数即可。事件:继承QTimer类,对该类进行扩展,并覆盖 void timerEvent(QTimerEvent *e) 事件。void start(int msec)成员函数,开启定时器并设置定时器的时间间...

2019-09-11 20:18:23 132

原创 Qt(知识要点1)

一、自定义信号和槽1、信号和槽必须定义在类中2、自定义信号和槽类必须继承QObject3、在类的开头写上 Q_OBJECT 没有分号,此标识必须写在项目构建之前,如果是后加上的,必须重新构建项目。4、信号定义signals: 关键字下面。5、通过emit 发送信号。6、一个信号可以连接多个槽,当该信号发射会触发多个槽函数。7、多个信号可同时连接一个槽,只要有一个信号发射就会地触发槽函...

2019-09-11 18:55:15 190

原创 Qt(简介)

一、Qt简介Qt是什么Qt图形用户程序框架,是对底层应用程序编程接口API面向对象的封装,是一套基于C++语言的类库,专注但不局限于图形用户界面的开发也可以进行系统调用、网络编程、数据库、2D/3D图形处理。特点:跨平台,支持Linux,windows、MacOS、iOS、Android等操作系统为什么选择Qt基于C++语言,简单易用,面向对象(针对GTK)优良的跨平台特性(针对M...

2019-09-03 20:10:53 1013

原创 C(面试题/笔试题 不定期更新)

在笔试面试中经常碰到的问题,什么是指针?可以分一下几点去叙述:个人认为指针是一种数据类型,指向的是数据存储的地址。1、指针的优点有如下共享变量优化传参效率堆内存通过指针与标识符建立联系2、指针有两个需要注意的点野指针:野指针可能会对程序造成影响,也可能不会对程序造成影响,这种未知的错误比较可怕,应该避免野指针的产生,也不能去调用野指针,避免野指针的产生有如下几点:1、在使...

2019-09-02 20:44:26 151

原创 UML简介

一、uml概述1、什么是UML统一建模语言。用于说明、可视化、构建和编写一个正在开发的、面向对象的、软件密集系统的开发方法2、UML做什么的帮助建立软件开发过程和各种模型主要目的是为了让开发者之间进行有效的交流开发者与开发者之间的交流开发者与设计者之间的交流开发者与用户之间的交流开发者与管理者之间的交流适合大型项目和大型团队的开发3、UML的应用领域UML的目标是以面向对象...

2019-09-02 19:58:42 570

原创 C++(面试/笔试题目)

1、C++中 struct和class的区别是什么struct的成员的默认属性是公开的,class的成员的默认属性是私有的2、C++程序中调用被C编译器编译后的函数,为什么包含extern “C”?extern是C/C++中的关键字其声明的函数和变量可以在本模块或者其他模块中使用其次C++作为一种面向对象的语言支持函数重载,而C语言并不支持。比如foo(int i)C++会生成_fooi...

2019-09-01 22:07:56 127

原创 C++(单例模式的实现)

单例模式是一种常见的设计模式,在这里介绍的是其中的懒汉模式和饿汉模式注意:单例类只能有一个实例。单例类必须自己创建自己的唯一实例。单例类必须给所有其他对象提供这一实例。以下是实现饿汉模式的代码#include <iostream>using namespace std;class Singleton{private: Singleton(void) {...

2019-08-27 23:43:47 262

原创 剑指offer:从尾到头打印链表

题目描述输入一个链表,按链表从尾到头的顺序返回一个ArrayList。思路:给的是一个单向链表,所以直接遍历是不可能的,可以借助栈来实现,按照链表从尾到头的顺序返回一个ArrayList/*** struct ListNode {* int val;* struct ListNode *next;* ListNode(int x) :* ...

2019-08-24 15:39:36 58

原创 剑指offer:旋转数组的最小数字

题目描述把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。思路:我一开始是认为直接进行遍历(没有错,但是很普通)但是后来看了别人的方法才知道,这道题考点其实是二分查找...

2019-08-24 11:54:48 69

原创 详解:面向对象编程和面向过程编程

面向对象编程面向对象编程(OOP)是一种编程思想,是一种特殊的设计程序的概念性方法以下是最重要的OOP特性抽象封装和数据隐藏多态继承抽象:处理复杂性的方法之一是简化和抽象,在计算中,为了根据信息与用户之间的接口来表示它,抽象是至关重要的,也就是说将问题的本质特征抽象出来,并根据特征来描述解决方案。抽象是通往用户定义类型的捷径,C++中用户定义类型指的是实现抽象接口的类设计。封装...

2019-08-24 09:47:25 274 1

原创 剑指offer:数组中出现超过一半的数

题目描述数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。思路:定义一个辅助数组用来存放数的出现次数,但是这个方法有点问题,如果出现的数很大,用来辅助的数组所占用的空间也会很大,极其浪费空间class Solution {publi...

2019-08-21 20:36:42 76

原创 剑指offer:二维数组中的查找

题目:在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。思路:给定的数组已经是排序确定的了,所以从最后一行的第一列开始进行查找,这个位置比较特殊,是第一列的最大值,是最后一行的最小值class Solution {public: bool Fi...

2019-08-20 20:10:40 109

原创 剑指offer:栈的压入和弹出

题目描述输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的)思路:栈的最大特点就是先入后出,解题的时候可以使用一个辅助栈,当辅助栈中的元素和弹出序...

2019-08-20 19:31:35 78

原创 C++基础(4)

一、操作符函数什么是操作符函数:在C++中针对类 类型的对象的运算符,由于他们肯定不支持真正的运算符,编译器会将他们翻译成函数进行,这种就叫操作符函数(运算符函数)通过编译器把运算符编译成运算符函数,可以针对自定义的类类型设计它独有的运算功能其实各种运算符已经具备一些功能,再次定义就类似于运算符重载双目运算符工作机制:A+B成员函数A.operator+(B)全局函数opera...

2019-08-19 11:54:51 74

原创 C++基础(3)

一、类和对象通过分析"对象"的属性和行为设计出一个类。类就是数据类型简单类型:只能表示一个属性,C/C++内建数据类型数组类型:可以表示多个属性,类型必须相同结构类型:可以标是多个属性,但是缺少行为(函数)类类型:既能表示属性,也能表示行为,一种复合的数据类型对象就是类这种数据类型创建出的实例,相当于结构变量class Student{成员变量;成员函数;};...

2019-08-17 15:40:27 78

原创 C++基础(2)

一、函数重载(重载,隐藏,重写覆盖)函数重载在同一作用域下,函数名相同,参数列表不同,函数构成重载关重载机制的实现C++代码在编译时会把参数类型添加到函数名中,借助这个方式实现函数重载也就是说C++函数在编译期间经历了更换名字的过程因此,C++代码不能调用C函数(C语言编译器编译出的函数)extern “C”{}告诉C++编译器按照C语言的方式声明函数,这样 C++可以调用C编译...

2019-08-17 15:07:42 147

原创 C++(类对象的创建过程与释放过程)

C++类对象的创建过程与释放过程如下图所示创建释放过程代码举例#include <iostream>using namespace std;class Man{public: Man(void) { cout<<"我是man的构造函数,我被调用了"<<endl; } ~Man(void) { cout<<"我是ma...

2019-08-16 17:00:25 2077

原创 C++基础(1)

一、C++介绍本贾尼.斯特劳斯特路普1979完成了预处理器,为C增加了类机制,也就是面向对象1983年完成了C++第一个版本C++与C的不同点:1、C++完全兼容C的所有内容2、支持面向对象的编程思想3、支持运算符、函数重载4、支持泛型编程、模版5、支持异常处理6、类型检查严格二、第一个c++程序1、文件拓展名 .cpp .cc .C .cxx2、编译器g++ 大多数系统...

2019-08-14 20:18:51 104

原创 Linux系统基础(线程管理)

一、同步、竞争、互斥当多个线程同时访问其共享的资源时,需要相互协调,以防止出现不一致、不完整的问题能达到这种状态的就是线程同步而有些资源在同一时刻只有一个线程访问,对于这种资源的访问需要竞争当资源获取到以后,防止资源不被其他线程再次获取的方法叫做互斥二、互斥量(锁)pthread_mutex_t mutex =PTHREAD_MUTEX_INITALIZERint pthread_m...

2019-08-11 19:50:55 236 5

原创 Linux系统基础(创建线程)

一、线程基本概念1、线程就是进程中的执行路线,即进程内部的控制序列,或者说是进程的子任务(进程就是正在运行的程序,它是一个资源单位)2、线程是轻量级的,没有自己独立的内存资源,使用的是进程的代码段、数据段、bss段、堆(没有栈)、环境变量表、命令行参数、文件描述符、信号处理函数、工作目录、用户ID、组ID等资源3、线程拥有自己独立的栈,也就是有自己独立的局部变量4、一个进程中可以同时...

2019-08-11 19:29:03 172

原创 Linux系统基础(网络通信)

一、计算机网络1、什么是计算机网络计算机网络是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连结起来,在网络操作系统,网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统2、计算机网络的功能数据共享资源共享提高系统的可靠性分布式网络处理和负载均衡3、计算机网络的组成通信子网:网卡、线缆、集线器、中继器、交换机:交换计算机与计算机...

2019-08-11 19:25:02 357

原创 Linux系统基础(进程间通信)

一、基本概念什么是进程间通信:是指两个或多个进程间交换数据的过程叫进程间通信为什么需要进程间通信?当需要多个进程协同工作高效率完成任务时,因为每个进程都是一个独立的个体(资源单位),进程之间就需要通信。进程间通信方式:1、简单进程间通信命令行参数环境变量表信号文件2、传统进程间通信管道3、XSI进程间通信信号量、共享内存、消息队列4、网络进程间通信socket二、传...

2019-08-10 22:06:25 105

原创 Linux系统基础(进程相关操作)

一、基本概念1、进程与程序程序:存储在磁盘上的文件,包含可执行指令和数据的静态实体进程:运行中的程序(一个程序可以执行多次,加载出多个进程)进程就是处于活动状态的计算机程序2、进程的分类交互进程:有输入有输出。用户可以根据自己的情况输入数据,得到想要的结果(一般进程)批处理进程:由脚本加载执行的程序(Linux下的shell,windows下的bat)守护进程:总是活跃的、后台运行...

2019-08-10 22:04:33 116

原创 算法基础(蛮力法)

算法的含义算法是一系列解决问题的清晰指令,也就是说,对于符合一定规范的输入,能够在有限时间内获得所要求的输出 —摘自《算法设计与分析基础》算法的时间复杂度时间复杂度并不指算法运行所需要的时间,而是算法执行的次数。一、蛮力法1、冒泡排序比较列表中相邻的元素,如果他们是逆序的话就交换他们的位置,重复多次以后,最终,最大的元素就到达了列表的最后一个位置,第二遍操作时将第二大的元素沉...

2019-08-04 17:00:42 1069

原创 数据结构:图

图:元素之间存在多对多关系邻接表、表的遍历(深度优先、广度优先)、最短路径逻辑结构和存储结构的关系:图:混合每种逻辑结构用什么物理结构存储并没有明确规定,通常是根据难易程度、时间和空间上的要求,选择最合适的存储物理结构。图的一些术语:深度遍历:深度遍历的结果不止一种广度遍历:图的广度遍历和树一样也需要借助队列来实现有向图:顶点到顶点之间的边有方向的称为有向图有向完全图:任意两个顶...

2019-08-04 16:11:52 500

原创 数据结构:树

树是一种元素之间存在一对多关系的数据结构,常用于表示组织结构、辅助排序、查找等,一般以倒悬树的形式 :根在上支在下树的相关术语:根:树的最顶层的元素,有且仅有一个双亲:指的是元素的上一层元素孩子:指的是元素的下一层元素度:孩子的数量深度:树的层数密度:树的元素个数结点:一个元素就是一个结点普通树:孩子个数不确定 //基本不考普通树的顺序存储:1、对节点的存储没有要求2、从...

2019-08-03 18:27:05 365

原创 Linux系统基础(信号相关指令)

一、信号的基本概念1、中断:中止当前正在执行任务,转而执行其他任务(可能返回,也可能不返回),中断分为硬件中断(硬件设备产生的中断)和软件中断(其他程序产生的中断)2、信号是一种软件中断,提供一种异步执行任务的机制3、常见的信号SIGINT(2) ctrl+c产生此信号SIGQUIT(3)ctrl+\产生此信号SIGABRT(6)调用abort函数,产生此信号SIGFPE(8)表示一...

2019-08-03 17:16:42 149

原创 Linux系统基础(目录相关指令)

一、sync/fsync/fdatasync1、硬盘上一般会有些缓存区以此来提高数据的写入效率,操作系统写入数据其实只是写入了缓存区,直到缓存区满才排队写入硬盘中2、这种操作降低了写入的次数,但是提高了数据写入的延时,导致缓冲区中的数据与磁盘中的数据不同步。int sync(void);功能:把所有缓冲区中的数据全部同步到磁盘的命令,并不等待执行完毕才返回,而是命令发布后立即返回int ...

2019-07-30 20:44:29 231

原创 Linux系统基础(文件系统)

一、系统调用UNIX/Linux系统绝大部分功能都是通过系统调用实现,比如:open/close…UNIX/Linux把系统调用都封装成了C函数的形式,但他们并不是标准C的一部分。标准库中的函数绝大部分时间都工作在用户态,但部分时间也需要切换到内核(进行了系统调用),比如:fread/fwirte/malloc/free。我们自己所编写的代码也可以直接调用系统接口进入内核态(进行系统调用)...

2019-07-30 20:35:10 56

原创 Linux系统基础(Linux系统相关知识)

一、错误处理1、通过函数返回值表示错误返回值合法表示成功,非法表示失败返回有效指针表示成功,返回空指针/(0xffffffff)表示错误返回0表示成功,返回-1表示失败2、通过errno表示错误errno是一个全局变量,可以将它转换成有意义的字符串,它的值随时可能发生变化perror = printf("%s ",strerror(error))使用该函数需要 #include&l...

2019-07-27 09:46:39 87

原创 数据结构:线性结构(3)

第三节队列:队列也是功能受限的表,和栈不同的是,队列有两个端口控制数据的进出,这就导致了队列先进先出的特点,队列也分顺序队列和链式队列队列可用于树的层序遍历和图的广度遍历下面是顺序队列的运算typedef struct QueueArray{ TYPE* arr; size_t len; size_t cnt; int head; int tail;}QueueArray;...

2019-07-25 19:25:46 58

原创 数据结构:线性结构(2)

第二节栈:栈是功能受限的表,只有一个接口管理数据的进出,其特点是先进后出顺序栈:容量有限(容器)出入栈都是以下标为基础,一般常用于,表达式解析,内存管理(为函数调用提供支持)typedef struct StackArray{ TYPE* arr; // 存储空间首地址 int top; // 栈顶 size_t len; // 容量}StackArray;// 创建Sta...

2019-07-21 21:49:13 79 1

原创 数据结构:线性结构(1)

数据结构中的线性表即元素之间存在一对一关系的表常见的线性结构有:数组、表、功能受限的表(栈、队列)第一节线性表的存储又分为:1、顺序存储:在一块连续的内存存储元素与元素之间的关系顺序存储的优点:速度快、不易产生内存碎片顺序存储的缺点:对内存要求高、添加删除不方便顺序表运算typedef struct Array{ size_t size; TYPE base;}Array;...

2019-07-14 13:35:59 81

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除