短链的实现

问题的起因是这个: 这是我的刷题日志。当时是 2017.3.4 号,做了这道题之后,一直想写下是否有更好的解题思路。但是一直没(lan)有(lan)时(lan)间(lan)。 正巧今天在复习数据结构的时候看到了 LZW 压缩器。这就可以拉出来好好扯一下了。 其实现在流行的,或者网上的标准操作套路都是使用 hash 的方式,将其对应到几个短的链接上,但是因为毕竟这个属于 hash 映射,在长度变短的情况下,始终会有冲突的危险。所以也就带来了 rehash(cpu 开销和内存开销) 和 hash 表最坏情况(退化为链表结构,查找效率退化成 O(n))的风险。 比如常见的,使用 md5 摘要一把,然后将结果存到一个 hash 表中,这个 hash 表是个抽象的概念,他可以使具象化的数据库,Key-Value Store,或者仅... [阅读全文]

MySQL的一个坑

PS:其实也不是坑吧,主要是之前没有关注这个东西 首先看一下坑的由来: 昨天运营那边反馈过来一个问题,就是手机端商品存在重复.然后开始排查,手机端的商品总数和PC上是一至的,但是手机端存在重复的商品,就意味着有的商品没有显示.已开始以为是缓存问题,在更新select的时侯,阿润老师的排序crond更新了排名,导致问题,但是后来取消了缓存,发现问题还在. 最后问题定为在数据库上,我执行了如下的sql语句(也是常用的分页代码): SELECT * FROM `a`.`b` WHERE `ab` <= 11 AND `ac` >= 12 AND `status` = 0 AND     `showType` IN (0, 2) ORDER BY `s` DESC LIMIT 100,20; S... [阅读全文]

MySQL的锁分析

首先,我就先假设读者们都是了解数据库隔离级别的人,对所谓的RR,RC,RU,Serializable都是耳熟能详的。 如果不明白,可以看看这几篇文章,写的都很清楚,详细。 数据库隔离级别 乐观锁和悲观锁 但是,知道了这些概念,我们怎么去优化我们的SQL语句呢。其实还有一小段路。 比如说,现在有这么两个SQL语句: select * from t1 where id = 10; delete from t1 where id = 10 MySQL会采用什么样的方式进行加锁处理,加什么样的锁? 某种情况下,这个问题可以这么回答: 对于SQL1,MySQL不进行加锁处... [阅读全文]