排行榜的最佳实践 一、排行榜的最佳实践1、实现方式一般情况下,排行榜可以通过MySQL或者Redis来做实现,但在特定场景下也可以用大数据来做数据支持,那么不同实现方式有什么区别呢?: 排序方式 优点 缺点 适用场景 MySQL order b 2023-11-28 场景题 Redis
如何进行分库分表?会带来什么问题? 一、为什么要进行分库分表?分库分表的目的是为了解决单表过大、单库表过多的问题,具体可参考文章(《如何进行SQL调优?》) 二、什么情况下需要进行分库分表?以下几种情况可以考虑分库分表: 单表数据量达到千万级别(读写性能差) 数据库中内存占 2023-11-27 MySQL
Zookeeper注册中心挂了会影响Dubbo服务间的正常通信吗? 一、背景Dubbo服务在启动时都会从Zookeeper注册中心同步一份消费者/生产者的连接信息到本地,并通过Watch机制更新(如其中一台消费者挂了,就会通知生产者更新本地缓存的连接信息)。 二、 Zookeeper注册中心挂了会影响Dub 2023-11-27 Dubbo Zookeeper
如何解决短信验证码接口被狂刷导致系统崩溃的问题? 一、背景短信验证码功能我们都不陌生,我们印象中的短信验证码都是有发送限制的(如60s内只能发送1次),这样做的目的一方面是为了保护系统,另一方面也是为了控制成本(发短信要钱的)。 我们先简单分析一下短信验证码接口被狂刷的主要场景有哪些: 2023-11-27 场景题 限流
线上MySQL如何给千万级大表加索引? 一、背景如果我们直接在线上MySQL给千万级大表加索引,会导致长时间卡死(锁表)甚至崩溃,所以我们不能直接在原表上加索引,如: ALTER TABLE `user` ADD INDEX `test_idx`(`name`); 二、解决方案 2023-11-22 场景题 MySQL
Mybatis的工作原理是什么? 一、什么是Mybatis?Mybatis是一个持久化框架,可以帮助我们快速做数据库交互开发。 常规的数据库交互开发,我们需要有下面几步: 创建Connection 创建Statement 代码中拼接SQL语句 返回结果集转换 … 而使用 2023-11-21 Mybatis
什么是SpringBoot的Starter?如何自定义一个Starter? 一、什么是SpringBoot的Starter?SpringBoot的Starter说白了就是一系列依赖关系的集合,它可以让我们的依赖关系变得更简单。 Starter有以下几个特点: 自动配置:Starter提供了相关的自动配置类,可以根 2023-11-16 Spring SpringBoot
为什么Lua脚本可以保证原子性? 一、什么是原子性?原子性这个概念在数据库中和在并发编程中是两种不同的概念: 数据库中的原子性:要么都执行,要么都不执行 并发编程中的原子性:操作不可拆分、不被中断 Lua脚本是属于并发编程中的原子性,可以保证原子性,但是不能保证要么都执 2023-11-13 Redis
什么是Redis的数据分片? 一、什么是Redis的数据分片?Redis的数据分片(Sharding)指的是将数据集分为多个子集,分别存储在不同的Redis节点上,提高了Redis集群的性能和扩展性。 二、如何实现Redis的数据分片?Redis的数据分片实现一般是按照 2023-11-13 Redis
如何保证高并发下的直播送礼能够快速完成? 一、背景在如今比较火热的直播行业中,随之而来的是数不胜数的送礼。那么直播行业流量这么大的前提下,送礼行为我们要怎么做到快速完成呢?既要快速处理快速返回,也要保证数据正常无误。 二、高并发下的挑战我们要处理高并发下的挑战,就需要从几个方面入手 2023-11-13 场景题
Java中四种引用有什么区别? 一、Java中四种引用分别是什么?Java中四种引用分别是: 强引用:默认引用,使用后不会被垃圾回收器回收(如果内存不足,则直接报错OOM)。例子代码为String[] arr = new String[]{"a","b"}; 弱引用:如 2023-11-12 JVM