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

开源对象存储系统minio部署配置与SpringBoot客户端整合访问

文章目录

    • 1、MinIO安装部署
      • 1.1 下载
    • 2、管理工具
      • 2.1、图形管理工具
      • 2.2、命令管理工具
      • 2.3、Java SDK管理工具
    • 3、MinIO Server配置参数
      • 3.1、启动参数:
      • 3.2、环境变量
      • 3.3、Root验证参数
    • 4、MinIO Client可用命令

官方介绍:
MinIO 提供高性能、与S3 兼容的对象存储系统,让你自己能够构建自己的私有云储存服务。在 GNU AGPL v3 下是 100% 开源的。

  • 部署简单,只有一个minio可执行文件。
  • 高性能,在 32 个 NVMe 驱动器节点和 100Gbe 网络上发布的 GET/PUT 结果超过 325 GiB/秒和 165 GiB/秒。
  • Kubernetes原生支持,MinIO 支持公共云、私有云和边缘云上所有主要的 Kubernetes 发行版。

1、MinIO安装部署

1.1 下载

下载地址:https://min.io/download#/linux
linux下载:

wget https://dl.min.io/server/minio/release/linux-amd64/minio
chmod +x minio

启动命令:

minio server [FLAGS] HOSTNAME/DIRECTORIES [HOSTNAME/DIRECTORIES..]

服务器列表

服务器存储目录
192.168.245.134/data/minio/data
192.168.245.137/data/minio/data

单机启动

MINIO_ROOT_USER=admin MINIO_ROOT_PASSWORD=12345678 ./minio server --address ":9000" --console-address ":9001" /data/minio/data

集群启动

MINIO_ROOT_USER=admin MINIO_ROOT_PASSWORD=12345678 ./minio server \
--address ":9000" --console-address ":9001"  \
http://192.168.245.134:9000/data/minio/data  \
http://192.168.245.137:9000/data/minio/data

Minio分布式注意事项:

  • 所有的节点需要有相同的access(用户名)和secret(密码)
  • 存放数据的磁盘目录必须是空目录
  • 官方建议生产环境最少4个节点,因为有N个节点,得至少保证有N/2的节点才能可读,保证至少N/2+1的节点才能可写。
  • 节点时间必须同步,不能有大差距。
  • 每个节点磁盘都存一份数据文件保证数据的可靠性与安全性

报错:

Error: Drive `/data/minio/data/data` is part of root drive, will not be used (*errors.errorString)

错误:驱动器’ /data/minio/data/data '是根驱动器的一部分,将不会被使用。分布式需要使用另外的挂载硬盘。
挂载硬盘方法:

# 查看未挂载的磁盘
[root@localhost]# fdisk -l# 对新建的磁盘/dev/sdb进行分区
[root@localhost]# fdisk /dev/sdb
#输入n,#添加新的分区
#输入p,回车,#打印分区
#默认分区输入1,两次回车,
#输入w,保存分区并退出# 格式化
[root@localhost]# mkfs -t ext4 /dev/sdb1# 挂载硬盘
[root@localhost]# mount /dev/sdb1  /data/minio# 设置开机自动挂载
[root@localhost]# blkid /dev/sdb1 # 查看设备UUID
[root@localhost]# vim /etc/fstab
#第一字段:分区设备文件名或UUID(硬盘通用唯一识别码,可通过“blkid /dev/sdb1”查看UUID)
#第二字段:挂载点(/data/minio)
#第三字段:文件系统名称(ext4)
#第四字段:挂载参数(defaults)
#第五字段:指定分区是否被dump备份,0代表不备份,1代表每天备份,2代表不定期备份
#第六字段:指定分区是否被fsck检测,0代表不检测,其它数字代表检测的优先级,1的优先级比2高

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2、管理工具

MinIO提供了一套选项来涵盖数据驱动型企业中的每个角色,例如图形用户界面(GUI),命令行界面(CLI)和应用程序编程接口(API)。

2.1、图形管理工具

浏览器访问http://192.168.245.139:9001,使用上边设置的帐号密码例登录。

设置目录或文件允许直接访问:
在这里插入图片描述

2.2、命令管理工具

mc 是用来访问MinIO服务的命令行客户端,参考 https://min.io/docs/minio/linux/reference/minio-mc.html?ref=docs
MinIO 客户端 mc 命令行工具提供了一个类UNIX命令的替代,例如 ls, cat, cp, mirror, 以及 diff ,同时支持文件系统和亚马逊的 S3兼容云存储服务.
下载地址:https://dl.min.io/client/mc/release/linux-amd64/mc

mc alias set minio1 hhttp://192.168.245.139:9000 admin 12345678
mc alias set minio2 hhttp://192.168.245.137:9000 admin 12345678mc alias list
mc ls minio1

2.3、Java SDK管理工具

pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.penngo.example</groupId><artifactId>minio-service</artifactId><version>1.0-SNAPSHOT</version><properties><maven.compiler.source>8</maven.compiler.source><maven.compiler.target>8</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>io.minio</groupId><artifactId>minio</artifactId><version>8.5.5</version></dependency></dependencies><dependencyManagement><dependencies><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-alibaba-dependencies</artifactId><version>2022.0.0.0</version><type>pom</type><scope>import</scope></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>2022.0.4</version><type>pom</type><scope>import</scope></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version>3.0.9</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><!-- 配置 fork 进行热部署支持  --><configuration><mainClass>com.penngo.example.MinioApp</mainClass></configuration><executions><execution><goals><goal>repackage</goal></goals></execution></executions></plugin></plugins></build>
</project>

application.yml

server:port: 8080servlet:encoding:force: truecharset: UTF-8enabled: true
minio:access-key: adminsecret-key: 12345678url: http://192.168.245.139:9000

MinioConfig.java

package com.penngo.example.component;import io.minio.MinioClient;
import io.minio.messages.Bucket;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import java.util.List;@Configuration
@ConfigurationProperties(prefix = "minio")
public class MinioConfig {/*** 用户名*/private String accessKey;/*** 密码*/private String secretKey;/*** Minio 服务端 api地址*/private String url;public void setAccessKey(String accessKey) {this.accessKey = accessKey;}public void setSecretKey(String secretKey) {this.secretKey = secretKey;}public void setUrl(String url) {this.url = url;}public String getAccessKey() {return accessKey;}public String getSecretKey() {return secretKey;}public String getUrl() {return url;}/*** 构建 操作Minio的客户端* @return*/@Bean("minioClient")public MinioClient minioClient() {System.out.println(url + "," + accessKey + "," + secretKey);MinioClient minioClient = MinioClient.builder().endpoint(url).credentials(accessKey, secretKey).build();try{List<Bucket> list = minioClient.listBuckets();System.out.println("Bucket List:" + list.size());}catch(Exception e){e.printStackTrace();}return minioClient;}
}

MinioUtils.java

package com.penngo.example.component;import io.minio.*;
import io.minio.http.Method;
import io.minio.messages.Item;
import jakarta.annotation.Resource;
import org.springframework.stereotype.Component;
import java.io.ByteArrayInputStream;
import java.io.InputStream;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.TimeUnit;@Component
public class MinioUtils {private String bucketName = "test-bucket";@Resourceprivate MinioClient minioClient;/*** 创建桶*/public boolean createBucket(){try{boolean found = minioClient.bucketExists(BucketExistsArgs.builder().bucket(bucketName).build());if (!found) {minioClient.makeBucket(MakeBucketArgs.builder().bucket(bucketName).build());}return true;}catch(Exception e){e.printStackTrace();}return false;}/*** 删除桶*/public void removeBucket(String bucketName) throws Exception{minioClient.removeBucket(RemoveBucketArgs.builder().bucket(bucketName).build());}/*** 上传文件*/public boolean uploadFile(String fileName, InputStream stream, Long fileSize, String type){try{minioClient.putObject(PutObjectArgs.builder().bucket(bucketName).object(fileName).stream(stream, fileSize, -1).contentType(type).build());return true;}catch(Exception e){e.printStackTrace();}return false;}/*** 判断文件夹是否存在* @return*/public Boolean folderExists(String bucketName, String prefix) throws Exception{Iterable<Result<Item>> results = minioClient.listObjects(ListObjectsArgs.builder().bucket(bucketName).prefix(prefix).recursive(false).build());for (Result<Item> result : results) {Item item = result.get();if (item.isDir()) {return true;}}return false;}/*** 创建文件夹** @param bucketName 桶名称* @param path 路径*/public void createFolder(String bucketName, String path) throws Exception{minioClient.putObject(PutObjectArgs.builder().bucket(bucketName).object(path).stream(new ByteArrayInputStream(new byte[] {}), 0, -1).build());}/*** 获取文件在minio在服务器上的外链**/public String getUrl(String objectName) throws Exception{return minioClient.getPresignedObjectUrl(GetPresignedObjectUrlArgs.builder().method(Method.GET).bucket(bucketName).object(objectName).expiry(1, TimeUnit.DAYS).build());}/*** 获取minio中,某个bucket中所有的文件名*/public Map<String, String> getFileList() {Iterable<Result<Item>> results = minioClient.listObjects(ListObjectsArgs.builder().bucket(bucketName).recursive(true).build());Map<String, String> fileUrlData = new HashMap<>();for (Result<Item> result : results) {Item item;String fileName = null;try {item = result.get();fileName = item.objectName();String url = getUrl(fileName);fileUrlData.put(fileName, url);} catch (Exception e) {e.printStackTrace();}}return fileUrlData;}
}

FileController.java

package com.penngo.example.controlleer;import com.penngo.example.component.MinioUtils;
import jakarta.annotation.Resource;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import java.io.File;
import java.io.FileInputStream;
import java.util.Map;@RestController
public class FileController {@Resourceprivate MinioUtils minioUtils;@GetMapping("/hello")public String hello(){return "FileController:Hello";}/*** 创建桶*/@GetMapping("/createBucket")public String createBucket() throws Exception{boolean b = minioUtils.createBucket();return "createBucket:" + b;}/*** 上传文件*/@GetMapping("/uploadFile")public String uploadFile(){String filePath = "D:\\project\\测试.docx";File file = new File(filePath);boolean b = false;try {FileInputStream fileInputStream = new FileInputStream(file);b = minioUtils.uploadFile(file.getName(), fileInputStream, file.length(), "application/vnd.openxmlformats-officedocument.wordprocessingml.document");}catch(Exception e){e.printStackTrace();}return "uploadFile:" + b;}@GetMapping("/fileList")public String fileList(){Map<String, String> files =  minioUtils.getFileList();StringBuffer sff = new StringBuffer();files.forEach((k,v)->{sff.append(k).append(":<a target='blank' href=").append(v).append(">").append(v).append("</a><br/>");});return sff.toString();}
}

MinioApp.java

package com.penngo.example;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication
public class MinioApp {public static void main(String[] args) {SpringApplication.run(MinioApp.class, args);}
}

运行效果:
在这里插入图片描述
在这里插入图片描述
更多官方java例子:https://github.com/minio/minio-java/tree/release/examples

3、MinIO Server配置参数

3.1、启动参数:

  • HOSTNAME
    minio服务器进程的主机名。
https://minio1.example.net
https://minio2.example.net
  • DIRECTORIES
    必须,minio存储的目录。
/mnt/data1
/mnt/data2
  • –address
    可选,将minio绑定到特定的网络地址和端口号。将地址和端口指定为address: port,
#/etc/hosts
127.0.1.1       minioip
127.0.1.2       minioip#启动
minio server --address "minioip:9000" ~/miniodirectory
  • –console-address
    可选,minio管理控制台的静态端口。

  • –ftp
    可选,启用并配置FTP (File Transfer Protocol)或FTPS (File Transfer Protocol over SSL/TLS)服务器。

minio server http://server{1...4}/disk{1...4} \
--ftp="address=:8021"                         \
--ftp="passive-port-range=30000-40000"        \
--ftp="tls-private-key=path/to/private.key"   \
--ftp="tls-public-cert=path/to/public.crt"    \
...
  • –sftp
    可选,启用并配置SFTP服务器。
minio server http://server{1...4}/disk{1...4}                               \
--sftp="address=:8022" --sftp="ssh-private-key=/home/miniouser/.ssh/id_rsa" \
...
  • –certs-dir, -S
    可选,minio进程用于配置TLS/SSL连接的证书所在文件夹的路径。

  • –quiet
    可选,禁用启动信息。

  • –anonymous
    可选,在日志记录中隐藏敏感信息。

  • –json
    可选,以JSON格式输出服务器日志和启动信息。

3.2、环境变量

  • MINIO_VOLUMES
    minio服务器进程用作存储后端的目录或驱动器。
    功能上等同于设置minio服务器目录。在配置MinIO使用环境文件运行时使用此值。
# MinIO configuration file
MINIO_VOLUMES="/data/minio" #配置存储目录
MINIO_OPTS="-C /etc/minio --address :9000" #配置minio监听端口
MINIO_ROOT_USER="minioadmin" #配置用户名
MINIO_ROOT_PASSWORD="minioadmin" #配置密码
#MINIO_OPTS="--address 0.0.0.0:9000 --console-address '0.0.0.0:9001'"  #指定控制台端口,不指定则默认和minio一致

MINIO_CONFIG_ENV_FILE
指定MinIO服务器进程用于加载环境变量的文件的完整路径。

docker run -dt \
--name "minio_local" \
--net=host \
-v /momo/app/minio/data:/mnt/data \
-v /momo/app/minio/config/config.env:/etc/config.env \
-e "MINIO_CONFIG_ENV_FILE=/etc/config.env" \
bitnami/minio:2022.9.17 \
minio server --console-address ":9990"

MINIO_ILM_EXPIRY_WORKERS
使用ILM过期规则检查过期对象的工作线程数。如果没有设置,MinIO默认使用最多一半的可用内核。

MINIO_DOMAIN
配置minio支持基于域名的访问模式

export MINIO_DOMAIN=minio.domain

MINIO_SCANNER_SPEED
在平衡MinIO读/写性能到扫描器进程时,管理扫描器的最大等待时间。

3.3、Root验证参数

MINIO_ROOT_USER
root用户的访问键。

MINIO_ROOT_PASSWORD
root用户的密钥。

MINIO_API_ROOT_ACCESS
Minio API root访问权限

MINIO_API_ROOT_ACCESS
指定on为启用,off为禁用根用户帐户。禁用root服务帐户也会禁用与root关联的所有服务帐户,但不包括用于站点复制的服务帐户。默认为开启。

配置参考:https://min.io/docs/minio/linux/reference/minio-server/minio-server.html#command-minio.server

4、MinIO Client可用命令

mc可以命令

Command

Description

mc alias list
mc alias remove
mc alias set
mc alias命令提供了一个方便的界面,用于管理与s3兼容的主机列表,mc可以连接到这些主机并对其运行操作。
mc anonymous get
mc anonymous get-json
mc anonymous links
mc anonymous list
mc anonymous set
mc anonymous set-json
mc anonymous命令支持对桶及其内容进行匿名策略设置或删除。允许匿名策略公共访问的桶,客户端可以无需身份验证执行策略授予的任何操作。
mc batch describe
mc batch generate
mc batch list
mc batch start
mc batch status
mc batch命令允许您在MinIO部署中运行一个或多个作业任务。

mc cat

mc cat命令将一个文件或对象的内容连接到另一个文件或对象。还可以使用该命令将指定文件或对象的内容显示为STDOUT。Cat具有与Cat相似的功能。

mc cp

mc cp命令将对象复制到MinIO部署或从MinIO部署复制对象,其中源可以是MinIO,也可以是本地文件系统。

mc diff

mc diff mc计算两个文件系统目录或MinIO桶之间的差异。mc diff只列出那些丢失的或大小不同的对象。mc diff不比较对象的内容。

mc du

mc du命令汇总了桶和文件夹的磁盘使用情况。您还可以对本地文件系统使用du来产生与du命令类似的结果。
mc encrypt clear
mc encrypt info
mc encrypt set
mc encrypt命令用于设置、更新或禁用桶的默认SSE (Server-Side Encryption)模式。MinIOl默认对象加密使用指定的SSE模式。
mc event add
mc event ls
mc event rm
mc event命令支持添加、删除和列出桶事件通知。

mc find

mc find命令支持在MinIO部署中搜索对象,也支持搜索文件系统上的文件。

mc head

mc head命令显示对象的前n行,其中n是指定给命令的参数。
mc idp ldap add
mc idp ldap disable
mc idp ldap enable
mc idp ldap info
mc idp ldap ls
mc idp ldap policy
mc idp ldap rm
mc idp ldap update
mc idp ldap命令允许您管理第三方Active Directory或ldap Identity and Access Management (IAM)集成的配置。
mc idp openid add
mc idp openid disable
mc idp openid enable
mc idp openid info
mc idp openid ls
mc idp openid rm
mc idp openid update
mc idp openid命令用于管理第三方openid IAM (Identity and Access Management)集成的配置。
mc idp ldap policy attach
mc idp ldap policy detach
mc idp ldap policy entities
mc idp ldap policy命令用来查询ldap策略与关联的组或用户的映射关系。
mc ilm restore
mc ilm rule add
mc ilm rule edit
mc ilm rule export
mc ilm rule import
mc ilm rule ls
mc ilm rule rm
mc ilm tier add
mc ilm tier check
mc ilm tier info
mc ilm tier ls
mc ilm tier rm
mc ilm tier update
mc ilm命令管理MinIO部署中的对象生命周期管理规则和分层。
mc legalhold clear
mc legalhold info
mc legalhold set
mc legalhold命令用来设置、移除或检索对象的WORM (Object Legal Hold)设置。
mc license info
mc license register
mc license update
mc license命令用于MinIO子网的集群注册。使用这些命令注册部署、注销部署、显示有关集群当前许可证的信息或更新集群的许可证密钥。

mc ls

mc ls命令列出MinIO或其他兼容s3的服务上的桶和对象。

mc mb

mc mb命令在指定的路径上创建一个新的桶或目录。

mc mirror

mc mirror命令将内容同步到MinIO部署,类似于rsync实用程序。mc mirror支持文件系统、MinIO部署和其他兼容s3的主机作为同步源。

mc mv

mc mv命令将对象从源移动到目标,例如在MinIO部署之间或同一MinIO部署上的桶之间。mc mv还支持在本地文件系统和MinIO之间移动对象。

mc od

mc命令将本地文件以指定的部件数量和部件尺寸复制到远程位置。该命令输出上传文件所需的时间。

mc ping

mc ping命令对指定的目标执行活动检查。

mc pipe

mc pipe命令将内容从STDIN流到目标对象。
mc quota clear
mc quota info
mc quota set
mc quota命令用于设置、显示和删除存储桶的硬配额限制。

mc rb

mc rb命令删除MinIO或其他s3兼容服务上的一个或多个bucket。
若要仅删除bucket的内容,请使用mc rm。
mc replicate add
mc replicate backlog
mc replicate export
mc replicate import
mc replicate ls
mc replicate resync
mc replicate rm
mc replicate status
mc replicate update
mc replicate 命令用于配置和管理MinIO部署的服务器端桶复制,包括双活复制配置和重新同步。
mc retention clear
mc retention info
mc retention set
mc retention命令用来为桶中的一个或多个对象配置WORM (Write-Once Read-Many)锁定设置。您还可以设置桶的默认对象锁设置,其中所有没有显式对象锁设置的对象都继承桶的默认设置。

mc rm

mc rm命令从MinIO部署的bucket中删除对象。要完全删除一个桶,使用mc rb代替。
mc share download
mc share ls
mc share upload
使用mc share命令管理预先指定的url,用于下载和上传对象到MinIO桶。

mc sql

mc sql命令提供S3 Select接口,用于对指定MinIO部署的对象执行sql查询。

mc stat

mc stat命令显示MinIO桶中对象的信息,包括对象元数据。
mc support callhome
mc support diag
mc support inspect
mc support perf
mc support profile
mc support proxy
mc support top api
mc support top disk
mc support top locks
MinIO Client mc支持命令提供了分析部署运行状况或性能以及运行诊断的工具。您还可以上传生成的运行状况报告,以供MinIO工程进一步分析。
mc tag list
mc tag remove
mc tag set
mc tag命令添加、删除和列出与桶或对象相关的标记。

mc tree

mc tree命令以树形格式列出MinIO bucket中的所有前缀。该命令可选地支持在每个前缀处列出桶内的所有对象,包括桶根。

mc undo

mc undo命令撤销由于在指定路径上执行PUT或DELETE操作而导致的更改。

mc update

mc update命令会自动将mc二进制文件更新到最新的稳定版本。
mc version enable
mc version info
mc version suspend
mc version命令用于启用、禁用和检索MinIO桶的版本控制状态。

mc watch

mc watch命令监视指定的MinIO桶或本地文件系统路径上的事件。对于S3服务,使用mc event add配置S3兼容服务的桶事件通知。

官方参考:https://min.io/docs/minio/linux/reference/minio-mc.html

相关文章:

开源对象存储系统minio部署配置与SpringBoot客户端整合访问

文章目录 1、MinIO安装部署1.1 下载 2、管理工具2.1、图形管理工具2.2、命令管理工具2.3、Java SDK管理工具 3、MinIO Server配置参数3.1、启动参数&#xff1a;3.2、环境变量3.3、Root验证参数 4、MinIO Client可用命令 官方介绍&#xff1a; MinIO 提供高性能、与S3 兼容的对…...

Matlab之数组字符串函数汇总

一、前言 在MATLAB中&#xff0c;数组字符串是指由字符组成的一维数组。字符串可以包含字母、数字、标点符号和空格等字符。MATLAB提供了一些函数和操作符来创建、访问和操作字符串数组。 二、字符串数组具体怎么使用&#xff1f; 1、使用单引号或双引号括起来的字符序列 例…...

基于深度学习网络的火灾检测算法matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 matlab2022a 3.部分核心程序 ................................................................................ load F…...

【Linux】高级IO和多路转接 | select/poll/epoll

多路转接和高级IO 咳咳&#xff0c;写的时候出了点问题&#xff0c;标点符号全乱了&#xff08;批量替换了几次&#xff09;&#xff0c;干脆就把全文的逗号和句号都改成英文的了&#xff08;不然代码块里面的代码都是中文标点就跑不动了&#xff09; 1.高级IO 1.1 五种IO模型…...

el-select 支持多选 搜索远程数据 组件抽取

el-select 支持多选 搜索远程数据 组件抽取 使用方式 import selectView from ./components/selectView<el-form><el-form-item label"选择器"><selectView v-model"selValue" change"handleChange"></el-form-item> …...

el-table纵向垂直表头

参考&#xff1a;https://www.jianshu.com/p/1f38eaffd070 <el-tablestyle"width: 100%":data"getValues":show-header"false"border:cell-style"cellStyle" ><el-table-columnv-for"(item, index) in getHeaders"…...

Pinyin4j介绍和简单使用

前言 Pinyin4j是一个Java库&#xff0c;用于将汉字转换为拼音。它是由中国清华大学的Tsinghua University和中国科学院计算技术研究所的研究人员开发的。Pinyin4j可以用于Java应用程序中&#xff0c;以便在需要时将汉字转换为拼音。例如&#xff0c;它可以用于中文输入法、文本…...

【数据结构】查找

【数据结构】查找 数据结构中&#xff0c;有顺序查找、二分查找、散列查找、插值查找、斐波那契额查找 1.顺序查找 条件&#xff1a;待查找的元素与数组中的元素按顺序排列。算法&#xff1a;从数组的第一个元素开始&#xff0c;逐个比较&#xff0c;直到找到目标元素或遍历完…...

第一次面试

1.多态的原理 2.编译原理 3.HTTPS的加密原理 4.说一说C11新特性 5.平时用过哪些STL容器 6.STL的比较器 原来就是自定义工具类hhhhhh 7.函数指针用过吗 8.I/O多路复用 9.Redis 问的基本都背过&#xff0c;但是一紧张啥都忘了hhhhhhhhh...

Nacos配置文件更新+热更新+多环境配置共享+集群搭建

对服务配置文件 场景&#xff1a; 如果多个服务对应的配置文件都需要更改时&#xff0c;可以利用配置管理&#xff0c;方便对配置文件进行更新&#xff0c;而且是在本地配置前先读取nacos的配置文件&#xff0c;优先级大于本地配置文件 配置步骤 1.首先在Nacos中的配置列表中增…...

李宏毅-机器学习hw4-self-attention结构-辨别600个speaker的身份

一、慢慢分析学习pytorch中的各个模块的参数含义、使用方法、功能&#xff1a; 1.encoder编码器中的nhead参数&#xff1a; self.encoder_layer nn.TransformerEncoderLayer( d_modeld_model, dim_feedforward256, nhead2) 所以说&#xff0c;这个nhead的意思&#xff0c;就…...

记一次使用NetworkManager管理Ubuntu网络无效问题分析

我们都知道CentOS、Redhat系列网络配置比较连贯&#xff0c;要么在/etc/sysconfig/network-scripts/ifcfg-网络设备名&#xff0c;文件中编辑后&#xff0c;重启网络服务&#xff1b;要么使用nmtui或者nmcli进行配置。但是&#xff0c;Ubuntu变动就比较大&#xff1a; 早期版本…...

Nginx重写功能

Nginx重写功能 一、Nginx常见模块二、访问路由location2.1location常用正则表达式2.2、location的分类2.3、location常用的匹配规则2.4、location优先级排列说明2.5、location示例2.6、location优先级总结2.7、实例2.7.1、location/{}与location/{}2.7.2、location/index.html{…...

王道考研计算机网络

文章目录 计算机网络体系结构计算机网络概述计算机网络的性能指标 计算机网络体系结构与参考模型错题 物理层通信基础基础概念奈奎斯特定理和香农定理编码与调制电路交换、报文交换和分组交换数据报与虚电路 传输介质物理层设备错题 数据链路层数据链路层的功能组帧差错控制检错…...

数据链路层重点协议-以太网

以太网简介 "以太网" 不是一种具体的网络&#xff0c;而是一种技术标准&#xff1b;既包含了数据链路层的内容&#xff0c;也包含了 一些物理层的内容。例如&#xff1a;规定了网络拓扑结构&#xff0c;访问控制方式&#xff0c;传输速率等&#xff1b; 以太网数据帧…...

学习计划

白驹过隙&#xff0c;转眼已是大二。新学期&#xff0c;新气象&#xff0c;新计划。 一、专业学习方面 学习vue、spring boot、redis、MybatisPlus、Elasticsearch、ssm框架&#xff0c;完成项目的编写&#xff0c;思考复盘。 二、读书方面 因为我大概率会走前端方向&#xff0…...

RabbitMQ的RPM包安装和Python读写操作

下载地址 ## erlang 下载地址 https://packagecloud.io/rabbitmq/erlang?page6## rabbitmq 下载地址 https://packagecloud.io/rabbitmq/rabbitmq-server/packages/el/7/rabbitmq-server-3.8.29-1.el7.noarch.rpm?distro_version_id140 Rabbitmq的RPM包安装 ## 下载 wget -…...

文件上传漏洞案例

目录 1.案例一 1&#xff09;案例源码 2&#xff09;创建web.php文件 3&#xff09;使用抓包软件 2.案例二 1&#xff09;案例代码 2&#xff09; 案例分析 3&#xff09;copy命令生成图片马 4&#xff09;上传图片马到服务器 5&#xff09;解析 文件图片 3.案例三 …...

Office365 Excel中使用宏将汉字转拼音

Office365 Excel中开启宏 文件 - 选项 - 信任中心 - 信任中心设值 - 宏设值 启用VBA宏启用VBA宏时启用Excel 4.0宏信任对VBA工程对象模型的访问 创建宏 视图 - 查看宏 填写名字创建宏&#xff1a;getpy填入下面代码保存&#xff0c;点击否&#xff0c;另存类型为“excel启…...

baichuan2(百川2)本地部署的实战方案

大家好,我是herosunly。985院校硕士毕业,现担任算法研究员一职,热衷于机器学习算法研究与应用。曾获得阿里云天池比赛第一名,CCF比赛第二名,科大讯飞比赛第三名。拥有多项发明专利。对机器学习和深度学习拥有自己独到的见解。曾经辅导过若干个非计算机专业的学生进入到算法…...

PostgreSQL配置主从备份(docker)

一、服务器规划 序号 IP 备注 1192.168.1.110主数据库2192.168.1.120从数据库 二、服务器部署 2.1、主服务器部署&#xff08;192.168.1.110&#xff09; 1&#xff09;、于/opt/postgresql目录下&#xff0c;编辑docker-compose.yml version: "3" services:po…...

qt作业day4

//clock_exercise.cpp#include "clock_timer.h" #include "ui_clock_timer.h"//时间事件处理函数 void Clock_Timer::timerEvent(QTimerEvent *event) {if(event->timerId() time_id){sys_tm QDateTime :: currentDateTime(); // int year sy…...

js如何实现字符串反转?

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ 使用 split() 和 reverse() 方法⭐ 使用循环⭐ 使用递归⭐ 写在最后 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦 几何带你启航前端之旅 欢迎来到前端入门之旅&#xff01;这个专…...

Nmap 7.94 发布:新功能!

Nmap 的最新版本 7.94 在其 26 岁生日之际发布。 最重要的升级是在所有平台上将 Zenmap 和 Ndiff 从 Python 2 迁移到 Python 3。 这个新版本的 Nmap 7.94 进行了升级&#xff0c;进行了多项改进&#xff0c;修复了一些关键错误&#xff0c;并添加了新的 Npcap、操作系统指纹…...

【深入解析spring cloud gateway】08 Reactor 知识扫盲

一、响应式编程概述 1.1 背景知识 为了应对高并发服务器端开发场景&#xff0c;在2009 年&#xff0c;微软提出了一个更优雅地实现异步编程的方式——Reactive Programming&#xff0c;我们称之为响应式编程。随后&#xff0c;Netflix 和LightBend 公司提供了RxJava 和Akka S…...

常用ADB指令

ADB指令 1.查看版本 adb shell getprop|findstr fingerprint 2.查看应用包名 adb shell pm list packages 3.查看系统关键字 adb shell getprop|findstr oem/sn/user… 4.查看进程id adb shell ps -ef |grep appstore 5.启动服务 adb shell am startservice -n com.a…...

【HTML5高级第二篇】WebWorker多线程、EventSource事件推送、History历史操作

文章目录 一、多线程1.1 概述1.2 体会多线程1.3 多线程中数据传递和接收 二、事件推送2.1 概述2.2 onmessage 事件 三、history 一、多线程 1.1 概述 前端JS默认按照单线程去执行&#xff0c;一段时间内只能执行一件事情。举个栗子&#xff1a;比方说古代攻城游戏&#xff0c…...

CentOS云服务器部署配置

1. 安装Mysql 1.1.确保服务器系统处于最新状态 [rootlocalhost ~]# yum -y update如果显示内容中含有 [rootlocalhost ~]# Complete! 说明更新完成 1.2.下载MySql安装包 rootlocalhost ~]# rpm -ivh http://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm…...

深入解析Java中的数组复制:System.arraycopy、Arrays.copyOf和Arrays.copyOfRange

当涉及到在Java中处理数组时&#xff0c;有许多方法可供选择&#xff0c;其中一些包括System.arraycopy()、Arrays.copyOf()和Arrays.copyOfRange()。这些方法允许您在不同的数组之间复制数据&#xff0c;但它们之间有一些细微的差异。在本篇博客文章中&#xff0c;我们将深入探…...

libc和glibc有什么区别

libc&#xff08;C Library&#xff09;是一个常见的术语&#xff0c;指的是C语言的标准函数库&#xff0c;提供了许多函数和常量供C语言程序使用。在不同的操作系统中&#xff0c;libc可能是不同的&#xff0c;但是它们都实现了C语言的标准库函数。 glibc&#xff08;GNU C L…...

网站建设推广方式/2345网址导航怎么样

换个新公司&#xff0c;做一些新鲜的事情&#xff0c;经过一天的琢磨&#xff0c;终于成功添加response日志 在nginx的日志中添加接口response的日志 由于此功能在nginx内置的功能中没有&#xff0c;需要安装第三方模块ngx_lua&#xff0c;由于此模块需要Lua语言&#xff0c;所…...

杭州网站排名优化/市场营销计划

现代数字系统设计——在线考试复习资料2021版 一、单选题 1. SOPC的中文意思是( )。 A.电子设计自动化 B.硬件描述语言 C.片上可编程系统 D.片上系统 答案:看左边查询 2.XPS是Xilinx公司提供的( )。 A.嵌入式系统的集成硬件设计和仿真工具 B.编辑FPGA的I/O引脚和面积约…...

汽车门户网站开发/品牌策划包括哪几个方面

【来信】贺老师&#xff0c;您好&#xff0c;我是江西某高校软件学院的一名在校学生。看了您在csdn上公布的博文和视频&#xff0c;我获益良多。不得不承认&#xff0c;之前的大学时光我是荒废了&#xff0c;立即就要大三了&#xff0c;我主攻的是C方面。因此我悔过自新的想从头…...

二学一做网站/网站设计与实现毕业设计

想必大家有很多登录、注册网站时需要验证的场景。今天我就送给大家一些代码&#xff0c;用来制作一个类似于这样的场景&#xff0c;我们一起看代码&#xff1a; import smtplib import re from os import environ from os.path import exists from platform import system,nod…...

洛阳响应式网站建设/汽车seo是什么意思

原文地址&#xff1a;百分比布局支持库参考原文&#xff1a;Percent Support Library: Bring dimension in % to RelativeLayout and FrameLayout虽然有很多的布局可以在 Android 应用程序开发的世界供我们使用&#xff0c;但我们总是只用这三种布局&#xff1a;LinearLayout, …...

中山网站建设文化报价/谷歌浏览器下载安装(手机安卓版)

目录基础功能进阶功能完整代码基础功能 换唇色&#xff01;&#xff0c;大部分功能可以自行探索&#xff0c;当更改储存色号框内名称后&#xff0c;可以将当前在颜色展示框的颜色储存。 进阶功能 通过左上角的设置按钮可以打开隐藏操作栏 选中色号数据重存 : 在下图所示处 [选…...