• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
导航菜单
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • windows
  • 服务器硬件
  • 服务器运维
  • 云计算
  • 虚拟化
  • IIS教程
  • Linux
  • Apache
  • Ftp
  • DNS
  • Nginx
您的位置:首页 > 服务器 >云计算 > Java服务端限制下载速度,java服务端下载速度

Java服务端限制下载速度,java服务端下载速度

作者:网友 字体:[增加 减小] 来源:互联网

本文主要包含极光推送java服务端,java服务端开发,java socket服务端,java客户端和服务端,java服务端等服务器相关知识,网友希望可以进行参考

Java服务端限制下载速度,java服务端下载速度


没有资源取之不尽用之不竭。服务器带宽有限,能限制一点算一点。最近在使用云存储openstack swift做文件存储下载。如题先上限速code:

private Long writeResponse(HttpServletResponse response,InputStream stream, Long speed, Long startTime, MessageDigest md5) {
		byte[] b = null;
		b = new byte[SwiftFileDownload.Download_Read_Unit];
		try {
			OutputStream os = null;
			os = response.getOutputStream();
			long count = 0;
			int j;
			while ((j = stream.read(b)) != -1) {

				if (count + j > speed) {
					int need = (int) (speed - count);
					// 剩下的数
					int left = (int) (j + count - speed);
					byte[] temp = new byte[need];
					byte[] leftTemp = new byte[left];
					System.arraycopy(b, 0, temp, 0, need);
					System.arraycopy(b, need, leftTemp, 0, left);
					os.write(temp);
					md5.update(temp);
					os.flush();
					long endTime = System.currentTimeMillis();
					long sleepTime = startTime + 1000 - endTime;
					if (sleepTime > 0) {
						Thread.sleep(sleepTime);
					}

					startTime = System.currentTimeMillis();
					count = 0;
					os.write(leftTemp);
					md5.update(leftTemp);
					os.flush();
					count += left;
					continue;
				}

				if (count + j < speed) {
					count += j;
					byte[] temp = new byte[j];
					System.arraycopy(b, 0, temp, 0, j);
					os.write(temp);
					md5.update(b);
					os.flush();
					continue;
				}

				if (count + j == speed) {
					byte[] temp = new byte[j];
					System.arraycopy(b, 0, temp, 0, j);
					os.write(temp);
					md5.update(b);
					os.flush();
					long endTime = System.currentTimeMillis();
					long sleepTime = startTime + 1000 - endTime;
					if (sleepTime > 0) {
						Thread.sleep(sleepTime);
					}
					// 重置计数器
					startTime = System.currentTimeMillis();
					count = 0;
					continue;

				}
			}

		} catch (IOException e1) {
			log.warn("writeResponse() - response=" + response + ", IOException",e1);
			throw new BusinessSwiftException(e1);
		} catch (InterruptedException e) {
			log.warn("writeResponse() - response=" + response + ", IOException",e);
			throw new BusinessSwiftException(e);
		} finally {
			try {
				stream.close();
			} catch (IOException e) {
				log.warn("writeResponse() - 关闭swift对象流出错", e);
				throw new BusinessSwiftException(e);
			}
		}
		
		return startTime;

	}

主要的思想:一段时间内写一段数据流,暂停1秒减去读取与写出的所有操作的时间。实测在10%左右的浮动。

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • Java服务端限制下载速度,java服务端下载速度

相关文章

  • python模块,python
  • Hive学习笔记(二),hive学习笔记
  • CentOS6.5系统下Hadoop2.6.0完全分布式环境安装与配置信息介绍,centos6.5hadoop2.6
  • getRequestDispatcher()与sendRedirect()的区别,request.sendredirect
  • R.net简介(原创翻译),r.net简介原创翻译
  • HBase RegionServer详解(未完),hbaseregionserver
  • Hadoop之——正常启动而无法正常关闭,hadoop无法正常关闭
  • Greenplum+Hadoop学习笔记-15-管理数据,hadoop-15-
  • The superclass &quot;javax.servlet.http.HttpServlet&quot; was not found on the Java Build Path,httpservlet
  • Greenplum+Hadoop学习笔记-14-定义数据库对象之创建与管理表空间,hadoop-14-

文章分类

  • windows
  • 服务器硬件
  • 服务器运维
  • 云计算
  • 虚拟化
  • IIS教程
  • Linux
  • Apache
  • Ftp
  • DNS
  • Nginx

最近更新的内容

    • apache hadoop-2.6.0-CDH5.4.1 安装笔记,hadoop2.6.0安装
    • Hadoop之——有趣问答(一),hadoop问答
    • Zoho产品经理谈中小企业面临的挑战及应对之策,zoho产品经理
    • 使用 ElasticSearch + LogStash + Kibana 来可视化网络流量,kibanaelasticsearch
    • MapReduce编程之倒排索引,mapreduce编程索引
    • Spark性能优化指南:高级篇
    • Linux索引节点(Inode:no space for device)用满导致的一次故障,linuxinode
    • 《转》 Openstack Grizzly 指定 compute node 创建 instance,《转》openstack
    • 基于 ssh + Xpra 构建 Docker 桌面系统,xpradocker
    • Spark编程指南V1.4.0(翻译),编程指南v1.4.0

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有