- Видео 15
- Просмотров 6 014
湾区程序猿
США
Добавлен 9 июл 2014
Welcome to our channel, where we share our passion for computer science and our love for learning with you. Our goal is to make computer science accessible and enjoyable for everyone, whether you're a beginner or an experienced programmer.
We offer a wide range of content, including tutorials, tips and tricks and book/paper sharing. Our videos cover various topics such as programming languages, artificial intelligence, machine learning, web development, distributed system and more.
Our community is welcoming and supportive, and we're always happy to answer your questions and provide feedback on your coding projects. So, whether you're a student, a professional, or just curious about computer science, join us and let's learn together!
We offer a wide range of content, including tutorials, tips and tricks and book/paper sharing. Our videos cover various topics such as programming languages, artificial intelligence, machine learning, web development, distributed system and more.
Our community is welcoming and supportive, and we're always happy to answer your questions and provide feedback on your coding projects. So, whether you're a student, a professional, or just curious about computer science, join us and let's learn together!
Machine Learning Design Interview: Trend of Sparse Features In Recommendation System
In this video, we would discuss about some recent trend in recommendation system, especially in the era of LLM, how semantic embedding generated via LLM could be integrated into recommendation system; or how some techniques widely adopted in LLM could be used for recommendation system:
- Recap on what is sparse feature and how they are used in model
- How to share embeddings between different domains
- How to combine semantic embedding and collaborative embedding
- How to better assign sparse ids to index within embedding lookup table
Blog: pyemma.github.io/Machine-Learning-System-Design-Sparse-Features/
- Recap on what is sparse feature and how they are used in model
- How to share embeddings between different domains
- How to combine semantic embedding and collaborative embedding
- How to better assign sparse ids to index within embedding lookup table
Blog: pyemma.github.io/Machine-Learning-System-Design-Sparse-Features/
Просмотров: 223
Видео
System Design - Online Chess Game
Просмотров 419Месяц назад
文字版请参考这篇 Blog: pyemma.github.io/How-to-design-online-chess-game/ 在今天的视频中,我们讨论如何 design online chess game, 主要涉及下面几点讨论 - game state 的表示方式,record/final state 派和 event sourcing 派 - stateful game server 和 pub/sub based 架构的区别 - 如何处理 concurrency, single leader decision, vector lock, lease - 如何处理 failure, snapshotting, replication, coordination service 等等
北美如何清洗家用 tankless 热水器
Просмотров 4822 месяца назад
今天给大家介绍一下如何清洗 tankless 热水器 如果你突然发现热水要等很长时间才能出来的时候,那很可能是你的热水器需要清洗了!在今天的视频里面,我就将如何清洗 tankless 热水器的详细步骤介绍给大家。视频中使用到的清洁套装,在 Amazon 或者 HomeDepot 都能买到,也很便宜!
高效工作学习工具推荐 - Logseq
Просмотров 3443 месяца назад
向大家推荐一款我最近一直在用的笔记软件: Logseq - 首先这是一个开源的免费软件 - 支持 Markdown 的语法 - 能够快速的 tag 知识 block, 同时基于 tag 快速的创建页面帮助进行主题整理 - 用来阅读 PDF 非常的方便,能快速引用 highlight 的部分
Machine Learning Design - Feature
Просмотров 3784 месяца назад
在这个视频里面,主要介绍了在 machine learning design 面试中,针对 feature 所能讨论的一些点,包括 - Feature 种类 - Feature processing - Feature optimization 等等 文字版可以参考 blog: pyemma.github.io/Features-in-Recommendation-System/
System Design - Auction System
Просмотров 1,7 тыс.7 месяцев назад
具体的文字版可以参阅这个 blog: pyemma.github.io/How-to-design-auction-system/ 在这一期的视频里面,我们讨论一下如何 design auction system, 类似 eBay 上面的拍卖系统 我们详细的讨论了如下的功能 - highest bid 是如何 maintain 的 (stateless vs stateful) - highest bid 是如何 broadcast 给所有的在 auction 里面的 user 的 (live comment) - auction 如何是计时被 execute 的 (cron job scheduling) 涉及的到一些其他的比较 generic 的 component - 如何采用双层架构来 manage billion 级别的 live connection 以及 message...
Leetcode 363: Max Sum of Rectangle No Larger Than K
Просмотров 8010 месяцев назад
Leetcode 363 的 Python 解法,包括了 - Brute force solution - Prefix sum optimization - 2D to1D compression prefix sum binary search sorted list 使用 Python 的同学要注意不能用 python 自带的 list 以及 bisect 里面的 insort ,因为这样 maintain sorted list 的时间复杂度会退化到 O(n) 参考代码: gist.github.com/pyemma/e2f0fc466c70642b69bcb1e663355361
DDIA Chapter 11 Stream Processing I
Просмотров 29911 месяцев назад
在这一章节中,我们主要介绍了流处理里面的重要的组件: 消息队列 (Message Broker/ Message Queue) - 讲解了选择 Message Queue 的时候,有哪些性质是我们需要注意的; 比如是 Pull 还是 Push 模式,message 时候会被持久化等 - 简要介绍了业界比较广泛的两种 Message Queue: Rabbit MQ 和 Kafka,以及它们各自的性质特点 - 从四个业界公司的 Engineering Blog 中摘取了他们是如何使用 message queue 博客:pyemma.github.io/DDIA-Stream-Processing-I/ 参考资源 * Rabbit MQ: www.rabbitmq.com/tutorials/amqp-concepts.html * Kafka: www.confluent.io/blo...
DDIA Chapter 9 Distributed Transaction
Просмотров 239Год назад
在这一讲中,我们主要介绍了 distributed transaction 的几种方法: - 2PC - SAGA - TCC 最后,我们用 golang 的 gosql2pc 库,以及通过 docker 来模拟一个分布式存储的环境,给大家展示了一个经典的银行转账的应用场景是如何使用 2PC 来实现分布式事务的
DDIA Chapter 7 Transaction
Просмотров 271Год назад
在这一讲中,我们主要介绍单机情况下的 transaction, 也就是事务。主要包含了以下的内容 * ACID 性质的简单讲解 * 几种若隔离性: read committed, repeatable read (snapshot isolation), prevent lost update * write skew 以及其产生的原因 * serializable isolation 以及实现的具体方法: exact serial execution, 2PL, serializable snapshot isolation 有一些内容在视频中没有详细展开,推荐大家阅读下面的资料来了解 * Redis transaction: redis.io/docs/manual/transactions/ * Predicate lock: www.scs.stanford.edu/nyu/...
DDIA Chapter 6 Sharding Part 2
Просмотров 172Год назад
在这一讲中,我们着重讲解了 DDIA 第六章的后半部分,同时分享了一些业界关于 sharding 的高质量 engineering blog * 在 sharding 的情况下,我们如何处理 secondary index (global vs local) * 如何处理 hotspot (名人问题) * Service Discovery (Request Routing) * Pinterest 是如何 shard MySQL 的 * Slack 是如何基于 Vitess 来 migrate 他们的 sharding solution 从而更加的 scalable * Quora 的 sharding story * Discord 是如何基于 Cassandra 来 shard 他们的数据的
DDIA Chapter 6 Sharding Part 1
Просмотров 286Год назад
这一讲主要介绍了 DDIA 第六章内容的前半部分,涉及了 * Sharding 的基本概念,比如什么是 sharding,什么时候需要 sharding,sharding能带来什么样的好处 * Sharding 的两种方式:key range 和 hashing * 在 Hashing 的方式中,如何处理 key 与 shard, shard 与 server 之间的 mapping关系 * Consistent hashing 的讲解
DDIA Chapter 5 Replication
Просмотров 963Год назад
In this video, we'll be exploring the main concepts and ideas related to replication, which are presented in the 5th chapter of DDIA. Besides, we will also share some excellent system in industry and highlight what's their choice of replication.
首先鼓掌,博主分析的很全面哈哈!学习到很多!关于message queue的方案,可能可以细节的提一下是什么样的pub/sub,可以帮助分析trade off,比如是kafka这种message queue,那么它需要一个consumer service才能写向db, 以及如果一个game一个topic其实对kafka来说代价是比较大的,而且only two player will listen to one topic。如果思考的是redis pub/sub channel这种in memory的模式, latency很小,类似real time chat, peer to peer communication, 但问题是redis or channel crash消息就没了,对于chess来说可能关系不大client retry same move就行,如果client crash了,就需要单独比如在Redis存game state或者是back up every move (can also used for other analysis purpose)之类的 etc...一些个人思考哈
非常感谢您对 message queue 这个方案的补充!都是非常有用的信息!
为什么Game Server不能做成stateless呢?既然所有的data都在DB和cache里面
stateless 也是一种可以考虑的方法,相比较 stateful 的方法就是针对 concurrency 的处理稍微复杂一些;比如 player A revert 然后 player B make a move, 这两个 request 被两个不同的 server 去处理,都同时尝试去改 DB/Cache, 需要额外的机制来进行处理了
方便share用message queue做类似游戏的例子么 感觉作为游戏而言第二种event based有点怪怪的 但是又不知道哪里怪 😂
嗯嗯,这个 design 我在业界没看到过真实使用的,后来跟做 MQ 的朋友聊了一下,感觉这种方案的 latency 会很搞难以难以保证 realtime 游戏的需求,感觉可能不是一个非常好的 design
讲的挺好,但是语速太快,吐词不清晰。我是放0.75倍速听的。这是头一个我用低倍速听的SD. 我老听你说bw service,你是想说bid update service吧?
感谢 feedback, 我下次录制的时候注意一下吐词和语速
嗯嗯是的
为啥viewer和bidder连接不同的service?viewer可以分分钟变成bidder啊
是这样的,这里的 viewer 也可以变成 bidder, 他们如果下 bid 的话就会给 auction service 发去 request, 但是无论 bidder 还是 viewer 都主要是通过 bid update service (本质上是一个 websocket service) 来获取最新的 bidding 的信息
Hi Is it possible for you to share the knowledge in English. I have already gone through your blogs on Design Auction and websockets.
感谢up主,学会了清洁家用热水器,就差一个家了🤣
猿总变壮了👍
還好...原本放棄 notion 改 logseq 後來放棄,沒 notion 好用 當你最終要管理知識的時候仍然需重視命名與目錄管理,logseq 只是讓你暫時逃避知識管理而已 相當於我一直在notion 開新文件而已,重點是你有沒有事後二次管理當初的紀錄,若沒有 logseq 就也是筆記的無用堆疊而已
反云的另一个notes app:obsidian也很popular,挺多讨论从notion移去obsidian之类的,block为first citizen我感觉思路有返璞到one note,其实还可以做一期这几个之间的对比测评,我个人是notion的用户因为community对markdown也很重要哈哈
我个人是感觉 notion 里面的功能对于我自己来说有些太多了,想用一个功能相对简单的应用来让我更好的 focus 在记录和整理上; 就类似 Python 和 Go 语言一样,在 Python 里面实现一个功能可以有 5 种不同的写法,但是 Go 里面只有一种,反而有助于解决我的选择困难
@@codingmonkey233 哈哈嗯有道理的,不同的思路会指向不同的选择,我就时常因为go只支持一种写法感到郁闷哈哈哈...我的选择是一个app能够支持各种不同形式的记录,包括random idea, organized notes, planning,sketch etc就不用为了不同的目的用不同的软件
感觉有一个可以讨论的点: 这里bid update service如果也是round robin或者randomly assign SSE connections的话, 意味着每个bid update service有可能会需要处理dispatcher的每一条信息, 因为一个bid update service可能handle很多不同的auctions. 根据auction和bid update service的数量, 可以讨论一下shard SSE connections according to auction ID, 这样相同的auction会集中在几个bid update service上. 欢迎大家分享看法
嗯,非常感谢分享; 这里的确是一个可以和面试官讨论的点,使用 round robin,我们可以避免某个 bid update service 被 overload, 但是代价就是失去了 colocate 的性质; 如果 shard by auction id, 我们可以减少 internal 的 communication (因为只有一个 bid update service 会 subscribe 一个 auction), 但是可能会出现 hotkey 导致 overload; 这里关键的点在于能和面试官交流分析不同的情况就好
@@codingmonkey233 感谢回复! 视频信息量很大, 很有帮助! 在 52:48 有一点我不是很清楚; 视频中提到single hot auction key可以被sub partition出去, 这里指的是类似message queue 里面处理celebrity key那种吗, i.e., append random numbers (e.g. 0 ~ 9) to the hot key so they end up in different partitions. 但是数据库里面感觉实际不是很好操作, 比如这个题要确定最高bid还是需要所有partition的信息. 我个人经验的话这种hot write key其实没有特别好的处理方法, 只能从写入端考虑, rate limiting之类的. 具体这个问题也许可以考虑前面提到的batch的思想, 我觉得很好, 比如在auction service 里面 in memory batch 100ms or 1000 bids, whichever happens first, 提前reject掉一些低的bid, 只取最高的bid尝试写DB.
@@oolong922 嗯是的,我这里的一个想法就是你说的这种通过 append 一些 suffix 来把 partition 进一步 shard 出去从而避免 hotkey,不过这种做法就是会出现你提到的 read amplification 的问题; 利用 rate limit 也是一种思路,最近我在参考一些国内的“秒拍”架构看看我们有什么可以借鉴学习的部分
楼主 怎么认识你啊? 我也在Sunnyvale,对技术感兴趣,看到你的分享很赞!
可以周末在 Sunnyvale Philiz 约个咖啡线下交流学习
支持支持,二刷了
感谢!会持续带来更多的内容!
给大佬点赞
欢迎交流讨论!
请问下23:00讲的那个单词叫什么?lease还是list?听懂了是类似于一个version number的东西,但是没听清那个单词叫什么
是 lease,这个是一个比较经典的用来解决 prevent stale write to cache 的方法 (同时也可以解决 herd effect),可以参考这篇 Facebook 的 memcached paper: www.usenix.org/system/files/conference/nsdi13/nsdi13-final170_update.pdf 的 3.2.1
也可以搜下乐观锁和ABA问题,很经典的,也很好理解
厉害!👍
感谢支持,希望能帮忙多多宣传
非常欣赏你做出的视频!输出的同时其实也是强化自己学到的知识,感谢你对华人团体做出的贡献!
感谢支持,从你们的mock视频也学习到了很多,共勉!
很清晰 赞!
感谢支持!有时间来邀请你讲讲 LLM Web Application 开发
大家都注意一下素质,要3连
In master we trust.
thumb up +1
厉害
厉害!加油!👍👍👍
后面声音怎么变小了?
@@infinitemountains5668 感谢支持,好像是我录的时候耳机出了点问题
感谢老师,加油!
牛逼❤