C++
致一
音视频行业深耕多年,熟悉直播、RTC,对在线教育、娱乐秀场等音视频技术与架构有深入研究,目前在一线互联网公司从事音视频开发工作。
展开
-
vscode Run coder 支持c++11
首先找到安装的Code Runner 插件,点击右下角小齿轮,打开扩展编辑打开 在setting.json中编辑在setting.json的最后 自己添加如下新的配置 "code-runner.runInTerminal": true, "C_Cpp.default.cppStandard": "c++11", "code-runner.executorMap": { "cpp": "cd $dir &..原创 2022-01-10 16:59:23 · 712 阅读 · 0 评论 -
boost json 解析数组
利用boost 自带的json库,解析数组,json格式如下:{ "roomId":"room_123", "pubUid":"uid1", "subList":[ "uid2", "uid3", "uid4" ]}解析代码:#include <boost/asio.hpp>#include <boost/shared_ptr.hpp>#include <boost/thread.hpp>#include &原创 2021-01-04 20:16:55 · 1695 阅读 · 3 评论 -
mac 下 sourcetree 设置忽略文件夹
仓库---》仓库设置点击高级--》编辑在弹出的对话框中输入自己想忽略的文件夹,图中,out ,build就是我想忽略的文件夹。原创 2020-11-19 19:36:15 · 1286 阅读 · 0 评论 -
nlohmann json
JSON for Modern C++https://github.com/nlohmann/json解析复杂结构,不好意忘了贴具体的json数据了,大家看解析过程应该可以猜到。#include <nlohmann/json.hpp>// for convenienceusing json = nlohmann::json;std::string media_config_string = std::string(*json_param); json media_c原创 2020-09-29 20:19:54 · 728 阅读 · 0 评论 -
boost blocking udp
boost官方 udp 阻塞serverhttps://www.boost.org/doc/libs/1_36_0/doc/html/boost_asio/example/echo/blocking_udp_echo_server.cpp//// blocking_udp_echo_server.cpp// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~//// Copyright (c) 2003-2008 Christopher M. Kohlhoff (chris at k原创 2020-09-23 14:50:59 · 213 阅读 · 0 评论 -
boost async_udp_echo_server
boost官方例子//// async_udp_echo_server.cpp// ~~~~~~~~~~~~~~~~~~~~~~~~~//// Copyright (c) 2003-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com)//// Distributed under the Boost Software License, Version 1.0. (See accompanying// file LICENSE_1.原创 2020-09-21 17:51:19 · 211 阅读 · 0 评论 -
vscode 调试c++
{ // Use IntelliSense to learn about possible attributes. // Hover to view descriptions of existing attributes. // For more information, visit: https://go.microsoft.com/fwli..原创 2020-07-08 10:48:49 · 994 阅读 · 0 评论 -
C++类成员冒号初始化以及构造函数内赋值
原文地址:http://blog.csdn.net/zj510/article/details/8135556通常我们对类成员进行“初始化”有两种方式:1. 构造函数后面跟冒号;2. 构造函数里面对成员进行赋值。有些人不太注意这个小细节,或者根本不知道他们的区别,认为两种方式是一样的。这个误解有时可能会对程序带来影响,这里我来介绍一下这两种方式。首先我们看这么一段代码:转载 2017-06-15 15:14:45 · 691 阅读 · 0 评论 -
RGB24转YUV420P
第一种方法,直接用算法转换,不用第三方库。注意BMP图像数据是倒着存储的,即从左下角开始。原创 2014-04-05 16:40:33 · 7716 阅读 · 4 评论 -
std::priority_queue 优先队列
原文地址:http://www.cnblogs.com/flyoung2008/articles/2136485.htmlpriority_queue调用 STL里面的 make_heap(), pop_heap(), push_heap() 算法实现,也算是堆的另外一种形式。先写一个用 STL 里面堆算法实现的与真正的STL里面的 priority_queue用法相似的priority_qu转载 2017-07-23 11:55:11 · 624 阅读 · 0 评论 -
std::function std::bind理解
原文地址:http://blog.csdn.net/han1558249222/article/details/50411442#comments 感谢作者分享1.仿函数:又叫std::function,是C++中的一个模板类2.C语言中的函数指针:int add(int a,int b){ return a+b;}typedef in转载 2017-10-09 15:57:20 · 317 阅读 · 0 评论 -
connect 连接超时
原文地址:http://blog.csdn.net/codeheng/article/details/44625495在使用TCP的connect连接服务器时,在默认情况下系统使用的是阻塞式socket,如果服务器当前不可用,则connect会等待知道超时时间到达,而这个超时时间是系统内核规定的,并不能使用setSocketOpt来设置,这个函数只能设置send和recv的超时,为了能够随转载 2017-11-20 11:01:24 · 6462 阅读 · 0 评论 -
map 删除指定元素
#include #includeusing namespace std;mapg_OnMic;int main(){ for (int i = 0; i < 10;i++) { g_OnMic.insert(make_pair(i, i)); } map::iterator iter; for (iter = g_OnMic.begin(); iter != g_OnMi原创 2015-11-17 16:15:14 · 6416 阅读 · 0 评论 -
C++ http 流媒体等 开源项目记录
1、 http client libcurl (C语言写的)、QT 的QNetworkAccessManager、CPP REST SDK是微软开源的基于PPL的异步http client2、流媒体服务器 SRS(simple rtmp server) 地址 https://github.com/winlinvip/srs EasyDarwin、Live5553、RP原创 2017-02-22 18:49:41 · 4070 阅读 · 0 评论 -
当前时间做文件名
GenerateSpecifiedFilename(const char *extension, bool noSpace, const char *format){ time_t now = time(0); struct tm *cur_time; cur_time = localtime(&now); const size_t spec_count = 23; const c原创 2017-11-22 18:08:56 · 1436 阅读 · 0 评论 -
C++ 11 Lambda表达式 通俗易懂
感谢原作者分享:https://www.cnblogs.com/DswCnblog/p/5629165.html声明Lambda表达式Lambda表达式完整的声明格式如下:[capture list] (params list) mutable exception-> return type { function body }各项具体含义如下capture list:捕获外部变量列表para...转载 2018-02-28 15:37:02 · 7063 阅读 · 2 评论 -
double 类型的有效位
// double has 53 bit significant, therefore 2^53=9007199254740992 // is the largest integer that can be represented. For a floating // point value, that consumes more than 16 characters may re原创 2017-07-04 11:37:11 · 7236 阅读 · 0 评论 -
HTTP 协议分析
原文地址:http://lib.csdn.net/article/computernetworks/31688HTTP协议简介 超文本传输协议(HypertextTransfer Protocol,简称HTTP)是应用层协议。HTTP 是一种请求/响应式的协议,即一个客户端与服务器建立连接后,向服务器发送一个请求;服务器接到请求后,给予相应的响应信息。转载 2017-03-13 14:38:56 · 656 阅读 · 0 评论 -
DLL 导出C++ 类
DLL 导出类原创 2014-12-25 17:49:54 · 1209 阅读 · 0 评论 -
memmove 实现
转载转载 2015-08-06 15:45:28 · 659 阅读 · 0 评论 -
头文件相互包含
原文地址:http://blog.sina.com.cn/s/blog_5daeefb30100n19z.html一,问题提出:class B; class A { public: B b; }; class B { public: A a; }; 以上写法会造成头文件相互包含,是错误的。 因转载 2015-09-18 14:20:21 · 783 阅读 · 0 评论 -
c2w
c2w原创 2015-12-14 14:05:07 · 1023 阅读 · 0 评论 -
c++ 浅拷贝 深拷贝
原文地址:http://www.cnblogs.com/BlueTzar/articles/1223313.html对于普通类型的对象来说,它们之间的复制是很简单的,例如:int a=88;int b=a; 而类对象与普通对象不同,类对象内部结构一般较为复杂,存在各种成员变量。下面看一个类对象拷贝的简单例子。 #include using namespace std;clas转载 2016-03-22 11:09:57 · 369 阅读 · 0 评论 -
string 构造函数 析构函数
// 注意深拷贝 、浅拷贝#include using namespace std;class String{public: String(const char*str=NULL);//构造函数 String (const String &other);//拷贝构造函数 ~String(void);//析构函数 String &operator=(const String &ot原创 2016-09-27 19:45:51 · 380 阅读 · 0 评论 -
C++11 lambda表达式
C++11 lambda表达式C++11引入了lambda表达式,使得程序员可以定义匿名函数,该函数是一次性执行的,既方便了编程,又能防止别人的访问。Lambda表达式的语法通过下图来介绍: 这里假设我们定义了一个如上图的lambda表达式。现在来介绍途中标有编号的各个部分是什么意思。Lambda表达式的引入标志,在‘[]’里面可以填入转载 2016-10-26 10:43:06 · 357 阅读 · 0 评论 -
c智能指针:unique_ptr
我们知道auto_ptr通过复制构造或者通过=赋值后,原来的auto_ptr对象就报废了.所有权转移到新的对象中去了.而通过shared_ptr可以让多个智能指针对象同时拥有某一块内存的访问权.但假如我们不希望多个内存块被多个智能指针对象共享,同时又不会像auto_ptr那样不知不觉的就让原来的auto_ptr对象失效,可咋整呢?这个时候就要使用unique_ptr了,顾名思义嘛,unique转载 2016-10-26 10:50:57 · 361 阅读 · 0 评论 -
联合 union
联合(union)在C/C++里面见得并不多,但是在一些对内存要求特别严格的地方,联合又是频繁出现,那么究竟什么是联合、怎么去用、有什么需要注意的地方呢?就这些问题,我试着做一些简单的回答,里面肯定还有不当的地方,欢迎指出!1、什么是联合?“联合”是一种特殊的类,也是一种构造类型的数据结构。在一个“联合”内可以定义多种不同的数据类型, 一个被说明为该“联合”类型的变量中,允许装入该转载 2016-10-26 11:56:53 · 317 阅读 · 0 评论 -
面试中的问题 -虚函数 多态
1、c++多态实现C++中的虚函数的作用主要是实现多态的机制。关于多态,简而言之就是用父类型的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。例如:#include #include using namespace std;class Base{public: Base(){}; ~Base(){}; virtual void Fun() {原创 2016-10-17 23:00:47 · 2116 阅读 · 1 评论 -
非阻塞connect
说明:本文适用于Windows平台,后面追加一篇适用于Linux平台的原文地址:http://blog.csdn.net/shellching/article/details/7663086非阻塞的socket客户端connect()困扰了一下午。因为是非阻塞,不管是否连接上都直接返回,所以就无法知道什么时候连接上。一开始想到网上找资料,可惜不多。于是MSDN,总算找到一句话。Wi转载 2016-12-01 16:52:39 · 467 阅读 · 0 评论 -
c++ 线程池
原文地址:http://www.cnblogs.com/cpper-kaixuan/p/3640485.html本文给出了一个通用的线程池框架,该框架将与线程执行相关的任务进行了高层次的抽象,使之与具体的执行任务无关。另外该线程池具有动态伸缩性,它能根据执行任务的轻重自动调整线程池中线程的数量。文章的最后,我们给出一个简单示例程序,通过该示例程序,我们会发现,通过该线程池框架执行多线程转载 2016-12-28 15:18:17 · 391 阅读 · 0 评论 -
c++ 利用libcurl实现文件断点续传
原文地址:http://blog.csdn.net/mfcing/article/details/50775164/******************************************封装Libcurl下载库*author:Jelin*date:2016年2月24日 */#pragma once#include #include using std::stri转载 2017-03-03 18:10:08 · 6047 阅读 · 0 评论 -
FastDFS
打算要学习的开源项目 1、FastDFS 开源中国的介绍 http://www.oschina.net/p/fastdfs/ 余庆大神的github:https://github.com/happyfish100 除了FastDFS, 里面还有几个小的开源库, libfastcommon 工具库,libshmcache 共享内存库,FastDFS-ngi原创 2017-03-12 18:34:50 · 654 阅读 · 0 评论 -
24位BMP文件存储介绍
24位bmp存储是按BGR BGR。。。 存的bmp位图在存储时,图片数据部分的字节数一定是4的倍数,如果不够四的倍数,在每一行要补齐字节。具体说是这样,假设现在有一张图,宽6个像素,高随便,24位格式保存(每个像素点占三个字节,分别代表RGB三颜色)那么它每行有效数据部分应该是6×3=18字节,18不是4的倍数,所以要补齐,补到20字节。最终存储格式如下图: 前18位转载 2014-12-22 10:09:25 · 10995 阅读 · 0 评论