complete_system The requirement for auto complete system should be: Lightening fast reads. When users type in keywords, the service responds in a very fast way. Facebook found that an autocomplete needs to return s 2022-12-11 #system design
chat_system IM 系统的历史传统的消息系统是推送消息,不进行持久化,即便是传递离线消息,当接收方收到了发送方的消息之后,也会从数据库中删除对应的消息。在传统的IM系统中,没有消息回溯的能力。 现代的消息系统中,消息是先存储后同步。消息存储库保留全量的会话消息,主要用于支持消息漫游(消息的离线推送)。消息同步库保存的是所有未同步到接收方的消息,如果接收方在线,则这是一个更优的同步路径,消息能够直接传递到接收方, 2022-12-11 #system design
troubles_in_distributed Faults & Partial Failures对于单机系统来说,正常情况下,相同的程序执行结果都是一致的,一旦CPU执行失败就会以Crash 的方式返回错误;(Deterministic) 而在分布式系统中,如果一个操作需要涉及多个节点,可能会出现部分节点正常而部分节点异常的情况。由于网络延迟的存在,Client 有时候并不知道在某个节点上的操作是否成功或者失败了。(Non-Deter 2022-11-15 #Distributed System #DDIA
refactoring Bad Smells in codeLong FunctionIf you have a function with logs of parameters and temporary variables, they get in the way of extracting. Extract FunctionLooking at a fragment of code and figuring out 2022-11-03 #Refactoring #Engineering
interview-guide 程序员面试了解面试流程第一步:通过初筛,获得面试资格这一阶段,最重要的就是写好简历。大多数程序员简历被挂不是因为他们做的项目不行或者能力不行,而是因为简历中对于曾经做过的Project包装不到位。关于如何写好简历,可以参考YangShun大佬的: step-by-step guide here on software engineering resume preparation。 在面试前通常会有 2022-11-03 #Interview
stream-processing Stream ProcessingBatch Processing : The Principle behind MapReduce 流处理与批处理任务不同点: 批处理任务通常都是离线任务,它要求输入是有限的,比如使用MapReduce任务进行排序,则要求文件中已经完整保存了所有需要被排序的 item。而流处理的任务通常都是无限的,比如:用户的行为记录,消费记录,这些数据每时每刻都在产生。 如 2022-11-03 #Distributed System #Big Data
Scalable SQL and NoSQL Data Stores Motivated by Web 2.0, the application was designed to support thousands of millions of users write and read concurrently. In contrast to traditional DBMS, NoSQL accepts BASE when designing, which mean 2022-10-04 #Distributed Storage #NoSQL #RDMS
Distributed Lock IntroductionScenario Distributed locks are a very useful primitive in many environments where different processes must operate with shared resources in a mutually exclusive way. Developers want to en 2022-06-10 #Distributed System #Distributed Storage #NoSQL
SegmentQuery 区间问题QuickView读者可以自行思考一个问题:对于一个数组 a,如果我想对 a 的进行以下三种操作,在不使用本文数据结构的情况下,暴力算法的时间复杂度为多少: 单点修改,区间查询:将第x个元素加k,求出 [x, y] 的区间和。 区间修改,单点查询:将 [x, y] 区域内的元素加k,并且求出第$ i (x <= i <= y) $个元素的值。 区间修改 2022-06-06 #Algorithm #High Advanced DS
记一次面试算法题准备过程 我面试之前是如何准备算法题的先说说笔者自身的情况: 北航本 / 新加坡Top2 硕 本科(毕业后)的时候先后在腾讯和字节跳动实习 + 转正工作,经历过大大小小的面试总计大概10来场吧,选择性的粘贴一下之前的面经,可以感觉到不同的公司有不同的面试风格: 阿里支付宝:比较偏重于Java世界,对于New Grad来说八股文的考察比较多,但很基础,电话面试。 蚂蚁面经 腾讯CSIG:比较 2022-06-03 #Leetcode #Interview