最新文章
如何提交一个线程到线程池
参考答案 1. Java创建线程有三种基本方法 1. 继承Thread类 2. 实现Runnable接口(推荐的实现方式) 3. 实现Callable接口实现Java多线程 2. 详解Java创建线程的三种基本方法 2.1 继承Thread类,然后重写Thread 的run()方法 基本语法格式为public MyThread extends Thread { @Override pu…...CAS的底层原理是什么
参考答案 1. CAS(compareAndSwap)的概念 前往查看:什么是CAS 2. CAS的优点、缺点 前往查看:CAS有什么优点、缺点 3. CAS的底层原理 CAS的实现主要在JUC中的atomic包,我们以AtomicInteger类为例: 通过代码追溯,可见: Java中的CAS操作,都是通过sun包下Unsafe类实现。 而Unsafe类中的方法都是native方法,由JV…...Spring 如何解决循环依赖问题
参考答案 在Spring中,循环依赖问题主要有以下三种情况: 通过构造方法进行依赖注入时产生的循环依赖问题。 通过setter方法进行依赖注入且是在多例(原型)模式下产生的循环依赖问题。 通过setter方法进行依赖注入且是在单例模式下产生的循环依赖问题。 在Spring中,只有第3种方式的循环依赖问题被解决了,第1和第2种方式在遇到循环依赖问题时都会产生异常。 原因: 第1种构造方法注入的情况下…...Kafka、ActiveMQ、RabbitMQ、RocketMQ 都有什么区别
参考答案 Kafka、ActiveMQ、RabbitMQ、RocketMQ 的区别: 1. kafka 开发语言: Scala开发。 性能、吞吐量: 吞吐量所有MQ里最优秀,QPS十万级、性能毫秒级、支持集群部署。 功能: 功能单一。 缺点: 丢数据, 因为数据先写入磁盘缓冲区,未直接落盘。机器故障会造成数据丢失。 应用场景: 适当丢失数据没有关系、吞吐量要求高、不需要太多的高级功能的场景,比如…...如何保证缓存与数据库双写时的数据一致性
参考答案 只要用缓存,就可能会涉及到缓存与数据库双存储双写。只要是双写,就一定会有数据一致性的问题。 如何解决数据一致性的问题呢?有两个方案供参考: 解决方案一:读请求和写请求串行化,串到一个内存队列里去。 这种方式可以保证一定不会出现不一致的情况。 串行化之后,会导致系统的吞吐量会大幅度的降低,用比正常情况下多几倍的机器去支撑线上的一个请求。 一般来说,如果系统不是严格要求缓存+数据库必须一致性…...MySQL的高可用方案有哪些
参考答案 本篇详解:MySQL的高可用方案选型,MySQL的5个常见高可用方案、以及其各自的优缺点。 一、 MySQL的高可用方案选型 在考虑MySQL数据库的高可用的架构时,主要参考如下几个方面: 如果数据库发生了宕机或者意外中断等故障,能尽快恢复数据库的可用性,尽可能的减少停机时间,保证业务不会因为数据库的故障而中断。 用作备份、只读副本等功能的非主节点的数据应该和主节点的数据实时或者最终保持…...