![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++
墨尘笔尖
这个作者很懒,什么都没留下…
展开
-
OpenSSL之Diffie-Hellman
// diffie_hellman.hpp#pragma once#include <openssl/dh.h>#include <memory>#include <vector>namespace crypto{ class diffie_hellman { public: diffie_hellman(); ~diffie_hellman() = default; bool create_p_g(); bool set_p_g(c原创 2021-11-29 22:17:29 · 798 阅读 · 0 评论 -
FFmpeg将图像数据编码为H264视频
图片数据编码为视频的步骤如下:1、 BGR数据转换为YUV格式;2.、YUV格式进行编码;其中对YUV格式进行编码又分为以下步骤:通过avcodec_find_encoder函数找到需要的编码器;通过avcodec_alloc_context3初始化编码器上下文,并设置编码器上下文的参数(包括码率、时间基、视频宽高等);通过avcodec_open2函数打开编码器;通过avformat_alloc_output_context2函数初始化输出文件上下文;通过avformat_new_str原创 2021-09-25 22:50:00 · 4367 阅读 · 2 评论 -
C++11模板元编程—std::enable_if使用说明
std::enable_if 顾名思义,满足条件时类型有效。作为选择类型的小工具,其广泛的应用在 C++ 的模板元编程中。它的定义也非常的简单:// STRUCT TEMPLATE enable_iftemplate <bool _Test, class _Ty = void>struct enable_if {}; // no member "type" when !_Testtemplate <class _Ty>struct enable_if<true, _原创 2021-08-29 13:52:02 · 5066 阅读 · 0 评论 -
C++模板元实现序列化
/* 序列化说明 * 1.包组成: * ----------------------- * | 包长度 | 数据 | * |-----------------------| * | int | char[] | * ----------------------- * 2.数据组成 * ------------------------------------------------------------------------.原创 2021-06-20 15:42:50 · 709 阅读 · 0 评论 -
C++虚函数实现模拟
目录前言虚函数表分析虚函数模拟实现虚函数原理分析前言虚函数的实现包含两个重要部分,虚函数表和虚函数表指针。虚函数表:一个类如果有虚函数,则针对这个类会产生一个虚函数表;虚函数表属于类。虚函数表指针:生成这个类的对象时,对象里就包含了一个指针(虚函数指针),用来指向这个虚函数表的起始地址;虚函数表指针属于对象,一般位于对象内存的起始位置。虚函数表分析看如下示例代码(代码1),父类Base包含三个虚函数f、g、h,子类Derive重写了其中两个虚函数f、g:class Base{pub原创 2020-11-15 23:00:29 · 256 阅读 · 0 评论 -
C++大量线程等待与唤醒
一、线程唤醒方法C++11之后提供了thread线程类,可以很方便的编写多线程程序。线程的等待和唤醒使用条件变量condition_variable和锁mutex结合实现,其中条件变量提供了wait(), notify(), notifyAll()等方法。wait()的作用是让当前线程进入等待状态,同时,wait()也会让当前线程释放它所持有的锁。而notify()和notifyAll()的作用,则是唤醒当前条件变量上的等待线程;notify()是随机唤醒单个等待的线程,而notifyAll()是唤醒原创 2020-06-20 18:01:36 · 11187 阅读 · 2 评论 -
C++虚函数实现原理
C++虚函数实现原理前言实现机制实例分析测试代码及输入结果结果分析前言C++中的虚函数的作用主要是实现了多态的机制。基类定义虚函数,子类可以重写该函数。实现机制每个类对象添加一个成员,该成员中保存了一个指向函数地址数组的指针,称为虚表指针(vptr),该数组称为虚函数表(virtual function table, vtbl),即,每个类使用一个虚函数表,每个类对象用一个虚表指针。实例...原创 2020-04-26 23:12:15 · 239 阅读 · 0 评论 -
单链表反转原理及实现
1 节点定义单链表节点的数据结构定义如下:/* 定义结节点 */typedef struct _Node{ int value; Node* next;}Node;2 方法:迭代法2.1 思路遍历整个链表,并把当前节点的next指向上一节点。2.2 分析1.初始链表状态如下图所示。2.定义节点指针①定义前向节点指针,并初始化为head。Node*...原创 2019-12-19 17:37:23 · 611 阅读 · 0 评论 -
C++ 11实现信号量
/************************************//* 文件名:CSemaphore.h *//* 功 能:C++11信号量 *//************************************/#ifndef _CSEMAPHORE_H_#define _CSEMAPHORE_H_#include <mutex&g...原创 2018-11-26 19:24:29 · 3116 阅读 · 0 评论 -
解决C++调用Python中文乱码
C++调用Python,包括参数传递及返回值的处理的教程都很多。但是对于中文字符作为参数传递时,会遇到编码问题而乱码甚至崩溃。经过搜集资料,终于解决乱码问题,特记录在此:1、参数传递一般采用PyObject* objArg = Py_BuildValue("s", "Hello")构建参数,当输入参数为中文时,objArg则返回为空指针。原因是:Python为UTF-8编码,而C++中中文大多采用...原创 2018-04-09 22:40:37 · 3925 阅读 · 6 评论