随笔分类 - 秋招面试八股准备
摘要:RabbitMQ 单一队列和单一消费者模式:确保一个队列只被一个消费者消费,这样可以保证消息按照发送的顺序被处理。因为队列本身就是一个先进先出的结构。 消息排序:在消息生产者端,为消息添加序列号和时间戳,消费者根据这些消息对消息进行排序。 RocketMQ 在保证消息顺序性方面提供了一种基于Mess
阅读全文
摘要:Java的内存泄漏本质上是对象无法被垃圾回收器回收,而不是内存真的泄漏了。 一、内存泄漏的本质 1.1 垃圾回收机制的原理 垃圾回收机制基于一个简单的原:可达性分析。简单来说,GC会从一系列的被称为"GC Roots"的对象开始,沿着引用链查找,任何无法从GC Roots到达的对象都被认为是"不可达
阅读全文
摘要:1、你概述一下这个判题接口的业务特点和你设置限流规则的考量。比如,你设置的是 QPS 还是并发数?限流阈值是多少?是基于用户、IP 还是整个服务的全局限流? 这个判题接口是我们在线编程平台的核心接口,特点是计算密集型和资源消耗大。每次提交的代码都需要在沙盒环境中编译、运行并对比输出结果,对 CPU
阅读全文
摘要:1、不能全量同步 由于有时候数据量会非常的大,如果直接通过所有的数据会存在OOM的情况,所以应该使用分页查询,慢慢的去同步数据 2、游标查询 由于数据可能会存在增删改的问题,所以使用limit+offset会出现数据问题,此时应该使用游标查询来同步数据 3、同步性 如果使用定时任务去定时的拉取数据进
阅读全文
摘要:HTTPS 是运行在 SSL/TLS 之上的 HTTP 协议,SSL/TLS 运行在 TCP 之上。所有传输的内容都经过加密,加密采用对称加密,但对称加密的密钥用服务器方的证书进行了非对称加密。 1、建立安全通道(使用非对称加密) 1、客户端向服务器发起连接,服务器将其SSL证书(内含公钥)发送给客
阅读全文
摘要:原因 问题描述:基于归档同时装盒导致归档一直处于执行的现状 名词解释 归档:这个是指公司的一些财务的数据,每一个月的过去之后就要将这个档案的数据,由一个"活跃"表转移到另外的一个"归档"表里面,这个涉及到数据的移动,包括数据的移动,状态的更新,以及原始数据的删除和隐藏。 装盒:这个是一个更加频繁的操
阅读全文
摘要:什么是死锁 死锁是指两个或两个以上的线程(或进程)在执行过程中,因为争夺资源而陷入的相互等待的状态,若无外力干涉,它们都无法推进下去。 表现 1、用户反馈:哪个功能卡住了,具体的操作路径是什么?涉及哪些页面或接口 2、QPS/TPS:是否暴跌或降为0。 3、相应时间:是否飙至无限长。 4、错误率:是
阅读全文
摘要:在我们的 OJ 平台中,为了保护数据库、提升响应速度,我设计了一套缓存防护体系: 缓存穿透: 针对恶意请求或不存在的题目 ID,我们用布隆过滤器提前过滤掉无效请求,误判率控制在 0.13% 以下,保护数据库不被大量无效查询压垮。 缓存雪崩: 对题目列表、分类数据等热点缓存,我们采用随机 TTL 避免
阅读全文
摘要:什么是JMM JMM定义了Java程序中各种变量(包括实例字段,静态字段和数组元素)的访问规则,以及线程和内存交互的规范。JMM的核心使命是解决对线程下由CPU缓存和指令重排引起的三大难题:原子性、可见性和有序性。 主内存和工作内存对的二分世界 JMM将内存抽象分为:主内存:是所有的线程共享的数据存
阅读全文
摘要:Redis 哈希的扩容过程是其高效性的关键所在,它采用了一种非常巧妙的渐进式 rehash 策略来避免一次性扩容带来的服务停顿。 步骤 1:准备工作 当满足扩容条件时,为 ht[1] 分配空间。新的大小根据上述规则计算。 将字典的 rehashidx 属性从 -1 设置为 0。这个设置标志着 reh
阅读全文
摘要:1、继承Thread类 重写run()方法,调用start()启动。 // 1. 创建一个继承自Thread的子类 class MyThread extends Thread { @Override public void run() { // 线程要执行的任务 System.out.println
阅读全文
摘要:Java IO流主要可以从两个最重要的维度进行分类:流向 和 操作的数据类型。 按流向分(以内存为参照物): 输入流(Input Stream): 将数据从外部(如文件、网络、键盘)读入到内存中。InputStream 和 Reader 是基类。 输出流(Output Stream): 将数据从内存
阅读全文
摘要:1、mybatis的分页 MyBtis本身不提供自动化分页,MyBatis 原生分页的本质,就是通过在 SQL 语句中直接使用数据库特定的分页关键字(如 LIMIT, ROWNUM)来实现的。这是一种物理分页,即数据库只返回查询结果中的一部分数据。 2、分页插件的原理 最著名的就是PageHelpe
阅读全文
摘要:1 当时你是怎么发现 Redis 标记丢失和多线程竞争导致 ES 数据不一致的 代码问题:ES同步标记存放在redis中,有过期时间,24h过期(昨天修复)(是本次ES丢数据的主因)。 性能原因:多线程开启ES数据同步,导致ES出现断开接收的情况(多线程。昨天改了一版异步方案,正在测试)(MQ形式)
阅读全文
摘要:1. 一开始为什么商城旅馆搜索结果大量为空 答:因为分词+100%匹配度,也就是说文档里面必须包括搜索分词。同时用户可能是输入的是地址,但是我的地址在索引里面是单独的一个address字段,所以就无法进行精确的文本匹配。 2. 你是如何通过调整分词策略来改善搜索效果的? 答:在索引阶段,对文档使用i
阅读全文
摘要:Redis 事务的核心机制是:命令打包、顺序执行、乐观锁辅助。它不提供原子性回滚(Rollback) 核心实现机制 Redis 通过四个命令 MULTI, EXEC, DISCARD, WATCH 和一个关键的设计——事务队列来实现事务。 事务队列 当客户端执行 MULTI 命令后,Redis 会将
阅读全文
摘要:联合索引不满足最左匹配原则 联合索引 :数据库表中对于多个列组合建立的索引。例如INDEX idx_name (col1, col2, col3)。 最左匹配原则:索引安装定义的列的顺序存储和排序,在查询的时候必须包含最左边的列才能使用索引。 失效场景:在联合索引的场景下,查询条件不满足最左匹配原则
阅读全文
摘要:Column 含义 id 查询序号 select_type 查询类型 table 表名 partitions 匹配的分区 type join类型 prossible_keys 可能会选择的索引 key 实际选择的索引 key_len 索引的长度 ref 与索引作比较的列 rows 要检索的行数(估算
阅读全文

浙公网安备 33010602011771号