最近在项目上遇到一个奇怪的问题:
我们有两个服务,服务A调用服务B发送邮件,但结果是重复发送了4封邮件,内容还是一样的。一开始以为是邮件服务器出问题,但通过本地调试发现发送邮件的方法是被重复调用了。
至于为什么会重复调用,这得先了解一下Spring Cloud 的重试机制。
最近在项目上遇到一个奇怪的问题:
我们有两个服务,服务A调用服务B发送邮件,但结果是重复发送了4封邮件,内容还是一样的。一开始以为是邮件服务器出问题,但通过本地调试发现发送邮件的方法是被重复调用了。
至于为什么会重复调用,这得先了解一下Spring Cloud 的重试机制。
最近项目的系统突然出现崩溃,无法响应请求。使用运维账号登陆服务器也无法登陆,提示
1 | fork: retry: No child processes |
不积跬步,无以至千里。不积小流,无以成江海。
通常我们有这种需求,某一个字段是由前台维护的:编码 <==> 含义,类似一个键值对。含义是可能会变化的,但编码是固定的,一般我们都会在数据库中直接存储编码,但数据返回给前台显示时需要展示为含义。当然我们可以在从数据库查询时去join到该值的含义一起返回,这里提供另一种方式来实现这个功能。
不积跬步,无以至千里。不积小流,无以成江海。
我们常用的StringUtils工具类org.apache.commons.lang3.StringUtils 与 org.springframework.util.StringUtils
他们提供的Split方法有差别,导致今天程序出现问题时费了点时间才发现问题。特意写测试对比了两个方法,以免以后再掉坑里。
不积跬步,无以至千里。不积小流,无以成江海。
Java8 全新的日期与时间 API
主要如下:
不积跬步,无以至千里。不积小流,无以成江海。
对于WebService的调用,之前是使用CXF直接生成代理类的方式,这样的好处是拿到后可以直接调用,但生成的文件太多,并且包名需要与服务端相同,使用进起来感觉很重。
使用CXF动态客户端的方式去调用也很简单,并且不需要生成任何文件。
不积跬步,无以至千里。 不积小流,无以成江海。
Gson提供了fromJson()
和toJson()
两个直接用于解析和生成的方法,前者实现反序列化,后者实现了序列化。
今天在使用 fromJson()
遇到一个无法识别泛型的问题。