String
、StringBuffer
、StringBuilder
的区别String
是不可变的(详细原因后面分析)StringBuilder
与 StringBuffer
都继承自 AbstractStringBuilder
类,在该类中也是使用 char
数组来保存字符串(JDK9 之后改为了使用 byte
数组,后面会介绍),对于这个数组,在 AbstractStringBuilder
中没有使用 private
和 final
的关键字修饰(在 String
类当中有 private
和 final
修复,不过这其实并不是导致 String
不可变的原因),同时 AbstractStringBuilder
提供了很多修改字符串的方法,比如 append()
、insert()
、delete()
、replace()
等。equals()
的性质a.euals(a)
总是返回 true
a.equals(b)
返回 true
,那么 b.equals(a)
一定也会返回 true
a.equals(b)
和 b.equals(c)
都返回 true
,那么 a.equals(c)
一定也会返回 true
a.equals(b)
返回的都是 true
或者返回的都是 false
(即多次调用都只会返回相同的结果,前提是没有修改过 a 或 b)HTML, Hyper Text Markup Language 超文本标记语言
超文本:包括文字、图片、音频、视频、动画等。HTML5 提供了一些新的元素和一些有趣的新特性,同时也建立了一些新的规则。这些元素、特性和规则的建立,提供了许多新的网页功能,如使用网页实现动态渲染图形、图标、图像和动画,以及不需要安装任何插件直接使用网页播放视频等
Ribbon 源码。
LoadBalancerInterceptor
负载均衡拦截器拦截 HTTP 请求RibbonLoadBalancerClient
获取url中的服务id(hostname,即前面所说的user-service),交给 DynamicServerListLoadBalancer
来获取该服务id对应的服务列表DynamicServerListLoadBalancer
到 Eureka 获取对应的服务列表,通过 IRule
接口对应的规则来获得负载均衡选择到的服务RibbonLoadBalancerClient
进行请求,返回结果