一次HashMap多线程不安全的踩坑…
最近在做一个审计模块,想要实现的是为微服务各个模块提供一个审计日志服务,即各个微服务模块收集日志 + 日志存储在db/elk/hive,然后针对存储的审计日志做展示或者分析的一个服务。可以看出实现一个审计服务的三个关键地方是:
第一个关键地方是收集日志, 本文也想探讨下如何更低耦合的收集日志。
Java8引入了“行为参数化”的理念。为了实现行为参数化,java8提出函数式接口和Lambda表达式。本文首先会讲讲什么是函数式接口,然后会讲到java8预定义的四种核心函数式接口,以及使用这四种接口处理问题的demo。同时,本文还会使用大量的用Stream处理集合数据的例子。
编写简洁而灵活的代码,能够轻松地适应不断变化的需求
导读: 通过本文,你可以了解为什么Jdk1.8引入lambda表达式,一些设计思想;还有你怎么使用lambda表达式让你的代码更加优雅一些。另外,你还可以接触一点流(Stream)和并行开发的知识.
庖丁解牛-多服务器并发场景下乐观锁的实际应用
笔者面临的一个业务场景为:项目中多条业务线的实现都需要创建一个实例ID(instanceID),实例ID的值为系统当前的实例ID最大值+1。这样就会面临着在同一时间下有多个用户更新实例ID,造成并发冲突的问题。
笔者首先想到的解决方法是使用关键字synchronized
来解决。但是组内同事提出光有synchronized
是不够的,因为synchronized
只能解决单台机器的JVM多线程并发问题,无法解决线上多台服务器分布式导致的并发问题。
Update your browser to view this website correctly. Update my browser now