自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

大袖技术

一介散人,即随即想,什么好呢

  • 博客(53)
  • 资源 (1)
  • 收藏
  • 关注

原创 CZXTSJ003 | 操作系统设计:进程调度

1.1 调度器CPU 只有一个,当有多个进程都是处于就绪态的时候,操作系统就必须做出决定先运行哪一个进程,操作系统做出决定的那一部分称为调度器,它使用的算法称为调度算法进程调度和线程调度类似1.2 调度介绍1、几乎所有进程都会交替地突发 I/O 请求2、有些进程大部分时间花费在运算上称为:计算密集型3、有些进程大部分时间花费在等待 I/O 操作上称为:I/O 密集型4、由于现代的发展,CPU 的速度越来越快,所以总体趋势趋向于 I/O 密集型5、什么时候会发生调度?

2022-02-11 17:49:43 495

原创 CZXTSJ002 | 操作系统设计:进程间通讯

1.1 进程间通讯1、为什么要进程间通讯1、第一个进程的输出结果作为第二进程的输入2、第一个进程想第二个进程传送数据3、两个进程同时操作临界活动不会对彼此产生影响4、进程A生产数据,进程B消费数据1.2 竞争条件在某些操作系统中,协作进程可能会共享一些彼此都能读写的公用存储区假设打印机最大可打印排队位置是5个,分别是1,2,3,4,5个位置现在1,2,3,4,5,都是处于忙的状态进程A 和 进程B 都想打印文件,但现在打印机都是繁忙状态,它们只能等待突然,

2022-02-11 16:44:26 704

原创 CZXTSJ001 | 操作系统设计:进程是什么

1.1 前言进程:本质上来说就是一个正在执行的程序1.2 进程介绍1、现代计算机可同时做几件事情,CPU 不断在进程间切换2、在一个 CPU 中,在某一个瞬间,其实只能运行一道程序,因切换较快,给人错觉并行运行,其实是伪并行3、在多个 CPU 中,可以达到真正的并行,在享受便利的同时,也有一个不好的地方,因为是并行,所以我们就很难追踪执行程序间的活动,为此,操作系统设计者发展了一种进程模型 :顺序进程1.3 进程模型1、计算机上所有可运行的软件(也包括操作系统),都被归类

2022-02-11 15:16:00 698

原创 2种情况可能造成:QObject::startTimer: Timers cannot be started from another thread

一、分析 2 种情形,这里重现一下1、一般情况这种一般比较常见1、创建自定义类型 MyTest2、头文件 mytest.h#ifndef MYTEST_H#define MYTEST_H#include <QThread>#include <QTimer>class MyTest : public QThread{ Q_OBJECTpublic: explicit MyTest(QObject *parent = nullptr)

2022-02-08 13:15:39 7294 2

原创 C++ 使用最小二乘法简单地实现线性拟合

一、最小二乘法什么叫最小二乘法去查查其他资料呗,资料非常多二、简单示例假设有以下散点P1(1, 3)P2(2, 5)P3(3, 7)P4(4, 9)P5(5, 11)P6(6,13 )P7(7, 15)P8(8, 17)P9(9, 19)设拟合直线的公式为: y = kx + b上边的散点比较简单,用数学的方式试一下就知道表达式为y = 2x + 1那如何使用 C++ 的方式编程计算三、代码示例#include &

2022-01-12 11:19:39 3420 1

原创 OPENCV 图像颜色空间转换(cvtColor)

一、颜色模型1、RGB 模型:> R(0 ~ 255)>G(0 ~ 255)> B(0 ~ 255)2、HSV 模型:>H(色度) >S(饱和度) >V(亮度)3、Lab 模型: >L(亮度,ab(颜色通道) >a(-128-~127) >b(-128~127)...

2022-01-11 11:59:13 1844

原创 OPENCV 读取视频文件 & 保存视频文件(VideoCapture)

一、VideoCapture 类主要是用来 读取本地视频 或 读取摄像头1、读取本地视频VideoCapture cap(path);**其中 path 是视频文件的路径2、读取摄像头VideoCapture cap(0);**其中 0是是摄像头的 index ,如有多个摄像头则 +1 ,如 0,1, 2, 3...二、读取视频文件测试代码#include <iostream>#include <opencv2\opencv.hpp.

2022-01-11 11:23:35 987

原创 OPENCV 获取摄像头图像( VideoCapture )

一、VideoCapture 类主要是用来读取本地视频或读取摄像头1、读取本地视频VideoCapture cap(path);**其中 path 是视频文件的路径2、读取摄像头VideoCapture cap(0);**其中 0是是摄像头的 index ,如有多个摄像头则 +1 ,如 0,1, 2, 3...二、VideoCapture 读取摄像头测试代码#include <iostream>#include <opencv2...

2022-01-11 11:05:59 5172

原创 OPENCV 图像存储容器 Mat 及显示一张图片( imread )

一、Mat1、如何声明,感性认识,如下Mat<float> a;Mat<double> a;Mat<char> a = Mat<char>(3,3);Mat<unsigned char> a;2、如何构造,感性认识,如下Mat a; // 默认构造Mat a (Size(480,640), CV_8UC1); // 640*480 单通道Mat a (Size(480,640), CV_32FC3); // 640*

2022-01-11 10:26:55 2635

原创 C# 事件机制

一、什么是事件事件涉及两类角色:事件发布者和事件订阅者当发生一个事件的时候,事件发布者会发布事件事件订阅者会接收事件已发生的事件通知并且做出相应的处理怎么理解假如,你肚子饿了(事件发布者)肚子就会通知大脑(事件订阅者)饿了大脑(事件订阅者)就会要你放下手中的活快点跑去吃饭(做出相应的动作)二、如何使用声明事件事件是依赖于委托实现的所以要这样声明事件public delegate void delegateFun(string msg); // 声明委

2022-01-10 17:13:57 335

原创 C# 委托与多播委托(Delegate)

一、委托(Delegate)如果熟悉 C 或 C++那么委托就类似于函数指针不熟悉的话就看概念委托(Delegate)是存有对某个方法的引用,一种引用类型变量。引用可在运行时被改变。看不懂委托委托,就是委托别人嘛假如我有一块纯银,我想打造一个纯银手镯当然我自己不会打造,所以我就得去找专业人员打造找到后就告诉他:我要打造一个手镯并告诉他打造完后的手镯样式这个过程就是 我 ->​委托-> 专业人员->去打造手镯 -> ...

2022-01-10 16:26:16 1485

原创 C++11 Lambda 表达式

一、Lambda 表达式先用中文表示,类似下面[外部变量访问方式说明符] (参数表) -> 返回值类型{ 语句块}简单的形式[](){} 或者 []()->void{}返回值类型可忽略1、[ ]Lambda 表达式标志的开始里面可填写1、[=]:以值的方式捕捉外部的变量,注意是值的方式。2、[&]:以引用方式捕捉外部的变量,注意是引用方式。3、[a]:只以值的方式捕捉变量 a...

2022-01-10 11:50:31 129

原创 C++11 存储任意类型(std::tuple)

一、std::tuple我们知道,我平常使用的数组都是同一种类型的比如int arr[] = { 1,2,3,4 }; // arr 数组里面的元素类型都是 int那有人就想了,下面不就是不同种类型吗我们编译一下看看可以看到,发生了隐式转换,最后调试结果int arr[] = { 1, 2.6, 3, 4 };std::cout << arr[1] << std::endl;这时候我们想存放不同类型就用到了std::t...

2022-01-10 11:15:43 2206

原创 C++11 字符串转换函数

一、转换函数stoi(): 字符串转换为 intstol(): 字符串转换为 longstoll(): 字符串转换为 long longstof(): 字符串转换为 floatstod(): 字符串转换为 doubleto_string():整形或浮点型转换为字符串二、举个栗子1、#include <iostream>#include <...

2022-01-09 23:15:05 510

原创 C++11 输出原始字符串

一、原始字符串看下面代码#include <iostream>#include <string>using namespace std;int main(int argc, char ** argv){ string str = "abc\nabc"; cout << str << endl; return 0;}调试结果一切都很正常可是有时候我们想输出原始字符串不需要存在什么转义之类的该怎么做比如

2022-01-09 23:00:54 1260 1

原创 C++11 final 标识符

一、finalfinal 是 C++11 新增的一个标识符主要用于在类定义时,可以显式强调不能继承防止我们在使用类的过程中有意或者无意为该类创建子类二、举个栗子1、类继承看以下代码#include <iostream>using namespace std;class A {};class B: public A{};int main(int argc, char ** argv){ return 0;}B 类是 A 类的派生类接着

2022-01-08 16:55:44 480

原创 C++11 返回类型后置

一、返回类型后置返回类型后置是什么第一次看着有点懵来点熟悉的int Fun(int a, int b);上面这样这个 Fun 是一个返回值为 int 类型的函数int 是在 Fun 前面那么 返回类型后置 是不是 把 int 放在后面就可以了呢答案是可以这么理解C++11 推出了性特性 返回类型后置举个栗子,返回类型后置 形如这样的auto Fun(int a, int b) ->int{ return a + b;}auto 就作为...

2022-01-07 17:09:02 1063

原创 Qt 程序打包发布方法( window 环境)

一、最简单的依赖必备库1、把 exe 文件 单独放在一个新建文件夹从 Qt 的安装目录下,拷贝几个必备的 dll 即可发布当然这是最简单的方式,若有依赖其他的还需另外操作2、主要拷贝这几个platforms 文件夹libgcc_s_dw2-1.dlllibstdc++-6.dlllibwinpthread-1.dllQt5Core.dllQt5Gui.dllQt5Widgets.dll-------------------------------------

2022-01-07 15:31:30 924

原创 OPENCV 播放视频文件(MP4)时可能发生的异常问题

一、OPENCV 播放视频文件首先编写简单的播放视频文件代码#include "opencv2/opencv.hpp"#include <iostream>#include <Windows.h>using namespace std;using namespace cv;int main(int argc, char **argv){ cv::VideoCapture vedio("D:/workspace/opencv/project/test.mp4

2022-01-07 15:12:20 3495

原创 OPENCV 调节滑动条的创建

一、为什么要用滑动条有时候需要对 opencv 某个函数进行动态调参,这时候就要使用到 opencv 提供的滑动条工具该滑动条滑动时可以动态的改变我们的参数,对图像处理时有非常好的辅助效果该滑动条是由 createTrackbar() 函数创建二、createTrackbar 函数createTrackbar 函数原型CV_EXPORTS int createTrackbar(const string& trackbarname, const string& .

2022-01-07 14:48:52 1454

原创 C++ 基类析构函数为什么要加上 virtual

一、析构函数析构函数(destructor)是类成员函数一种函数的三要素:函数名,形参列表,返回值1、析构函数原型:1、无返回值2、必须和类名一样,但要在前加上~3、一个类中有且只有一个,不能被重载2、析构函数作用:1、如何定义? 如不显式定义,则自动生缺省析构函数2、何时被调用?当对象消亡时自动被调用 3、有什么作用?它并不是真正意义上删除对象所有内存,而是在删除...

2022-01-07 13:32:48 721

原创 C++ 六大函数简介:构造函数、析构函数、复制(拷贝)构造函数、赋值构造函数、移动构造函数、移动赋值构造函数

一、Ex一般地,我们会编写类似下面的简单类 Person#include <iostream>using namespace std;class Person {public: Person() { cout << "构造函数" << endl; } ~Person() { cout << "析构函数" << endl; }};int main(int argc, char* argv[]){ Person a;

2022-01-07 12:29:08 589

原创 C++ explicit 关键字

一、explicit 的意义先说作用主要是为了防止发生隐式转换那么,什么叫隐式转换呢看下列代码int main(int argc, char* argv[]){ int a = 3; // int 类型 double b = a; // a 被隐式转换成 double 在赋值给 b return 0;}隐式转换总是编译器自动完成的,从小字节自动隐式转换成大字节但反过来的话,友好的编译器会给我们发出警告,例如以下int main(int argc, cha

2022-01-07 10:19:28 237

原创 C++ 获取变量类型

一、如何获取变量类型使用 typeid 关键字二、测试例子包含头文件 #include <typeinfo>1、基本数据类型#include <iostream>#include <typeinfo>int main(int argc, char* argv[]){ int a = 0; float b = 0; double c = 0; char d = 0; std::cout << typeid

2022-01-06 18:31:16 5473 2

原创 C 语言 printf 函数执行顺序

一、前言1、平常使用#include <stdio.h>int main(int argc, char* argv[]){ int a = 0; int b = 1; printf("%d,%d", a, b); return 0;}调试结果:可以看到,比较平常2、更改一下#include <stdio.h>int main(int argc, char* argv[]){ int buf[] = { 1,2,3,4,5 };

2022-01-06 14:39:36 567

原创 C 语言程序设计之根据输入学生成绩输出成绩等级

一、前言90-100 分(含 90):A 等级80-89 分(含 80):B 等级70-79 分(含 70):C 等级60-69 分(含 60):D 等级0-59 分 :E 等级***备注:分数皆为整数分二、测试例子#include <stdio.h>int main(int argc, char* argv[]){ int score; while (true) { prin...

2022-01-06 13:46:39 16476

原创 C 语言打印菱形图案和九九乘法表

一、前言打印一个菱形图案二、测试代码#include <stdio.h>// 打印菱形void printRhombus(int N){ /// 1.上三角形 for (int n = 1; n <= N; ++n) { // 1.打空格 for (int i = 0; i < N - n; ++i) printf(" "); // 2.打图案 for (int j = 0; j < n * 2 - 1; ++j)

2022-01-06 13:00:34 606

原创 C 语言秒转换为时分秒

一、需求3789 秒 转成 xx:xx:xx 时间样式二、测试代码#include <stdio.h>int main(int argc, char* argv[]){ unsigned int second = 3789; // 假设 3789 秒 unsigned int h = second / 3600; // 转换为小时 unsigned int m = (second % 3600) / 60; // 转换为分钟 un

2022-01-06 11:43:06 5448

原创 C 语言判断某年是否为闰年该月有多少天

一、前言闰年判定条件:满足以下任意条件即可1.该年份能被 4 整除同时不能被 100 整除。2.该年份能被 400 整除。二、测试代码#include <stdio.h>// 主函数int main(int argc, char **argv){ int year, month; int days[] = { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; printf("请输入年份(0-?):

2022-01-06 11:24:12 1177

原创 C 语言比较三个数大小

一、需求int a = 1;int b = 2;int c = 3;屏幕输出:最大值是 3,最小值是 1二、测试例子#include <stdio.h>int Max(int a, int b){ return a >= b ? a : b;}int Min(int a, int b){ return a <= b ? a : b;}int main(int argc, char* argv[]){ int a, b, c

2022-01-06 11:14:01 1409

原创 C++11 计算代码执行时间(std::chrono 方式)

一、需求// 在追求代码性能优化的情况下// 我们想知道 fun 函数大概执行了多长时间bool result = fun();二、测试例子#include <iostream>#include <chrono>// 测试函数bool fun(){ int n = 0; while (++n < 20) std::cout << "测试函数 fun" << std::endl; return true.

2022-01-06 10:56:05 750

原创 C++ 重载 << 和 >> 的方式

一、背景在最初学习 C++ 的时候应该最多就是屏幕输出 Hello World 啦看下面代码#include <iostream>using namespace std;int main(int argc, char **argv){ cout << "Hello World" << endl; return 0;}调试结果可以看到,向屏幕输出了 Hello World我们发现,这一句就能输出我们想输出的东西了cout

2022-01-06 10:36:00 2879

原创 C 语言交换 a 和 b 值的 4 种方式

一、需求有以下需求有两个变量 a 和 b,形如int a = 3;int b = 4;然后将 a 和 b 的值互换得到a 的值是 4b 的值是 3二、需求分析能想到,交换两个值的使用第三个变量可完成交换,形如int c = a;a = b;b = c;在忽略其他情况下,整形变量也可以通过运算的方式交换它们的值,而不使用另外第三个变量经研究整理出 4 种交换方式第 1 种交换方式int c = a;a = b;b = c;

2022-01-06 09:33:19 25091

原创 C++ 字符串去除重复项并且获取不重复部分

一、需求假设下面需求1.字符串"1233214" -> "4"2.字符串数组{ "1","2","3","3","2","1","4" } -> { "4" }二、测试例子#include <iostream>#include <string>#include <vector>#include <list>#include <map>// 去重复获取独立部分// 1.字符串"1233214" -

2022-01-05 11:36:05 681

原创 Qt .Pro 文件中的相对路径设置注意事项

一、注意事项最近项目在 .pro 文件中要使用相对路径感觉每次设置都有种奇怪的感觉然后,各种报下面这个东西后边研究发现,跟下面这个玩意儿有关系二、一共两种情况,打勾或者不打勾1、Shadow build 打勾我们以./ 代表当前目录 <1>、下面这些变量使用时,./就是 pro文件路径 1、INCLUDEPATH 2、LIBS ...

2022-01-05 11:31:28 1952

原创 C++11 并发编程之条件变量 std::condition_variable

一、std::condition_variable这玩意儿怎么使用呢有个条件儿它需要配合 mutex 来使用 std::unique_lock 进行上锁 / 解锁它需要配合 mutex 来使用 std::unique_lock 进行上锁 / 解锁它需要配合 mutex 来使用 std::unique_lock 进行上锁 / 解锁当 std::condition_variable 对象调用 wait() 时, 它就使用 std::unique_lock 锁住当前线程直到另外一个线程

2022-01-05 11:16:45 328

原创 Qt 指定字符串分割字符串

一、需求假设有一段字符串"ABCDEFGHIJKLMN"需要变成"AB:CD:EF:GH:IJ:KL:MN"二、测试代码/**************************************** 功能:指定字符串去分割字符串* 参数:* -src: 需要分割的字符串* -group_size: 分割的字符串每组的大小* -split_flag: 用来分割字符串的字符串* 返回值: 分割好的字符串***************

2022-01-05 10:58:39 664

原创 OPENCV 图像旋转和仿射变换

一、getRotationMatrix2D计算旋转矩阵二、warpAffine仿射变换三、测试用例#include <iostream>#include <vector>#include <opencv2/opencv.hpp>// 图像旋转和仿射变换int main(){ cv::Mat src = cv::imread("./image/4.png"); if (src.empty()) std::cout &lt..

2022-01-05 10:50:19 800

原创 C++11 constexpr 变量和 constexpr 函数

一、constexpr 变量首先先了解一个概念:常量表达式常量表达式:是值不会改变并且在编译过程就能得到计算结果的表达式所以,换个角度想,字面值是属于常量表达式的那什么是字面值呢?很简单,比如 1, 2,3,4, "123", '1', nullptr 等等所以,一个对象或者表达式是不是常量表达式是由它的数据类型和初始值共同决定的例如:const int A = 20; // A 是常量表达式const int B = A + 1; // B 是常量表达式i

2022-01-05 10:39:52 460

原创 C++11 左值引用和右值引用、完美转发和引用折叠

一、左值与右值1、最感性的认识2、当然,左值也是可以在右边的3、左值是可以被修改的,右值不能4、当然取地址也是生存周期一般左值会比右值的长一般右值都计算时产生的无名临时对象,存在时间比较短下面还有一种情况也要区分二、左值引用和右值引用左值引用:可以引用一个对象,有时候也可以绑定一个右值右值引用:只能引用右值1、左值引用int a = 3;int &p1 = a; // 左值引用左值引用右值,将...

2022-01-05 10:16:59 397

空空如也

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

TA关注的人

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