实现负载均衡是后端领域一个重要的话题,一致性哈希算法是实现服务器负载均衡的方法之一,你很可能已在一些远程服务框架中使用过它。下面我们尝试一下自己实现一致性哈希算法。
Spring 源码学习(四) bean 的加载
既然我们 Spring
辛辛苦苦将 bean
进行了注册,当然需要拿出来进行使用,在使用之前还需要经过一个步骤,就是 bean
的加载。
在第一篇笔记提到了,完成 bean
注册到 beanDefinitionMap
注册表后,还调用了很多后处理器的方法,其中有一个方法 finishBeanFactoryInitialization()
,注释上面写着 Instantiate all remaining (non-lazy-init) singletons
,意味着非延迟加载的类,将在这一步实例化,完成类的加载。
而我们使用到 context.getBean("beanName")
方法,如果对应的 bean
是非延迟加载的,那么直接就能拿出来进行使用,而延迟加载的 bean
就需要上面的步骤进行类的加载,加载完之后才能进行使用~
下面一起来看下这两个步骤中, bean
是如何进行加载的。
java的可变参数
Java方法中的可变参数类型是一个非常重要的概念,有着非常广泛的应用,今天小编带大家一起去深入的了解java的可变参数使用方式!
Effective Java - 构造器私有、枚举和单例
Effective Java - 构造器私有、枚举和单例
[TOC]
Singleton 是指仅仅被实例化一次的类。Singleton代表了无状态的对象像是方法或者本质上是唯一的系统组件。使类称为Singleton 会使它的客户端测试变得十分困难。因为不可能给Singleton替换模拟实现。除非实现一个充当其类型的接口
TDD(测试驱动开发)死了吗?
01、前言
很早之前,曾在网络上见到过 TDD 这 3 个大写的英文字母,它是 Test Driven Development 这三个单词的缩写,也就是“测试驱动开发”的意思——听起来很不错的一种理念。
java泛型特性,你了解多少?
对java泛型特性的了解,很多时候是从集合对象接触到的,今天小编带大家一起去深入的了解泛型的缘由和使用方式!
Spring 源码学习(三)-自定义标签
又来填坑啦,上一篇讲完默认标签的解析,这篇笔记记录一下自定义标签的解析吧。
我们知道,Spring
源码的核心模块是 Spring-core
和 Spring-beans
,在此基础上衍生出其他模块,例如 context
、 cache
、 tx
等模块,都是根据这两个基础模块进行扩展的。
聪明如你,应该想到我们代码中常用的缓存注解 @Cacheable
、事务注解 @Transaction
,还有阿里巴巴的 RPC
中间件 Dubbo
,在配置文件中通过 <dubbo:service/>
或者 <dubbo:reference/>
进行服务注册和订阅,这些都都属于 Spring
的自定义标签的实现,通过自定义标签可以实现更加强大的功能!
作为一个有追求的程序员,当然不能满足于框架自带默认的标签,为了扩展性和配置化要求,这时候就需要学习自定义标签和使用自定义标签~
探究Java中的final关键字
final 关键字的字面意思是最终的,不可修改的。这似乎是一个看见名字就大概知道怎么用的语法,但你是否有深究过final在各个场景中的具体用法,注意事项,以及背后涉及的Java设计思想呢?
现如今的技术浪潮中,我们到底该做些什么?
今天,我们不谈技术实现,我们来分析一下现在的技术浪潮中,我们到底是应该去做什么?
Effective Java - 静态方法与构造器
Spring 源码学习(二)-默认标签解析
hashCode和equals的区别
有面试官会问:你重写过 hashcode 和 equals 么,为什么重写equals时必须重写hashCode方法?equals和hashCode都是Object对象中的非final方法,它们设计的目的就是被用来覆盖(override)的,所以在程序设计中还是经常需要处理这两个方法。下面我们一起来看一下,它们到底有什么区别,总结一波!
Java的== 与 equals区别
碰到“equals”和“==”这两个字符,老感觉差不多;其实还是有一些区别的,今天小编带大家一探究竟!
SpringBoot 集成 Protocol Buffer案例
Docker 容器编排入门[Docker 系列-8]
在实际的开发环境或者生产环境,容器往往都不是独立运行的,经常需要多个容器一起运行,此时,如果继续使用 run 命令启动容器,就会非常不便,在这种情况下,docker-compose 是一个不错的选择,使用 docker-compose 可以实现简单的容器编排,本文就来看看 docker-compose 的使用。
Docker 容器连接[Docker 系列-7]
数据卷容器以及和大家聊过了,本文我们再来看看使用数据卷容器实现数据的备份与恢复,然后再来看看容器的连接操作。
Docker 容器连接[Docker 系列-7]
数据卷容器以及和大家聊过了,本文我们再来看看使用数据卷容器实现数据的备份与恢复,然后再来看看容器的连接操作。
Spring 源码学习-环境准备
一起来准备阅读 Spring
源码
Spring 源码学习(一)-容器的基础结构
本篇笔记主要记录了以下内容:
使用 ClassPathXmlApplicationContext
,通过在 xml
注册一个
bean
,跟踪代码,了解它从配置文件的 <bean>
标签,加载到 BeanFactory
注册表 beanDefinitionMap
的详细过程。
Java 中 hashCode() 和 equals() 的关系
Java 中 hashCode() 和 equals() 的关系是面试中的常考点,如果没有深入思考过两者设计的初衷,这个问题将很难回答。除了应付面试,理解二者的关系更有助于我们写出高质量且准确的代码。