保定市做网站wordpress评论框制作

web/2025/10/8 7:06:09/文章来源:
保定市做网站,wordpress评论框制作,网站开发合同缺陷,单人给一个公司做网站费用背景 因项目需要#xff0c;我们服务每天都需要通过SFTP协议来对接上下游进行文件传输#xff0c;但是对于一些大文件#xff0c;在与第三方公司的服务器对接过程中很可能会因为网络问题或上下游服务器性能问题导致文件上传或者下载被中断#xff0c;每次重试都需要重新对…背景 因项目需要我们服务每天都需要通过SFTP协议来对接上下游进行文件传输但是对于一些大文件在与第三方公司的服务器对接过程中很可能会因为网络问题或上下游服务器性能问题导致文件上传或者下载被中断每次重试都需要重新对文件进行上传和下载非常浪费带宽、服务器资源和时间因此我们需要尽量提升文件传输效率减少不必要的文件传输损耗。 解决思路 我们平时用一些下载软件都有个断点续传功能可以基于上一次已经传输的偏移量进行传输不需要重复传输已经传输完整的数据大大节省文件下载或者文件上传时间。 在通过SFTP进行文件传输同样可以利用该原理进行断点续传。 文件上传原理 上传文件时你首先需要与SFTP服务器建立一个安全会话Session。这需要提供用户名、密码、SFTP服务器的地址及端口。一旦会话建立就可以打开一个SFTP通道Channel进行文件传输。 在处理大文件时为了防止因网络问题导致的文件传输中断以及减少不必要的重复传输我们通常会采用断点续传的方式。这意味着如果文件传输在中途中断下一次传输可以从上次结束的地方开始而不是重新开始。 JSch库的put方法支持断点续传。通过检查远程文件的大小你可以确定已经上传的数据量。然后使用FileInputStream来打开本地文件并使用skip方法跳过已上传的部分。最后使用put方法的RESUME标志从上次中断的地方开始上传剩余的文件部分。 这种方法的好处是 节省时间不需要重新上传已经传输过的部分。减少资源消耗减少网络带宽的使用特别是在网络不稳定或计费昂贵的环境中。提高可靠性即使在传输过程中发生中断也可以保证最终文件的完整性。 文件下载原理 下载文件的原理与上传类似。同样需要建立会话和打开SFTP通道。使用get方法从SFTP服务器下载文件。如果你需要实现断点续传下载你需要检查本地文件的大小以此来确定已经下载的数据量。 如果本地文件的大小小于远程文件的大小说明下载尚未完成你可以从本地文件的末尾开始继续下载。JSch的get方法同样支持RESUME标志允许你指定从远程文件的某个位置开始下载。 断点续传下载的好处包括 节省时间如果下载被中断可以继续从中断点开始而不是从头开始。减少资源消耗只下载尚未接收的文件部分节约网络带宽。提高可靠性保证即使在网络不稳定情况下也可以最终获取完整文件。 代码实现 这里使用了com.github.mwiede的Jsch版本是基于Jcraft 0.1.55增加了一些新算法的支持。 dependencygroupIdcom.github.mwiede/groupIdartifactIdjsch/artifactIdversion0.2.16/version /dependency文件上传断点续传实现 加入SftpProgressMonitor可以更好监控文件传输的进度 package com.eshare.resumablesftp;import com.jcraft.jsch.*;import java.io.*;public class SFTPResumeUpload {private static final int PORT 22;public static void main(String[] args) {String user parallels;String passwd xxx;String host 192.168.50.33;String localFilePath /Users/evan/Downloads/1080p.mp4;String remoteFilePath /tmp/evan/test10.mp4;try {// 设置JSchJSch jsch new JSch();Session session jsch.getSession(user, host, PORT);session.setPassword(passwd);// 设置配置信息java.util.Properties config new java.util.Properties();config.put(StrictHostKeyChecking, no);session.setConfig(config);// 连接到服务器session.connect();// 打开SFTP通道Channel channel session.openChannel(sftp);channel.connect();ChannelSftp sftpChannel (ChannelSftp) channel;long remoteSize 0;// 检查远程文件是否存在SftpATTRS attrs sftpChannel.lstat(remoteFilePath);if (!attrs.isReg()) {throw new FileNotFoundException(Remote file does not exist: remoteFilePath);}// 检查远程文件大小remoteSize attrs.getSize();// 打开本地文件RandomAccessFile raf new RandomAccessFile(localFilePath, r);// 计算从哪里开始上传long startPos Math.max(0, remoteSize);raf.seek(startPos);// 文件上传long totalBytes raf.length();OutputStream os sftpChannel.put(remoteFilePath, new MyProgressMonitor(totalBytes - remoteSize), ChannelSftp.RESUME);byte[] buffer new byte[1024 * 1024];//1Mint bytesRead;while ((bytesRead raf.read(buffer)) ! -1) {os.write(buffer, 0, bytesRead);}os.close();raf.close();// 检查文件传输是否已经完成ÒÒif (sftpChannel.lstat(remoteFilePath).getSize() totalBytes) {System.out.println(File upload completed successfully.);} else {System.out.println(File upload failed.);}// 关闭连接sftpChannel.exit();session.disconnect();} catch (JSchException | IOException | SftpException e) {e.printStackTrace();}}public static class MyProgressMonitor implements SftpProgressMonitor {private long totalBytes;private long transferredBytes 0;public MyProgressMonitor(long totalBytes) {this.totalBytes totalBytes;}Overridepublic void init(int op, String src, String dest, long max) {System.out.println(Starting transfer: src -- dest);}Overridepublic boolean count(long bytes) {transferredBytes bytes;double percentage (double) transferredBytes / totalBytes * 100;System.out.printf(Transferred %d of %d bytes (%.2f%%)\n, transferredBytes, totalBytes, percentage);return true;}Overridepublic void end() {System.out.println(\nTransfer complete.);}}}断点续传测试步骤 1.我本地放一个2.1G的测试文件 2.准备好远程目录这里提前创建好一个测试目录在远程虚拟机/tmp/evan 3.启动程序控制台会打印文件传输进度文件传输到52%左右我把程序直接杀死来模拟网络中断或者传输中断的情况 4.重新启动程序让程序自动从上一次传输的偏移量继续上传大家可以尝试多次中断来模拟。 5.文件传输完成后到远程目录对比文件大小这里也可以通过文件checksum来进行对比以下输出结果可以看到文件被成功上传。 文件下载断点续传实现 package com.eshare.resumablesftp;import com.jcraft.jsch.*;import java.io.*; import java.math.BigInteger; import java.nio.file.*; import java.security.MessageDigest;public class SFTPResumeDownload {private static final int PORT 22;public static void main(String[] args) {String user parallels;String passwd xxx;String host 192.168.50.33;String localFilePath /Users/evan/Downloads/test10.mp4;String remoteFilePath /tmp/evan/test10.mp4;try {// 设置JSchJSch jsch new JSch();Session session jsch.getSession(user, host, PORT);session.setPassword(passwd);// 设置配置信息java.util.Properties config new java.util.Properties();config.put(StrictHostKeyChecking, no);session.setConfig(config);// 连接到服务器session.connect();// 打开SFTP通道Channel channel session.openChannel(sftp);channel.connect();ChannelSftp sftpChannel (ChannelSftp) channel;// 检查远程文件是否存在SftpATTRS attrs null;try {attrs sftpChannel.lstat(remoteFilePath);} catch (SftpException e) {if (e.id ChannelSftp.SSH_FX_NO_SUCH_FILE) {throw new FileNotFoundException(Remote file does not exist: remoteFilePath);}throw e;}// 检查本地文件大小long localSize new File(localFilePath).length();// 打开远程文件long remoteSize attrs.getSize();// 检查文件是否正常if (localSize remoteSize) {throw new FileSystemAlreadyExistsException(Local file exists and please check the size: remoteFilePath);}/// 计算从哪里开始下载long startPos Math.max(0, localSize);// 文件下载FileOutputStream fos new FileOutputStream(localFilePath, true);InputStream is sftpChannel.get(remoteFilePath, new MyProgressMonitor(remoteSize - startPos), startPos);byte[] buffer new byte[1024 * 1024];//1Mint bytesRead;while ((bytesRead is.read(buffer)) ! -1) {fos.write(buffer, 0, bytesRead);}is.close();fos.close();// 检查文件下载是否已经完成if (new File(localFilePath).length() remoteSize) {System.out.println(File download completed successfully.);} else {System.out.println(File download failed.);}// 关闭连接sftpChannel.exit();session.disconnect();} catch (JSchException | IOException | SftpException e) {e.printStackTrace();}}public static class MyProgressMonitor implements SftpProgressMonitor {private long totalBytes;private long transferredBytes 0;public MyProgressMonitor(long totalBytes) {this.totalBytes totalBytes;}Overridepublic void init(int op, String src, String dest, long max) {System.out.println(Starting transfer: src -- dest);}Overridepublic boolean count(long bytes) {transferredBytes bytes;double percentage (double) transferredBytes / totalBytes * 100;System.out.printf(Downloaded %d of %d bytes (%.2f%%)\n, transferredBytes, totalBytes, percentage);return true;}Overridepublic void end() {System.out.println(\nTransfer complete.);}} } 断点续传测试步骤 1.我远程放一个2.1G的测试文件 parallelsubuntu-linux-22-04-desktop:/tmp/evan$ ls -lh test10.mp4 -rw-rw-r-- 1 parallels parallels 2.1G Jan 23 11:15 test10.mp42.准备好本地目录这里是我本机下载目录/Users/evan/Downloads/ 3.启动程序控制台会打印文件传输进度文件传输到86%左右我把程序直接杀死来模拟网络中断或者传输中断的情况 4.重新启动程序让程序自动从上一次传输的偏移量继续上传大家可以尝试多次中断来模拟。 5.文件传输完成后到远程目录对比文件大小这里也可以通过文件checksum来进行对比以下输出结果可以看到文件被成功上传。 evanEvandeMBP Downloads % ls -lh test10.mp4 -rw-r--r-- 1 evan staff 2.1G Jan 23 14:39 test10.mp4 evanEvandeMBP Downloads %

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/88928.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何设计好网站深圳专业网站建设公司

微软发布了Entity Framework Core2.1,为EF开发者带来了很多期待已久的特性。EF Core 2.1增加了对SQL GROUP BY的支持,支持延迟加载和数据种子等。EF Core 2.1的第一个重要新增特性是将GroupBy操作符翻译成包含GROUP BY子句的SQL。缺乏这种支持被认为是EF…

有什么免费开发网站建设软件品牌推广方案

目录 1. Gitlab命令行修改管理员密码 2. Gitlab服务管理 3. 公司的开发代码提交处理流程 4. Gitlab 备份与恢复 数据备份 测试数据恢复 5. 邮箱配置 1. Gitlab命令行修改管理员密码 [roottty01 ~]# gitlab-rails console -e production # 启动GitLab的Rails控制…

saas建站平台wordpress的pingsu主题

Linux namespaces 介绍 namespaces是Linux内核用来隔离内核资源的方式。通过namespaces可以让一些进程只能看到与自己相关的那部分资源。而其它的进程也只能看到与他们自己相关的资源。这两拨进程根本感知不到对方的存在。而它具体的实现细节是通过Linux namespaces来实现的。 …

网站建设的文章php网站代做

‍ 嘉诚信息案例 本项目案例由嘉诚信息投递并参与数据猿与上海大数据联盟联合推出的《2024中国数智化转型升级创新服务企业》榜单/奖项评选。 大数据产业创新服务媒体 ——聚焦数据 改变商业 随着信息时代的迅猛发展,消防人员正面临前所未有的知识爆炸挑战。为了高…

西部数码做的网站打不开python如何与wordpress

Flink 中的时间语义 时间语义: EventTime:事件创建时间;Ingestion Time:数据进入Flink的时间;Processing Time:执行操作算子的本地系统时间,与机器无关。不同的时间语义有不同的应用场合&#x…

如何创建微信小程序商城新网站应该怎么做seo

用lambda表达式实现Runnable lambda表达式替换了原来匿名内部类的写法,没有了匿名内部类繁杂的代码实现,而是突出了,真正的处理代码。最好的示例就是 实现Runnable 的线程实现方式了: 用() -> {}代码块替代了整个匿名内部类 Test public …

推荐系统网站开发企业门户网站 php

所需文件xampp 集成服务器(本文使用Apache2.4MySQLPHP7.4.3)vscodeXdebugphp-debug 插件配置Xdebug1. 下载Xdebug插件 (直接去 https://xdebug.org/download.php下载php对应版本的插件)如果不知道如何选取版本,则如下Step 1:获取本地php版本信息 (利用ph…

白名单 网站什么网站可以做美食

项目背景 在全球经济发展的大背景下,矿产资源作为工业的“粮食”和“血液”,其合理开发与有效管理对于国家的经济发展、能源安全和工业稳定供应具有不可替代的作用。然而,随着资源的日益紧张和环境保护要求的提高,传统的矿产资源…

口碑好的网站建设方法有哪些服装网站搭建计划书

前段时间编译一个引用自己写的静态库的程序时老是出现链接时的多个重定义的错误,而自己的代码明明没有重定义这些东西,譬如: LIBCMT.lib(_file.obj) : error LNK2005: ___initstdio already defined in libc.lib(_file.obj) LIBCMT.lib(_fi…

成品网站速成网站网站开发用什么后端框架

介绍一个酷炫的目标检测方式: 论文:https://arxiv.org/abs/2401.17270 代码:https://github.com/AILab-CVC/YOLO-World 文章目录 摘要Introduction第2章 相关工作2.1 传统目标检测2.2 开放词汇目标检测 第3章 方法3.1 预训练公式&#xff1a…

容桂网站制作价位柳州建站

计算机速度可能每年都在提高,但如果用光脉冲而不是电流来代表它的二进制代码1和0,将给计算速度带来质的飞跃。据每日科学网9月10日报道,美国宾夕法尼亚大学研究人员用硫化镉纳米线制造出了第一个全光光子开关,并将其与逻辑门结合&…

网站商城系统设计南京微信小程序开发制作

产品概述 低功耗墒情监测站基于传感、无线通信、处理与控制等物联网技术的开发,利用传感技术,通过传感器测量土壤墒情,并使用物联网进行传输。无需专门的通信线路,在联网的状态下,数据可快速、主动的上报到云平台&…

手机设计软件哪个好googleseo优化

没有完全不含亚硫酸盐的葡萄酒,有机葡萄酒和生物动力葡萄酒中也会含有少量天然 亚硫酸盐。因为它是在发酵过程中产生的一种化合物,所以不可能酿造无亚硫酸盐的葡萄酒。 在大多数葡萄酒国家都有葡萄酒法律规定,如果葡萄酒超过特定的亚硫酸盐水…

企业门户网站制作价格怎么算做的网站老被攻击

JQuery是继prototype之后又一个优秀的Javascript库。它是轻量级的js库 ,它兼容CSS3,还兼容各种浏览器(IE 6.0, FF 1.5, Safari 2.0, Opera 9.0),jQuery2.0及后续版本将不再支持IE6/7/8浏览器。jQuery使用户能更方便地处理HTML(标准通用标记语…

郑州网站及优化三只小猪的题目登网站做

简介 Java 类文件反汇编工具(javap)是一个命令行工具,用于反汇编一个或多个 Java 类文件。反汇编的输出内容取决于使用的选项。当不使用任何选项时,javap 命令将打印传递给它的类的包、受保护的和公共字段以及方法。javap 命令将其…

东营市报名系统网站设计公司沈阳网站 房小二

当我在控制面板的卸载软件里没有发现我要删软件的软件时,只找到了软件的部分安装目录删除,就会发生残留问题,导致软件依旧可以运行。 经过这么多次后,我就找到了我自认为的最优解。首先运行这个软件;之后打开windows任…

网站设计与制作报价北京专业网站优化

本来是很简单的一道题,却想了好长时间 由于数据量比较大,所以逐行读入,逐行处理 先处理每一行的不相邻元素和的最大值,记录在数组b中 最后计算不相邻行的和的最大值 二者的状态转移方程都类似:dp[j] max(dp[j - 1], d…

如何仿别人网站的莫板东莞餐饮网站建设

Go 语言提供了数组类型的数据结构。 数组是具有相同唯一类型的一组已编号且长度固定的数据项序列,这种类型可以是任意的原始类型例如整型、字符串或者自定义类型。 相对于去声明 number0, number1, ..., number99 的变量,使用数组形式 numbers[0], num…

个人网站做装修可以吗wordpress右侧空白

在上一篇的文章中,测试验证了如何安装Oracle23c free版本的数据库。总体上来说还是比较简单的。把相关的依赖包安装好,rpm -ivh执行安装即可。 在这一篇文章中将验证测试如何卸载。Oracle的文档介绍就是强大,我们找到文档内容,按…

网站小程序logo设计免费设计

官网:http://element-cn.eleme.io/#/zh-CN 转载于:https://www.cnblogs.com/weibanggang/p/9995433.html