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

黑糖不苦还做网站么站长工具 seo综合查询

黑糖不苦还做网站么,站长工具 seo综合查询,wordpress文章代码显示插件,不想花钱怎么做网站MinIO从入门到飞翔 文章目录 MinIO从入门到飞翔0、前言1、分布式文件系统2、MinIO 介绍3、 MinIO安装#xff08;docker#xff09;4、基本概念5、通过代码上传文件到MinIO6、封装MinIO为starter7、在其他项目中集成封装好的模块 0、前言 对象存储是一种数据存储架构#x…MinIO从入门到飞翔 文章目录 MinIO从入门到飞翔0、前言1、分布式文件系统2、MinIO 介绍3、 MinIO安装docker4、基本概念5、通过代码上传文件到MinIO6、封装MinIO为starter7、在其他项目中集成封装好的模块 0、前言 对象存储是一种数据存储架构设计用于管理和处理大量非结构化数据。与传统的文件存储和块存储不同对象存储通过将数据分解为离散的、独立的单元或“对象”来存储每个对象包含数据本身、相关的元数据和一个唯一的标识符。 对象存储对比 存储方式优点缺点服务器磁盘开发便捷成本低扩展困难分布式文件系统容易实现扩容复杂度高第三方存储开发简单功能强大免维护收费 1、分布式文件系统 分布式文件系统Distributed File System, DFS是一种文件系统它使文件可以跨越多个服务器或存储设备存储和访问。DFS 通过网络将多个存储资源组合成一个统一的文件系统使用户和应用程序可以像访问本地文件一样透明地访问远程文件。 分布式文件系统的关键特性 透明性用户和应用程序可以像访问本地文件一样访问远程文件感受不到底层的复杂性。高可用性通过复制和冗余机制确保即使某些节点或硬件发生故障数据仍然可用。可扩展性能够处理随着数据量和用户数增加而增长的需求。容错性通过数据冗余和错误检测机制保证系统能继续运行即使发生部分硬件或网络故障。性能通过分布式架构能够有效地处理大量并发访问请求。 2、MinIO 介绍 MinIO 是一个高性能的分布式对象存储系统兼容 Amazon S3 云存储服务Min10基于Apache License v2.0开源协议的对象存储服务可以做为云存储的解决方案用来保存海量的图片视频文档。它专为大规模存储基础设施设计能够高效地存储海量非结构化数据如图片、视频、日志文件等。MinIO 提供了一组简单的 API用户可以方便地进行数据存储和管理。 官方文档 MinIO 的关键特性 兼容性 完全兼容 Amazon S3 API使用户可以使用现有的 S3 客户端和工具。 高性能 设计为高性能对象存储系统能够支持每秒数十GB的数据吞吐量。 可扩展性 支持横向扩展允许用户通过添加更多的存储节点来扩展存储容量和性能。 简易部署 提供简单的安装和配置过程可以在几分钟内启动和运行。 数据保护 通过纠删码Erasure Coding和位衰减Bit Rot保护机制确保数据完整性和持久性。 多租户支持 支持多用户和多租户环境提供隔离和权限管理。 Kubernetes 集成 提供原生的 Kubernetes Operator方便在 Kubernetes 集群中部署和管理 MinIO。 3、 MinIO安装docker 如果你有 Docker 环境可以通过以下命令快速拉取并运行 MinIO 容器 拉取镜像 docker pull minio/minio创建容器 docker run -p 9000:9000 --name minio -d --restartalways -e MINIO_ACCESS_KEYminio -e MINIO_SECRET_KEYminio123 -v /home/data:/data -v /home/config:/root/.minio minio/minio server /data访问minio系统: http://your_server_ip:9000 如http://192.168.200.130:9000 4、基本概念 bucket – 类比于文件系统的目录 Object – 类比文件系统的文件 Keys – 类比文件名 5、通过代码上传文件到MinIO 新建项目导入pom文件 dependenciesdependencygroupIdio.minio/groupIdartifactIdminio/artifactIdversion7.1.0/version/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-test/artifactId/dependencydependencygroupIdcom.heima/groupIdartifactIdheima-file-starter/artifactIdversion1.0-SNAPSHOT/version/dependency/dependencies创建test测试文件 package com.heima.minio.test;import com.heima.file.service.FileStorageService; import io.minio.MinioClient; import io.minio.PutObjectArgs; import org.junit.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest;import java.io.FileInputStream; import java.io.FileNotFoundException;public class MinIOTest {public static void main(String[] args) {FileInputStream fileInputStream null;try {fileInputStream new FileInputStream(E:\\list.html);;//1.创建minio链接客户端MinioClient minioClient MinioClient.builder().credentials(minio, minio123).endpoint(http://192.168.200.130:9000).build();//2.上传PutObjectArgs putObjectArgs PutObjectArgs.builder().object(list.html)//文件名.contentType(text/html)//文件类型.bucket(leadnews)//桶名词 与minio创建的名词一致.stream(fileInputStream, fileInputStream.available(), -1) //文件流.build();minioClient.putObject(putObjectArgs);System.out.println(http://192.168.200.130:9000/leadnews/list.html);} catch (Exception ex) {ex.printStackTrace();}} }上传文件点击控制台连接即可访问list.html文件 若不能访问在minio控制系统中打开访问权限 6、封装MinIO为starter 在项目中封装 导入依赖 dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-autoconfigure/artifactId /dependency dependencygroupIdio.minio/groupIdartifactIdminio/artifactIdversion7.1.0/version /dependency dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter/artifactId /dependency dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-configuration-processor/artifactIdoptionaltrue/optional /dependency dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-actuator/artifactId /dependency添加minio配置文件 package com.heima.file.config;import com.heima.file.service.FileStorageService; import io.minio.MinioClient; import lombok.Data; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration;Data Configuration EnableConfigurationProperties({MinIOConfigProperties.class}) //当引入FileStorageService接口时 ConditionalOnClass(FileStorageService.class) public class MinIOConfig {Autowiredprivate MinIOConfigProperties minIOConfigProperties;Beanpublic MinioClient buildMinioClient() {return MinioClient.builder().credentials(minIOConfigProperties.getAccessKey(), minIOConfigProperties.getSecretKey()).endpoint(minIOConfigProperties.getEndpoint()).build();} }在spring管理的bean中注入MinIOFileStorageService在spring.factories中 org.springframework.boot.autoconfigure.EnableAutoConfiguration\com.heima.file.service.impl.MinIOFileStorageServiceMinIOFileStorageService文件详情大概就实现了对于文件资源上传的操作 package com.heima.file.service.impl;import com.heima.file.config.MinIOConfig; import com.heima.file.config.MinIOConfigProperties; import com.heima.file.service.FileStorageService; import io.minio.GetObjectArgs; import io.minio.MinioClient; import io.minio.PutObjectArgs; import io.minio.RemoveObjectArgs; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.context.annotation.Import; import org.springframework.util.StringUtils;import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; import java.text.SimpleDateFormat; import java.util.Date;Slf4j EnableConfigurationProperties(MinIOConfigProperties.class) Import(MinIOConfig.class) public class MinIOFileStorageService implements FileStorageService {Autowiredprivate MinioClient minioClient;Autowiredprivate MinIOConfigProperties minIOConfigProperties;private final static String separator /;/*** param dirPath* param filename yyyy/mm/dd/file.jpg* return*/public String builderFilePath(String dirPath,String filename) {StringBuilder stringBuilder new StringBuilder(50);if(!StringUtils.isEmpty(dirPath)){stringBuilder.append(dirPath).append(separator);}SimpleDateFormat sdf new SimpleDateFormat(yyyy/MM/dd);String todayStr sdf.format(new Date());stringBuilder.append(todayStr).append(separator);stringBuilder.append(filename);return stringBuilder.toString();}/*** 上传图片文件* param prefix 文件前缀* param filename 文件名* param inputStream 文件流* return 文件全路径*/Overridepublic String uploadImgFile(String prefix, String filename,InputStream inputStream) {String filePath builderFilePath(prefix, filename);try {PutObjectArgs putObjectArgs PutObjectArgs.builder().object(filePath).contentType(image/jpg).bucket(minIOConfigProperties.getBucket()).stream(inputStream,inputStream.available(),-1).build();minioClient.putObject(putObjectArgs);StringBuilder urlPath new StringBuilder(minIOConfigProperties.getReadPath());urlPath.append(separatorminIOConfigProperties.getBucket());urlPath.append(separator);urlPath.append(filePath);return urlPath.toString();}catch (Exception ex){log.error(minio put file error.,ex);throw new RuntimeException(上传文件失败);}}/*** 上传html文件* param prefix 文件前缀* param filename 文件名* param inputStream 文件流* return 文件全路径*/Overridepublic String uploadHtmlFile(String prefix, String filename,InputStream inputStream) {String filePath builderFilePath(prefix, filename);try {PutObjectArgs putObjectArgs PutObjectArgs.builder().object(filePath).contentType(text/html).bucket(minIOConfigProperties.getBucket()).stream(inputStream,inputStream.available(),-1).build();minioClient.putObject(putObjectArgs);StringBuilder urlPath new StringBuilder(minIOConfigProperties.getReadPath());urlPath.append(separatorminIOConfigProperties.getBucket());urlPath.append(separator);urlPath.append(filePath);return urlPath.toString();}catch (Exception ex){log.error(minio put file error.,ex);ex.printStackTrace();throw new RuntimeException(上传文件失败);}}/*** 删除文件* param pathUrl 文件全路径*/Overridepublic void delete(String pathUrl) {String key pathUrl.replace(minIOConfigProperties.getEndpoint()/,);int index key.indexOf(separator);String bucket key.substring(0,index);String filePath key.substring(index1);// 删除ObjectsRemoveObjectArgs removeObjectArgs RemoveObjectArgs.builder().bucket(bucket).object(filePath).build();try {minioClient.removeObject(removeObjectArgs);} catch (Exception e) {log.error(minio remove file error. pathUrl:{},pathUrl);e.printStackTrace();}}/*** 下载文件* param pathUrl 文件全路径* return 文件流**/Overridepublic byte[] downLoadFile(String pathUrl) {String key pathUrl.replace(minIOConfigProperties.getEndpoint()/,);int index key.indexOf(separator);String bucket key.substring(0,index);String filePath key.substring(index1);InputStream inputStream null;try {inputStream minioClient.getObject(GetObjectArgs.builder().bucket(minIOConfigProperties.getBucket()).object(filePath).build());} catch (Exception e) {log.error(minio down file error. pathUrl:{},pathUrl);e.printStackTrace();}ByteArrayOutputStream byteArrayOutputStream new ByteArrayOutputStream();byte[] buff new byte[100];int rc 0;while (true) {try {if (!((rc inputStream.read(buff, 0, 100)) 0)) break;} catch (IOException e) {e.printStackTrace();}byteArrayOutputStream.write(buff, 0, rc);}return byteArrayOutputStream.toByteArray();} }具体模块下载 链接https://pan.baidu.com/s/17eWr0sLCOuF3bWoMravH_A?pwdm6ls 7、在其他项目中集成封装好的模块 在第5步创建的项目中进行测试使用 导入文件管理依赖自己封装好的第6步的模块 dependencygroupIdcom.heima/groupIdartifactIdheima-file-starter/artifactIdversion1.0-SNAPSHOT/version/dependency添加minio配置文件application.yml文件中 minio:accessKey: miniosecretKey: minio123bucket: leadnewsendpoint: http://192.168.200.130:9000readPath: http://192.168.200.130:9000在spring管理的bean中注入FileStorageService package com.heima.minio.test;import com.heima.file.service.FileStorageService; import io.minio.MinioClient; import io.minio.PutObjectArgs; import org.junit.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest;import java.io.FileInputStream; import java.io.FileNotFoundException;SpringBootTest( classes MinIOApplication.class) RunWith(SpringRunner.class) public class MinIOTest {public static void main(String[] args) {Autowiredprivate FileStorageService fileStorageService;Testpublic void testUpdateImgFile() {try {FileInputStream fileInputStream new FileInputStream(E:\\test.jpg);String filePath fileStorageService.uploadImgFile(, test.jpg, fileInputStream);System.out.println(filePath);} catch (FileNotFoundException e) {e.printStackTrace();}}}查看上传
http://www.dnsts.com.cn/news/204388.html

相关文章:

  • 泉州百度网站推广做网站能干什么
  • 保洁产品网站建设价格推广平台怎么做
  • 实惠的网站建设公司网站的主要栏目及功能
  • wap网站解析网易企业邮箱收费吗
  • 微信平台APP网站建设怎么样厦门百度关键词seo收费
  • 厂字型布局网站个人简单网页制作
  • 服务好 售后好的网站建设南宁建设厅网站是什么
  • 网站开发销售提成linux wordpress 下载文件
  • 七星彩网站建设黄山市网站建设
  • 2008r2 iis网站验证码不显示给客户做网站需要付法律责任吗
  • 中国十大网站开发公司做网站全体教程
  • 青岛天元建设集团网站网站优化内链怎么做
  • 龙岩e网站招标建设网站
  • 网站项目益阳市 网站建设
  • 二手车网站建站建设银行网站登陆不了
  • 网站图片翻页怎么做百度站长工具数据提交
  • 海口免费网站建设企业首次建设网站的策划流程
  • 建建建设网站公司网站无锡网站建设推广
  • 大连网站排名配音网站赚钱
  • 集约化网站建设方案网站的分析与设计
  • 网站平台建设合同模板wordpress pc 和手机
  • 耒阳网站建设wordpress 自动采集
  • 行唐县做网站电话外贸收款平台有哪些
  • 图片 网站源码 采集免费网站建设哪个好
  • seo网站推广是什么app 开发 wordpress
  • 杨浦做网站wordpress所有函数
  • 天津专门做网站的公司福田响应式网站建设服务
  • 温岭 网站建设清远市企业网站seo联系方式
  • 学校网站素材重写路由 wordpress
  • 网站开发程序员的工资是多少wordpress 好 免费主题