后端开发心法提升秘籍
文章平均质量分 88
程序员仿佛经历了一次技术的量变到质变,书中深邃的见解和实用的技巧像是一把钥匙,打开了高级编程的大门。每一页都充斥着智慧的火花,让人在阅读的过程中不断有豁然开朗的感觉。这不仅是一次知识上的升华,更是一场思维方式和解决问题方法上的革命。程序员们通过这本书,就像是找到了一位卓越的导师,指引他们跨越技术鸿沟
后端工匠之道
欢迎来到"后端工匠之道",我是禾乃儿老师,一个热衷于探索Web后端技术的工程师。在这个博客中,我将分享我的技术洞察、项目经验和行业见解,带你深入探索后端开发的无限可能。
我是一位注重代码质量、性能优化和系统设计的后端工程师。我的使命是通过创造性的编码和创新性的解决方案,不断推动后端技术的边界。在"后端工匠之道"这个空间,我将分享我在构建可靠、高效和可扩展Web应用程序方面的见解,以及面临的挑战和解决方案。
本人专注于,数据库优化与设计,RESTful API 构建,服务端性能调优,微服务架构实践,高可用分布式系统搭建,安全性与身份验证
让我们一同探索后端的奇妙世界,打磨我们的技术,成为后端工匠
展开
-
系统设计访谈-业内人事指南 《System Design Interview-An insider‘s guide》全书中文翻译
作者简介:Alex Xu是一位经验丰富的软件工程师和企业家。此前,他在Twitter,苹果,Zynga和甲骨文。他在卡内基梅隆大学获得硕>士学位。他热衷于设计和实现复杂的系统。如果您想在新章节可用时收到通知,请订阅我们的电子邮件列表:https://bit.ly/3dtIcsE欲了解更多信息,请联系systemdesigninsider@gmail.com编辑:Paul Solomon本文仅个人翻译学习引用,没有其他商业用途。原创 2023-04-19 13:46:17 · 4853 阅读 · 2 评论 -
CHAPTER 1: 《SCALE FROM ZERO TO MILLIONS OF USERS》第1章 《从零扩展到百万级用户》
缓存是一个临时存储区域,用于存储昂贵响应或频繁响应的结果,内存中已访问的数据,以便更快地处理后续请求。在ifgure1-4中,添加负载均衡器和第二个web服务器后,我们成功了没有解决故障转移问题,提高了web层的可用性。从简单的系统开始,所有东西都在一台服务器上运行,Figure1-1显示了单个服务设置的示例,其中所有的内容都在一台服务器上运行,web,app,数据库,缓存等。的好处拥有独立的缓存层包括更好的系统性能,减少数据库的能力工作负载,以及独立扩展缓存层的能力。他们的讨论是超出了本书的范围。原创 2023-04-19 17:09:18 · 2170 阅读 · 0 评论 -
CHAPTER 2: 《BACK-OF-THE-ENVELOPE ESTIMATION》 第2章 《初略的估计》
这是一个您(服务提供商)与您的客户之间的协议,以及本协议正式定义服务将交付的正常运行时间级别。根据杰夫·迪恩的说法,谷歌高级研究员,“粗略的计算是你使用结合思想实验和常见的性能数字,以获得良好的感觉,哪些设计能满足你的要求?谷歌的一位软件工程师开发了一个工具,将迪恩博士的数据可视化。为了得到正确的计算,关键是要知道数据体积单位采用2的幂。1秒= 10^-9秒 1µs= 10^-6秒= 1,000 ns 1毫秒= 10^-3秒=1,000µs = 1,000,000毫秒。粗略估计是关于过程的。原创 2023-04-21 11:27:09 · 975 阅读 · 0 评论 -
CHAPTER 3: 《A FRAMEWORK FOR SYSTEM DESIGN INTERVIEWS》第3章 《面试系统设计框架》
你刚刚获得了梦寐以求的理想公司的现场面试机会。招聘协调员给你发送了当天的日程安排。浏览列表,你会感觉很好直到你的目光落在这个面试环节——。系统设计面试通常很吓人。它可以像“设计一个非常知名的产品X?”一样模糊。这些问题含糊不清,似乎过于宽泛。你的厌倦是可以理解的。毕竟,谁能在一个小时内设计出一款受欢迎的产品呢 这需要数百甚至数千名工程师来建造。好消息是没人指望你这么做。现实世界的系统设计非常复杂。例如,谷歌搜索看似简单;然而,数量支撑这种简单性的技术确实令人惊讶。原创 2023-04-21 15:01:55 · 871 阅读 · 2 评论 -
CHAPTER 4: 《DESIGN A RATE LIMITER》第4章 《设计一个限速器》
速率限制可以使用不同的算法来实现,每种算法都有不同的特点尽管本章不关注算法,但理解它们也很重要高级有助于选择适合我们使用的正确算法或算法组合用例。在本节中,我们将首先回答有关速率限制规则的问题,然后继续讨论处理速率限制请求的策略。但是,我们的示例中使用了人类可读的时间表示形式更好的可读性。速率限制可以使用不同的算法来实现,每种算法都有其优点和缺点,面试官和候选人之间的互动有助于我们理清限制速率的类型都在哪些方面进行设置。在HTTP世界中,速率限制器限制允许的客户端请求的数量在指定的时间段内发送。原创 2023-04-21 18:03:26 · 837 阅读 · 0 评论 -
CHAPTER 5: 《DESIGN CONSISTENT HASHING》 第5章 《设计一致的哈希》
为了实现水平扩展,有效且均匀地分发请求/数据是很重要的在服务器上。一致散列是实现这一目标的常用技术。但首先,让我们深入了解一下这个问题。原创 2023-04-22 23:27:59 · 882 阅读 · 2 评论 -
CHAPTER 6: 《DESIGN A KEY-VALUE STORE》 第6章 《设计一个键值存储》
键值存储(也称为键值数据库)是一种非关系数据库。每一个唯一标识符存储为与其关联值的键。这种数据配对称为“键-值”对。在一个键-值对中,键必须是唯一的,与该键相关联的值可以是通过密钥访问。键可以是纯文本或散列值。出于性能考虑,短键效果更好。钥匙看起来像什么?原创 2023-04-23 14:08:44 · 925 阅读 · 0 评论 -
CHAPTER 7: 《DESIGN A UNIQUE ID GENERATOR IN DISTRIBUTED SYSTEMS》第7章 在分布式系统中设计一个唯一的id生成器
在这一章中,你被要求在分布式系统中设计一个唯一的ID生成器。你的首先想到的可能是使用带有auto_increment属性的主键数据库。但是,auto_increment在分布式环境中不起作用,因为a单个数据库服务器不够大,并且跨多个服务器生成唯一的id具有最小延迟的数据库具有挑战性。原创 2023-04-24 13:21:03 · 503 阅读 · 0 评论 -
CHAPTER 8: 《DESIGN A URL SHORTENER》第8章 《设计一个url伸缩器》
在这一章中,我们将解决一个有趣而经典的系统设计面试问题:设计一个像tinyurl这样的网址缩短服务。原创 2023-04-24 15:47:13 · 1016 阅读 · 0 评论 -
CHAPTER 9: 《DESIGN A WEB CRAWLER》第9章 《设计一个web爬虫》
在本章中,我们将重点介绍网络爬虫设计:一种有趣而经典的系统设计面试问题。网络爬虫被称为机器人或蜘蛛。它被搜索引擎广泛用于发现网络上的新内容或更新内容。内容可以是网页、图像、视频、PDF文档等。网络爬虫首先收集一些网页,然后跟踪这些网页上的链接页面以收集新内容。图 9-1 显示了爬网过程的直观示例。开发网络爬虫的复杂性取决于我们打算支持的规模。它可以是一个只需要几个小时就能完成的小型学校项目,也可以是一个巨大的项目需要专门的工程团队持续改进的项目。因此,我们将在下面探讨要支持的规模和功能。原创 2024-01-17 17:18:50 · 1554 阅读 · 0 评论 -
CHAPTER 10: 《DESIGN A NOTIFICATION SYSTEM》第10章 《设计一个通知系统》
通知是必不可少的,因为它们让我们随时了解重要信息。它可能是关于 Netflix 上您最喜欢的电影的推送通知、关于折扣的电子邮件有关新产品的信息,或有关您在线购物付款确认的消息。在本章中,我们描述了一个可扩展的通知系统的设计,该系统支持多种通知格式:推送通知、短信、电子邮件。我们采用了消息队列来解耦系统组件。除了高层设计之外,我们还深入挖掘了更多组件和优化。可靠性:我们提出了一种稳健的重试机制,以最大限度地降低故障率。原创 2024-01-17 20:08:48 · 1104 阅读 · 0 评论 -
CHAPTER 11: 《DESIGN A NEWS FEED SYSTEM》 第 11 章:《设计新闻系统》
在本章中,您将被要求设计一个新闻提要系统。什幺是新闻提要?根据Facebook 帮助页面,“News feed 是中间不断更新的故事列表。您的主页。动态消息包括状态更新、照片、视频、链接、应用活动记录和喜欢您在 Facebook 上关注的人、页面和群组“[1]。这是一个流行的面试问题。类似的常见问题有:设计Facebook新闻提要,Instagram 提要、Twitter 时间线等。原创 2024-01-17 20:44:22 · 1007 阅读 · 0 评论 -
CHAPTER 12: 《DESIGN A CHAT SYSTEM》 第12章 《设计一个聊天系统》
在本章中,我们将探讨聊天系统的设计。几乎每个人都使用聊天应用进程。图 12-1 显示了市场上一些最受欢迎的应用。聊天应用进程为不同的人执行不同的功能。钉子非常重要降低具体要求。例如,您不想设计一个专注于当面试官想要一对一聊天时进行群聊。探索很重要功能要求。原创 2024-01-19 14:49:27 · 496 阅读 · 0 评论 -
CHAPTER 13:《DESIGN A SEARCH AUTOCOMPLETE SYSTEM》 第13章 《设计搜索自动补全系统》
当搜索谷歌或在亚马逊购物时,当您键入搜索框时,1或搜索词的更多匹配项会呈现在你面前。这个特性被称为自动补全、提前输入、按需搜索或增量搜索。如图13-1所示当输入“dinner”时,显示自动完成结果列表的谷歌搜索示例进入搜索框。搜索补全是许多产品的一个重要功能。这导致我们给面试的问题:设计一个搜索自动补全系统,也叫“design top k”或者“设计前k个最受搜索的查询”。原创 2024-01-19 15:39:27 · 1015 阅读 · 0 评论 -
CHAPTER 14: 《DESIGN YOUTUBE》第14章 《设计YouTube》
在本章中,你将被要求设计YouTube。这个问题的解决方案是可以应用的到其他面试问题,比如设计一个视频分享平台,比如Netflix和Hulu。YouTube主页如图14-1所示。YouTube看起来很简单:内容创作者上传视频,观众点击播放。真的是这样吗简单的?不是真的。在简单的背后隐藏着很多复杂的技术。让我们看看2020年YouTube的一些令人印象深刻的统计数据、人口统计数据和有趣的事实。从这些数据中,我们知道YouTube是巨大的,全球性的,并且赚了很多钱。原创 2024-01-19 16:19:35 · 1027 阅读 · 0 评论 -
CHAPTER 15: 《DESIGN GOOGLE DRIVE》第15章:《设计谷歌驱动器》
近年来,云存储服务如谷歌Drive、Dropbox、Microsoft OneDrive、苹果的iCloud已经变得非常流行。在本章中,你需要设计谷歌开车。在进入设计之前,让我们花点时间了解一下谷歌驱动。谷歌Drive是一个文件存储和同步服务,可以帮助你存储文档、照片、视频和云中的其他文件。你可以从任何一台电脑上访问你的文件,智能手机和平板电脑。您可以轻松地与朋友、家人和同事共享这些文件[1]。图15-1和图15-2展示了谷歌驱动器在浏览器和手机上的样子分别应用程序。原创 2024-01-19 16:53:16 · 886 阅读 · 0 评论 -
CHAPTER 16: 《THE LEARNING CONTINUES》第16章 《继续学习》
设计好的系统需要多年的知识积累。一条捷径是潜水进入真实的系统架构。下面是一些有用的阅读材料。我们强烈建议您关注共享的原则和基础技术。研究每种技术并理解其解决的问题是一项任务这是加强你的知识库和完善设计过程的好方法。原创 2024-01-19 16:57:52 · 546 阅读 · 0 评论