自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

qazw9600的专栏

qazw9600的博客

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

原创 嵌入式软件自举

说明对于需要长时间运行的电子产品,例如:安防监控等,如果设备程序崩溃后不能自动恢复,可能会出现以下情况:设备操作无反应,用户以为设备坏掉了,并不知道需要断电重启,对产品质量怀疑。程序崩溃后所有功能中断,有些重要并且需要长时间稳定运行的功能无法延续,例如:定时闹钟等。对于智能音箱,需要实现定时闹钟等定时功能,需要长时间稳定运行,因此需要实现软件复位功能。程序崩溃是无法避免的程序崩溃的可能原因有:程序测试不充分,有bug导致程序崩溃,可以降低概率,但是无法彻底避免,中小公司产品非

2020-06-30 19:56:53 637

原创 基础语法 - extern关键词

说明extern的英文意思是“外部”。何为外部?C/C++程序编译时,编译器并不是将所有源码一起编译,而是以单个源码文件为单元逐一编译,编译单个源码文件时其它源码文件是不可见,其它源码定义的函数和全局变量也是不可见的,是正在编译源码的外部定义。链接时才将所源码中有定义和使用链接到一起。作用使用extern声明外部定义,以避免编译单个源码时找不到全局变量或函数的声明,误判为代码错误。特点由于链接时,才将定义和使用链接到一起,因此如果声明外部变量时变量名写错,编译时不会报错,而是在

2020-06-28 21:52:21 220

原创 常见内存问题

内存泄漏形象描述:内存像气球漏气一样,漏掉部分(不能使用),只剩下整体的部分(能够被使用)。理解栈内存,.data, .bss 等内存段中的内存申请和释放都是由系统处理的,按我当前的理解是不会造成内存泄漏,只有堆内存,是由程序员管理的,出现野指针(指针指向的内存是堆内存,内存申请了但是没有释放,内存地址也被丢失)等会导致内存泄漏。内存溢出形象描述:内存像容器,被加入超过容器容量大小的水(数据),由于没有边界限制,部分水覆盖了其它空间(部分数据覆盖了其它数据的内存空间)。理解内存溢

2020-06-22 21:33:52 125

原创 编译原理 - 空类或空结构体对象内存占用

说明对于空类或空结构体生成的对象,内存占用如何?编译器是如何处理的?空类如下空类,生成的对象大小为1,不为0。#include <iostream>using namespace std;class EmptyClass {};int main(int argc, char **args) { EmptyClass n; cout << sizeof(n) << endl; return 0;}* 运行结果:

2020-06-19 20:44:11 789

原创 git使用 - 忽略文件或目录

忽略本地文件(未添加入版本库)以下方法添加忽略之后,已经提交到版本库中的文件是不会忽略的,只能忽略那些没有被跟踪管理的文件,如果某些文件已经被纳入了版本管理中,再修改配置文件是无效的。.gitignore文件仓库根目录下的.gitignore文件,可以设置让仓库忽略,排除掉某个文件或目录。该文件可以提交到Git仓库,用于设置公共性的忽略规则。支持正则表达式表示;以行为设置单位,基本语法如下。注释#注释内容忽略*.sample    #忽略所有 .sample 结尾的文件

2020-06-18 20:46:09 323

原创 语法基础 - io - 基本输入输出

说明输入操作:字节数据从设备(如键盘、磁盘驱动器、网络连接等)流向内存。输出操作:字节数据从内存流向设备(如显示屏、打印机、磁盘驱动器、网络连接等)。C/C++对比C++采用字节序列流的方式,相对于C语言,流的方式更通用,但是性能会差点。通用:不同于C语言,数据类型基本上是固定的,C++可以自定义类,当输出类类型时,例如:输出string类型数据,使用c方式printf你不知道该使用%s,还是其它格式,其它自定义类型更无法逐一定义。性能下降的原因:C/C++都是通过封装系统接口实现的,

2020-06-15 20:25:30 390

原创 Debian/ubuntu 软件管理

管理机制不同于windows系统下,直接安装二进制软件包的方式,linux常用的软件管理方式是通过软件管理工具进行安装升级和卸载。当然linux也支持直接安装本地软件包。软件源软件源是软件仓库的地址,是软件信息(软件最新版本等等)和软件文件等数据的来源,软件安装和更新时会需要去软件源下载数据。软件仓库有很多个,可以选择离自己最近,网速最快的源,例如:以下是debian 8.2的一个软件源。##163源deb http://mirrors.163.com/debian/ jessie m

2020-06-13 15:51:27 325

原创 环境配置 - 多版本切换

事由使用QT做嵌入式开发时,芯片原厂给的SDK包中只包含交叉编译工具,以及一些必要工具,为了获取IDE(QT create) 和一些通用的工具,环境搭建时,需要安装开发平台的QT sdk,这样就存在两套SDK,qmake,编译链等工具存在两份,如何选择正确的那一份,以及在多个版本之间切换?当前做法和问题当前公司的做法是SDK安装到和用户无关的固定路径,使用脚本编译,在脚本中写死工具的绝对路径。当前遇到的问题:在开发中依然出现工具的绝对路径不同,编译脚本无法通用,使用时依然需要配置路径。解决

2020-06-13 15:16:07 426

原创 git使用 - 暂存更改

问题编码时,有时会出现代码写了一半,还没写完,但是需要中断去执行别的操作,例如:切换到另外一个分支去修改时,此时不能提交代码,也不能丢弃代码更改,所以需要能够临时保存下代码修改。git stash该命令可以解决以上问题。使用帮助信息xxx@midcompser:~$ git stash -helpusage: git stash list [<options>] or: git stash show [<options>] [<stash>

2020-06-11 21:11:17 4908

原创 头文件循环引用

说明在C/C++开发中,有时会出现头文件循环引用问题,例如:* 头文件:A.h#include <B.h>class A { B b; };* 头文件:B.h#include <A.h>class B { A a; };原理由于类A需要使用到类B对象,而类B中也需要使用到类A对象,如此声明,头文件循环引用,编译A.cpp或B.cpp时由于文件引用将头文件内容拷贝至引用位置,拷贝后又发现存在头文件引用,因此会持续该行为,由于有循环引用,该行为

2020-06-09 20:10:16 1854

空空如也

空空如也

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

TA关注的人

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