Spring Boot 2 升 3:两条命令搞定 95%,AI 收尾
一年多前,我在另一个迁移项目里尝试过 OpenRewrite,做了可行性验证,最终评估下来方案不合适,那个项目转而采用了 AI 的方式。顺着那次探索写了个系列,然后就搁置了。最近真正的迁移计划提上日程,翻出来一看——当时踩过的坑、记下来的 …
一年多前,我在另一个迁移项目里尝试过 OpenRewrite,做了可行性验证,最终评估下来方案不合适,那个项目转而采用了 AI 的方式。顺着那次探索写了个系列,然后就搁置了。最近真正的迁移计划提上日程,翻出来一看——当时踩过的坑、记下来的 …
和上一篇《使用 Flomesh 强化 Spring Cloud 服务治理》一样,这次同样是在无代码侵入的情况下对 Dubbo 服务治理的提升。
更多治理场景陆续添加中,有兴趣的可关注 …
这篇是关于如何使用 Flomesh 服务网格来强化 Spring Cloud 的服务治理能力,降低 Spring Cloud 微服务架构落地服务网格的门槛,实现“自主可控”。
文档在 github 上持续更新,欢迎大家一起讨论 …
Quarkus 的文章之前写过三篇了,讲过了 Quarkus 的小而快。

想到这个标题的时候,我第一时间想到的就是星爷的《唐伯虎点秋香》的这一幕。
当讨论起世界上最好的开发语言是什么的时候,Java 的粉丝们总会遇到这种场景:
吹:“Java 语法简单,容易上手!” 黑:“Java 启动慢,性能差,耗资源!” …

电影《功夫》中,火云邪神有句话:“天下武功无坚不摧,唯快不破。”
在 上一篇文章 中,我们写了第一个 Quarkus 应用,并尝试着构建了 legacy-jar 和 fast-jar。
今天来看一下 Quarkus 构建出来的本机可执 …
Wikipedia上有关 Quarkus 的信息还很少,只有一句简单的介绍:
Quarkus 是专为 OpenJDK HotSpot 和 GraalVM 定制的全栈 Kubernetes 原生 Java 应用程序框架。与如 Spring …
Spring Cloud 中 Ribbon有在 Zuul 和 Feign 中使用,当然也可以通过在RestTemplate的 bean 定义上添加@LoadBalanced注解方式获得一个带有负载均衡更能的RestTemplate。
不过实 …

(Photo by Andrea Piacquadio from Pexels)
话说工作十多年,mysql 还真没用几年。起初是外企银行,无法直接接触到 DB;后来一直从事架构方面,也多是解决问题为主。
这次搭建海外机房,围绕时区大家做 …
今天来说说日常在Kubernetes开发Java项目遇到的问题.
当我们新建一个项目的时候, 总是面临需要新建manifest, 平时都是copy+paste+modify. 能否以变成的方式来生成?
开发时的步骤也比较繁琐: docker …
译自: https://spring.io/blog/2019/10/16/spring-boot-2-2-0
在kafka中, topic的分区是并行计算的单元. 在producer端和broker端, 可以同时并发的写数据到不同的分区中. 在consumer端, Kafka总是将某个分区分配个一个consumer线程. 因此同一个消费组内的并行度 …
@Configuration注解指示一个类声明一个或多个@Bean方法, 并且可以由Spring容器处理, 以在运行时为这些bean生成bean定义和服务请求.
使用 …
#如果路由转发请求发生超时(连接超时或处理超时), 只要超时时间的设置小于Hystrix的命令超时时间,那么它就会自动发起重试. 默认为false. 或者对指定响应状态码进行重试
zuul.retryable = true …客户端(库, 网络调用等)在各自的线程上运行. 这种做法将他们与调用线程隔开, 因此调用者可以从一个耗时的依赖调用"离开(walk away)"
Hystrix使用单独的, 每个依赖的线程池作为约 …

构建HystrixCommand或者HystrixObservableCommand对象
第一步是构建一个HystrixCommand或HystrixObservableCommand对象来代表对依赖服务所做的请求。 …
嵌入式的zuul代理
使用了Netfilx OSS的其他组件:
为什么要讨论这个问题, 工作中一个同事写的类使用了ConfigurationProperties, 只提供了标准的setter方法. 属性的访问, 提供了定制的方法. 可以参考EurekaClientConfigBean.
他使用的是 …
SpringBoot Application启动部分的源码阅读.
常用的SpringApplication.run(Class, Args)启动Spring应用, 创建或者更新 …
最近在调整系统的性能, 系统中正使用Jackson作为序列化工具. 做了下与fastJson, Avro, ProtoStuff的序列化吞吐对比.
由于只是做横向对比, 没有优化系统或者JVM任何参数. 服务器一般都用Linux, 在 …
准备做个Spring Cloud源码分析系列, 作为Spring Cloud的源码分析笔记.
这一篇是Eureka的客户端.
两种方式, 最终的实现基本一样.
使用@EnableEurekaClient注 …
Kafka的性能众所周知,Producer支持acknowledge模式。即Kafka会想Producer返回消息发送的结果。但是在Java Client中,acknowledge的确认有两种:同步和异步。 同步是通过调用 …
public class …按照重要性分类, 基于版本0.11.0.0
一组host和port用于初始化连接. 不管这里配置了多少台server, 都只是用作发现整个集群全部server信息. 这个配置不需要包含集群所有的机器信 …
JSON Path是在使用Kubernetes API的过程中首次使用的. 使用API做扩缩容的时候, 发送整个Deployment的全文不是个明智的做法, 虽然可行. 因此便使用了JSON Patch.
JsonObject item = …停止,stop,这里说的是真的停止。如何优雅的结束,这里就不提了。
这里要用Thread.stop()。众所周知,stop()方法在JDK中是废弃的。
该方法天生是不安全的。使用thread.stop()停止一个线程,导致释放(解锁)所有 …
《Java并发编程实践》的注解中有提到这一概念。
The private constructor exists to avoid the race condition that would occur if the copy …
使用docker创建Cassandra,方便快捷
docker pull cassandra:latest
docker run -d --name cassandra -p 9042:9042 cassandra …这几天生产上有台机器的Metaspace一直在告警,Metaspace使用达到了97%。使用-XX:MetaspaceSize=512m,告警也还在在持续,查看MC只有81536.0,显然这个参数没起作用。
也有人遇到类似的问题,并在 …
一个Tomcat实例中运行了三个应用,其中一个对接了Apereo的CAS系统。现在要求另外两个系统也对接CAS系统,问题就出现了:
应用启动后打开其中两个应用的任何一个,登录完成后系统都没有问题。唯独首选打开第三个,其他两个报错 …
这里会用到几个概念高阶函数、函数字面量、参数组
high-order function 函数的一种,简单来说它包含了一个函数类型的参数或者返回值。
所谓的高阶是跟一阶函数相比,深入一下:
- 一个或多个参数是函数,并返回一个值。 …
在网上搜索GreenPlum(GPDB)的数据源配置的时候,发现搜索结果都是用postgresql的配置。
import com.mchange.v2.c3p0.DataSources;
import …val修饰的在定义的时候执行
def修饰的在调用的时候执行
//注释的行为REPL输出
def test: () => Int = {
println("def called") …最近Redis的使用中用的到key可能比较长,但是Redis的官方文档没提到key长度对性能的影响,故简单做了个测试。
Redis和测试程序都是运行在本地,不看单次的性能,只看不同的长度堆读写性能的影响。
使用长度分别为 …
其实标题我想用《为什么foreach边循环边移除元素要用Iterator?》可是太长。
不用Iterator,用Collection.remove(),会报ConcurrentModificationException错误。
for( …volatile通过保证对变量的读或写都是直接从内存中读取或直接写入内存中,保证了可见性;但是volatile并不足以保证线程安全,因为无法保证原子性,如count++操作:
这是工作中遇到的一个问题:测试环境部署出错,报了下面的问题。
Caused by: java.lang.IllegalArgumentException: Result Maps collection already contains …这是实际使用时遇到的问题:kafka api的版本是0.10,发现有重复消费问题;检查log后发现在commit offset的时候发生超时。
Auto offset commit failed for group test: Commit …ThreadPoolExecutor是多线程中经常用到的类,其使用一个线程池执行提交的任务。
没有特殊需求的情况下,通常都是用Executors类的静态方法如 …

初始化KafkaProducer实例,同时通过Config数据初始化MetaData、NetWorkClient、Accumulator和Sender线程。启动Sender线程。
记录 …
创建Connection时会通过FrameHandlerFacotry创建一个SocketFrameHandler,SocketFrameHandler对Socket进行了封装。
public …HashSet是一个包含非重复元素的集合,如何实现的,要从底层实现代码看起。
首先非重复元素如何定义,看Set的描述:
More formally, sets contain no pair of elements e1 and …
多线程下的单例模式的实现,顺便做了反汇编。
public class MySingleton {
private static MySingleton INSTANCE;
private MySingleton() { …spring amqp的原生并没有对Kryo加以支持,Kryo的优点就不多说了。
git地址:https://github.com/addozhang/spring-kryo-messaeg-converter
public class …