自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(119)
  • 收藏
  • 关注

原创 音频——多声道Plane格式处理(音频基本知识、音频多声道Plane格式等)

音频的基本知识和多通道以及Plane格式和Packet格式

2022-06-06 00:27:47 1251 2

原创 Qt之初学者遇坑杂谈

文章目录前言一、Qt的多线程1.Qt的多线程基本知识2.Qt多线程写法3.Qt多线程的第一个坑(多线程未启动成功)二、Qt的槽函数三、Qt的连接错误四、Qt的UI操作总结前言本篇博客仅仅只是记录本人一边学习Qt一边应用的时候遇到的坑,有些坑非常简单,但是由于本人当时Qt知识面太窄,掉坑了。后面遇到Qt的坑都会更新记录到本篇博客中。在Qt的多线程、槽函数、以及Qt程序的执行都遇到过坑。每个坑一般都会举个简化单的且完整的代码示例。一、Qt的多线程最开始的时候,本人只是去看了C语言中文网的Qt的教程,

2022-06-05 20:22:22 655

原创 define趣谈——“#define false true“ 和 “#define true false“

今天在“某脉app”上看见一个有点幽默的帖子,在这个“脉某app”上的楼主问:“怎样才能向别人证明你精通C语言?”,一个人回答:“#define false true”。好一个“黑即是白”。但是当我延申测试的时候,却发现了在define的使用上我一直以来的误区。...

2022-06-05 17:47:15 1426

原创 Qt之多线程、信号和槽

Qt多线程和信号槽相遇时的用法

2022-05-31 00:38:28 7226

原创 音视频学习一——FFmpeg封装

系列文章目录文章目录系列文章目录前言一、FFmpeg结构体和函数简述1.这里简单表明结构体的作用:2.FFmpeg函数简介二、视视频解码转码流程三、FFmpeg封装(仅针对于普通FFmpeg简单的封装和实现)1.FFmpeg类的封装2.FFmpeg封装后的成员函数的实现总结前言FFmpeg是本人初入音视频学习知道的第一个较重要的开源框架。本博客主要介绍FFmpeg接口用C++封装,网上有很多资源,此封装是按照自己想法做的,肯定不是很精简的很好的封装,但是应该是比较容易理解和容易实现的。封装FFmp

2022-05-08 22:24:34 1443

原创 C++——异步操作(std::future、std::async、std::packaged_task、std::promise)

文章目录一、std::future与std::async1.基本概念2.代码演示二、std::future与std::packaged_task1.基本知识2.代码演示三、std::future与std::promise1.基本知识2.代码演示一、std::future与std::async1.基本概念(1)std::future的基本知识std::future期待一个返回,从一个异步调用的角度来说,future更像是执行函数的返回值,C++标准库使用std::future为一次性事件建模,如果.

2022-01-19 00:27:58 3749

原创 计算机操作系统——死锁

文章目录一、相关知识1.可重用性资源和消耗性资源2.可抢占性资源和不可抢占性资源3.死锁定义二、死锁产生的原因和必要条件1.死锁产生的原因2.死锁产生的必要条件三、预防死锁的方法1.破坏“请求和保持”条件2.破环“不可抢占”条件3.破坏“循环等待”条件一、相关知识1.可重用性资源和消耗性资源1)可重用性资源可重用性资源是一种可供用户重复使用多次的资源。具有如下性质:(1)每一个可重用性资源中的单元只能分配给一个进程使用,不允许多个进程共享。(2)进程使用可重性资源的顺序:①请求资源。如果请求.

2021-12-26 14:00:21 1043

原创 C++——互斥量

文章目录一、基本知识二、独占互斥量mutex1.mutex的介绍2.mutex的成员函数3.实例演示三、lock_guard和unique_lock的使用和区别四、递归互斥量recursive_mutex1.基本知识2.演示示例五、带超时的互斥量std::timed_mutex和std::recursive_timed_mutex一、基本知识C++11提供如下4种语义的互斥量(mutex)std::mutex,独占的互斥量,不能递归使用。std::time_mutex,带超时的独占互斥量,不能递.

2021-12-24 17:44:18 2366

原创 C++——右值引用

文章目录一、基本知识1.作用2.右值的基本概念以及与左值的辨别3.右值引用的特性二、右值引用优化性能三、移动语义(move)和完美转发(forward)1.移动语义move2.完美转发forward一、基本知识1.作用作用:C++11中引用了右值引用和移动语义,可以避免无谓的复制,提高了程序性能。2.右值的基本概念以及与左值的辨别①C++11中的所有的值必将属于左值、将亡值、纯右值三者之一,将亡值和纯右值都属于右值。②左值是表达式结束后仍然存在的持久对象,右值是指表达式结束时就不存在的临时对.

2021-12-24 02:42:41 2581 2

原创 设计模式——策略模式

文章目录一、基本知识1.定义2.要点二、结构图三、实例说明1.普通代码2.策略模式代码一、基本知识1.定义定义一系列算法,把它们一个个封装起来,并且使它们可互相替换。该模式使得算法可独立于使用它的客户程序而变化。2.要点①策略模式提供了一系列可重用的算法,从而可以使得类型在运⾏时方便地根据需要在各个算法之间进行切换。②策略模式消除了条件判断语句;也就是在解耦合。二、结构图三、实例说明实例:某商场节假日有固定促销活动,为了加大促销力度,现提升国庆节促销活动规格。1.普通代码enum.

2021-12-23 00:37:58 396

原创 设计模式——观察者模式

文章目录一、基本知识1.定义2.要点二、结构图三、实例演示1.普通代码2.观察者模式代码一、基本知识1.定义定义对象间的一种一对多(变化)的依赖关系,以便当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并自动更新。个人感觉这个跟发布订阅模式有点像。2.要点①观察者模式使得我们可以独立地改变目标与观察者,从而使二者之间的关系松耦合。②观察者自己决定是否订阅通知,目标对象并不关注谁订阅了。③观察者不要依赖通知顺序,目标对象也不知道通知顺序。④常用在基于事件的ui框架中,也是 MVC .

2021-12-22 23:09:13 522

原创 设计模式——模板方法

文章目录一、基本知识1.定义2.要点二、结构图三、实例说明一、基本知识1.定义定义一个操作中的算法的骨架 ,而将一些步骤延迟到子类中。 Template Method使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。2.要点①最常用的设计模式,子类可以复写父类子流程,使父类的骨架流程丰富。②反向控制流程的典型应用。③父类 protected 保护子类需要复写的子流程,这样子类的子流程只能父类来调用。二、结构图三、实例说明实例:某个品牌动物园,有一套固定的表演流程,但.

2021-12-22 18:31:10 455

原创 设计模式——装饰器模式

文章目录一、基本知识1.定义2.背景示例3.要点二、结构图三、实例说明1.普通代码2.装饰器模式代码一、基本知识在我第一次接触装饰器模式的时候,将它和责任链模式分不开,但是事实上它们是有区别的。1.定义动态地给一个对象增加一些额外的职责。就增加功能而言,装饰器模式比生产子类更为灵活。2.背景示例普通员工有销售奖金,累计奖金,部门经理除此之外还有团队奖金;后面可能会添加环比增长奖金,同时可能针对不同的职位产生不同的奖金组合。3.要点①通过采用组合而非继承的手法, 装饰器模式实现了在运行时.

2021-12-22 02:07:11 478

原创 设计模式——责任链模式

文章目录一、基本概念1.定义4.类似背景举例3.要点二、结构图三、实例说明1.普通代码2.责任链代码一、基本概念1.定义使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递请求,直到有一个对象处理它为止。4.类似背景举例请求流程,1 天内需要主程序批准,3 天内需要项目经理批准,3 天以上需要老板批准;3.要点解耦请求方和处理方,请求方不知道请求是如何被处理,处理方的组成是由相互独立的子处理构成,子处理流程通过链表的方式连接,子处理.

2021-12-22 01:00:57 373

原创 C语言——逗号表达式

一、基本知识百度百科:“逗号表达式,是C语言中的逗号运算符,优先级别最低,它将两个及其以上的式子连接起来,从左往右逐个计算表达式,整个表达式的值为最后一个表达式的值。”总结基本规则:①逗号表达将两个及其以上的式子连接为一个表达式。②逗号表达式按照从左向右的顺序计算每个子表达式的值③逗号表达式的最后一个子表达式必须有返回值,因为整个表达式的值是最后一个子表达式的值。其余子表达式可以没有返回值。二、示例演示1.示例一int main(){ int a = (1 * 2, 2 * 3, 3 *

2021-12-20 18:42:20 19485 4

原创 C++——可变模板参数

声明:由于对可变模板参数了解资源有限,以下有些观点仅为个人参考手册实践得出的,不要被我个人的观点误导。文章目录一.基本语法知识1.基本知识2.基本语法二.基本使用方法1.基本演示2.参数展开一.基本语法知识1.基本知识C++11的新特性–可变模版参数(variadic templates)是C++11新增的最强大的特性之一,它对参数进行了高度泛化,它能表示0到任意个数、任意类型的参数。2.基本语法template <class... T>void f(T... args);

2021-12-20 17:51:04 1424

原创 Lua——函数

文章目录一、基本知识二、函数定义1.基本语法2.示例演示三、返回值四、参数一、基本知识Lua 提供了许多的内建函数,你可以很方便的在程序中调用它们,如print()函数可以将传入的参数打印在控制台上。Lua 函数主要有两种用途:1.完成指定的任务,这种情况下函数作为调用语句使用;2.计算并返回值,这种情况下函数作为赋值语句的表达式使用。其实和其他语言的函数功能一样,但是感觉Lua的返回值和参数更灵敏,因为可以多返回值和可变参数。二、函数定义1.基本语法optional_function.

2021-12-17 12:35:51 1326

原创 Lua——运算符

文章目录一、算术运算符1.算术运算符表2.注意事项二、关系运算符三、逻辑运算符1.逻辑运算符表2.判断真假注意事项四、其他运算符1.运算符表2.演示示例一、算术运算符1.算术运算符表下表列出了 Lua 语言中的常用算术运算符,设定 A 的值为10,B 的值为 20:2.注意事项Lua语言里的运算符和平时的运算符认知没有什么差别,但是有两点需要注意。(1)Lua语言里没有++或者–和 -= 或者+=这种运算符。(2)Lua的数据类型number是具有双精度的。所以5/2运算出来是2.5,而.

2021-12-17 11:15:37 5152

原创 Lua——循环和流程控制(if,for,while,break,goto,repeat...until)

文章目录一、if语句1.基本语法知识2.演示示例二、循环语句1.while循环2.for循环3.repeadt...until循环一、if语句1.基本语法知识if语句要注意,在Lua里面0为true,其他为假语法为:if("条件")then "操作语句"elseif(条件)then "操作语句"else "操作语句"end2.演示示例示例:if(0)then print("0为true")else print("0为false")en.

2021-12-16 17:58:10 4454

原创 Lua——table(表)的使用

文章目录一、基本知识二、table的构造1.使用步骤2.示例演示三、table的操作1.操作语法2.示例演示一、基本知识(1)table 是 Lua 的一种数据结构用来帮助我们创建不同的数据类型,如:数组、字典等。(2)Lua table 使用关联型数组,可以用任意类型的值来作数组的索引,但这个值不能是 nil。(3)Lua table 是不固定大小的,你可以根据自己需要进行扩容。(4)Lua也是通过table来解决模块、包和对象的。 例如string.format表示使用"format"来索.

2021-12-16 16:06:25 6078

原创 Lua——基本语法知识,从hello word开始

文章目录一、hello word三、关键字二、数据类型1.基本知识2.示例说明三、变量1.基本知识2.示例演示一、hello word程序:print("hello lua!")print("hello world!")--"这是行注释"--[["这是多行注释"print("这条语句打印不出来")--]]运行结果:Lua中的注释表示如下:--单行注释--[[多行注释多行注释--]]三、关键字以下为Lua中的关键字,跟C语言中的差不多,保留关键字不能作为常.

2021-12-15 12:55:19 1008

原创 C++四种类型强制转换——const_cast、static_cast、dynamic_cast、reinterpret_cast

文章目录一、const_cast1.基本知识2.示例演示二、static_cast1.基本知识2.示例演示三、dynamic_cast1.基本知识2.示例演示四、reinterpret_cast1.基本知识2.示例演示一、const_cast1.基本知识(1)const_cast只针对指针、引用,当然,this指针也是其中之一。(2)const_cast的大部分使用主要是将常量指针转换为常指针。常量指针指向的空间的内容不允许被修改,但是使用const_cast进行强制转换就可以修改。(3)co.

2021-12-14 18:07:07 13014 2

原创 Shell——常用工具(cut、sed、awk、sort)

文章目录一、cut1.基本用法2.示例演示二、sed1.基本用法2.示例演示三、awk1.基本用法2.示例演示四、sort1.基本用法2.示例演示一、cut1.基本用法cut的工作就是“剪”,具体的说就是在文件中负责剪切数据用的。cut 命令从文件的每一行剪切字节、字符和字段并将这些字节、字符和字段输出。cut [选项参数] filename说明:默认分隔符是制表符选项参数功能-f列号,提取第几列-d分隔符,按照指定分隔符分割列2.示例演示二、sed.

2021-12-14 01:46:20 1127

原创 Shell——read读取控制台输入和函数

文章目录一、read读取控制台输入1.基本语法2.示例演示二、系统函数1.basename2.dirname三、自定义函数1.基本语法2.经验技巧3.示例演示一、read读取控制台输入1.基本语法read+选项+参数选项:-p:指定读取值时的提示符;-t:指定读取值时等待的时间(秒)。参数:变量:指定读取值的变量名2.示例演示#!/bin/bashread -t 5 -p "请在5秒内输入一个整数" digitecho $digit运行结果:二、系统函数1.basen.

2021-12-13 20:15:21 708

原创 Shell——流程控制(if、case、for、while)

文章目录一、if语句1.基本语法2.注意事项3.示例演示三、case语句1.基本语法2.注意事项3.示例演示二、for循环1.基本语法2.示例演示四、while循环1.基本语法2.示例演示一、if语句1.基本语法语法①:if [ condition ];then程序fi语法②:if [ 条件判断式 ]then程序fi2.注意事项(1)[ condition ],中括号和条件判断式之间必须有空格(2)if后要有空格3.示例演示#!/bin/bashif [ $1 -lt

2021-12-13 17:46:01 1054

原创 Shell——运算符和条件判断

文章目录一、运算符1.基本语法2.示例演示二、条件判断1.基本语法2.常用判断条件3.示例演示一、运算符1.基本语法(1)“$ ((运算式))”或“$ [运算式]”(2)expr + , - , \ *, /, % 加,减,乘,除,取余注意:expr运算符间要有空格2.示例演示下面是简单的加法,注意第一个错误,因为运算符前后必须要有空格。如果是 $ (())类型或者$ []类型,那么运算符前后有无空格都不影响。再来看看复杂一点的运算:注意,使用$[]方式进行运算时,乘法号为

2021-12-13 14:22:33 468

原创 Shell——变量

文章目录一、系统变量1.常用系统变量2.操作演示二、自定义变量1.基本知识2.变量分类三、特殊变量1.$n2.$#3. $ *、$@4. $?一、系统变量1.常用系统变量$HOME $PWD $SHELL $USER2.操作演示至于用不用双引号将系统变量引起来,按照个人习惯,给变量赋值的时候尽量用双引号,打印的时候一般不用双引号。二、自定义变量1.基本知识(1)等号前后不能有空格(2)在bash中,变量默认类型都是字符串类型,无法直接进行数值运算(3)变量的值如果有空格,需要用.

2021-12-13 13:35:52 1248

原创 Shell——从hello world和echo命令开始

一、第一个Shell程序万物起源——helloworld#!/bin/bashecho "hellow world" 常用的Linux命令对于shell来说也可以使用,比如我们想要在当前shell目录下创建一个xiaomeng.txt文档,然后输入进去一些字符串:#!/bin/bashtouch xiaomeng.txt #创建xiaomeng.txt文档echo "我爱编程">>xiaomeng.txt#将“我爱编程”输入到xiaomeng.txt文档中在she

2021-12-13 09:49:40 3070

原创 计算机操作系统——进程调度算法

文章目录一、轮转调度算法二、优先级调度算法三、多队列调度算法四、多级反馈队列调度算法五、基于公平原则的调度算法一、轮转调度算法二、优先级调度算法三、多队列调度算法四、多级反馈队列调度算法五、基于公平原则的调度算法...

2021-12-13 00:36:54 3044

原创 计算机操作系统——作业调度算法

文章目录一、作业的基本知识1.作业和作业步2.作业运行的三个阶段二、先来先服务(FCFS)调度算法1.算法思想2.算法评价三、短作业优先(SJF)调度算法1.算法思想2.算法评价四、优先级调度算法(PSA)1.算法思想2.算法评价五、高响应比优先调度算法(HRRN)一、作业的基本知识1.作业和作业步(1)作业:作业是一个比程序更为广泛的概念,包含通常的程序和数据,还有一份作业说明书。系统根据该说明书来对程序的运行进行控制。(2)作业步:在作业运行期间,每个作业都必须经过若干个相对独立,又相互关联.

2021-12-12 00:01:05 3203

原创 计算机操作系统——页面置换算法

声明:本篇博客参考书籍《计算机操作系统》(西安电子科技大学出版社)文章目录一、最佳页面置换算法1、基本知识2、算法思想二、先进先出(FIFO)页面置换算法1、基本知识2、算法思想三、最近最久未使用(LRU)页面置换算法1、基本知识2、算法思想3、硬件支持四、最少使用(LFU)页面置换算法1、基本知识2、算法思想五、Clock页面置换算法1、基本知识2、算法思想3、改进型Clock置换算法六、页面缓冲(PBA)算法1、基本知识2、算法思想首先说说影响页面换进换出的效率的几个因素:(1)页面置换算法

2021-12-11 16:10:50 13662 4

原创 Linux基本信号的使用

文章目录一、信号的基本概念1.基本信号对应的响应2.信号的值在系统源码中的宏定义二、信号响应方式的修改-signal()1.signal()函数2.signal()函数的使用三、发送信号-kill()1.kill函数原型![在这里插入图片描述](https://img-blog.csdnimg.cn/ae615cb72a5b4adaa21096b849771d0f.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1.

2021-12-02 00:41:47 1825

原创 计算机网络——HTTP协议和Web

文章目录一.基本知识二.非持续连接与持续链接1.采用持续连接的HTTP2.采用非持续连接的HTTP三.HTTP报文格式1.请求报文2.应答报文五.cookie六.Web缓存1.基本概念2.缓存器的作用3.条件Get4.Web缓存器效率分析查看优秀博客HTTPS协议的介绍及与HTTP协议的区别声明:本篇博客参考了书籍《计算机网络自顶向下》和部分优秀博客一.基本知识(1)Web(World Wide Web的缩写),意味全球广域网,也称为万维网,是一种全球性的、动态交互的、跨平台的分布式图形信息系..

2021-11-14 18:51:27 3474

原创 递归算法——汉诺塔问题

一年前,老师用斐波那契数列引领我走进递归的殿堂,同一天,用汉诺塔扼杀了我对递归的好感。。。。。。今天翻开算法书本来想看看有哪些经典问题被遗漏时,看到了这个汉诺塔,我才想起来当初老师讲这个问题的时候我没听懂,问题被搁置了,今天看见我才想起来,对于现在的我肯定没什么挑战,但是当初刚学递归的时候,真被它弄傻了。看一下题目吧:总的来说就是最终将所有圆盘都移动到c上面。移动过程中大圆盘不能在小圆盘上面,每次只能移动一个圆盘。思考一下,将所有圆盘都移动到c上面,那么肯定需要将[1,n-1]圆盘都移动到b上面,

2021-11-05 16:24:36 290

原创 排序算法——拓扑排序(卡恩算法(广度优先)、dfs+深度搜索算法)

文章目录前言一、拓扑排序规则二、卡恩算法实现1.卡恩算法思想2.代码实现三、dfs+深度优先1.算法思想2.代码实现总结前言本篇博客主要记录拓扑排序的实现。包括卡恩算法实现和dfs+深度搜索算法实现。其实这两个算法本质分别是广度优先搜索和深度优先搜索。一、拓扑排序规则首先知道入度和出度的概念,箭头指向本顶点,则本顶点的入度就+1,箭头指出。则出度+1。拓扑排序即把出度为0的结点一个一个找出来,看下例子就知道了:上图中1入度为0,所以1排在前面,此时拓扑排序为{1},将1指出去的箭头都擦去,.

2021-11-05 13:44:03 6206 1

原创 设计模式——单例模式(懒汉模式,饿汉模式)

声明: 本博客参考C语言中文网和优秀博客总结得出:(1)C语言中文网链接(2)优秀博客链接单例模式的定义: 指一个类只有一个实例,且该类能自行创建这个实例的一种模式。例如,Windows 中只能打开一个任务管理器,这样可以避免因打开多个任务管理器窗口而造成内存资源的浪费,或出现各个窗口显示内容的不一致等错误。在计算机系统中,还有 Windows 的回收站、操作系统中的文件系统、多线程中的线程池、打印机的后台处理服务、应用程序中的对话框、系统中的缓存等常常被设计成单例。单例模式在现实生活中的应用也非

2021-10-30 00:40:29 678

原创 设计模式——工厂模式(简单工厂模式、工厂方法模式、抽象工厂模式)

声明: 本博客名词定义等内容和图多是参考C语言中文网。主要记录学习以下内容:一、简单工厂模式二、工厂方法模式三、抽象工厂模式工厂模式的定义:定义一个创建产品对象的工厂接口,将产品对象的实际创建工作放到具体子工厂类当中。这满足创建型模式中所要求的“创建与使用相分离”的特点。按实际业务场景划分,工厂模式有 3 种不同的实现方式,分别是简单工厂模式、工厂方法模式和抽象工厂模式。一、简单工厂模式1.与简单工厂模式有关的基本概念我们把被创建的对象称为“产品”,把创建产品的对象称为“工厂”。如果要创建

2021-10-29 01:15:37 1469

原创 C++智能指针的使用和仿写(auto_ptr、unique_ptr、shared_ptr、weak_ptr)(详解)

智能指针的使用和仿写本博客主要记录以下内容:1.auto_ptr(包括使用讲解和仿写)2.unique_ptr(包括使用讲解和仿写)3.shared_ptr(包括使用讲解和仿写)4.weak_ptr(包括使用讲解和仿写)

2021-10-26 12:48:57 422

原创 单链表——单链表逆置(不带头结点)

本博客主要记录两种解决方法(1)三指针(3)双指针(三指针优化)(2)双指针之头插法思想一、三指针思想:p1主要指向前面的一个结点p2指向中间的结点p2->next = p1;p3指向后面的一个结点,p3主要作用是当p2指向改变之后,p2结点的后面的结点如果不用一个指针指向的话,就找不到了。代码:void Reserve(ListNode*& head){ if (head == NULL || head->next == NULL) return; p1 =

2021-10-24 18:51:07 3453 5

原创 单链表——判断两个单链表(无头节点)是否相交,如果相交,返回单链表的第一个结点

本博客主要记录两个解法:1.求两个单链表的节点个数,消除结点个数不同带来的影响,两个指针一起走,相遇即相交点。2.数学方式求解。一、求结点个数,消除结点个数不同带来的影响,俩指针同步走思路:两个单链表相从相交的第一个结点开始,后面的结点都共享,所以两个单链表的节点个数之差就是相交的结点之前,两个单链表的结点个数之差,我们只需要将两个单链表结点个数之差算出来,然后消除结点个数不同带来的影响,让p1和p2同时向后走,那么相遇的时候,即相交的第一个结点,如下图:p1和p2分别从两个单链表的如下位置同时

2021-10-24 18:21:35 1910

空空如也

空空如也

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

TA关注的人

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