Java 限制上传速度?

2023-12-10

我想以编程方式限制 Java 中的上传或下载操作。我假设我需要做的就是检查上传速度并插入Thread.sleep()因此像这样:

while (file.hasMoreLines()) {
    String line = file.readLine();
    for (int i = 0; i < line.length(); i+=128) {
        outputStream.writeBytes(line.substr(i, i+128).getBytes());
        if (isHittingLimit())
            Thread.sleep(500);
    }
}

上面的代码可以工作吗?如果没有,有更好的方法吗?有描述该理论的教程吗?


令牌桶算法是一种限制上传或下载带宽的方法。 你应该阅读本文:它解释了该算法的使用。

Using 番石榴速率限制器 :

// rate = 512 permits per second or 512 bytes per second in this case
final RateLimiter rateLimiter = RateLimiter.create(512.0); 

while (file.hasMoreLines()) {
    String line = file.readLine();
    for (int i = 0; i < line.length(); i+=128) {
        byte[] bytes = line.substr(i, i+128).getBytes();
        rateLimiter.acquire(bytes.length);
        outputStream.writeBytes(bytes);
    }
}

正如 Guava 文档中所解释的:需要注意的是,请求的许可数量永远不会影响请求本身的限制(调用 acquire(1) 和调用 acquire(1000) 将导致完全相同的限制,如果有的话),但它会影响下一个请求的限制。也就是说,如果一个昂贵的任务到达一个空闲的 RateLimiter,它将立即被授予,但下一个请求将经历额外的限制,从而支付昂贵任务的成本。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java 限制上传速度? 的相关文章

随机推荐

  • Python-显示可以在代码中关闭的消息框(无需用户干预)

    我正在使用 Python 创建测试脚本 我需要在脚本继续运行时向用户显示一条消息 这是为了进行一些状态更新 例如 保存测试结果 不应等待用户单击 确定 本质上 我需要创建一条弹出并关闭的消息 而无需用户执行此操作 目前 我正在使用easyg
  • 为什么我的 PHP 多维数组不起作用?

    我的多维数组正在工作 但我似乎无法使用explode or in array调用 via 时限制数组 GET
  • Sphinx 文件之间的链接函数

    我一直在 stackoverflow 和官方文档中寻找答案 但仍然找不到解决方案 在主要的 Sphinx doc 文档中 我有 Contents toctree views index rst db index rst 在views ind
  • svn -> 具有多个主干/分支/标签的 git 迁移

    我有一个 SVN 存储库 其中包含以下内容current结构 project1 branches trunk tags project2 branches trunk tags which 起初有这样的结构 project branches
  • 使用 AppActivate 更改活动窗口

    我正在尝试将一些击键发送到程序 我下面有一些示例代码 直到最终为止都可以正常工作 Alt 命令 我相信这是由于窗口名称更改为 Notepad1 to NotePad2 谁能帮我改变AppActivate路径到 Notepad2 之后objS
  • setBackgroundDrawable() 和 setBackground() 之间的区别

    我刚刚将 Android 项目的构建目标升级到 API 17 现在收到有关 setBackgroundDrawable 已弃用的警告 答案似乎是使用 setBackground 但这在旧版本中不可用 使用新方法是否有任何实际优势 或者谷歌只
  • DropDownlistFor MVC 4 中的 Optgroup 不支持 Mvc 验证

    public static MvcHtmlString DropDownGroupListFor
  • 通过 XML-RPC 设置 WordPress 帖子的特色图像

    大约 6 个月前 WordPress API 进行了更新 允许设置帖子的缩略图 或特色 图像 http www maxcutler com 2012 04 04 xml rpc in wordpress 3 4 我正在尝试使用它 但它对我不
  • 从 Eclipse 打包和部署 Jython 程序

    因此 我一直致力于编写一些 Jython 代码 我一直在使用最新版本的 Eclipse IDE 和 PyDev 插件进行开发 到目前为止 情况还算可以忍受 我已经让所有 Python 脚本正常工作 并且成功地将几个 JAR 文件和另一个 J
  • 获取node.js应用程序的公共IP地址

    是否有任何node js模块可用于获取发出请求的客户端计算机的公共IP地址 我不是指 IPv4 或 IPv6 我需要像您访问时获得的公共 IPhttp www whatismyip com 我努力了req connection remote
  • 如何从关系中删除子对象或父对象?

    我做了一个有更多关系的小应用程序 现在我想删除我的表的详细信息我该如何删除我没有任何要删除的想法 关系如下 泛卡 gt 员工 一对一 员工 gt 项目经理 与员工双向多对一关联 项目 gt 项目经理 与项目的双向多对一关联 现在我想把表数据
  • Spring Boot Whitelabel 错误页面

    我坚持使用这个简单的 MVC 示例 当我启动应用程序并转到 localhost 8080 时 我收到 Whitelabel 错误页面 即使我在 src main resources templates 中创建了 index html 我还在
  • 在 Visual Studio Team Services 路径中找不到curl

    我正在使用托管代理在 Visual Studio Team Services 中进行发布管理 我有一个cURL上传文件我的发布定义任务上周开始工作 并且在过去几周我已经成功进行了几次部署 今天 我从相同的版本定义创建了一个新版本 并且在cU
  • 角度 cli 升级后重新安装角度通用

    我升级了我的angular cli从6版本到8 1 Angular universal改变了简单的施工方法 nguniversal module map ngfactory loader 我应该重新部署 清除旧的配置 run ng add
  • 将 Google 脚本插件发布到 G Suite Marketplace SDK

    我有一些 Google Sheet 脚本代码 我想将其提取到 Google Sheet Addon 中 以便仅在我们的域 而不是公共网络 中发布 我团队中的个人过去曾成功地做到过这一点 但之后2019 年 1 月 25 日 Google 从
  • awk 打印匹配的列如果存在则打印未找到

    我的文本文件如下所示 date 2017 10 10 ip 192 168 1 1 22 inbound 100 outbound 100 date 2017 10 10 ip 192 168 1 1 22 inbound 100 date
  • LINQ to SQL IsDiscriminator 列不能继承吗?

    我正在设计我的数据库和 LINQ To SQL ASP NET Web 应用程序 想象一下我有两种类型的页面 普通页面和根页面 有些页面是根 有些页面不是 我有一个 Page 数据库表和一个 RootPage 数据库表 Page PK Pa
  • 未检测到 OWIN 启动类

    我试图在现有应用程序中实现 OWIN WS Federation 它是一个使用 asp net VB 编写的 Web 应用程序 我已经添加了 Nugetpackages 中的所有引用添加的参考文献列表 然后我将启动类添加到 2 个文件中作为
  • 如何指定Ubuntu中CMake的安装位置?

    我已经下载了cmake 3 11 3 Linux x86 64 sh文件 然后我执行它并创建了一个文件夹 其中包含bin文件有cmake在上面 我尝试编辑 etc environment像这样 PATH usr local sbin usr
  • Java 限制上传速度?

    我想以编程方式限制 Java 中的上传或下载操作 我假设我需要做的就是检查上传速度并插入Thread sleep 因此像这样 while file hasMoreLines String line file readLine for int