codefollower
codefollower
**还不支持'\f'转义字符** 需要用'\u000C'这样的格式替换'\f'。
**null 检测是个糟糕的语言特性** 把现有的 Java 代码自动转成 Kotlin 后最多的问题就是 null 检测问题,多到让人抓狂。 随便拿 jsoup 的代码来举两个例子: `private final String[] stringCache = new String[512]` 被转成 `private val stringCache = arrayOfNulls(512)` 把 stringCache 作为参数调用其他方法时,这些方法的参数必须使用 Array 类型,但是...
**啰嗦的 open 关键字** 在 Java 中,当一个类/方法用 protected/public 修饰并且没有final时就代表可继承或覆盖, 特别的,按惯例当一个方法用 protected 修饰时就已经暗示原作者已经考虑到被子类覆盖的问题了,而此时又要加上 open,对比原有的 Java 代码显得很啰嗦。
**用companion object来模拟static成员的行为很糟糕** 存在大量使用 Logger 的 Java 代码,仅仅是下面一行代码: `private static final Logger logger = LoggerFactory.getLogger(XXX.class);` 使用 companion object 不但啰嗦,还浪费内存。
**在while循环条件中不能使用赋值表达式** 比如,在 Java 中可以像下面这样使用赋值表达式: ``` java static void crossStreams(final InputStream in, final OutputStream out) throws IOException { final byte[] buffer = new byte[bufferSize]; int len; while ((len = in.read(buffer)) !=...
**对象声明中的代码不能访问嵌套类的私有成员** 像 jsoup 中的 org.jsoup.helper.DataUtil 只是一个工具类,所有成员都是 static 的,转成 Kotlin 后变成了一个对象声明,原本它有一个如下的嵌套类: ``` java private static class BomCharset { private final String charset; private final boolean offset; public BomCharset(String charset, boolean offset)...
**让人困惑的范型** jsoup 中有如下扩展了 java.util.ArrayList 的类: ``` java package org.jsoup.helper; import java.util.ArrayList; import java.util.Collection; /** * Implementation of ArrayList that watches out for changes to the contents. */ public abstract class...
把src/share/vm/oops/constantPool.hpp 347行的中文注释删掉看看。
需要慎重说明一下:这里列的书和学习方式非常不适合项目管理类的,你想管大项目管几百号人,Martin Fowler那一卦的更适合你,同时,你或是只想做遍地是CRUD的简单业务系统这里的东西对你没什么用,这里的学习方式更适合想在计算机学科这个大领域走得更远的人。
**技术分类**: 数据库-事务引擎 **技术思想**: 读时撤销算法 **实现状态**: 已经实现 **细节描述**: Lealone 数据库很早就使用了事务引擎与存储引擎分离的架构,例如内置的 [AOSE](https://github.com/lealone/Lealone/tree/master/lealone-aose) 自适应优化存储引擎和 [MVCC](https://github.com/lealone/Lealone/tree/master/lealone-mvcc) 多版本并发控制事务引擎就是采用这样的架构设计的。 不同于 MySQL 中的 InnoDB 和 MyISAM 存储引擎,常见的说法是某某存储引擎是否支持事务,比如 MyISAM 不支持事务,InnoDB 是一个支持事务的存储引擎,这种说法代表了在传统观念中事务是应该内置到存储引擎中去实现的。 Lealone 打破了这种传统观念,按关注点分离的原则,存储引擎就只负责数据的读写,而事务引擎只专注事务的 ACID 特性的实现,不同的存储引擎和事务引擎可以相互搭配使用,比如,如果单独使用 AOSE,那么按传统观念就是一个不支持事务的存储引擎,搭配了 MVCC 事务引擎后,AOSE...