自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 RTP协议解析和H264码流提取

https://blog.csdn.net/davebobo/article/details/52994596

2021-03-19 08:07:23 270 2

转载 RTP协议全解析(H264码流和PS流)

https://blog.csdn.net/chen495810242/article/details/39207305?utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-2.control&dist_request_id=&depth_1-utm_source=distribute.pc_relevant.none-task-blo

2021-03-19 07:48:34 303

转载 FU-A分包方式,以及从RTP包里面得到H.264数据和AAC数据的方法

RFC3984是H.264的baseline码流在RTP方式下传输的规范,这里只讨论FU-A分包方式,以及从RTP包里面得到H.264数据和AAC数据的方法。1、单个NAL包单元12字节的RTP头后面的就是音视频数据,比较简单。一个封装单个NAL单元包到RTP的NAL单元流的RTP序号必须符合NAL单元的解码顺序。2、FU-A的分片格式数据比较大的H264视频包,被RTP分片发送。12字节的RTP头后面跟随的就是FU-A分片:FU indicator有以下格式: +--------...

2021-03-19 07:12:08 626

转载 了解实现一个高并发的内存池——TLS Memmory Pool

为什么需要内存池?1.效率问题:如果我们直接向系统申请内存,当我们需要频繁的申请释放内存时,就需要频繁的与系统层产生交互,多次切换用户态和内核态,而用户态和内核态之间的切换的消耗是非常大的,因此申请内存的消耗就会很大,程序效率也就随之降低了。2.内存碎片问题:如果我们频繁的申请和释放小块的内存,系统的内存就会因此被碎片化,虽然总的内存被占用并不多,但是却没有了连续的大块内存,这个时候如果我们需要使用大内存的空间时,就无法申请了。实现一个高并发的内存现在大部分的开发环境都是多核多线程,在申请内存

2020-12-18 14:41:57 342

转载 c++

1. 语言基础 (C/C++)(0) 指针和引用的区别指针是一个新的变量,指向另一个变量的地址,我们可以通过访问这个地址来修改另一个变量;而引用是一个别名,对引用的操作就是对变量的本身进行操作 指针可以有多级,引用只有一级 传参的时候,使用指针的话需要解引用才能对参数进行修改,而使用引用可以直接对参数进行修改 指针的大小一般是4个字节,引用的大小取决于被引用对象的大小 指针可以为空,引用不可以。(1)在函数参数传递的时候,什么时候使用指针,什么时候使用引用?需要返回函数内局部变量的内存

2020-12-11 14:41:35 361

转载 linux C/C++服务器后台开发面试题总结

、编程语言1.根据熟悉的语言,谈谈两种语言的区别?主要浅谈下C/C++和PHP语言的区别:1)PHP弱类型语言,一种脚本语言,对数据的类型不要求过多,较多的应用于Web应用开发,现在好多互联网开发公司的主流web后台开发语言,主要框架为mvc模型,如smarty,yaf,升级的PHP7速度较快,对服务器的压力要小很多,在新浪微博已经有应用,对比很明显。2)C/C++开发语言,C语言更偏向硬件底层开发,C++语言是目前为止我认为语法内容最多的一种语言。C/C++在执行速度上要快很多,毕竟其他类

2020-09-14 14:06:58 180

转载 linux操作系统常用面试题目

请描述一下用多线程怎么实现生产者消费者模型 知道nginx的惊群现象吗?怎么解决? 请说一下epoll的内核实现,都涉及哪些数据结构? select和epoll的区别? fork()都会做哪些复制? 什么是写时拷贝?Fork以后,父进程打开的文件指针位置在子进程里面是否一样? 你项目中为什么使用进程池?而不是用线程池?不同场景怎么选择请列举一些例子! tcp/ip的四层协议,为什么要有传输层和网络层? tcp/ip三次握手和四次挥手过程以及信令流程,画出来! tcp三次握

2020-09-08 16:38:30 235

转载 【搞定计算机操作系统】面试题整理

一、进程与线程1、简单说说进程、线程以及它们的区别进程:是系统进行资源分配和调度的一个独立单位,是最小的资源管理单位。线程:是进程的一个实体,是 CPU 调度和分派的基本单位,是最小的 CPU 执行单元。线程自己不拥有任何系统资源,但是它可以访问其隶属进程的全部资源。所以线程创建、撤销、切换的开销远小于进程,一个进程可以拥有多个线程。2、进程的状态和转换    三态模型:一个进程从创建而产生至撤销而消亡的整个生命周期,可以用一组状态加以划分,根据三态模型,进程的生命周期可分为如...

2020-09-08 13:43:57 663

转载 RTSP

https://github.com/daniulive/SmarterStreaming

2020-08-27 09:28:17 354

转载 Linux——makefile编写

Linux——makefile编写阅读目录关于makefile make怎么执行 makefile简化 Makefile还有什么以前对makefile的编写,限于刚开始接触,我都比较局限一些死板的格式,有时候就会显得有些繁琐。在进一步了解一些系统编译和链接的知识后,对makefile编写流程有了一些新的认识,所以来此梳理梳理,方便更为灵活地编写makefile。限于makefile认识不足,这里参考了一篇比较好博文:makefile点击回顶部关于makefile  .

2020-05-15 16:10:35 158

转载 socket应用实例之RTP音频流传输

套接字的特性由3个属性确定,它们分别是:域、端口号、协议类型。(1)套接字的域它指定套接字通信中使用的网络介质,最常见的套接字域有两种:一是AF_INET,它指的是Internet网络。当客户使用套接字进行跨网络的连接时,它就需要用到服务器计算机的IP地址和端口来指定一台联网机器上的某个特定服务,所以在使用socket作为通信的终点,服务器应用程序必须在开始通信之前绑定一个端口,服务器在指定...

2020-04-21 15:53:07 1296

转载 视频流传输协议RTP/RTCP/RTSP/HTTP的区别

用一句简单的话总结:RTSP发起/终结流媒体、RTP传输流媒体数据、RTCP对RTP进行控制,同步。之所以以前对这几个有点分不清,是因为CTC标准里没有对RTCP进行要求,因此在标准RTSP的代码中没有看到相关的部分。而在私有RTSP的代码中,有关控制、同步等,是在RTP Header中做扩展定义实现的。另外,RFC3550可以看作是RFC1889的升级文档,只看RFC3550即可。RTP...

2020-04-17 15:21:29 2055

转载 RTP协议分析

RTP协议分析第1章.RTP概述1.1.RTP是什么RTP全名是Real-time Transport Protocol(实时传输协议)。它是IETF提出的一个标准,对应的RFC文档为RFC3550(RFC1889为其过期版本)。RFC3550不仅定义了RTP,而且定义了配套的相关协议RTCP(Real-time Transport Control Protocol,即实...

2020-04-17 11:08:03 242

转载 写一个检测网线是否被拔出的守护进程(嵌入式设备上)

#include <stdio.h>#include <unistd.h>#include <stdlib.h>#include <signal.h>#include <sys/file.h>#include <netinet/in.h>#include <linux/if.h>#include &l...

2020-04-01 15:21:22 528

转载 通过虚函数表访问基类的私有虚函数

#include <iostream.h>class person{public:virtual void name(){cout<<"A::name"<<endl;}private:virtual void sex(){cout<<"A::sex"<<endl;}};class student:public ...

2020-02-11 08:57:21 527

转载 编写类String的构造函数、析构函数和赋值函数(转载)

请编写String的上述4个函数。C++代码//普通构造函数 String::String(const char *str) { if(str==NULL) { m_data = new char[1]; // 得分点:对空字符串自动申请存放结束标志'\0'的//加分点:对m_data加NULL 判断 ...

2020-02-11 08:32:53 708

转载 Shell脚本快速入门学习

常用的ShellShell 既是一种脚本编程语言,也是一个连接内核和用户的软件。常见的 Shell 有 sh、bash、csh、tcsh、ash 等。bash shell 是 Linux 的默认 shell,bash 由 GNU 组织开发,保持了对 sh shell 的兼容性,是各种 Linux 发行版默认配置的 shell。bash 兼容 sh 意味着,针对 sh 编写的 ...

2020-02-10 11:10:11 302

转载 Vim C/C++强大的配置文件

这个配置文件插件是一位牛人写的,名字是:chxuan:githup地址:https://github.com/chxuan/vimplus.git配置的时候,运行下面的命令:一、先看下系统中有没有安装有git,没有的话先安装下:Ubuntu:sudo apt-get install git;CentOS: yum install -y git;...

2020-01-09 17:42:59 358

转载 基于tc_malloc的高并发内存池

内存碎片问题;性能问题;高并发(在多线程同时申请内存时,效率依旧很高)。threadcache是解决高并发的性能问题,因为没有锁;centralcache是平衡threadcache资源竞争的问题,避免一个线程用多了,另一个线程没得用;但是这里的平衡会付出一定的代价,当多个线程同时来申请时需要加锁,CentralCache下面挂的是一个一个的span,span是一些内存对象的集合,这些内存...

2019-12-25 19:56:10 661

转载 深入了解tcmalloc(一):windows环境下无缝拦截技术初探

概述:又到了一个总结提炼的阶段,这次想具体聊聊游戏引擎中使用的内存管理模块tcmalloc组件的使用心得。项目的前期曾经遇到过内存瓶颈,特别是windows系统下的客户端程序在经历长时间运行之后会出现内存占用率很高疑似泄漏的现象,排查了很久都没有找到原因,甚至一度无法定位问题出自游戏脚本层还是引擎层,后来在引擎中链接了tcmalloc组件,通过实时dump程序的内存信息最终找...

2019-12-25 18:14:10 1013

原创 windows下dump文件的生成

#include <Windows.h>#include <DbgHelp.h>#include<iostream>using namespace std;//定义一个回调函数,给dbghelp的接口函数使用,其内部调用dbghelp的写dump函数LONG WINAPI TopLevelExceptionFilter(struct _EXCEPTIO...

2019-12-25 14:49:45 206

原创 网络中出现TCP、UDP粘包、分包的两点解决办法

粘包产生原因:先说TCP:由于TCP协议本身的机制(面向连接的可靠地协议-三次握手机制)客户端与服务器会维持一个连接(Channel),数据在连接不断开的情况下,可以持续不断地将多个数据包发往服务器,但是如果发送的网络数据包太小,那么他本身会启用Nagle算法(可配置是否启用)对较小的数据包进行合并(基于此,TCP的网络延迟要UDP的高些)然后再发送(超时或者包大小足够)。那么这样的话,服务器...

2019-12-25 10:23:32 1645

转载 vs中检测内存泄漏的方法

使用vs的内存检测有以下几种方法。在debug模式下以F5运行:方法一:#define CRTDBG_MAP_ALLOC #include <stdlib.h> #include <crtdbg.h> //在入口函数中包含 _CrtDumpMemoryLeaks(); //即可检测到内存泄露//以如下测试函数为例:int main(){...

2019-12-20 16:16:43 394

转载 linux

基本格式:gcc [options] file1 file2... //若不加入参数,则按默认参数依次执行编译、汇编和链接操作,生成的可执行文件名为 a.out常用参数:-E //只执行预处理操作-S //只执行到编译操作完成,不进行汇编操作,生成的是汇编文件(.s 或 .asm),内容为汇编语言-c //执行编译和汇编,但不进行链接,即只生成可重定位目标文件(.o),为二进制文件,不生成完...

2019-11-16 10:37:44 99

转载 五种通讯方式总结

程间通信(IPC,InterProcess Communication)是指在不同进程之间传播或交换信息。IPC的方式通常有管道(包括无名管道和命名管道)、消息队列、信号量、共享存储、Socket、Streams等。其中 Socket和Streams支持不同主机上的两个进程IPC。以Linux中的C语言编程为例。一、管道管道,通常指无名管道,是 UNIX 系统IPC最古老的形式。...

2019-09-20 07:33:37 9494

转载 Linux下/proc目录简介

1. /proc目录Linux 内核提供了一种通过 /proc 文件系统,在运行时访问内核内部数据结构、改变内核设置的机制。proc文件系统是一个伪文件系统,它只存在内存当中,而不占用外存空间。它以文件系统的方式为访问系统内核数据的操作提供接口。用户和应用程序可以通过proc得到系统的信息,并可以改变内核的某些参数。由于系统的信息,如进程,是动态改变的,所以用户或应用程序读取proc文件时,...

2019-09-12 17:42:19 105

转载 C++雾中风景12:聊聊C++中的Mutex,以及拯救生产力的Boost

1.C++多线程编程的困扰C++从11开始在标准库之中引入了线程库来进行多线程编程,在之前的版本需要依托操作系统本身提供的线程库来进行多线程的编程。(其实本身就是在标准库之上对底层的操作系统多线程API统一进行了封装,笔者本科时进行操作系统实验是就是使用的pthread或<windows.h>来进行多线程编程的)提供了统一的多线程固然是好事,但是标准库给的支持实在是有限,具...

2019-09-07 15:15:18 214

转载 Libcurl上传图片

一.直接上传文件方式将图片文件跟在参数的后面,这里的curl和参数需要根据自己的需要修改 char *url=" "; CURL *pCurl = NULL; CURLcode res; struct curl_slist *headerli...

2019-08-31 16:32:03 1215

转载 liburl上传与下载

size_tgetcontentlengthfunc(void*ptr,size_tsize,size_tnmemb,void*stream) { intr; longlen=0; //r=_snscanf(ptr,size*nmemb,"Content-Length:%ld\n",&...

2019-08-31 15:29:34 196

转载 Mongoose

前面我们介绍了Mongoose所有的几个主要的数据结构mg_context、mg_connection、mg_request_info,还有Mongoose的生命主线。有了这些基础就可以来看看Mongoose的核心处理工作是怎样的。如果你还没有阅读前面的文章,你可以通过下面的隧道直通:Mongoose源码剖析:外篇之web服务器 Mongoose源码剖析:Introduction and I...

2019-08-31 14:35:32 290

转载 Mongoose

本文主要介绍Mongoose的工作模型,及根据这个模型将代码大致串起来,找出主线。内容框架如下:1、线程模型 2、从程序入口着手 3、Mongoose的生命旅程1、线程模型Mongoose采用了一个自适应的线程池的模型。有一个主线程(master thread)用于打开配置端口和等待连接的到了。一旦新的连接到来,主线程将衍生一个新的线程去服务该连接。当衍生的线程处理完连接的请求之后,...

2019-08-31 14:34:14 920 2

转载 Moongse

引言Mongoose中有几个数据结构扮演着重要的角色,它们分别是:struct mg_context:保存Mongoose的上下文,几乎每个函数都有mg_context参数 struct mg_connection:保存HTPP连接信息 struct mg_request_info:保存HTTP请求的信息,这个结构体传递给URL处理函数我之所以现在这里介绍它,因为之后的分析工作中要用...

2019-08-31 14:33:36 385

转载 libcurl基本知识、post、get请求 -- libcurl

1、为什么要使用libcurl,(1)作为http的客户端,可以直接用socket连接服务器,然后对到的数据进行http解析,但要分析协议头,实现代理…这样太麻烦了。#也就是socket连接然后发post、get协议包,自己组包和拆包。(2)libcurl是一个开源的客户端url传输库,支持FTP,FTPS,TFTP,HTTP,HTTPS,GOPHER,TELNET,DICT,FILE和LDA...

2019-08-31 10:48:05 1732

转载 libcurl 使用方法简介

背景 简介 使用方法 1、easy interface使用方法 2、multi interface使用方法背景最近想做一个简单的HLS拉流程序,HTTP的下载部分觉得采用libcurl来进行比较合适及方便,所以先介绍libcurl的基本用法,然后使用libcurl完成一个简单的下载小程序。简介libcurl是一个跨平台的开源网络...

2019-08-31 10:47:02 700

转载 IOCP

IOCP模型与网络编程一。前言: 在老师分配任务(“尝试利用IOCP模型写出服务端和客户端的代码”)给我时,脑子一片空白,并不知道什么是IOCP模型,会不会是像软件设计模式里面的工厂模式,装饰模式之类的那些呢?嘿嘿,不过好像是一个挺好玩的东西,挺好奇是什么东西来的,又是一个新知识啦~于是,开始去寻找一大堆的资料,为这个了解做准备,只是呢,有时还是想去找一本书去系统地学习一下,毕...

2019-08-31 09:34:37 580 1

转载 wireshark

wireshark 实用过滤表达式(针对ip、协议、端口、长度和内容)1.关键字“与”:“eq”和“==”等同,可以使用“and”表示并且,“或”:“or”表示或者。“非”:“!"和"not”都表示取反。多组条件联合过滤数据包的命令,就是通过每个单个的条件命令与关键字“与或非”的组合实现的。2.针对ip的过滤针对wireshark最常用的...

2019-08-30 17:10:54 3549

转载 Linux原子操作及函数

所谓的原子操作,就是该操作绝不会在执行完毕前被任何其他任务或事件打断,也就是说,它的最小的执行单位,不能有比它更小的执行单元,因此这里的原子实际是使用了物理学里物质微粒的概念。原子操作需要硬件的支持,因此是架构相关的,其API和原子类型的定义都定义在内核源码树的include/sam/atomic.h文件中,它们都是使用汇编语言实现,因为c语言并不能实现这样的操作。原子操作主要用来实现资源计数...

2019-08-19 08:43:52 832

转载 代码重构原则和方法

重构原则:我们重构代码的原则很简单,就是我往让代码保持:1、清晰2、简单3、可扩展。重构方法:1、 提取子函数2、 上移至父类3、 下移至子类4、 封装固定的调用逻辑5、 使用泛型去除重复逻辑6、 使用对象避免过多的参数7、 转移函数8、 将类型码转换为状态模式9、...

2019-08-17 16:58:03 308

转载 . Ceph架构简介及使用场景介绍

1. Ceph架构简介及使用场景介绍1.1 Ceph简介Ceph是一个统一的分布式存储系统,设计初衷是提供较好的性能、可靠性和可扩展性。Ceph项目最早起源于Sage就读博士期间的工作(最早的成果于2004年发表),并随后贡献给开源社区。在经过了数年的发展之后,目前已得到众多云计算厂商的支持并被广泛应用。RedHat及OpenStack都可与Ceph整合以支持虚拟机镜...

2019-08-15 07:38:46 1709

原创 tcp

深入浅出 TCP/IP 协议栈TCP/IP 协议栈是一系列网络协议的总和,是构成网络通信的核心骨架,它定义了电子设备如何连入因特网,以及数据如何在它们之间进行传输。TCP/IP 协议采用4层结构,分别是应用层、传输层、网络层和链路层,每一层都呼叫它的下一层所提供的协议来完成自己的需求。由于我们大部分时间都工作在应用层,下层的事情不用我们操心;其次网络协议体系本身就很复杂庞大,入门门...

2019-08-12 22:23:01 391

空空如也

空空如也

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

TA关注的人

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