实时下载速度的计算:

news/2024/11/9 3:37:56/
所谓的实时下载速度也是按秒计算的,直接每秒计算一下当前下载量与上次记录的下载量便可得到从
上一秒到这一秒的下载数据量,这样实时下载速度就得出来了,至于剩余时间,可以将当前下载的数
据量与耗用的秒为单位的时间进行计算,然后通过需要下载的数据大小来预估剩余时间,公式这样:
剩余时间(秒)=须下载数据总大小/(当前耗用时间(秒)/当前下载大小)
然后把剩余时间转换一下格式就可以得到分钟、小时、天等信息了

在VC中我们可以这样弄:
设置定时器,固定时间统计下载的数据量,从而得到下载速度,然后用当前的速度估算未来需要耗费的时间。
定时器:1s
文件大小:Size
已下载的部分:Downloaded
前一秒已下载的部分:Downloaded_old


剩余时间:(Size - DownLoad) / (Downloaded - Downloaded_old)


一般我们做下载器时,下载速度都不会选择平均下载速度,而是选择实时下载速度!


import java.util.Date;
import java.util.Random;
import java.util.Timer;
import java.util.TimerTask;public class Speed {private static int count = 0;private static int lastCount = 0;private static long lasttime=new Date().getTime();public static void main(String[] args) throws Exception {new Thread(new Runnable() {@Overridepublic void run() {try {getSpeed001();} catch (Exception e) {e.printStackTrace();}}}).start();// 按下载量加1所花费的时间来算getSpeed002();}// 按下载量加1所花费的时间来算private static void getSpeed002() throws InterruptedException {// 直接每秒计算一下当前下载量与上次记录的下载量便可得到从上一秒到这一秒的下载数据量,这样实时下载速度就得出来了while (true) {int time=1;int key = new Random().nextInt(100);//System.out.println(key);int mod = key % 7;switch (mod) {case 0:time= 1;break;case 1:time= 1;break;case 2:time= 2;break;case 3:time= 3;break;case 4:time= 4;break;case 5:time= 5;break;case 6:time= 6;break;default:break;}Thread.sleep(time*1000);long nowtime=new Date().getTime();count++;long taketime = nowtime - lasttime;System.out.println("getSpeed002,speed=" + taketime/1000);lasttime=nowtime;}}// 按1s下载量来计算。private static void getSpeed001() throws Exception {TimerTask timerTask_speed = new TimerTask() {@Overridepublic void run() {int speed = count - lastCount;System.out.println("getSpeed001,count=" + count + ",lastCount=" + lastCount+ ",speed=" + speed);lastCount = count;}};Timer timer_speed = new Timer();timer_speed.schedule(timerTask_speed, 0, 1000);// 1s判断一次。计算实时速度,// 直接每秒计算一下当前下载量与上次记录的下载量便可得到从上一秒到这一秒的下载数据量,这样实时下载速度就得出来了while (true) {Thread.sleep(1000);// 每秒下载5int key = new Random().nextInt(100);//System.out.println(key);int mod = key % 7;switch (mod) {case 0:count += 0;break;case 1:count += 1;break;case 2:count += 2;break;case 3:count += 3;break;case 4:count += 4;break;case 5:count += 5;break;case 6:count += key;break;default:break;}}}
}



http://www.ppmy.cn/news/206349.html

相关文章

对3800x初步超频总结

3800x超频: 原则散热无法保证全核心高频率高使用工作,在使用原装散热时最好不要超频 (一旦超过4.2hz 继续往上加可能无法通过ad64fpu烤鸡测试)-使用4.2以上全核烤鸡会在几分钟之后达到温度临界值,电脑自动蓝屏 //尽管游…

服务器cpu哪个型号可以超频,CPU超频史上的14个神器:你用过几个?

超频,是围绕处理器永恒的话题。虽然这几年大家的热情消退了不少,各方面的限制也让超频空间大大缩减,但是回顾历史,每每想起那一颗颗神器,我们仍难以抑制激动的心情。这里我们就看一下历史上的一些超频英雄,…

华擎主板bios设置图解_【华擎Z170评测】BIOS设置及超频方法简介_华擎 Z170 超频方程式_主板评测-中关村在线...

由于本次使用了是Intel酷睿i5-6600K处理器,默认频率为3.5GHz-3.9GHz,因此我们首先将处理器超频至4.5GHz,为了确定平台的稳定性,此时需要将处理器的电压调整到1.35V。具体操作方法是在BIOS界面中,选择超频工具菜单&…

超频DIY之『超频FAQ』

超频FAQ   这只是对超频的基本提示/技巧的汇集,以及它是什么和它包括什么的一个基本的概观。  超频能到什么程度?   不是所有的芯片/部件超频都一样的。仅仅因为有人让Prescott上到了5 GHz,那并不意味着你的就保证能到4 GHz&#xff0c…

cpu超频

倍频: 倍频系数是指CPU主频与外频之间的相对比例关系。最初CPU主频和系统总线速度是一样的,但CPU的速度越来越快,倍频技术也就相应产生。它的作用是使系统总线工作在相对较低的频率上,而CPU速度可以通过倍频来提升。CPU主频计算方…

面试官:useEffect和useLayoutEffect有什么区别?

您好,如果喜欢我的文章,可以关注我的公众号「量子前端」,将不定期关注推送前端好文~ Effect数据结构 顾名思义,React底层在函数式组件的Fiber节点设计中带入了hooks链表的概念(memorizedState)&#xff0…

七个很好的 Python 工具,让你的生活更轻松

有一句谚语“你不必重新发明轮子”。工具就是最好的例子。它可以帮助您以简单的方式实现复杂且耗时的功能。在我看来,为了提高生产力和效率,我们需要使用一些可用的最佳工具。在这里,我整理了 7 个工具,可以帮助您完成开发之旅。 …

Qt OpenGL(四十二)——Qt OpenGL 核心模式-GLSL(二)

提示:本系列文章的索引目录在下面文章的链接里(点击下面可以跳转查看): Qt OpenGL 核心模式版本文章目录 Qt OpenGL(四十二)——Qt OpenGL 核心模式-GLSL(二) 冯一川注:GLSL其实也是不断迭代的,比如像3.3版本中,基本数据类型浮点型只支持float型,而GLSL4.0版本开始就…