1101 - 给自己挖了个大坑

本来,今天挺好的:新版 iText 审核通过,Klib 的暗色模式也实现完毕。可,无意间发现之前填下的一个大坑,心情顿时跌入谷底。

之前的代码中,用哈希值作为 key 值…

哎,我怎么会写出这样的代码…

哈希,主要是确定不同,而不是确定唯一性。换句话说,哈希主要是为了毕竟 2 个值是否不同(当然,极低概率下,哈希相同的 2 个值,可能也是不同的);而同一个原始值的哈希值,是很有可能变动的。比如,操作系统升级、Swift 运行环境升级等等因素,都有可能让基于 Swift 编写的哈希值变更。

主要的麻烦是,产品已经发出去了。要升级,必须保证已有用户的已有数据不受影响,这个挑战是非常大的。还好当时自己在数据库中冗余保留了原始数据,还有机会根据原始数据重新生成有唯一性的值,比如 MD5 值。

哎,再骂一次当年的自己,怎么那么年轻…