03-多线程----无锁解决并发的方案

1、问题多线程模拟银行取钱操作,代码如下:public interface Demo4 { //获取当前的余额 Integer getBalance(); // 取款 void withdraw(Integer amount); //操作某一个账户 static void demo(Demo4 account) { long start = Sys

- 阅读全文 -

02-多线程----volatile

Java的内存模型JMM 即 Java Memory Model,它定义了主存、工作内存抽象概念,底层对应着 CPU 寄存器、缓存、硬件内存、 CPU 指令优化等。 JMM 体现在以下几个方面原子性-保证指令不会收到线程上下文切换的影响可见性-保证指令不会收到cpu缓存影响有序性-保证指令不会收到cpu指令并行优化影响可见性static boolean run = true;public stat

- 阅读全文 -

01-多线程----wai()、notify()、notifyAll()和保护性暂停模式

1、wait()、notify()、notifyAll()方法简介方法名描述notify()在 object 上正在 waitSet 等待的线程中挑一个唤醒notifyAll()让 object 上正在 waitSet 等待的线程全部唤醒,随机一个线程获得锁wait()让进入 object 监视器的线程到 waitSet 等待wait(long n)有时限的等待, 到 n 毫秒后结束等待,或是被

- 阅读全文 -

05-Redis---SCAN命令

需求:redis在线上运行过程中,需要获取一批Key,可能包含特定前缀或者存在一定的规则?生成测试数据 public static void main(String[] args) { Jedis jedis = RedisUtils.getJedis(); for (int i = 0 ;i<10000;i++){ jedis.set("key&q

- 阅读全文 -

Retrofit的Url组合规则

BaseUrl和URL有关的注解中提供的值最后结果http://localhost:4567/path/to/other//posthttp://localhost:4567/posthttp://localhost:4567/path/to/other/posthttp://localhost:4567/path/to/other/posthttp://localhost:4567/path/t

- 阅读全文 -

04-Redis进阶,雪崩,击穿,穿透

什么是Redis雪崩?怎么解决?热点数据会做缓存(首页数据),一般缓存都是定时任务刷新,或者是查不到的时候去更新缓存,定时任务刷新就会有一个问题。例子:假如首页key失效时间为12小时,中午12点刷新数据,刚好有个热点活动,用户大量涌入,缓存key全部都失效了,此时数据查询全部落在数据库,数据库可能直接挂掉。重启数据库后又会直接挂掉。这就是缓存雪崩的现象。缓存雪崩是大面积的key失效。或者缓存挂掉

- 阅读全文 -

03-Redis基础

部分来源,自己总结。https://juejin.cn/post/6844903982066827277你们的项目为啥要用到redis传统关系型数据库例如mysql已经不适用与所有的场景,比如:秒杀扣库存,app小程序首页访问高峰等访问流量高峰,所以引入缓存中间件。redis的数据结构有哪些?String list set sortedset hash应用场景:String ->如果有大量的

- 阅读全文 -

02-Redis分布式锁

setnxsetnx key value将key的值设置为value,当且仅当value不存在的情况。如果key存在,不做任何操作。set if not exist删除锁问题?业务执行过程中出现异常。没有删除锁,造成死锁。解决异常处理,finally处理,删除锁。还有问题?系统挂了怎么办哪?业务执行过程中,系统挂了,死锁了 。解决:设置超时时间还有问题?还没有设置超时时间就挂了,死锁了。两行代码设

- 阅读全文 -

01-Redis相关

redis单线程redis持久化基于内存存储,关机后数据失效。某一时刻,将数据写入磁盘。存储位置在配置文件的dir配置。默认文件名称:dffilenamerdb触发持久化bgsave命令save命令,会造成线程阻塞 shutdownrdb默认开启。dump.rdb文件reids复制一个一摸一样的进程进行持久化。将数据写入临时文件持久化结束后替换上次持久化的文件。不影响主进程。查看进程可以看到。可以

- 阅读全文 -