自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 Qt(知识要点3)

一、线程同步 互斥量(互斥锁) QMutex 就是POSIX中的pthread_mutex_t的封装。 常用的两个成员函数lock、unlock。 读写锁 QReadWriteLock它比QMutex更实用 常用的三个成员函数lockForRead、lockForWrite、unlock A读 B...

2019-09-11 20:19:50

阅读数 10

评论数 0

原创 Qt(知识要点2)

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

2019-09-11 20:18:23

阅读数 7

评论数 0

原创 Qt(知识要点1)

一、自定义信号和槽 1、信号和槽必须定义在类中 2、自定义信号和槽类必须继承QObject 3、在类的开头写上 Q_OBJECT 没有分号,此标识必须写在项目构建之前,如果是后加上的,必须重新构建项目。 4、信号定义signals: 关键字下面。 5、通过emit 发送信号。 6、一个信号可以连接...

2019-09-11 18:55:15

阅读数 8

评论数 0

原创 Qt(简介)

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

2019-09-03 20:10:53

阅读数 8

评论数 0

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

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

2019-09-02 20:44:26

阅读数 28

评论数 0

原创 UML简介

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

2019-09-02 19:58:42

阅读数 26

评论数 0

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

1、C++中 struct和class的区别是什么 struct的成员的默认属性是公开的,class的成员的默认属性是私有的 2、C++程序中调用被C编译器编译后的函数,为什么包含extern “C”? extern是C/C++中的关键字其声明的函数和变量可以在本模块或者其他模块中使用 其次C++...

2019-09-01 22:07:56

阅读数 19

评论数 0

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

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

2019-08-27 23:43:47

阅读数 10

评论数 0

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

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

2019-08-24 15:39:36

阅读数 8

评论数 0

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

题目描述 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。 思路:我...

2019-08-24 11:54:48

阅读数 11

评论数 0

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

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

2019-08-24 09:47:25

阅读数 16

评论数 1

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

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

2019-08-21 20:36:42

阅读数 11

评论数 0

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

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

2019-08-20 20:10:40

阅读数 12

评论数 0

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

题目描述 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的...

2019-08-20 19:31:35

阅读数 11

评论数 0

原创 C++基础(4)

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

2019-08-19 11:54:51

阅读数 9

评论数 0

原创 C++基础(3)

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

2019-08-17 15:40:27

阅读数 11

评论数 0

原创 C++基础(2)

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

2019-08-17 15:07:42

阅读数 13

评论数 0

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

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

2019-08-16 17:00:25

阅读数 413

评论数 0

原创 C++基础(1)

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

2019-08-14 20:18:51

阅读数 13

评论数 0

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

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

2019-08-11 19:50:55

阅读数 42

评论数 5

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

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

2019-08-11 19:29:03

阅读数 25

评论数 0

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

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

2019-08-11 19:25:02

阅读数 33

评论数 0

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

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

2019-08-10 22:06:25

阅读数 19

评论数 0

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

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

2019-08-10 22:04:33

阅读数 19

评论数 0

原创 算法基础(蛮力法)

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

2019-08-04 17:00:42

阅读数 18

评论数 0

原创 数据结构:图

图:元素之间存在多对多关系 邻接表、表的遍历(深度优先、广度优先)、最短路径 逻辑结构和存储结构的关系: 图:混合 每种逻辑结构用什么物理结构存储并没有明确规定,通常是根据难易程度、时间和空间上的要求,选择最合适的存储物理结构。 图的一些术语: 深度遍历:深度遍历的结果不止一种 广度遍历:图的广度...

2019-08-04 16:11:52

阅读数 10

评论数 0

原创 数据结构:树

树是一种元素之间存在一对多关系的数据结构,常用于表示组织结构、辅助排序、查找等, 一般以倒悬树的形式 :根在上支在下 树的相关术语: 根:树的最顶层的元素,有且仅有一个 双亲:指的是元素的上一层元素 孩子:指的是元素的下一层元素 度:孩子的数量 深度:树的层数 密度:树的元素个数 结点:一个元素就...

2019-08-03 18:27:05

阅读数 8

评论数 0

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

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

2019-08-03 17:16:42

阅读数 8

评论数 0

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

一、sync/fsync/fdatasync 1、硬盘上一般会有些缓存区以此来提高数据的写入效率,操作系统写入数据其实只是写入了缓存区,直到缓存区满才排队写入硬盘中 2、这种操作降低了写入的次数,但是提高了数据写入的延时,导致缓冲区中的数据与磁盘中的数据不同步。 int sync(void); 功...

2019-07-30 20:44:29

阅读数 12

评论数 0

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

一、系统调用 UNIX/Linux系统绝大部分功能都是通过系统调用实现,比如:open/close… UNIX/Linux把系统调用都封装成了C函数的形式,但他们并不是标准C的一部分。 标准库中的函数绝大部分时间都工作在用户态,但部分时间也需要切换到内核(进行了系统调用),比如:fread/fwi...

2019-07-30 20:35:10

阅读数 10

评论数 0

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

一、错误处理 1、通过函数返回值表示错误 返回值合法表示成功,非法表示失败 返回有效指针表示成功,返回空指针/(0xffffffff)表示错误 返回0表示成功,返回-1表示失败 2、通过errno表示错误 errno是一个全局变量,可以将它转换成有意义的字符串,它的值随时可能发生变化 perror...

2019-07-27 09:46:39

阅读数 7

评论数 0

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

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

2019-07-25 19:25:46

阅读数 8

评论数 0

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

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

2019-07-21 21:49:13

阅读数 14

评论数 1

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

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

2019-07-14 13:35:59

阅读数 11

评论数 0

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