- 博客(9)
- 收藏
- 关注
原创 Design Uber
我需要scale horizontally,增加更多的server,那么就要sharding based on geo,如果你想得到在边界上的点周围的司机,可能需要query multiple shards.一起放到环上,然后数据放在哪里取决于向下面找到的那个服务器的值。客户端也可以有一些优化,算法可以提前计算那些人到哪里,比如说速度比较低的时候,那我send的速度就慢一些,更高阶的方法是,a,b,c 映射成a0, a1, a2, 这3个服务器对应300个环上的点,然后数据向上。
2024-08-30 04:59:57 464
原创 get Top k YouTube video
为什么我们不写进db?因为读写操作没有in-memory system 快,在我们有很多很多的video的时候这个system 更快。在 12:01 时,重新计算目标时间(11:01),找到对应的新偏移量(可能是 9010),从这里继续消费。读取到偏移量 9500 时,发现消息时间已经超过 11:00,暂停消费。"上升沿"消费者:从最新偏移量(比如 10000)读取新消息。假设我们有一个1小时的时间窗口,当前时间是 12:00。找到 11:00 对应的偏移量,假设是 9000。计算目标时间:11:00。
2024-08-26 08:08:14 611
原创 [字符串高频题]leetcode 227 Basic calculator II
所以我们需要一个数据结构去维护这个性质(hashmap)。算法思路是扫描数组先把数放进一个栈,把操作符放进另一个栈,每当遇到操作符,并且操作符栈顶元素的优先级要比我当前元素大了或者和当前元素一样,那需要优先计算(因为你从左到右扫描数组),pop出来进行计算。首先看到这道题我们需要知道。
2024-08-24 03:50:28 116
原创 计算机网络知识(不定更新)
TCP:有连接,保证顺序,提供超时重传, 保证可靠性,首部字段大,流量控制和拥塞控制。UDP:无连接,不保证顺序,尽量交付, 首部字段小。因为3次足够可靠,多次的话会消耗资源。
2024-08-23 09:00:59 187
原创 Design web crawler
http://example.com and http://www.example.com我不希望他们被重复访问,办法就是说我们可以在db中增加一条hash index(对内容的),这样的话每次我都去db里去看一下这个东西有没有已经被访问,访问过了那就不用访问了。obey the rule,我需要一rate limitting.我们可以利用redis来保存每一个clawer server发送的请求次数, 可以用sliding window算法来确认每个domain发送的请求数。
2024-08-23 06:57:54 539
原创 [字符串高频题]Leetcode 1249
思路:首先遇到括号匹配的题,肯定是栈的问题。一般这种问题都是,左括号进去,右括号进去之后pop出来。我肯定是要知道那些不符合规定的括号在哪里。那自然而然栈里面我需要存放下标,对于不符合规定的右括号,我入栈的时候就要判断然后要mark一下,对于不符合规定的左括号就是留在栈里面的那些元素。那我第二遍扫描的时候肯定就要替换成某个marker, 最后把marker去掉,完事儿。题目意思:给定一串字符串,有左括号和右括号,输出任意能匹配上括号的字符串。
2024-08-21 14:13:43 145
原创 [字符串高频题]Leetcode 93
思路:dfs遍历整个字符串,对于每一层dfs来说,记录当前一层的起始位置,记录当下已经被切成几分。退出条件是当切分的数量 > 4就退出,当前的起始位置等于字符串的最后一位的下一位并且切分的数量等于4的时候,就退出。对每一层dfs来说,需要for循环当前位置以及当前位置的3位,判断这几位是否满足0<=255并且不能存在011的情况,如果满足,那么记录下来进入下一层循环,需要回溯。注意:由于我判断结束的条件是字符串的最后一位的下一位,所以我需要for循环的遍历中小于等于字符串的长度,不然会导致问题。
2024-08-21 13:47:48 284
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人