• Rails 6.0.0 beta1 发布 at 2019年01月19日

    刚好有个项目要连多个数据库。

  • 然后 lisp 粉各种瞧不起大 JavaScript

  • Clojure 是这种

    m = {}
    m = (assoc m {:a => 1})
    

    写起来容易,状态变化不那么清晰。

    Erlang 的话是,

    M = {}
    M2 = maps:update(a, 1, M)
    

    写起来麻烦,但状态辩护会更清晰。

  • 从上帝视角看微服务 at 2019年01月02日

    👍

  • 从上帝视角看微服务 at 2018年12月29日

    我们有一段时间要搞 grpc,然后 grpc 死活搭不起来。我跟同事说,为什么非要等到 grpc?为什么不先切分服务?调用用什么不可以?grpc 好了,换一下就可以了。但就是说不通。

    我一直觉得一个模块,对外提供服务、屏蔽实现细节,就可以了。至于是否是微服务只是表现形式罢了。

  • 电子版据说要等一段时间。

  • 从上帝视角看微服务 at 2018年12月25日

    感谢回复 👍 👏

    还好很多厂子喜欢重复造轮子 😄 ,而且同样的东西,大家理解程度不一样,结果也会不一样。

    我明白微服务是很好的东西,解决了很多问题。但实践起来又有很多无奈。。。

    我们最近刚好有个市场运营需求,用消息队列解了耦。但由于部署环境网络不连通,只好用 http 再把消息传出去。。。然后 rpc 又没时间搭。。。不过消息队列还是有必要的,市场想法多,如果让他们的需求一直入侵主代码,会越来越难维护。而且市场的需求挂掉话也不应该影响主项目。

  • 从上帝视角看微服务 at 2018年12月25日

    感谢回复 👍 👏

    还好很多场子都喜欢重复造轮子 😄 ,而且同样的东西,大家理解程度不一样,结果也会不一样。

    我明白微服务是很好的东西,解决了很多问题。但实践起来又有很多无奈。。。

    我们最近刚好有个市场运营需求,用消息队列解了耦。但由于部署环境网络不连通,只好用 http 再把消息传出去。。。然后 rpc 又没时间搭。。。不过消息队列还是有必要的,市场想法多,如果让他们的需求一直入侵主代码,会越来越难维护。而且市场的需求挂掉话也不应该影响主项目。

  • 拼写检查的四种实现 at 2018年12月25日

    这篇文章写的不怎么样(好吧,我偷懒了,没有再改改。。。

    Hash 是准确的,准确的代价就是需要更多的存储空间。存储空间的代价有两个,一个是存储空间本身,一个是要分几次才能拿到内存里。

    BloomFilter 是一个不准的 hash table。

    比如输入一个 key,经过 hash function,得到一个 index,将 arr 的 index 设置为 1,既 arr[index] = 1

    查找的时候,将输入通过 hash function 转化为数组的 index,如果 arr[indexe] 存在,就认为这个值插过了。

    hash function 有一定的冲突的概率,比如 "abc" 和 "ccc" 通过 hash function 的到的 index 可能是一样的,就会误判。

    伟大的计算机先哲,尼古拉斯赵四曾经说过,如果一次 hash 解决不了,就 hash 两次,所以 BloomFilter 一般会用多个 hash function。

  • 拼写检查的四种实现 at 2018年12月24日

    我没想到 B 树要怎么做拼写检查。。。

    B 树和 Trie 不一样的地方是,Trie 没有深度约束,B 树有。用 B 树的话,就要把 com(组件对象模型),cool,computer 都存到叶子上。。。

    B 树还有一个 order 的约束,在单词上,order 只能为 26,那就是 13 到 26,空间也会有大量的浪费。

    像 com(组件对象模型),computer 这种,在 B 树似乎要村两次?