- 博客(29)
- 收藏
- 关注
原创 Redis分布式锁
Redis 分布式锁:1.互斥性:在任意时刻,只有一个用户获取锁2.不会发生死锁。即使有一个客户端在持有锁的期间崩溃而没有主动解锁,也能保证后续其他客户端能加锁。3.具有容错性。只要大部分的Redis节点正常运行,客户端就可以加锁和解锁。4.解铃还须系铃人。加锁和解锁必须是同一个客户端,客户端自己不能把别人加的锁给解了。下面方法:只满足-1、2、4 条件,单点Redis 我们的加锁代码满足我们可靠性里描述的三个条件。首先,set()加入了NX参数,可以保证如果已有key存在,则函数不会调
2022-03-31 11:27:24
1714
原创 数据库乐观锁
//查询出商品信息,version = 1select version from items where id=1//修改商品库存为2update items set quantity=2,version = 3 where id=1 and version = 2;乐观锁每次在执行数据的修改操作时,都会带上一个版本号,一旦版本号和数据的版本号一致就可以执行修改操作并对版本号执行+1操作,否则就执行失败。因为每次操作的版本号都会随之增加,所以不会出现ABA问题,因为版本号只会增加不会减少。除了v
2022-03-16 14:04:19
2454
原创 spring初始化
spring初始化ApplicationRunner 容器加载完打印出 JVM 2s 后运行 1,2在34后运行CommandLineRunner 差不多和1,处理参数不一样@PostConstruct 不安全InitializingBean 建议使用ApplicationListener 全局性@Bean(initMethod = “init”) 看看就可以了,除非某些配置类的init方法public SimpleExampleBean sim
2022-03-14 10:44:36
595
1
原创 spring定时任务
@schedule 默认单线程1个线程跑 底层利用schedulePoolExtuor@schedule 使用方式:1.重写schedulePool线程池 线程数量2.@schedule + @Aysnc 需要重写@Aysnc线程池 线程数量/////////////////////////////////////////////////////////////////////////////////////////////////////默认@schedule + @Aysnc 多个任务之间串行
2022-03-01 17:00:58
126
原创 mybatis-小知识
varchar2(100 char) : 允许一百个任意字符varchar2(100) :允许一百个英文一个汉字在数据库里-可能占两个或者三个位置。<result property="id" colum="ID" jdbcType="varchar2"/>insert into table values(#{id,jdbcType="varchar2"})//需要指定jdbcType.否则在插入数据为空时,无法识别插入字段类型,报 无效类型:111 错误等等。...
2022-03-01 15:26:45
314
原创 bean获取字段值
Field[] f = req.getClass().getDeclaredFields();List<Feild> ff=Arrays.toList(f);field.setAccessible(true);field.get();//对不确定类获取字段值
2022-02-24 18:15:06
288
1
原创 spring-ApplicationContext
User bean = ApplicationContext.getBean("beanName",bean.class);//可以根据请求实时获取需要的bean,并且可以指定bean类型范围。
2022-02-24 16:42:28
118
原创 内存缓存的方式
内存缓存的方式//1.利用static 初始化时执行static代码块,put进去,做缓存。public class Cache { //利用static 就不需要spring @Compoent 单例模式 因为static 保证了全局唯一,不会new 出来新的,同时final 将指针固定,保证 mapCache 一定是 hashMap. private static final Map<String, User> mapCache = new HashMap<>(); /
2022-02-23 15:06:46
560
原创 java--
User a = new User();a=null;new出来的对象瞬间作为垃圾。强引用 直到OOM也不会回收。软引用 内存不够时,会将引用写为空—例如 1,2行,但是软引用一开始创建就标记了状态。1,2行将a=null;不会将强引用变为软引用。...
2021-12-16 18:49:56
250
原创 【springMVC】注意事项
如果接口返回值为字符串时,Spring MVC不会转成JSON格式,需要手动处理。 @GetMapping("/") public String sayHello(){ return Json.toJson("hello"); }大致这个意思,不讲究代码对不对。
2021-12-06 11:26:29
46
原创 java对象
通常所写的实体类包含了所有变量的getter和setter 其实这个类的作用就是一个数据结构 或者说 DTO 里边的private 也可以写成 public.但set get 可以增加可读性真正的对象是 service层 对象 变量私有化,只暴露方法,让其他人不知道具体实现细节.这才是真正的对象. 封装的特性...
2021-12-06 01:01:23
386
原创 2021-09-25
只要代码中,定义了A先在B之前执行,JMM就一定按照那个效果运行完成。(并不一定按照代码顺序运行,可能重排序,但不影响结果)实现A先在B之前执行,有以下6情况实现。例如 加锁控制A 在B之前执行Happens-before 6条规则。只要程序员写出代码让谁先执行(需要保证代码里一定是那个顺序,例如并发时线程前后顺序不一定,需要加锁来保证一定按照代码的样子执行)...
2021-09-25 11:28:27
70
原创 Redis笔记
RedisRedis:不仅仅是内存型数据库,还具有持久化策略===1.RDB 2.AOF持久化策略:1.RDB两种方式同步和异步 同步:内存–快照–保存到磁盘中 此时不能继续写入数据了 异步:内存--可以继续写入--保存到磁盘中 --快照--保存到磁盘中(另一个地方单独存储快照) 优点: 1.直接保存为一个rdb文件,用rdb文件就可以直接恢复数据 2.数据保存是子进程进行,不影响父进程操作。 3.恢复数据效率高AOF
2021-09-19 14:50:15
56
原创 2021-09-06
String值传递与引用传递基本类型是值传递、引用类型(包装类型)是 引用传递java在方法传递参数时,是将变量复制一份,然后传入方法体去执行。
2021-09-06 16:25:20
36
原创 2021-09-01
mybatis映射xml配置文件报错:<statement> or DELIMITER expected, got ‘id‘背景编写mybatis生成的xml文件时,发现sql节点内报错。这是IDEA的bug,发生在MyBatis的Mapper的XML文件的sql节点上,第一个字段是什么错误中最后一个单引号内部就是什么。解决地址...
2021-09-01 13:32:34
35
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人