自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 WebRTC 弱网测试分析

文章目录影响观看体验的是什么?网络差的具体表现弱网网络模型带宽受限型网络信道差错型网络Why Fec?Nack的特点拥塞控制FECBuffer?实验影响观看体验的是什么?影响观看体验的主观因素{卡顿延迟马赛克绿屏+花屏爆音变频音...影响观看体验的主观因素\begin{cases}卡顿 \\延迟 \\马赛克 \\绿屏+花屏 \\爆音 \\变频音 \\...\end{case...

2019-01-21 11:16:25 3192 1

原创 WebRTC-Fec

ModuleRtpRtcpImplRTCPReceiverSendSideCongesRtpTransportCCallBitrateAllocatorIncomingPacketTriggerCallbacksFromRtcpPacketOnTransportFeedbackHasNetworkParametersToReportChangedOnNetworkChanged (bps,lo...

2019-01-21 09:26:04 508

原创 Rtp-Rtcp

文章目录What It is?RTP Header Fields**Rtcp SR message****Rtcp RR message**Rtcp SDES messageRtcp BYE messageRtcp APP message**Rtcp Feedback(FB) message****Rtcp Extended Reports (XR) Packet**How to generate...

2019-01-19 12:25:06 1200 1

原创 发送端Webrtc视频Pipeline

发送端Webrtc视频Pipeline发送端Webrtc视频Pipeline采集拥塞控制SendSideCongestionControllerBitrateControllerSendSideBandwidthEstimationBitrateAllocator编码VideoStreamEncoderEncodedImageCallbackVCMEncodedFr...

2018-05-30 16:57:15 2031

原创 多媒体通信基础

多媒体通信基础多媒体通信基础Base一路媒体流RTP的帧内同步Jitter双路流Rtp/rtcp的帧间同步媒体同步referenceBase一路媒体流case 1: 无无丢包,无网络抖动无须同步,无须缓存,解码即播。case 2: 存在网络抖动如果这时候收到帧就立马解码播放,由于网络的抖动,...

2018-05-17 13:36:10 1431

原创 C++多线程下子类"部分析构"问题

C++多线程下子类”部分析构”问题#include <string>#include <iostream>using namespace std;/** This is a simple example used to reveal memory issue when we destruct a object of child class.*1.Set two break points as

2017-12-08 00:24:57 435

原创 求正整数的所有分割并输出II

求正整数的所有分割并输出II函数Part(N,M)能得到N不大于M的所有分割的集合。#include<iostream>#include<vector>#include<algorithm>#include<iterator>using namespace std;/*求正整数的所有分割并输出:case 1: N>M, Part(N,M)为集合Part(N,M-1)并上M+Part(N

2017-06-06 10:23:07 402

原创 利用c++11,简单定制自己的线程类

利用c++11,简单定制自己的线程类利用c11简单定制自己的线程类simplethreadhsimplethread.h#ifndef SIMPLETHREAD_H#define SIMPLETHREAD_H#include <thread>#include <condition_variable>#include <memory>using namespace std::chrono;c

2017-05-14 17:58:25 1772 2

原创 Qt Coordinate System

Qt 坐标系统Qt 坐标系统数学基础 Qt坐标系统视口平移变换缩放变换setWindow旋转总结数学基础 矩阵与线性变换坐标系变换Qt坐标系统 视口和OpenGL一样,视口确定了画面在窗口(QWidget)中显示的区域,Qt的绘图坐标会完全映射到视口(View port)上,就像图示一样。默认情况下,窗口和视口是重合的,视口的大小覆盖了整个窗口。和OpenGL一样,Qt的QPa

2017-05-03 11:57:38 899

原创 OpenGL:光照、模型视图投影变换

OpenGL:光照、模型视图投影变换OpenGL光照模型视图投影变换数学基础程序库配置程序图示代码mainshaderwrapperhvertex shadermvp_testvsfragment shadermvp_testfragreferences数学基础矩阵与线性变换坐标系变换深入探索透视投影变换OpenGL Normal Vector Transformation程序太

2017-05-02 18:18:16 1360 4

原创 坐标系变换

坐标系变换坐标系变换不考虑平移加入平移齐次坐标系与平移追溯过程矩阵变换坐标系变换 or 位置变换移动的坐标系 Think an invertible matrix as a coordinate.坐标系变换,例如,现在有一个点P,在A坐标系中的坐标为(x,y)(x,y),如何求出点P在其他坐标系下的坐标呢?比如,我们想知道P点在B坐标系中的坐标? 做个类比,如果两个讲不同母语

2017-04-29 14:23:44 39491 6

原创 矩阵与线性变换

矩阵与线性变换矩阵与线性变换矩阵变换线性变换意义向量旋转变换拓展总结references矩阵变换 Thank about a matrix multiplication as a transformation of space.对 RnR^n中的每个向量xx,T(x)T(x)由AxAx计算得到,其中AA是m×nm\times n 矩阵,将这样一个矩阵变换记为x→Axx\right

2017-04-28 11:30:05 40555 6

原创 Qt Property System

Qt Property SystemQt Property System示例代码如同我在Qt 信号和槽所介绍的,在MOC code generator的帮助下,qt会产生精心组织的代码将名称和位置联系在一起,知道了对象、名称,就能找出相应的位置,进而调用相应的函数。test_1:#include "propertysystem.h"#include <QVariant>void test_1(

2017-04-23 21:57:09 539

原创 Qt Meta Type System

Qt Meta Type System[TOC] 本文是对 Qt元系统之类型注册 的补充Meta Type System支持下的异步的信号和槽连接同步的信号和槽连接用不到类型信息,因为参数可以使用void指针来传递。但是,异步的信号和槽连接由于需要存储参数,所以需要类型信息:static int *queuedConnectionTypes(const QArgumentType *argumen

2017-04-23 17:48:16 602

原创 Qt元系统之类型注册

Qt元系统之类型注册Qt元系统之类型注册Meta Type System 场景原因实现细节QMetaTyperegisterNormalizedType函数QMetaTypeFunctionHelper模板类QCustomTypeInfo类source codeMeta Type System 如果库或程序有一种在不知道类型的情况下还能拷贝和销毁对象的需求,怎么实现呢?如果类型已知,

2017-04-20 18:03:07 7422 2

原创 Qt事件机制的小实验

Qt事件机制的小实验Qt事件机制的小实验实验一QCoreApplicationsendEvent实验二QCoreApplicationpostEvent实验一:QCoreApplication::sendEventmymessageevent.h#ifndef MYEVENT#define MYEVENT#include<QEvent>#include<QString>class MyMes

2017-04-18 16:03:56 859

原创 Qt事件机制概览

Qt事件机制概览Qt事件机制概览消息循环Qt事件循环简介QEventLoop跨线程的信号和槽与事件循环模态窗口Native widget or Alien widget创建Native widget派发事件的公共基础方法source codeQApplication的创建过程QWidget native QWidget 的创建过程普通native widget回调过程Q

2017-04-18 12:16:12 9830 7

原创 Qt show背后发生的一些事

Qt show背后发生的一些事Qt show背后发生的一些事分析test1test2test3references分析一个窗口要在操作系统中显示出来,必然要调用操作系统提供的接口。例如在window平台上编写界面程序时,程序员需要设计窗口类,向操作系统注册窗口类,创建窗口句柄,显示窗口1show并没有做什么:void QWidget::show() { Qt::Wi

2017-04-14 12:25:47 6705

原创 C++堆内存分配

C++堆内存分配C堆内存分配抽象与分层如何扩展有效堆内存brk和sbrk系统调用如何维护有效堆内存operator new抽象与分层​ c和c++的内存服务模型与计算机网络里面的协议分层模型有点类似。计算机网络协议大体分为5层:应用层、传输层、网络层、数据链接层和物理层。其中,上层仅仅只需在下层所提供的服务之上构建自己的服务,而不用关心它的下下层所提供的服务。例如,http应用要完成相

2017-03-30 08:42:46 5069 1

原创 编译器之WIN64预定义宏和数据对齐设置对结构体大小的影响

编译器之WIN64预定义宏和数据对齐设置对结构体大小的影响编译器之WIN64预定义宏和数据对齐设置对结构体大小的影响ReferenceWIN64数据对齐设置重点Reference:关于VC预定义常量_WIN32,WIN32,_WIN641.WIN64 为了增加代码的可移植性,通常都会利用预定义宏WIN64来设置变量的数据位数。2.数据对齐设置 编译器的数据对齐方式也是可以配置的,6

2016-12-25 19:52:33 936

原创 局部变量太大导致栈溢出

局部变量太大导致栈溢出问题: 昨天,有同学遇到栈溢出的问题。在做大三小学期项目时,需要一个750x750的矩阵。于是在栈中定义了一个二维数组。为了说明问题,做如下简化:/*测试环境:window平台 vs2013*/int main(){ //占用栈内存,局部变量,太大,栈溢出 double test[750][750]; return 0; } 这看似没有

2016-07-17 12:18:24 18917

原创 Linux内存管理基础

系统启动之Linux内存管理基础系统启动之Linux内存管理基础Keywords闲言碎语操作系统启动过程1 bootloader的主要任务是2 为启用分页机制做准备并使能分页机制21 建立临时页表3 initmaincstart_kernerl4 PKmap区41 mmhighmemcpage_address_init物理内存描述初始化1 archi386kernelsetup

2016-07-15 14:38:33 8783 1

原创 文件系统调用和Linux文件系统基础

文件系统调用和Linux文件系统基础keywords fdisk、LBA、CHS、MBR、super struct、directory、file、inode、inode table、block、file descriptor、file descriptor table、open file descriptor、open file table、mount point、vfsmount struc

2016-07-05 17:20:50 4979

原创 系统调用open的大概执行路径

系统调用open的执行路径 代码来自Ucore教学操作系统//用户通过open系统调用接口,执行int 0x80指令,进入内核,查找系统调用表,调用sys_open。level 1: sys_open//---level 1---static uint32_tsys_open(uint32_t arg[]) { const char *path = (const char *)arg

2016-07-02 20:57:38 3347

原创 进程—同步与互斥基础

同步与互斥基础一、临界区 临界区:具体一点,在程序中,临界区就是一段代码区域,这段代码区在任何时间点至多只有一个进程在运行它的代码。二、竞争条件 打个比方:有个大米库所,里面装了若干袋的大米,前台有个记录册记录了当前库所的库存。当一个员工运来大米时,他首先参看记录册中记录了多少袋大米,然后将自己送来的大米放入仓库,最后将自己新加入的大米的袋数与他之前记下的记录册记录的袋数相加,并将结果更新

2016-06-29 23:10:02 685

原创 进程—内存段机制

进程—内存段机制 开始阅读之前可以先看看The Curse of Segments1.x86的硬件段机制 wiki.osdev-Segmentation Modes of Memory Addressing on x861.1 段机制的引入 ​ 就在8086CPU出现之前,地址总线已经是16位(64KB)的了,在刚开始,段的引入是为了解决“地址总线的宽度大于寄存器的宽度”这

2016-05-13 15:11:37 4619

原创 进程—进程调度(1)

进程—进程调度(1)上下文切换 进程可以调度,但必须保证每个进程都可以顺序的执行,而一个进程执行所需的全部信息可由进程的PCB(task_struct)维护,所以在进程发生切换的时候可以将当前进程的运行状态信息(快照)保存到它的PCB中(这样就能在下一次调度程序选择到它时接着上一状态继续执行),将马上要执行的进程的运行状态信息(在PCB中)恢复,这样就可以合理的完成调度,这个过程就叫上下文切换。

2016-05-04 11:46:34 3200 1

原创 黑帽子,白帽子——一道推理题的证明

在所有人均能合理推理的情况下,无论开多少次灯,戴着白帽子的人肯定不会鼓掌,他们是一个等价类,所有戴黑帽子的人在每次开灯时看到的黑帽子的个数是一样的,除了在鼓掌之前,他还不能确定自己也是戴着黑帽子,所以,戴着黑帽子的人也属于一个等价类,他们每次的判断都是一致的。 设f(n)为黑帽子个数为n时有人鼓掌这种情况发生时的开灯次数,例如有3顶黑帽子,那么f(3)就表示鼓掌发生在第f(3)次开灯时。

2016-04-28 20:23:59 21196 1

原创 进程—Linux进程描述符初印象

进程—从进程描述符展开(一)进程内核栈结构:union task_union 在../include/linux/sched.h中定义了如下一个联合结构用来创建内核栈空间。//../include/linux/sched.hunion task_union { struct thread_info thread_info; unsigned long

2016-04-25 23:27:46 6503

原创 进程—异常控制流之故障、终止篇

进程—异常控制流之故障、终止篇一、Exceptions(异常) and System Call(系统调用) 1.1 故障 故障由错误情况引起,它可能能够被故障处理程序修正。当故障发生时,处理器将控制转移 给故障处理程序。如果处理程序能够修正这个错误情况,它就将控制返回到引起故障的指令,从 而重新执行它。否则,处理程序返回到内核中的abort 例程, abort 例程会终止引起故障的

2016-04-21 17:42:14 2958

原创 进程—异常控制流之陷阱篇

一、Exceptions(异常) and System Call(系统调用)1.1 陷阱 陷阱是有意为之的异常,是处理器执行程序的一条指令的结果。陷阱最重要的用途是提供用户程序和内核之间一个像普通过程调用似的接口,名曰:系统调用。用户程序经常需要向内核请求服务,比如读一个文件(read) 、创建一个新的进程(fork) 、加载一个新的程序(execv),或者终止当前进程(exit) 。为了

2016-04-20 00:22:42 5406

原创 进程—异常控制流之中断篇

从给处理器加电开始,直到断电为止,PC(程序计数器)都在不间断的读取并执行指令。 ​ 最简单的一种控制流是一个”平滑的”序列,其中每个instkinst_k和instk+1inst_{k+1} 在存储器中都是相邻的。典 型地,这种平滑流的突变,也就是instk​inst_k​和instk+1​inst_{k+1}​ 不相邻,是由诸如跳转(jump)、调用

2016-04-19 14:08:05 2901

原创 进程—初印象

在有进程地址空间虚拟化概念之前,所有的程序都得实打实的知道自己在物理内存中的分配(程序员手写分配啊!!!)。如果程序小、少,还能凑合着进行管理,但是,面对实际的多程序,大体量程序,不得不将内存的管理与程序的编写进行分离,尽管这样做“有一点1”降低效率。 Using Physical Address: Using Virtual Address:

2016-04-18 00:32:43 1383

原创 在矩阵中寻找最大正方形连续区域

在矩阵中寻找最大正方形连续区域问题描叙 输入一个矩阵M、一个数字k,找出一个最大的正方形连续区域,这个区域里的数字均是k。 ​ 界的思考 对于矩阵M中的每一个元素,要么等于k要么不等于k,要知道这个数的状态,必须有一次比较。一共n个数,所以至少需要n2n^2次比较。故比较次数的下界为Ω(n2)\Omega(n^2),那么是否存在一个O(n2)O(n^2)的

2016-04-17 16:28:23 5297 1

原创 杨氏矩阵

杨氏矩阵参考操作 条件:一个已经建好的杨氏矩阵(Young Tableau) 操作: 1. 在杨氏矩阵中插入元素x —- Insert(x) 2. 在杨氏矩阵中删除位于 (x, y) 位置的元素—- Delete(x, y) 3. 返回x是否在矩阵中—-Find(x) 4. 返回第k大数3. 查找算法Find(x) — Step-wise Linear Searc

2016-04-17 10:14:33 841

原创

堆堆 参考 准备 练习 code heap的应用 < 参考 > 参见【算法导论】第3版第6章【堆】 参见【具体数学】第2版第3章【整值函数】 参见 算法导论习题 参见【编程之美】第2章【2.5.寻找最大的K个数】 参见【stl源码剖析】第4章【4.7.heap】< 准备 > 图1: 一棵完全二叉树 1. 一棵完全二叉树深度为h

2016-04-16 17:12:21 733

原创 寻找两个排序数组的中位数

寻找两个排序数组的中位数中位数保持 从一组数字的中位数两边删除同样多的元素(不管被删除的数字的相对顺序是什么样的),中位数保持。— 尽可以把位于中位数左边和右边的这些数字打乱,只要中位数两边被删除的数目相等就能使中位数保持(是剩下的这些数的中位数)。 情景分析 假设两个已排序的数组,记为A[m]A[m],B[n]B[n]。设想一下,当能确定这两个数组中比中位数小的数值的个数xx以及

2016-04-13 22:51:08 1234

原创 输出正整数的所有分割

输出正整数的所有分割 同时还能解决输出正整数的分割数目的大小的问题。 在这里,递归只是一个遍历的过程,而所要解决的问题需要在这个遍历的过程中得到解决。思路 先假设一个递归函数Part(Num,MaxValue)Part(Num, MaxValue) 能够遍历Num的所有极大值不大于MaxValue的分割序列,接下来我们要做的就是在这个假设的基础上实现这样一个递归函数来完成我们要求的Par

2016-04-12 18:51:27 749

原创 正整数分割

正整数分割定义 分割: 将一个正整数划分为几个数的和的不同表示方法的总数。 记号 记P(x,y)P(x,y)表示正整数x的所有划分中,极大值不大于y的划分的总数。 例如4的所有划分: 1+1+1+1,2+1+1,2+2, 3+1,4 一共,5个,其中P(4,2)=2P(4,2)=2。 记S(x,y)S(x,y)表示正整数x的所有划分中,极大值不大于y的划分的加和序列集合,并且

2016-04-11 21:24:19 1125

原创 求集合的分割(划分)

求集合的分割(划分)划分 把一个分割的各个集合中的元素从大到小排序,然后再以集合的最小的元素对这些集合从大到小进行排序, 排在第一的集合对应1,第二的集合对应2,依次类推。对应一个分割,有一个编码与之对应,这个编码如下: 如果元素x属于i集合,则x的码值为i。对每一个元素求出其对应于一个分割的码值,将这些码值组合起来就 得到了这个分割的编码。 如: {1,2}{3}

2016-04-11 17:27:18 2721

空空如也

空空如也

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

TA关注的人

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