FastDFS【SpringBoot操作FastDFS、复习】(三)-全面详解(学习总结---从入门到深化)

news2025/1/11 11:00:14

目录

SpringBoot操作FastDFS

复习:

SpringBoot操作FastDFS

 由GitHub大牛tobato在原作者YuQing与yuqih发布的JAVA客户端基 础上进行了大量重构工作,并于GitHub上发布了FastDFS-Client1.26.5。

主要特性

1 对关键部分代码加入了单元测试,便于理解与服务端的接口交易,提高接口质量

2 将以前对byte硬解析风格重构为使用对象+注解的形式,尽量增强了代码的可读性

3 支持对服务端的连接池管理

4 支持上传图片时候检查图片格式,并且自动生成缩略图

5 在SpringBoot当中自动导入依赖

 实战开发

导入FastDFS依赖jar

<dependency>
    <groupId>com.github.tobato</groupId>
    <artifactId>fastdfs-client</artifactId>
    <version>1.26.5</version>
</dependency>

配置SpringBoot的入口类

package com.demo;
import com.github.tobato.fastdfs.FdfsClientConfig;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.EnableMBeanExport;
import org.springframework.context.annotation.Import;
import org.springframework.jmx.support.RegistrationPolicy;
//==========================================
=========================
//获取带有连接池的FastDFS Java客户端
@Import(FdfsClientConfig.class)
// 解决jmx重复注册bean的问题
@EnableMBeanExport(registration =
RegistrationPolicy.IGNORE_EXISTING)
//==========================================
=========================
@SpringBootApplication
public class FastdfsSpringbootDriverApplication {
    public static void main(String[] args) {
         SpringApplication.run(FastdfsSpringbootDriverApplication.class, args);
   }
}

配置springboot的application.yml配置文件

============================================
=======================
# 分布式文件系统FDFS配置
============================================
=======================
fdfs:
 so-timeout: 1501
 connect-timeout: 601
 thumb-image:             #缩略图生成参数
   width: 150
   height: 150
 tracker-list:           #TrackerList参数,支持多个
   - 192.168.66.100:22122
   - 192.168.66.101:22122

上传文件操作

/**
     * 测试springboot环境下的javaAPI对分布式文件系统的上传文件的操作
     * @throws FileNotFoundException
     */
   @Test
   public void testUpload() throws FileNotFoundException {
       //获取本地文件
       File file = new File("G:\\图片\\mei.jpg");
       //创建传输文件的输入流
       FileInputStream fileInputStream = new FileInputStream(file);
       //文件上传:参数一:传输文件内容的输入流;
                  参数二:文件的size;参数三:文件扩展名;参数四:描述文件的元数据;返回值:上传文件在存储节点的唯一标识(卷名+文件名)
       StorePath storePath = fastFileStorageClient.uploadFile(fileInputStream, file.length(), "jpg", null);
       //将卷名与文件名一起打印
       System.out.println(storePath.getFullPath());
       //将卷名与文件名分别打印
        System.out.println(storePath.getGroup()+" | "+storePath.getPath());
   }

文件下载的操作

    /**
     * 测试springboot环境下的javaAPI对分布式文件系统的下载文件的操作
     * @throws IOException
     */
   @Test
   public void testDownload() throws IOException {
       //下载文件:参数一:文件处于存储节点的卷名;参数二:文件在存储节点的文件名;参数三:下载的回调函数;返回值:文件内容的字节数组
       byte[] bytes = fastFileStorageClient.downloadFile("group1","M00/00/00/wKhCZWICJcqAftV0AAChCwXlPdE133.jpg", new DownloadByteArray());
       //创建文件输出流,指定输出位置及文件名
       FileOutputStream fileOutputStream = new FileOutputStream("G:\\mei.jpg");
       //使用文件输出流将文件内容字节数组写出
       fileOutputStream.write(bytes);
       //刷新输出流
       fileOutputStream.flush();
       //关闭输出流
       fileOutputStream.close();
   }

复习:

Nginx场景实践_Nginx高可用

 什么是高可用?

高可用HA(High Availability)是分布式系统架构设计中必须考虑 的因素之一,它通常是指,通过设计减少系统不能提供服务的时 间。如果一个系统能够一直提供服务,那么这个可用性则是百分之 百,但是天有不测风云。所以我们只能尽可能的去减少服务的故障。

解决的问题

在生产环境上很多时候是以 Nginx 做反向代理对外提供服务,但 是一天Nginx难免遇见故障,如:服务器宕机。当 Nginx 宕机那么 所有对外提供的接口都将导致无法访问。虽然我们无法保证服 务器百分之百可用,但是也得想办法避免这种悲剧,今天我们 使用 keepalived 来实现 Nginx 的高可用。 

双机热备方案 

这种方案是国内企业中最为普遍的一种高可用方案,双机热备其实 就是指一台服务器在提供服务,另一台为某服务的备用状态,当一 台服务器不可用另外一台就会顶替上去。

实时效果反馈

1. Nginx 双机热备方案主要解决什么问题。

A 安全问题 

B nginx单点故障问题

C 性能问题

D 并发问题

Nginx场景实践_LVS负载均衡 

LVS是一个开源的软件,可以实现传输层四层负载均衡。LVS是 Linux Virtual Server的缩写,意思是Linux虚拟服务器。 

目标:

通过 LVS 达到的负载均衡技术和 Linux 操作系统实现一个高性能高可用的 Linux 服务器集群,它具有良好的可靠性、可扩展性和可操作性。从而以低廉的成本实现最优的性能。 

LVS的八种调度算法

1 、轮叫调度 rr

2 、加权轮叫 wrr

3 、最少链接 lc

4 、加权最少链接 wlc

5 、基于局部性的最少连接调度算法 lblc

6 、复杂的基于局部性最少的连接算法 lblcr

7 、目标地址散列调度算法 dh

8 、源地址散列调度算法 sh 

实时效果反馈

1. LVS是一个开源的软件,可以实现____四层负载均衡。

A 应用层

B 链路层

C 传输层

D 会话层

2. 下列不属于LVS负载均衡算法的是____。

A 轮叫调度 rr 

B 加权轮叫 wrr

C 最少链接 lc

D ip_hash

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

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

相关文章

leetcode 21.合并两个有序链表

⭐️ 往期相关文章 &#x1f4ab;链接1&#xff1a;链表中倒数第k个结点(快慢指针问题) &#x1f4ab;链接2&#xff1a;leetcode 876.链表的中间结点(快慢指针问题) &#x1f4ab;链接3&#xff1a;leetcode 206.反转链表 &#x1f4ab;链接4&#xff1a;leetcode 203.移除链…

蓝牙Beacon+Loa网关推出人员隔离监管解决方案

三年新冠已经过去&#xff0c;以空间换时间的防疫策略让疑似、确诊、有接触史人员得以有效控制&#xff0c;其中居家隔离的防疫措施对新冠的防控是行之有效的。 不过&#xff0c;在“画地为牢”的隔离区也有些需隔离观察人员私自外出&#xff0c;对防疫工作带来相当程度上的影…

数据库性能测试报告总结模板

目录 1计划概述 2参考资料 3术语解释 4系统简介 5测试环境 6测试指标 7测试工具和测试策略 8测试数据收集 9测试结果数据以及截图 9.1Jmeter性能指标 9.2硬件指标图 10 测试结论 需要完整报告模板记得文章末尾找我哦。 1计划概述 目的&#xff1a;找出系统潜在的…

Android Studio中配置aliyun maven库

Android Studio中配置aliyun maven库 在项目的根build.gradle里面&#xff08;不是module&#xff09;buildscriptde对应位置添加配置&#xff1a; buildscript {repositories {maven {url http://maven.aliyun.com/nexus/content/groups/public/allowInsecureProtocol true…

深入了解gradio库的Interpretation模块

❤️觉得内容不错的话&#xff0c;欢迎点赞收藏加关注&#x1f60a;&#x1f60a;&#x1f60a;&#xff0c;后续会继续输入更多优质内容❤️ &#x1f449;有问题欢迎大家加关注私戳或者评论&#xff08;包括但不限于NLP算法相关&#xff0c;linux学习相关&#xff0c;读研读博…

解码大数据时代的信息安全:低代码开发平台的先锋之道

前言 随着大数据时代的到来&#xff0c;信息安全成为了不可忽视的重要议题。随之而来的是技术的迅速发展和创新&#xff0c;为信息安全领域带来了挑战&#xff0c;也为其提供了前所未有的机遇。在这个背景下&#xff0c;低代码开发平台作为一种创新的解决方案崭露头角&#xff…

速看,多设备上使用 WhatsApp的最完整指南

速看&#xff01;多设备上使用 WhatsApp的最完整指南&#xff01; 在过去的几年里&#xff0c;WhatsApp一直在不断更新。最近它正在推出一项新功能&#xff1a;允许移动和非手机设备使用该服务&#xff0c;而不需要将注册的手机连接到互联网。也就是说&#xff0c;您可以不再需…

cancal 同步mysql数据到es中

1.环境&#xff1a; windocs service2012 、 jdk版本1.8 、canal版本1.5、mysql版本5.7、 注意&#xff1a;canal版本1.5需要的jdk是1.8 如果你下载的是canal1.6&#xff0c;jdk是1.8&#xff0c;那样会报错。 下载地址 Releases alibaba/canal GitHub 下载并上传到服…

CAP结构体之字节对齐

&#x1f345; 我是蚂蚁小兵&#xff0c;专注于车载诊断领域&#xff0c;尤其擅长于对CANoe工具的使用&#x1f345; 寻找组织 &#xff0c;答疑解惑&#xff0c;摸鱼聊天&#xff0c;博客源码&#xff0c;点击加入&#x1f449;【相亲相爱一家人】&#x1f345; 玩转CANoe&…

No10.精选前端面试题,享受每天的挑战和学习

文章目录 Linux 中五种 IO 模型四次挥手之后为什么还要等待 2mslcookie 和 session 的区别是什么tcp 怎么保证可靠性css实现图片自适应宽高的几种方法 Linux 中五种 IO 模型 在 Linux 中&#xff0c;常见的五种 I/O&#xff08;Input/Output&#xff09;模型包括&#xff1a; …

机器学习19:多类别神经网络-Multi-Class Neural Networks

在【机器学习12&#xff1a;分类 Classification】一文中&#xff0c;笔者介绍了二元分类模型&#xff0c;它可以在两个可能的选择之一之间进行选择&#xff0c;例如&#xff1a; 电子邮件是垃圾邮件还是非垃圾邮件。肿瘤是恶性的或良性的。 在本文中&#xff0c;我们将研究多类…

将ChatGPT变成Midjourney提示生成器

已经有人总结过可以让ChatGPT作为Midjourney图像生成的模板。在本文中&#xff0c;我们将展示如何根据个人用例创建这些提示&#xff0c;这可以让ChatGPT生成的提示可控性更高。 选择提示模板 Midjourney的模板结构性很强&#xff0c;所以我们这里使用一下的结构&#xff1a; …

rsync远程同步(可爱可抵漫长岁月)

文章目录 一、简介二、部署rsync主客服务器1.关闭防火墙&#xff08;真的老生常谈了 一生之敌&#xff01;&#xff09;2.建立/etc/rsyncd.conf 配置文件3.客户端配置4.发起端配置 rsyncinotify 三、拓展使用rsync来实现快速删除大量文件。 一、简介 什么是rsync&#xff1f; …

【Linux】Linux项目自动化构建工具-make/makefile

Linux项目自动化构建工具-make/makefile 什么是make/makefile&#xff1f;make/makefile的使用依赖关系依赖方法makefile是如何工作的&#xff1f;为什么要使用makefile呢&#xff1f;makefile是怎么做到的呢&#xff1f;make和make clean.PHONY&#xff1a;伪目标 特殊符号&am…

Vue 之 mixins 和 provide/inject

一、mixins 1、简介 ​ mixins 又称 混入&#xff0c;是指将一些可复用的代码&#xff08;JS、生命周期钩子函数等等&#xff09;抽离出来&#xff0c;定义成mixins模块&#xff0c;然后混入到多个组件中&#xff0c;从而实现组件间的逻辑代码共享&#xff0c;减少重复代码。…

Nginx正向代理、反向代理,动静分离

目录 正向代理 反向代理 动静分离 正向代理 正向代理最大的特点是客户端非常明确要访问的服务器地址&#xff1b;服务器只清楚请求来自哪个代理服务器&#xff0c;而不清楚来自哪个具体的客户端&#xff1b;正向代理模式屏蔽或者隐藏了真实客户端信息。 反向代理 客户端给服…

C#(四十六)之基于流的文件操作(FileStream)

FileStream类属性和方法 属性 CanRead 指示当前文件流是否支持读取 CanWrite 指示当前文件流是否支持写入 CanSeek 指示当前文件流是否支持查找 IsAsync FileStream是同步打开还是异步打开 Length 流的长度&#xff08;字节数&#xff09; CanTimeOut 当前文件流是否可以…

【C++进阶】哈希表

文章目录 前言哈希概念哈希冲突哈希函数哈希冲突解决一.闭散列解决哈希冲突1. 线性探测2.二次探测 二、闭散列的实现1.准备2.闭散列插入3.闭散列查找4.闭散列删除 三、闭散列完整源码四、开散列解决哈希冲突1.开散列概念2.哈希桶的结构3.哈希桶的插入4.哈希桶的查找5.哈希桶的删…

学习多线程

1、学习线程池 1.1jdk中的线程池 推荐使用ThreadPoolExecutor 1.1.1先了解参数的意义 首先看下ThreadPoolExecutor的构造函数 public ThreadPoolExecutor(int corePoolSize,int maximumPoolSize,long keepAliveTime,TimeUnit unit,BlockingQueue<Runnable> workQueu…

对话e签宝,解读 SaaS圈“头部玩家”的增长故事

可以肯定的是&#xff0c;未来3年&#xff0c;整个中国SaaS市场会逐步确认船票分配。穿越周期&#xff0c;告别不确定的三年&#xff0c;给幸存下来的企业上了淋漓生动的一课。在新的起点上&#xff0c;SaaS也需要一种新的打开方式。谁扎得牢、想得透、做的好、跑得快&#xff…