• 有,不多。广州游戏公司用的比较多。有些 im 也是用 erlang,比如去哪的 im,比如我们。

  • 关于使用 Postgres 的疑问 at 2019年01月21日
  • 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 树似乎要村两次?

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

    被发现了…

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

    我看错人了…不好意思…

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

    嗯,都是类似的问题。bloom filter 还有一个经典的应用是过滤弱密码。bloom filter 可以把很多的数据都“存”在内心里,查起来快,redis 就 bloom filter 的插件。

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

    不是问 B+ 树是什么,问是问怎么做拼写检查。

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

    B+ 树要怎么用?

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

    可不可以这么理解?减熵是目的,微服务是手段?

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

    Trie

  • Ruby 2.6.0-rc1 已发布 at 2018年12月20日

    看这个 slides Guild Prototype - RubyKaigi 2018,Guild 的性能似乎没有想象中好。。。感觉到 prod ready 还要一段时间。。。

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

    最重要的还是 清晰划分各个模块的职责,划分不好,一样是一团粥。 比如会有这种注释出现,由于 A 系统做了 xxx,所以在 B 系统,我要这么 xxx。。。

    如果微服务做的不完善的话(有的公司没有那么多人力来做),同样会有 A 服务拖垮了 B 服务的情况。。。

  • 这个是怎么测试的?Stack Overflow 没看到相应的信息啊。

  • actioncale 有服务器发起的 ping,把这个调小了应该就可以了。

  • Erlang 源码阅读 -- scheduler at 2018年12月03日

    线程切换大体是这么回事,不过 nio 不一样,nio 是 IO 多路复用,有单独的线程 (ActionCable、nginx) 去做 select 操作,或者用 fiber 去做 (midori)。

    再一个要了解可能的瓶颈在哪,ActionCable 是 callback 模式,IO 还是同步的,一旦有慢查询,所有 ws 连接时延都会上来。

  • 一般赚钱了,才会出来说。赔钱了就不出来说了。

  • 哈,可能是 master 的原因,thx again。

  • thx,第一个跑 demo 跑不起来,就放弃了…

  • 欢迎入坑,其实 Elixir 挺好的。Erlang 语法太个性了。

  • 哈哈,是这样的。如果 process 有异常的话,整个程序都会挂掉。不过处理起来也比较容易,执行的时候 catch 所有的异常就可以了,有异常,直接让 process 挂掉就可以。

    moitor 和 link 其实也可以实现。process resume 之后的状态如果是 dead 的话,这个 process 有 monitor 的话,就发 EXIT 消息就可以了。

    这些问题有想过,不过都没去实现。。。我目前觉得异步 I/O 是缺少的最关键的 feature。

  • erlang 的调度是 cpu 时间片的

    这个是怎么得到的?The beam book 里写的是根据 reductions 做的,而 reductions 简单来说,是方法调用次数。OTP 里也能找到 erts_current_reductions 之类的方法。