- 博客(45)
- 收藏
- 关注
原创 spring-boot定时任务
关于定时任务注解加在方法上指定定时表达式,定时任务配置类默认只有一个线程,定时任务开启会占用当前定时任务线程,如果下一个定时任务开启 ,这个定时任务没有结束,会阻塞。生成定时任务有 * * * * *?在定时任务方法所在类上面加入异步任务注解@EnableAsync ,在定时任务方法上加入注解@Async。0/5 * * 5 * 4 表示 每月的最后一周的第五天的任意时任意分的0秒开始 每隔5秒启动一次任务。* * 表示任意月的任意周的每天的每时的每分的0秒开始一次任务。
2024-01-17 15:16:43
564
原创 支付宝电脑端支付同步通知异步通知
在验签成功 后续保存交易流水信息和更改订单状态成功后 需要给支付宝返回"success"字符串。这样支付宝就知道你收到了异步通知,不再发送异步通知。同步通知是支付成功后,支付宝会跳转到同步通知的地址,可以在支付成功后让页面跳转到项目的订单页面或者任何页面。异步通知是POST请求。使用支付宝支付成功后支付宝会返回通知信息。在配置支付信息时,配置了支付成功时要同步通知和异步通知的信息地址。异步通知地址ip需要是公网,支付宝异步通知是访问不到你的局域网。在接收到异步通知为了安全需要先验签 再执行后续操作。
2024-01-14 10:34:44
1508
原创 支付宝电脑端支付代码
return_uri和notify_url:http://8j5704c509.goho.co/alipay.trade.page.pay-JAVA-UTF-8/return_url.jsp 8j5704c509.goho.co域名或ip 必须是公网,个人局域网是无法连接接到支付宝的。//goods1.put("goods_name", "子商品1");System.out.println("调用成功");System.out.println("调用成功");
2024-01-10 14:57:59
988
1
原创 Feign远程调用丢失请求头问题处理--异步任务执行远程请求线程丢失请求属性问题处理
如果B方法是在异步任务CompletableFuture.runAsync(()->{},Executor)中执行并启用线程池分配新线程,A方法中还有C方法也是异步任务Feign远程调用执行。会出现一个问题 :之前 在Feign拦截器给远程请求添加请求头headers数据时 先要从浏览器发送的老请求中获得请求头数据,而获取原始请求使用RequestContextHolder.getRequestAttributes().getRequest() 会是一个null值。true 表示子线程继承主线程请求。
2024-01-01 20:10:20
733
原创 Feign远程调用丢失请求头问题处理
而参数template 是 RequestTemplate 类型,生成Request对象的数据是template中携带的数据,所以给template的请求头添加上Q请求中的请求头数据,那么生成Request对象便会携带上请求头数据。template包含请求地址请求头但是请求头没有数据,targetRequest (template)方法会经过Feign的拦截器 返回一个Request对象,然后再执行http请求获取数据。请求头不包含Q请求中的请求头数据,所以fegin远程调用会丢失请求头。
2024-01-01 18:14:03
572
原创 RabbitMQ消息存储JSON格式反序列化
Jackson2JsonMessageConverter的反序列化实现类,它可以将实体类对象转换为JSON格式数据。在接收消息时,反序列化实现类可以将JSON数据转为实体类对象数据。如果发送消息消息体为实体类对象数据,交换机接收消息经由路由键发送给队列。需要实现数据反序列化操作。实现JSON格式的反序列化操作。Rabbitmq的反序列化接口 MessageConverter,它的实现类有。配置Jackson2JsonMessageConverter的反序列化实现类。
2023-12-29 21:10:37
740
原创 RabbitMQ消息队列安装配置及常用交换机
参数一队列名称,参数二 队列持久化 重启mq队列仍然存在,参数三exclusive – 如果我们声明一个独占队列,则为 true(该队列将仅由声明者的连接使用),参数四 当所有消费客户端连接断开后,是否自动删除 队列 true:删除 false:不删除 官方解释:autoDelete – 如果服务器在队列不再使用时应删除队列,则为 true。将镜像加载到容器中运行。参数一队列名称或交换机名称,参数二为参数一值的类型 类型为队列或交换机,参数三交换机名称,参数四 路由键,参数五百度 设置为null。
2023-12-29 20:58:47
1962
原创 分布式Session共享
服务B已经设置好,服务A需要和服务B同样操作,除了设置整合的redis存的数据的有效时间server.servlet.session.timeout=30m 不用设置,因为服务A只是取没有存。但是尽管服务B使用Session保存了服务B的请求结果,但是如果这两个服务的浏览器上的作用域Domain不同,服务A是拿不到的。还有一种叫hash一致性的方法 是通过算法负载均衡到某个服务上,缺点当服务横向扩展时(服务增加)之前的算法就会失效 需要重新计算让结果重新负载均衡到原来的服务。这两个序列化器都可使用。
2023-12-20 13:06:01
308
原创 commons-httpclient的配置及PostMethod和GetMethod
executeMethod(postMethod) 表示发送PostMethod请求 及Post请求。返回code码 code为200 表示发送请求成功。GetMethod发送get请求,添加数据直接在url后面拼接和平常发送请求一样 其他添加数据的方法无效 尝试过多次。发送成功返回code码==200.总结:像HttpClient等发送请求类 配置信息通常就是配置 连接数,和超时时间限制。关于commons-httpclient的配置看图,哪里不懂 再去看源码。
2023-12-19 12:44:49
828
原创 MD5密码加盐加密
在使用数据库存储密码时,如果正常存储密码会以原码暴露在数据库表,这会非常危险。在存储密码等重要信息 我们可以使用MD5密码加密处理再存储到数据库。
2023-12-16 18:43:19
664
原创 Redisson锁的使用及常用锁
在数据缓存到redis等中间件,key缓存数据正好过期 却遭遇大量高并发请求访问同一个数据,这会给数据库造成巨大压力并拉低服务器处理速度,降低吞吐量。为了解决这一问题,可以使用Redisson锁 ,原理:大量请求访问是只允许一个进程进到方法中并获得A锁,A锁已被占用,其他进程只有等待A锁被释放才能获得A锁。当第一个获得A锁的进程 拿到锁 查询数据库并返回数据,数据会被保存到redis 缓存数据key中。其他进程无需再次访问数据库,通过获得缓存数据返回。
2023-12-03 22:13:16
1098
1
原创 SpringCache------ 一些问题处理
缓存雪崩:大量key缓存数据同一时间正好过期,解决:给key添加随机过期时间。加上过期时间 在配置文件添加 spring.cache.redis.time-to-live=360000。解决:spring.cache.redis.cache-null-values=true。缓存击穿: 大量并发请求 请求一个正好过期的缓存数据,解决:加锁 sync=true;//修改缓存key和value值的序列化方式。//修改缓存key和value值的序列化方式。// 解决查询缓存转换异常的问题。
2023-12-03 20:59:04
997
原创 SpringCache ----@CacheEvict: 触发缓存驱逐。
比如@CacheEvict(value="product",key=" 'productlist' ");@CacheEvict(value="product",key=" 'productwo' ")CacheEvict(value="分区名称",allEntries) 加update方法上,一旦执行update ,该注解会把分区中所有key 都删掉。@CacheEvict(value="分区名称",key=" 'key的名称' ")@Caching注解 是将其他缓存有关注解包容在一起 同时进行。
2023-12-03 20:13:49
261
原创 SpringCache缓存以JSON数据存到redis
因为SpringCache帮我将数据缓存,再次访问方法数据仍会是以方法的返回形式 返回数据。怎么将缓存数据以JSON数据存入redis 并以JSON格式展现,,,1. 需要写配置类打开 RedisCacheConfiguration 配置来看 源码是怎么配置的 效仿源码修改配置首先注册一个配置类:创建返回值为RedisCacheConfiguration类型的方法,方法上@Bean 注入容器。
2023-12-03 19:36:37
195
原创 SpringCache快速缓存的使用
springCache 是spring提供快速生成缓存的注解配置1.使用springCache需要引入springcache的依赖包-- spring cache 快速缓存 -->我们要将缓存的数据放到redis中,所以还需要引入redis的依赖包2.导入依赖包后,需要在配置文件添加相关配置spring:redis:port: 6379 #端口号cache: # cache 是指定缓存使用redis存放。
2023-12-03 16:40:46
657
原创 后端校验失效-关于javax.validation.Valid,javax.validation.constraints.NotBlank; @NotBlank 注解不生效产生的问题及解决
@NotBlank不生效
2023-11-15 22:43:37
4749
1
原创 ES--6--番外-DSL语句关键词
"geo_distance":{"distance":"3km", "location":"31.21,121.5"} 根据经纬度查询,lcation是字段 且类型为"type": "geo_point" 类型。"term": { "brand": {"value": "喜来登"}} 精确查询 查找keyword,数值int,日期,boolean等类型字 brand是字段类型,喜来登是查询值。"match":{ "FIELD": "TEXT"} 指定字段类型,及字段值查询文档信息。
2023-10-21 17:22:31
89
原创 ES--5--输入框查询自动补全
重新创建带有自动补全和拼音分词器的索引库 接下来在IDEA实现自动补全 在此之前需要把索引库文档数据删掉重新创建索引库文档数据。我们在索引库新增了字段suggestion 在实体类HotelDoc中 把品牌和商圈信息作为suggestion的数据,来作为补全查询的词汇。我们需要自定义分词器并将拼音分词器放到里面,在创建索引库时创建自定义分词器,并将分词器作用在索引库的字段上。上面一连串是创建索引库并自定义分词器 加入拼音分词器。
2023-10-21 11:57:24
71
原创 ES--4--聚合查询并把数据返回给前端
聚合查询 向前端返回的规范是map集合形式的数据。IDEA中 实现聚合以前端发送请求为例。size:0 表示不查询文档数据。
2023-10-21 11:09:01
180
原创 ES--3--查询索引库文档数据返回给前端
将查询到所有文档数据以实体类HoteDoc的格式 保存到List集合中,total是数据的数量。在ES--1和ES--2 创建索引库并创建了索引库文档数据后 可以查询索引库文档数据。在IDEA中 在黑马旅游的前端案例中 我们设置了查询的众多条件。后端返回数据一定按照前端的要求 与之对应。在黑马旅游的案例 后端返回的规范为。发送请求将查询到数据 解析。
2023-10-21 10:58:44
126
原创 ES--2--创建修改和删除索引库文档数据
需要建立两个实体类 ,其中一个来对用mysql数据库中表来拿到mysql数据。另外一个实体类来接收其中一个的数据转换属性。在ES--1--中 我们创建了索引库并指定了索引库名称。修改索引库文档---局部修改增量修改。
2023-10-21 10:28:58
62
原创 ES--1--索引库创建与删除
安装好es后 ,我们需要安装操作es的可视化工具kibana。同样也是安装在linux容器里面。1.首先我们需要安装es ,这里我是在linux虚拟机将es生成镜像放在docker容器里。3.然后在@SpringBootTest测试类下创建索引库。然后将ik分词器放到es中,ik分词器用来处理中文输入。在kibana 书写DSL语句创建索引库。2.创建一个静态文本类存放DSL语句。1.导入es 依赖包。
2023-10-21 09:57:15
140
原创 MQ消息队列
System.out.println("spring 消费者topic_queue_1_fan.#接收到消息 :【" + msg + "】");System.err.println("spring 消费者topic_queue_2_jun.#接收到消息 :【" + msg + "】");System.err.println("spring 消费者Queue_duilie2接收到消息 :【" + xiaoxi + "】");
2023-10-16 11:27:38
83
1
原创 访问Gateway 网关 遇到跨域问题
"http://localhost:8090" #允许该地址 跨域对网关发送http://localhost:10010/user/1?该HTML文件在http://localhost:8090服务下启动 发送了http://localhost:10010/user/1 的get请求 请求被拒绝。比如http://localhost:8090这个地址发起 http://localhost:10010/user/1 的get请求。究竟什么是跨域问题?
2023-10-15 11:17:05
242
1
原创 gateway网关--GlobalFilter全局过滤器
Order注解 表示多个网关过滤器存在时,@Order(-1)第一个启动。括号的数值越小启动顺序越早值越大 顺序越靠后。GlobalFilter全局过滤器作用也是处理一切进入网关的请求和微服务响应。如果gateway的值与过滤器中值对应不上 则返回错误结果。在浏览器请求时 需要输入。
2023-10-14 19:52:06
175
1
原创 搭建gateway网关
在新的Module里面的application.yml文件中配置网关信息。-- nacos 客户端依赖 -->可在nacos服务中查到 网关服务。-- 网关依赖 -->
2023-10-14 19:23:54
105
1
原创 Feign的最佳实践
什么是Feign的最佳实践呢?说白 就是将 对Feign的使用 而和Feign创建有关的类 聚集到一个服务里面,其他服务若使用这些类,只需要引入服务的依赖包。-- 引入Feign远程调用 的依赖: 代替RestTemplate-->这个Module服务就完成了。其他服务如果需要使用里面的远程调用接口则只要引入该服务的依赖包。然后在服务中创建实现发送请求远程调用的接口和配置日志级别的类和其他一些需要的实体类。创建一个模块Module,引入Feign的依赖包。
2023-10-14 14:33:47
86
1
原创 Feign的性能优化
loggerLevel: BASIC #日志级别,BASIC 就是基本的请求和响应信息。max-connection-per-route: 50 #每个路径的最大连接数。enabled: true #开启feign对HttpClient的支持。max-connection: 200 #最大的连接数。URLConnection:默认实现,不支持连接池。Apache HttpClient: 支持连接池。--httpClient的依赖-->Feign的性能优化-连接池配置。OKHttp: 支持连接池。
2023-10-14 14:12:46
102
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人