摘要:
1. QuorumPeerMain运行 1)判断是采用单实例模式还是多实例模式启动QuorumPeerMain 2)在多实例模式下,加载启动参数中指定的配置文件 3)启动QuorumPeer 2. QuorumPeer启动 1)监听客户端连接 2)确认选举算法,监听选举端口 3)启动服务(run), 阅读全文
摘要:
1. 注册BeanFactoryTransactionAttributeSourceAdvisor @EnableTransactionManagement --> @Import(TransactionManagementConfigurationSelector.class) --> 注册Pro 阅读全文
摘要:
1. 注册AnnotationAwareAspectJAutoProxyCreator @EnableAspectJAutoProxy --> @Import(AspectJAutoProxyRegistrar.class) --> 注册AnnotationAwareAspectJAutoProxy 阅读全文
摘要:
1. 循环依赖类别 1)构造参数依赖:无解 2)属性依赖:对多实例Bean无解,对单实例Bean采用earlySingletonExposure策略 处理beanB依赖: createBean(beanA) -> addSingletonFactory(beanA) -> populateBean( 阅读全文
摘要:
1. BeanFactoryPostProcessor调用(见AbstractApplicationContext.invokeBeanFactoryPostProcessors): >> 创建DefaultListableBeanFactory --> loadBeanDefinitions 1) 阅读全文
摘要:
1. master选举(LeaderSelector) 1)LeaderSelector构造函数 在leaderPath上建立分布式锁:mutex = new InterProcessMutex(client, leaderPath) 2)LeaderSelector.start 当前WorkSer 阅读全文
摘要:
CountDownLatch、Semaphore(信号量)和ReentrantReadWriteLock.ReadLock(读锁)都采用AbstractOwnableSynchronizer共享排队的方式实现。 关于AbstractQueuedSynchronizer中的独占锁和共享锁,请参考Ree 阅读全文
摘要:
1. String类的两个构造方法 2. new String中创建几个String对象? 1)创建两个String对象 内存模型如下: 2)创建一个String对象 内存模型如下: 3. String的intern方法 String类私有地维护着一个初始为空的字符串池,当调用intern方法时: 阅读全文
摘要:
1. 泛型擦除 泛型是在 Jdk1.5 之后引入的,为了使字节码向前兼容,Java编译器会在编译时擦除泛型信息(泛型擦除)。假使有泛型类Xx<T>,对其进行反射并打印类中的泛型方法: 打印信息如下: 2. 桥接方法 假使有类Xx2继承自Xx<String>,则显然Xx2并未覆盖Xx中的两个方法: 1 阅读全文
摘要:
1. 变量和构造方法 2. 生产(put、offer) 3. 消费(take、poll) 4. 加全锁(remove) 阅读全文