GaryLee's Blog
如何设计一个站内消息系统? 如何设计一个站内消息系统?
一、什么是站内消息系统?如图所示,以微博为例,这些评论、点赞等消息加起来就叫做站内消息系统。 站内消息系统大概有以下几项内容: 系统消息:如系统下发的一些公共信息等都叫做系统消息,即系统发给用户的消息 行为消息:如评论、点赞等互动行为产生
2023-12-05
如何设计一个动态Feed流系统? 如何设计一个动态Feed流系统?
一、什么是Feed流?Feed流就是能够实时/智能推送消息的数据流,如微博、朋友圈、动态等都属于Feed流。 Feed流有几个重要的概念: Feed:每一条消息都是一个Feed,如微博中的每一条微博等 Feed流:多个Feed组成一个Fe
2023-12-05
如何设计一个短链系统? 如何设计一个短链系统?
一、什么是短链系统?短链指的是短的链接,对应的有长链。比如: 长链:https://time.geekbang.org/column/intro/100020801 短链:http://gk.link/a/10q2I 为什么要有短链呢?
2023-12-04
排行榜的最佳实践 排行榜的最佳实践
一、排行榜的最佳实践1、实现方式一般情况下,排行榜可以通过MySQL或者Redis来做实现,但在特定场景下也可以用大数据来做数据支持,那么不同实现方式有什么区别呢?: 排序方式 优点 缺点 适用场景 MySQL order b
2023-11-28
如何解决短信验证码接口被狂刷导致系统崩溃的问题? 如何解决短信验证码接口被狂刷导致系统崩溃的问题?
一、背景短信验证码功能我们都不陌生,我们印象中的短信验证码都是有发送限制的(如60s内只能发送1次),这样做的目的一方面是为了保护系统,另一方面也是为了控制成本(发短信要钱的)。 我们先简单分析一下短信验证码接口被狂刷的主要场景有哪些:
2023-11-27
线上MySQL如何给千万级大表加索引? 线上MySQL如何给千万级大表加索引?
一、背景如果我们直接在线上MySQL给千万级大表加索引,会导致长时间卡死(锁表)甚至崩溃,所以我们不能直接在原表上加索引,如: ALTER TABLE `user` ADD INDEX `test_idx`(`name`); 二、解决方案
2023-11-22
如何保证高并发下的直播送礼能够快速完成? 如何保证高并发下的直播送礼能够快速完成?
一、背景在如今比较火热的直播行业中,随之而来的是数不胜数的送礼。那么直播行业流量这么大的前提下,送礼行为我们要怎么做到快速完成呢?既要快速处理快速返回,也要保证数据正常无误。 二、高并发下的挑战我们要处理高并发下的挑战,就需要从几个方面入手
2023-11-13
如何并发执行多个任务并等待执行结果? 如何并发执行多个任务并等待执行结果?
一、为什么要并发执行多个任务,而不是一个个顺序执行呢?比如一个接口执行了A、B、C三个任务,分别耗时1、2、3秒,如果顺序执行的话,总耗时需要6秒,代码如下: public class TestExecuteClass { @Tes
2023-10-02
如何提升接口的性能? 如何提升接口的性能?
一、如何发现接口的性能问题?可以通过压测结合日志的方式去分析接口的瓶颈点,然后去针对性优化。 二、接口性能优化方案 数据库优化:《如何排查慢SQL问题?》、《如何进行SQL调优?》 引入缓存中间件:对于查询结果一样的请求,为了减少数据库压力
2023-09-10
如何设计一个购物车功能? 如何设计一个购物车功能?
一、什么是购物车功能?购物车指的是用户在选购商品的时候,用来将用户意向购买的商品存放的地方,从而方便用户后续找到这些商品并进行统一支付 购物车的主要元素有: 商品ID 商品数量 折扣 添加后的价格变化 … 购物车的主要操作有: 下单
2023-08-25
如何防止库存超卖? 如何防止库存超卖?
一、什么是库存超卖?库存超卖指的是商品的库存超过我们预计卖出的数量(比如双11可以用9.9抢购iphone手机,但是总共只有10台,如果没处理导致最终被抢购了100台、1000台,超过了预计卖出的数量,就是库存超卖问题) 一般我们在做商品库
2023-08-20
如何实现一个分数相同则按时间排序的排行榜? 如何实现一个分数相同则按时间排序的排行榜?
一、如何实现一个排行榜?可以使用Redis的zset集合来实现一个排行榜,原因是zset集合可以将分数作为score、用户ID作为value,同时结合zset的排序功能,实现分数从高到低排序,相关的操作命令如下: 增加分数:zincrby
2023-08-20
1 / 2