GaryLee's Blog
MySQL 2023.09.05
InnoDB和MyISAM有什么区别?
一、InnoDB和MyISAM有什么区别?InnoDB和MyISAM都是MySQL的存储引擎,MySQL在5.5之前默认使用MyISAM作为存储引擎,5.5之后默认使用InnoDB作为存储引擎,它们的区别主要是以下几点: InnoD
2023-09-05
并发 2023.09.05
如何实现一个分布式锁?
一、什么是分布式锁?分布式锁,是一种跨进程、跨机器节点的互斥锁,它可以用来保证多机器节点对于共享资源访问的互斥性。 二、分布式锁的特点想要实现一个分布式锁,主要要有以下几个特点: 互斥性:同一时间只能有一个线程获取到锁,然后去访问共享资源
2023-09-05
ElasticSearch 2023.08.26
什么是倒排索引?
一、背景在ElasticSearch中,通过关键字/关键词去查找对应文本的过程,是由全文检索引擎实现的。 全文检索引擎就是对非结构化文本进行解析、搜索的技术,而非结构化文本的处理关键在于分词与倒排索引。 二、什么是倒排索引?在Elastic
2023-08-26
ElasticSearch 2023.08.26
为什么要使用ElasticSearch?
一、为什么要使用ElasticSearch?因为在我们的业务场景中,可能会有大数据量的查询场景,这时候如果我们用常规的缓存和数据库来提供支持,在极端情况下可能会出现实例负载过高,导致系统不可用。 所以我们需要选择一款支持大数据量查询的框架或
2023-08-26
并发 2023.08.25
什么是服务降级?
一、什么是服务降级?服务降级是一种提高系统稳定性和可用性的策略,简单来说,就是当服务器压力增加时,根据业务需求判断,从而不对外提供部分非核心服务的功能。 简单举个例子,在秒杀系统中,如果秒杀过程中服务器出现宕机或者部分依赖服务不可用了,做与
2023-08-25
Redis 2023.08.25
如何实现多级缓存?
一、什么是多级缓存?多级缓存指的是在系统的不同环节都添加缓存,以提高系统性能 我们一般工作中提到的多级缓存一般是本地缓存+分布式缓存: 本地缓存:指在当前服务里使用到的缓存,一般使用的是Guava和Caffeine框架,都提供了缓存的过期
2023-08-25
场景题 2023.08.25
如何设计一个购物车功能?
一、什么是购物车功能?购物车指的是用户在选购商品的时候,用来将用户意向购买的商品存放的地方,从而方便用户后续找到这些商品并进行统一支付 购物车的主要元素有: 商品ID 商品数量 折扣 添加后的价格变化 … 购物车的主要操作有: 下单
2023-08-25
Redis 2023.08.23
Redis为什么这么快?
一、Redis为什么这么快?Redis之所以这么快,主要是有以下几个方面的原因: 基于内存:由于Redis是内存数据库,即数据存储在内存中,数据的读写速度非常快,同时内存访问速度远比磁盘访问速度快得多 单线程模型:由于Redis底层用的是
2023-08-23
Spring 2023.08.22
Spring Bean的生命周期
一、Spring Bean的生命周期Spring Bean的生命周期主要分为五个阶段: 准备阶段 实例化(Instantiation) 属性赋值(Populate) 初始化(Initialization) 销毁(Destruction)
2023-08-22
场景题 2023.08.20
如何防止库存超卖?
一、什么是库存超卖?库存超卖指的是商品的库存超过我们预计卖出的数量(比如双11可以用9.9抢购iphone手机,但是总共只有10台,如果没处理导致最终被抢购了100台、1000台,超过了预计卖出的数量,就是库存超卖问题) 一般我们在做商品库
2023-08-20
场景题 2023.08.20
如何实现一个分数相同则按时间排序的排行榜?
一、如何实现一个排行榜?可以使用Redis的zset集合来实现一个排行榜,原因是zset集合可以将分数作为score、用户ID作为value,同时结合zset的排序功能,实现分数从高到低排序,相关的操作命令如下: 增加分数:zincrby
2023-08-20
MySQL 2023.08.20
limit 1000000,0加载很慢如何优化?
一、问题分析在MySQL中,limit ${offset},${row}表示查询前面offset+row条记录,然后抛弃前offset条记录,读取后row条记录,所以offset越大,偏移量越大,查询性能也就越差 二、优化方案 优化前:se
2023-08-20
9 / 16