GaryLee's Blog
07
29
如何排查CPU飙升问题? 如何排查CPU飙升问题?
一、CPU飙升可能的原因背景:CPU是整个电脑的核心计算资源,对于一个应用进程来说,CPU的最小执行单元是线程导致CPU飙高的原因有几个方面: CPU上下文切换过多:由于在同一时刻下每个CPU核心只能运行一个线程,如果存在多个线程,CPU
2023-07-29
29
如何用Redis实现延迟队列? 如何用Redis实现延迟队列?
一、什么是延迟队列?延迟队列是一种特殊类型的消息队列,它允许把消息发送到队列中,但不立即投递给消费者,而是在一定时间后再将消息投递给消费者 二、使用场景延迟队列适用于需要在未来的某个时间执行某个任务的场景,如: 订单的超时处理:如电商交易
2023-07-29
25
Java面试题 Java面试题
一、随手记录的Java面试题 ==和equals有什么区别? 浅拷贝和深拷贝有什么区别? 线程的sleep和wait有什么区别? 什么是动态代理?有什么优点和缺点? 关于锁的synchronized和ReentrantLock有什么区别?
2023-07-25
24
关于对缓存雪崩和缓存穿透的理解,以及如何避免? 关于对缓存雪崩和缓存穿透的理解,以及如何避免?
一、缓存雪崩定义:缓存雪崩是存储在缓存里的大量数据,在同一时刻全部过期,导致所有流量到达了数据库,导致数据库压力增加造成数据库服务端崩溃的现象具体原因&解决方案: 缓存中间件宕机:如redis挂了,可对缓存中间件做高可用集群来避免
2023-07-24
23
Redis和MySQL如何保证数据一致性? Redis和MySQL如何保证数据一致性?
一、背景一般情况下,Redis是用来实现应用和数据库之间读操作的缓存层,主要目的是减少数据库IO,还可以用来提升数据的IO性能 二、设计思想当应用需要读取某个数据的时候,会有几个步骤: 尝试去Redis查询,如果命中就直接返回 如果没有命
2023-07-23
21
如何解决幂等性问题? 如何解决幂等性问题?
一、什么是幂等?幂等指一个方法被多次重复执行的时候产生的影响和第一次执行的影响相同 二、哪些行为会导致幂等性问题? 用户行为:用户的重复提交或用户的恶意攻击,导致这个请求被多次重复进行 网络异常:在分布式架构中,为了避免网络通信导致的数据丢
2023-07-21
19
如何设计分布式ID? 如何设计分布式ID?
一、为什么要使用分布式ID? 比如MySQL的主键ID一般用自增的方式,但如果用分表的话,多个表中会生成重复的ID 二、设计方案 使用MySQL的全局表:每获取一次都需要更新数据库,性能差 使用redis的自增id UUID 雪花算法
2023-07-19
19
如何设计一个高并发系统? 如何设计一个高并发系统?
一、背景二、如何设计一个高并发系统?通常设计一个高并发系统要从多个方面优化,大概方面如下: 分布式架构:将系统拆分为多个模块,采用分布式架构来降低单点故障的风险,并提高系统的可伸缩性和性能 集群部署:即多机器部署,结合负载均衡技术将请求均
2023-07-19
19
如何限流? 如何限流?
一、限流目的限流算法是一种系统保护策略,主要是避免流量高峰导致系统被压垮,造成系统不可用的问题 二、常见的限流算法 计数器限流:一般用在单一维护的访问频率限制上(如短信验证码每60s只能发送一次) 滑动窗口限流:本质也是计数器,区别是通过时
2023-07-19
17
如何设计一个秒杀系统? 如何设计一个秒杀系统?
一、分析秒杀系统1、秒杀系统的特点 高并发:瞬间流量大 超卖问题:秒杀商品库存少 接口防刷:秒杀前刷新频繁 2、秒杀系统需要考虑的点秒杀前: 页面资源访问多:资源静态化,存CDN就近访问,开启资源压缩,减少传输数据量,提高速度 秒杀按钮
2023-07-17
17
12
Kafka面试题 Kafka面试题
一、Kafka面试题1、Kafka的副本机制有什么用?Kafka的副本机制是保证消息可靠性的重要手段之一,它可以: 提高可用性:Kafka每个topic有多个分区,每个分区有多个副本,但其中只能有一个是leader副本,其余的都是foll
2023-07-12
10 / 15