面试:经典问题解决思路

2023-09-18 08:58:23

1. 秒杀系统架构
参考:秒杀系统架构优化思路

2. 如何防止订单重复提交

重复提交原因:

  1. 一种是由于用户在短时间内多次点击下单按钮,或浏览器刷新按钮导致。
  2. 另一种则是由于Nginx或类似于SpringCloud Gateway的网关层,进行超时重试造成的。
方案描述优点缺点
方案一提交订单按钮置灰简单易实现,常用于短信验证码场景只能解决多次点击下单按钮的问题
方案二设计一个服务,预生成全局唯一订单号,如UUID,提交订单前先取这个唯一单号ID,然后带上ID提交,在后端通过唯一索引做幂等和防重要多请求一次、多增加了一个分布式服务、QPS高时服务压力大、数据库多设计了一个单号字段
方案三修改方案二,由前端生成唯一订单号比方案二少一次服务请求,服务器压力降低依然需要新增字段
方案四使用用户id+分隔符+商品ID拼成一个临时标识符,用它做key在redis上生成一个校验对象,并过期自动删除,提交时用这个key做校验防止重复提交只需要后端修改、不需要修改数据库
更多推荐

计算机专业毕业设计项目推荐07-科研成果管理系统(JavaSpringBoot+Vue+Mysql)

科研成果管理系统(JavaSpringBoot+Vue+Mysql)**介绍****系统总体开发情况-功能模块****各部分模块实现****最后想说的****联系方式**介绍本系列(后期可能博主会统一为专栏)博文献给即将毕业的计算机专业同学们,因为博主自身本科和硕士也是科班出生,所以也比较了解计算机专业的毕业设计流程以

浅谈终端安全接入

前言:随着网络的发展,现代企业大多都会部署企业的有线网络与无线网络,在传统的企业网内,随着越来越多的终端设备接入到公司网络,管理人员控制和审计外部用户接入的企业办公网的难度和工作量也越来越大。而如果允许外部用户随意使用企业网络,则可能在管理人员和系统维护人员毫不知情的情况下,某些恶意用户侵入企业办公网络,从而造成数据泄

瑞芯微 RV1126 芯片的完整启动流程

瑞芯微RV1126启动流程瑞芯微RV1126芯片的启动流程,包括MiniLoaderAll.bin、U-Boot、内核(Kernel)和根文件系统(RootFileSystem)的加载和执行过程。1.上电复位当设备上电或复位时,RV1126芯片进入初始状态。2.BootROM运行BootROM是硬件逻辑中的引导程序,它

本地Docker Registry远程连接,为你带来高效便捷的镜像管理体验!

Linux本地DockerRegistry本地镜像仓库远程连接文章目录Linux本地DockerRegistry本地镜像仓库远程连接1.部署DockerRegistry2.本地测试推送镜像3.Linux安装cpolar4.配置DockerRegistry公网访问地址5.公网远程推送DockerRegistry6.固定D

CESM地球系统模式教程

详情点击公众号技术科研吧链接:CESM地球系统模式教程前言目前通用地球系统模式(CommunityEarthSystemModel,CESM)在研究地球的过去、现在和未来的气候状况中具有越来越普遍的应用。CESM由美国NCAR于2010年07月推出以来,一直受到气候学界的密切关注。近年升级的CESM2.0在大气、陆地、

ElasticSearch系列-简介与安装详解

全文检索讲ElasticSearch之前,需要先提一下全文检索.全文检索是计算机程序通过扫描文章中的每一个词,对每一个词建立一个索引,指明该词在文章中出现的次数和位置。当用户查询时根据建立的索引查找,类似于通过字典的检索字表查字的过程。索引:建立索引文本---->切分--->词文章出现过出现多少次检索:查询关键词---

基于TensorFlow+CNN+协同过滤算法的智能电影推荐系统——深度学习算法应用(含微信小程序、ipynb工程源码)+MovieLens数据集(三)

目录前言总体设计系统整体结构图系统流程图运行环境模块实现1.模型训练1)数据集分析2)数据预处理3)模型创建(1)定义参数(2)定义网络数据输入占位符(3)定义用户嵌入矩阵(4)定义电影嵌入矩阵(5)定义电影类型嵌入矩阵(6)处理电影名称(7)全连接层(8)定义计算图相关其它博客工程源代码下载其它资料下载前言本项目专注

MySQL事务

MySQL事务一、事务的概念二、事务的ACID特点1、原子性2、一致性3、隔离性3.1、事务的隔离级别3.1.1测试脏读3.1.2测试提交读3.1.3测试可重复读3.2、查询全局事务隔离级别3.3、查询会话事务隔离级别3.4、设置全局事务隔离级别3.5、设置会话事务隔离级别4、持久性三、事务控制语句1、测试提交事务2、

SQL如何从数据库中查找数据是否存在

SQL查找是否存在,别再用count!!!问题背景在业务开发中,经常遇到如下需求:从数据库中查找符合一组条件的数据是否存在。结果也无非两种状态:“有”或者“没有”。模拟数据表CREATETABLE`user`(`id`bigintNOTNULLCOMMENT'id',`userName`varchar(256)CHAR

springboot集成canal实现同步双写

一.canal服务端canal是阿里巴巴MySQL数据库Binlog的增量订阅&消费组件。基于数据库增量日志解析,提供增量数据订阅&消费。二.基于docker搭建在docker环境中1.执行dockersearchcanal获取到需要下载的canal镜像2.执行dockerpull选择下载的canal镜像3.执行run

K8S之Pod详解

Pod详解一、Pod基础概念1.概念2.在Kubrenetes集群中Pod有如下两种使用方式3.pause容器使得Pod中的所有容器可以共享两种资源4.kubernetes中的pause容器主要为每个容器提供以下功能5.Kubernetes设计这样的Pod概念和特殊组成结构有什么用意6.通常把Pod分为两类二、容器的分

热文推荐