死锁演示(synchronized + Lock),死锁产生原因,死锁排查工具,死锁解决方案。
死锁排查工具主要排查JVM,解决JAVA程序死锁问题。死锁解决方案主要两种:顺序锁+轮询锁。
参考文章:https://mp.weixin.qq.com/s/omZqO2UZe_Xk5-TPNps5UA#circle=on
死锁演示(synchronized + Lock),死锁产生原因,死锁排查工具,死锁解决方案。
死锁排查工具主要排查JVM,解决JAVA程序死锁问题。死锁解决方案主要两种:顺序锁+轮询锁。
参考文章:https://mp.weixin.qq.com/s/omZqO2UZe_Xk5-TPNps5UA#circle=on
一致性哈希算法是分布式系统中常用的算法。一致性哈希算法解决了普通余数 Hash 算法伸缩性差的问题,可以保证在上线、下线服务器的情况下尽量有多的请求命中原来路由到的服务器。
一致性 hash 算法解决了分布式环境下机器增加或者减少时,简单的取模运算无法获取较高命中率的问题。通过虚拟节点的使用,一致性 hash 算法可以均匀分担机器的负载,使得这一算法更具现实的意义。正因如此,一致性 hash 算法被广泛应用于分布式系统中。
more >>高并发场景下,多线程的单消费者不一定满足业务需求,需要部署多消费者才能满足业务需求。
MQ下,多个消费者绑定同一个队列是无法同时消费的,一个消息只能被一个消费者消费。
因为 RabbitMQ 有队列的负载均衡机制,消息会被负载到每个消费者进行消费,无法同时被多个消费者消费,多个消费者监听同一个队列,RabbitMQ 会进行消息的轮询分发。
但轮询分发消息+自动确认机制(消费者拿到消息就删除队列中消息),在某消费者宕机的情况下是不可行的,会丢失消息。为实现这个容灾能力,需要实现手动确认消息+一个通道只放一个消息,即实现了消费者的能者多劳。
more >>ForkJoinPool可以将大任务分解为小任务执行(多线程),并且能够获得小任务的返回结果,最终合并为结果集。
more >>在查询单商品信息返回的接口中,如商品信息分布在多个数据表,需要各自查询再汇总商品信息,且查询没有先后依赖关系,各自独立。
这种场景下,不建议使用连表查询,MySQL下单表并通过索引的查询效率更高。建议使用多线程(CompletableFuture)+单表查询(Entity)实现,最后再通过 BeanUtil.copyProperties 汇总数据。
more >>tag:
缺失模块。
1、请确保node版本大于6.2
2、在博客根目录(注意不是yilia根目录)执行以下命令:
npm i hexo-generator-json-content --save
3、在根目录_config.yml里添加配置:
jsonContent: meta: false pages: false posts: title: true date: true path: true text: false raw: false content: false slug: false updated: false comments: false link: false permalink: false excerpt: false categories: false tags: true