- 博客(44)
- 收藏
- 关注
原创 ThreadLocal的使用
这里为了更加还原真实的线上环境,直接就用了 拦截器+统一返回+全局异常捕获+ThreadLocal,项目还是比较完整的。
2024-06-21 11:50:19
345
原创 java11运行rocketmq
java11作为一个长期支持的版本,相信有很多人是在使用的,但是 rocketMQ 是java8开发的,所以 mq的相关的 sh脚本也是在 java8的环境下编写的,所以想要 在 11的环境下运行 rocketMQ,是需要做一些改变的。我的设备是 2核 2G 的centos7设备,一般情况下还会开启 redis 和 mysql 和 运行rocketmq的可视化界面的jar包, 所以 rocketmq 的 参数我调的很小 只有128m。一、runserver.sh。
2024-05-22 11:26:32
206
原创 validation的简单使用
那么问题就是怎么写,我们找一个现成的 @NotNull复制一下,改改代码validatedBy = {MobileValidator.class}//注意,这里是需要我们自己写的String message() default "手机号码有误";Class<?Class<?/*这两个泛型,前者是注解类型 ,后者是 要检验的值是什么类型*/@Override/*s就是前端传过来的值*/@Data@ToString@NotBlank(message = "名字不能为空")
2024-05-06 15:40:09
408
原创 mybatis使用xml中的if-else/choose
最近需要使用 xml 文件来实现一些增删改查,此文对 其中的 if-else 加以说明。然后在 xml 文件中写这个方法的具体实现。首先肯定是在 mapper 里面有一个方法。那么使用 xml 怎么来使用和接收呢?有一个引用类,假设叫 Student。
2024-04-19 17:13:20
1131
原创 定时任务--静态 和 动态
动态任务就是说,从数据库中读取循环时间,数据库中只要改动,那么项目中的循环时间就会随之改变,所以说项目中引用了 mybatisplus ,而库中存的内容很简单。随着项目的启动而启动,如果需要更改循环时间,需要重启应用。
2024-02-05 11:02:23
399
原创 用Integer当作锁的时候的注意事项
这里记录了对象的地址在值变化的时候就会使用到这里的原对象的地址,所以说地址最终是不会变的。使用 AtomicInteger 就可以了。前几天看到一个经典的面试题。下面使用另外一种方式。
2023-07-28 15:16:06
191
原创 Spring源码的一些理解---事务中的动态代理
spring 的事务和动态代理是息息相关的,也常常一不注意就事务失效,那么想弄明白失效的原因要从 spring 的动态代理说起。
2023-06-20 10:16:16
589
原创 reentrantLock的使用
那么有没有其他方法来解决这个并发问题呢,其实是有的,我们使用redis,其中有一个操作就是 原子性的增加/减。8个现成循环5次,也就是说,最终redis里面值应该是 100+40=140,但是结果是130。很简单,就是将redis里面的值拿出来以后,加一再放回去,但是如果是并发场景下呢?执行结果也肯定不会是 130-40=90。同样的,如果不加锁的情况下去执行 minusNum,往redis里面放一个值,num,值设置成100。我们这里使用 ApiFox来测试一下。这样也可以保证并发情况下的数据一致性。
2023-05-23 16:30:20
168
原创 DefaultSecurityFilterChain在编写了一些代码之后,消失了,等待大佬解答
但是当我写了一些代码之后,比如,利用数据库查询数据做用户的登录和校验,JWt解析token等操作之后,就找不到这个 DefaultSecurityFilterChain 了,如下。在一个新的项目中,加入springsecurity的依赖以后,是可以找到 DefaultSecurityFilterChain 的,如下。
2023-04-20 18:12:26
221
2
原创 spring.profiles.active的使用
那么我们就需要创建一个 名为 aplication-local-dev.properties 的配置文件。意思就是 项目启动后 使用 aplication-local-dev.properties 这个配置文件。而aplication-local-dev.properties 里面的配置信息才是最终注入到项目中的。这里的名字 local-dev prod 其实是可以随意命名的,没有规则上的限制。会有很多环境 这直接影响这配置文件里面的一些值。但是最好还是遵循命名的规范。比如数据库的连接信息等等。
2022-12-30 17:35:28
577
原创 jpa使用原生sql查询,或者使用Specification
使用这个的前提是: repository 继承 JpaSpecificationExecutor。三个判断条件写出来就解决了,所以这里记录一下如何适用 JPA 的原生 SQL。拼接 where mobile=“xxxxxx”有三个查询条件,如果适用 JPA 最常见的形式。如果采用最原生的 sql 哪一个筛选条件传值了。拼接 where endTime xxxxxx。拼接 where type = xxx。那么就拼接一下 sql 会方便很多。这样写出来的 原生SQL 是可以的。则需要加很多判断条件。
2022-12-22 17:33:55
1166
原创 feign的学习记录
开关改造代码feign自动实现负载均衡之前使用 restTemplate的时候 需要配加入注解 @LoadBalanced 才会被 ribbon拦截,才能够负载均衡,而现在直接使用 feign 直接就能够做负载均衡,因为 feign的内部集成了 ribbon在order的配置文件之内声明Feign的优化Feign其实只是将请求变成 地址,最终发送请求的 其实还是其他的一些组件默认使用的是 jdk自带的 URLConnection那么既然要使用 apache httpclient ,就需
2022-12-06 18:03:21
132
原创 nacos学习记录
父工程子工程在配置文件中写集群不论是 orderservice还是 userservice 都可以搭建集群即这样的话,这个服务就会加入到 HZ 集群中那么当HZ集群停掉了 ,那么才会访问其他集群的服务?错误,需要在配置一个地方,这样才可以,order的集群是 HZ 的时候,他会优先访问 HZ的user里面的实例,当 HZ里面的user实例停了,才会访问 其他地方的实例。例如在 HZ 集群中 有两个实例 那么一般来说是随机访问但是 我们可以设置权重一般实在 0-1 之间 那么当需要版
2022-12-06 09:36:01
71
原创 eureka
如果使用 restTemplate 的话 ,很多代码都是写死的 , 不能保证服务是可用的 所以有很多问题所以我们需要使用 eureka需要单独的一个 module ,依赖是服务注册在 userService模块中 引入依赖加配置先启动 注册中心 然后启动服务如果需要注册多个实例需要然后启动即可,这样的话 就会有两个实例 注册中心会如下显示既然实例已经注册完成 那么就可以通过名字来获取实例那么这里就不在使用 ip地址去发送请求 直接使用 实例的名字即可但是注册了两个实
2022-12-05 15:15:33
90
原创 redis持久化以及原理
在启动的时候 要制定配置文件配置文件中 指定了rdb文件的名字,默认情况下redis在哪里运行,那么他的rdb文件就会保存在哪里而且每次退出redis的时候,都会执行一次 bgsave而生成的文件名就是 这里的 dump.rdb当然在每次启动redis的时候,也会去读取这个rdb文件进行数据的恢复。如果在关闭reids后修改了这里的文件名,那么再次启动的时候,自然是做不了数据的回复的这里的 5 1 就是 5秒内 只要有 1 次的key的修改 那么就执行一次 bgsave操作压缩是要占用 cp
2022-12-01 10:48:52
260
原创 redis的特殊的数据结构
业务场景:规定一个中心点,以及距离,查询库中有哪些点是在这个距离内的,有按照 圆心半径查找的 也有按照 矩形查找的。在查询数据的时候,前端传入的参数带着上次最后一条数据,这样后端就可以知道从哪里开始往后查询多少条数据了。// 经度:116.322062纬度:39.894914。// 经度:116.378545纬度:39.865195。业务场景:附近的商家、附近的人、计算两点之间的距离等等。业务场景:任何使用到分页的时候都有可能发生。比如:附近的人、周围的美食、景点等等。
2022-12-01 10:26:04
393
原创 static final、static、@PostConstruct、构造方法、@AutoWired执行的顺序
那么在这个service类中 如果存在 static final / static / @PostConstruct 修饰的变量 或者是方法 执行顺序如何?即某个类的上面加入注解 @Service 交由spring容器管理。在执行业务的时候 一般的流程是 调用 service来执行。那么在项目启动的时候 执行的顺序是。
2022-11-28 11:54:01
1113
原创 redisson.tryLock()的参数的理解
就是说 A拿到了锁之后, 如果发生了一些异常错误,内部业务没能正常的执行,没能正常执行释放锁的操作,这个时候 这个超时施放时间才会起作用,也就是说,在A抢到锁之后,即便A的业务出现了堵塞,但是只要没发生一些异常情况,这里的超时施放时间是不起作用的,因为只要不发生异常,内部就会有一个 看门狗,每隔。从上面的图片可以看到,A抢过锁之后,执行业务,结束之后释放锁,释放锁的时候还 publish (发布)了一个信号,而有人发布,就有人订阅,发布人是A,订阅人是BCD…,所以说这里的择机再次抢夺是在BCD…
2022-11-09 11:57:43
9385
2
原创 8.3_springboot+spring data redis
package com.example;import org.junit.jupiter.api.Test;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.boot.test.context.SpringBootTest;import org.springframework.data.redis.core.StringRedisTemplate;import org.
2022-08-03 15:59:39
65
原创 7.21_SpringDataJPA下的mongo和mysql的模糊查询
7.21_SpringDataJPA下的mongo和mysql的模糊查询
2022-07-21 14:22:31
562
原创 7.14_JPA配合 example + 简单 或 复杂排序规则 + 分页
7.14_JPA配合 example + 简单 或 复杂排序规则 + 分页
2022-07-14 15:40:18
814
原创 7.5_springboot自动生成MySQL和MongoDB的表格,加之创建和修改时间
springboot自动生成MySQL和MongoDB的表格,加之创建和修改时间
2022-07-05 12:09:15
993
原创 6.30_spring-data-jpa自动生成mysql的表,和根据mysql表格自动生成java实体类
使用 spring-data-jpa 自动生成 mysql 中的 表格,以及根据mysql中的表格生成java 的 实体类
2022-07-01 09:37:49
474
原创 使用EasyPOI向docx文档指定位置插入文字
注意 这里说的是 对docx文档在指定位置插入文字 不是插入图片第一步 导入依赖 <dependency> <groupId>cn.afterturn</groupId> <artifactId>easypoi-base</artifactId> <version>4.4.0</version> </dependency>
2022-05-22 15:56:42
866
原创 jdk中自带MD5的使用以及加盐
JDK自带的md5算法的使用import java.security.MessageDigest;import java.security.NoSuchAlgorithmException;public class test_MD5 { public static void main(String[] args) throws NoSuchAlgorithmException { String s="nihao"; MessageDigest messag
2022-05-22 15:16:43
1585
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人