自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 博客迁移

博客迁移博客将在未来几个月内迁移到Github,届时欢迎关注新博客。博客将在未来几个月内迁移到Github,届时欢迎关注新博客。

2018-12-03 17:39:49 494

原创 WebRTC中peerconnection示例工程结构分析

WebRTC Native代码相当的大(大约200Mb),开始的时候对这些代码真的是一头雾水,最后决定先从example中的peerconnection先看起。peerconnection例子分为client端和server端,多个client加入对话,server负责信令的处理,这里主要讨论与WebRTC较为相关的client Demo。代码结构: 这个例子用Gtk图形库开发,其中...

2018-07-15 09:25:00 4037

转载 左值、左值引用、右值、右值引用

转载自:http://www.cnblogs.com/SZxiaochun/p/8017475.html 左值、左值引用、右值、右值引用 1、左值和右值的概念 左值是可以放在赋值号左边可以被赋值的值;左值必须要在内存中有实体; 右值当在赋值号右边取出值赋给其他变量的值;右值可以在内存也可以在CPU寄存器。 一个对象被用作右值时,使用的...

2018-06-20 22:42:50 733

原创 C++11:尽量使用std::array来代替数组

C++11后,标准库引入了更现代化的数组std::array,cppreference.com是这样介绍的:定义于头文件 <array>template< class T, std::size_t N > struct array;(C++11 起)std::array 是封装固定大小数组的容器。此容器是一个聚合类型,其语义等同于保有...

2018-05-23 09:38:34 58567 1

原创 C++11中的“万能引用”

首先我们来看一个函数模板的代码:template<typename T>void func(T& param){}这里模板函数参数接收一个引用,但是却不能这样调用:func(27);//error: invalid initialization of non-const reference of type ‘int&’ from an rvalue o...

2018-05-23 09:09:06 4246 1

转载 【转载】 webrtc中的网络反馈与控制

原地址:http://www.befoio.com/4206.html一、引言站在风口上,猪都能飞起来。雷布斯的这句名言,已经被大家传的家喻户晓了,说起当下站在风口上的猪,除了丁老板的未央猪,这头实实在在的猪,视频直播应该可以算一个。今年各种直播平台,各个轮次的融资消息应接不暇。对于互联网技术从业者来说,RTC(Real Time Communication,实时通信)这个站着视频直播背后的技术也...

2018-05-18 17:00:02 477

转载 C++11的enum class 、enum struct 和 enum

原文地址:https://blog.csdn.net/sanoseiichirou/article/details/50180533侵删C++标准文档——n2347(学习笔记) 链接:http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2347.pdf旧版enum存在的问题1 问题1向整形的隐式转换2 问题2无法指定底层所使用的数据类型...

2018-05-17 19:49:35 17467 6

转载 WebRTC in the real world: STUN, TURN and signaling

By Sam DuttonPublished: November 4th, 2013Updated: November 4th, 2013Comments: 9WebRTC enables peer to peer communication.BUT...WebRTC still needs servers:For clients to exchange metadata to coordinat...

2018-05-16 15:33:17 903

原创 WebRTC简介与代码架构

 简介WebRTC,中文全称网页即时通信(Web Real-Time Communication)的缩写,是一个支持网页浏览器进行实时语音对话或视频对话的API。它于2011年6月1日开源并在Google、Mozilla、Opera支持下被纳入万维网联盟的W3C推荐标准。WebRTC除了是一套API标准,也是Google的一个对WebRTC标准API的实现(网址:https://webrt...

2018-05-16 11:11:08 9937

转载 AES加密算法(Rijndael算法)

此文章为转载,如有侵权,通知删除原地址:https://blog.csdn.net/zfpigpig/article/details/8526016上周好几天都在搞AES,总算是把Rijndael算法搞明白了。本片会仔细介绍AES(Rijndael算法),后两篇会介绍AES的java和php实现。AES(Rijndael算法)Rijndael算法

2018-05-09 14:52:32 14587 2

转载 RTP/RTCP 和 SRTP/SRTCP协议

此文章为转载,如有侵权,通知删除原地址:https://blog.csdn.net/swallow_he/article/details/74202104RTP/RTCP 和 SRTP/SRTCP协议1 RTPRTP 协议(Real TimeProtocol)提供具有实时特征的、端到端的数据传送服务,可用来传送声音和运动图像数据。在这项数据传送服务中

2018-05-07 23:47:10 19421 2

原创 一个简单引用计数智能指针的实现

template <typename T>class SharedPtr{public: SharedPtr() = delete;//不允许未初始化的智能指针,防止使用空指针 SharedPtr(const SharedPtr&) noexcept; //拷贝构造 SharedPtr(T*) noexcept; //shallow copy ...

2018-05-06 17:51:02 290

原创 C++ throw()关键词:一个被C++标准抛弃的玩意儿

throw()关键词相信大家在很多C++教程或者代码中看到过,这个博客以一Stackoverflow上的问题开始:应该在C++中使用throw()关键词吗?回答是:不应该 理由主要是各个编译器并没有一个统一的标准去处理这个关键词,还有这个关键词作用很累赘等等,总之是不应该的。Anyway,throw关键词被C++11抛弃了,C++11标准提出了新的关键词:noexcept 一般来说...

2018-05-06 17:44:13 21764 8

转载 C++模版与特化与偏特化

模版与特化的概念函数模版与类模版C++中模板分为函数模板和类模板函数模板:是一种抽象函数定义,它代表一类同构函数。类模板:是一种更高层次的抽象的类定义。特化的概念所谓特化,就是将泛型的东东搞得具体化一些,从字面上来解释,就是为已有的模板参数进行一些使其特殊化的指定,使得以前不受任何约束的模板参数,或受到特定的修饰(例如const或者摇身一变成为了指针之类的东东,甚至是经过别的模板类包装之后的模板类...

2018-05-04 17:06:48 221

原创 《Effective C++》:学习处理模板化基类内的名称

假设有以下需求: 要给N个公司发信息,目前有Alibaba、Microsoft、Amazon三家公司,给Microsoft、Amazon发送明文,给Alibaba发送密文(特殊情况),可以用C++模板技术来实现。class Alibaba{public: //给Alibaba发送密文 static void SendCryMsg(){ std::cout...

2018-05-04 16:44:23 230

原创 扩展型归并排序(模板+仿函数)

写了一个类似STL中的sort用法的归并排序,可以以函数形式传入排序规则。#include #include #include #include using namespace std;template typename T>class MergeSort{public: //以仿函数实现 void operator()(vector& data, funct

2018-02-07 16:38:32 261

原创 N皇后问题(递归+回溯)的C++实现

N皇后问题(递归+回溯)采用C++仿函数技术实现的N皇后问题:解决问题类://多皇后问题class MultiQueens{private: vectorint> queen_vec; //保存当前各个皇后的位置 int solve; //保存解的个数 //检测当前第k个皇后的位置是否合法 bool Check(int k){

2018-01-08 21:20:32 764

转载 P2P通信基本原理与实现

对等网络,即对等计算机网络,是一种在对等者(Peer)之间分配任务和工作负载的分布式应用架构[1] ,是对等计算模型在应用层形成的一种组网或网络形式。“Peer”在英语里有“对等者、伙伴、对端”的意义。因此,从字面上,P2P可以理解为对等计算或对等网络。国内一些媒体将P2P翻译成“点对点”或者“端对端”,学术界则统一称为对等网络(Peer-to-peer networking)或对等计算(Peer-to-peer computing),其可以定义为:网络的参与者共享他们所拥有的一部分硬件资源(处理能力、存

2017-12-27 22:05:23 821

转载 为什么C++11引入了std::ref?

本文转载自:https://www.cnblogs.com/jiayayao/p/6527713.html如有侵权,通知删除  C++本身有引用(&),为什么C++11又引入了std::ref?  主要是考虑函数式编程(如std::bind)在使用时,是对参数直接拷贝,而不是引用。如下例子:#include #include

2017-12-17 22:52:33 1909

原创 C++中的智能指针(1):shared_ptr 的介绍和用法

原理简介C++中采用new和delete来创建(申请)和释放(销毁)内存,但是因为释放内存时机把握不当、忘记释放内存等原因,很难准确及时地管理内存。 因此,C++标准库推出了智能指针机制来更好的管理内存,智能指针能自动释放所指向的对象。shared_ptr简介shared_ptr 允许多个指针指向 同一个对象,它基于模板实现,默认初始化的智能指针中保存着一个空指针。当进行拷贝或者赋值操作时,

2017-12-16 13:50:41 11615

原创 C++中lambda表达式(匿名函数)的用法

简介之前在看SICP《计算机程序的构造和解释》一书的时候,中用了大量的Scheme语言(一种Lisp语言的方言)来解释书中的函数式程序设计思想(只读到第二章后半部。。。有空再补)。Scheme的一个主要特性是可以像操作数据一样操作函数调用, 例如实现对一个操作生成的数乘以二的函数:;这是一个实现对某个值进行乘方的函数(define square (lambda (x) (* x x)));这

2017-12-06 22:47:58 1635 3

原创 C++中的委托构造

委托构造,就是构造函数调用其他的构造函数来完成构造过程,其他的构造函数写在成员初始列表中。using namespace std;class base{private: int a;public: //非委托函数使用相应的实参初始化相应的实参初始化成员 base(int a): a(a){}; //将构造任务委托给了base(int a)函数 bas

2017-11-30 23:11:54 391

转载 Google C++ 风格指南 :尽可能用 sizeof(varname) 代替 sizeof(type).

5.18. sizeofTip尽可能用 sizeof(varname) 代替 sizeof(type).使用 sizeof(varname) 是因为当代码中变量类型改变时会自动更新. 您或许会用 sizeof(type) 处理不涉及任何变量的代码,比如处理来自外部或内部的数据格式,这时用变量就不合适了。Struct data;Struct data; memset

2017-11-29 17:12:30 789

原创 《UNIX网络编程》中五种I/O方式总结和对比

UNIX提供了五种不同的I/O模型:阻塞式I/O模型非阻塞式I/O模型I/O复用模型信号驱动式I/O模型异步I/O模型阻塞式I/O模型阻塞式I/O模型是最基本的I/O模型。在默认情况下,所有套接字都是阻塞的,以数据报套接字为例:当系统调用recvfrom系统调用函数时,当内核socket缓冲区中这个套接字数据报准备好时,将数据从内核缓冲区复制到用户空间,复制完成的时函数返回成功。当发生错

2017-11-29 13:16:39 3647

原创 C++ 11:delete关键词和一条《Effective C++》的过时条款

C++ 11:delete关键词和一条《Effective C++》的过时条款

2017-11-24 00:53:34 1145

原创 C++中const的用法:使代码更加健壮

本文将从三个方面来讨论const带来的代码健壮性:const在变量中的用法,const在函数中的用法,const作为返回值的用法。const在变量中的用法代码示例:int num = 1;const int a = 1; //a的值不能被改变const int *b = # //b的值不能被改变,这个指针的类型是(const int)const data,not const

2017-11-23 21:50:15 1835

原创 C++中的Unicode编码:wchar, UTF-8,UTF-16,UTF-32

C++在C11标准中加入了对Unicode编码的支持,新增了wchar_t、char16_t、char32_t内置数据类型。 cout << sizeof(char) << endl; cout << sizeof(wchar_t) << endl; cout << sizeof(char16_t) << endl; cout << sizeof(char32_t) <

2017-11-14 20:29:34 3064

转载 字符编码笔记:ASCII,Unicode 和 UTF-8

字符编码笔记:ASCII,Unicode 和 UTF-8作者: 阮一峰日期: 2007年10月28日一、ASCII 码我们知道,计算机内部,所有信息最终都是一个二进制值。每一个二进制位(bit)有0和1两种状态,因此八个二进制位就可以组合出256种状态,这被称为一个字节(byte)。也就是说,一个字节一共可以用来表示256种不同的状态,每一个状态对应

2017-11-14 08:42:59 254

原创 LintCode 二叉树的路径和

样例给定一个二叉树,和 目标值 = 5: 1 / \ 2 4 / \ 2 3返回:[ [1, 2, 2], [1, 4]]解法:DFS,注意路径和的概念,要到叶子节点AC代码:class Solution {public: /* * @param root: the root of bi

2017-11-12 19:17:11 366

原创 LintCode 二叉树的最大节点

样例 给出如下一棵二叉树: 1 / \ -5 2 / \ / \ 0 3 -4 -5 返回值为 3 的节点。URL:http://www.lintcode.com/zh-cn/problem/binary-tree-maximum-node/递归,从底下向上求最大数字class Solution {pu

2017-11-12 16:43:14 1085

原创 LintCode 最大子数组(dp)

**> 给定一个整数数组,找到一个具有最大和的子数组,返回其最大和。 样例 给出数组[−2,2,−3,4,−1,2,1,−5,3],符合要求的子数组为[4,−1,2,1],其最大和为6**地址:http://www.lintcode.com/zh-cn/problem/maximum-subarray/递推方程:记A[] A[] 为待求数组,MaxSubArray[i] MaxSubArra

2017-11-05 17:09:41 606 2

原创 求绝对众数

问题:绝对众数指的是,给定N个数字,若某个众数出现次数大于N/2,则称这个众数为绝对众数。 举例: vec = {1,2,3,1,5,6,1,1,1,1},中有10个元素,1占了6个,所以称1为绝对众数算法:在N个元素中,删除两个不相同的数字,绝对众数不变, 分类讨论证明:被删的数字有一个是绝对众数:那么原来是绝对众数的数字的数量为N-1, (N-1)/(N-2)还是大于1/2被删的数字

2017-11-05 10:29:15 429

原创 《Effective C++》条款25:考虑写出一个不抛异常的swap函数

swap是两个元素交换的函数,在STL中也有对应的实现,其基本实现为:namespace std{ template<typename T> void swap(T& a, T& b){ T temp(a); a = b; b = temp; }}这个置换方式和大多数人想象的一样,它涉及到三个对象的复制: a复制到temp

2017-10-25 14:05:03 281

原创 LintCode 二分查找

给定一个排序的整数数组(升序)和一个要查找的整数target,用O(logn)的时间查找到target第一次出现的下标(从0开始),如果target不存在于数组中,返回-1。 题目地址:http://www.lintcode.com/zh-cn/problem/first-position-of-target/坑点:要查找出某元素第一次出现的位置,注意处理好边界问题class Solutio

2017-10-21 21:54:50 2607

转载 Go语言进行web开发(三) Go中的WebSocket编程

8.2 WebSocketWebSocket是HTML5的重要特性,它实现了基于浏览器的远程socket,它使浏览器和服务器可以进行全双工通信,许多浏览器(Firefox、Google Chrome和Safari)都已对此做了支持。在WebSocket出现之前,为了实现即时通信,采用的技术都是“轮询”,即在特定的时间间隔内,由浏览器对服务器发出HTTP Request,服务器在收到

2017-10-15 11:18:10 8422 1

转载 Go语言进行web开发(二) Go中的Socket编程

8.1 Socket编程在很多底层网络应用开发者的眼里一切编程都是Socket,话虽然有点夸张,但却也几乎如此了,现在的网络编程几乎都是用Socket来编程。你想过这些情景么?我们每天打开浏览器浏览网页时,浏览器进程怎么和Web服务器进行通信的呢?当你用QQ聊天时,QQ进程怎么和服务器或者是你的好友所在的QQ进程进行通信的呢?当你打开PPstream观看视频时,PPstream进程如何与视

2017-10-15 10:54:20 4369

原创 Go语言进行web开发(一) 搭建一个简单的web服务器

Go语言也被成为“自带电池”的语言,有大量的web相关工具集成在其中,构建web应用成了一件信手拈来的事情,只要调用http包的两个函数就可以了。package mainimport ( "fmt" "net/http" "log")func responseHello(w http.ResponseWriter, r *http.Request){ //将字符串发

2017-10-09 21:07:26 7176

原创 Go语言学习 面向对象

首先,我们先来看一段代码示例package mainimport "fmt"type Human struct { name string age int phone string}type Student struct { Human //匿名字段 school string loan float32}type Employee struct {

2017-10-09 20:24:29 424

转载 C++内存泄漏的几种情况

原文地址:http://www.cnblogs.com/SeekHit/p/6549940.html#commentform1. 在类的构造函数和析构函数中没有匹配的调用new和delete函数两种情况下会出现这种内存泄露:一是在堆里创建了对象占用了内存,但是没有显示地释放对象占用的内存;二是在类的构造函数中动态的分配了内存,但是在析构函数中没有释放内存或者没有正确的释放内存

2017-10-08 12:43:33 3163

原创 LintCode 字符串查找(暴力法+KMP)

URL:http://www.lintcode.com/zh-cn/problem/strstr/ 对于一个给定的 source 字符串和一个 target 字符串,你应该在 source 字符串中找出 target 字符串出现的第一个位置(从0开始)。如果不存在,则返回 -1。暴力法: 从文本串的第一个元素开始比对,如果和模式串相符,那么就是返回匹配位置,否则就是返回-1,AC代码:cl

2017-10-07 16:31:33 2601

空空如也

空空如也

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

TA关注的人

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