随笔分类 - 小白晋级大师之路
来上海三个月,我在马路边上遇到了阿里前同事...
摘要:友友们,说出来你们可能不信,但是小卷我确实在马路边上遇到了阿里前同事,同在北京工作过的我们,居然在上海的一个公交车站遇到了,两个人都很震惊 1.阿里前同事 这位前同事是和我一个组的,都是北京阿里的,属于高P大头兵级别,年纪比较大的那种,之前走人是拿着大礼包开开心心走的,走了之后就没有消息了 之前一起
阅读全文
Java的IO模型、Netty原理详解
摘要:
1.什么是IO 虽然作为Java开发程序员,很多都听过IO、NIO这些,但是很多人都没深入去了解这些内容。 Java的I/O是以流的方式进行数据输入输出的,Java的类库涉及很多领域的IO内容:标准的输入输出,文件的操作、网络上的数据传输流、字符串流、对象流等 2.同步与异步、阻塞与非阻塞 同步:一
阅读全文
1.什么是IO 虽然作为Java开发程序员,很多都听过IO、NIO这些,但是很多人都没深入去了解这些内容。 Java的I/O是以流的方式进行数据输入输出的,Java的类库涉及很多领域的IO内容:标准的输入输出,文件的操作、网络上的数据传输流、字符串流、对象流等 2.同步与异步、阻塞与非阻塞 同步:一
阅读全文
CompletableFuture原理及应用场景详解
摘要:
1.应用场景 现在我们打开各个APP上的一个页面,可能就需要涉及后端几十个服务的API调用,比如某宝、某个外卖APP上,下面是某个外卖APP的首页。首页上的页面展示会关联很多服务的API调用,如果使用同步调用的方式,接口耗时完全不能满足需求,因此,需要用到异步调用的方式。 2.使用线程池的弊端 说起
阅读全文
1.应用场景 现在我们打开各个APP上的一个页面,可能就需要涉及后端几十个服务的API调用,比如某宝、某个外卖APP上,下面是某个外卖APP的首页。首页上的页面展示会关联很多服务的API调用,如果使用同步调用的方式,接口耗时完全不能满足需求,因此,需要用到异步调用的方式。 2.使用线程池的弊端 说起
阅读全文
面试场景题:如何设计一个抢红包随机算法
摘要:面试官:咱来写个算法题吧 设计一个抢红包的随机算法,比如一个人在群里发了100块钱的红包,群里有10个人一起来抢红包,每人抢到的金额随机分配。 1.所有人抢到的金额之和要等于红包金额,不能多也不能少。 2.每个人至少抢到1分钱。 3.最佳手气不超过红包总金额的90% 解题思路1:随机分配法 钱的单位
阅读全文
场景题:100G的文件里有很多id,用1G内存的机器排序,怎么做?
摘要:海量数据排序思路 核心方案:外排序(分治+多路归并)MapReduce 外排序是指数据量太大,无法全部加载到内存中,需要将数据分成多个小块进行排序,然后将排序后的小块合并成一个大的有序块 1.分块排序(Map阶段) 分块策略 按1G内存容量限制,将100G文件拆分为 200个500MB分块(保留内存
阅读全文
场景题:线上接口响应慢,应该如何排查问题?
摘要:这是面试中经常问的一个场景题,主要考察研发的过往经验积累,需要系统性地回答,不能笼统简单敷衍。以下是整理的相关内容 1.排查思路总览 2.方法论 面试问到这个问题,面试官其实想听到一些方法论的东西,并不想了解零零散散的排查过程。需要重点关注的点包括: 结合业务场景(大促、双11促销、业务高峰期等)给
阅读全文
场景题:10亿QQ用户,如何统计在线人数?
摘要:现在卷的环境下,面试除了八股文+算法+项目外,场景题也是问的越来越多了。一方面是就业市场竞争者较多所带来的必然结果;另一方面是公司对于应聘者的技术要求也越来越高了。 今天继续介绍Java面试常见的场景题:在线人数统计 现在用户数量是亿级,如何统计在线人数有多少? 场景分析 QQ用户就是亿级的场景,我
阅读全文
场景题:有40亿个QQ号如何去重?仅1GB内存
摘要:场景题也有一些套路可以考虑,比如去重、判断给定数据是否存在 1.大数据去重 1.1 现在有40亿个QQ号如何去重?仅1GB内存 参考链接:https://juejin.cn/post/7396332696660131849 介绍2种方法:Bitmap和布隆过滤器 方法一:Bitmap 首先介绍下什么
阅读全文
布隆过滤器原理和使用场景
摘要:1.什么是布隆过滤器 Bloom Filter 会使用一个较大的 bit 数组来保存所有的数据,数组中的每个元素都只占用 1 bit ,并且每个元素只能是 0 或者 1(代表 false 或者 true),用于检索元素是否存在于大集合中的数据结构。 缺点是:有一定的错误识别率 2.原理介绍 核心原理
阅读全文
设计模式3:代理、适配器、装饰器模式
摘要:代理模式(Proxy Pattern) 代理模式的本质是⼀个中间件,主要⽬的是解耦合服务提供者和使⽤者。使⽤者通过代理间接访问服务提供者,便于后者的封装和控制。是⼀种结构型设计模式。 静态代理和动态代理区别 静态代理:编译时生成代理类,需要手动编写代理逻辑,代理类和目标类实现同一接口。 动态代理:运
阅读全文
设计模式1:工厂模式
摘要:开始学习设计模式,这是小卷学习设计模式的第1篇文章,今天了解下工厂模式,以及框架中用到工厂模式的案例 1.概览 2.分类 设计模式分为三类: 创建型:在创建对象的同时隐藏创建逻辑,不使用new直接实例化对象,程序判断创建哪些对象时更灵活 结构型:通过类和接口间的继承、引用实现创建复杂结构的对象。 行
阅读全文
分布式系统学习10:分布式事务
摘要:这是小卷对分布式系统架构学习的第13篇文章,今天学习面试中高频问题:分布式事务,为什么要用分布式事务,分布式事务的实现方案有哪些,方案对比优缺点; 1.知识体系 1.为什么要用分布式事务 单体架构时,以本地事务为例,业务场景是下单场景,用户下单、创建订单、扣减库存这些操作都可以在一个数据库事务中完成
阅读全文
分布式系统学习9:分布式锁
摘要:这是小卷对分布式系统架构学习的第12篇文章,今天学习面试中高频问题:分布式锁,为什么要做分布式锁,有哪些实现方式,各适用于什么场景等等问题 1. 为什么要用分布式锁? 分布式系统下,不同的服务/客户端通常运行在独立的 JVM 进程上。如果多个 JVM 进程共享同一份资源的话,使用本地锁就没办法实现资
阅读全文
分布式系统架构7:本地缓存
摘要:这是小卷对分布式系统架构学习的第10篇文章,在开始学习分布式缓存之前,先来学习本地缓存的理论基础,了解为什么需要用缓存 1.引入缓存的影响 我们在开发时,用到缓存的情况,无非就是为了减少客户端对相同资源的重复请求,降低服务器的负载压力。引入缓存后,既有好处也有坏处 引入缓存负面影响: 开发角度,增加
阅读全文
架构学习:7种负载均衡算法策略
摘要:负载均衡是什么就不具体介绍了,四层负载均衡的工作模式包括:数据链路层负载均衡、网络层负载均衡、应用层负载均衡 1.数据链路层负载均衡 数据链路层传输的是以太网帧,负载均衡器修改帧的MAC目标地址,转发到对应服务器的网卡上。流程如下: 2.网络层负载均衡 一个 IP 协议数据包由 Headers 和
阅读全文
注册中心如何选型?Eureka、Zookeeper、Nacos怎么选
摘要:这是小卷对分布式系统架构学习的第9篇文章,第8篇时只回答了注册中心的工作原理的内容,面试官的第二个问题还没回答,今天再来讲讲各个注册中心的原理,以及区别,最后如何进行选型 上一篇文章:如何设计一个注册中心?以Zookeeper为例 还是先讲讲各个中间件的区别,zookeeper已经讲过了,这里开始讲
阅读全文
如何设计一个注册中心?以Zookeeper为例
摘要:本文探讨了如何设计注册中心,以Zookeeper为例分析其工作原理。首先介绍了注册中心的核心功能,包括服务注册、注销、心跳检测和服务发现。随后详细解析Zookeeper的设计理念、API及其服务发现机制,特别是通过Watcher实现的实时监控。最后,讨论了Zookeeper在高可用性方面的局限性。如果想了解注册中心的设计思路及Zookeeper的应用,这篇文章将为你提供有价值的信息。
阅读全文
如何设计一个分布式配置中心?
摘要:在这篇文章中,我们将深入探讨如何设计一个分布式配置中心,特别是通过具体的中间件Apollo来实现。文章首先介绍了分布式配置中心的必要性,以消除多台服务间的配置管理难题。接着详细解析了Apollo的工作原理、架构模块及其使用方法,通过实例讲解如何实现配置的实时推送和更新。想知道如何提升配置信息的管理效率?点击阅读全文,掌握分布式配置中心的设计精髓!
阅读全文
分布式系统架构6:链路追踪
摘要:本文深入探讨了链路追踪在分布式系统中的重要性,介绍了追踪与跨度的核心概念,及数据收集和存储的有效方法。我们还分析了OpenTracing和OpenTelemetry等现代追踪协议,帮助开发者提升系统的可观测性和性能优化。如果你想了解如何更好地掌握链路追踪技术,点击阅读全文,开启系统架构的新视野!
阅读全文
分布式系统架构5:限流设计模式
摘要:本文介绍了分布式系统中的限流设计模式,包括流量计数器、滑动窗口、漏桶和令牌桶四种经典算法,并分析了各自的优缺点及适用场景。此外,还简述了分布式限流的实现方法,如基于Redis、分布式算法和网关的方案。文章为选择适合的限流策略提供了实用参考。
阅读全文
浙公网安备 33010602011771号