- 博客(15)
- 资源 (18)
- 问答 (1)
- 收藏
- 关注
原创 Redis过期键删除策略
三种不同的删除策略:定时删除:在设置键的过期时间的同时,创建一个定时器,让定时器在键的过期时间来临时,立即执行对键的删除操作。惰性删除:放任键过期不管,但是每次从键空间中获取键时,都检查取得的键是否过期,如果过期的话,就删除该键;否则如果没有过期,就返回该键。定时删除:每隔一段时间,程序就对数据库(db)进行一次检查,删除里面的过期键。至于要删除多少过期键,以及要检查多少个数据库,则由算法决定。在这三种策略中,第一种和第三种为主动删除策略,而第二种则为被动删除策略。定时删除定时删除策略对
2020-06-05 07:48:33
215
转载 如何设计一个秒杀系统
系统要求高性能秒杀涉及大量的并发读和并发写,因此要求性能必须高;一致性秒杀中商品减库存的实现方式同样关键。可想而知,有限数量的商品同一时刻被很多倍的请求同时来减库存。在大并发更新数据的过程中保证数据的准确性,难度可想而知;高可用出现问题的时候要保证可用;架构原则4要1不要数据要尽量少所谓“数据要尽量少”,就是指用户请求的数据能少则少。请求的数据包括上传给系统的数据和系统返...
2019-04-07 16:20:17
418
原创 拦截请求(request)和响应(response)信息
思路使用拦截器;使用Filter;实现使用拦截器时不能获取到返回的信息(response里的content为空);使用Filter,成功获取到内容:@WebFilter(urlPatterns = "/*")public class GlobalFilter implements Filter { private Logger logger = Logge...
2018-06-05 09:52:56
11296
原创 前后端分离之shiro实现权限控制的一些问题
前言现在做项目,大多都是前后端分离;权限控制都是在后台实现,前端使用ajax调用后台接口。但是ajax对接口返回的重定向是没发处理的,会出现异常(具体错误是哪个一时想不起来了);当shiro发现失效后的session时通常会将该请求重定向到loginUrl,或者是用户访问的某个资源权限不足时(会重定向到unAuthorizedUrl),这时Ajax请求基本都是出错的。解决方案 ...
2018-06-02 17:33:02
17052
5
原创 Shiro权限管理实现(详解)
前言Apache Shiro 是 Java 的一个安全框架。功能强大,使用简单的Java安全框架,它为开发人员提供一个直观而全面的认证,授权,加密及会话管理的解决方案。功能介绍 资源-角色-权限 登录认证,密码加密(Authentication, Authorization, Cryptography) 用户角色和权限放入缓存(Caching) 会话管理(Se...
2018-05-06 10:41:50
7649
2
原创 微服务实现之Spring Cloud
前言这几年微服务可能用的比较多,大多都是使用Dubbo和Spring Cloud实现,至于优缺点不做评价,看下图:本文主要介绍: eureka 实现服务注册及服务发现 feign 声明式服务调用 zuul 实现简单的API Gateway注册中心<dependency> <groupId>org.springframew...
2018-04-21 22:42:15
319
原创 Protobuf Schema动态解析
初衷Protobuf是Google出品的一款很高效的序列化和反序列化库,但是也有些小缺点:就是需要先定义好数据结构(.proto),然后编译为对应的java文件;我的需求是这样的:由另一方给我提供数据结构和序列化之后的数据,我根据数据结构动态解析成对应的Schema,然后反序列化数据后根据Schema获取对应的值。准备<dependency> <g...
2018-02-10 12:00:11
4413
1
原创 Springboot Mybatis实现多数据源
准备依赖<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <version>1.5.4.RELEASE</version&g
2018-02-10 11:57:46
306
原创 SpringBoot Mybatis之读写分离
原理在执行不同的逻辑前,选择使用具体的DataSource;即将多个事先定义好的DataSource放在一个Map中,在需要DataSource的时候,使用具体的key来获取。先看一下javax.sql.DataSource接口:public interface DataSource extends CommonDataSource, Wrapper { Connection ...
2018-02-10 11:53:52
1631
原创 Jenkins部署项目额外配置
从tag中获取代码第一种方法:git parameter(需插件);第二种方法:Repositories高级配置 - Name: ref - Refspec: +refs/tags/:refs/remotes/origin/tags/ - Branch Specifier(black for 'any'): your _tag打包指定的moduleBuild: -
2018-01-03 11:47:04
1038
原创 服务器之间传输文件
linux: python -m SimpleHTTPServer port windows: python -m http.server port服务开启后: wget host:port/file 就可以下载了
2018-01-03 11:37:27
1159
原创 highcharts 显示点击的图例数据(隐藏其他)
function emitLegendItemClick(me) { var container = me.chart.container; var legenedItemIndex = me.index; if(container.curr_index == "undefined") { for (var i = 0; i < me.chart.series
2018-01-03 11:29:51
3413
原创 springboot thymeleaf + vue
Dependency<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <version>1.5.4.RELEASE</version></dependency><dependency> <groupId>o
2017-12-19 16:18:00
6427
原创 utc date 转 本地时间(java)
public static long utcDateToLocalTime(String utfDate) throws Exception{ Instant timestamp = Instant.parse(utfDate); ZonedDateTime localTime = timestamp.atZone(ZoneId.systemDefault());
2017-12-19 15:58:57
746
原创 日志(包含log4j和logback)传入logstash
logstash configlog4jinput { log4j { mode => "server" host => "0.0.0.0" port => 4560 } } output{ stdout { codec => rubydebug } elasticsearch { hosts => ["
2017-12-08 11:31:48
1895
TA创建的收藏夹 TA关注的收藏夹
TA关注的人