自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Rin的博客

做一个长情的人 Quic交流 947934627

  • 博客(30)
  • 资源 (1)
  • 收藏
  • 关注

原创 深度学习-TensorFlow 1.4的安装

最近在阅读《深度学习之TensorFlow:入门、原理与进阶实战》,实际操作上有点总结体会。安装书中使用的TensorFlow 是1.4, python 版本是3.5.0 ,anaconda 是anaconda3-4.1.1,安装教程也是Windows。而我是Mac,自带安装的python是3.7,所以需要做一些修改。1. python官网下载python3.5.0 进行安装,不用直接使...

2020-02-13 09:46:27 1861 1

原创 licode/erizo 转推rtmp时h264帧重排引发崩溃bug排查

崩溃堆栈#0 0x0000000000886892 in erizo::H264Depacketizer::processPacket (this=0x7fbc9c0037d0)at /home/deploy/momodeploy/shellagent/tmp/live-rtc-server/tmp/live-rtc-rtp-server/src/erizo/media/Depacketi...

2019-07-05 10:08:09 878 1

原创 licode/erizo 中 rtcp 的转发与收敛

在每个mediaStream中 都保存着一个std::shared_ptr<RtcpProcessor> rtcp_processor_ ,该结构的类图如下:该RtcpProcessor类型在Stream的中的实例化未RtcpForwarder 类型,在构造函数中创建,在 MediaStream::setRemoteSdp 中更新里面的 sourceSsrc,所以必须在调用s...

2019-05-17 20:47:42 840

原创 licode 裁剪与erizo SDK封装

linux 编译与安装一些编译错误可以参考编译学习篇https://www.cnblogs.com/limedia/p/licode_compile_1.html系统结构篇https://www.cnblogs.com/limedia/p/licode_erizo_worker.html封装构建...

2019-05-13 12:08:20 755

转载 sdp文件详细总结

一概述:SDP目的就是在媒体会话中,传递媒体流信息,允许会话描述的接收者去参与会话。SDP基本上在internet上工作。他定义了会话描述的统一格式,但并不定义多播地址的分配和SDP消息的传输,也不支持媒体编码方案的协商,这些功能均由下层传送协议完成。典型的会话传送协议包括:SAP(Session Announcement Protocol会话公告协议),SIP(Session Initiati...

2019-02-15 17:30:34 1846

转载 学习RFC3550:RTP/RTCP实时传输协议基础知识

一 前言RF3550定义实时传输协议RTP和它的控制协议RTCP。RTP协议是Internet上针对流媒体传输的基础协议,该协议详细说明在互联网上传输音视频的标准数据包格式。RTP本身只保证实时数据的传输,并不能提供可靠传输、流量控制和拥塞控制等服务质量保证,这需要RTCP协议提供这些服务。&lt;/br&gt;RTCP协议负责流媒体的传输质量保证,提供流量控制和拥塞控制等服务。在RTP会...

2019-02-15 17:14:14 594

原创 C/C++ 位域定义

有些信息在存储时,并不需要占用一个完整的字节, 而只需占几个或一个二进制位。例如在存放一个开关量时,只有0和1 两种状态, 用一位二进位即可。为了节省存储空间,并使处理简便,C语言又提供了一种数据结构,称为“位域”或“位段”。所谓“位域”是把一个字节中的二进位划分为几个不同的区域, 并说明每个区域的位数。每个域有一个域名,允许在程序中按域名进行操作。 这样就可以把几个不同的对象用一个字节的二进制位...

2019-02-14 10:11:30 3024 3

转载 Vim 脚本自动生成文件头

转载自:https://blog.csdn.net/lyz2015lyz/article/details/79039802  此脚本目前支持这些后缀:.cc, .sh, .java, .cpp, .h, .hpp, .py, .lua自动创建文件头部注释的脚本1. 把脚本保存为file_format.vim, 并存放在~/.vim/macros/目录下;2. 编辑~/.vimr...

2019-02-02 16:35:17 1255

转载 SSRC 广播的时候如何处理

1.a字段1.1 crypto属性 a = crypto:&lt;tag&gt; &lt;crypto-suite&gt; &lt;key-params&gt; [&lt;session-params&gt;]1​ a=crypto:1 AES_CM_128_HMAC_SHA1_80 inline:d0RmdmcmVCspeEc3QGZiNWpVLFJhQX1cfHAwJSoj|2^20|...

2019-01-31 16:33:35 984

转载 e1000_xmit_frame CPU高问题排查

转载自https://blog.csdn.net/evenness/article/details/7579649参考资料:1。Intel 82547 网卡开发手册。其他Intel网卡的手册应该也可以从网上下载到。http://linux.chinaunix.net/bbs/thread-1142051-1-2.html2。Linux e1000网卡驱动。http://lxr.linu...

2019-01-31 16:32:27 1274 2

翻译 a=rtcp-mux 与 a=group:BUNDLE

rtcp-mux是什么?         大多数的VoIP协议都使用RTP用来发送和接收媒体。除了RTP以外,终端还会向对方发送RTCP数据包,指出了会话的元数据。其中包括很多发送/接收的数据包,抖动信息,以及大量其他数据。RTCP的拓展内容还允许可以被用作数据流的指定控制协议,比如指定一个发送端来发送视频的全帧。         关键之处是,一个典型的RTP会话涉及到两个单独的数据流:R...

2019-01-28 14:33:25 2310

转载 RTP协议之Header结构解析

转载自https://blog.csdn.net/yu_yuan_1314/article/details/9849581,并非原创哈实时传输协议 RTP,RTP 提供带有实时特性的端对端数据传输服务,传输的数据如:交互式的音频和视频。那些服务包括有效载荷类型定义,序列号,时间戳和传输监测控制。应用程序在 UDP 上运行 RTP 来使用它的多路技术和 checksum 服务。2 种协议都提供传...

2019-01-23 16:26:28 819

转载 H.264 RTP PAYLOAD 格式

本文转载自http://www.cppblog.com/czanyou/archive/2008/11/26/67940.html,并非原创哈 H.264 视频 RTP 负载格式1. 网络抽象层单元类型 (NALU)NALU 头由一个字节组成, 它的语法如下:      +---------------+      |0|1|2|3|4|5|6|7|      +-+-+-...

2019-01-23 16:24:34 418

翻译 QUIC 与 FEC 的结合-交互协商方案

nwcrg I. SwettInternet-Draft GoogleIntended status: Informational ...

2018-10-09 10:42:29 2332

原创 开发一个自己的quic sdk

    一、首先,我们要做的是继承QuicStream 和  QuicSession 并实现其虚函数。    QuicStream中必须要实现的接口是数据回调接口,如下: // Called when new data is available from the sequencer. Subclasses must // actively retrieve the data using t...

2018-07-15 11:16:56 3100 1

原创 Quic 创建连接

我们读Quic 的ietf 文档可以知道,quic 核心分为Stream和Session两个概念。一个Session包含多个Stream,Session的创建后才可以创建Stream。这一章我们讲讲如何创建Session,都需要做哪些操作。...

2018-07-14 10:57:34 2211

原创 quic error

[0523/100907:WARNING:quic_stream_sequencer.cc(64)] QUIC_INTERNAL_ERROR[0523/100907:WARNING:quic_stream_sequencer.cc(65)] Stream3: QUIC_INTERNAL_ERROR: Received data beyond available range.

2018-05-23 10:12:51 394

翻译 QUIC 规范

简介    QUIC (Quick UDP Internet Connection) 是在UDP之上实现的一种新的多路复用的并且是安全的,是为了优化HTTP/2而重新设计的语法。QUIC 是建立在几十年的传输和安全的经验上,并且是用硬件实现了一个很优秀的多功能传输。QUIC 提供了与HTTP/2相当的多路传输和流量控制,与TLS相当的安全,与TCP 相当的连接语义、可靠性以及拥塞控制。    QU...

2018-03-21 14:18:14 2498

原创 go gc profiling

上一篇 我们讲了基本的剖析工具的用法,这一篇我们来介绍一种新的工具。运行时加入GODEBUG=gctrace=1,可以在标准错误中输出gc信息,如图:我们来解析一下一些主要的含义,下面是golang官方runtime的说明(具体参考https://studygolang.com/articles/9641):gctrace: setting gctrace=1 causes the

2018-02-04 02:38:41 537

原创 记 Go 的一次profile

最近在搞p2p的调度,需要做一个tcp的双向代理。最开始只能到20w连接,10w的qps,现在做到了60w 连接,40w qps都没问题。cpu 用了16核,一共24核。大部分会选择pprof的 web 模式,其他方式可以参看其他博客。操作方式如下:首先,引入相关包import ( "net/http" _ "net/http/pprof")然后,启动web程序

2018-02-04 02:10:17 441

原创 一次关于美团的C++面试

C++的内存布局问题。其实我觉得这种问题很low,我刚毕业那一年就看过侯杰翻译的C++对象模型,可能记不太清,但是有大概印象。

2018-01-14 00:11:22 1714

原创 bufferevent 设置超时

用bufferevent 有一段时间了,自认为还蛮熟悉的。后来因为一项业务,需要把心跳的频率控制转到服务端来。我们考虑两种情况,一是服务端只响应心跳,不做断开操作,断开操作由客户端收不到响应而发起;二是客户端定期发送心跳,服务端响应心跳,若一定时间未有心跳则断开客户端。或许还有两种的结合,两边都判断超时都断开。最开始我们选择的是第一种场景,只收心跳且服务端不响应心跳,这样可以减少服务端

2017-11-07 11:08:24 6750

原创 socket API接口(3)- 更深一层的解析 sock_alloc

在 net/socket.c 文件中,定义了 sock_alloc ,代码如下:上几节说过,sock_alloc 是分配inode节点和socket,并将其初始化,最后返回socket。第536行, 分配一个inode 节点,sock_mnt 是“socket module的内核初始化流程”一节中讲述的在inet_init 中注册的 sock filesystem 。

2017-09-30 17:28:18 716

原创 socket module的内核初始化流程

总体说来有这么几个过程:1. 由core_initcall宏修饰的sock_init2. 由fs_initcall宏修饰的inet_init3. 由subsys_initcall宏修饰的net_dev_init4. 由device_initcall宏修饰的设备程序初始化且初始化顺序也是由上至下的。在net/socket.c中定义了sock_init 并且用core_

2017-09-28 20:50:21 407

原创 libevent http库-使用示例

最近两天,需要给客户提供一个程序状态的http查询接口,一开始想用nginx访问fcgi,但是觉得复杂了,就一个状态查询功能而已。于是就使用了 libevent提供的http库。使用完后总是要分享一下的,开始源码分享吧/************************************************************************* * > F

2017-09-20 21:47:57 2541

原创 socket API接口(2)- socket_create

socket_create () 在net/socket.c中,如下:1239~1268 都是一些校验性的,没有太大的疑问1270~1280 是为socket分配内存。1282~1313 是协议的初始化。大家搜1296行的 net_families,会发现它是一个长度为NPROTO的一维数组指针,但是却没有地方赋值。其定义在net/socket.

2017-09-08 21:44:52 2791

原创 socket API接口(1)- 整体流程

socket系统调用的定义在net/socket.c中,如下:socket的内核实现大致调用流程如下:1367~1371 是一段编译时校验的代码,在include/linux/bug.h中定义,具体如下:其作用是在编译的时候如果condition为真,则编译中断。即:如果condition为真则!condi

2017-09-03 08:15:05 1278

原创 SOCKET用户接口与系统调用关系(2)

上一节中讲述了socket调用的总入口sys_socketcall的宏定义形式,该定义形式还广泛用于其他接口API。现在我们来看看sys_socketcall的实现方式。在net/socket.c 中,sys_socketcall的实现如下:2465~2466 API序号鉴定,需要在socket 接口调用范围内。2468~2470 根据API序号取得该API的参数个

2017-09-03 07:23:04 446

原创 SOCKET用户接口与系统调用关系

所有的socket系统调用的总入口是sys_socketcall(),在include/linux/Syscalls.h中定义其中,@param call 标识接口编号,@param args 是接口参数指针接口编号的定义在 include/uapi/linux/net.h中定义接口编号对应的参数个数在net/socket.c文件中的nargs数组中

2017-08-22 20:49:24 2432

原创 TCP/IP网络创想

很想深入理解TCP/IP,想阅读内核源码,但是不知道阅读源代码有什么用?如果真的只是开发,可能搞清楚API或许就好了,为什么要阅读源代码呢?若要想排查问题的时候有帮助,熟悉机制就好,为什么要阅读源码呢?原因就是我想读代码!想知道如何实现的!仅此而已!

2017-08-20 20:15:02 407

空空如也

空空如也

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

TA关注的人

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