摘要:
/** * 获取ip * @param request * @return */ public static String getIpAddr(HttpServletRequest request) { String ipAddress = null; try { ipAddress = reque 阅读全文
摘要:
Kaptcha 框架介绍 Kaptcha 框架是谷歌开源的一个可高度配置的实用验证码生成工具 验证码的字体/大小/颜色 验证码内容的范围(数字,字母,中文汉字!) 验证码图片的大小,边框,边框粗细,边框颜色 验证码的干扰线 验证码的样式(鱼眼样式、3D、普通模糊) 使用 引入依赖 <!--kaptc 阅读全文
摘要:
自定义全局异常 /** * 全局异常处理 */ @Data public class BizException extends RuntimeException { private Integer code; private String msg; public BizException(Integ 阅读全文
摘要:
统一业务状态码 BizCodeEnum开发 状态码定义约束,共6位数,前三位代表服务,后3位代表接口 比如 商品服务210,购物车是220、用户服务230,403代表权限 /** * * @Description 状态码定义约束,共6位数,前三位代表服务,后4位代表接口 * 比如 商品服务210,购 阅读全文
摘要:
引入依赖 <!--接口文档依赖--> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-boot-starter</artifactId> <version>3.0.0</version> </dependency> 阅读全文
摘要:
键值设置 key名设置 (1)【建议】:可读性和可管理性 以业务名(或数据库名)为前缀(防止key冲突),用冒号分隔,比如业务名:表名:id trade:order:1 (2)【建议】:简洁性 保证语言的前提下,控制key的长度,当key较多时,内存占用也不容忽视,例如 user:{uid}:fri 阅读全文
摘要:
缓存穿透 缓存穿透是指查询一个根本不存在的数据,缓存层和存储层都不会命中,通常处于容错的考虑,如果从存储层查不到数据则不写入缓冲层 缓存穿透将导致不存在的数据每次请求都要到存储层去查询,失去了缓存保护后端存储的意义 造成缓存穿透的基本原因有两个: 第一,自身业务代码或者数据出现问题 第二,一些恶意攻 阅读全文
摘要:
先搭建环境,一步一步慢慢完善 引入依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> <de 阅读全文
摘要:
redis集群方案比较 哨兵模式 在redis3.0以前的版本要实现集群一般是借助哨兵 sentinel 工具来监控 master 节点状态,如果 master 节点异常,则会做主从切换,将某一台 salve 作为 master,哨兵的配置略微复杂,并且性能和高可用性等各方面表现一般,特别是在主从切 阅读全文
摘要:
Redis 持久化 RDB快照(snapshot) 在默认情况下,Redis 将内存数据库快照保存在名字为 dump.rdb的二进制文件中 你可以对 Redis 进行设置,让它在 “N秒内数据集至少有 M 个改动”,这一条件被满足时,自动保存一次数据集 比如说,以下设置会让 Redis 在满足 “6 阅读全文