youyichannel

志于道,据于德,依于仁,游于艺!

0%

官网:https://min.io/

简介

官网简介:MinIO is a high-performance, S3 compatible object store. It is built for large scale AI/ML, data lake and database workloads. It runs on-prem and on any cloud (public or private) and from the data center to the edge. MinIO is software-defined and open source under GNU AGPL v3.

MinIO基于Apache License v2.0开源协议的对象存储服务,可以做为云存储的解决方案用来保存海量的图片,视频,文档。

由于采用Golang实现,服务端可以工作在Windows、Linux、OS X和FreeBSD上。配置简单,基本是复制可执行程序,单行命令可以运行起来。

MinIO兼容亚马逊S3云存储服务接口,非常适合于存储大容量非结构化的数据,例如图片、视频、日志文件、备份数据和容器/虚拟机镜像等,而一个对象文件可以是任意大小,从几kb到最大5T不等。

=> S3 ( Simple Storage Service简单存储服务)

基本概念

  • bucket – 类比于文件系统的目录
  • Object – 类比文件系统的文件
  • Keys – 类比文件名

官网文档:http://docs.minio.org.cn/docs/

阅读全文 »

创建工程

父工程 pom(主要实现版本仲裁)

<?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>

<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.7.12</version>
<relativePath/>
</parent>

<groupId>com.juzi</groupId>
<artifactId>dubbo-demo</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>pom</packaging>
<modules>
<module>dubbo-api</module>
<module>dubbo-api-provider</module>
<module>dubbo-api-consumer</module>
</modules>

<properties>
<java.version>11</java.version>
<maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target>
<spring.boot.version>2.7.12</spring.boot.version>
<spring-cloud.version>2021.0.8</spring-cloud.version>
<spring-cloud-alibaba.version>2021.0.5.0</spring-cloud-alibaba.version>
<dubbo.version>3.0.12</dubbo.version>
</properties>

<dependencies>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
</dependencies>


<dependencyManagement>
<dependencies>
<!--springcloud-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!--spring cloud alibaba-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>${spring-cloud-alibaba.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!--dubbo-->
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>${dubbo.version}</version>
</dependency>
</dependencies>
</dependencyManagement>


</project>
阅读全文 »

官网:https://nacos.io/

GitHub地址:https://github.com/alibaba/nacos

简介

官方文档:https://nacos.io/zh-cn/docs/v2/what-is-nacos.html

官网简介:一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。(an easy-to-use dynamic service discovery, configuration and service management platform for building cloud native applications.)

Nacos是SpringCloudAlibaba的组件,而SpringCloudAlibaba也遵循SpringCloud中定义的服务注册、服务发现规范。

阅读全文 »

自管理敏感词过滤

技术选型

方案 说明
数据库模糊查询 效率太低
String.indexOf("")查找 不适用于数据量大的情形
全文检索 需要分词之后再匹配
DFA算法 ✅ 确定有穷自动机

DFA实现原理

DFA全称为:Deterministic Finite Automaton,即确定有穷自动机。

存储:一次性的把所有的敏感词存储到了多个map中,就是下图表示这种结构

敏感词:冰毒、大麻、大坏蛋

阅读全文 »

WebSocket实现浏览器和服务器的通信

WebSocket简介

WebSocket是基于TCP协议的一种新的网络协议。它实现了浏览器和服务器之间的全双工通信 —— 浏览器和服务器只需要完成一次握手,二者之间就可以创建持久性的连接,并进行双向的数据传输。

HTTP VS WebSocket

区别:

  • HTTP是短连接;WebSocket是长连接
  • HTTP通信是单向的,基于请求响应模型;WebSocket支持双向通信

联系:

  • HTTP和WebSocket底层都是基于TCP协议

阅读全文 »

COS对象存储实战——用户头像相关

官方SDK:https://cloud.tencent.com/document/product/436/10199

环境:

  • SpringBoot 2.7.x

需要先开通COS对象存储服务:https://cloud.tencent.com/document/product/436

安装SDK

<dependency>
<groupId>com.qcloud</groupId>
<artifactId>cos_api</artifactId>
<version>${latest.version}</version>
</dependency>

配置COS对象存储

阅读全文 »

上期详细介绍了OAuth2的相关知识点,重点在OAuth2的授权模式(其中最重要的是授权码模式),这期我们就通过Demo的方式来实践下OAuth2认证协议。

仓库地址:https://github.com/yoyocraft/oauth2-demo

SQL脚本 && Postman测试脚本:https://github.com/yoyocraft/oauth2-demo/tree/master/doc

作者环境:

  • MacOS
  • Open JDK 11
  • Nacos 2.2.2
  • Maven 3.6.1
  • MySQL 8.0.31
  • Spring Boot 2.7.0
  • Spring Cloud 2021.0.1
  • Spring Cloud Alibaba 2021.0.1.0
  • IntelliJ IDEA Community Edition 2023.1.3

一、初始化项目

1.1 创建Maven项目

阅读全文 »

一、OAuth2概述

在OAuth2.0中,"O"是Open的简称,所以OAuth表示开放授权,它是一个关于授权(Authorization)的开放网络标准。简单来说,OAuth2是一种授权协议。

OAuth2允许用户授权第三方应用访问用户存储在其他服务商内部的各种信息数据,而这种授权并不暴露给第三方应用用户的用户名和密码。

=> OAuth2.0这种授权协议,就是保证第三方应用只有在获得授权之后,才可以进一步访问授权者的数据。

阅读全文 »