- 博客(33)
- 资源 (3)
- 问答 (1)
- 收藏
- 关注

原创 基于G.1070的视频质量无参考打分集成回顾
一、前言摆在面前的一个问题:视频会议在大规模使用后,如何评估、如何监控线上视频质量?视频质量的评估方法通常有有参考评估、无参考评估、半参考评估。其中:有参考评估需要原始视频和经过损伤的有损视频,通常原始视频不易获取,并且评估耗时较多;无参考评估仅需要有损视频即可进行,但结果与主观打分的符合度相对有参考要差一些,但好在耗时不多;半参考评估比较鸡肋,虽然不需要原始视频,但需要原始视频的部...
2019-05-24 23:25:44
1289
1

原创 WebRTC视频数据统计之延时、抖动与丢包
一、前言这篇文章主要想说明的是WebRTC内部对视频上下行延时、抖动、丢包如何更新,上层又怎么获取到这些统计信息的。对应的WebRTC版本:63。二、背景最近在内网情况下测试视频会议,视频下行延时很大,很多时候超过100ms。另外,视频的上下行抖动总是稳定在30~40ms这个区间。这些统计在内网环境下是不正常的,于是决定看看是哪里导致这些问题的。在解决这些问题的过程中,也对WebRT...
2019-04-25 21:43:13
7017
1

原创 C/C++ 日期时间整理备忘
在平时的开发过程中,难免会遇到时间相关的处理,比如心跳、定时任务、超时处理等等,总是很难在众多时间处理函数中选择一个。在假期这几天把经常用到的一些时间处理函数整理了一下,算是个梳理也是备忘吧。一、一些常用时间类型1、time_t在VS2015中,time_t的定义为:#ifndef _CRT_NO_TIME_T #ifdef _USE_32BIT_TIME_T...
2018-04-07 17:11:22
1394

原创 什么是devops,基于Gitlab从零开始搭建自己的持续集成流水线(Pipeline)
持续集成 devops pipeline CI/CD Gitlab 运维
2017-12-12 01:27:30
37451
10

原创 Google开源协议Protobuf的简介及其序列化原理
protobuf介绍及其序列化原理什么是probobuf、作用是什么: Protocol Buffers 是一种轻便高效的结构化数据存储格式,可以用于结构化数据串行化,或者说序列化。它很适合做数据存储或数据交换格式。可用于通讯协议、数据存储等领域的语言无关、平台无关、可扩展的序列化结构数据格式。目前提供了 C++、Java、Python 三种语言的 API。protobuf协议是以一个 .pro
2016-11-17 14:13:49
33163
1

原创 仿迅雷实现下载工具,支持断点续传和多线程下载以及简单界面展示
这篇博客介绍一下在公司实习时选做的一个项目,虽然实习期间没有全部完成,但觉得这个项目做好的话挺有意思的,就在之后几天赶着完善了这个项目。 博客最后给出代码地址这个项目是仿照迅雷,实现一个下载工具。 (开发平台: Ubuntu 16)功能:能由一个基于HTTP协议的网络资源链接,把该链接对应的资源下载到本地,并且显示下载时的状态(进度条、下载百分比、已下载时间、当前下载速度、自己又在后面...
2016-11-04 18:58:37
7546

原创 SGI-STL内存池实现及简单使用
这篇博客主要讲一下SGI-STL中的空间配置器的工作流程。我自己实现模仿STL实现了一个空间配置器,并且用两个容器list和vector测试使用了空间配置器。这里只给出模型,如果要看源码,请到https://github.com/common1994/Project/tree/master/STL下载。源码中的注释比较多,也比较全。下面是工程目录: 现在介绍一下工程目录:List.h、Vecto
2016-08-15 12:51:26
3563

原创 STL算法之 copy、copy_backward、copy_n
这些函数都定义在stl_algobase.h里面,使用时只需要包含 algorithm 头文件就行。copy :STL 的SGI版本中的copy函数声明如下:template <class InputIterator, class OutputIterator>inline OutputIterator copy(InputIterator first, InputIterator last, O
2016-07-20 23:03:46
2968

原创 文件压缩(平台Linux & 语言C++)
这篇博文没有给出源码,如果需要这个项目的源码,可以到https://github.com/common1994/Project/tree/master/FileCompress下载。 (1)项目背景:练习哈夫曼树时,了解了哈夫曼树的应用,开始着手写这个文件压缩项目。 (2)项目描述:哈夫曼树:根据一系列权值,每次选出其中最小的两个作为两个树节点,把这两个节点的和作为他们的根节点并把根节点放入
2016-07-13 23:11:31
3329

原创 GitHub版本控制使用(命令行实际操作图解Git使用方法)
Git是一款免费、开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目Git的优势: (说到优势,那么自然是相对与SVN而言的)版本库本地化,支持离线提交,相对独立不影响协同开发。每个开发者都拥有自己的版本控制库,在自己的版本库上可以任意的执行提交代码、创建分支等行为。例如,开发者认为自己提交的代码有问题?没关系,因为版本库是自己的,回滚历史、反复提交、归并分支并不会影响到其他开发者。
2016-06-14 18:26:33
16912

原创 外排序的实现(平台Linux & 语言C++)
前面两篇博客介绍了一下内部排序,也就是待排序的文件或数据可以一次加载进内存,之后进行排序; 读者可以参考之前的博客: http://blog.youkuaiyun.com/chengzi_comm/article/details/51429165 http://blog.youkuaiyun.com/chengzi_comm/article/details/51494251 与之相对的就是外排序,即文件很大,不能一
2016-05-24 23:32:25
1264

原创 两种非比较排序的原理和实现(计数排序和基数排序)
前些天总结并实现了一些常见的比较排序算法,主要有这三大类: 插入排序、交换排序、选择排序,读者可以参考一下之前的博文:http://blog.youkuaiyun.com/chengzi_comm/article/details/51429165 这些排序方法都是直接或间接比较两个数之间的大小,从而得出数据间的大小关系。 今天这篇博客想要介绍一下两种重要的 非比较排序 算法,下面来看一下不用比较的排序是
2016-05-24 22:43:39
1134

原创 常见比较排序算法的实现(归并排序、快速排序、堆排序、选择排序、插入排序、希尔排序)
这篇博客主要实现一些常见的排序算法。例如: //冒泡排序 //选择排序 //简单插入排序 //折半插入排序 //希尔排序 //归并排序 //双向的快速排序 //单向的快速排序 //堆排序对于各个算法的实现原理,这里不再多说了,代码中注释较多,结合注释应该都能理解算法的原理,读者也可自己google一下。另外,注释中有很多点,比如边界条件、应用场景等已经用 * 标记,* 越多,越应
2016-05-16 22:27:55
8670

原创 Linux I/O复用中select poll epoll模型的介绍及其优缺点的比较
**关于I/O多路复用:**I/O多路复用(又被称为“事件驱动”),首先要理解的是,操作系统为你提供了一个功能,当你的某个socket可读或者可写的时候,它可以给你一个通知。这样当配合非阻塞的socket使用时,只有当系统通知我哪个描述符可读了,我才去执行read操作,可以保证每次read都能读到有效数据而不做纯返回-1和EAGAIN的无用功。写操作类似。操作系统的这个功能通过select/pol
2016-04-22 14:48:10
12930

原创 基于HTTP协议的Web服务器
这篇博文只给出运行截图,没有附上源代码。 如果想要参考源码,请到 https://github.com/common1994/httpd.git * 下载。**下面简单讲述一下HTTP协议和项目描述:* HTTP协议是一个属于应用层的协议,主要特点可概括如下: 1)支持客户/服务器模式。 2)简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法
2016-03-22 17:05:55
3410

原创 数组和指针的区别
C++/C程序中,指针和数组在不少地方可以相互替换着用,让人产生一种错觉,以为两者是等价的。 数组要么在静态存储区被创建(如全局数组),要么在栈上被创建。数组名对应着(而不是指向)一块内存,其地址与容量在生命期内保持不变;数组实际上就是一个常量指针,例如: char ar[10]; 就相当于char * const ar; 即数组名对应一块空间, 该数组名不
2015-09-03 21:29:06
2652
原创 单循环链表(C语言实现)
//CList.h //结构体定义以及函数声明#ifndef CLIST_H#define CLIST_H#include <stdio.h>#include <assert.h>#include <malloc.h>#include <iostream>typedef int ElemType;typedef struct Node{ ElemType data;
2016-05-12 20:08:44
15061
1
原创 求两个数的最大公约数
#includeint fun(int m,int n){ if(0 == m%n) // 如果m 整除 n ,则n是最大公约数 return n; else return fun(n,m%n); }int main(){ printf("%d\n"
2015-05-01 11:42:01
666
tesseract-ocr 安装包
2018-10-11
tesseract-ocr 中文识别引擎
2018-10-11
asio库的异步接收不到第二次响应
2016-12-13
TA创建的收藏夹 TA关注的收藏夹
TA关注的人