随着信息技术的发展,人们对实时通信的需求不断增加,并逐渐成为工作生活中不可或缺的一部分.每年海量的音视频通话分钟数对互联网基础设施提出了巨大的挑战.尽管目前全球的互联网用户绝大多数均处于良好的网络状况,但仍有不少地区处于极差的网络条件下,除此之外,即使在网络良好区域,也仍会存在弱网现象.那么如何在有限的带宽下提供高质量的音频体验就成为了一个非常重要的研究方向. 在过去的几十年间,语音或音频的编码技术都涉及大量特定领域的知识,例如语音生成模型.近些年,随着深度学习类算法的快速发展,逐渐涌现出了多种…
语音通信从最初的只有有线通信变成后来的有线通信与无线通信(移动通信)的竞争,当移动语音通信价格下来后有线语音通信明显处于逆势.如今移动语音通信的竞争对手是OTT(On The Top)语音,OTT语音是互联网厂商提供的服务,一般免费,如微信语音.目前语音通信技术上就分成了两大阵营:传统通信阵营和互联网阵营,互相竞争,推动着语音通信技术的发展.具体到编解码器上互联网阵营提出了涵盖语音和音乐的音频编解码器OPUS(OPUS是由非盈利的Xiph.org 基金会.Skype 和Mozilla 等共同主导…
1.VoiceEngine Codec数据结构 WebRTC中,用一个结构体struct CodecInst表示特定的音频编解码器对象: struct CodecInst { int pltype;      //payload type负载类型 char plname[32]; //payload name负载名称,32个字符表示 int plfreq;      //payload frequence负载频率 int pacsize;     //packet size包大小 int cha…
虚拟机在 OpenStack 里没有共享存储条件下的在线迁移 本文尝试回答与 Live migration 相关的几个问题:Live migration 是什么?为什么要做 Live migration?如何做 Live migration?如果你读完本文,基本了解了这三个问题的答案, 这篇文章的主要目的也就达到了.由于本文介绍的是 OpenStack 平台上动态迁移的实现,所以读者必须对 OpenStack 有一定的了解. 虚拟机迁移简介 动态迁移包括两方面的意思,一是迁移(Migration…
智能合约的现状 以太坊在区块链上实现了智能合约的概念,用于:同质化通证发行(ERC-20).众筹.投票.存证取证等等,共同点是:合约逻辑简单,只是业务流程中的关键节点,而非整个业务流程.而智能合约想解决的信任传递,是环环相扣的,如果在传统系统环节被恶意侵入和篡改数据,那么传入智能合约的数据就是不受到信任的.因此,整体业务流程上链是智能合约发展的趋势. 智能合约的局限 智能合约在早期被设计的时候,并不打算支撑复杂的业务体系,这和它设计的初衷相违背:漏洞往往出现在程序员编写的代码和他想实现的逻辑之间…
在上一篇 jQuery打造智能提示插件 上改进,增加下拉按钮,修复点击下拉区域外不隐藏BUG 效果 下拉按钮素材: js封装,注意红色部分为BUG修复,然后传入boxwidth不带px: /* /// <reference path="jquery-autocomplete2.0.js" /> zhangs 20140516 */ (function($) { var KEY = { UP: 38, DOWN: 40, DEL: 46, TAB: 9, RETURN: 13…
实现:在树莓派2和客户机都没有公网IP条件下实现远程访问控制 不足:暂时没实现网页代理 因为校园网环境没有公网IP,无法直接访问树莓派.之前有想过SSH反向代理:使用VPN,ddns(花生壳.no-ip)等方法,但是发现n2n实现起来很方便. 1.安装n2n 仓库里的是1.x版本,不过我用起来没问题. sudo apt-get install n2n sudo chmod +s /usr/sbin/edge 2.启动n2n edge -d edge0 -c 自定义网络名 -k 密码 -u -g…
为了证实在常规手段破解下能有效保护程序核心功能(演示版本对AES加解密算法及数据库的密钥(一段字符串)进行了保护),特对此DLL保护思路进行相应的测试,包含了反编译及反射测试,看是否能得到AES加解密算法的密钥及数据库字符串. 反编译: 我这里使用了.net dll反编译工具ILSpy,以下为真实截图. 1. NetProtect.BLLDemo.dll 2. NetProtect.ConsoleApplication1.exe 3. NetProtect.CoreClr.dll 综合上图,可以…
若列表中某元素存在则返回之 任务: 你有一个列表L,还有一个索引号i,若i是有效索引时,返回L[i],若不是,则返回默认值v 解决方案: 列表支持双向索引,所以i可以为负数 >>> def list_get(L,i,v=None): if -len(L)<= i < len(L): return L[i] else: return v >>> list_get([1,2,3,4,5,6],3) 4 异常机制 >>> def list2_ge…
在安装Anaconda之前,有的已经安装过一个Python版本了,但是又不想删除这个Python版本,该怎么办呢? 概括:轻松两步--在系统环境变量中找到对应之前安装Python的路径并删除:直接将你原来安装python的整个文件夹拷贝到envs的目录下,激活该版本python的名称就是文件夹名. 我的电脑里面本来安装了Python2.7的版本,并且配置好了Django,用来做网页设计.后来我又需要一个Python3.5的版本使用tensorflow,Anaconda适用于管理多Python环境…
题目描述 给出1-n的两个排列P1和P2,求它们的最长公共子序列. 输入 第一行是一个数n, 接下来两行,每行为n个数,为自然数1-n的一个排列. 输出 一个数,即最长公共子序列的长度 输入样例 5 3 2 1 4 5 1 2 3 4 5 输出样例 3 说明 对于50%的数据,n≤1000 对于100%的数据,n≤100000 思路 常见的LCS问题是通过O(n2)的DP解决的,显然此题的数据是过不去的 如何想办法? 这里就要参考在特殊条件下LCS与LIS(最长上升序列)的转换 我们记录下第一个…
Tips 书中的源代码地址:https://github.com/jbloch/effective-java-3e-source-code 注意,书中的有些代码里方法是基于Java 9 API中的,所以JDK 最好下载 JDK 9以上的版本. 异常 当充分发挥异常的优势时,它可以提高程序的可读性.可靠性和可维护性.如果使用不当,则会产生相反的效果.本章提供了有效使用异常的指南. 69. 仅在发生异常的条件下使用异常 有一天,如果你运气不好,你可能会偶然发现这样一段代码: // Horrible…
Atitit 如何创新 创新只有在两种条件下发生:自由.效率. 创新是如何发生的呢? 创新只有在两种条件下发生:自由.效率.在自由的环境下,对效率的追逐等于创新.如果你不自由,你的思想不够开阔,你脑洞不够大,就无法创新.但如果只是脑洞够大,净搞些乱七八糟的也没什么用,还要再加上效率. 观察一下人类的历史,全部是对效率的提升:马车到汽车,还嫌不够快,飞机出来了,飞机不够快,火箭出来了.再来看通讯,以前飞鸽传书,后来电报,嫌不够快,电话也就出来了. 现在已经全面转向智能手机.今天推广渠道实在是太牛了…
1.IE6条件下有双倍的margin 解决办法:给这个浮动元素增加display:inline属性 2. 图片底部有3像素问题 解决办法:display:block;或者vertical-align:middle; 3.在IE6下,用空div清楚浮动时,div标签会有默认的高度.即: .clear{clear: both;} <div class="clear"></div> 解决办法:.clear{clear: both;overflow: hidden;he…
一.隐马尔科夫HMM如果: 有且仅仅有3种天气:0晴天.1阴天.2雨天 各种天气间的隔天转化概率mp: mp[3][3] 晴天 阴天 雨天 晴天 0.33333 0.33333 0.33333 阴天 0.33333 0.33333 0.33333 雨天 0.33333 0.33333 0.33333 有2种活动:            0去公园,1不去公园 各种天气下进行各种活动的概率: w2a[3][2] 去公园 不去公园 晴天 0.75 0.25 阴天 0.4 0.6 雨天 0.25 0.7…
建议134:有条件地使用前缀 在.NET的设计规范中,不建议使用前缀.但是,即便是微软自己依然广泛的使用这前缀. 最典型的前缀是m_,这种命名一方面是考虑到历史沿革中的习惯问题,另一方面也许我们确实有必要这么做. 在一个不是很庞大的类型中,我们确实不应该使用任何前缀.各类设计规范也总建议我们保持一个娇小的类型,但是往往事与愿违,大类型常常存在.以Task为例,它有2000多行代码.在这种类型中,如果不使用前缀,我们很难区分一个类型是实例变量还是静态变量,或者是一个const变量. 最常见的做法是…
建议104:用多态代替条件语句 假设要开发一个自动驾驶系统.在设计之初,此自动驾驶系统拥有一个驾驶系统命令的枚举类型: enum DriveCommand { Start, Stop } 当前该枚举存在两个命令:开始.停止.又假设有一个驾驶方法可以处理车辆接收到的指令.一开始我们可能像下面这样编码: static void Main(string[] args) { DriveCommand command = DriveCommand.Start; Drive(command); comman…
DNSPod 建立于2006年3月份,是一款免费智能DNS产品. DNSPod 可以为同时有电信.网通.教育网服务器的网站提供智能的解析,让电信用户访问电信的服务器,网通的用户访问网通的服务器,教育网的用户访问教育网的服务器,达到互联互通的效果. 简介 DNSPod是中国第一大DNS解析服务提供商.第一大域名托管商.它除了实时生效.不限制用户添加的域名和记录数量.提供URL转发.搜索引擎优化.域名共享管理.域名锁定.IPv6的支持.动态域名解析.API接口.批量修改管理等先进功能外,还拥有:云D…
yii2:多条件多where条件下碰到between时,between语句如何处理呢? 我有一张表:id,name,telphone,ticket_no,status,create_time等字段, 在出具多条件查询时(当不涉及到时间范围或其他范围),可以用如下语句: if (!empty($params['id'])) { $where_condition['oid'] = $params['id']; } if (!empty($params['post_name'])) { $where_…
1.使用AVAudioRecorder录制视频 AVAudioRecorder与AVAudioPlayer类似,它们都属于AVFoundation的类.AVAudioRecorder的功能类似于一个录音器,使用AVAudioRecorder录制音频十分简单,当程序控制AVAudioRecorder对象创建完成之后,可以调用AVAudioRecorder的如下方法进行录制. 1.prepareToRecord:准备开始录制.调用record方法时,如果音频还没有准备好,程序会隐式先执行该方法. 2…
对生产者和消费者问题的另一个解决办法是使用QWaitCondition,它允许线程在一定条件下唤醒其他线程.其中wakeOne()函数在条件满足时随机唤醒一个等待线程,而wakeAll()函数则在条件满足时唤醒所有等待线程. 下面通过一个典型用例:生产者和消费者,来实现这二者之间的同步.整个工程就一个main.cpp,文件如下: #include <QtCore/QCoreApplication> #include <QWaitCondition> #include <QTh…
作者QQ:(648437169) 点击下载➨Delphi阿里云邮件推送               阿里云api文档 [Delphi阿里云邮件推送]支持SingleSendMail(单一发信接口). BatchSendMail(发送批量邮件).SenderStatisticsByTagNameAndBatchID(获取指定条件下的发送数据)…
均值为1的独立指数随机Y1,Y2,组合成的Y=Y1-(Y2-1)^2/2  在Y>0的条件下也是指数随机变量 另一个条件分布 13题有错误,应该是P{x<X<x+dx,y<Y<y+dy,  0<x^2+y^2<1} / P{0<x^2+y^2<1} 这样的形式,但是P{x<X<x+dx,y<Y<y+dy,  0<x^2+y^2<1}=(1/4)dxdy该怎么解释呢....NND…
继承条件下构造方法的调用规则如下: 情况1:如果子类的构造方法中没有通过super显式调用父类的有参构造方法,也没有通过this显式调用自身的其他构造方法,则系统会默认先调用父类的无参构造方法.在这种情况下,写不写“super();”语句,效果是一样的. 情况2:如果子类的构造方法中通过super显式调用父类的有参构造方法,那将执行父类相应构造方法,而不执行父类无参构造方法. 情况3:如果子类的构造方法中通过this显式调用自身的其他构造方法,在相应构造方法中应用以上两条规则. 特别注意的是,如…
本篇文章为原创,仅供参考使用,如果需要文章中提到的所有软件安装包和依赖包(即data),请以博客园邮箱联系获取链接. 准备资料 软件 主要软件包版本 路径 系统镜像 CentOS-6.10-x86_64-bin-DVD1.iso JDK jdk-8u211-linux-x64.rpm /data/soft/jdk Oracle linuxamd64_12102_database_1of2.zipllinuxamd64_12102_database_2of2.zip /data/soft/orac…
原文链接:http://www.ibm.com/developerworks/cn/cloud/library/1508_wangyx_openstacklivemigrate/ 迁移(Migration)就是把一个虚拟机从一台物理主机搬到另一台物理主机,动态(Live)就是在迁移过程中虚拟机正常工作不影响用户的使用.对系统管理员来说,动态迁移是个非常有用的工具,当计划对一个物理主机进行更新或者升级(update/upgrade)的时候,管理员不需要关闭这个物理主机上的虚拟机,只是在更新或者升级…
最简单的扩展列,扩展行的求"最大,最小,平均"值的例子 设计图 效果图 相关函数 =MAX(B2:E2) =MIN(B2:E2) =AVERAGE(B2:E2) 这个是(满足条件)的固定列,扩展行的求和例子 设计图 效果图 相关函数 =SUM(B2{B2 > 1} + C2{C2 > 1} + D2{D2 > 1} + E2{E2 > 1}) =SUM(B2{B2 < 1} + C2{C2 < 1} + D2{D2 < 1} + E2{E2 &…
刚好最近接触了一些DirectSound,就写了一个小程序练练手,可以用来添加播放基本的wav和mp3音频文件的播放器.界面只是简单的GDI,dxsdk只使用了DirectSound8相关的接口. DirectSound的使用步骤很简单 首先你要创建一个DirectSound8设备对象 HRESULT DirectSoundCreate8( LPCGUID lpcGuidDevice, LPDIRECTSOUND8 * ppDS8, LPUNKNOWN pUnkOuter ) 当然要确保已安装了…
test=# insert into tbl_time1 select generate_series(1,100000000),clock_timestamp(),now(); INSERT 0 100000000 Time: 525833.218 ms 约:8.7分钟   COUNT,没有索引,1亿条数据. test=# select count(1) from tbl_time1;    count   -----------  100000000 (1 row) Time: 307065…
曾一度疯狂搜索run keyword if 的用法,帖子是挺多的,可惜,没有一个我想要的.现在我终于把我想要的用法,收集好了,在此总结下. 1.曾经天真的以为  run keyword if +条件 log XXX .我以为后面只能接log,所有帖子的例子都是接的log,当我想接其他关键字的时候,大写的懵逼.后面才知道,log也可以替换成其他关键字.于是我会了小小的升级版:run keyword if +条件 click element XXX.(click element只是举例) 2.不久又…