Spring Boot 2系列(四十六):Spring AOP与拦截器实现API接口防刷
暴露在公网服务 API 通常需要做防刷机制,防止恶意请求,维护系统的稳定。
API 接口防刷前后端配合使用。后端实现主要有 拦截器方式 和 使用 AOP 对控制层(Controller)进行切面编程的方式。
Spring Boot 2系列(四十六):Spring AOP与拦截器实现API接口防刷
暴露在公网服务 API 通常需要做防刷机制,防止恶意请求,维护系统的稳定。
API 接口防刷前后端配合使用。后端实现主要有 拦截器方式 和 使用 AOP 对控制层(Controller)进行切面编程的方式。
Spring Boot 2系列(四十五):RestTemplate 源码分析与自定义请求和拦截器
Saas 项目分布式微服务架构,服务调用使用的是 RestTemplate,并且对 RestTemplate 的 Request 请求进行了自定义,做个记录。
自定义 Request 有很多作用。例如自定义请求实现安全认证,自定义请求拦截器实现负载均衡或请求代理等,可以非常灵活的做些定制化。
RestTemplate 相关文章:Spring Boot 2实践系列(二十一):RestTemplate 远程调用 REST 服务,Spring Cloud系列(四):客户端负载均衡 Ribbon。
Spring MVC API 接口响应的消息体最好统一结构,便于前端识别和规范。
最近先后接手了 2 个项目,接第一个项目觉的好乱,花了好几天略有理清;接第二个项目时觉的第一个项目还行,就这样认知底线又被突破。
一个没有规范化的团队和项目,项目经过多人多次迭代,简直是一团乱,属性、方法、表字段命名不规范,表关系设计不清晰,Mapper 层与业务强耦合,注释与实际功能不一致,业务包结构不规范,公共功能不抽出独立,新人接手难以通过代码快速了解业务,真是太糟糕了。
本篇基于个人在项目中遇到的以上原因而记录需要的规范。
MySQL系列(21): SQL控制流函数之 case,if,ifnull,nullif
SQL 语句中常需要通过逻辑判断来控制流程的操作,MySQL 标准提供了 CASE
,IF
,IFNULL
,NULLIF
控制流函数。
项目开发中经常需要将 List 转 Map 的操作,可以使用 for
循环,或 JDK 1.8 提供的 Stream 流,或 Google 的 Guava 集合库来实现。
Java基础:for 与 foreach 遍历Array,ArrayList,LinkedList 比较
开发中数据处理常用到遍历,Java 为遍历提供了 for 和 foreach,lambda 表达式 foreach,stream 流 foreach,今天对这几种使用做个简单测试。
测试 Array ,ArrayList,LinkedList 三种数据结构。
Java 8 Stream API 性能测试,这篇文章中的测试更合理全面。
数据结构与算法:定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数。
考查对栈的理解,入栈,出栈操作,解题思路。
Java基础:JDK 8 之 LocalDate,LocalTime,LocalDateTime 使用
因为 Date 实在不方便,特别是在日期计算时难用,并且格式化是非线程安全的。
JDK 8 提供 LocalDate, LocalTime, LocalDateTime 可以更方便操作日期时间,是线程安全的。
在 JDK 8 出来之前,大多会使用第三方库 Joda 来操作日期时间,GitHub joda-time。
国内工具类 Hutool 也提供了日期时间工具类,可以方便操作。
获取真实 IP 地址。一次项目中有记录请求方的 IP,某天收集到的 IP 地址全是相同的,后面定位到问题是在阿里云启用了 SLB(负载均衡),收集到的全是负载均衡服务器的 IP,而不是用户端的 IP,后面改为判断从 x-forwarded-for
中取。