GaryLee's Blog
如何实现多级缓存? 如何实现多级缓存?
一、什么是多级缓存?多级缓存指的是在系统的不同环节都添加缓存,以提高系统性能 我们一般工作中提到的多级缓存一般是本地缓存+分布式缓存: 本地缓存:指在当前服务里使用到的缓存,一般使用的是Guava和Caffeine框架,都提供了缓存的过期
2023-08-25
如何设计一个购物车功能? 如何设计一个购物车功能?
一、什么是购物车功能?购物车指的是用户在选购商品的时候,用来将用户意向购买的商品存放的地方,从而方便用户后续找到这些商品并进行统一支付 购物车的主要元素有: 商品ID 商品数量 折扣 添加后的价格变化 … 购物车的主要操作有: 下单
2023-08-25
Redis为什么这么快? Redis为什么这么快?
一、Redis为什么这么快?Redis之所以这么快,主要是有以下几个方面的原因: 基于内存:由于Redis是内存数据库,即数据存储在内存中,数据的读写速度非常快,同时内存访问速度远比磁盘访问速度快得多 单线程模型:由于Redis底层用的是
2023-08-23
Spring Bean的生命周期 Spring Bean的生命周期
一、Spring Bean的生命周期Spring Bean的生命周期主要分为五个阶段: 准备阶段 实例化(Instantiation) 属性赋值(Populate) 初始化(Initialization) 销毁(Destruction)
2023-08-22
如何防止库存超卖? 如何防止库存超卖?
一、什么是库存超卖?库存超卖指的是商品的库存超过我们预计卖出的数量(比如双11可以用9.9抢购iphone手机,但是总共只有10台,如果没处理导致最终被抢购了100台、1000台,超过了预计卖出的数量,就是库存超卖问题) 一般我们在做商品库
2023-08-20
如何实现一个分数相同则按时间排序的排行榜? 如何实现一个分数相同则按时间排序的排行榜?
一、如何实现一个排行榜?可以使用Redis的zset集合来实现一个排行榜,原因是zset集合可以将分数作为score、用户ID作为value,同时结合zset的排序功能,实现分数从高到低排序,相关的操作命令如下: 增加分数:zincrby
2023-08-20
limit 1000000,0加载很慢如何优化? limit 1000000,0加载很慢如何优化?
一、问题分析在MySQL中,limit ${offset},${row}表示查询前面offset+row条记录,然后抛弃前offset条记录,读取后row条记录,所以offset越大,偏移量越大,查询性能也就越差 二、优化方案 优化前:se
2023-08-20
如何实现一个扫码登录功能? 如何实现一个扫码登录功能?
一、什么是扫码登录?扫码登录指的是通过已经登录的APP应用,取扫描未登录的Web端程序中的二维码,通过某种机制触发登录凭证的写入从而实现Web端自动登录的过程 二、扫描登录的流程扫码登录的流程主要有以下几步: Web端打开登录页面,请求服
2023-08-20
如何处理Redis的大key问题? 如何处理Redis的大key问题?
一、什么是大key?Redis的大key指的是存储了大量数据的key,一般是因为元素过多导致的(如set、zset等),也有可能是因为value比较大(如string) 二、大key会带来什么问题?大key可能会存在以下几个问题: 占用内
2023-08-19 GaryLee
如何排查慢SQL问题? 如何排查慢SQL问题?
一、如何发现慢SQL问题?慢SQL指的是数据库中查询时间超过指定阈值的SQL,比如阈值设置为1s,那么说明如果一条SQL执行时间超过1s,则认为这是一条慢SQL 通常在实际开发中,如果有成熟的监控体系的话,那么会自动把慢SQL统计出来,并通
2023-08-19
如何进行SQL调优? 如何进行SQL调优?
一、为什么需要进行SQL调优?错误的使用SQL,可能会带来慢SQL查询等,影响查询性能 二、分析原因 索引失效 多表join 数据量太大 查询数据太多 表结构不合理 … 三、SQL优化方案 索引失效:可以通过执行计划分析是否走了索引,以及
2023-08-19
MySQL执行计划分析 MySQL执行计划分析
一、执行计划字段介绍+----+-------------+-------+------------+-------+---------------+----------+---------+------+------+----------
2023-08-18
8 / 15