摘要:
Spring 通过提前曝光机制,利用三级缓存解决循环依赖。 在 Spring 创建 Bean 的核心代码 doGetBean 中,在实例化 bean 之前,会先尝试从三级缓存获取 bean,这也是 Spring 解决循环依赖的开始。 | 缓存中获取 bean // AbstractBeanFacto 阅读全文
摘要:
1.1 总体概览 日志门面 日志门面定义了一组日志的接口规范,它并不提供底层具体的实现逻辑。Apache Commons Logging 和 Slf4j 就属于这一类。 日志实现 日志实现则是日志具体的实现,包括日志级别控制、日志打印格式、日志输出形式(输出到数据库、输出到文件、输出到控制台等)。L 阅读全文
摘要:
幂等性的核心思想:通过唯一的业务单号保障幂等性,非并发的情况下,查询业务单号有没有操作过,没有则执行操作,并发情况下,这个操作过程需要加锁。 1、Update操作的幂等性 1)根据唯一业务号去更新数据 通过版本号的方式,来控制update的操作的幂等性,用户查询出要修改的数据,系统将数据返回给页面, 阅读全文
摘要:
Redis 是一个高性能服务端的典范。它通过多路复用 epoll 来管理海量的用户连接,只使用一个线程来通过事件循环来处理所有用户请求,就可以达到每秒数万 QPS 的处理能力。 一、多线程 Redis 服务启动 默认情况下多线程是默认关闭的。如果想要启动多线程,需要在配置文件中做适当的修改。相关的配 阅读全文
摘要:
分布式事务就是要保证不同节点之间的数据一致性。 常见的分布式事务解决方案 1、2PC(二阶段提交)方案 - 强一致性 2、3PC(三阶段提交)方案 3、TCC (Try-Confirm-Cancel)事务 - 最终一致性 4、Saga事务 - 最终一致性 5、本地消息表 - 最终一致性 6、MQ事务 阅读全文
摘要:
(1)服务器架构 服务器架构也是从相对单一到集群,再到分布式服务。 一个可以支持高并发的服务少不了好的服务器架构,需要有均衡负载,数据库需要主从集群,nosql缓存需要主从集群,静态文件需要上传cdn 服务器 均衡负载(如:nginx,阿里云SLB) 资源监控 分布式 数据库 主从分离,集群 DBA 阅读全文
摘要:
1.new BigDecimal()和BigDecimal.valueOf() > BigDecimal bd1 = new BigDecimal(0.01);BigDecimal bd2 = BigDecimal.valueOf(0.01);System.out.println("bd1 = " 阅读全文
摘要:
MySQL 的架构共分为两层:Server 层和存储引擎层, Server 层负责建立连接、分析和执行 SQL。MySQL 大多数的核心功能模块都在这实现,主要包括连接器,查询缓存、解析器、优化器、执行器等。另外,所有的内置函数(如日期、时间、数学和加密函数等)和所有跨存储引擎的功能(如存储过程、触 阅读全文
摘要:
1. Collections 使用Collections工具是实现升序和降序的。 List<Integer> list = new ArrayList<>(); list.add(2); list.add(1); list.add(3); Collections.sort(list);//升序 Sy 阅读全文
摘要:
Exchanger 简介: Exchanger 提供了两个公开方法: 1、只带泛型 V(交换的数据对象)的方法,线程一直阻塞,直到其他任意线程和它交换数据,或者被线程中断; 2、另外一个带时间的方法,如果超过设置时间还没有线程和它交换数据,就会抛出 TimeoutException 异常; priv 阅读全文