MD5Util
123456789101112131415161718192021222324252627282930@Slf4jpublic class Md5Util { /** * 根据文件生成md5 */ public static String getFileMD5(MultipartFile file) { try { return DigestUtils.md5Hex(file.getInputStream()); } catch (Exception e) { log.error("getFileMD5 error",e); } log.info("使用文件name"); return file.getOriginalFilename(); } /** * 根据文件流生成md5 */ public stat ...
MyBatis-Plus
MyBatis-Plus
逻辑删除
逻辑删除功能
由于数据库中所有表均采用逻辑删除策略,所以查询数据时均需要增加过滤条件is_deleted=0。
上述操作虽不难实现,但是每个查询接口都要考虑到,也显得有些繁琐。为简化上述操作,可以使用Mybatis-Plus提供的逻辑删除功能,它可以自动为查询操作增加is_deleted=0过滤条件,并将删除操作转为更新语句。具体配置如下,详细信息可参考官方文档。
方法一
在application.yml中增加如下内容
123456mybatis-plus:global-config: db-config: logic-delete-field: is_deleted # 全局逻辑删除的实体字段名(配置后可以忽略不配置步骤二) logic-delete-value: 1 # 逻辑已删除值(默认为 1) logic-not-delete-value: 0 # 逻辑未删除值(默认为 0)
方法二
在实体类中的删除标识字段上增加@TableLogic注解
12345678910111213141516171819202122 @Dat ...
Minio
MinioConfig
minio操作:1.上传 2.生命周期等
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911 ...
Mysql 高级
Mysql 高级
配置
配置文件路径
/etc/mysql/conf.d
以.cnf结尾的可以被mysql加载
配置文件节点
在配置文件中,配置项写在[mysqld]或[mysql]下,分别代表服务端和客户端配置
字符集
MySQL 8版本之前,默认字符集为 latin1(ISO-8859-1) ,不支持中文,使用前必须设置字符集为utf8(utf8mb3)或utf8mb4。从MySQL 8开始,数据库的默认字符集为 utf8mb4 ,从而避免中文乱码的问题。
SHOW VARIABLES LIKE '%char%';
utf8与utf8mb4
字符集表示一个字符需要使用1~4个字节,但是我们常用的一些字符使用1~3个字节就可以表示了。而字符集表示一个字符所用的最大字节长度,在某些方面会影响系统的存储和性能,所以设计MySQL的设计者偷偷的定义了两个概念:1234utf8mb3 :阉割过的 utf8 字符集,只使用1~3个字节表示字符。(无法存储emoji表情)MySQL5.7中的utf8是utf8mb3字符集utf8mb4 :正宗的 utf8 字符集,使用1~4个字节表示字符。 ...
Nacos源码解析
jar包指定配置文件
–spring.config.location=/ect/server/application.yml
优先级, --spring.config.location大于jar包中的配置
spring boot 的项目
通信都是使用Rest API通信
注册的单位是实例, 最小单元是实例
单集群的nacos 的功能
服务发现
心跳检测
服务注册
实例: isemphere: true /false
临时实例 :AP架构(注册中心)
永久实例 :CP架构(配置中心)
服务注册的请求方式:
1.x版本使用http / https请求
2.x版本及以后: grpc请求
AutoConfigreAfter ( {xxxx.class ,xxx.class}) 在在这写配置加载之后再加载 顺序
实例注册请求发送时机:
Spring 监听器ApplicationListener 监听WenInit 初始化完成后 发送请求;
spring boot web 容器
tomcat : 默认
undertow
jetty
nac ...
MyBatis
MyBatis
设置类型别名:
12345678<typeAliases> <!--默认为别名为类名(不区分大小写--> <typeAlias type="online.zorange.entity.User" alias="aaa"></typeAlias> <!--通过包来设置别名--> <package name="online.zorange.entity"></package></typeAliases>
默认类型别名
别名
映射的类型
_byte
byte
_long
long
_short
short
_int
int
_integer
int
_double
double
_float
float
_boolean
boolean
string
String
byte
Byte
long
Long
short
Short
...
Nacos配置中心
Nacos配置中心
统一配置管理
当微服务部署的实例越来越多,达到数十、数百时,逐个修改微服务配置就显得十分的不方便,而且很容易出错。我们需要一种统一配置管理方案,可以集中管理所有实例的配置。
nacos一方面可以将配置集中管理,另一方可以在配置变更时,及时通知微服务,实现配置的热更新。
Nacos入门
1.在nacos中添加配置
配置的选项与服务配置基本一致
只有一个区别:服务名改成了配置文件的id(Data ID)
都有 namespace和group
2.微服务集成配置中心
微服务需要进行改造,从Nacos配置中心中获取配置信息进行使用。
步骤:
1、在spzx-cloud-user微服务中,引入spring-cloud-starter-alibaba-nacos-config依赖
12345<!-- nacos作为配置中心时所对应的依赖 --><dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-sta ...
Orange blog 项目需求文档
blog
需求
密码修改功能,个人信息详情,浏览量,点赞量,阅读量数据
bug
RabbitMQ
RabbitMQ
消息中间件概述
消息队列简介
消息队列(message queue)简称MQ,是一种以“先进先出”的数据结构为基础的消息服务器。
消息:在两个系统要传输的数据
作用:实现消息的传递
原始的数据传递方式:
数据传输方式为同步传输【作为调用方必须等待被调用方执行完毕以后,才可以继续传递消息】,同步传输存在的弊端:传输效率较低。
基于MQ实现消息的传输,如下图所示:
数据的传输方式属于异步传输【作为调用方法不用等待被调用方执行完毕就可以接续传递消息】,数据传输的消息较高。
消息队列应用场景
主要的作用:
[1]系统解耦
[2]流量消锋
[3]数据分发
系统解耦
系统的耦合性越高,容错性【是指系统在部分组件(一个或多个)发生故障时仍能正常运作的能力】就越低
如下下图所示:
使用消息队列以后,整个下单操作的架构如下图所示:
使用消息队列解耦合,系统的耦合性就会降低了,容错性就提高了。比如物流系统发生故障,需要几分钟才能来修复,在这段时间内,物流系统要处理的数据被缓存
到消息队列中,用户的下单操作正常完成。当物流系统回复后,补充处理存在消息队列中的订单消息 ...
Redisson
Redisson实现
1.导入依赖
12345<!-- redisson --><dependency> <groupId>org.redisson</groupId> <artifactId>redisson</artifactId></dependency>
2. 配置类
123456789101112131415161718192021222324252627282930313233343536@Data@Configuration@ConfigurationProperties("spring.data.redis")public class RedissonConfig { private String host; private String password; private String port; private int timeout = 3000; private static String ADDRESS_P ...
