自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(32)
  • 问答 (1)
  • 收藏
  • 关注

原创 设计模式之【单例模式】

单例模式的学习,实际代码的实现与思考

2021-06-01 00:08:06 467

原创 操作系统总结系列之【内存管理】

目录虚拟内存whatwhyhow内存管理方式内存碎片段式管理计算公式例子特点页式管理计算公式例子特点多级页表为什么不分级的页表就做不到这样节约内存呢?TLB快表段页式管理参考谈到内存管理,首先要了解什么是操作系统的虚拟内存虚拟内存 what 最早接触到虚拟内存是上初中时候用大屁股台式机打游戏,那个时候什么游戏都喜欢玩,最经常干的事情就是一边挂着RPG游戏自动打怪刷材料,一边打CS或者lol那个时候的电脑物理内存

2021-04-25 21:48:05 1255

原创 C++高性能服务器开发基础系列之【线程池】

线程池what一种多线程的使用和管理模式,大多用于高并发服务器上,能够合理有效地利用多线程模型高并发服务器上的资源,多用于linux高并发服务器的场景下,与epoll模型结合使用。why服务器角度:解决多线程维护的问题。分为两方面,线程创建数量控制与线程资源的复用。在数量控制方面,线程过多会带来调度的额外开销,在线程池中通过主控线程可以合理维护线程数量;在线程资源的复用方面,避免了处理短时间任务时频繁创建销毁线程的消耗,处理完成任务后回归线程池,通过主控线程管理,充分利用内核资源。 ...

2021-02-01 21:12:01 1673 2

原创 C++基础总结系列之【智能指针】

目录智能指针whatwhyhowauto_ptrunique_ptrshared_ptrweak_ptr智能指针what在C++中,对动态内存的管理是通过new和delete完成的,在使用时极其容易出现问题,因为确保在正确的时间释放内存是很难的,有时忘记释放内存,就会产生内存泄漏,有时在尚有指针引用内存的情况下就释放了内存,就会产生引用非法内存的指针的情况。为了更安全地使用动态内存,C++新标准库提供了智能指针来管理动态对象,它的行为类似于常规指针,重要的区别是它

2021-01-28 21:57:25 323

原创 Redis实战学习之【string】

Redis中string类型的实战学习

2021-06-03 15:39:36 289

原创 LRU缓存机制

LRU缓存机制的简单实现

2021-05-23 10:49:19 1980

原创 二分查找专题

二分查找专题

2021-05-21 13:17:21 190

原创 C++高性能服务器开发总结系列之【Linux网络IO模型——多路I/O转接】

由于select、poll模型比较久远且应用场景较少,只简要介绍其优缺点,对epoll进行详细的分析。多路I/O转接多路I/O转接(复用),顾名思义,将I/O请求转接给内核管理,借助内核来替服务器监视有无客户端的连接请求,当有客户端的连接请求时,再经linux下select、poll、epoll的多路I/O复用接口转接给服务器端处理,可以提高服务器的性能。select阻塞等待文件描述符上发生的事件,通过内核帮助监听,返回就绪文件描述符个数。优点:跨平台性:可跨平台缺点:最...

2021-05-14 11:15:38 393

原创 反转、合并链表操作合集

链表合集

2021-05-08 10:28:48 209

原创 音视频基础学习之【08.添加播放列表】

为播放器添加播放列表

2021-04-21 20:03:51 745 1

原创 音视频基础学习之【07.仿优酷界面的UI设计】

界面设计 QScrollArea QScrollArea滚动区域的使用添加一个scrollArea,里面会附带一个QWidget,开始时怎么弄都不显示滚动条在网上查询了很多资料,才知道里面附带的QWidget的大小大于scrollArea时,才会出现滚动条例如我这里设计的scrollArea的大小为170*695,里面的scrollAreaWidgetContents设置为145*1000才会显示垂直滚动条 添加地方电视台 通过添加QPushButton实现,每个按键都有

2021-04-21 19:58:59 372

原创 音视频基础学习之【06.播放跳转】

播放跳转在解码线程类中添加跳转的控制标志,记录是否需要跳转,在读取视频文件的线程中判断此变量,当需要跳转的时候就执行跳转操作跳转操作可以直接使用 FFMPEG 的跳转函数 av_seek_frame 来实现函数原型如下: int av_seek_frame(AVFormatContext *s, int stream_index, int64_t timestamp,int flags); 首先添加状态位 //==========================跳转控制==...

2021-04-12 10:11:39 1106

原创 音视频基础学习之【05.添加播放控制】

目录播放器播放控制添加界面设计暂停停止主线程具体操作视频解码线程具体操作音频解码函数具体操作ui界面控制操作播放器播放控制添加 界面设计 仿优酷的界面设计,资源都是自己在优酷客户端上截取处理的,暂时没有对界面进行优化 暂停 在decode类中添加播放控制状态,考虑到后续的复用性,可以拷贝到其它地方直接使用,在这个类中不对ui进行设置,只更改状态使用枚举类型代表播放、暂停、停止三个状态添加播放控制函数不要忘记在构造函数中.

2021-04-09 22:15:47 342

原创 数据库基础系列之【事务与并发一致性问题】

事务 概念 事务指的是一组操作的集合,事务的产生,其实是为了当应用程序访问数据库的时候,简化我们的编程模型,不需要我们去考虑各种各样的潜在错误和并发问题当我们使用事务时,要么提交,要么回滚,我们不会去考虑网络异常了,服务器宕机了,同时更改一个数据怎么去处理它 特性 事务操作的正确性,通过以下几个特性来保障特性 描述 原子性 事务不可再分,要么全提交,要么全回滚 隔离性 两个事务操作的结果在未提交前互相不可见 持久性 即使发生故障导致数据

2021-04-09 15:30:31 466

原创 音视频基础学习之【04.音视频同步优化方案】

目录音视频同步的几种方案各个方案的比较视频时钟的计算方式音频时钟的计算方式视频同步到音频时钟的方法参考音视频同步的几种方案音频同步到视频 视频同步到音频 音视频都同步到外部时钟各个方案的比较第一种方案,势必会出现音频的卡顿或加速,非常影响观感体验第二种方案比第一种更加合理,因为音频一般和外部时钟是相同的,而且考虑到人对声音的敏感度要强于视频,所以一般会以音频时钟为参考时钟,视频同步到音频上第三种方案,通常在播放网络流或者视频源没有音频时钟的情况下使用,是更加

2021-04-08 12:13:37 358

原创 音视频基础学习之【03.ffmpeg+SDL实现音频播放demo】

前两篇文章仅仅说了视频播放,而没有加入音频,而本篇将加入音频的内容,通过ffmpeg解码音频,SDL实现音频播放

2021-04-05 18:22:44 550

原创 音视频基础学习之【02.简单时钟同步实现】

目录I帧/P帧/B帧PTS与DTS——显示时间戳与解码时间戳时间基以谁为标准进行同步?简单时钟同步原理具体实现

2021-04-03 23:22:27 899

原创 音视频基础学习之【01.基于ffmpeg的简单播放器demo实现】

最近在学习音视频基础知识,在这里感谢雷神留下的一系列指引新手入门的宝贵资源,虽然他英年早逝,但他的硕果永存。不由感慨真是天妒英才,愿雷神在天堂安好附上学习资料地址:雷霄骅(leixiaohua1020)的专栏选择学习ffmpeg的原因是,它具有跨平台特性,Windows、Linux、Aandroid、IOS 这些主流系统可以通吃而且它非常全能,从从视频采集、视频编码 到视频传输都可以直接使用ffmpeg完成,有雷神留下的学习资料加持,学习起来自然是事半功倍。下面简单记录一下自己使用Qt来做图

2021-04-03 20:09:31 804 4

原创 C++基础总结系列之【构造函数】

目录特点作用分类调用规则是否自定义构造函数自定义的构造函数是否有参数是否自定义拷贝构造函数初始化列表作用必须使用初始化列表的情况解释一下对象成员为什么必须要在初始化列表中初始化使用初始化列表的原因用构造函数初始化用初始化列表初始化初始化列表的执行顺序拷贝构造函数调用时机初始化值传递值返回浅拷贝与深拷贝解决办法特点没有返回值,函数名与类名相同,可以有重载,只调用一次作用用于在创建对象时,给对象...

2021-03-22 20:42:20 268

原创 C++基础总结系列之【内存结构】

目录内存分区内存图内存四区栈区堆区数据区代码区堆与栈的区别动态内存管理malloc、calloc、reallocnew/deletenew和malloc的区别智能指针内存对齐whatwhy没有内存对齐机制引入内存对齐机制how对齐系数有效对齐值(对齐单位)结构体内存对齐规则类内存对齐规则常见的内存错误(如何避免内存泄漏)内存分区 内存图 内存四区 栈区作用:保存局部变量、函数调用参数

2021-03-19 20:51:35 1965

原创 计算机网络总结系列之【http/https协议】

http——超文本传输协议(HyperText Transfer Protocol)简介超文本传输协议,顾名思义,分为3个部分:超文本、传输、协议超文本:是文字、图片、视频等的混合体——最关键是有超链接,即能从一个超文本跳转到另外一个超文本传输:专门用来在两点(服务器-浏览器、服务器-服务器)之间双向传输数据协议:各种控制和错误处理方式的行为约定和规范因此,http是一个在计算机世界里专门在「两点」之间「传输」文字、图片、音频、视频等「超文本」数据的「约定和规范」http首部格式

2021-03-19 17:08:39 279

原创 C++STL学习总结系列之【序列式容器——vector】

目录特点vector的数据结构例子vector的构造函数1.不带参数的构造函数2.默认的拷贝构造函数3.创建一个有n 个对象的 vector4.创建一个包含从 start 到 end 之间的所有元素的 vector5.利用数组创建vectorvector操作的内存管理push_backpop_backerase特点其操作方式与C++中的数组array类似,但两者的区别在于空间运用的灵活性1.array是静态空间,一旦配置就不能再改变大小2.

2021-03-11 15:15:15 475

原创 计算机网络总结系列之【TCP/UDP协议】

简介在计算机网络中,网络层把分组发送到目的主机,但真正通信的并不是主机,而是主机中的进程。传输层提供了进程间的逻辑通信,向高层用户屏蔽了下面网络层的细节,使得应用程序看起来像是有一条端到端的逻辑通信信道。而TCP/UDP协议是传输层最重要的两种协议,提供了应用程序间的通信,它负责数据从发送端到接收端的信息流格式化和保证可靠传输。UDP——用户数据报协议(User Datagram Protocol)特点 面向无连接 不需要和 TCP一样在发送数据前进行三次握手建立连接的,想发数

2021-03-10 20:26:35 1177

原创 计算机网络总结系列之【OSI七层模型/TCP/IP四层模型/五层模型】

分层结构各层作用各层协议

2021-03-08 21:52:12 225

原创 计算机网络总结系列之【子网掩码】

what要理解子网掩码,首先要知道IP地址的构成,即:网络号+主机号子网划分,A、B、C、D、E五种IP地址:子网掩码用来指明一个IP地址的哪些位标识的是主机所在的网络号,以及哪些位标识的是主机的位掩码,它不能单独存在需要结合IP地址使用,将IP地址划分为网络地址+主机地址两个部分 通过子网掩码,就可以判断两个IP在不在一个局域网内部 子网掩码可以看出有多少位是网络号,有多少位是主机号 概念 特征 网络范围 默认掩码 A类地址 第1个8位中

2021-03-06 22:10:43 3748 1

原创 操作系统总结系列之【死锁】

目录死锁whatwhy形成原因:产生死锁的四个必要条件:how预防死锁避免死锁检测死锁解除死锁(恢复)参考《操作系统精髓与设计原理》死锁what多进程(线程)在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外部介入,它们都将无限等待下去。why形成原因:客观因素,系统资源不足,如:两个进程都申请内存资源;主观因素,进程(线程)执行顺序不当、资源分配不当。产生死锁的四个必要条件:互斥:任意时刻一个资源只能给一个进程使用;

2021-02-05 19:42:50 347

原创 C++基础总结系列之【模板】

目录模板whatwhyhow本文仅对模板的一些概念及基本用法做总结供初学者参考及复习,大神勿喷......模板what对于重载机制而言,C++能够通过函数的不同参数以及所属类不同正确调用重载函数。但当面对重载函数只有参数类型不同,其他代码都相同时,需要一种机制增强它的复用性,使得变量类型也参数化,因而引入模板。可以理解为定义一个公共的需求,比如word文档的模板,定义了大家都有可能用到的样式,C++的模板也就是定义一个公共的模块,把一些类似的功能的模块归类..

2021-01-28 09:47:33 142

原创 操作系统总结系列之【线程同步】

目录1.线程同步whatwhy举例how互斥量(互斥锁)读写锁条件变量信号量(信号灯)2.总结几种线程同步方式的总结:本文针对linux系统的线程同步机制做出总结,如有理解错误之处或需要优化的地方望请指出,感谢。1.线程同步 what 多线程通过特定的方式来控制线程之间执行的顺序。 why 产生原因:多线程访问共享数据时,可能发生冲突。举例两个线程操作同一个变量,分为三个步骤:从内存读变量到寄存器、寄存器中赋值、将寄存器值写回内

2021-01-26 20:57:32 714

原创 C++STL学习总结系列之【1.空间配置器】

1.空间配置器1.1what空间配置器,顾名思义就是为各个容器高效管理空间(空间的申请与回收)的,在默默地工作。虽然在常规使用STL时,可能用不到它,但站在学习研究的角度,学习它的实现原理对我们有很大的帮助。1.2why当我们自己动手实现vector、list、map、unordered_map等容器时,所有需要的内存空间都是通过malloc或new申请的,虽然代码可以正常运行,但是有以下不足之处:内存泄漏:堆区空间申请与释放需要程序员自己管理; 内存碎片:频繁申请小块内存会产生外

2021-01-23 19:37:34 277 2

原创 Leetcode.202题:反转链表

一、问题描述:Reverse a singly linked list.Example:Input: 1->2->3->4->5->NULLOutput: 5->4->3->2->1->NULL二、问题思考:方法一:三指针遍历以cur->next为基准,当cur->nex...

2019-11-26 14:07:58 171

原创 Leetcode.88题:归并有序数组

一、问题描述:Given two sorted integer arraysnums1andnums2, mergenums2intonums1as one sorted array.Note:The number of elements initialized innums1andnums2aremandnrespectively. You may a...

2019-10-03 09:14:42 356

原创 Linux环境下进程基本概念复习

一、进程地址空间概述 图1-1 虚拟地址空间内存布局图1-1是描述linux虚拟地址空间的大致内存布局,地址空间大小为4G,0-3G内存为用户空间,3-4G空间为内核空间,一个进程只能读写用户空间,而不能对内核空间进行操作,内核空间是可以被多...

2019-09-24 10:30:58 194

空空如也

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

TA关注的人

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