JVM 系列之JVM类加载机制
详解类加载机制。
详解类加载机制。
总结了几种常见的 JVM 垃圾回收器的特点。
千字长文,了解虚拟机垃圾回收算法。
先来看一下JVM是什么,由什么组成的?
简单叨叨一下Dubbo是如何自定义标签给spring承载bean的。
HashMap是Java程序员使用频率最高的用于映射(键值对)处理的数据类型。随着JDK(Java Developmet Kit)版本的更新,JDK1.8对HashMap底层的实现进行了优化,例如引入红黑树的数据结构和扩容的优化等。本文结合JDK1.7和JDK1.8的区别,深入探讨HashMap的结构实现和功能原理。
我们知道,HashMap 是线程不安全的,为了使用线程安全的 HashMap,一种方法是使用 Collections 中的 synchronizedMap 方法。另一种方法是使用使用 ConcurrentHashMap。
ts raw version as part of a circular reference, but has eventually been wrapped.
最近看了一些框架的底层源码,了解了其中令人惊叹的设计模式,愈发感觉一个好的设计会给我们的代码带来多么灵活的扩展性。
所以决定近期把各类设计模式好好整理一下,形成知识体系。而这篇要说的是比较入门的单例模式。
与单例模式一样,工厂模式也属于创建型模式。这里说的工厂模式,是一个泛化的概念,具体分为下面几种:
SPI(Service Provider Interface) , 是JDK内置的一种服务提供发现机制,为某个接口寻找服务的机制,类似IOC思想,将装配的控制权交给ServiceLoader,可以动态加载接口实现类。
SPI只提供服务接口,具体服务由其他组件实现,接口和具体实现分离(类似桥接),同时能够通过系统的ServiceLoader
拿到这些实现类的集合,统一处理,这样在组件化中往往会带来很多便利,SPI机制可以实现不同模块之间方便的面向接口编程,拒绝了硬编码的方式,解耦效果很好。
在微服务盛行的当下,会有很多 JAVA 开发者去选择 RPC 框架来做服务之间的调用,如 Dubbo、GRPC 等等,当然也许会有开发者使用 Spring Cloud 来构建微服务。
在微服务的初级阶段,开发者需要在自己的工程代码里边处理一系列由于微服务化带来的问题,如服务发现、负载均衡、熔断、重试、限流等等,其直接结果就是导致在业务代码以外增加了许多额外的工作,增加了一堆非业务的代码。
在 Dubbo 笔记的本篇,主要对 Dubbo 的整体项目结构有一个比较清晰的认知,知道 Dubbo 是如何分层的,以及它的整体调用过程。
本篇主要说明在使用 Dubbo 时除了进行简单的 RPC 调用外,Dubbo 还提供了哪些增强功能来帮助开发者更好的实现服务调用。