- 博客(27)
- 收藏
- 关注
原创 JSR303校验
return R.error(400, "提交的数据不合法").put("data",map);@NotEmpty 可以接收 字符串、集合collection、map、array类型数据。3.在需要校验的接参后,紧跟@BindingResult result,可以获取校验结果。@Min(value = 0,message=“xxx”) 最小值必须大于等于0。2. 在接收的controller的方法上,使用@valid注解开启校验。@NotNull 可以接收任意类型的数据。// 获取错误的属性名。
2023-08-03 10:03:42
156
原创 java文件上传乱码问题
明白了问题的产生原因,想要解决也很简单,只用字节流inputstream进行流的对拷就可以了, 因为字节流是不涉及编码的,不管是txt文件还是docx文件,只要不涉及编码问题,只以二进制的形式传输到服务器,就不会产生乱码。但是也有缺点:字节流的速度肯定是慢于字符流的,这个是特性导致,字节流就是慢。乱码问题是由于编码不同造成的,windows环境的编码一般是GB2312,而linux环境则是utf-8,如果使用字符流进行上传的话,必然会产生乱码问题。首先要明确,文件上传为什么会产生乱码?
2023-06-14 09:50:19
1430
原创 自定义异常类
在编程中总是免不了去处理异常,但出现异常的情况有很多,我们要是写到哪里处理到那里,以后维护的时候就不太方便,所以可以使用自定义异常类来完成对异常的集中处理。@RestControllerAdvice()是监听那个包下发生的异常,只要是监听到异常就由我们自己编写的异常处理类进行处理。在方法上添加的@ExceptionHandler()是确定可能出现的异常,如果真的出现这个异常的话,就有这个方法进行处理。
2023-02-14 18:50:06
140
原创 JSR303参数校验规范
前端虽然可以对输入的内容进行约束,但若是使用测试工具类 比如:postman ,依然可以任意输入各种数据,如果后端拿到数据后不进行校验,容易被钻空子。在controller接受参数之前 添加@Validated(value = {xxxGroup.class})这个xxxGroup.class是自己编写的接口类 空接口即可。使用JSR303参数校验规范步骤。在实体类的字段上 标注需要的注解。在实体类的字段上添加自定义注解。比如id字段不能为空。2.使用注解开启校验功能。使用注解开启校验功能。
2023-02-14 18:25:47
239
原创 RabbitMQ发送消息
FanoutExchange交换机广播这种方式是将消息发送给所有与这个交换机绑定的队列@Configurationpublic class FanoutConfig { // 创建交换机 @Bean public FanoutExchange fanoutExchange(){ return new FanoutExchange("xxx.fanout"); } // 创建队列1 @Bean public Queu
2022-04-06 23:39:44
1277
原创 RabbitMQ的消息预取机制
rabbitMQ内部有消息预取机制,比如有两个消费队列,共同去消费50条消息,即便这两台机器有差异,也会因为消息预取机制,每台机器去抢25条消息,从而影响整体效率。要解决可以在配置中限制消息预取的数量,原来默认是没有上限,现在可以限制为1,即每次处理完当前的消息之后再去队列中获取新的消息。spring: rabbitmq: listener: direct: prefetch: 1 #每次只取一个数据进行处理,原来的消息预期没有上限...
2022-04-04 23:06:51
2664
原创 rabbitMQ基本使用
基本消息队列的消息发送流程:1.建立连接connection2.简历通道channel3.利用channel声明队列4.利用channel向队列发送消息基本消息队列的信息接收流程:1.建立连接connection2.建立通道channel 因为不确定发送和接收谁先建立通道,所以两者都建立避免无效访问3.利用通道channel声明队列4.定义消费行为handleDelivery() 匿名内部类 消息的接收后进行处理5.利用channel将消费者与队列绑定Sp
2022-04-02 16:32:30
1739
原创 rabbitMQ的安装介绍
rabbitMQ使用docker安装docker run \-e RABBITMQ_DEFAULT_USER=itcast \-e RABBITMQ_DEFAULT_PASS=123321 \--name mq \--hostname mq1 \-p 15672:15672 \-p 5672:5672 \-d \rabbitmq:3-management5672是消息队列的端口15672是管理端口channel:操控mq的工具,每个与mq相连接都应该建立一...
2022-03-30 12:28:53
2198
原创 rabbitMQ优缺点
rabbitMQ会有一个broker容器,微服务将请求推送到容器中,请求会在容器中暂存,等待需要的微服务来获取请求进行处理。这样可以避免某一个微服务发生故障,其他微服务需要等待的情况。可以让所有的微服务根据自己的能力进行处理,达到流量削峰的目的。优点:耦合度低增加吞吐量故障隔离流量削峰缺点:依赖于broker的可靠性和安全性,稳定性会增加系统的复杂程度,没有明显的流程线,不好追踪。...
2022-03-29 15:47:32
1300
原创 dockerCompose集群部署
想要使用docker-compose进行集群部署需要将cloud项目打成jar包后存放在各自的文件夹下,同时还需要Dockerfile文件dockerfile文件内容比较简单FROM java:8-alpineCOPY ./app.jar /tmp/app.jarENTRYPOINT java -jar /tmp/app.jar分别代表基于java8 拷贝文件 启动脚本将所有微服务的jar包和dockerfile文件准备好后还需要docker-compose.yml文件versi
2022-03-26 12:37:10
3089
原创 springCloud从0到1之gateway
微服务的网关是十分重要的,它能负责路由,验证身份,过滤请求,解决跨域问题等等。首先新建一个网关服务并引入依赖<!--网关gateway--><dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-gateway</artifactId></dependency>&
2022-03-03 14:46:07
209
原创 springcloud从0到1之feign
feign的主要作用是结合了restTemplate和ribbon,发起远程调用和负载均衡。想要使用feign先要引入feign的依赖 <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign</artifactId>
2022-03-01 12:04:37
276
原创 springCloud从到1之nacos的集群配置(本机)
有nacos集群自然有mysql集群在本机的话也可以使用一个mysql集群将nacos复制三份,分别修改端口号,放开数据源,修改mysql的用户名密码然后使用nginx做负载均衡和反向代理配置nginx.conf在http的任意位置编写以下配置upstream nacos-cluster{ server 127.0.0.1:8845; server 127.0.0.1:8845; server 127.0.0.1:8845;}server /n
2022-02-27 15:53:11
840
原创 Springcloud从0到1——nacos配置中心
nacos不只可以做注册中心,也可以做配置管理nacos配置管理需要有Data Id 唯一标识,一般使用服务名-profile.yaml组成也不是所有配置都需要存放在nacos中,只有需要改变的 比如开关,之前做的项目在登录的时候短信验证和密码登录都可以,也可以改成只有密码登录。或者一些模板文件,比如日期/时间格式等...
2022-02-22 00:11:45
153
原创 SpringCloud从0到1(3) Nacos的使用与访问规则
想要使用nacos需要先启动nacos如果是单机模式的话 需要启动参数 windows 模式:nacos.cmd -m -standalonenacos启动成功后 需要在pom.xml中加入springcloudAlibaba依赖和nacos的依赖<dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-alibaba-dependenci...
2022-02-07 18:33:04
677
原创 SpringCloud从0到1(3)--Ribbon内部原理
Ribbon是负责负载均衡的,我们只知道在注入RestTemplate时在其上面加入了@LoadBalanced注解,就可以实现负载均衡,那么具体是怎么实现的呢?首先 微服务客户端会通过要访问的服务名称发起访问请求,Ribbon会通过LoadBalancerInterceptor拦截器拦截住这个请求,然后执行其中的intercept方法,在这个方法中执行一个名叫getHost()的方法,得到host也就是我们所写的微服务的名称。然后执行execute()方法,通过servicedId访问Eureka
2022-01-03 20:45:18
168
原创 SpringCloud从0到1(2)--Eureka使用方法
Eureka2Eureka负责服务注册与发现Eureka分为服务端与客户端服务端是一个单独的微服务 可以做成集群,各个Eureka之间可以相互注册。服务端需要1、添加依赖<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-server</artifac
2022-01-03 00:39:37
258
原创 SpringCloud从0到1(1)--Eureka概述
Eureka:所有的微服务在启动的时候都会向Eureka注册自己的信息,包括服务名称,ip,端口号等,并且每隔30秒会向Eureka发送一次心跳,如果某个时间Eureka突然检测不到某个微服务的心跳,就表示这个微服务可能出现问题挂掉了,Eureka就会把这个微服务从列表中剔除掉。其他的微服务想要调取这个微服务时需要使用服务名称去Eureka的服务列表中查找,看是否有所需要的微服务。当然,微服务一般都会做成集群,也就是同样的为微服务会有多个,所以可以采用负载均衡算法,比如轮询,权重,hash等算法,从
2022-01-02 20:50:52
101
原创 RocketMQ从0到1
RocketMQ的特点 rocketMQ使用java语言开发,单机吞吐量在十万/ms, 非常适用于分布式架构。 优点:1.rocketMQ能够使各个服务之间解耦合,mq通过数据分发的方式A服务把消息发送给mq,B服务和C服务如果需要,就可以从mq中取消息,而不需要知道是谁把消息发过来的,这样也是解耦合。2. 削峰平时流量1000, 峰值流量10000,就可以先用mq将大量的请求缓存起来,然后慢慢处理。 缺点:1.要保证系...
2021-12-29 23:36:07
258
原创 rocketMQ的角色分类
rocketMQ的角色分类producer 消息的生产者consumer 消息的消费者name server 管理brokerbroker 存放消息的地方topic 消息的类别,一次可以接收或发送多个topicmessage queue topic下细分的类别 用于并行发送和接收消息producer要去broker中发送消息,但是producer不知道向哪一个broker发送,所以要先去broker的管理者,也就是去nameServer中获取要发送的broker信息...
2021-12-29 23:15:52
1388
原创 jec报错(EncryptionOperationNotPossibleException解决方案)
在jdk的jre/lib/secutiry目录下有这两个jar包我这是替换完之后的 原来的是3K或4K 不是最新jec需要去oracle官网下载jec8JCE Unlimited Strength Jurisdiction Policy Files for JDK/JRE 8 Download下载完后解压 将两个jar包替换到jdk的jre/lib/secutiry目录下即可(最好做好备份)...
2021-10-13 11:30:28
790
原创 springboot项目前端页面放在thymeleaf中无法通过浏览器地址栏访问
question:springboot项目前端页面放在thymeleaf中无法通过浏览器地址栏访问 在springboot项目中的resources目录下有template,是存放thymeleaf前端页面的(想要使用需要加入thymeleaf起步依赖,并在html标签加上xmlns:th="http://www.thymeleaf.org")但是通过浏览器的导航栏是无法直接访问的,F12后确定了访问地址是正确的,但还是会报404错误。而通过controller的return可以访问,也就是说...
2021-10-08 19:34:43
863
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人