Entity Framework 并发处理

📅 发布时间:2026/7/5 19:40:32 👁️ 浏览次数:
Entity Framework 并发处理
远琴曰坏docker pull minio/minio:RELEASE.2025-04-22T22-12-26Z2 启动 Minio 容器我们假设你希望访问端口为 9000API和 9001Web 控制台可以这样运行docker run -d \--name minio \-p 9000:9000 \-p 9001:9001 \-v /Users/zhangyong/docker/minio/data:/data \-v /Users/zhangyong/docker/minio/config:/root/.minio \-e MINIO_ROOT_USERadmin \-e MINIO_ROOT_PASSWORDadmin123456 \minio/minio:RELEASE.2025-04-22T22-12-26Z \server /data --console-address :900101 参数说明-p 9000:9000MinIO API 服务端口-p 9001:9001Web 控制台端口-v /Users/zhangyong/docker/minio/data:/data映射数据目录-v /Users/zhangyong/docker/minio/config:/root/.minio保存配置MINIO_ROOT_USER、MINIO_ROOT_PASSWORD管理员账号密码server /data --console-address :9001指定数据目录并启用控制台端口02 启动后访问控制台地址http://localhost:9001登录账号admin登录密码admin1234563 上传文件在 MinIO以及所有兼容 S3 的对象存储系统中桶Bucket 是最顶层的逻辑存储单元可以理解为一个“命名空间”或“大文件夹”它是所有对象文件的容器。MinIO 不存在真正的目录结构而是通过对象 key 的前缀来模拟目录层级。例如我们可以创建一个 bucket 叫 datasets 数据集下面的文件对象如下datasets/├── mydataset1/│ ├── train/image1.jpg│ └── train/image2.jpg└── mydataset2/├── data.csv└── labels.txt虽然看起来像目录树但实际上存储系统中只有对象datasets/mydataset1/train/image1.jpgdatasets/mydataset1/train/image2.jpgdatasets/mydataset2/data.csvdatasets/mydataset2/labels.txtMinIO 客户端mc或 SDKJava/Python在列举对象时会自动把这些前缀识别为“目录”。接下来我们按照流程上传文件。1、创建桶 datasets2、创建新路径 mydataset13、上传图片4 访问授权1、修改桶的访问策略图中我们需要将访问策略从 Private 修改成 Public 。2、访问图片MinIO 地址http://localhost:9000桶名datasets对象路径mydataset1/父与女.png因为桶已经设置为 Public 所以我们可以直接访问如下的链接即可5 Java 示例01 创建 Access Key02 Minio 上传示例1、添加依赖io.miniominio8.5.102、编写代码public class MinioUnitTest {public static void main(String[] args) {try {// 1. 初始化 MinIO 客户端MinioClient minioClient MinioClient.builder().endpoint(http://localhost:9000) // MinIO 地址// accessKey 和 secretKey.credentials(yHxFBiulXKsuhbg9nHqO, qmsQU4JuWuwlr3ZgY4eMFbQ9LaTzzEHMV6T722kC).build();// 2. 文件信息String bucketName datasets;String objectName mydataset1/images/xiaoyuanjiang.webp; // 上传路径类似目录String filePath /Users/zhangyong/Pictures/xiaoyuanjiang.webp; // 本地文件路径// 3. 上传文件流式上传try (InputStream in new FileInputStream(filePath)) {minioClient.putObject(PutObjectArgs.builder().bucket(bucketName).object(objectName).stream(in, in.available(), -1).contentType(image/png) // 可根据文件类型设置.build());System.out.println(? 文件上传成功: objectName);}// 4. 拼接直链 URL因为是 public bucketString publicUrl String.format(http://localhost:9000/%s/%s, bucketName, objectName);System.out.println(? 上传成功直链地址);System.out.println(publicUrl);// // 4. 生成临时访问链接可选// String url minioClient.getPresignedObjectUrl(// GetPresignedObjectUrlArgs.builder()// .method(Method.GET)// .bucket(bucketName)// .object(objectName)// .expiry(60 * 60) // 1小时有效// .build()// );// System.out.println(?? 临时访问地址: url);} catch (Exception e) {e.printStackTrace();}}}3、执行效果