摘要: What is a service mesh(服务网格)? 微服务在国内流行已经多年了,大多数公司选择了基于容器化技术( Docker )以及容器编排管理平台 ( Kubernetes )落地微服务 ,然而这仅仅是个开始,微服务的发展没有停滞。 相信在调研微服务开发框架的过程中,会发现成熟的框架如 阅读全文
posted @ 2020-10-03 21:55 freshchen 阅读(3329) 评论(0) 推荐(0) 编辑
摘要: 简介 随着近些年微服务在国内的盛行,消息驱动被提到的越来越多。主要原因是系统被拆分成多个模块后,一个业务往往需要在多个服务间相互调用,不管是采用HTTP还是RPC都是同步的,不可避免快等慢的情况发生,系统性能上很容易遇到瓶颈。在这样的背景下,将业务中实时性要求不是特别高且非主干的部分放到消息队列中是 阅读全文
posted @ 2020-05-30 23:32 freshchen 阅读(1081) 评论(1) 推荐(2) 编辑
摘要: 前言 相信大家都挺熟悉 CountDownLatch 的,顾名思义就是一个栅栏,其主要作用是多线程环境下,让多个线程在栅栏门口等待,所有线程到齐后,栅栏打开程序继续执行。 案例 用一个最简单的案例引出我们的主角 源码分析 看源码前最好先熟悉下 AQS 的大致结构,之前有两篇文章仅供参考,大致熟悉下即 阅读全文
posted @ 2020-04-22 18:46 freshchen 阅读(231) 评论(0) 推荐(1) 编辑
摘要: 前言 本文是 ReentrantLock 源码的第二篇,第一篇主要介绍了公平锁非公平锁正常的加锁解锁流程,虽然表达能力有限不知道有没有讲清楚,本着不太监的原则,本文填补下第一篇中挖的坑。 "Java读源码之ReentrantLock" 源码分析 感知中断锁 如果我们希望检测到中断后能立刻抛出异常就用 阅读全文
posted @ 2020-04-19 21:16 freshchen 阅读(441) 评论(0) 推荐(1) 编辑
摘要: 前言 ReentrantLock 可重入锁,应该是除了 synchronized 关键字外用的最多的线程同步手段了,虽然JVM维护者疯狂优化 synchronized 使其已经拥有了很好的性能。但 ReentrantLock 仍有其存在价值,例如可以感知线程中断,公平锁模式,可以指定超时时间的抢锁等 阅读全文
posted @ 2020-04-07 18:47 freshchen 阅读(482) 评论(0) 推荐(0) 编辑
摘要: 前言 在想很好了解 Stream 之前,很有必要简单的了解下函数式变成以及Lambda的概念,可以阅读另外一篇 " Java8新特性之Lambda " 大家回忆下日常学习工作中使用的最多的 Java API 是什么?相信很多人的答案和我一样都是集合。我们选择适合的集合数据结构存储数据,而我们之于集合 阅读全文
posted @ 2020-02-15 21:56 freshchen 阅读(1648) 评论(0) 推荐(0) 编辑
摘要: 简介 使用场景 主要用于在微服务架构下做CDC(消费者驱动契约)测试。下图展示了多个微服务的调用,如果我们更改了一个模块要如何进行测试呢? 传统的两种测试思路 模拟生产环境部署所有的微服务,然后进行测试 优点 测试结果可信度高 缺点 测试成本太大,装一整套环境耗时,耗力,耗机器 Mock其他微服务做 阅读全文
posted @ 2020-01-22 20:00 freshchen 阅读(3043) 评论(2) 推荐(0) 编辑
摘要: 简介 "官网链接" JOOQ是一套持久层框架,主要特点是: 逆向工程,自动根据数据库结构生成对应的类 流式的API,像写SQL一样 提供类型安全的SQL查询,JOOQ的主要优势,可以帮助我们在写SQL时就做检查 支持几乎所有DDL,DML 可以内部避免SQL注入安全问题 支持SQL渲染,打印,绑定 阅读全文
posted @ 2020-01-21 15:46 freshchen 阅读(5343) 评论(0) 推荐(0) 编辑
摘要: 前言 Why 初次接触到Groovy是在实习中接触到一个 纯Groovy写的项目,当时看了下这不就是没有分号的Java么,而且也是有年纪的语言了,并不想投入时间学习。后来工作中越来越多的看到Groovy的身影,Gradle,Spring Cloud Contract等等都支持Groovy作为DSL( 阅读全文
posted @ 2020-01-21 15:33 freshchen 阅读(3256) 评论(0) 推荐(1) 编辑
摘要: 概念 作用 构建或者运行阶段提供一些元数据,不影响正常运行逻辑,简化开发 内置注解 Java提供了一些内置注解,并且实现了相关功能 @Override 检查该方法是否是重载方法,如果发现其父类,或者是引用的接口中并没有该方法时,会报编译错误 @Deprecated 标记过时方法。如果使用该方法,会报 阅读全文
posted @ 2019-12-17 23:07 freshchen 阅读(841) 评论(0) 推荐(2) 编辑