自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

YourBatman

专注Java领域分享、成长,拒绝浅尝辄止。公众号搜索:BAT的乌托邦

原创 ThreadLocal垮线程池传递数据解决方案:TransmittableThreadLocal【享学Java】

企业不是慈善机构:创造利润是你存在的核心价值。 目录前言正文InheritableThreadLocal的局限性Thread#init方法探究TransmittableThreadLocal如何实现?使用场景总结声明 前言 在 上篇文章 了解到了,ThreadLocal它并不能解决线程安全问题,...

2020-02-29 23:51:37 807 3

原创 Spring注入的成员属性HttpServletRequest是线程安全的吗?【享学Spring MVC】
原力计划

我们知道一个`Http`请求就是一个`Request`对象,Servlet规范中使用`HttpServletRequest`来表示一个Http请求。然而在`Spring MVC`中,官方并不建议你直接使用`Servlet`源生的API,如常见的`HttpServletRequest/HttpSer...

2020-02-29 21:47:06 1522 2

原创 ThreadLocal能解决线程安全问题?胡扯!本文教你正确的使用姿势【享学Java】

`ThreadLocal`:线程 + 本地 -> **线程本地变量**(所以说我觉得它取名叫`ThreadLocalVariable`获取还更能让人易懂些),它的出镜率可不低。虽然写业务代码一般用不着,但它是开源工具的常客:用于在**线程生命周期内**传递数据。 有的人说,每看一遍`Thr...

2020-02-29 18:05:21 1225 14

原创 [享学Hystrix] 四、Hystrix插件机制:SPI接口介绍和HystrixPlugins详解

`Hystrix`提供了插件机制(SPI机制)来提升自身的扩展性,提高弹性。这里所指的插件包括: - `HystrixConcurrencyStrategy`:获取并发相关类 - `HystrixEventNotifier`:事件通知类 - `HystrixMetricsPublisher`:度量...

2020-02-27 16:41:46 596 0

原创 [享学Hystrix] 三、Hystrix配置之:全局配置和实例配置HystrixCommandProperties

上篇文章介绍了`Hystrix`和`Archaius`的整合,对深入了解`Hystrix`内部的属性配置打好了基础。对于属性配置,程序员们的感受可能是可能既爱又恨,因为那些浩如烟海的配置项确实可能已经超过了你的脑容量。 但越是这样的工作,就越不可能靠强记的,而是应掌握其规律,学会查“字典”才是永...

2020-02-27 01:23:38 802 0

原创 [享学Hystrix] 二、Hystrix属性抽象以及和Archaius整合实现配置外部化、动态化

了解了`Hystrix`的基本情况后,接下来将逐步深入到它的使用以及原理上。 作为一个流行的开源库,扩展性、设计的弹性是必不可少的,而所谓弹性一般都通过外部化配置来实现。`Hystrix`也不例外,它支持非常非常多的配置选项,对于多如牛毛的配置项,管理起来、统一实现动态化亦是一个必备的设计要素。...

2020-02-26 22:11:36 553 0

原创 [享学Hystrix] 一、Hystrix断路器:初体验及RxJava简介

`Hystrix`也是`Netflix OSS`的一部分,它是一个断路器,用于**保护你的微服务**。随着微服务的流行,熔断作为其中一项**很重要的技术**也广为人知。当微服务的运行质量低于某个**临界值**时(静态阈值的实现方式),启动熔断机制,暂停微服务调用一段时间,以保障后端的微服务不会因为...

2020-02-26 15:37:24 964 2

原创 [享学Archaius] 十六、Archaius和Spring Cloud的集成:spring-cloud-starter-netflix-archaius

截止到上篇文章,其实关于`Netflix Archaius`的内容都已经讲述完了,理论上你现在应该可以没有障碍的使用它了。 本来本文我是没有打算去写的,因为掌握了核心后,去集成任何技术都是不算太难的一件事。但是,但是,但是,奈何`Spring Boot/Cloud`如此之火,现在一门技术如果不谈...

2020-02-25 18:14:16 743 0

原创 [享学Archaius] 十五、Archaius如何对多环境、多区域、多云部署提供配置支持?

在当下日益复杂的互联网云环境中,对应用APP的**灵活部署**要求越来越高:同样的一份代码在**不同环境、不同区域...**需要有不同表现(逻辑不同、性能不同...),同时高可用方面的**多机房、多云灾备**亦体现出了部署的复杂性。 通过前几篇文章关于`Netflix Archaius`的学习,...

2020-02-24 20:46:22 2816 2

原创 [享学Archaius] 十四、Archaius属性抽象Property和PropertyWrapper详解

上篇文章介绍了`Archaius`动态属性`DynamicProperty`,并且通过`DynamicPropertyFactory`间接的体验了一把它天生的动态性。 在案例过程中,你可能已经发现,操作属性时实际与使用者打交道的并不是`DynamicProperty`或者其子类,而是诸如`Dyn...

2020-02-24 16:12:36 525 0

原创 [享学Archaius] 十三、Archaius动态属性DynamicProperty原理详解(重要)
原力计划

上篇文章了解到了`Netflix Archaius`它提供的两个支持类:配置管理器`ConfigurationManager`和动态属性支持`DynamicPropertySupport`。特别是`DynamicPropertySupport`它提供了对动态属性的支持,原理便是通过`Propert...

2020-02-23 15:20:00 853 3

原创 [享学Archaius] 十二、Archaius配置管理器ConfigurationManager和动态属性支持DynamicPropertySupport

上面文章介绍了`Netflix Archaius`对`Commons Configuration`核心API `Configuration`的扩展实现,知道了`Netflix Archaius`依赖于`Commons Configuration`并且在其基础上做了扩展和增强。 本文将继续夯实基础...

2020-02-23 11:16:21 602 0

原创 [享学Archaius] 十一、Archaius对Commons Configuration核心API Configuration的扩展实现

上篇文章体验了一把`Netflix Archaius`的使用,感受到了它对配置管理上的便捷性。或许有小伙伴会说,配置管理上它和`Apache Commons Configuration`功能上有点重叠,其实不然。 他俩的关系不是功能重叠,而是`Netflix Archaius`是对`Apache ...

2020-02-22 22:25:57 482 0

原创 [享学Archaius] 十、Archaius配置管理库:初体验及基础API详解

Netflix是一家互联网流媒体播放商,是美国视频巨头,随着Netflix转型为一家云计算公司,它也开始积极参与开源项目,并且提供了众多好用的开源产品,比如耳熟能详的就有: - `Netflix/zuul`:网关 - `Netflix/hystrix`:断路器 - `Netflix/ribbon`...

2020-02-22 21:01:26 851 0

原创 [享学Archaius] 九、Apache Commons Configuration2.x相较于1.x使用上带来哪些差异?
原力计划

`Commons Configuration`作为一个优秀的配置管理库,凭借着优秀的设计以及提供了热加载等使用功能,被不少其它组件作为基础配置管理组件使用,流行度较高。 从2004年发展至今,它一共有两个大版本:1.x和2.x。这两个大版本之前因为改过包名,并且GAV坐标也不一样,因此他俩:**互...

2020-02-21 22:56:25 798 0

原创 [享学Archaius] 八、Apache Commons Configuration2.x如何实现文件热加载/热更新?
原力计划

成功的路上并不拥挤,因为坚持的人不多。能坚持的人不一定有成就,但要想有成就那就必须得坚持。 –> 返回专栏总目录 <– 代码下载地址:https://github.com/f641385712/netflix-learning 目录前言正文总结声明 前言 正文 总结 声明 原创不易...

2020-02-21 21:25:28 628 0

原创 [享学Archaius] 七、Apache Commons Configuration2.x快速构建工具Parameters和Configurations
原力计划

[上篇文章]完整的介绍了`Commons Configuration`的Builder机制,并且辅以示例介绍了如何使用。 `Commons Configuration2.x`推荐我们使用Builder去构建一个`Configuration`实例,但奈何实际使用起来着实比较麻烦,怎么破? 本文将介...

2020-02-21 00:44:43 432 0

原创 [享学Archaius] 六、Apache Commons Configuration2.x别样的Builder模式:ConfigurationBuilder
原力计划

在文初已经知道:`Configuration`是最最最重要的接口,所以构建它的实例自然就非常重要。 在1.x时,绝大多数情况下均使用`new`的方式来创建`Configuration`实例,而作为“更时髦”的2.x版本,显然得尽量避免出现`new`关键字,那么怎么办?这就是本文要介绍的Builde...

2020-02-20 22:50:47 428 0

原创 [享学Archaius] 五、Apache Commons Configuration2.x文件定位系统FileLocator和FileHandler

上一篇讲述了`Commons Configuration2.x`它全新的事件-监听基础,一方面体会到了相较于1.x的改动之大,另一方面也能感受到2.x在可扩展性方面是有所增强的。 2.x作为现行的主流版本,因此本文仍着眼于它。本文将要讲述的是它的**文件定位系统**,其中最重要的两个API是`F...

2020-02-19 09:39:47 564 0

原创 [享学Archaius] 四、Apache Commons Configuration2.x全新的事件-监听机制

前面文章重点介绍了`Apache Commons Configuration1.x`的使用以及原理,作为2013就已经停更的技术,本确实没有太大必要再去学它,但就因为Netflix一直还依赖它,所以这就变成了有必要。 然而作为当下的主流的2.x版本,自然也不能忽略。它几乎完全重写了1.x的代码,...

2020-02-18 17:13:50 546 0

原创 [享学Archaius] 三、Apache Commons Configuration事件监听机制及使用ReloadingStrategy实现热更新

[上篇文章]概要性的介绍了`Apache Commons Configuration`,并且了解了它的核心API以及使用。但它带给我们的功能还不仅于此,比如本文要讲到的事件监听机制和热更新。 **事件-监听**机制:能在“修改”(增删改)属性值的时候发送对应事件,让感兴趣的监听者执行其对应的逻...

2020-02-17 21:01:56 558 0

原创 [享学Archaius] 二、Apache Commons Configuration:你身边的配置管理专家

为了给讲解Netflix的`Archaius`做铺垫,本专栏首当其冲的先拿`Apache Commons Configuration`开刷,因为它是基础,不掌握它有点寸步难行之感。 `Commons Configuration`软件库提供了一个**通用的配置接口**,该接口使Java应用程序可以...

2020-02-17 20:32:30 807 0

原创 [享学Feign] 十一、Feign通过feign-slf4j模块整合logback记录日志

作为一个程序员,说到日志的重要性,怎么强调都不过分。然而每个流行框架都有它内置使用的日志库,比如:Spring使用`commons-logging`(这是Spring的唯一**强外部依赖**,其它的依赖均非强制)记录日志。 Feign它自己提供了一个日志抽象`feign.Logger`用于记录日...

2020-02-15 20:45:22 1305 0

原创 [享学Feign] 十、Feign通过feign-jackson模块天然支持POJO的编码和解码

上文介绍了Feign的Client相关模块,体验到Feign核心内容的高扩展性同时,亦能明显感觉到其子模块其实为对**Feign核心功能**的延伸,让其更能适应复杂的生产环境要求。 本文将介绍它的另一个实用模块:`feign-jackson`。它能解决我们平时工作中非常大的一个痛点:Feign只...

2020-02-15 11:57:05 1296 0

原创 [享学Feign] 九、Feign + OkHttp和Feign + Apache HttpClient哪个更香?

前八篇文章介绍完了feign-core核心内容,从本篇开始将介绍它的“其它模块”。其实核心模块可以独立的work,但是不免它的能力偏弱,比如只能编码字符串类型、只能解码字符串类型,默认使用`java.net.HttpURLConnection`作为HC... 本篇将介绍它的第一个模块:Clien...

2020-02-14 22:10:49 1780 0

原创 [享学Feign] 八、Feign是如何生成接口代理对象的?Feign实例的构建器Feign.Builder详解

一步步稳扎稳打,终于到了该研究平时接触的API:`feign.Feign`本身。 `feign.Feign`它是最上层的API,是使用者直接使用的对象,它能完成对接口生成动态代理对象,从而很方面的让你面向接口编程,而不用太过例会Feign内部的实现细节。 如果说前面7篇都是在打基础,那么它们均是...

2020-02-13 23:47:56 1144 0

原创 [享学Feign] 七、请求模版对象RequestTemplate和标准请求对象feign.Request

通过前几篇文章,能够发现有个对象我们会频繁打交道,它就是Feign的请求模版对象`RequestTemplate`。 `feign.template.Template`以及它的4个子模版都已经了解过了,体会到了模版设计的**高扩展性和高弹性**。而此处的`RequestTemplate`稍有不同...

2020-02-13 18:00:58 2377 0

原创 [享学Feign] 六、原生Feign的解码器Decoder、ErrorDecoder

上篇文章介绍了Feign的编码器Encoder,本篇继续了解它的解码器`Decoder`,以及错误解码器`ErrorDecoder`。 编码器作用于Request,那么解码器作用于Response,用于解析Http请求的响应,提取有用信息数据。

2020-02-13 01:12:17 2765 2

原创 [享学Feign] 五、原生Feign的编码器Encoder、QueryMapEncoder

编码和解码的概念最初是出现在硬件范畴,最后引申到软件领域,它和加密、解密很多时候是一组同义词。下面这段解释摘抄自百科: - 编码器:将信号(如比特流)或数据进行编制、转换为可用以通讯、传输和存储的信号形式的设备。 - 功能:转换信号形式 - 解码器:是一种能将数字视音频数据流解码还原成模拟视音...

2020-02-13 00:21:21 1534 0

原创 [享学Feign] 四、原生Feign的核心API详解(二):Contract、SynchronousMethodHandler...

本文接着上篇文章,接着介绍Feign的核心API部分。革命尚未统一,同志仍需努力。 虽然核心API不可能100%全部讲到,但大部分均已cover,对后续的学习几无障碍,欢迎一起来造...

2020-02-12 10:49:02 837 0

原创 [享学Feign] 三、原生Feign的核心API详解(一):UriTemplate、HardCodedTarget...

前两篇文章站在使用的角度介绍了源生Feign,相信读过的话都知道如何使用了。那么接下来就要动动真格,扒开内裤看看里面到底是什么东西。 本文将着重了解Feign的核心API,有点像啃API、啃源码的意思,所以可能相对枯燥、难懂,所以需要坚持。因为学习起来虽然枯燥,但意义却是巨大的,正所谓“上天不会...

2020-02-11 21:59:02 879 0

原创 [享学Feign] 二、原生Feign的注解介绍及使用示例

通过第一篇文章了解了Feign的最基础知识,作为一个有态度的程序员,我们势必要搞清楚它整个执行的脉络,了解它的执行过程和原理才算结束,这是最后最后最后进行个性化定制的基础,一切都为了“玩”嘛。 本文将讲解它原生支持的注解,毕竟Feign并不强依赖于Spring MVC,在Java环境也是可以作为...

2020-02-10 21:08:49 1162 0

原创 [享学Feign] 一、原生Feign初体验,Netflix Feign or Open Feign?

说到HTTP客户端,大家都不会感到陌生。Java自己源生的就有`java.net`包下的`HttpURLConnection`(虽然不太好用),同时优秀的开源产品更是百花齐放: - Apache HttpClient - OkHttp - Spring的RestTemplate - 说明:它基于...

2020-02-09 21:40:38 2494 6

原创 [享学Jackson] 二十二、Jackson与Fastjson的恩怨情仇(完结篇)

毋庸置疑,Jackson是全球范围内最为流行的JSON库,但`Fastjson`背靠大树阿里,在中国积累了不少“忠粉”,流行程度也不容小觑,甚至大有中国最流行的JSON库之趋势。 对于`Jackson与Fastjson`是很多同学茶余饭后常讨论的小话题,毕竟正面相争必有些江湖恩怨。本文**不会带有...

2020-02-07 15:22:09 2782 3

原创 Spring Boot升级到2.x,Jackson对Date时间类型序列化的变化差点让项目暴雷【享学Spring Boot】

在阅读本文之前,建议你已经掌握了`Jackson`的知识以及它的`Spring、Spring Boot`下的集成和运用。 > 说明:若不熟悉Jackson,请务必参阅我的专栏`[享学Jackson]`[(单击这里电梯直达)](https://blog.csdn.net/f641385712/...

2020-02-06 18:08:11 2469 0

原创 [享学Jackson] 二十一、Spring Boot下的Jackson --- JacksonAutoConfiguration自动配置

相信到了这里,你应该清楚本专栏讲解Jackson的脉络:**Jackson基础 -> Jackson进阶 -> Spring MVC下的Jackson -> Spring Boot下的Jackson**。 不同于大多快餐式技术博客文章:只说其表,不道其里。上来就在`Spring ...

2020-02-05 16:42:03 1741 0

原创 [享学Jackson] 二十、Spring MVC下的Jackson --- MappingJackson2HttpMessageConverter

`Spring MVC`是通过`HttpMessageConverter`消息转换器来与Jackson库整合的(其实只是使用了Jackson库来解析JSON格式的消息而已)。需要注意的是:它默认支持的不仅仅只有Jackson,还有JavaEE标准技术的`javax.json.bind.Jsonb`...

2020-02-04 01:14:13 1225 0

原创 [享学Jackson] 十九、Spring下使用ObjectMapper的正确姿势 --- Jackson2ObjectMapperFactoryBean

Spring作为现代Java企业级应用的实际标准,什么组件(中间件)都需要跟它“有一腿”。因此,自然我们需要知道在Spring下如何正确使用`ObjectMapper`。 上篇文章详细介绍了Jackson和Spring容器深度整合的方式,并且从API 原理层面了解到了深度整合的细节。本专栏开始我...

2020-02-02 20:59:05 1684 0

原创 [享学Jackson] 十八、Spring容器深度整合Jackson的桥梁之SpringHandlerInstantiator

上篇文章介绍了"spring-web整合Jackson源码解析之`Jackson2ObjectMapperBuilder`",它是`Spring`为开发者提供的一个便捷构建`ObjectMapper`实例的构建器工具。Spring内部自己没有使用,但推荐开发者在Spring环境...

2020-02-02 17:19:01 1283 2

提示
确定要删除当前文章?
取消 删除