3A网络 3A网络
2年前
Redis 做接口限流
Redis除了做缓存,还能干很多很多事情:分布式锁、限流、处理请求接口幂等性。。。太多太多了~今天想和小伙伴们聊聊用Redis处理接口限流,这也是最近的TienChin项目涉及到这个知识点了,我就拎出来和大家聊聊这个话题。1.准备工作首先我们创建一个SpringBoot工程,引入Web和Redis依赖,同时考虑到接口限流一般是通过
Wesley13 Wesley13
3年前
java并发程序和共享对象实用策略
java并发程序和共享对象实用策略在并发程序中使用和共享对象时,可以使用一些实用的策略,包括:1.线程封闭2.只读共享。共享的只读对象可以由多个线程并发访问,但任何线程都不能修改它。共享的只读对象包括不可变对象和事实不可变对象3.线程安全共享。线程安全地对象在器内部实现同步。4.保护对象。被保护的对象只能通过持有特定的锁
Wesley13 Wesley13
3年前
Java并发编程原理与实战十二:深入理解volatile原理与使用
volatile:称之为轻量级锁,被volatile修饰的变量,在线程之间是可见的。可见:一个线程修改了这个变量的值,在另一个线程中能够读取到这个修改后的值。synchronized除了线程之间互斥之外,还有一个非常大的作用,就是保证可见性。以下demo即保证a值的可见性。首先来看demo:!复制代码(https://oscimg.osc
Easter79 Easter79
3年前
SpringCloud 简介
SpringCloud是一个工具集:Spring  Cloud是在Spring   Boot的基础上构建的,用于简化分布式系统构建的工具集;使架构师在创建和发布微服务时极为便捷和有效.SpringCloud为开发人员提供了快速构建分布式系统中的一些通用模式(例如配置管理,服务发现,断路器,智能路由,微代理,控制总线,一次性令牌,全局锁,领导选举,分布
Stella981 Stella981
3年前
ConcurrentHashMap之实现细节
ConcurrentHashMap是Java5中支持高并发、高吞吐量的线程安全HashMap实现。在这之前我对ConcurrentHashMap只有一些肤浅的理解,仅知道它采用了多个锁,大概也足够了。但是在经过一次惨痛的面试经历之后,我觉得必须深入研究它的实现。面试中被问到读是否要加锁,因为读写会发生冲突,我说必须要加锁,我和面试官也因此发生了冲突
Wesley13 Wesley13
3年前
MQ实现消息的幂等性
一、什么是幂等性可以参考数据库乐观锁机制,比如执行一条更新库存的SQL语句,在并发场景,为了性能和数据可靠性,会在更新时加上查询时的版本,并且更新这个版本信息。可能你要对一个事情进行操作,这个操作可能会执行成百上千次,但是操作结果都是相同的,这就是幂等性。!(https://img2018.cnblogs.com/blog/1841773/201
Wesley13 Wesley13
3年前
Mysql,version~没变~,就是更新不成功,别慌!
一个忙(mo)碌(yu)的下午,小航同学,突然大骂一声,“TM,见鬼了,version没变,更新就是不成功”。我看他,满头大汗,双手握拳,面目狰狞,似乎又要发作,赶紧说:“不成功没关系啊,重试就好,乐观锁一般是要重试的”他略带鄙视的说道:代码有重试了逻辑,我还加日志了,结果发现version没变,就是更新不成功。作为对技术小有追求的人,他怎么一
Wesley13 Wesley13
3年前
Mysql redo&&undo学习
   mysql通过锁机制来实现事务的隔离性,用redolog实现事务的原子性和持久性,用undolog实现事务的一致性。undo并不是redo的逆过程,redo和undo都可以看做一种恢复过程,redo恢复事务修改的页操作,redo记录的是物理日志,记录的是页的物理修改操作,redolog基本上都是顺序写的,在数据库运行时不需要对redolog
Stella981 Stella981
3年前
PHP如何避免高并发下insert into 重复入库
场景:用户签到/分享功能,每天只能签到一次或分享一次数据库:id  user\_id  add\_time  逻辑分析:用户每天进行分享或签到,得到积分,数据库通过以上字段进行记录,同一时间不可插入多条,一天只能有一条记录,插入前判断是否当天已插入过问题点:用户连点、并发请求等会导致同时插入多条记录,导致积分异常解决方案:使用文件锁,经过