当前位置: 首页 > news >正文

Java使用Aria2c进行文件下载

在Java服务中有复杂网络环境下下载大文件的需求,一开始自己写了一个多线程下载,但遇到校园网下载1G以上大文件时直接卡死了。
经调研后决定用aria下载器,成熟稳定,避免自己去处理各种网络问题。下面记录一下windows和ubuntu系统上分别使用aria进行文件下载的步骤。

标题aria下载安装,打开jsonrpc

# ubuntu系统
sudo apt install -y aria2
aria2c --enable-rpc --rpc-listen-all=true --rpc-allow-origin-all -c -D# windows系统
# 1. 下载aria2-1.36.0-win-64bit-build1.zip,https://github.com/aria2/aria2/releases
# 2. 解压文件
# 3. 执行命令:
aria2c --enable-rpc --rpc-listen-all=true --rpc-allow-origin-all -c -D

保持aria在线的办法

写了一个监控脚本如下,放入crontab定时任务

log "aria heartbeat start"
result=$(curl -X GET --header 'Accept: application/json' 'http://localhost:6800/jsonrpc' | jq '.jsonrpc')
if [ "$result" == "" ]
thenlog "aria heartbeat failed"aria2c --enable-rpc --rpc-listen-all=true --rpc-allow-origin-all -c -D
fi

Java 代码调用 jsonrpc

文件下载中遇到的一些需要注意的地方

  1. ubuntu 系统上 aria 会在未完成下载时就创建文件。

具体场景:例如指定url下载到一个1G的文件到 /home/user/test.zip。在任务创建后,/home/user/test.zip 就会被创建,且文件大小=1G。md5sum /home/user/test.zip 不等于正确值,且随着下载一直在变化。在某些情况下,这会造成干扰,让人或系统误以为文件已经下载完成,开始后续的操作,出现错误。

我的解决方案:给aria的指令改成创建 /home/user/test.zip.temp 甚至 /home/user/test.zip.uuid,完成后再把 /home/user/test.zip.temp 或 /home/user/test.zip.uuid 移动到 /home/user/test.zip

  1. 给 aria 发送多次相同的 url 和 filename的下载指令,
  2. 重复下载

相关文章:

Java使用Aria2c进行文件下载

在Java服务中有复杂网络环境下下载大文件的需求,一开始自己写了一个多线程下载,但遇到校园网下载1G以上大文件时直接卡死了。 经调研后决定用aria下载器,成熟稳定,避免自己去处理各种网络问题。下面记录一下windows和ubuntu系统上…...

Dart 表达式以及语法糖汇总

前言 Dart语言中有许多语法糖或者说lambda表达式,语法和代码量是简洁了许多,但给想要入门的我添加了许多困扰,我经常看官方API或者第三方文档API的时候,在示例中大量的使用了类似的语法糖,让代码的可读性大大下降&…...

支付宝支付功能使用

1、进入“蚂蚁金服开放平台” https://open.alipay.com/https://open.alipay.com/ 2、下载支付宝官方 demo,进行配置和测试 文档地址 手机网站支付 DEMO | 网页&移动应用支付宝文档中心https://opendocs.alipay.com/open/02no47 demo下载 网页…...

数据库必知必会:TiDB(11)TiDB集群安装

数据库必知必会:TiDB(11)TiDB集群安装TiDB集群安装单机环境上安装集群下载并安装TiUP工具安装TiUP cluster组件创建拓扑文件配置SSH免密登录检查安装要求创建安装目录部署集群启动集群验证集群启动使用命令验证通过Dashboard查看通过Grafana查…...

ubuntu18安装Autoware 标定工具箱

参考链接:https://blog.csdn.net/zbr794866300/article/details/107109186#:~:textAutoware1.10%E4%BB%A5%E4%B8%8A%E7%9A%84%E8%BD%AF%E4%BB%B6%E9%83%BD%E9%9C%80%E8%A6%81%E5%8D%95%E7%8B%AC%E5%AE%89%E8%A3%85%E8%BF%99%E4%B8%AAcalibration%E6%A0%87%E5%AE%9A%…...

【面试题】ES6 如何将 Set 转化为数组

大厂面试题分享 面试题库后端面试题库 (面试必备) 推荐:★★★★★地址:前端面试题库Set 是 ES6 中新增的一种集合类型,类似于数组,但其成员的值是唯一的,即不会重复。关于Set,可以阅…...

vs2022 实现无线调试安卓(Windows)

文章目录VS安装安卓调试环境前提条件Android SDK 版本查看安卓开启无线调试开启开发者模式打开USB调试功能打开无线调试功能查看配对信息(再次点击无限调试,不是switch开关)准备电脑端输入adb命令配对安卓查看设备清单如果没有设备VS无线调试…...

手把手教你做插件(2)模块大串联

0,前言 这篇文章笔记比较简略,大部分的操作都是和上一篇文章重复了,建议先看上一节文章,直达电梯:UE4 手把手教你做插件(1) 从代码引用插件_asiwxy的博客-CSDN博客UE4 手把手教你创建插件https:…...

LU Accepted or Rejected过程介绍

本文介绍LU成功和失败的过程。 LU accepted过程 [MS->NW] MM__LOCATION_UPDATING_REQUEST(LU type:MM_NORMAL_LU) MM_T3210_TIMER_ID Timer starts [NW->MS] MM__LOCATION_UPDATING_ACCEPT MM_T3210_TIMER_ID Timer stopped 通过OTA消息LOCATION_UPDATE_REQUEST查看LU ty…...

Teradata退了? 无所谓,GBASE会出手

近期,就在2月15日,国内IT界有搞出个大瓜,Teradata以对中国当前及未来商业环境的不确定性,慎重考虑后决定退出中国运营,后续将进入中国公司关闭程序。Teradata是一家有着40多年历史的数据仓库企业,被业界专业…...

华为OD机试 - 病菌感染(Python) | 机试题+算法思路+考点+代码解析 【2023】

病菌感染 题目 在一个地图中(地图有N*N个区域组成) 有部分区域被感染病菌 感染区域每天都会把周围上下左右的四个区域感染 请根据给定的地图计算多少天以后全部区域都会被感染 如果初始地图上所有区域都被感染 或者没有被感染区域返回-1 备注 1 <= N < 200 输入 一行…...

前置知识-边值问题、打靶法、bvp 系列函数的用法

1.2 边值问题 微分方程边值问题(Boundary Value Problem,简称BVP)是微分方程求解中的一个重要问题。与初值问题(Initial Value Problem,简称IVP)不同,BVP是在某个区间内寻求微分方程解的特定边界条件下的解。 在实际问题中,许多微分方程的解必须满足一些特定的边界条…...

为什么越来越多的企业选择智能客服系统?

现在智能客服系统越来越普遍&#xff0c;但是大部分的企业在配备智能客服系统的同时也会配置人工客服。因为目前为止&#xff0c;智能客服并不可以完全取代人工客服。智能客服系统之所以能够受到众多企业的青睐&#xff0c;主要是存在以下几点原因&#xff1a; 1、反应速度快&a…...

打造一款日志分析工具

一、简介 作为一名安全从业者&#xff0c;网络安全事件的应急响应工作是必不可少的&#xff0c;那么在应急支撑时&#xff0c;针对大量的日志数据便需要借助自动化工具实现快速的归类检测&#xff0c;并提取出所需的关键日志数据。本篇文章主要通过利用python语言编写一款web日…...

网络编程基础知识

套接字类型:1.字节流套接字(stream) 2.数据报接套接字(datagram) 3.原始套接字(raw) 端口:1.周知端口: 0~1023 2.注册端口: 1024~49151 3.动态端口: 49152~65535 OSI七层协议结构应用层表示层会话层...

2023北京老博会(CBIAIE全国老年产业必参盛会)

CBIAIE北京老博会|把握政策导向&#xff0c;迎合市场需求&#xff0c;引导销售渠道建设&#xff0c;搭建国际化的商业平台&#xff1b; 2023第十届中国&#xff08;北京&#xff09;国际老年产业博览会&#xff08;CBIAIE北京老博会&#xff09; The 2023 tenth China (Beijin…...

【字典转模型 Objective-C语言】

一、点按钮,弹出的这个效果,这实际上是个Label, 这实际上是一个Label,点按钮弹出的这个效果, 设置一个Label的背景色、前景色、透明度、等等, 让它加进来,然后通过动画让它隐藏掉, 这就是,这个效果的实现思路, 咱们这个效果,先稍微往后放一放, 这个并不是重点…...

【LeetCode】剑指 Offer(6)

目录 写在前面&#xff1a; 题目&#xff1a;剑指 Offer 12. 矩阵中的路径 - 力扣&#xff08;Leetcode&#xff09; 题目的接口&#xff1a; 解题思路&#xff1a; 代码&#xff1a; 过啦&#xff01;&#xff01;&#xff01; 写在最后&#xff1a; 写在前面&#xff…...

论文投稿指南——中文核心期刊推荐(法律)

【前言】 &#x1f680; 想发论文怎么办&#xff1f;手把手教你论文如何投稿&#xff01;那么&#xff0c;首先要搞懂投稿目标——论文期刊 &#x1f384; 在期刊论文的分布中&#xff0c;存在一种普遍现象&#xff1a;即对于某一特定的学科或专业来说&#xff0c;少数期刊所含…...

Qt音视频开发15-动态切换解码内核的设计

一、前言 动态切换解码内核这个需求也是源自客户的真实需求&#xff0c;既然是动态切换&#xff0c;那肯定是运行期间切换&#xff0c;而不是通过改变标志位重新编译程序来切换&#xff0c;最开始做的就是这种方式&#xff0c;这样就是实现起来简单&#xff0c;但是用起来不够…...

ArkUI-X与Android桥接通信之消息通信

平台桥接用于客户端&#xff08;ArkUI&#xff09;和平台&#xff08;Android或iOS&#xff09;之间传递消息&#xff0c;即用于ArkUI与平台双向数据传递、ArkUI侧调用平台的方法、平台调用ArkUI侧的方法。本文主要介绍Android平台与ArkUI交互&#xff0c;ArkUI侧具体用法请参考…...

CommandLineRunner详细教程

文章目录 1. CommandLineRunner基础概念和背景1.1 什么是CommandLineRunner&#xff1f;1.1.1 核心概念1.1.2 接口定义 1.2 为什么需要CommandLineRunner&#xff1f;1.3 CommandLineRunner的特点1.3.1 执行时机1.3.2 与ApplicationRunner的区别 2. 环境搭建和项目结构2.1 Mave…...

Python Day46

Task&#xff1a; 1.不同CNN层的特征图&#xff1a;不同通道的特征图 2.什么是注意力&#xff1a;注意力家族&#xff0c;类似于动物园&#xff0c;都是不同的模块&#xff0c;好不好试了才知道。 3.通道注意力&#xff1a;模型的定义和插入的位置 4.通道注意力后的特征图和热力…...

综述论文解读:Editing Large Language Models: Problems, Methods, and Opportunities

论文为大语言模型知识编辑综述&#xff0c;发表于自然语言处理顶会ACL(原文链接)。由于目前存在广泛的模型编辑技术&#xff0c;但一个统一全面的分析评估方法&#xff0c;所以本文&#xff1a; 1、对LLM的编辑方法进行了详尽、公平的实证分析&#xff0c;探讨了它们各自的优势…...

web3-基于贝尔曼福特算法(Bellman-Ford )与 SMT 的 Web3 DeFi 套利策略研究

web3-基于贝尔曼福特算法&#xff08;Bellman-Ford &#xff09;与 SMT 的 Web3 DeFi 套利策略研究 如何找到Defi中的交易机会 把defi看做是一个完全开放的金融产品图表&#xff0c;可以看到所有的一切东西&#xff1b;我们要沿着这些金融图表找到一些最优的路径&#xff0c;就…...

Java-IO流之序列化与反序列化详解

Java-IO流之序列化与反序列化详解 一、序列化与反序列化概述1.1 基本概念1.2 核心接口与类1.3 应用场景 二、Java序列化的基本实现2.1 实现Serializable接口2.2 使用ObjectOutputStream进行序列化2.3 使用ObjectInputStream进行反序列化 三、序列化的高级特性3.1 serialVersion…...

Ref vs. Reactive:Vue 3 响应式变量的最佳选择指南

Ref vs. Reactive&#xff1a;Vue 3 响应式变量的最佳选择指南 在 Vue 3 的 Composition API 中&#xff0c;ref 和 reactive 是创建响应式数据的两种主要方式。许多开发者经常困惑于何时使用哪种方式。本文将深入对比两者的差异&#xff0c;帮助您做出最佳选择。 核心概念解…...

n8n 自动化平台 Docker 部署教程(附 PostgreSQL 与更新指南)

n8n 自动化平台 Docker 部署教程&#xff08;附 PostgreSQL 与更新指南&#xff09; n8n 是一个强大的可视化工作流自动化工具&#xff0c;支持无代码或低代码地集成各种服务。本文将手把手教你如何通过 Docker 快速部署 n8n&#xff0c;并介绍如何使用 PostgreSQL、设置时区以…...

day46 python预训练模型补充

目录 一、预训练模型的背景知识 二、实验过程 &#xff08;一&#xff09;实验环境与数据准备 &#xff08;二&#xff09;预训练模型的选择与适配 &#xff08;三&#xff09;训练策略 三、实验结果与分析 四、学习总结与展望 一、预训练模型的背景知识 在传统的神经网…...

Qt(part 2)1、Qwindow(菜单栏,工具栏,状态栏),铆接部件,核心部件 ,2、添加资源文件 3、对话框

1、Qwindow tips&#xff1a;1&#xff0c;首先为什么创建出的对象基本都是指针形式&#xff0c;个人觉得是对象树的原因&#xff08;自动释放内存&#xff09;&#xff0c;指针来访问成员函数->的形式。2&#xff0c;菜单栏只能一个的&#xff0c;放窗口基本Set&#xff0c…...