自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(95)
  • 资源 (1)
  • 收藏
  • 关注

原创 malloc应用场景总结

malloc应用场景总结

2022-12-02 00:10:50 412 1

原创 GPU学习笔记

引言GPU是面向大吞吐量设计的,异构众核,适用于计算密集型任务。CPU很多性能消耗在把数据在存储单元中搬来搬去,而GPU主要性能用于计算。p.s.数据在内存中搬来搬去很消耗性能硬件架构可以看到,CPU中控制单元很大,内存单元很大,而GPU中,很多计算单元。有些资料上解释计算单元主要是由ALU构成的,而ALU是通过门电路组合而成,计算单元由称为sp,CUDA核一些名词解释SP(streaming processor)最基本的处理单元,也称为CUDA core。最后具体的指令和任务都是在SP

2022-02-15 21:41:56 776

原创 C++实现二叉树的BFS与DFS

深度优先沿着树的深度遍历树的节点,尽可能深的搜索树的分支用到的数据结构:栈通俗的总结原理:进栈、出栈、一搜到底代码void dfs(Tree * root){ stack<Tree*> nodestack; nodestack.push(root); Tree* node; while(!nodestack.empty()) { node = nodestack.top(); cout<<node->data<<endl; node

2021-10-25 11:18:05 364 1

原创 共用体的一点笔记

共用体我们都知道共用体内存大小是共用体中元素最大的那个元素的大小,那么数据在内存中到底是怎么分配的呢?以小端存储为例,下面这个例子一目了然#include<string>#include<unordered_map>#include<algorithm>using namespace std;union { int i; char x[2];}a;int main(){ a.x[0] = 0; a.x[1] = 10;//10的二进制为10

2021-10-11 11:33:33 142

原创 # 链表反转插入实例

链表反转与插入实例#include<iostream>using namespace std;typedef struct listnode{ int data; struct listnode * next;}listnode,*list;list insert(list head,int num){ list node; list p; node = (listnode*)malloc(sizeof(listnode)); node->data = n

2021-09-05 12:04:30 83

原创 C++笔试奇怪输入输出总结

输入输出常用函数cincin.getline()cin.get()举例1.一维数组输入,第一行输入一个数字代表数组长度,第二行开始输入数组元素,中间以空格分隔#define _CRT_SECURE_NO_WARNINGS#include<iostream>#include<vector>#include<algorithm>#include<string>#include "stdio.h"#include<stdlib.h&g

2021-09-04 15:30:18 262

原创 c/c++刷题常用函数总结

大小写转换函数tolower();//转小写toupper();//转大写上述函数如果传入参数已经是大写或小写了或者是其他字符那么将保持不变字母判断isalpha();如果是字母输出true;如果不是字母输出false;

2021-08-24 19:18:10 151

原创 Linux驱动开发笔记

Linux驱动开发思维根据linux下的各种驱动框架进行开发。一定要满足框架。驱动最终表现的形式是/dev/xxx文件。打开、关闭、读写…现在新的内核支持设备树,这个一个.dts文件,此文件描写了板子的设备信息Linux驱动开发分类linux驱动开发分为三大类1.字符设备驱动2.块设备驱动3.网络设备驱动一个设备可能既属于这个类型又属于其他类型扩展1. 字符设备:字符设备指能够像字节流串行顺序依次进行访问的设备,对它的读写是以字节为单位。举例:鼠标、键盘、串口2. 块设备:块设备以数

2021-08-18 16:35:57 79

原创 常用数据结构与算法总结

快速排序快速排序的核心是找到一个锚点,然后再将其他小于锚点的数据排到锚点的左边,大于锚点的数据排到锚点的右边,然后再对锚点左右两边的数据递归进行此操作直到排序完成稳定性:不稳定平均复杂度:O(nlogn)代码:https://github.com/ETinyfish/ds_and_al/commit/6a97afa42a4d9432aaa642bf1fe342354bbd008f堆排序堆排序的主要原理是利用堆这种数据结构来进行排序。大顶堆:每个节点的值都大于或等于其他子节点的值,在堆排序算法中

2021-08-09 20:22:00 123

原创 关于指针的几个总结

案例1 int a[5] = { 1,2,3,4,5 }; int *ptr = (int *)(&a + 1); cout << *(a + 1) << " " << *(ptr - 1) << endl;打印结果是:2,5这里的难点在于*(ptr-1),&a+1注意a没带括号,那么这里a代表的是数组的地址,那么&a+1就是加一个数组大小案例2 int arr[] = { 21,22,23,24,25 }; int

2021-07-21 21:10:00 159

原创 软实时和硬实时

软实时硬实时硬实时操作系统:任务只有在特定时间内完成才有收益,否则收益为负无穷。软实时操作系统:任务过早或过晚完成,仍有一定收益。硬实时操作系统举例:FreeRTOS、ucos

2021-07-19 21:34:59 675

原创 去掉字符串中的空格

引子刚才脑海中突然想到曾经面试官问到的一个问题,怎么去除一个字符串中的空格,当时记得只回答了一个思路,还用到了readline等函数,但是刚才突然又想到这个问题,也可以用string内置函数实现一下代码主要用到了string::npos中的npos和findstring::npos参数:npos 是一个常数,用来表示不存在的位置,类型一般是std::container_type::size_type 许多容器都提供这个东西。取值由实现决定,一般是-1,这样做,就不会存在移植的问题了。find函数

2021-07-06 21:13:36 749

原创 gdb使用笔记

gdb是什么gdb是一个调试代码的工具,调试用的,比如给程序打个断点,单步运行等等。使用方法g++/gcc编译的时候在末尾加上-g比如我的这个文件夹中有一个kp.cpp文件,那么我在使用g++编译的时候需要在末尾加上-g然后再输入gdb -kp.out进入调试状态输入 l 1从第一行列出你要调试的代码,我这里默认只列出10行,想列出更多行持续敲回车即可假如我想在86行打一个断点,则输入b 86然后回车输入r回车可以看到程序运行到第86行停止了输入s回车,单步执行,而输入n的话则

2021-07-04 15:05:36 92

原创 2021windows下vs2017配置ffmpeg

ffmpeg下载去官网https://github.com/BtbN/FFmpeg-Builds/releases下载如下文件下载好后将该压缩包放在合适的位置并解压vs工程文件创建及配置ffmpeg主要就是要项目里面能找到include、lib、dll文件创建一个文件夹然后用vs2017在该文件夹下创建一个空项目,并在源文件下添加一个cpp文件,并在其中添加下列代码#include <stdio.h>#include <iostream>extern "C

2021-06-25 19:13:47 926 4

原创 2021github上传项目步骤

2021为什么2021呢?因为不知什么时候开始github将主分支名字改为了main而不是master步骤步骤很简单1.在github上创建一个仓库,然后将仓库的链接复制下来2.在本地上执行git clone 链接3.在clone下来的文件夹中git init和配置user.name和user.email git config user.name "yourname" git config user.email "youremail"4.把你要上传的文件全都复制到这个文件夹内5.执行命令

2021-06-23 20:09:48 306

原创 Linux命令1

管道管道就是"|"符号来连接两个命令,前面的命令的标准输出作为后面命令的标准输入管道命令会自动忽略错误的标准输入后面接的命令必须能够接收标准输入例子分页查看ls命令的输出内容ls -l /usr/bin | lessgrep命令linux命令用于查找文件里符合条件的字符串grep 指令用于查找内容包含指定的范本样式的文件,如果发现某文件的内容符合所指定的范本样式,预设 grep 指令会把含有范本样式的那一列显示出来。若不指定任何文件名称,或是所给予的文件名为 -,则 grep 指令会从

2021-06-03 20:18:36 70

原创 三种工厂模式理解

三种工厂模式自己的一些理解纯属自己为了记忆的一些理解,不保证正确性,如有错误,欢迎指正!简单工厂模式简单工厂模式就是工厂直接造产品工厂⟶产品工厂方法工厂方法模式就是工厂先造生产线,生产线造产品工厂⟶生产线⟶产品抽象工厂抽象工厂就是先造厂房,厂房造生产线,生产线造产品工厂⟶厂房⟶生产线⟶产品...

2021-04-20 12:08:50 77

原创 main(int argc, char *argv[])函数的参数意义

argc:总的参数个数argv[]:参数具体值,第0个参数是程序全名,以后的参数是命令行后面跟的用户输入参数

2021-04-14 15:24:50 91

原创 快速排序笔记

快速排序核心思想找一个参考点做中心轴;将大于中心轴的数据放在中心轴的右边,小于中心轴的数据放在中心轴左边;分别对中心轴左右子序列再进行1,2步的操作(即递归)代码实现自定义类型实现#include<iostream>#include<ctime>#include<algorithm>using namespace std;//void swap(int index1, int index2, int* array)//{// int temp

2021-04-13 11:11:45 75

原创 堆排序笔记

还是记录到博客上不易找不到笔记堆排序原理堆排序是利用堆这种数据结构对无序序列进行排序,属于贪婪算法,先利用大根(或小根堆后面省略)堆数据结构找出序列中的最大值,然后将最大值从序列中移出,然后再利用堆数据结构在剩余序列中将第二大值找出,以此类推直至所有数据都排序。堆排序的难点给定的序列怎么建立成大根堆堆排序需要牢记的几个重要知识点第一个非叶子节点位置:len/2-1;左子树位置:2*i+1;右子树位置:2*i+2;代码#include<iostream>#includ

2021-04-10 12:00:38 84

原创 sprintf()

sprintf()int sprintf(char *str, const char *format, …) 发送格式化输出到 str 所指向的字符串。str – 这是指向一个字符数组的指针,该数组存储了 C 字符串。值得注意的是高版的VS默认不让使用scanf,fopen等函数,说是scanf,fopen等函数不安全,而代替其函数的是scanf_s,fopen_s等函数,后边有个"_s"的形式例子#include <stdio.h>#include <math.h&gt

2021-04-01 15:36:15 64

原创 c++assert笔记

assertassert()是个函数,通常叫他断言,他的作用是,如果它内部的表达式为假,那么程序将终止,assert()后面的语句也将不会执行。它的头文件为#include<assert.h>assert(表达式);//若表达式为假,那么下面语句将不会执行cout<<"assert内部表达式为真!"<<endl;...

2021-03-25 15:32:26 71

转载 WMware中ubuntu移动鼠标时鼠标消失解决办法

现象在vmware中安装好ubuntu后,移动鼠标,鼠标在动的过程中不显示轨迹,看不到鼠标,用着非常不爽解决办法在看了博主@理解~析 的一篇博文后成功解决,具体方法是:1:按win+x键,选择设置2:选择鼠标设置:3:选择鼠标选项,按下图设置...

2021-03-24 11:09:57 3762 6

原创 c++/c整型最大值和最小值

INT_MAX与INT_MINc++中,int占4个字节32位,最大值INT_MAX表示2^31-1等于2,147,483,647,最小值INT_MIN表示-2^31-1等于-2,147,483,648。

2021-03-22 15:11:08 1546

原创 二叉树笔记

遍历方法记忆二叉树遍历方式有前序、中序、后序遍历三种方式这里的前中后实际上说的是根节点在前还是在中还是在后,然后再记住先左后右的原则就记住了前序:root–>left–>right中序:left–>root–>right后序:left–>right–>root注意观察root的位置...

2021-03-03 19:59:05 55 1

原创 python读取txt文件到excel

code# -*- coding: utf-8 -*-"""Spyder EditorThis is a temporary script file."""import xlwt #写入文件import xlrd #打开excel文件#import xlsxwriterfopen=open("D:\\Research\\TwoPhase\\Code_and_Data\\MatlabCode\\new3030\\ot_3030\\中心.txt",'r')lines=fopen.re

2021-02-06 10:23:24 852 2

原创 指针数组数组指针动态数组笔记

指针数组指针数组,看最后两个字,数组指针数组是一个数组,不过这个数组优点特别,它的里面存放的是地址。它的声明方式如下int *a[10]数组指针数组指针,看最后两个字,指针数组指针是一个指针,这个指针指向的是一个数组。数组指针也称行指针。声明方式:int (*p)[10];//该语句是定义一个数组指针,指向含4个元素的一维数组动态数组定义数组的大小在编译时可能还是未知的,他们随着函数调用的变化而变化,因此,对这些数组只能进行动态存储分配。一维动态数组定义例如,一个长度为n的一

2020-12-25 15:10:30 188

原创 GCC笔记

什么是GCCGCC是一种编程语言编译器套件GCC、gcc、g++区别gcc是GCC中的c编译器,g++是GCC中的c++编译器gcc和g++都可以编译c和cpp文件,但存在差异。gcc编译时默认按c来编译,不能链接到c++的库。g++编译时都统一按cpp的语法规则来编译。...

2020-12-03 21:18:31 79

原创 虚函数笔记

虚函数虚函数 是在基类中使用关键字 virtual 声明的函数。在派生类中重新定义基类中定义的虚函数时,会告诉编译器不要静态链接到该函数。我们想要的是在程序中任意点可以根据所调用的对象类型来选择调用的函数,这种操作被称为动态链接,或后期绑定。纯虚函数纯虚函数就是在父类中定义一个虚函数,但又不给它函数体。纯虚函数类似一个说明,说明分类中这个函数就是一个架子一个说明,就是用来让你子类重写的。例子:virtual int area() = 0;...

2020-11-20 11:52:45 86

原创 虚拟内存笔记

虚拟内存产生背景程序运行需要加载到物理主存上,但是物理主存的容量有限,如果把一个程序全部加载到物理主存,则我们所能编写的程序将是很小的程序。虚拟内存虚拟内存的中心思想是将物理主存扩大到便宜、大容量的磁盘上,即将磁盘空间看做主存空间的一部分。用户程序既可以完全放在主存上,也可以完全放在磁盘上,当然也可以部分存放在主存部分存放在磁盘上。程序存放的地址的由内存管理系统进行管理。...

2020-11-11 10:48:33 48

原创 文献管理软件Mendeley使用说明

功能添加文献管理文献引用文献导出文献添加文献第一种方法点击左上角add,添加文件夹,添加加文件夹里面的文献、监视文件夹里面的文献(亮点)注:添加文献后会自动识别文献的名字作者等信息,如果识别不对还可以手动在右边窗口里面修改第二种方法浏览网页时从浏览器添加,需要借助软件工具Tools → Install Web Importer(科学上网),装好后浏览器上会有一个标志,效果图大概如下:第三种方法使用自带搜索功能管理文献1.绿点表明文档未读,点击绿点切换已读和未读。可以将喜欢

2020-10-30 19:02:20 1173

原创 图像处理之鱼眼图片矫正

鱼眼矫正最近了解了下鱼眼矫正的相关知识,主要记录一下经纬度矫正的原理。经纬度矫正主要包括两个步骤:1.提取有效区域2.基于经纬坐标矫正鱼眼图像提取有效区域就是把鱼眼图像提取出来,一般的鱼眼图像未处理的原图都是圆形,然后外面都是黑色的第二个步骤是核心部分,所谓经纬坐标法其实就类似将圆形的地球展开成一个矩形的地图过程。这里只是大概记录一下原理,具体细节可以参考其他人的博客...

2020-10-14 19:16:24 1644

原创 const static 指针引用等笔记

constC++定义常量两种方式1.define 宏常量: #define 常量名 常量值通常在文件上方定义,表示一个常量2.const修饰的变量 const 数据类型 常量名 = 常量值通常在变量定义前加关键字const,修饰该变量为常量,不可修改const修饰指针1.const修饰指针–常量指针2.const修饰常量–指针常量3.const即修饰指针又修饰常量int a = 10;int b = 1;//常量指针,指针指向地址里存放的内容不可以修改,但指针指向的地址可以修改co

2020-10-07 21:11:12 119

原创 c++之STL笔记

STL标准模板库标准模板库是为了提高复用性而创建的,它建立了一套数据结构和算法的一套标准。基本概念STL标准模板库从广义上可以分为:容器container算法algorithm迭代器iterator容器和算法之间通过迭代器进行无缝连接STL六大组件STL大体分为六大组件容器算法迭代器仿函数适配器空间配置器容器vectorSTL中最常用的容器为vector,可以理解为数组,也称为单端数组容器: vector算法: for_each迭代器: vector::iterat

2020-10-07 19:14:27 162

原创 c++new操作符笔记

c++new语句功能:堆区开辟一组数据语法:new 数据类型注意点:new创建的数据会返回该数据对应的类型指针,另外堆区开辟的数据由程序员手动释放。

2020-10-03 16:46:10 278

原创 c++多态的一点笔记

多态满足条件1.有继承关系2.子类重写父类中的虚函数3.父类指针或引用指向子类对象多态的优点1.代码组织结构清晰2.可读性强3.利于前期和后期扩展维护

2020-09-29 21:46:20 148

原创 c++中静态多态和动态多态的qubie

c++中静态多态和动态多态的区别静态多态的函数地址早绑定,编译阶段确定函数地址动态多态的函数地址晚绑定,运行阶段确定函数地址

2020-09-29 21:41:11 197

原创 freecad安装记录

freecad安装记录最近想安装freecad进行3d打印,但是安装的过程可以说是一波三折。最起初直接下载的官网windows64bit版本的,但是安装好以后点击软件图标却一闪就退了,很是无语。网上查找了很多方法在我这里都无用,比如将用户名改为英文名称、默认安装到c盘、路径没有中文。这些条件我都满足了但是软件最后还是不能运行。后来我又把64bit的软件卸载了想尝试一下32bit的,但是后来32bit的软件还是不能运行。一个偶然的机会看到有个帖子建议说可以在linux上运行此软件,于是我就打算试一试。我在u

2020-09-25 21:53:04 727

原创 关于c++引用的几点笔记

引用引用的作用可以理解为给变量起一个别名,它的语法为:数据类型 &别名 = 原名引用的几点注意事项1.引用必须初始化2.引用在初始化后不可以修改引用作为函数参数作用:函数传参时可以利用引用技术让形参修饰形参,这样做的优点是可以简化指针修饰实参。通过引用参数产生的效果同按地址传递是一样的。引用语法更清楚简单。引用作为函数返回值1.不要返回局部变量的返回值。这是因为局部变量存储在栈区,当函数调用完后栈区数据会被释放,当你使用引用去接收一函数返回值时该内存已经被释放,操作被释放的内存属于

2020-09-25 11:31:19 70

原创 c++自减运算符重载

c++自减运算符重载网上看的视频学习的自加运算符重载后写的自减运算符重载,知道自加怎么写后再写自减非常好写。本代码实现的功能是对一个类进行cout自减输出一个类内的参数,其中包含了左移运算符的重载。需要注意的几个点前置递减要返回引用,而后置递减返回的是值。这是因为如果后置递减返回引用那么返回的是一个局部对象的引用,当前函数执行完后局部对象会被释放 。另外一些小技巧值得注意的是不可以用返回值作为函数重载的判断条件,有些时候可以加一个占位符来区分形参个数来添加函数重载。示例代码#include&l

2020-09-24 21:02:36 337

01背包动态规划c++版本.cpp

01背包问题的c++解法,动态规划算法,力扣上没找到c++版的,就自己鼓捣了一个

2021-05-04

空空如也

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

TA关注的人

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