0 前言 系统设计问题是编程面试的重要组成部分,如果你想取得好成绩,就必须准备。在我的网站,分享了八股面试题时,也分享了一些系统设计问题,但粉丝们一直在要求更多问题,因为这个主题的确很难掌握,需要更多练习。我自己也收集了一些从朋友和同事那里获得的面试题,但为了这篇文章和自己的准备,我需要更多问题,然后我偶然发现了“深入系统设计面试”课程。这是一份优秀的资源,因为它不仅提供大量系统设计问题,还提供了
你可以在 Postman 中使用预请求脚本在请求运行之前执行 JavaScript。通过在请求、集合或文件夹的预请求脚本选项卡中包含代码,你可以执行预处理,如设置变量值、参数、header 和正文数据。你还可以使用预请求脚本来调试代码,例如通过将输出记录到控制台。 1 预请求脚本示例 你在集合中有一系列请求并按顺序运行它们,例如在使用 [集合运行器] 时。 第二个请求依赖于第一个请求返回的值。
1 什么是GraphQL GraphQL是一种API查询语言,由Facebook开发,用于提供灵活、高效的API接入。它允许客户端准确指定需要的数据,而不是获取预设的REST接口。 2 优势 灵活的查询方式,请求特定字段,无过度获取 强类型,类型安全 单一端点,避免过多端点 内置Documentation ... 3 Spring Boot中集成GraphQL 3.1 添加依赖 在Spring
1 SOAP 成熟、全面、基于 XML 的,最适合企业应用程序。 2 RESTful 受欢迎、易实现的 HTTP 方法,非常适合网络服务。 3 GraphQL 查询语言,请求特定数据。 减少网络开销,更快的响应。 4 gRPC 高性能、Protocol Buffers,适用于微服务架构。 5 WebSocket 实时、双向、长连接。非常适合低延迟的数据交换。 6 Webhook 事件驱动、HTTP
0 概述 系统设计和软件设计是编码面试和软件开发者的两个重要技能。如果不了解系统设计,就无法创建新的软件,也会难以理解现有的软件和系统。这就是为什么大公司如 Facebook, Amazon, Netflix, Google 和 Apple 非常重视系统设计技能,并对候选人进行全面测试。 如果你想学习系统设计,这里列出7本最佳系统设计书籍,无论你是初学者还是有经验的开发者,这些书都将对你有所帮助。
1 简介 SQLFlow 可跟踪超过 20 种主要数据库(包括 Snowflake、Hive、SparkSQL、Teradata、Oracle、SQL Server、AWS Redshift、BigQuery 等)的字段级数据血缘。 从查询历史记录、ETL 脚本、Github/Bitbucket、本地文件系统和远程数据库中的 SQL 语法创建和可视化血缘关系。 使用交互式图表或通过 Restfu
1 背景 兼容技术团队自研的RPC框架,技术团队不需要修改代码,RPC注解方法可以托管在任务调度系统中,直接当做一个任务来执行。 研读XXL-JOB,同时从阿里云分布式任务调度 SchedulerX 吸取。 SchedulerX 1.0 架构图 Schedulerx-console 是任务调度的控制台,用于创建、管理定时任务。负责数据的创建、修改和查询。在产品内部与 schedulerx se
把调度和任务执行,隔离成两个部分: 调度中心 只需要负责任务调度属性,触发调度命令 执行器 执行器接收调度命令,去执行具体的业务逻辑 两者都可以进行横向扩容。 1 MQ 调度中心依赖Quartz集群模式,当任务调度时,发送消息到RabbitMQ 。业务应用收到任务消息后,消费任务信息。 充分利用MQ解耦: 调度中心发任务 应用方作为执行器,接收任务并执行 1.1 缺点 多引入中间
轻量级无中心化解决方案,jar包提供分布式任务的协调服务。 // 应用内部定义任务类,实现SimpleJob接口 public class MyElasticJob implements SimpleJob { // 编写自己任务的实际业务流程 @Override public void execute(ShardingContext context) {
2 分布式锁 Quartz集群模式可水平扩展,也可分布式调度,但需业务方在数据库中添加对应表,有强侵入性。 于是有人探索分布式锁模式。 2.1 超时关单 通常做定时任务每2min检查前半小时的订单,将待支付订单列表查出,然后对订单中的商品进行库存的恢复,然后将该订单设置为无效。 Spring Schedule定时任务。 @Scheduled(cron = "0 */2 * * * ? &
除了技术,副业也可以帮助我们在业务上获得新认知,保持敏感性。 之前我们在做程序员职业成长服务的时候,发现了一个问题。很多初阶的程序员没法升到中高阶,有两个很大的非技术影响因素: 1 管理能力 每个程序员即使把自己的潜力发挥到极致,成为十倍开发者( 10x developer),他可以处理的事情也有限。 但若管理能力好,他就能培养出很多拥有和自己同等技能的人,就不只是十倍、而是可成百上千倍地复制能力
1 Quartz 任务调度整体流程: 1.1 组件 调度器 :工厂类创建Scheduler,根据触发器定义的时间规则调度任务 任务:Job表示被调度的任务 触发器:Trigger 定义调度时间的元素,按啥时间规则执行任务。一个Job可被多个Trigger关联,但是一个Trigger 只能关联一个Job import org.quartz.*; import org.quartz.Schedu
1 配置属性 1.1 执行器 任务的绑定的执行器: 任务触发调度时,将自动发现注册成功的执行器,实现任务自动发现 也方便进行任务分组 每个任务须绑定一个执行器, 可在 "执行器管理" 设置。 1.2 任务描述 便于任务管理 1.3 路由策略 当执行器集群部署时,提供的路由策略 FIRST(第一个):固定选择第一个机器 LAST(最后一个):固定选择最后一个机器 ROUND
常见并发编程模式,用于构建服务器应用程序和处理并发请求。也称: "Master-Slave"模式 或"Producer-Consumer"模式 具体实现方式可以有所不同,但思想一致。这种模式的两种角色: 服务器(Server)或主控(Master):负责接收、处理和分发任务。监听来自客户端或请求队列的请求,并将这些请求分发给工作线程或工作进程 工
1 PlanB和反脆弱 除了可以给我们的职业带来自由度,副业更可以为我们的职业引入反脆弱结构。《反脆弱——从不确定性中获益》。 书里塔勒布说,他之所以要专门造一个词,是因为大家往往对脆弱的反面有所误解,以为「坚强」,也就是类似软件的「鲁棒性」。但反脆弱性比鲁棒性更棒。 1.1 鲁棒性 在风险来临的时候我们要做到不受影响。而 1.2 反脆弱性 更上一层楼,它说的是,当风险来临,我们不但不受负面影响
副业给我们的职业带来的更大的自由度。 职业选择的自由 F*** you money。这是国外的一个词,翻译成「中指备用金」,指一笔钱,数量大概是:突然有一天你跟老板闹翻了,你可以竖起中指,跟他讲说老子不干了,然后辞职回家。在这种情况下,你的生活质量也不受影响。 标准意义「中指备用金」,是和财务自由差不多额度的钱,是以「不工作」为前提。如果大家在北上深,要做到财务自由很难。 这里是以「换工作」为前提
1 一切皆可能 因为确实还不知道确切结果,不到最后一刻,一切皆可能。 大部分招聘即使进行到最后一面,也没法当场就有最终结论: 有的还需别的领导和专家再讨论判断,有的则需要再走一系列冗长的臭流程 就算那些当场就被认为不合适,没通过面试的人,也不能马上就给结论 为啥呢? 有些企业不会通知没通过面试的人 有些企业即使是要拒绝,也不会当面通知,而选择邮件或短信 虽然有些人面试时,就已经基本确定不会录
如果想要下载网页里出现的图片,最简单的方法就是在图片按下右键选择「另存图片」。 但若下载的图片数量较多,一个一个保存很浪费时间,就用图片下载工具辅助吧! 1 Image Extractor 免费的网页图片下载工具,可从任何公开页面提取图片,使用虚拟浏览器来模拟浏览效果。有别一般下载器,[Image Extractor]需几s时间以确保在网页中尽可能找到所有看得到的图片(很多网站采用延迟载入技术,没
0 简介 Clean Object-Oriented and Layered Architecture,整洁面向对象分层架构。 目前COLA已经发展到COLA v4。 COLA两部分: COLA架构 COLA组件 1 COLA架构 1.1 COLA 概述 架构的意义 就是要素结构: 要素,组成架构的重要元素 结构,要素之间的关系 应用架构的意义 定义一套良好的结构 治理应用复杂度,降低系
1 啥玩意? MapStruct 是一个代码生成器,它基于约定优于配置的方法极大地简化了 Java bean 类型之间映射的实现。 生成的映射代码使用简单的方法调用,因此速度快、类型安全且易于理解。 2 为什么? 多层应用程序通常要在不同对象模型(如entities和 DTO)之间映射。编写映射代码是乏味易出错任务。 MapStruct 旨在通过尽可能自动化来简化这项工作。 与其他映射框架相比,M
2 ScyllaDB 号称下一代 NoSQL,C++编写充分利用 Linux 底层原语优势,利用现代多核、多处理器 NUMA 服务器硬件,卓越性能,API 兼容 Cassandra 和 DynamoDB: 支持和 Cassandra 一样的 CQL 查询语言和驱动,一样的 SSTable 存储格式 同样支持和 DynamoDB 一样的 JSON-style 查询和驱动 2.1 架构 2.1.1
在⾯试过程中,应聘者可能想要从对公司环境的观察以及对⾯试官的提问当中获取公司相关的信息,以此来判断这家公司靠不靠谱,⾃⼰值不值得去。但这种信息可能会带有⼀定的⽚⾯性,毕竟 应聘者没有在公司实际体验过⼯作的内容,很难通过⼀两次⾯试就能看出公司的实际情况。这些细节⼀般只能给予应聘者⼀点有效信息,虽然并不是绝对的准确,综合这些信息判断这家公司是否靠谱。 1 观⾯试流程 靠谱公司都有完善⾯试流程。公司发展
从 MongoDB 到 Cassandra 开始选择新的存储(Cassandra)进行数据迁移,他们认为 Cassndra 是当时(2015 年底)唯一能满足他们要求的数据库(后面也打脸了)。他们对数据库的要求如下: 线性可扩展性——不需要手动进行数据的分片 自动故障转移——尽可能的进行自我修复 维护成本低——设置好后就能工作,以后数据量增加后只需要增加节点即可。 已经被证明有效——他们喜欢采用
1 概览 DataX 是一个异构数据源离线同步工具,致力于实现包括关系型数据库(MySQL、Oracle等)、HDFS、Hive、ODPS、HBase、FTP等各种异构数据源之间稳定高效的数据同步功能。 1.1 设计理念 为了解决异构数据源同步问题,DataX将复杂的网状的同步链路变成了星型数据链路,DataX作为中间传输载体负责连接各种数据源。 当需要接入一个新的数据源的时候,只需要将此数据源
1 Maven 依赖 引入pom依赖: <dependency> <groupId>com.github.ben-manes.caffeine</groupId> <artifactId>caffeine</artifactId> <version>3.1.6</version> </
Beego 是一个用于构建 Web 应用程序和后端服务的 Go 语言框架。它提供了一整套功能,包括路由、模型、视图、会话管理等。 0 go框架beego现在被淘汰了吗? 2016年提出的这个问题,由于当时自己刚入门学习go,就想找一个快速入门的框架学习使用,所以提出了这个很无脑的问题,在此,也向框架作者表示深深的歉意! 经过两年多的深入学习和理解,越来越发现各类go框架只是一个工具,在不同的需求或
1 2FA 的定义 双因素身份验证 (2FA) 是一种身份和访管理安全方法,需要经过两种形式的身份验证才能访河资源和数据,2FA使企业能够监视和帮助保护其最易受攻击的信息和网络。 2 2FA 的身份验证方法 使用双因素身份验证时有不同的身份验证方法。此处列出了一些最受欢迎的选项。 2.1 硬件令牌 企业可以以密钥卡的形式向员工提供硬件令牌,该密钥卡每隔几秒到一分钟时间生成一次代码。这是最早的双因素
在大数据领域,Hive作为一种数据仓库解决方案,为用户提供了一种SQL接口来查询和分析存储在Hadoop集群中的数据。为了更灵活地与Hive进行交互,我们可以使用Hive JDBC(Java Database Connectivity)驱动程序。本文将深入探讨Hive JDBC的使用,为读者提供在大数据环境中进行数据交互的技术指导。 1. 什么是Hive JDBC? 在Java应用程序中连接和操作
1 什么是行表达式? 使用 ShardingSphere 主要工作在于根据业务需求,完成各种分片操作相关配置项设置。本文剖析 ShardingSphere 中的配置体系到底是如何进行设计并实现的,这也是介绍 ShardingSphere 核心功能的前提。 行表达式是 ShardingSphere 中用于实现简化和统一配置信息的一种工具,在日常开发过程中应用得非常广泛。使用直观,在配置中使用 ${e
Copyright © 2005-2025 51CTO.COM 版权所有 京ICP证060544号