Spring Boot 系列文章

   锲而不舍的干到底,结果只能是成功
  • 2023-09-25 高并发SpringBoot项目使用Undertow替代Tomcat作为Web容器

    相对SpringBoot默认的Web容器Tomcat,高并发情况下UnderTow的性能更优

  • 2023-08-24 Springboot 整合ELK+kafka采集日志

    logback自定义appender把日志写入到kafka中 通过logstash最终落地到elasticsearch中,简单易用 只需引入pom依赖,无代码侵入

  • 2023-08-23 自定义分布式锁注解

    AOP切面实现redis分布式锁的加锁与解锁

  • 2023-08-23 基于模板设计模式对数据迁移封装

    只需实现不同业务的具体读写逻辑代码,数据迁移任务通过分页切分数据发送MQ消息,消费者接受MQ消息迁移指定页的数据

  • 2023-03-30 实现百万数据excel导出功能

    异步处理,使用easyexcel,分页查询,多个sheet,计算limit的起始位置,文件上传到oss,通过webSocket推送通知,总条数可配置,orderby商品编码

  • 2023-01-18 8种异步实现方式,你用过几种

    线程池,Future,异步框架CompleteableFuture,Spring注解@Async,Spring ApplicationEvent事件,消息队列,第三方异步框架比如Hutool的ThreadUtil,Guava异步

  • 2023-01-04 SpringBoot父子线程间传递ThreadLocal

    主线程与子线程间传递threadLocal变量的4种方式,手动设置、线程池设置TaskDecorator、InheritableThreadLocal(不建议)、TransmittableThreadLocal

  • 2022-11-14 SpringBoot多环境切换配置

    创建不同环境的配置文件,maven多环境配置,maven资源过滤

  • 2022-11-12 SpringBoot Web开发基础

    json格式化,拦截器设置,过滤器设置,过滤gzip请求解压数据

  • 2022-11-07 SpringBoot数据脱敏

    配置文件数据脱敏,接口返回数据脱敏,日志文件数据脱敏

  • 2022-11-05 SpringBoot内置tomcat的优化

    tomcat容器的线程数,超时时间,JVM优化

  • 2022-09-24 Conditional条件注解的使用

    Condition接口,CondtionContext上下文,自定义Condition,多个Condition的执行顺序

  • 2022-09-06 使用Guava-Retry优雅的实现重处理

    重试时机,停止重试策略,重试间隔策略、阻塞策略,重试监听器RetryListener,重试原理

  • 2022-07-05 SpringBoot动态切换多数据源

    基于Spring的AbstractRoutingDataSource抽象类,使得能够在多数据源情况下任意切换,相当于动态路由的作用,根据传参指定数据源,没有则选择默认数据源

  • 2022-07-03 推荐一个好用的JWT库nimbus-jose-jwt

    对称加密、非对称加密token的java实现

  • 2022-06-12 25种坏代码示例

    重复代码,长函数,过大的类,过长参数列,发散式变化,散弹式修改,数据泥团,临时字段,中间人...

  • 2022-06-11 程序员必备-加签验签

    对称加密、非对称加密,加签验签概念,常见加密算法,加签验签java 实现

  • 2022-05-30 接口设计的36个小技巧

    接口参数校验,修改老接口时,注意兼容性,防重处理,重点接口考虑线程池隔离,接口功能具备单一性,考虑异步,并行调用场景,批量处理思想,恰当使用缓存,可变参数配置化,sql优化,代码锁的粒度控制好等,考虑接口幂等性

  • 2022-05-30 日志打印的15个建议

    日志上快速定位问题的好帮手,打印好日志非常重要,恰当的日志级别,打印入参出参,使用slf4j日志框架等

  • 2022-04-08 Redis+Caffeine 两级缓存实战

    两级缓存的访问流程,springboot项目通过注解的方式来操作缓存,推荐使用自定义注解,然后在切面中处理缓存,减少对原业务代码的入侵

  • 2022-03-22 5种限流算法,7种限流方式

    固定窗口算法,滑动窗口算法,漏桶算法,令牌桶算法,Redis分布式限流,Google 的 Java 开发工具包 Guava 中的限流工具类 RateLimiter,阿里开源的 Sentinel 限流卫兵

  • 2022-02-25 SpringMVC项目与SpringBoot项目添加单元测试类

    单元测试是开发同学干的事情,系统的整体功能与单元测试用例的测试正常是强相关的,测试代码也需要维护

  • 2022-02-09 订单号重复的解决方案

    PostConstruct注解和redis实现分布式流水号,自定义雪花算法工具类生成分布式唯一id

  • 2022-01-04 接口性能优化的18种方案

    批量操作数据库,异步思想,使用缓存,提前初始化到缓存,池化思想,事件回调思想,远程调用改为并行,锁粒度避免过粗,切换存储方式,索引,优化sql,避免大事务,优化深度分页问题,优化程序逻辑结构,压缩传输响应内容,海量数据处理,线程池设计要合理,fullGC,线程打满,太多IO请求,限流请求

  • 2022-01-03 接口性能优化的11个技巧

    添加索引,让索引生效,sql优化,远程调用使用并行、redis缓存数据异构方案,避免重复调用如循环查询数据库、无限递归,异步处理,避免大事务,synchronzied和redis分布式锁控制好锁粒度,远程调用分页查询数据,redis缓存与二级缓存的使用,分库分表解决数据库连接资源不足、磁盘IO的性能瓶颈、检索数据耗时和消耗cpu资源等问题,辅助功能开启慢查询日志、prometheus普罗米修斯监控、skywalking接口链路跟踪快速定位耗时问题

  • 2021-12-28 Springboot实现各种参数校验,Valid和Validated注解的使用

    post、put、get请求的传参数校验,分组校验,嵌套校验,集合校验,自定义校验,编程式校验,校验快速失败,实现原理解析

  • 2021-10-28 部门数据权限与请求方法访问权限

    看renren和ruoyi开源框架是如何实现部门数据权限访问和请求方法的权限控制

  • 2021-06-11 建议尽量不做联表查询

    单表查询利于后续维护,代码可复用性高,效率问题,减少冗余字段的查询

  • 2021-03-14 Spring Security 中的Bcrypt加密算法

    bcrypt算法使用慢哈希,降低密码暴力破解攻击

  • 2021-03-11 10w 级别Excel数据导入的优化记录

    使用EasyExcel提升读取excel的性能,缓存数据库查询结果集HashMap匹配校验,insert批量插入,适当使用并行流优化插入速度,利用掉网络IO等待时间,避免循环打印无用日志,导入结果回写原excel文件提供下载,异步分页导出大量数据

  • 2021-02-25 Springboot整合多数据源配置

    mysql做了主从,springboot应用如何配置主从数据库连接做读写分离

  • 2021-01-27 SpringBoot 解决跨越问题的3种方案

    了解同源策略,Spring5实现接口WebMvcConfigurer,新建一个过滤器在response响应头加入Access-Control-Allow-Origin,@CrossOrigin注解在类或方法上最小粒度控制跨越访问

  • 2021-01-26 Http客户端工具类

    hutool已经做了http客户端工具类的封装,引入maven 依赖拿来即用,自己想封装一个,简单轻松的实现get、post、put、delete 以及上传、下载请求,也是可以的。

  • 2021-01-05 定时任务调度实战2

    springboot + quartz + mysql 实现持久化分布式调度,springboot整合xxl-job分布式调度任务平台,springboot整合elastic-job分布式任务调度平台

  • 2020-11-24 无侵入式的统一json格式返回

    对于项目已有的多种格式返回,如何无侵入式的统一返回

  • 2020-11-07 Pagehelper的分页原理

    为啥PageHelper.startPage后执行mybatis的数据库查询就能分页了,底层使用了ThreadLocal变量

  • 2020-09-25 定时任务调度实战1

    linux系统下使用crontab,在单体应用中使用Timer定时器,Spring Scheduled注解,Quartz框架,分布式调度框架xxl-job,elastic-job,saturn,tbschedule

  • 2020-09-25 开放API接口签名验证

    让你的开放接口不再裸奔

  • 2020-09-24 spring oauth2+JWT后端自动刷新access_token

    JWT 存储在客户端的认证字符串,无状态化,它可以存储当前登录的用户等认证信息,jwt的4种注销方法,jwt的刷新

  • 2020-09-09 SpringBoot整合RabbitMQ实现事务补偿

    与阿里的Setta框架提供的强一致性事务补偿不一样,MQ提供的是弱一致性事务补偿

  • 2020-08-13 MyBatis框架下SQL注入攻击的3种方式

    SQL漏洞的概念,猜解数据库,绕过密码登录验证,判断可注入点,预编译语句预防SQL注入

  • 2020-06-28 飞天班第53节:全局分布式id的设计

    Mycat和Sharding jdbc如何通过UUID和雪花算法实现全局id

  • 2020-04-20 40个Spring常用注解

    链式编程注解,跨域注解,@Mapper和@Repository的区别,@PostConstruct服务启动后执行一些初始操作,@PreDestroy服务停止前执行一些操作,本地事务管理,@Autowired与@Resource装配bean的两种方式,@Slf4打印日志注解,@RequestMapping的post、put、get、delete请求,@Aspect切面编程,@JsonFormat前端日期格式化,@ControllerAdvice统一异常处理

  • 2020-04-19 飞天班第24节:企业项目构建-阿里云视频点播

    开通阿里云视频点播服务了解收费规则,视频安全HLS加密,使用服务端API/SDK上传播放视频,搭建视频微服务集成到项目中

  • 2020-04-12 飞天班第21节:企业项目研发(五)POI实际应用

    EasyExcel介绍,POI读写excel,课程分类excel导入,树展示

  • 2020-04-11 飞天班第20节:企业项目研发(四)OSS云存储

    阿里云OSS云存储,创建OSS微服务模块上传文件,头像

  • 2020-04-04 飞天班第17节:企业项目研发(一)MyBatisPlus使用

    主键策略雪花算法,自动填充,乐观锁版本处理,分页插件,逻辑删除,性能分析插件,条件构造器QueryWrapper\UpdateWrapper,basemapper方法sql是如何注入mapper xml 的源码分析

  • 2020-03-25 飞天班第13节:SpringSecurity权限控制

    使用SpringSecutiy用户认证和授权,结合前端实现不同权限不同视图,登录页定制和记住我,整合JWT无状态验证

  • 2020-03-22 飞天班第12节:SpringBoot开发单体应用(下)

    精通Swagger,整合Yapi Api管理平台,@Async异步任务与失效原因分析,@Scheduled定时任务默认单线程,会造成任务阻塞,配置多线程,邮件任务,富文本编辑器EditorMd详解

  • 2020-03-21 飞天班第11节:SpringBoot开发单体应用(中)

    页面国际化配置,后端国际化错误信息返回,登录拦截器,前端Thymeleaf页面的CRUD操作,error页面处理,快速扒前端页面

  • 2020-03-18 飞天班第10节:SpringBoot开发单体应用(上)

    静态资源映射原理,什么是web jars,首页和网站图标,Thymeleaf模版引擎在Springboot项目中的使用,MVC自动配置原理,内容协商视图解析器,格式转化器Formatter,实现WebMvcConfigurer,如何让MVC自动配置失效,定义添加视图控制,添加资源处理

  • 2020-03-15 飞天班第9节:SpringBoot操作数据库

    SpringData集成JDBC原理,集成Druid,集成Mybatis,Mybatis的流式查询、传递参数的7种方法、转义字符、sql和include标签配合使用定义可重用sql代码段,bind标签模糊查询传参,查询是否存在不再使用count,改用limit 1

  • 2020-03-14 飞天班第8节:SpringBoot原理探究

    springboot如何实现自动配置,yaml语法学习,多环境配置,JSR303数据校验,@Validated与@Valid注解校验实体类,自动配置的原理,创建自己的启动器,springboot面试题,spring 三大框架的学习路线图