Demon.Lee 2025-09-02 10:45

本博客换新域名了:https://demonlee.net ,怎么样,有没有觉得高大上了一点点 😎,老域名 https://demonlee.tech 会慢慢退出视野 🙃

平时在墨问上更新的频繁一些,博客和公众号基本上是月更(甚至没达到)。写作能力是 AI 时代最大的财富,活到老,学到老,写到老。

Demon.Lee 2025-07-25 10:49

每次打开当前这个页面,都会响应很久。嗯,的确影响心情。今天花了一点时间处理了一下,把一些 js 文件直接弄成静态的,速度咔咔就上来了,舒服~

虽然没有人来看,但还是不能轻易放过自己 🙃

Demon.Lee 2025-07-22 13:41

早点承认一些事实,比如 AI 会越来越厉害,会超过我们所有人,能把很多事情搞定,我们的饭碗确实会受到影响,而且越精确的东西越容易被 Ta 搞定。

然后接受 Ta,学习 Ta,拥抱 Ta,毕竟打不过就加入嘛,把 Ta 当成一个一起完成目标的伙伴。

如果每天生活在焦虑中,担心是否会被替代,是否会失业,人生多痛苦啊?

五哥在群里说:

人生的偶然性远大于确定性,但修行的人不信邪,非要找到确定性路径,这就是魔道。

你有你的计划,世界另有计划。活在当下,珍惜时间 💪

Demon.Lee 2025-06-20 09:19

嘿,更多碎碎念在这里:墨问小程序 😄

Demon.Lee 2025-06-18 16:01

一个 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 时可能也会产生相关问题,需要注意,不过我在以下版本中测试都是正常的:

  • hutool 5.8.23 cn.hutool.core.bean.BeanUtil 复制正常
  • spring-beans 5.1.5 org.springframework.beans.BeanUtils 复制正常
  • cglib 3.2.4 net.sf.cglib.beans.BeanCopier 复制正常

供参考。

Demon.Lee 2025-06-05 10:07

通过 Apache Velocity 配置模板时,只要使用注释 ## 就能抑制空行的出现 🐶

##
## 输出所有生成的定义代码
#foreach($generatedDefLine in $generatedDefinitionLines)
    ${generatedDefLine}
#end
##
Demon.Lee 2025-01-11 10:09

2024 阅读 33 本,勉强追平 2023 年 🙃

Learning Summary@2024

Demon.Lee 2025-01-11 09:48

不想上班的你,像极了数据结构中的栈(Stack):来的最晚,走的最早 🐶

领导说我能力不足,我笑死~

Demon.Lee 2024-12-21 11:32

鼠与虎,都一样,没天命又不认命。

小猴子你听,那风里传来的,都是求而不得的声音。

行动是打开枷锁的钥匙,是治愈的良方。

Demon.Lee 2024-06-27 15:14

因为 Java maven 工程的 pom.xml 中配置了 <maven.test.skip>true</maven.test.skip>,导致 vs code 一直不能显示 Junit 单元测试的测试按钮……