说明
若无特别说明,本文所涉及的代码版本为spring boot/cloud 2.2.6。
eureka server基本功能
-
接受服务注册
-
接受服务心跳
-
服务剔除
-
服务下线
-
集群同步
-
获取注册表中服务实例信息
若无特别说明,本文所涉及的代码版本为spring boot/cloud 2.2.6。
接受服务注册
接受服务心跳
服务剔除
服务下线
集群同步
获取注册表中服务实例信息
本文所分析代码版本为spring boot/cloud 2.2.6。
eureka中用到几个比较有意思的注解,简化程序实现。
表示从外部配置文件中(properties或是yml文件)读取”eureka.instance”对应的配置。
我个人觉得,学习源码的姿势,首先是需要知道想学习的框架/工具如何使用,然后接下来再去看源码注释,看看当时代码作者是如何阐述代码的,再去看代码怎么编写,效果才最佳。
同样的,接下来要分析的线程池,首先用途自不必说,不管有没有用过,ThreadPoolExecutor的运行机制、传说中的7个参数(核心线程数corePoolSize、最大线程数maxPoolSize、等待时间keepAliveTime、时间单位timeUnit、阻塞队列blockingQueue、线程工厂threadFactory、拒绝策略rejectHandler),相信大家都已经熟练掌握,此处不再赘述。
接下来简单过一下ThreadPoolExecutor的注释。
Continue reading »
本文所涉及spring/spring boot代码,请参考spring boot 2.2.6对应版本。
我们在刚学习spring boot时,有没有一个困惑:spring boot能够自动实例化很多第三方的依赖库?比如eureka、druid等。这个就涉及到spring boot的扩展机制spring factories。
简单来将,spring factories类似与Java SPI机制,利用该机制,我们能够自定义实现一些SDK或是spring boot starter,其实例化过程由我们来实现,使用方只需要在项目中引入包、不需要或是只需做很少的配置。
spring factories机制核心在spring-core包中定义的SpringFactoriesLoader类,该类的公有方法只有2个:
Continue reading »
本文基于Apache Kafka 2.5.1(2020.09.10拉取最新代码)
阅读源码前的首先要做到熟悉相关组件的概念、基本使用。而最靠谱的资料就是官方文档。
建议阅读官方文档(https://kafka.apache.org/documentation/)后,自己练习、使用kafka之后再开始阅读源码。 Continue reading »
提到Netty,就必须先说一下Reactor模式,源头应该是Doug Lea大神(学java的如果不知道这位神的请自己反思一下……)的Scalable IO in Java
所提出的Multiple Reactors
模式,参见下图
如果想知道为何出现Reactor模式,需要将IO发展过程,都说一下可能才会比较清晰,此处就不一一展开,有兴趣的童鞋可以参考这篇帖子: Continue reading »
学东西时我们应该尽量去看官网、看源码、看官方给出的单元测试。
比如Guava RateLimiter,从RateLimiter类的源码注释中可以看到,官方给出的典型应用场景与使用: Continue reading »
计算任务的分类
CPU密集型:需要线程长时间进行的复杂的运算,这种类型的任务需要少创建线程,过多的线程将会频繁引起上文切换,降低任务处理处理速度。
IO密集型:由于线程并不是一直在运行,可能大部分时间在等待 IO 读取/写入数据,增加线程数量可以提高并发度,尽可能多处理任务。
JDK线程池,java.util.concurrent.ThreadPoolExecutor
传说中的7个参数,作用,线程池运行机制,参见下图复习
从一道面试题讲起:采用DCL实现单例模式时,是否需要加volatile关键字?为什么?
我们在网上搜如何实现单例模式时,帖子往往给出多种实现:饿汉模式、懒汉模式、双重锁懒汉模式(双重锁检查,double check lock,经常简写做DCL)、静态内部类模式、枚举模式等。
此处可以参考 深入理解单例模式:静态内部类单例原理 这篇文章。
顺带提一句,《Java并发编程的艺术》(方腾飞)第3章有讨论过DCL、静态内部类这两种实现方式,建议去读一读。 Continue reading »
本文就是想学习、简单总结一下JDK里的JCF,并且制定一下自己后续阅读源码的范围——先学习一下JCF中重要的一些类,后续学习Java其他一些东西,给自己定个路线图,O(∩_∩)O~
本文参考了多篇文章,如有引用但没标注的地方,请及时联系我,这文章本意是想记录一下,相当于读书笔记。
JCF,即Java Collection Framework,是JDK中已经封装好容器类,类结构如下: Continue reading »