自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 最长子序列

#include <vector>#include <iostream>using namespace std;int main(){ constexpr int num = 8; int a[num] = {1,7,8,4,3,2,5,6}; std::vector<std::vector<int>> result[num]; ...

2018-09-25 15:18:55 270

原创 负载均衡方案概述

1. 第一阶段 (PV百万-千万)    利用Nginx或HAProxy进行单点的负载均衡。     阿里云提供的是5万QPS。也就是可能支持日活百万。(或更多)    nginx+keeplived/HAProxy+keeplived主从热备。    多机器可使用DNS轮询。    后台多服可使用一致性哈希作为负载均衡算法。2. 第二阶段: (PV千万-亿)    基于上一阶段。...

2018-09-10 15:29:48 299

原创 网络协议简单入门

应用层:自定义    用于用户自定义传输数据运输层:TCP/UDP                                   UDPUDP保证数据是最正确无误的。但是无法保证数据是顺序,不丢失的。                                                  TCPTCP是可靠的,不丢失,顺序的。 网络层...

2018-09-04 11:44:35 566

原创 docker swarm

0. swarm简介    Swarm是Docker官方提供的一款集群管理工具,其主要作用是把若干台Docker主机抽象为一个整体,并且通过一个入口统一管理这些Docker主机上的各种Docker资源。Swarm和Kubernetes比较类似,但是更加轻,具有的功能也较kubernetes更少一些。    可参考这篇博客: https://www.cnblogs.com/frankniha...

2018-09-03 20:16:54 242

原创 docker 快速入门

0. docker简介:Docker 项目的目标是实现轻量级的操作系统虚拟化解决方案。 Docker 的基础是 Linux 容器(LXC)等技术。在 LXC 的基础上 Docker 进行了进一步的封装,让用户不需要去关心容器的管理,使得操作更为简便。用户操作 Docker 的容器就像操作一个快速轻量级的虚拟机一样简单。1. docker 安装curl -fsSL get.docke...

2018-09-03 17:59:56 309

原创 share_lock实现

C++17 才支持share_lock。低版本的需要自己实现。以下基于C++11实现。源码的地址:https://github.com/SaberMqd/naive/blob/master/include/naive/share_lock.h #ifndef _NAIVE_SHARE_LOCK_H_#define _NAIVE_SHARE_LOCK_H_#ifdef _W...

2018-09-03 11:00:39 1146

原创 简单的工作线程实现

源码链接:https://github.com/SaberMqd/naive/blob/master/include/naive/work_thread/work_thread.h原理:new thread(          //开启一个线程    while(true){       //无限循环      wait(task)       等待任务      if(ove...

2018-09-03 10:47:01 552

原创 读写安全的ringobjbuffer。 可用于做简单的任务队列。

源码地址:https://github.com/SaberMqd/naive/blob/master/include/naive/ring_object_buffer.h需要C++11支持。#ifndef _NAIVE_RING_OBJECT_BUF_H_#define _NAIVE_RING_OBJECT_BUF_H_#include <cstdint>#inclu...

2018-09-03 10:34:55 190

原创 ringbuf

读写安全的环状buffer。源码链接:https://github.com/SaberMqd/naive/blob/master/include/naive/ring_buffer.h#ifndef _NAIVE_RINGBUF_H_#define _NAIVE_RINGBUF_H_#include <cstring>#include <cstdint>...

2018-09-03 10:31:46 288

原创 更安全的std::condition_variable

 原生std::condition_variable的notify() 和 wait()有以下特性:1. 仅支持简单的消息等待和消息发送。2. 当notify()后于调用wait()的时候,消息会丢失,wait()阻塞。3. 当wait()接收到一次notify()之后,就再也不会阻塞。 由于我们的业务所需。实现以下功能:1. 当notify()后于调用wait()的时候,...

2018-09-03 10:16:38 209

转载 C/C++跨平台的的预编译宏

https://www.cnblogs.com/foohack/p/5013272.html

2018-03-20 15:21:06 588

转载 Google/Mock

本文引用自http://www.tuicool.com/articles/n26rMvy对于 c++ 来说写单元测试和 mock 框架不是一件容易的事情。还好, Google 为我们搭建了一个出色的单元测试和 mock 框架。网上的例子很多都过多强调概念,本文用一个简单的例子让大家对于什么是 gtest 和 gmock 让大家有一个直观的了解,让大家很快上手,就像写 hello word

2017-01-19 11:00:58 562

原创 Google/gtest

简介:gtest是一个跨平台(Liunx、Mac OS X、Windows、Cygwin、Windows CE and Symbian)的C++测试框架,有google公司发布。gtest测试框架是在不同平台上为编写C++测试而生成的。编译:下载代码:https://github.com/google/googletestwindows:在googletes

2017-01-19 11:00:15 479

原创 Google/glog

glog简介:google 出的一个C++轻量级日志库,支持以下功能:◆ 参数设置,以命令行参数的方式设置标志参数来控制日志记录行为;◆ 严重性分级,根据日志严重性分级记录日志;◆ 可有条件地记录日志信息;◆ 条件中止程序。丰富的条件判定宏,可预设程序终止条件;◆ 异常信号处理。程序异常情况,可自定义异常处理过程;◆ 支持debug功能;◆ 自定义日志信息;

2017-01-19 10:59:38 679

原创 webrtc实现即时语音通讯开发小结(native)

对于不同的业务需求,我们可以分为以下四层路线开发。1.peerconnection2.voe3.apm4.aecm,aec,agc,ns,vad

2016-12-21 09:50:35 3033 2

原创 类成员函数作为线程参数的用法

1.传统用法: void RunThread(); std::thread* _runThread = new std::thread(std::mem_fn(&LarkVoice::RunThread), this); _runThread->detach();2.lambda用法:std::thread *_runThread = new std::thread( [=]

2016-12-16 10:49:44 751

原创 C++ 宏定义禁止复制构造函数和赋值函数

#define DISALLOW_COPY_AND_ASSIGN(TypeName) \ TypeName(const TypeName&){} \ void operator=(const TypeName&){};

2016-12-13 15:47:53 1568

原创 C++ 安全释放模板

#ifndef _SAFE_DELETE_H_#define _SAFE_DELETE_H_namespace safe_delete{ template void SafeDelete(T *&t){ if(t) { delete t; t = nullptr; } } te

2016-12-13 15:44:24 570

原创 const和指针搭配时的作用范围

const其实就是为了保证它所描述的变量不能被修改。直接用代码说明,以下代码仅仅为了证明const和指针在一起时候的作用范围:1.*pfloat *p;p = 3;*p = (float*)3;const float* p;*p = 3; //这样不行p = new float[3];//这样可以证明const type * 是指针能

2016-11-25 14:10:48 414

原创 apt-get安装,卸载,更新

apt-get install xxxx 安装apt-get remove xxxx 卸载但不删除配置apt-get purge xxxx 卸载并且删除相关配置apt-get updata更改/etc/apt/source.list把jessle都改成testing就可以用最新的软件。

2016-11-07 13:22:17 1260

原创 vim 简单配置

这些仅仅作为笔记,适用于大多数情况。

2016-11-07 13:01:26 378

原创 C++程序员学习go基础语法

C++程序员学习go基础语法

2016-11-04 14:07:36 717

原创 go安装leaf

go安装leaf安装的时候使用go get发现控制台没有任何显示进度。所以可以用后面的那个链接下载。我是追出来的这个链接。其实go get 就是 git clone到本地。如果觉得git慢的话,可以先迅雷下载到本地,再上传上去,放在需要的目录下面。

2016-11-03 15:34:29 2204

原创 Linux文件夹高亮

vim ~/.bashrc修改如下,可以满足一般要求 # ~/.bashrc: executed by bash(1) for non-login shells.# Note: PS1 and umask are already set in /etc/profile. You should not# need this unless you want differen

2016-11-03 10:29:29 2526

原创 2行代码启动webrtc turn服务器

2行代码启动webrtc turn服务器

2016-11-02 15:46:40 595

原创 webrtc音频限制带宽

我们使用webrtc的时候遇到过带宽占用太高的问题。查看别人的博客也发现他们的项目一般都是支持一个服务器5到6人的语音。这是成本太高的问题。其实webrtc自己是可以设置这些的。 仔细阅读webrtc的源码,我设置如下的参数,使得带宽减少了一半多。一个5M服务器可以支持近30人。

2016-11-02 15:35:56 2216

原创 webrtc声音回声消除算法选择

使用webrtc的时候,很多声音相关算法没有选择的话,是使用的webrtc默认的算法。在国内的手机,比如小米,魅族等,可能会出现相反的效果。一切的设置都在webrtc-master-webrtc\api\mediaconstraintsinterface.cc这个文件里,无论安卓调用,还是C++,都在添加本地媒体的时候设置:

2016-11-02 15:28:42 8226 6

原创 安卓webrtc权限问题

在安卓中使用webrtc需要权限。如果没有添加,日志也会说明这些问题。

2016-11-02 15:26:14 2468

原创 linux 开机自启动

vim /etc/rc.local把命令行启动程序写进去。

2016-11-02 15:21:40 389

原创 webrtc简单介绍以及用法(native)

本文不适合JS调用方法,但是可以参考,原理大同小异。适用于JAVA,OC,C++。其实也就是相关平台WINDOWS,IOS,android,linux。官方的接口和使用流程如下:https://webrtc.org/native-code/native-apis/可能有些难以看懂。那么可以先看我的使用方法,再回去看官方文档。先介绍webrtc,其实他是一个客户端

2016-10-25 16:11:07 5303 2

原创 coturn 命令

以下是引用自README.TURNSERVER,官方自带的文档。WEBRTC简单的例子:配置config:  1 listening-device=eth0  2 listening-port=3478  3 relay-device=eth0  4 Verbose  5 lt-cred-mech  6 min-port=49152  7 max-por

2016-10-25 10:01:01 4894

原创 简单的p2p-demo,udp打洞

简单的p2p-demo。

2016-10-22 16:29:56 4005

原创 linux 常用命令

linux常用命令

2016-10-22 16:13:34 484

原创 webrtc-房间服务器搭建

apt-get updateapt-get install gitgit clone https://github.com/webrtc/apprtcapt-get install nodejsapt-get install npmnpm install -g npmapt-get install nodejs-legacynpm -g install grunt-cl

2016-10-19 11:28:49 1915

原创 webrtc-信令服务器搭建

下载webrtc源码:git clone https://github.com/webrtc/apprtc安装依赖的golang环境。apt-get install golang-gomkdir collider_rootvim /etc/profileexport GOPATH="/root/collider_root/"source /etc/profile

2016-10-19 11:23:59 3760 2

原创 turn 搭建

coturn 的底层网络部分依赖libevent.  所以需要先安装libevent2,在这里下载http://libevent.org/   安装:   ./configure  make  make verify    sudo make install具体说明在README中。安装coturnhttps://github.com/coturn/co

2016-10-19 10:57:10 612

原创 webrtc源码浅析-scoped_ref_ptr

scoped_ref_ptr 是个简单的智能(根据引用数量延迟销毁,不会多次重复new,节省开销)指针,多线程安全(使用_sync_fetch_and_add比加锁要高效的多)。

2016-09-28 11:04:25 1957

原创 skyrtc demo

以下网上别人写的基于webrtc的DEMO.用于测试还是可以的。chrome浏览器终于出现ssl的问题。建议使用手机测试。就是自己部署下面这个例子,这个部署很简单。https://github.com/LingyuCoder/SkyRTC-demogit clone https://github.com/LingyuCoder/SkyRTC-demo.git解压后n

2016-09-21 16:19:59 3533 3

原创 NSIS + QT 做安装卸载程序

NSIS + QT 做安装卸载程序。NSIS仅仅用于把所有的东西封装为一个EXE。NSIS打包QT做有逼格的可视化界面,并且方便实现。以下是nSIS源码:icon ".\xxx.ico" #设置图标OutFile "setup.exe" #设置生成程序SilentInstall silent #静默安装不出现任何NSIS自带界面F

2016-09-20 15:49:14 6004 3

原创 protobuf for lua 实现

protobuf for lua代码里面包含了C++反射处理protobuf,C++构造Lua表,C++读取Lua表,C++静态处理protobuf。大端,小端的short转换为字节。经过测试,代码稳定。

2016-09-19 16:11:12 1271

空空如也

空空如也

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

TA关注的人

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