自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(87)
  • 资源 (11)
  • 收藏
  • 关注

原创 设计模式-备忘录模式(C++)

备忘录模式(Memento Pattern)是一种设计模式,用于在不破坏对象封装的情况下,捕获和保存对象的内部状态,并在需要时恢复到之前的状态。对象并保存了原发器的状态。接下来,改变了原发器的状态,并打印当前状态。最后,通过恢复备忘录,将原发器的状态恢复到之前保存的状态,并再次打印。函数中,我们首先创建了一个。

2024-02-27 17:22:31 403

原创 设计模式-桥接模式(C++)

这是一个简单的桥接模式的实现示例,其中抽象类AbstractClass定义了抽象部分的接口,而具体实现类ConcreteClassA和ConcreteClassB分别实现了这个接口。2. 定义实现类(或具体类):然后,定义一个实现类(或具体类),该类将实现抽象部分的接口。1. 定义抽象类(或接口):首先,定义一个抽象类(或接口),该类将定义抽象部分的接口。4. 使用桥接模式:在客户端代码中,可以通过创建抽象类的对象,并将其与具体实现类对象进行桥接,从而实现抽象部分和实现部分的解耦。

2024-02-27 10:42:12 416

原创 设计模式-工厂方法模式(C++)

简述工厂方法模式(Factory Method Pattern)是一种常用的对象创建型设计模式,此模式的核心思想是封装类中不变的部分,提取其中个性化善变的部分为独立类,通过依赖注入以达到解耦、复用以及方便后期维护拓展的目的模式结构UML结构图:// product.h#ifndef PRODUCT_H#define PRODUCT_H#include <string>using namespace std;// 汽车接口class ICar{.

2024-02-23 14:30:52 486

原创 设计模式-抽象工厂模式(C++)

通过抽象工厂模式,我们将产品的创建和使用分离,使得系统更加灵活和可扩展。当需要添加新的产品或工厂时,只需要添加相应的具体类并在工厂中进行实现,而不需要修改现有代码的其他部分。抽象工厂模式是一种设计模式,它提供了一个接口来创建一系列相关或相互依赖的对象,而无需指定它们具体的类。继承自抽象产品类,并实现了具体的功能。继承自抽象工厂类,并用于创建相应的具体产品。最后,我们使用这些产品对象执行相应的操作。函数中,我们创建了两个具体工厂对象。,然后通过它们创建了具体的产品对象。在上述示例中,我们定义了抽象产品。

2024-02-23 11:37:35 448

原创 设计模式-原型模式

原型模式(Prototype Pattern)是一种创建对象的设计模式,它通过复制已有对象来创建新的对象,而不是通过传统的新建对象方式。这只是一个简单的示例,实际应用中可能需要根据具体需求进行更多的功能扩展和优化。通过这种方式,我们实现了原型模式,可以通过复制已有对象来快速创建新的对象,并且每个新对象都可以独立修改其属性。最后,打印出两个对象的数据,可以看到它们是独立的,具有各自的值。函数中,我们创建了一个具体的原型对象。在上述示例中,我们定义了一个抽象的。方法复制原型对象,得到了新的对象。

2024-02-22 11:24:37 583

原创 设计模式-代理模式

需要注意的是,这只是一个简单的代理模式示例,实际应用中可能需要根据具体需求进行更复杂的实现。代理模式可以应用于许多场景,如远程代理、虚拟代理、保护代理等。根据具体的情况,代理类可能还需要处理异常、进行性能优化等。方法,在方法调用前后添加了额外的处理逻辑。这样,通过使用代理对象,我们可以在不修改真实对象的情况下,添加一些通用的功能或逻辑。中的实现通常通过创建一个代理类来控制对真实对象的访问。代理类可以在访问真实对象之前或之后添加额外的功能,例如。类表示真实的对象,它有一个。现在,我们创建一个代理类。

2024-02-21 16:39:35 597

原创 webrtc 中 FIR PLI 有何区别? 分别适用于什么场景

FIR是一种请求全关键帧的控制消息。当接收端需要一个关键帧来进行解码时,它可以发送一个FIR消息给发送端,请求发送端发送一个关键帧。当接收端检测到图像丢失或者解码错误时,它可以发送一个PLI消息给发送端,请求发送端重新发送该图像。PLI消息通常用于恢复丢失的非关键帧,因为非关键帧的丢失对视频质量的影响较小。- PLI用于请求发送端重新发送一个丢失的图像,适用于接收端检测到图像丢失或者解码错误的情况。- FIR用于请求发送端发送一个关键帧,适用于接收端需要关键帧进行解码的情况。

2024-02-20 11:31:59 450

原创 WebRTC 中带宽估计与拥塞控制算法

BBR 使用其模型寻找具有高吞吐量的操作点和低延迟,以在最佳工作点附近工作,系统需要保持两个条件:Rate Balance(最大发送速率)和 Full Pipe(BDP = BBR.BtlBw * BBR.RTprop)。:基于丢包的带宽估计,其基本思想是根据丢包的多少来判断网络的拥塞程度。丢包越多则认为网络越拥塞,发送速率就需要降低;基于发送端的延迟算法,也是利用区间延迟值,通过 TrendLine 滤波器(最小二乘法滤波器),通过斜率的增加或者减小来判断当前网络的拥塞状况。

2024-02-19 17:07:44 269

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

在这个示例中,Subject(主题)维护了一个Observer(观察者)的列表,可以动态添加和删除观察者。Observer定义了一个纯虚函数update,具体的观察者类ConcreteObserver实现了update方法,在update方法中定义了具体的更新逻辑。在C++中,观察者模式(Observer Pattern)是一种行为设计模式,用于定义对象之间的一对多依赖关系,当一个对象的状态发生变化时,所有依赖它的对象都将得到通知并自动更新。观察者模式在C++中常用于实现异步消息通知、事件处理等场景。

2024-02-19 16:26:37 546

原创 简单介绍一下WebRTC中NACK机制

WebRTC中的NACK(Negative Acknowledgement)是一种用于实时通信的网络协议,用于在传输过程中检测和纠正丢包。当接收方检测到数据包丢失时,它会发送一个NACK消息给发送方,请求重新发送丢失的数据包。2. 如果发现有丢失的数据包,接收方会发送一个NACK消息给发送方,指示需要重新发送丢失的数据包。4. 接收方在收到重新发送的数据包后,会将其插入正确的顺序中,以恢复丢失的数据。3. 发送方收到NACK消息后,会根据接收方请求重新发送丢失的数据包。

2024-02-19 11:39:30 342

原创 C++ 使用多态有哪些好处

当你需要添加新的子类时,不需要修改现有的代码,只需要在新子类中实现相应的方法即可。2. 更好的代码重用性:多态允许你使用基类指针或引用来操作派生类对象,这意味着你可以编写通用的代码来处理不同类型的对象,从而提高代码的重用性。5. 更好的灵活性:多态使得你能够根据具体情况选择不同的实现方式,而不需要拘泥于固定的实现。这在处理复杂问题时非常有用。总的来说,多态是 C++ 面向对象编程的重要特性之一,它提供了更好的代码可扩展性、重用性、灵活性和维护性,使得编写更加健壮和灵活的程序成为可能。

2024-02-04 16:01:51 450 1

原创 Epoll底层原理

Epoll 是 Linux 内核提供的一种 I/O 事件通知机制,通过在用户态和内核态之间建立一个数据结构,使得用户态程序可以在内核态中注册感兴趣的事件,当事件发生时,内核会通知用户态程序。Epoll 采用了“事件驱动”的方式,只在事件发生时才会通知用户态程序,避免了传统 I/O 事件通知机制中因轮询导致的效率低下问题。Epoll 通过使用“事件驱动”的方式,避免了传统 I/O 事件通知机制中因轮询导致的效率低下问题,提高了系统的性能和并发能力。当事件发生时,Epoll 对象会将该事件通知给用户态程序。

2024-02-04 15:27:34 372

原创 设计模式之-单例模式

单例模式确保一个类只有一个实例,并提供全局访问这个实例的方式。在上面的示例中,我们将构造函数、拷贝构造函数和赋值操作符都声明为私有的,这样就无法在外部直接创建。方法中,我们使用了静态局部变量的方式来创建单例对象,保证了在程序运行期间只会创建一个对象。

2024-02-02 15:28:04 738

原创 设计模式之-适配器模式

这个例子展示了适配器模式的基本结构,即通过创建一个适配器类来将适配者类的接口转换为目标抽象类的接口。最后,我们释放了内存。类,并在构造函数中接受一个。函数中,我们创建了一个。

2024-02-02 15:20:42 602

原创 webrtc mediasoup sctp 起什么作用? 用来传输什么数据

数据通道是一种双向的、可靠的、有序的、基于消息的传输通道,它允许应用程序在对等连接之间传输任意类型的数据。SCTP(Stream Control Transmission Protocol)是WebRTC中的一个传输协议,它在WebRTC中起到了重要的作用。因此,SCTP在WebRTC中扮演着传输数据通道的角色,用于可靠地传输应用程序的数据,实现实时通信功能。1. 可靠性:SCTP使用确认机制来确保数据的可靠传输,可以自动重传丢失的数据。5. 心跳检测:SCTP可以通过发送心跳包来检测连接的健康状态。

2024-02-02 11:38:36 762

原创 使用c++ 写一个快速排序算法

快速排序是一种常用且高效的排序算法,其基本思想是选择一个元素作为“基准”(pivot),然后将数组分成两部分,使得一部分的所有元素都比基准小,而另一部分的所有元素都比基准大。这个程序中,`quickSort`函数实现了快速排序算法。它接受一个整数数组(这里是一个`std::vector<int>`)以及要排序的区间的左右边界索引。程序的`main`函数中创建了一个示例数组,并对其进行排序,最后打印出排序后的数组。请注意,这个实现使用了简单的快速排序算法,其中基准总是选择为区间的第一个元素。

2024-02-01 20:56:25 144

原创 Android native层c++调用java层API

首先,定义一个Java类和你想要从本地代码调用的方法。

2024-02-01 20:49:04 296

原创 写一个C++工具类

2. 添加静态成员函数:在类中添加静态成员函数,这些函数将提供各种实用的功能。4. 提供头文件和源文件:将工具类的声明放在头文件中,并将实现放在源文件中。1. 定义类:首先,需要定义一个类来表示工具类。可以选择将其定义为静态类,这样就不需要创建对象来使用工具函数。C++工具类是一种封装了一组相关功能的类,用于提供常用的工具函数或方法。5. 编译和使用:将源文件编译为可执行文件或库文件,并在其他项目中使用该工具类。这是一个简单的C++工具类示例,你可以根据自己的需求扩展和修改工具类的功能。

2024-01-30 18:34:09 305

原创 Android studio 出现 Index is not created for `Stubs` 是什么原因?该怎么解决

点击菜单栏中的 “File”,选择 “Settings”。在弹出的窗口中,选择 “Appearance & Behavior”,然后选择 “System Settings”,再选择 “Importing”。点击菜单栏中的 “File”,选择 “Invalidate Caches / Restart”。关闭最近添加的插件:打开 Android Studio,点击菜单栏中的 “File”,选择 “Settings”。打开项目中的 “build.gradle” 文件,检查是否有任何错误或冲突的依赖项。

2024-01-29 13:15:57 502

原创 ijkj4a作用

ijkj4a的具体实现可以在ijkplayer-x86/src/main/jni/ijkmedia/ijkj4a/j4a/class/android/os/Build.c中找到。至于你提到的IjkMediaPlayer.native_profileBegin(“libijkplayer.so”)没有作用的问题,可能是因为该函数在你的代码中没有被正确使用或者没有被调用到。通过使用ijkj4a,开发人员可以更轻松地在JNI代码中调用Java方法,以及在Java代码中调用JNI函数。

2024-01-26 11:45:13 210

原创 sdl 与opengl 什么关系

SDL和OpenGL之间的关系是,SDL提供了创建窗口和处理输入等功能,而OpenGL则提供了绘制图形的功能。开发者可以使用SDL创建一个窗口,并使用OpenGL在该窗口中进行图形渲染。SDL(Simple DirectMedia Layer)是一个跨平台的多媒体库,用于处理音频、图形、输入和窗口管理等功能。它提供了一个简单的接口,使开发者能够方便地在不同平台上开发多媒体应用程序。OpenGL是一个用于渲染2D和3D图形的跨平台图形库。OpenGL可以与SDL一起使用,以在SDL创建的窗口中进行图形渲染。

2024-01-25 18:23:33 465

原创 LeetCode_C++_23_链表_难

【代码】LeetCode_C++_23_链表_难。

2023-06-28 16:55:13 64

原创 LeetCode_C++_21_链表_中

【代码】LeetCode_C++_21_链表_中。

2023-06-27 19:02:43 82

原创 LeetCode_C++_445_链表_中

【代码】LeetCode_C++_445_链表_中。

2023-06-26 18:20:17 80

原创 LeetCode_C++_2_链表_中

【代码】LeetCode_C++_2_链表_中。

2023-06-26 18:10:15 60

原创 LeetCode_C++_25_链表_中

【代码】LeetCode_C++_25_链表_中。

2023-06-26 16:11:33 42

原创 LeetCode_C++_92_链表_中

【代码】LeetCode_C++_92_链表_中。

2023-06-25 20:58:35 40

原创 LeetCode_C++_206_链表_中

【代码】LeetCode_C++_206_链表_中。

2023-06-25 18:36:27 60

原创 LeetCode_C++_24_链表&递归_中

【代码】LeetCode_C++_24_链表&递归_中。

2023-06-25 17:09:55 63

原创 LeetCode_C++_61_链表_中等

【代码】LeetCode_C++_61_链表_中等。

2023-06-25 16:19:20 42

原创 LeetCode_C++_19_链表_中等

【代码】LeetCode_C++_19_链表_中等。

2023-06-24 18:34:22 40

原创 LeetCode C++ 237 中等

【代码】LeetCode C++ 237 中等。

2023-06-23 23:43:00 39

原创 leetcode C++ 203 链表 简单

【代码】leetcode C++ 203 链表 简单。

2023-06-23 23:19:54 27

原创 LeetCode C++ 520

【代码】LeetCode C++ 520。

2023-06-23 15:30:41 32

原创 LeetCode C++ 453

【代码】LeetCode C++ 453。

2023-06-23 15:04:27 154

原创 LeetCode C++ 442

【代码】LeetCode C++ 442。

2023-06-23 14:29:25 38

原创 剑指offer C++ 58-II

【代码】剑指offer C++ 58-II。

2023-06-23 00:15:34 48

原创 LeetCode C++ 448

【代码】LeetCode C++ 448。

2023-06-22 23:18:12 35

原创 LeetCode C++ 697

【代码】LeetCode C++ 697。

2023-06-22 21:58:38 37

原创 LeetCode C++ 645

【代码】LeetCode C++ 645。

2023-06-22 18:30:29 47

wvdial wvstream安装包

包括wvdial安装包 wvstream安装包 zlib安装包 openssl安装包 一份移植文档 一份已经一移植的wvdial

2019-01-02

onvif_rtsp_gn28181_rtp

视频监控协议标准onvif协议,源码中有rstp,rtp,gb28181等等协议,协议源码有两个版本,windows和linux版本,次源码以中间件形式编写,可以直接用编译后的库

2018-11-08

无锁缓冲队列

无锁缓冲队列

2018-11-04

基于qt和ffmpeg视频播放器开发实战下载和目录

基于qt和ffmpeg视频播放器开发实战下载和目录 基于qt和ffmpeg视频播放器开发实战下载和目录

2018-07-04

利用ffmepg 实现1000行视频播放器

利用ffmepg 实现1000行视频播放器 利用ffmepg 实现1000行视频播放器

2018-07-04

QT音频 录音与播放

QT音频 录音与播放 以及推 RTMP 音频流------------------------------------------------

2017-11-07

opencv_rtsp_to_rtmp_class

FFmpeg编解码 音视频 RTMP RTSP opencv 直播 推流 初学者实用

2017-11-06

人工智能

《人工智能:一种现代的方法(第3版)(影印版)》最权威、最经典的人工智能教材,已被全世界100多个国家的1200多所大学用作教材。《人工智能:一种现代的方法(第3版)(影印版)》的最新版全面而系统地介绍了人工智能的理论和实践,阐述了人工智能领域的核心内容,并深入介绍了各个主要的研究方向。全书仍分为八大部分:第一部分“人工智能”,第二部分“问题求解”,第三部分“知识与推理”,第四部分“规划”,第五部分“不确定知识与推理”,第六部分“学习”,第七部分“通信、感知与行动”,第八部分“结论”。《人工智能:一种现代的方法(第3版)(影印版)》既详细介绍了人工智能的基本概念、思想和算法,还描述了其各个研究方向最前沿的进展,同时收集整理了详实的历史文献与事件。另外,《人工智能:一种现代的方法(第3版)(影印版)》的配套网址为教师和学生提供了大量教学和学习资料。, 《人工智能:一种现代的方法(第3版)(影印版)》适合于不同层次和领域的研究人员及学生,是高等院校本科生和研究生人工智能课的首选教材,也是相关领域的科研与工程技术人员的重要参考书。

2017-11-01

Libevent 服务端 客户端 代码实现

Libevent 服务端 客户端 代码实现 实现大并发 -------

2017-11-01

Linux C epoll

Linux C epoll

2017-07-11

Flv解析器 (SpecialFFLv)

Flv解析器

2017-07-11

空空如也

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

TA关注的人

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