本博客换新域名了:https://demonlee.net ,怎么样,有没有觉得高大上了一点点 😎,老域名 https://demonlee.tech 会慢慢退出视野 🙃
平时在墨问上更新的频繁一些,博客和公众号基本上是月更(甚至没达到)。写作能力是 AI 时代最大的财富,活到老,学到老,写到老。
每次打开当前这个页面,都会响应很久。嗯,的确影响心情。今天花了一点时间处理了一下,把一些 js 文件直接弄成静态的,速度咔咔就上来了,舒服~
虽然没有人来看,但还是不能轻易放过自己 🙃
早点承认一些事实,比如 AI 会越来越厉害,会超过我们所有人,能把很多事情搞定,我们的饭碗确实会受到影响,而且越精确的东西越容易被 Ta 搞定。
然后接受 Ta,学习 Ta,拥抱 Ta,毕竟打不过就加入嘛,把 Ta 当成一个一起完成目标的伙伴。
如果每天生活在焦虑中,担心是否会被替代,是否会失业,人生多痛苦啊?
五哥在群里说:
人生的偶然性远大于确定性,但修行的人不信邪,非要找到确定性路径,这就是魔道。
你有你的计划,世界另有计划。活在当下,珍惜时间 💪
嘿,更多碎碎念在这里:墨问小程序 😄
一个 web 请求,VO 类中的字段是 pCode,但 http 的响应信息却是 pcode,显然是 spring boot 在做序列化转换时出了问题,查了一下:
spring boot 默认使用 Jackson 实现的 HttpMessageConverter 进行消息转换,会将 pCode 转换成 pcode(我在 spring boot 2.1 和 2.5 下测试都是这个结果)。debug 时看到有下面这些转换器:
0 = {ByteArrayHttpMessageConverter@5529}
1 = {StringHttpMessageConverter@5530}
2 = {StringHttpMessageConverter@5531}
3 = {ResourceHttpMessageConverter@5532}
4 = {ResourceRegionHttpMessageConverter@5533}
5 = {SourceHttpMessageConverter@5534}
6 = {AllEncompassingFormHttpMessageConverter@5535}
7 = {MappingJackson2HttpMessageConverter@5536}
8 = {MappingJackson2HttpMessageConverter@5537}
如果想正常转换 pCode(即浏览器端显示 pCode,而不是 pcode),则需要换一个 HttpMessageConverter,比如 fastjson 实现的 FastJsonHttpMessageConverter:
@Configuration
public class ComponentsConfig implements WebMvcConfigurer {
@Override
public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
FastJsonHttpMessageConverter converter = new FastJsonHttpMessageConverter();
FastJsonConfig config = new FastJsonConfig();
// 保持原始属性名,不进行命名转换
SerializeConfig serializeConfig = SerializeConfig.globalInstance;
config.setSerializeConfig(serializeConfig);
// 添加 SerializerFeature 来支持输出 null 值字段
config.setSerializerFeatures(
SerializerFeature.WriteMapNullValue // 输出 null 字段
// SerializerFeature.WriteNullStringAsEmpty, // 将 null 字符串输出为 ""
// SerializerFeature.WriteNullNumberAsZero, // 将 null 数字输出为 0
// SerializerFeature.WriteNullBooleanAsFalse // 将 null 布尔值输出为 false
);
converter.setFastJsonConfig(config);
List<MediaType> supportedMediaTypes = new ArrayList<>();
supportedMediaTypes.add(MediaType.APPLICATION_JSON);
supportedMediaTypes.add(MediaType.APPLICATION_JSON_UTF8);
converter.setSupportedMediaTypes(supportedMediaTypes);
converters.add(0, converter);
}
}
另外,这类字段在 Bean Copy 时可能也会产生相关问题,需要注意,不过我在以下版本中测试都是正常的:
cn.hutool.core.bean.BeanUtil
复制正常org.springframework.beans.BeanUtils
复制正常net.sf.cglib.beans.BeanCopier
复制正常供参考。
通过 Apache Velocity 配置模板时,只要使用注释 ##
就能抑制空行的出现 🐶
##
## 输出所有生成的定义代码
#foreach($generatedDefLine in $generatedDefinitionLines)
${generatedDefLine}
#end
##
不想上班的你,像极了数据结构中的栈(Stack):来的最晚,走的最早 🐶
鼠与虎,都一样,没天命又不认命。
小猴子你听,那风里传来的,都是求而不得的声音。
行动是打开枷锁的钥匙,是治愈的良方。
因为 Java maven 工程的 pom.xml 中配置了 <maven.test.skip>true</maven.test.skip>
,导致 vs code 一直不能显示 Junit 单元测试的测试按钮……
Who am I ?
Where did I come from ?
Where do I go to find out ?