5 王绍桦

尚未进行身份认证

我要认证

不积跬步无以至千里!不积小流无以成江海!

等级
TA的排名 2w+

实现商品秒杀总结

业务场景 秒杀业务的特点就是开售瞬间大量用户的涌入,例如双十一抢购,短时间内会有大量用户涌入系统,例如一种只有500件的商品会有几百万用户在同时抢购,而最终抢购成功的用户只有500人,大多数用户都是抢购失败。业务分析 短时间内大量用户的高并发请求常常会压垮系统,而瓶颈就在于数据库,数据库每秒仅能支持几万的并发量,而对于抢购每秒百万千万的并发量根本不足以应对,所以...

2020-01-22 09:29:47

实现商品秒杀之——Redis+RabbitMQ消息队列

RabbitMQ消息队列 RabbitMQ是一套开源的消息队列服务软件,实现了高级消息队列协议(AMQP),服务器采用Erlang语言开发,支持多种客户端,如:Python、Ruby、Java、JMS、C#、PHP、JavaScript等。其特点包含:异步处理:通过把消息发送给消息中间件,消息中间件并不立即处理它,而是后续再慢慢处理 应用解耦:单个系统出现故障,消息队列也...

2020-01-21 11:14:24

实现商品秒杀之——Redis Lua脚本

Lua脚本 lua是一个小巧的脚本语言,其设计目的是为了通过灵活嵌入应用程序中从而为应用程序提供灵活的扩展和定制功能,lua由标准c编写而成,几乎在所有操作系统和平台上都可以编译、运行,reids2.6版本后内嵌了对lua环境的支持,解决了长久以来不能高效地处理cas(check-and-set)命令的缺点,并且可以通过组合使用多个命令,轻松实现以前很难实现或者不能高效实现的模式。...

2020-01-17 15:28:58

实现商品秒杀之——Redis Watch机制

Watch命令 watch命令可以监控一个或多个键,一旦其中有一个键被修改或删除,之后的事务就不会执行。监控一直持续到exec命令,事务中的命令是在exec之后才执行的,所以在multi命令后可以修改watch监控的键值。假设我们通过watch命令在事务执行之前监控了多个Key,这时在watch之后有任何Key的值发生了变化,exec命令执行的事务都将被放弃。在业务中的应用...

2020-01-16 18:28:30

实现商品秒杀之——Redis分布式锁

分布式锁 分布式锁是用来控制分布式系统对共享资源进行有序的操作,在分布式系统中,如果不同的系统或是同一个系统的不同主机之间共享了一个或一组资源,那么访问这些资源的时候,往往需要互斥来防止彼此干扰来保证一致性,在这种情况下,便需要使用到分布式锁。 实现原理包含:互斥性:保证同一时间只有一个客户端可以拿到锁,也就是可以对共享资源进行操作 安全性:只有加锁的服务才能有解锁权限 避...

2020-01-09 11:11:56

源码分析Shiro框架的密码加密及校验

前言 我们知道Shiro框架有提供凭证匹配器类HashedCredentialsMatcher来实现密码校验的,在该类中可以自定义加密方式、加密次数、编码规则等//权限管理@Beanpublic SecurityManager securityManager() { DefaultWebSecurityManager securityManager = new...

2019-11-28 11:33:22

SpringBoot通过Jedis整合Redis

1.pom.xml添加Jedis依赖<dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId></dependency>2.application.properties添加Redis配置# Redis...

2019-11-27 10:44:47

SpringBoot整合RabbitMQ消息队列

1.RabbitMQ简介 RabbitMQ是一套开源的消息队列服务软件,实现了高级消息队列协议(AMQP),服务器采用Erlang语言开发,支持多种客户端,如:Python、Ruby、Java、JMS、C#、PHP、JavaScript等。2.Erlang安装 (1)安装RabbitMQ需要先安装Erlang语言开发包,官网下载地址:https://www.erlang.org...

2019-11-26 11:24:30

通过PDF.js实现PDF文件在线预览

1.官网下载PDF.js 我的资源地址:https://download.csdn.net/download/rexueqingchun/119741192.下载解压后放到项目资源文件目录中 如上图所示,Springboot项目可直接放在static目录下3.预览PDF文件 由于PDF插件的模版文件为viewer.html,所以预览请求的固定地址为http://...

2019-11-13 10:26:24

SpringBoot配置MongoDB实现文件存储

1.官网下载MongoDB,下载完运行mongod服务 我的资源地址:https://download.csdn.net/download/rexueqingchun/117044182.application.properties配置MongoDB连接#mongodbspring.data.mongodb.uri=mongodb://localhost:27017/dhyjt...

2019-09-09 17:26:44

SpringBoot配置多数据源

1.application.properties添加两个数据源连接参数#数据源1spring.datasource.db1.driver-class-name=oracle.jdbc.driver.OracleDriverspring.datasource.db1.jdbc-url=jdbc:oracle:thin:@192.168.100.1:1521:orclspring.data...

2019-09-04 11:15:30

Java读取FTP上TXT文件内容

1.pom.xml添加连接FTP依赖包<dependency> <groupId>commons-net</groupId> <artifactId>commons-net</artifactId> <version>3.1</version></dependency>2....

2019-08-28 16:51:53

摇一摇抽奖

情景分析: 商家时常会搞一些抽奖活动,这类活动有个特点就是抽奖用户会在抽奖时间突然大量的涌入系统,这时DB瞬间承受压力倍增,随时可能出现宕机的情况,从而影响整个业务。需求分析: 这类活动通常有以下几个需求:同一用户最多只能抽到一个奖品; 若有多轮抽奖,上轮中奖的用户不能再次中奖;优化思路:既然瓶颈很大一部分是DB导致的,那我们就想办法把请求拦截在上游...

2019-08-13 18:09:38

通过JS判断请求来源为移动端还是电脑端

情景分析: 我们时常有需求当访问项目首页时,需要根据请求来源不同显示不同的页面,这时我们就可以首先返回一个公共页面,然后在页面通过JS判断请求来源,再根据来源不同进行请求转发。<!DOCTYPE html><html xmlns:th="http://www.thymeleaf.org" ><head><meta charset...

2019-08-09 11:05:34

SpringBoot整合Redis缓存

1.pom.xml添加redis依赖<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId></dependency>2.appli...

2019-07-30 17:31:06

SpringBoot整合WebSocket实现群聊和私聊

1.pom.xml添加websocket依赖<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-websocket</artifactId></dependency>2.创建...

2019-07-29 14:27:11

SpringBoot整合Ehcache缓存

1.pom.xml配置依赖包<!-- ehcache依赖 --><dependency> <groupId>net.sf.ehcache</groupId> <artifactId>ehcache</artifactId> <version>2.8.3</version>...

2019-06-24 11:22:45

SpringBoot整合Redis实现Shiro分布式Session共享

前言:我们知道shiro有一套自身的session管理机制,默认的session是存储在运行jvm内存中的,在单应用服务器中可共享session,但系统若为分布式架构,则不同应用服务器之间无法共享session,要实现不同应用服务器之间共享session,则需要重写SessionManager中的SessionDao,把session存储在缓存中,这里我们采用redis来存储,引用shiro-...

2019-06-17 18:02:58

EasyExcel实现导入excel

1.pom.xml配置依赖包<!--xls格式excel依赖包--><dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>3.17</version>...

2019-06-13 16:23:57

Java通过FreeMarker生成Word文件

1.pom.xml配置freemarker依赖包<dependency> <groupId>org.freemarker</groupId> <artifactId>freemarker</artifactId> <version>2.3.28</version></depen...

2019-04-26 18:12:25

查看更多

勋章 我的勋章
  • GitHub
    GitHub
    绑定GitHub第三方账户获取
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv2
    勤写标兵Lv2
    授予每个自然周发布4篇到6篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。
  • 分享宗师
    分享宗师
    成功上传21个资源即可获取