自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(9)
  • 收藏
  • 关注

原创 记一次秒杀项目

最近公司准备做一个秒杀,翻阅了一些资料,通过不断地改进优化,终于设计出了一个比较稳定功能,我们项目中单独开了秒杀的自服务项目,以便于后期扩展,今天跟大家分享一下项目心得:1.基本功能实现最开始做出的1.0版本,话不多说上代码@Overridepublic Object confirm(Integer productId,String accountId) { if (StringUtils.isEmpty(productId)) { return new Ctr...

2021-05-05 20:42:45 167

转载 试试用规则执行器来替代if

业务场景近日在公司领到一个小需求,需要对之前已有的试用用户申请规则进行拓展。我们的场景大概如下所示:if(是否海外用户){returnfalse;}if(刷单用户){returnfalse;}if(未付费用户&&不再服务时段){returnfalse}if(转介绍用户||付费用户||内推用户){returntrue;}按照上述的条件我们可以得出的结论是: 咱们的的主要流程主要是基于 and 或...

2021-05-03 19:14:42 271

转载 如何设计业务系统的可扩展性

对于业务系统本身在架构设计的时候考虑扩展,原来更多的都是谈的 IT 基础技术架构本身的高可用性和高扩展性。而对于业务系统扩展性,简单来说就是如何灵活的应对需求的变化和扩展,如何减少在处理变更或扩展中代码不断产生的坏味道。说到扩展性,一般会谈到数据库扩展性和应用扩展性两个方面的内容,当然很多应用的扩展性最终会反馈到数据库本身的扩展性上面来。而对于应用本身的扩展性本身又包括了数据模型的扩展,接口的扩展,业务规则的扩展,流程的扩展几个方面的内容,下面分别对上面内容进行描述。1.数据库设计的扩展性对于.

2021-01-29 21:44:10 1742

转载 秒杀系统设计思路

秒杀系统相信很多人见过,比如京东或者淘宝的秒杀,小米手机的秒杀。那么秒杀系统的后台是如何实现的呢?我们如何设计一个秒杀系统呢?对于秒杀系统应该考虑哪些问题?如何设计出健壮的秒杀系统?本期我们就来探讨一下这个问题:目录一:秒杀系统应该考虑的问题二:秒杀系统的设计和技术方案三:系统架构图四:总结一:秒杀应该考虑哪些问题1.1:超卖问题分析秒杀的业务场景,最重要的有一点就是超卖问题,假如备货只有100个,但是最终超卖了200,一般来讲秒杀系统的价格都比较低,如果..

2021-01-29 21:13:45 4694

转载 为什么要分库分表

在文章开头先抛几个问题:(1)什么时候才需要分库分表呢?我们的评判标准是什么?(2)一张表存储了多少数据的时候,才需要考虑分库分表?(3)数据增长速度很快,每天产生多少数据,才需要考虑做分库分表?这些问题你都搞清楚了吗?相信看完这篇文章会有答案。为什么要分库分表?首先回答一下为什么要分库分表,答案很简单:数据库出现性能瓶颈。用大白话来说就是数据库快扛不住了。数据库出现性能瓶颈,对外表现有几个方面: 大量请求阻塞 在高并发场景下,大量请求都需要操作数据库,导致连接数不够了

2021-01-29 20:39:35 153

转载 缓存与数据库一致性如何解决?先操作数据库,还是缓存?

当我们在做数据库与缓存数据同步时,究竟更新缓存,还是删除缓存,究竟是先操作数据库,还是先操作缓存?本文带大家深度分析数据库与缓存的双写问题,以供大家参考。本篇文章主要内容 数据缓存 为何要使用缓存 哪类数据适合缓存 缓存的利与弊 如何保证缓存和数据库一致性 不更新缓存,而是删除缓存 先操作缓存,还是先操作数据库 非要保证数据库和缓存数据强一致该怎么办 缓存和数据库一致性实战

2021-01-27 23:02:39 564

转载 一次搞懂 Runnable、Callable、Future、FutureTask

一般创建线程只有两种方式,一种是继承Thread,一种是实现Runnable接口。但是这两种创建方式有一个致命的缺点就是没有返回值,没返回值就让人很苦恼了啊。得用共享变量或者其他通信方式才能得到线程处理完的结果,就有点麻烦。还有一般不提倡使用继承Thread来创建线程方式,因为Java只有单继承,不能继承多个。但是Runnable是接口,所以可以让你的实现类同时实现多个接口。而且之后要上线程池,如果之前你是用Runnable来实现的,那就可以直接传入Runnable给线程池进行管理了!在Java1.

2021-01-26 21:42:40 677

转载 CountDownLatch 用法和源码

一文搞懂 CountDownLatch 用法和源码!CountDownLatch是多线程控制的一种工具,它被称为门阀、计数器或者闭锁。这个工具经常用来用来协调多个线程之间的同步,或者说起到线程之间的通信(而不是用作互斥的作用)。下面我们就来一起认识一下 CountDownLatch认识 CountDownLatchCountDownLatch 能够使一个线程在等待另外一些线程完成各自工作之后,再继续执行。它相当于是一个计数器,这个计数器的初始值就是线程的数量,每当一个任务完成后,计...

2021-01-25 22:35:46 159

原创 SSL的通讯原理

SSL工作原理简介​ SSL(Secure Socket Layer)是一种通信交互协议,由Netscape 公司在1994 年制定,主要目的就是确保在web 服务器和浏览器之间数据传输安全。SSL 协议层是在TCP/IP 层和应用层之间。SSL 协议分成以下几部分:Record Protocal 是SSL 的基础层,SSL 所有的上层操作都是基于这个层次,这层主要负责消息内...

2020-04-22 10:08:50 877

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除