自定义博客皮肤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)
  • 收藏
  • 关注

原创 Windows/Linux下的动态库制作与使用

Windows/Linux下的静态库制作与使用静态库,容易使用和理解,也达到了代码复用的目的,那为什么还需要动态库呢?动态库:在程序编译时并不会被连接到目标代码中,而是在程序运行时才被载入。不同的应用程序如果调用相同的库,那么在内存里只需要有一份该共享库的实例,规避了空间浪费问题。动态库在程序运行时才被载入,也解决了静态库对程序的更新、部署和发布页会带来麻烦。用户只需要更新动态库即可,增量更新。Window与Linux执行文件格式不同,在创建动态库的时候有一些差异。在Windows系统下的执行文件格

2022-07-05 23:19:26 1634

原创 Windows/Linux下的静态库制作与使用

库是写好的现有的,成熟的,可以复用的代码。现实中每个程序都要依赖很多基础的底层库,不可能每个人的代码都从零开始,因此库的存在意义非同寻常。本质上来说库是一种可执行代码的二进制形式,可以被操作系统载入内存执行。库有两种:静态库(、)和动态库(、)。所谓静态、动态是指链接。将一个程序编译成可执行程序的步骤:test.hmain.cpp1 静态库1.1静态库是什么之所以称为“静态库”,是因为在链接阶段,会将汇编生成的目标文件与引用到的库一起链接打包到可执行文件中。因此对应的链接方式称为静

2022-07-05 22:13:52 624

原创 谈谈异常处理

异常提供一个错误专用通道。优点:异常分为两个部分:捕获并处理异常特点复杂一点地写法注意指定函数可以抛出何种异常,如果没有默认可以抛出所有异常。指定函数不抛出函数,异常列表为空。当异常抛出后新对象如何释放?异常处理机制保证:举例异常与局部对象析构5. 标准异常类6. 构造函数、析构函数的异常处理构造函数可以抛出异常,此时不会调用析构函数,所以如果抛出异常前,申请了资源,需要自己释放。C++标准指明析构函数不能、也不应该抛出异常。C++标准规定,构造函数失败,析构

2022-07-04 17:40:36 595

原创 重载原理及Linux查看符号表

函数重载:在相同作用域中的多个函数,具有相同的名字而形参表不同。C++函数重载底层实现原理是C++利用name mangling(倾轧)技术,来改名函数名,区分参数不同的同名函数。编译器通过函数名和其参数类型 识别重载函数。为了保证类型安全的连接(type-safe linkage),编译器用参数个数和参数类型对每一个函数标识符进行专门编码,这个过程有时称为“名字改编”(name mangling)或“名字修饰”(name decoration)。类型安全的连接使得程序能够调用合适的重载函数并保证了参数传递

2022-07-04 12:12:05 1082

原创 C++类型转换

类型转换的使用

2022-07-01 17:58:01 1480

原创 写时拷贝/写时复制技术

深拷贝与浅拷贝,计数,写时拷贝

2022-07-01 16:01:41 803

原创 智能指针详解

智能指针的使用与实现

2022-07-01 15:31:12 1103

原创 QT使用简介3

1. 自定义控件封装1.1 添加新文件 - Qt – 设计师界面类 (.h .cpp .ui) 设置名aaa1.2 .ui中 设计 QSpinBox和QSlider 两个控件1.3 Widget中使用自定义控件,拖拽一个Widget,点击提升为aaa,点击添加,点击提升1.4 实现功能,改变数字,滑动条跟着移动 ,信号槽监听。1.5 提供 getNum 和 setNum对外接口1.6 测试接口2. Qt中的事件2.1 鼠标事件2.2 鼠

2022-06-28 12:08:55 98

原创 无人机地面站简介

1. 定义无人机地面控制站是整个无人机系统非常重要的组成部分,是地面操作人员直接与无人机交互的渠道。它包括任务规划、任务回放、实时监测、数字地图、通信数据链在内的集控制、通信、数据处理于一体的综合能力,是整个无人机系统的指挥控制中心。2. 功能地面站系统应具有下面几个典型的功能:1、飞行监控功能:无人机通过无线数据传输链路,下传飞机当前各状态信息。地面站将所有的飞行数据保存,并将主要的信息用虚拟仪表或其他控件显示,供地面操纵人员参考。同时根据飞机的状态,实时的发送控制命令,操纵无人机飞行。2、地

2022-06-28 12:05:47 14013

原创 文件操作的对比(C语言、C++、管道)

C语言文件操作#include<stdio.h>int main(int argc,char* argv[]){ char s[40]; //scanf("%s",&s);//可以从文件读也可以从终端读 //printf("%s\n",s);//可以写到文件,也可以写到终端 FILE* pfile = fopen(argv[1],"r"); if(NULL==pfile){ printf("open file %s error\

2022-06-28 12:02:46 289

原创 数据结构与算法里的小技巧之移位与异或

1N*2 可写为 N<<1N/2 可写为 N>>1N*2 可写为 (N<<1)|12异或 ^ : 化为二进制 无进位相加性质1: N ^ 0 == N性质2: N ^ N == 0性质3:同一批数 异或的结果一样(即:满足交换律、结合律)运用1:a和b进行交换(注意:a和b要在不同的内存,内存独立才行,要么结果会被清空为0)运用2:运用3:把一串数字的最右侧的1保留,其余置为0. N&((~N)+1)

2022-01-17 18:29:25 560

原创 了解C语言2

初阶6:函数函数声明 void func();返回类型 名称 (参数);函数指针:void (*pfunc)();类型 (*函数名) (参数)赋值:pfunc = &func; 或者简写为pfunc=func;函数名是地址,是执行函数代码的起始位置调用1:解引用 (*pfunc)();//前面必须加括号,因为后面括号优先级高,要把*和pfunc打包成整体才是函数指针解引用调用2:pfunc();函数指针可以作为函数参数,这叫回调函数指针函数:void* func()

2021-11-05 18:56:56 881

原创 了解C语言1

%.2f取小数点后两位 %2d补齐两位C初阶1:数组数组指针:指向数组的指针数组的返回值如果是负数(如-1)是不合法的,可以用来做判断二维数组作为参数,列数需要确定,C语言在二维数组传参的缺陷因此,二维数组->一维数组:元素下标=现行序号*列元素个数+现列序号C初阶2:字符串字符串可以整体输入scanf()输出printf()(不需像数组一样遍历)的原因:字符串结尾有\0,用%s作为标识符,如果识别到\0就停止char str[8];scanf("%7s",str);//%

2021-11-05 17:54:42 143

原创 走近C语言2

入门4 函数4.1 定义函数返回类型 函数名(参数列表){ 函数体 }4.2 函数细节4.2.1 根据有无参数列表,分为:无参函数,有参函数根据有(int、float…) 无(void)返回值类型,分为:有返回值函数,无返回值类型4.2.2 返回值return; 表示没有返回值,退出return 表达式4.2.3 无返回值的函数void 函数名(参数列表){} 1、不能返回带值的的return2、可以没有return3、调用时没有返回值入

2021-11-05 17:33:01 421

原创 走近C语言1

c入门1头文件include <stdio.h>int main(){}gcc编译 -o 改得可执行文件名称c入门22.1 基础数据类型:字符型、整型、浮点型2.1.1 字符型,单个字符需要单引号引起来,占位符%c2.1.2 整型,%d2.1.3 浮点型,%f2.2 运算符:算术运算符、关系运算符、逻辑运算符2.2.1 算术运算符:+ - * / %取余* / %优先级大于+ -注:23%10得个位数23/10得十位数2.2.2 关系运算符 ==

2021-11-05 17:00:57 373

原创 QT使用简介2

1. QMainWindow1.1 菜单栏 最多有一个1.1.1 QMenuBar * bar = MenuBar();1.1.2 setMenuBar( bar )1.1.3 QMenu * fileMenu = bar -> addMenu(“文件”) 创建菜单1.1.4 QAction * newAction = fileMenu ->addAction(“新建”); 创建菜单项1.1.5 添加分割线 fileMenu->addSeparator()

2021-09-24 15:39:23 599 1

原创 QT使用简介1

QT快捷键

2021-09-22 11:58:16 563

原创 C--内存四区

一.数据类型本质分析1. 数据类型的概念“类型”是对数据的抽象类型相同的数据有相同的表示形式、存储格式以及相关的操作程序中使用的所有数据都必定属于某一种数据类型2. 数据类型的本质数据类型可理解为创建变量的模具(模子);是固定内存大小的别名。数据类型的作用:编译器预算对象(变量)分配的内存空间大小程序举例,如何求数据类型的大小sizeof(int *)➢ 请问:数据类型可以有别名吗?数据类型可以自定义吗?3. 数据类型大小int main(){

2021-08-19 21:11:53 162

原创 树的表示法

在大部分OJ题目中,节点个数n作为参数传入。所以,比较适合使用采用一组连续的空间来存储每个结点,即Node nodes[n]。1.多叉树表示法双亲表示法表格表示参考代码struct Node{ char data; int parent;};Node nodes[n];优缺点比较容易找到双亲,但不容易找到孩子。孩子表示法表格表示参考代码struct Node{ char data; vector<int> childen.

2021-07-28 10:47:17 210

原创 树的基本概念

1.什么是树?树(Tree)是n(n>=0)个结点的有限级,n=0时称为空树,在任意一颗非空树中:有且仅有一个特定的结点称为根(root);当n>1时,其余结点可分为m(m>0)个互不交互的有限集T1,T2,…,Tm,其中每一个集合本身又是一颗树,并且称为根的子树(SubTree)2.树的构成2.1 节点分类节点分类特点说明根(root)没有父节点只有子节点的节点叶子(leaf)/终端节点没有子节点或者子节点是空的节点叶子结点度为

2021-07-27 22:15:58 1089

原创 信息量 -- (Linux系统编程)

0.信息量为了防止出现因多个程序同时访问一个共享资源而引发的一系列问题,我们需要一种方法,它可以通过生成并使用令牌来授权,在任一时刻只能有一个执行线程访问代码的临界区域。临界区域是指执行数据更新的代码需要独占式地执行。而信号量就可以提供这样的一种访问机制,让一个临界区同一时间只有一个线程在访问它,也就是说信号量是用来调协进程对共享资源进行访问的。背景#include <stdio.h>#include <stdlib.h>#include <unistd.h&gt

2021-07-23 17:42:46 241

原创 IPC共享内存 -- (Linux系统编程)

0. 共享内存比喻火锅本质多个进程访问同一个逻辑内存直接访问内存,不用read()/write()非常方便1. POSIX共享内存资料:unpv22e_ch13查看:man shm_overviewls /dev/shm2.分类1. 内存映射文件注意:共享内存大小 = 文件大小共享内存区对象(非亲缘进程)匿名内存映射(亲缘进程)风格方式BSDMAP_ANON+mmap()Systerm V/dev/zero+open()

2021-07-22 22:17:53 60

原创 IPC消息队列 -- (Linux系统编程)

|# 1. 消息队列背景管道和套接字比较适合两三个进程之间的通信,如果进程成倍增加,管道和套接字的数量也会阶乘级的增加,管理也非常复杂麻烦。于是出现的消息队列比喻回转寿司优先级让列宁同志先走本质内核链表2. POSIX消息列表2.1 查看POSIX消息队列预览:man mq_overview查看POSIX消息队列:ls /dev/mqueuecat /dev/mqueue/PIC名字2.2 接口头文件:mqueue.h库:librt.so(real t

2021-07-21 20:48:16 195

原创 管道 --(linux系统编程)

一、简介1.1 分类:匿名管道FIFO管道/命名管道1.2 查看管道命令man 7 pipe二、匿名管道2.1 单工管道程序进程与shell命令行进程单项通信。1. 打开管道FILE* popen(const char *command(命令行字符串),const char* open_mode(“r”只读、“w”只写));返回值:NULL非NULL文件描述符打开失败2. 读取size_t fread(void* buffer(接收数据的内存

2021-07-16 12:09:32 688

原创 C:基本数据类型练习

C初阶1:基本数据类型练习ASCII编码ASCII编码使用7 位二进制数(剩下的1位二进制为0)来表示所有的大写和小写字母,数字0 到9、标点符号, 以及在美式英语中使用的特殊控制字符。实例:分别打印出26个大写字母和小写字母。#include<stdio.h>int main(){for(int i=65;i<91;++i){printf("%c\n",i);printf("%c\n",i+32);}return 0;}把一个字符串整型数字转化成整型数

2021-03-25 11:58:48 158

原创 Linux定时任务与延时任务

Linux 计划任务的种类: at 、 cronat :突发性的,可以处理仅只执行一次就结束的命令crontab:例行性的,这个命令所设置的任务将会循环的一直执行下去,可循环的时间分为分钟、小时、每周、每月或每年等仅执行一次的计划任务 —— atatd 的启动systemctl restart atd # 重启 atd 服务 (执行at 命令,必须要有 atd 服务支持)systemctl enable atd # 开启启动 atd 服务at 的运

2021-01-30 14:58:25 166 1

原创 Linux 启动流程分析以及系统恢复处理

一 、启动流程一览加载BIOS的硬件信息与进行自我检测(自检),并根据设置取得第一个可启动的设备;读取并执行第一个启动设备内MBR的启动引导程序(gurb2、spfdisk等程序);根据启动引导程序的设置加载Kernel (内核),Kernel会开启检测硬件与加载驱动程序 ——完成后,主机硬件已经准备就绪;在硬件驱动成功后,Kernel会主动调用systemd程序 ——准备软件执行环境,并以default.target流程启动:systemd 执行 sysinit.target 初始化系统及

2021-01-28 19:07:20 1283

原创 Linux系统的用户管理

用户及用户组存在的意义1)用户存在的意义 ——系统资源是有限的,如何合理分配系统资源? 在这个问题解决时必须要有连个资源配合1.身份 account2.授权 author 3A机制,3A机制组成系统中最底层的安全架构3.认证 auth2)用户组存在意义用户组是一个逻辑容器 对用户进行归类和统一授权2.用户及用户组在系统中的存在方式电脑对数字敏感 id人类对字符串敏感 名称id &.

2021-01-22 21:58:06 210

原创 Linux系统下vim的高级用法

vim是全球两大流行文本编辑器之一vim file 直接编辑文件内容一.vim的三种模式命令模式(浏览模式) 此模式下只能对文件内容浏览 ; 对vim的工作方式进行设定 ;不能修改文件内容 ;插入模式 #对文件内容进行修改的模式退出模式 #结束vim程序使用到的指令vimtutorvim手册 # vim 命令打开vim程序在程序输入:help二.vim工作的基本配置在命令模式下如何更改vim的工作方式?1)方法: :set 设

2021-01-22 12:17:45 188 1

原创 Linux的远程登陆服务

一.实验环境认识经典的C/S 模型server(服务器端) :client_service.test.com 172.25.254.118client(客户端): sever_node1.client.com 172.25.254.218nm-connection-editor 网络管理器 ,连接网络ifconfig 查看设定主机的IPhostnamectl set-hostname 设定主机名称二.Openssh服务的基本信息Openss

2021-01-21 22:01:30 417

原创 Linux系统下的进程管理

1.进程定义程序是静态的代码文件进程是指程序运行时的形态进程是程序的一个副本进程是有生命周期的(准备期,运行期,终止期)进程&线程 关系进程是资源调用的最小单位线程是进程的最小单位程序执行流是从上到下贯穿运行的,当进程是多任务物,cpu是多核心,多任务应该同时被每个核心处理,每个核心处理的任务叫 线程线程资源是共享的进程状态R(TAKS_RUNNING) 可执行态(running,ready)S(TASK_INTRRUPTABLE)

2021-01-20 20:25:14 409 1

原创 Linux中的输入输出管理

1 理解什么输入输出的定义1) 字符设备字符设备就是显示字符到屏幕上的设备文件2)stdin 标准输入编号为0键盘 鼠标 打字机3)stdout 标准正确输出标号为14)stderr 标准错误输出标号为22 如何管理输入外界传递到程序中的信息< 输入重定向tr ‘a-z’ ‘A-Z’ < test ##把test文件中的内容定向到tr程序中<< 多行录入tr ‘a-z’ ‘A-Z’ <<EOF(字符任意)test ##此处的te

2021-01-19 11:56:59 298

原创 Linux系统下的文件管理

linux下的文件管理1. 文件管理命令touch 创建文件,修改文件时间戳1> touch file1 file2…建立空文件2> touch file把文件时间同步到当前时间3> touch -t YYYYMMDDHHmm file把文件时间更改到指定时间**mkdir(make directory)1> mkdir dir1 dir2 …建立空目录2> mkdir -p test/redhat/linux建立多层目录rm 删除文件或

2021-01-17 00:47:30 230

原创 Linux命令行使用技巧

Linux是什么?Linux操作系统 GNU/LinuxGNU是 开源组织Linux指的是Linux内核,内核是系统核心程序,相当于人的大脑,负责系统程序和硬件分配及调度。Shell是什么?对外提供操作和系统沟通接口对内实现对内核进行保护RHEL8中默认使用的“shell”是"bash"(“bash”=GNU Bourne-Again Shell)shell 命令行提示符含义[root@localhost Desktop]#[1] [2] [3]

2021-01-16 00:05:43 397

空空如也

空空如也

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

TA关注的人

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