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://***.***.***.***/
相关推荐
Whoisshutiao5 分钟前
Python网安-zip文件暴力破解(仅供学习)
开发语言·python·网络安全
David爱编程18 分钟前
Java 的数据类型为什么分为基本类型和引用类型?
java·后端
RainbowSea19 分钟前
14. MySQL 锁的详细说明
java·sql·mysql
是2的10次方啊20 分钟前
🔄 Bean属性转换框架深度对比:从BeanUtils到MapStruct的演进之路
java·后端
RainbowSea36 分钟前
12 MySQL 数据库其它调优策略
java·sql·mysql
ComputerInBook37 分钟前
C++ 标准模板库算法之 transform 用法
开发语言·c++·算法·transform算法
杰哥技术分享1 小时前
PHP Yii2 安装SQL Server扩展-MAC M4 Pro芯片
开发语言·php
大只鹅1 小时前
WebSocket类明明注入了Bean,为什么报错为null
java·websocket
ChinaRainbowSea1 小时前
9-2 MySQL 分析查询语句:EXPLAIN(详细说明)
java·数据库·后端·sql·mysql