JAVA后端自学技能实操合集

JAVA后端自学技能实操

内容将会持续更新中,有需要添加什么内容可以再评论区留言,大家一起学习

FastDFS


组名:文件上传后所在的 storage 组名称,在文件上传成功后有storage 服务器返回,需要客户端自行保存。

虚拟磁盘路径:storage 配置的虚拟路径,与磁盘选项store_path*对应。如果配置了

store_path0 则是 M00,如果配置了 store_path1 则是 M01,以此类推。

数据两级目录:storage 服务器在每个虚拟磁盘路径下创建的两级目录,用于存储数据文件。

文件名:与文件上传时不同。是由存储服务器根据特定信息生成,文件名包含:源存储

服务器 IP 地址、文件创建时间戳、文件大小、随机数和文件拓展名等信息。

使用docker安装FastDFS(linux)

xml 复制代码
#拉取镜像
docker pull morunchang/fastdfs
#运行tracker(负载均衡和调度)
docker run -d --name tracker --net=host morunchang/fastdfs sh tracker.sh
#运行storage(作用是文件存储,称之为存储服务器)下面的***.***.***.***为你的公网地址(fastDFS服务器)
docker run -d --name storage --net=host -e TRACKER_IP=***.***.***.***:22122 -e GROUP_NAME=group1 morunchang/fastdfs sh storage.sh
# 进入到storage容器内部
docker exec -it storage  /bin/bash
#1 通过命令来查询Nginx的安装位置
root@*******************:/# whereis nginx
#2 查看当前Nginx的进程
root@*******************:/# ps aux | grep nginx

添加以下内容

xml 复制代码
#3 修改Nginx的配置文件
    vi /etc/nginx/conf/nginx.conf

#4 修改Nginx配置内容
 server {
        listen       80;
        server_name  localhost;	
        
        location ~ /M00 {
        		# storage 实际存储图片的位置
            root /data/fast_data/data;
            ngx_fastdfs_module;
        }
}

#5 进入到Nginx sbin目录从新加载Nginx配置文件
cd /etc/nginx/sbin
# 重新加载配置文件(切记一定需要重新加载一下配置)
./nginx -s reload

storage存储的位置/data/fast_data/data

xml 复制代码
#设置开机启动容器
docker update --restart=always  tracker
docker update --restart=always  storage

集成到springboot项目中

1.加坐标

xml 复制代码
 <!--fastdfs-->
<dependency>
    <groupId>com.github.tobato</groupId>
    <artifactId>fastdfs-client</artifactId>
</dependency>

2.加配置文件

fast_dfs.properties

xml 复制代码
#socket连接超时时长
fdfs.soTimeout=1500
#连接tracker服务器超时时长
fdfs.connectTimeout=600
fdfs.trackerList=***.***.***.***:22122

3.书写配置类

xml 复制代码
@Configuration
@Import(FdfsClientConfig.class) // 导入FastDFS-Client组件
@PropertySource("fast_dfs.properties")
public class FdfsConfiguration {
}

4.书写配置类工具类

xml 复制代码
@Component
public class FastDFSClient {

    @Autowired
    private FastFileStorageClient storageClient;

    public String uploadFile(MultipartFile file) throws IOException {
        StorePath storePath = storageClient.uploadFile((InputStream) file.getInputStream(), file.getSize(), FilenameUtils.getExtension(file.getOriginalFilename()), null);
        return storePath.getFullPath();
    }

    public void delFile(String filePath) {
        storageClient.deleteFile(filePath);

    }

    /**
     * 下载
     * @param groupName
     * @param path
     * @return
     */
    public byte[] download(String groupName, String path) throws IOException {
        InputStream ins = storageClient.downloadFile(groupName, path, new DownloadCallback<InputStream>() {
            @Override
            public InputStream recv(InputStream ins) throws IOException {
                // 将此ins返回给上面的ins
                return ins;
            }
        });

        ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
        byte[] buff = new byte[100];
        int rc = 0;
        while ((rc = ins.read(buff, 0, 100)) > 0) {
            byteArrayOutputStream.write(buff, 0, rc);
        }
        return byteArrayOutputStream.toByteArray();
    }
}

再需要的项目里面引入fastdfs,写一个配置

xml 复制代码
@Configuration
@ComponentScan("com.***.***.fastdfs")
public class FastDfsConfiguration {
}

修改application.yml文件,添加自定义的图片访问ip

xml 复制代码
#图片访问ip
fdfs.url: http://***.***.***.***/
相关推荐
Scott9999HH3 小时前
【IIoT流量实战】蒸汽管道阀门全关却仍有流量?用 Python 实现涡街信号 FFT 频谱分析与温压全补偿积算网关,深度拆解靠谱的涡街流量计厂家硬核技术标准
开发语言·python
腻害兔3 小时前
【若依项目-产品经理视角】深度拆解 RuoYi-Vue-Pro 商城模块:从商品管理到交易引擎,50 张表撑起一整套电商系统
java·大数据·vue.js·产品经理·ai编程
码智社4 小时前
AES加密原理详解及Java实现加解密实战
java·开发语言
AI云海4 小时前
python 列表、元组、集合和字典
开发语言·python
萧瑟余晖5 小时前
JDK 26 新特性详解
java·开发语言
马优晨5 小时前
Freemarker 完整讲解(后端 Java 模板引擎)
java·开发语言·freemarker·freemarker 完整讲解·freemarker模板引擎
人邮异步社区7 小时前
怎么把C语言学到精通?
c语言·开发语言
心平气和量大福大8 小时前
C#-WPF-控件-TextBox 数据绑定
开发语言·c#·wpf
ttwuai8 小时前
Cursor 生成 CRUD 后,Go 后台接口别只测 200:JWT、RBAC 和 tenant_id 怎么验
开发语言·后端·golang
维天说8 小时前
CLI-Switch 2026年3月版历史设计:Hook、TTY 隔离与 JSON 状态
java·服务器·json