摘要:
1. MySQL常见的日志 1. 错误日志:对MySQL的启动、运行、关闭过程进行记录。不仅记录了错误信息,还记录了一些警告信息或者正确信息 2. 慢查询日志:记录超过设定阈值的慢SQL 3. 查询日志:记录所有对数据库的请求信息,无论这些请求是否得到了正确执行 4. 二进制日志:记录了对数据库执行 阅读全文
摘要:
1. BeanPostProcessor和BeanFactoryPostProcessor的区别 BeanPostProcessor:作用于Bean实例的创建前和创建后,比如AOP功能。 BeanFactoryPostProcessor:做用于BeanDefinition对象的,在BeanDefin 阅读全文
摘要:
1. 循环依赖问题 spring创建一个Bean实例分为三步,实例化,依赖注入和初始化。 实例化的方式分为两大类:工厂方法(静态工厂方法和实例工厂) 和 构造器方法(默认和自动装配)。以一个例子来说下,一个类AppleTree,有一个成员变量Apple public class Apple { Ap 阅读全文
摘要:
AQS概念 AQS是用于构建锁和同步器的框架。ReentrantLock、信号量、闭锁、FutureTask等等都是基于AQS构建的。其内部封装了对等待线程队列维护,同时开放接口自定义共享资源的获取和释放。 AQS负责管理同步器类中状态的整数信息,通过getState,setState和compar 阅读全文
摘要:
1. 核心参数 核心线程数,最大线程数,非核心线程生存时间,任务队列,线程工厂,任务溢出策略。 2.线程池状态 1.RUNNING:线程池创建完毕后进入运行中 2.SHUTDOWN:执行shutDown方法,不再接收任务,但会处理现有的任务包括队列中的任务 4.STOP:执行shutDownNow方 阅读全文
摘要:
5.1 同步容器类 Vector,Hashtable。对所有公有方法都是同步方法,使用synchronized修饰 5.1.1 同步容器类的问题 特殊情况还是需要客户端加锁。比如线程A遍历容器元素,线程B对同一个容器删除元素,会出现并发修改异常。解决办法是在客户端封装一层加锁方法。 public s 阅读全文
摘要:
在Java5.0中加入的ConcurrentHashMap,属于并发容器的一种,旨在提供并发环境下高效的安全性和性能。相比于HashTable的全局锁,ConcurrentHashMap使用分段锁减少竞争。经过几个大版本的更新,实现细节发生了很大变化,下面主要说说JDK1.7和JDK1.8中的实现。 阅读全文
摘要:
3.1 可见性 一个线程修改了变量保证对其他线程可见 3.1.1 失效数据 读取的数据的旧值。 3.1.2 非原子的64位操作 非volatile类型的long和double变量,将64位的操作分成两个32位,此种情况是线程不安全的。 3.1.3 加锁与可见性 通过加锁,线程对变量的修改,对下个获取 阅读全文
摘要:
2.1 什么是线程安全性 当多个线程访问某个类,这个类始终表现出正确的行为,称这个类是线程安全的。 线程安全类:无状态类 完全由线程安全类组成的程序不一定是线程安全的,线程安全类中也可以包含非线程安全的类。 2.2 原子性 一系列操作不可分。 2.2.1 竞态条件 不恰当的执行顺序出现不正确的结果, 阅读全文
摘要:
1. NameServer 启动:NamesrvStartup#main0()。内部注意初始化了两个线程池,一个每10秒扫描所有的broker,如果一个broker断开120秒,则关闭链接并移除broker。另一个线程池一个打印KV信息。 路由实现类:RouteInfoManager package 阅读全文