自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

可惜可惜

可惜可惜

  • 博客(19)
  • 收藏
  • 关注

原创 Qt 对话框的创建和应用

概述 对话框是与用户进行简短交互的顶层窗口。 QDialog 是 Qt 对话框钟所有对话框的基类 QDialog 继承于 QWidget 是一种容器类型的组件。 QDialog 的意义 QDialog作为一种专用的交互窗口而存在 QDialog不能作为子部件嵌入其它容器中 QDialog是定制了窗口式样的特殊的QWidget QDialog 和 QWidget 的区别 #include <QDialog> #include <QWidget> #include.

2020-06-19 20:54:26 219

原创 qt 的父子之间的关系

概述 Qt 对象间可以存在父子关系 每一个对象都保存有它所有子对象的指针 每一个对象都有一个指向其父对象的指针 当指定Qt对象的父对象时 其父对象 会在子对象链表中加入该对象的指针 该对象会保存指向其父对象的指针 简单的实验 #include <QDebug> #include <QObject> #include <QString> void test(void) { QObject* p = new QObject(); ..

2020-06-18 20:35:02 329

原创 Qt 绘图

基本概念 Qt图形系统中的坐标系 物理坐标系(设备坐标系) 原点(0, 0)在左上角的位置,单位:像素(点) x坐标向右增长, y坐标向下增长 逻辑坐标系 数学模型中的抽象坐标系,单位由具体问题决定。坐标轴的增长方向由具体问题决定 视口与窗口 视口(viewport) 物理坐标系中一个任意指定的矩形 窗口(window) 逻辑坐标系下对应到物理坐标系中的相同矩形 深入理解视口与窗口 视口与窗口是不同坐标系中的同一个矩形视口与窗口中的坐标...

2020-06-15 21:21:33 417

原创 QT5 安装

下载安装包 运行安装包 设置环境变量 打开 QT 的安装路径 将上面的三个文件添加到环境变量 新建工程 选择编译器 编译运行

2020-06-12 20:54:34 209

原创 Singleton 单件模式

概述( overview ) 面向对象很好的解决了抽象的问题,但是不可避免的要付出一定的代价。对于通常情况来讲,面向对象的成本大都可以忽略不记。但是某些情况下面向对象带来的成本必须谨慎处理。 动机( Motivation ) 在软件系统里面,经常一些特殊的类,必须保证它们所在的系统中只存在一个实例,才能确保他们的逻辑正确性,以及良好的效率。如何绕过常规的构造器,提供一种机制来保证一个类只有一个实例。这应该由设计者来完成而不是使用者来完成。 代码设计 (Code Design) 在设计的时..

2020-05-21 14:07:23 125

原创 树和节点抽象类的实现c++

概述 树状图是一种数据结构,它是由n(n>=0)个有限结点组成一个具有层次关系的集合。把它叫做“树”是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。它具有以下的特点: 每个结点有零个或多个子结点;没有父结点的结点称为根结点;每一个非根结点有且只有一个父结点;除了根结点外,每个子结点可以分为多个不相交的子树; 基础 节点深度:对任意节点x,x节点的深度表示为根节点到x节点的路径长度。所以根节点深度为0,第二层节点深度为1,以此类推 节点高度:对任意节点x,叶子节点到x节点.

2020-05-19 11:38:24 663

原创 gcc 工具集使用

概述 GCC 和 gcc 的区别 GCC (GNU Compiler Collection),故名思义它是一个编译器的集合,GCC 不仅能用于c/c++ 的程序还能用于其他的编程语言,(比如 Java ,只是后面 Java 开源了,他的支持由 Linux 官方来支持了)。gcc 是 GCC 里面的 C 语言编辑器。本文大抵只探讨 gcc l了。 交叉编译 嵌入式产品的资源常常是有限的...

2020-05-18 15:26:16 335

原创 Stack 实现

概述 栈是一种特殊的线性表,仅能在一端进行操作,栈顶(Top)允许操作的一端,栈底(Bottom),不允许操作的一端。 抽象父类 #ifndef STACK_H_ #define STACK_H_ #include "Object.h" namespace MYLIB{ template <typename T> class Stack:public Object { public: virtual void push(const T&e) = 0; vir

2020-05-16 15:40:18 177

原创 SmartPointer 实现(c++)

概述: 之前写的 SmartPointer 只能指向单个的变量,不能完全发挥指针的作用。 通过技术机制(ref)标识堆内存 堆内存被指向时:ref++ 指针被置空时:ref-- ref == 0 时:释放堆内存 代码 #ifndef SMARTPOINT_H_ #define SMARTPOINT_H_ #include "Pointer.h" #include "Exception.h" #include <cstdlib> namespace MYLIB{ te

2020-05-14 10:00:04 274

原创 LinkList 实现( c++)

概述 链表是物理存储单元上非连续的、非顺序的存储结构,数据元素的逻辑顺序是通过链表的指针地址实现,有一系列结点(地址)组成,结点可动态的生成。 结点包括两个部分: 存储数据元素的数据域(内存空间), 存储指向下一个结点地址的指针域。 相对于线性表顺序结构,操作复杂。 代码实现 #ifndef LINKLIST_H_ #define LINKLIST_H_ #include "List.h" #include "Object.h" #include "Exception.h" names.

2020-05-13 15:40:31 578

原创 设计模式工厂模式

概述 对象创建模式: 通过 “对象创建” 模式绕开 new,来避免对象创建 new 过程中所导致的紧耦合(依赖具体类),从而支持对象创建的稳定。他是接口抽象之后的第一步工作。 典型的模式: Factory Method Abstract Factory Prototype Builder 动机(Motivation) 在软件系统中,经常面临着创建对象的工作;由于需求的变化,需要创建的...

2020-04-30 10:38:14 109

原创 volatile 关键字的使用

概述 在编写与外设相关的程序的时候要注意运用 volatile 关键字,否则可能出现程序在不使用编译器优化的时候能够正常的运行,但是一旦编译器的使用优化选项就会出现程序运行不正常的现象。 volatile译为:易变的。这个变量是一个容易改变的变量,不要对它进行优化,每次都要到变量的地址中去读取变量的数据。编译器优化的时候会出现将该地址的值存放在寄存器里面。 使用范围 多任务环境下各任务间共...

2020-04-29 17:02:36 125

原创 混淆指针与数组导致的问题

概述 在 c 语言中,一个数组变量可以理解成定义了一个指向数组的指针。大多数情况下这样的理解是没有问题的,但是还是要弄清楚他们的区别,否则会导致错误。本文会从因为混淆他们所导致的错误,揭示一个 C 语言鲜为人知的特点。 问题实例 // 在 test.c 文件定义一个全局的数组变量 char g_name[] = {'h','l','j'}; #include<stdio.h&gt...

2020-04-29 10:47:11 170 1

原创 LCD 显示

概述 字符编码 早期 早期的时候只有一些大小写的英文字母,数字和一些符号被编码到计算机里,这个编码表就被称为 ASCII 编码。 发展 但是随着计算机的发展,原来的 ASCII 已经不能表示格式各样的语种(中文,日文,韩文等)。于是各个国家的计算机专家就设计了各种语言的编码,如中国的 GB2312,日本把日文编到 Shift_JIS 里,韩国把韩文编到Euc-kr 里。每个国家都有...

2020-04-29 09:43:52 723

原创 初识处理器—中断

概述 中断是一种处理器与外设进行通信的一种机制,用于通知处理器(处理器并不关心外部事件,但是外设不能)外部有重要的外部事件发生,一般情况下面中断需要被处理器响应。 处理器是怎么处理中断呢:需要中断服务程序(ISR) 中断一旦发生 从外设中读取中断寄存器的值来判断当前中断的而类型。 根据中断的类型具体设计逻辑。(执行中断服务程序) 清除外设状态寄存器的中断。 清除处理器中的中断标识。 ...

2020-04-23 15:02:03 286

原创 面向对象设计原则

概述 从宏观层面的角度来看,面向对象的构建方法更能够适应软件的变化,能将变化所带来的影响减到最小。 从微观层面的角度看,面向对象的方式更加强调各个类的的责任,由于需求变化导致新增类型不应该影响原来类型的实现,就是所谓的各司其职。 对象是什么: 从语言的层面看,对象封装了代码和数据 从规格上面讲,对象是一系列可被使用的封装的接口 从概念上面讲,对象是某种拥有责任的抽象 面向对象设计原则 ...

2020-04-23 14:56:48 100

原创 初见处理器

概述 本文章将会站在软件工程师的角度讲解处理器,不会从硬件工程师的角度来说明一个处理器是怎样设计的。 微处理器和微控制器的区别 站在软件工程师的角度而言微处理器和微控制器基本是没有差别的。如果有差别的话,微控制器由处理器,内存,片内外设组成。微处理器就是单单的 CPU ,运算时候使用的计算机部件。为什么会有这两个概念,从嵌入的发展而言,早期的嵌入式的开发需要考虑设备体积的大小,经常进行硬件的...

2020-04-13 21:54:36 101

原创 浅谈 c++ 智能指针的实现

内存泄漏 动态申请堆空间,用完后不归还 c++语言里面没有垃圾回收机制 指针无法控制所指堆的空间的生命周期 在c++软件平台中的智能指针 指针生命周期结束时主动释放堆空间 一片堆空间最多只能有一个智能指针标识 杜绝指针运算和指针比较 智能指针的设计方案 通过类模板描述指针的行为 能够定义不同类型的指针 重载指针特征操作符(*和-&g...

2020-04-13 16:28:13 190 1

原创 单片机系统驱动

对于一些单片机而言,系统的资源大多数情况下是有限的。为了充分的利用资源(节省成本),工程设计的时候往往会对资源进行不断的压榨。 对于单片机而言它要做的事情大抵只有如下的几件: 驱动外设 获取外设的信息 对获取到的信息进行处理 在单片机里面常常会用到延时,为了充分的利用资源在设计的时候很少会用等待延时(除了驱动某些外设,对协议的时序要求特别高的情况)。 为了更好的驱动整个单片机程序,我们有...

2020-04-13 15:37:25 1230

空空如也

空空如也

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

TA关注的人

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