iMac 升级 SSD

前段时间,我的 7 年高龄的 Mac Book Pro (Late 2013) 老是出现磁盘空间不足的情况,256G 的 SSD 实在是有点捉襟见肘了,于是打算换个 M1 ,上官网看一下价格,一个顶配算下来得 3 万多 RMB,太特么贵了,想当年,我这个 Mac Book Pro 也差不算是顶配了,才 1.7 万呢,用了这么多年,除了磁盘空间有点小之外,没啥其它的毛病,要不还是换个硬盘好了。

阅读全文

Booster 4.8.0 版本发布

Booster 又双叒叕发布了新的版本—— v4.8.0,本次更新内容如下:

  1. 修复 #311

阅读全文

Booster 4.7.0 版本发布

Booster 又双叒叕发布了新的版本—— v4.7.0,本次更新内容如下:

  1. Fix issue #304: ScheduledThreadPoolExecutor transform bug by @lpw14 in https://github.com/didi/booster/pull/305

阅读全文

关于数据的(不)可变性问题

关于数据的可变性或者不可变性,是指数据在被创建后,到底支不支持可变(修改),尽管我们知道 Java 中的 String 采用不可变的设计有诸多的优点,但似乎在我过去的职业生涯中,很少系统性地去思考这个问题,直到最近,看其他同学的代码的时候,才意识到这个问题的严重性。

阅读全文

是时候放弃 JavaPoet/KotlinPoet 了

相信大家对于 JavaPoetKotlinPoet 并不陌生,皆出自大名定鼎鼎的 Square。一般地,我们在用 APT (Annotation Processing Toolkit) 或者 KAPT 在编译期生成源代码时,一般都会用 JavaPoet 来生成 Java 源代码,而用 KotlinPoet 来生成 Kotlin 源代码,乍一看,哇!好酷,感觉特别有逼格。

阅读全文

Booster 4.6.0 版本发布

Booster 又双叒叕发布了新的版本—— v4.6.0,本次更新内容如下:

  1. Add extension property BaseVariant.mergedNativeLibs: Collection<File>

阅读全文

Booster 4.5.3 版本发布

Booster 又双叒叕发布了新的版本—— v4.5.3,本次更新内容如下:

  1. Fix issue #284 - compressing processed resource file

阅读全文

Booster 4.5.1 版本发布

Booster 又双叒叕发布了新的版本—— v4.5.1,本次更新内容如下:

  1. Fix issue #280 - thread renaming for ScheduledThreadPoolExecutor

阅读全文

Booster Collector API

Booster 之所以保持着高性能,除了并行 I/O 以外,还有一个很重要的方面 —— 单次 I/O。可能有人会问,什么叫单次 I/O?所谓单次 I/O 是指,在 Transform 的过程中,对于每一个输入 (JAR/DIR) ,Booster 只需要一次读和一次写,便可以实现整个 app 的字节码以流水线的方式进行处理,也就是 Bytecode Transform Pipeline。这就意味着,每个 Transformer 只有一次机会来处理 class ,但如果想要在 Transformer 先收集一些信息,再在 Transform 的过程中将这些收集到的信息,以字节码的方式写入到某个 class 中,就不太容易实现。一个典型的例子便是 SPI 优化,虽然 R8 可以对 SPI 进行化,但是,对写代码的姿势有一定的要求。

阅读全文

Booster 4.4.0 版本发布

Booster 又双叒叕发布了新的版本—— v4.4.0,本次更新内容如下:

  1. 支持对增量编译的 transform 输入进行强制更新

阅读全文