自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(23)
  • 资源 (3)
  • 收藏
  • 关注

原创 C++ 工程CMakeLists.txt编写

C++ 工程CMakeLists.txt编写CMakeLists根据文件分层设计如下图所示,在每一层的文件内都有一个CMakeLists.txt 文件,从图中从上到下分别可以认为是顶层CMakeLists, 各种子目录下的底层CMakeLists。顶层 CMakeLists 设计cmake_minimum_required(VERSION 3.1)project(ThreadPool)#判断编译器类型,如果是gcc编译器,则在编译选项中加入c++11支持if(CMAKE_COMPILER

2022-05-31 17:50:18 374

原创 C++11 下的线程池实现

C++11 下的线程池实现C++11 下的线程池实现需求1、利用c++11 提供的 、<condition_variable> 、 等头文件来实现线程池实现。2、任务调度要求:①、依据任务的优先级来调度,优先级越低者先被调度;②当优先级一致时,依据任务到来的时间顺序,即先到先服务。分析1、线程池的实现,主要思路是:①、申请若干的线程放入线程容器中,容器选择vector、list … 皆可;②、在线程创建时,绑定run方法,让每个线程都在跑run;③、实现一任务池,将每个任务放入

2022-05-31 11:52:03 948

原创 完全二叉树应用之堆排序算法

完全二叉树应用之堆排序算法原理完全二叉树是严格按照从上到下,从左向右排列的二叉树步骤:1、根据给定的关键词创建一个堆2、输出堆顶元素3、调整余下元素,使其成为一个新堆(从 size/2 开始调整 即倒数第二次最后一个根节点开始调整)4、重复(2)(3),直到输出n个元素,得到一个有序数列/* * @Description: 最小堆排序算法 * @Version: 0.1 * @Autor: Wyz * @Date: 2021-09-09 11:29:53 */#include

2021-09-09 20:22:11 444

原创 完全二叉树应用之 堆排序算法

完全二叉树应用之 堆排序算法原理完全二叉树:严格按照从上到下,从左到右的排序二叉树步骤:1、根据初始关键字创建堆2、输出堆顶最大(大根堆)或最小元素(小根堆)3、调整剩下的元素,使其成为一个新堆 (从 size /2 处开始,即倒数第二层的最后一个根节点开始 headpify)4、重复(2)(3)直到输出n个元素得到一个有序序列/* * @Description: 最小堆排序算法 * @Version: 0.1 * @Autor: Wyz * @Date: 2021-09-09 1

2021-09-09 20:13:14 403

原创 二叉树的遍历算法之 非递归算法

二叉树的遍历算法之 非递归算法原理通过模拟栈来实现#include <iostream>#include <stack>#include <utility>struct BtreeNode{ int data; BtreeNode* left; BtreeNode* right;};class Solution{public: 前序 void inorder(BtreeNode* root){ //

2021-09-07 20:22:28 127

原创 二叉树的遍历算法之 层次遍历算法

二叉树树的遍历算法之(层次遍历算法) – (广度优先算法)原理利用一个队列来实现,一层从左向右的节点访问#include <iostream>#include <queue>struct BtreeNode{ int data; BtreeNode* left; BtreeNode* right;};class Solution{public: void levelorder(BtreeNode* root){ s

2021-09-07 20:19:35 362

原创 二叉树的遍历算法之 递归算法

树的遍历算法之(递归算法)递归算法分为三种(前序,中序,后序)根据根节点的访问顺序来定的。前序访问顺序 ( 根 – 左节点 – 右节点 )中序访问顺序 ( 左节点 – 根 – 右节点 )后序访问顺序 ( 左节点 – 右节点 – 根 )#include <iostream>struct BtreeNode{ int data; BtreeNode* left; BtreeNode* right;};class Solution{public:

2021-09-07 20:10:51 762

原创 算法之冒泡排序(bubblesort)

算法之冒泡排序(bubblesort)原理每一趟进行两两进行比较,每一趟选出最大的数据,这样下一趟就可以少比较一个数,需要的趟数(数组长度 - 1)时间复杂度O(N2)#include <vector>#include <iostream>using namespace std;class Solution{public: const vector<int>& bubblesort(vector<int>& nums)

2021-09-05 16:12:06 196

原创 算法之选择排序(selectsort)

算法之选择排序(selectsort)原理时间复杂度O(N2)把一个无序数组看做成(一部分有序,一部分无序的部分)中选择一个最大或最小的数据,将其与无序部分的首元素交换位置#include <vector>#include <iostream>using namespace std;class Solution{public: /* 找无序区间的最小位置下标 [index, n]*/ const int find_min_index(vector<

2021-09-04 19:00:26 216

原创 算法之归并排序(mergesort)

算法之归并排序(mergesort)情况一、 两个有序(升序)的数组归并为一个有序数组时间复杂度O(N)原理通过指针法:先比较两数组的初始位置的数据大小,比较小的数据放入一个最终的数组中,并且此数组向后移位,较小数据的数组也向后移动。#include <vector>#include <iostream>#include <iterator>using namespace std;class Solution{public: const v

2021-09-04 18:50:27 297

原创 算法之插入排序(insertsort)

算法之插入排序(insertsort)原理将无序的数组看作是一部分有序,一部分无序的,将无序数组按顺序遍历,插入到有序数列的合适位置中直接插入步骤①在有序数列[ 0, i-1 ] 中找到合适的位置插入[ i ],假如是位置k②将[ k , i-1 ] 之间的数据全部向后移一位③插入到位置k#include <vector>#include <iostream>using namespace std;class Solution{public: const

2021-09-02 17:21:45 223

原创 排序算法之快速排序

排序算法之快速排序时间复制度 O(NlogN)在c和c++库中 都有类似的封装 c – qsort() ;c++ – sort()原理快排的核心思想:将小于参考值的数放在其左边,大于的数放在右边主要思想是利用递归思想1、先选则一个参考值(一般选择为 数组第一个值)2、必须从最右边开始找小于参考值的数: 下标 j(why? – 见彩蛋)3、从最右边开始找大于参考值的数:下标 i4、swap(); 交换两个数的位置 (如果 i == j ,则交换参考值与下标是i的数)5,递归调用,

2021-08-27 16:19:02 157

原创 vscode里cmake插件CMakelists.txt 操作

在目标文件里新建build 、 include 、lib 文件夹,新建CMakeLists.txt 文件(即顶层CMakeLists.txt 文件)之后在每一个需要编译的文件夹中添加各自的底层CMakeLists.txt 文件。如图所示:图中的bin文件夹,rootfs文件夹不需要自己创建顶层CMakeLists.txt文件cmake_minimum_required(VERSION 3.0.0)project(1 VERSION 0.1.0)include(CTest)enable_test

2021-07-27 20:51:05 3393

原创 Linux 中的内存管理单元MMU

MMU (内存管理单元)基础概念1、TLB – 转换旁路缓存,里面存放着少量的虚拟内存与实际物理内存之间的对应关系,被称为快表。2、TTW – 漫游转换表,当TLB中没有对应的转换关系,通过对内存中的转换表的访问来获得虚拟地址和物理地址的对应关系。TTW成功后,结果应写入 TLB中。ARM 处理器寻物理地址过程,①虚拟地址通过TLB快表查出对应的实际物理地址;②TLB对应的缓存中没有对应的表,即转换表遍历硬件(TTW 功能),找到对应转换关系后将其存入TLB缓冲区中。内核空间与用户空间在一个3

2021-07-01 16:50:47 476

原创 linux 里面的原子操作

原子操作整型原子操作1、整型原子类型位 atomic_t设置整型原子变量值: void atomic_set(atomic * v , int i);ATOMIC_INIT( i); – 返回已初始化位i 的整型原子变量。2、获得原子数值atomic_read(atomic_t *v);3、原子变量加 / 减void atomic_add(int i,atomic_t * v ) ;void atomic_sub(int i,atomic_t * v) ;4、原子变量自增 / 自减

2021-06-30 21:11:44 265

原创 Linux 驱动中断部分

中断1、定义中断 : cpu在运行工作时,出现了某些突发事件,放下目前手上的工作,处理这个突发事件,处理完毕在返回处理中断前的事件。2、Linux里中断处理框架Linux里将中断分为上半部与下半部,原因:进行中断处理的时间需要越短越好,因此将紧急且短暂的事件放在上半部,将处理时间长的事件放入下半部。2.1 中断上下半部差别上半部:紧急且短暂的事件,不能被其他中断打断。下半部: 耗时且较为复杂的事情,永许被其他中断打断。###ps— 自己理解 下半部的功能是不是与单独扔出一个线程类似,相当于扔

2021-06-30 20:17:07 167

原创 阻塞IO,非阻塞IO,异步通知

阻塞IO – 在设备资源未准备好,或者设备无法访问时,一直阻塞等待,让线程休眠,出让调度器给其他线程,一直等待到设备可以访问为止。非阻塞IO – 在设备资源无法满足时,或者设备无法访问时,有两种处理办法,要么直接返回,要么一直轮询,轮询需要用到poll(),select()函数,io多路转接,一直阻塞在poll()函数调用直到当设备资源满足。异步通知:一旦设备资源满足时,主动通知应用程序,(ps: 异步事件,无法预料的事件,什么时间到来不知道)...

2021-06-20 16:48:59 178

原创 Linux字符设备框架

字符驱动框架利用模块的方式加载字符设备,不直接将字符设备模块编译进内核在写makefile时 可写 obj-m += xxx.o 来编译成模块,或者 obj -$(CONFIG_ISDN) – 此时需要在make menuconfig 中找到对应的模块选择M – 表示编译成模块字符驱动设备框架1、字符设备号申请相关函数与头文件1、int register_chrdev_region(dev_t det, unsigned devnum, const char * devname); --静态

2021-06-16 16:51:57 239 1

原创 嵌入式Linux 驱动开发 --- 字符设备申请与注册

字符设备申请与注册注册相关函数1、头文件 <linux/cdev.h>结构体cdevstruct cdev {struct kobject kobj;struct module *owner;const struct file_operations *ops;struct list_head list;dev_t dev;unsigned int count;};结构体 struct file_operationsstruct file_operations {str

2021-06-07 21:33:52 229

原创 APUE -- 阅读笔记- - - 多线程

“APUE” - - - 多线程 (一)前言多线程是处理异步事件的一种方式 , 处理并发有多线程,多进程 .在使用多线程的时候,在编译和链接的时侯都需要加上编译选项 -thread一、线程是什么?线程就是一个正在运行的函数 ; main函数被认为是main线程 , 其他创建的线程都是兄弟进程的关系,没有主次之分,地位平等;进程是线程的容器,一个进程内可以有很多的线程.二、线程的标识pthread_t 类型,这是POSXI标识下的线程标识,每一个线程都有一个唯一的线程标识号. pthrea

2021-03-21 10:31:34 249

原创 Qt小项目--实现标准计算器

Qt小项目-实现标准计算器自学完Qt中的信号与槽机制与 ui 后完成第一个小项目,功能: 1、实现整形与浮点型的基础 + - * / % ,等常规计算,2、实现退格功能;3、实现清屏功能4、实现正负数设置5、实现简单的连算6、未能实现的功能 : 复杂连算—连算功能显示关键1,将中缀表达式转换为后缀表达式—在利用栈的方法进行计算头文件.h#ifndef MAINWINDOW_H#define MAINWINDOW_H#include <QMainWindow>#inclu

2020-12-07 16:11:33 728

原创 C语言 三子棋游戏

C语言 三子棋游戏 (可以使用机器学习的方式,来训练电脑落子,目前没做)//游戏 头文件 game.h#include <stdio.h>#include <stdlib.h>#include <time.h>#define Line 3#define Row 3void Initboard(char board[Line][ROW],int line,int row);void show_board(char board[Line][ROW],int

2020-08-17 10:06:09 230

原创 C语言面试题 两个数字的交换方式

C语言面试题 两个数字的交换方式例如 a=3,b=5;交换顺序为a=5,b//第一种方式—引入第三种变量int mian(){ int a =3; int b =5; int tem =0; tem = a; a = b; b = tem; printf("a=%d,b=%d",a,b) return 0; }//第二种不使用第三个变量的方式int main(){ //采用加减法 int a =3; int b =5; a = a + b; b = a - b;

2020-08-16 17:45:52 323

git操作,,,,,,,,,,,,,,,,,,,,,,,,,,,

git操作,,,,,,,,,,,,,,,,,,,,,,,,,,,

2022-07-28

cmake,,,,,,,,,,,,,,,,,,,,

cmake,,,,,,,,,,,,,,,,,,,,

2022-07-28

git 学习文档ggggggggggg

git 学习文档ggggggggggg

2022-06-15

空空如也

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

TA关注的人

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