RabbitMQ(DAY2)
RabbitMQ(DAY2)数据隔离
对Virtual Hosts进行添加
使用java进行操作spring AMQP
导入依赖maven
1234<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-amqp</artifactId></dependency>
写publisherTests类
123456789101112@Autowired private RabbitTemplate rabbitTemplate; @Test public void testSimpleQueue(){ String queueName = "simple.queue"; String message = "hello , rabbitmq!"; ra ...
RabbitMQ(DAY1)
RabbitMQ(DAY1)什么是消息队列?可以理解为一个存放消息的容器,当我们需要使用消息的时候,直接从容器里面拿出消息使用即可。队列Queue特点是先进先出,所以消费消息时也是先进先出的。
其中参与传递的双方叫做生产者和消费者
这似乎很像操纵系统中的进程通讯,也是一种消息队列。我们这里提到的消息队列稍微有点区别,更多指的是各个服务以及系统内部的各个组件/模块之间的通信,属于一种中间件。
中间件就是一类为应用软件服务的软件,应用软件是为用户服务的,用户不用接触或者使用到中间件
除了消息队列,常见的中间件有RPC框架、分布式组件、HTTP服务器、任务调度框架、配置中心、数据库层的分库分表工具和数据迁移工具。
为啥要用消息队列?使用消息队列给我们带来三大好处:
异步处理
A调用B 只需要监听B处理完成的消息,当b处理完后,会发一条消息给mq,mq再转发给A
削峰/限流
降低系统的耦合性
部署推荐用docker 性能损失其实很小 不像redis登录到rabbitmq端口是:15672
MPP
MPplus无侵入式的mp
UserMapper继承BaseMapper 要指定实体类
常见注解MBplus通过扫描实体类,并基于反射获取实体类信息作为数据库表信息
(约定大于配置)
不符合约定:
@TableName: 用来指定表名
@TableId(value , type ): 用来指定表中的关键字段信息
@TableField(“‘转义字符’” , exist = false (不是数据库字段)): 用来指定表中的普通字段信息
未指定id默认为雪花算法
常见配置
核心功能条件构造器mbps支持各种复杂的where条件,可以满足日常开发的所有需求
123456QueryWrapper<User> wrapper = new QueryWrapper<>() .select("id","username","info","balance") .like("username&quo ...
BeanUtils与mapstruct
BeanUtils与mapstructMapStruct和BeanUtils都是Java中常用的对象属性映射工具,但它们在使用方式和性能上有一些区别
123456789@Mapperpublic interface CarMapper { @BeanMapping(resultType = CarDto.class, ignoreByDefault = true, mappingControl = MappingControl.FILTER) @Mapping(target = "color", ignore = true) @Mapping(source = "model", target = "modelName") @Mapping(condition = "java(source.getAge() >= 18)", target = "isAdult") CarDto map(Car car);}
使用@Mapper注解将 ...
傻瓜都会用的ssh连接(就用vscode)
傻瓜都会的ssh连接服务器用了很多SSH连接器,使用过github的remote ssh插件后爱不释手了。
原来是用来来连接本地的wsl2的,结果发现好像也可以进行ssh连接远程服务器,而且配置简单好用,文件上传下载都可以,多端支持。
首先我们去vs找到Remote ssh插件
找到左下角进行配置连接
连接到主机就可以了
IoC思想
IoCIoC(Inversion of control )控制反转/反转控制,是一种编程思想。
在传统的开发中,我们通常是在类A中手动通过new来创建一个B的对象出来
使用IoC思想:不通过new关键字来创建对象,而是通过IoC容器(例如spring框架)来帮助我们来实例化对象。我们需要什么对象,就去IoC容器里面取就行了
使用IoC思想进行开发,这使我们失去了管理、创建对象的权利,但是好处就是不用考虑这个对象是否未创建,符合“万物皆对象”的思想
为啥叫做控制反转?
控制:对象创建(实例化、管理)的权利
反转:控制权交于外部环境(IoC容器)
使用IoC对我们有什么帮助?
其思想就是使两方之间不要相互依赖,由第三方的容器来管理相关资源
1.对象之间的耦合度降低2.资源变的容易管理,使用spring容器提供的话很容易就可以实现一个单例
现有一个正对User的操作,利用Serviece和Dao两层结构进行开发
在没有使用IoC思想的情况下,Service层想使用Dao层的具体实现的话,需要通过new关键字在UserServerImpl中手动new出一个IUserDao的具体 ...