Demon.Lee 2024-07-22 17:46

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

Demon.Lee 2024-06-27 15:14

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

Demon.Lee 2024-06-20 15:33

使用 hutool 中的 BeanUtil.copyProperties 转换对象时,如果有枚举类字段,转换时,会到对应枚举类中去查找自定义转换函数:

// cn.hutool.core.convert.impl.EnumConverter
private static Map<Class<?>, Method> getMethodMap(Class<?> enumClass) {
	return VALUE_OF_METHOD_CACHE.computeIfAbsent(enumClass, (key) -> Arrays.stream(enumClass.getMethods())
		.filter(ModifierUtil::isStatic)
		.filter(m -> m.getReturnType() == enumClass)
		.filter(m -> m.getParameterCount() == 1)
		.filter(m -> false == "valueOf".equals(m.getName()))
		.collect(Collectors.toMap(m -> m.getParameterTypes()[0], m -> m, (k1, k2) -> k1)));
}

所以,如果你写的自定义转换函数并不是为了用于对象转换,就需要小心了~

嗯,这并不是一个好的设计。

Demon.Lee 2023-12-26 13:49

架构的本质是分离控制和逻辑。基础设施好了,干啥都方便,所以效率自然就高。计算机软件中的各种工具、框架和平台,都是在帮我们解决控制,那我们自己干什么呢?专注于逻辑就行,也就是你的核心业务。

  • 你不用自己搭一个博客系统,微信公众号、语雀、墨问便签、flomo、journal 哪里都可以写;
  • 你不用自己搭建一个容器管理平台,kubernetes 已经帮你做好了;
  • 你不用自己管理软件进程中的内存回收,VM 虚拟机已经帮你搞定了;
  • 你不用自己管理软件对象的生命周期,对象创建、更新、销毁等,Spring 之类的框架一键托管了;
  • ……

只有计算机软件行业是这样吗?No,如果你想创业:从门店选址到门店管理,从物流到营销,从支付到配送,啥基础设施都为你准备好了。你只要想好干什么,再准备好 money,就可以开工了~

这就是真正的效率至上吧。门槛低了,干啥都快,而由此带来的副作用就是同质化竞争严重。不过,对我们这种小老百姓来说,也不是坏事,毕竟竞争可以带来低价 😄。

二十年前,会想到今天的我们,人手一部智能手机吗?
二十年后,是否会出现每人都有专属的 AI 机器人?
我觉得是很有可能的,很多事情都让机器人干,多好。然后我们干啥?躺平?🐶

Demon.Lee 2023-11-11 15:37

关于 Hotspot VM 中的 PS MarkSweep,Serial Old 和 Parallel Old:

1、https://www.jianshu.com/p/624338a8d51b

在 Parallel Scavenge 收集器架构中本身有 PS MarkSweep 收集器来进行老年代收集,但由于 PS MarkSweep 与 Serial Old 实现非常接近,因此官方的许多资料都直接以 Serial Old 代替 PS MarkSweep进行讲解。

2、https://www.zhihu.com/question/56344485

Java 7/8 默认老年代回收是 PSMarkSweep(Serial-Old) 还是Parallel Old ?
这个问题的答案取决于 JDK 版本,在 2012 年默认值改变过一次。这个改进使得 HotSpot VM 在选择使用 ParallelGC(-XX:+UseParallelGC 或者是 ergonomics 自动选择)的时候,会默认开启 -XX:+UseParallelOldGC 。这个变更应该是在JDK7u4开始的JDK7u系列与JDK8系列开始生效。

3、https://xie.infoq.cn/article/2b4358255f56a3a77939b9e84

PS MarkSweep 只是回收器的别名,他可以指代 Serial Old 和 Parallel Old,毕竟他们的实现基本一样。Java 8 上 -XX:+UseParallelGC 和 -XX:+UseParallelOldGC 结果一样,都是用的 Parallel Old。


笔者总结一下:

  • 在一些书或文章中,PS MarkSweep 指代 Serial Old,是因为它们共用了相同的代码;
  • 在 JDK7u4 之前,PS MarkSweep 指向 Serial Old,而这之后它则指向 Parallel Old;
  • 在 JDK7u4 之后,使用 -XX:+UseParallelGC 的新老代回收器是 Parallel Scavenge + Parallel Old,只不过使用 jconsole 等工具查看时,显示的都是 PS Scavenge + PS MarkSweep。
Demon.Lee 2023-11-11 10:27

之前发现 spring boot 中使用 swagger 来暴露 Api 接口信息,但看到很多 VO 对象显示的都不正确,没想明白。

后来另一个同事说,可能是 @ApiModel 上各种描述信息有重复,导致展示时数据错乱。我一看,还真是,很多小伙伴在 copy 代码时,忘记改这些内容,然后一堆 xxx模型……

@Getter
@Setter
@ApiModel("xxx模型")
public class OrderQueryRequest {

    @ApiModelProperty("订单id")
    private String orderId;

    @ApiModelProperty("订单编号")
    private String orderNo;

    @ApiModelProperty("机构编码")
    private String orgCode;
}

这就是缺少代码自动检查和 code review 导致的后果吧。

Demon.Lee 2023-11-10 13:06

AMD64 这个名字的意思不是指只有 AMD 的处理器使用,它就是现在主流的 x86-64 架构,由于 Intel Itanium 的失败,现行的 64 位标准是由 AMD 公司率先制定的,Intel 通过交叉授权获得该标准的授权,所以叫作 AMD64。

啥叫 Intel Itanium 的失败?GPT-4 的回复是:

Intel Itanium 的失败指的是 Intel 开发的 Itanium 处理器架构没有达到市场预期,最终被市场淘汰的历史事件。Itanium 处理器是一种 64 位的处理器架构,被称为 IA-64,是 Intel 和惠普联合开发的,旨在用于高端服务器市场。它与传统的 x86 架构完全不同,采用了一种称为显式并行指令计算(EPIC)的设计哲学,这使得编译器在编译程序时需要做出更多的优化决策来利用硬件并行性。

Itanium项目最初非常雄心勃勃,预计将会取代x86架构并主导未来的计算市场。然而,由于高成本、软件兼容性以及性能等问题,Itanium 并没有获得广泛的市场接受。Intel 在 2017 年宣布了 Itanium 9700 系列处理器,这是 Itanium 处理器家族的最后一个产品。Intel 在 2021 年宣布停止接受对 Itanium 处理器的订单,并且在 2021 年 7 月 29 日结束了最后的出货,正式标志着 Itanium 项目的结束。

Demon.Lee 2023-10-25 08:26

😡 不要以行动上的勤奋,来掩盖思维上的懒惰

我发现自己经常这样,明明磨刀不误砍柴工,非要绕圈圈,明明可以花点时间思考,就能想到更优的方案,可还是走回老路子。

如果:
1、眼前的桌面很乱,花 5 分钟收拾一下?
2、可以通过 debug 找问题,就不要加日志;
3、可以搜索,就不要来回滑动屏幕翻目录;
4、可以用工具导入导出,就不要用一条条录;
5、可以快捷键(如 vim),就不要用鼠标;
6、可以用 AI,就先用 AI 确定范围,再用 Google 核实;
7、可以先设计,就不要先动手撸;
8、……

昨天同事问我,IDEA Plugin 工程如何 debug,我竟然没用过,他又问,你都是加日志调试问题吗?言下之意,这种方法太 low,效率低下。我很羞愧。原来,我时常用勤奋作为挡箭牌,来掩饰自己懒惰的大脑。

我得把第一句话贴在墙上,然后深呼吸~

Demon.Lee 2023-10-21 22:00

博客的云主机马上又到期了,去年在 UCloud 薅羊毛,一年只要 468 块,现在续费居然要两千多,算了,换一家继续薅~

京东 1499 三年,就它了,1M 就 1M 吧。

装一个 docker,copy 一下数据,然后启动,部署便完成了,最后再改一下域名解析,搞定。

Demon.Lee 2023-10-08 09:06

Warp 终端的 Vim 模式终于来了,敲命令的速度可以上一个台阶了~

之前摸索了好久,一直没搞定,原来是没支持~