-
高并发SpringBoot项目使用Undertow替代Tomcat作为Web容器
相对SpringBoot默认的Web容器Tomcat,高并发情况下UnderTow的性能更优
-
Springboot 整合ELK+kafka采集日志
logback自定义appender把日志写入到kafka中 通过logstash最终落地到elasticsearch中,简单易用 只需引入pom依赖,无代码侵入
-
自定义分布式锁注解
AOP切面实现redis分布式锁的加锁与解锁
-
基于模板设计模式对数据迁移封装
只需实现不同业务的具体读写逻辑代码,数据迁移任务通过分页切分数据发送MQ消息,消费者接受MQ消息迁移指定页的数据
-
实现百万数据excel导出功能
异步处理,使用easyexcel,分页查询,多个sheet,计算limit的起始位置,文件上传到oss,通过webSocket推送通知,总条数可配置,orderby商品编码
-
8种异步实现方式,你用过几种
线程池,Future,异步框架CompleteableFuture,Spring注解@Async,Spring ApplicationEvent事件,消息队列,第三方异步框架比如Hutool的ThreadUtil,Guava异步
-
SpringBoot父子线程间传递ThreadLocal
主线程与子线程间传递threadLocal变量的4种方式,手动设置、线程池设置TaskDecorator、InheritableThreadLocal(不建议)、TransmittableThreadLocal
-
SpringBoot多环境切换配置
创建不同环境的配置文件,maven多环境配置,maven资源过滤
-
SpringBoot Web开发基础
json格式化,拦截器设置,过滤器设置,过滤gzip请求解压数据
-
SpringBoot数据脱敏
配置文件数据脱敏,接口返回数据脱敏,日志文件数据脱敏
-
SpringBoot内置tomcat的优化
tomcat容器的线程数,超时时间,JVM优化
-
Conditional条件注解的使用
Condition接口,CondtionContext上下文,自定义Condition,多个Condition的执行顺序
-
使用Guava-Retry优雅的实现重处理
重试时机,停止重试策略,重试间隔策略、阻塞策略,重试监听器RetryListener,重试原理
-
SpringBoot动态切换多数据源
基于Spring的AbstractRoutingDataSource抽象类,使得能够在多数据源情况下任意切换,相当于动态路由的作用,根据传参指定数据源,没有则选择默认数据源
-
推荐一个好用的JWT库nimbus-jose-jwt
对称加密、非对称加密token的java实现
-
25种坏代码示例
重复代码,长函数,过大的类,过长参数列,发散式变化,散弹式修改,数据泥团,临时字段,中间人...
-
程序员必备-加签验签
对称加密、非对称加密,加签验签概念,常见加密算法,加签验签java 实现
-
接口设计的36个小技巧
接口参数校验,修改老接口时,注意兼容性,防重处理,重点接口考虑线程池隔离,接口功能具备单一性,考虑异步,并行调用场景,批量处理思想,恰当使用缓存,可变参数配置化,sql优化,代码锁的粒度控制好等,考虑接口幂等性
-
日志打印的15个建议
日志上快速定位问题的好帮手,打印好日志非常重要,恰当的日志级别,打印入参出参,使用slf4j日志框架等
-
一个注解,在Spring Boot中优雅实现循环重试!
Retryable注解
-
Redis+Caffeine 两级缓存实战
两级缓存的访问流程,springboot项目通过注解的方式来操作缓存,推荐使用自定义注解,然后在切面中处理缓存,减少对原业务代码的入侵
-
5种限流算法,7种限流方式
固定窗口算法,滑动窗口算法,漏桶算法,令牌桶算法,Redis分布式限流,Google 的 Java 开发工具包 Guava 中的限流工具类 RateLimiter,阿里开源的 Sentinel 限流卫兵
-
SpringMVC项目与SpringBoot项目添加单元测试类
单元测试是开发同学干的事情,系统的整体功能与单元测试用例的测试正常是强相关的,测试代码也需要维护
-
订单号重复的解决方案
PostConstruct注解和redis实现分布式流水号,自定义雪花算法工具类生成分布式唯一id
-
接口性能优化的18种方案
批量操作数据库,异步思想,使用缓存,提前初始化到缓存,池化思想,事件回调思想,远程调用改为并行,锁粒度避免过粗,切换存储方式,索引,优化sql,避免大事务,优化深度分页问题,优化程序逻辑结构,压缩传输响应内容,海量数据处理,线程池设计要合理,fullGC,线程打满,太多IO请求,限流请求
-
接口性能优化的11个技巧
添加索引,让索引生效,sql优化,远程调用使用并行、redis缓存数据异构方案,避免重复调用如循环查询数据库、无限递归,异步处理,避免大事务,synchronzied和redis分布式锁控制好锁粒度,远程调用分页查询数据,redis缓存与二级缓存的使用,分库分表解决数据库连接资源不足、磁盘IO的性能瓶颈、检索数据耗时和消耗cpu资源等问题,辅助功能开启慢查询日志、prometheus普罗米修斯监控、skywalking接口链路跟踪快速定位耗时问题
-
Springboot实现各种参数校验,Valid和Validated注解的使用
post、put、get请求的传参数校验,分组校验,嵌套校验,集合校验,自定义校验,编程式校验,校验快速失败,实现原理解析
-
部门数据权限与请求方法访问权限
看renren和ruoyi开源框架是如何实现部门数据权限访问和请求方法的权限控制
-
建议尽量不做联表查询
单表查询利于后续维护,代码可复用性高,效率问题,减少冗余字段的查询
-
Spring Security 中的Bcrypt加密算法
bcrypt算法使用慢哈希,降低密码暴力破解攻击
-
10w 级别Excel数据导入的优化记录
使用EasyExcel提升读取excel的性能,缓存数据库查询结果集HashMap匹配校验,insert批量插入,适当使用并行流优化插入速度,利用掉网络IO等待时间,避免循环打印无用日志,导入结果回写原excel文件提供下载,异步分页导出大量数据
-
Springboot整合多数据源配置
mysql做了主从,springboot应用如何配置主从数据库连接做读写分离
-
SpringBoot 解决跨越问题的3种方案
了解同源策略,Spring5实现接口WebMvcConfigurer,新建一个过滤器在response响应头加入Access-Control-Allow-Origin,@CrossOrigin注解在类或方法上最小粒度控制跨越访问
-
Http客户端工具类
hutool已经做了http客户端工具类的封装,引入maven 依赖拿来即用,自己想封装一个,简单轻松的实现get、post、put、delete 以及上传、下载请求,也是可以的。
-
定时任务调度实战2
springboot + quartz + mysql 实现持久化分布式调度,springboot整合xxl-job分布式调度任务平台,springboot整合elastic-job分布式任务调度平台
-
无侵入式的统一json格式返回
对于项目已有的多种格式返回,如何无侵入式的统一返回
-
Pagehelper的分页原理
为啥PageHelper.startPage后执行mybatis的数据库查询就能分页了,底层使用了ThreadLocal变量
-
定时任务调度实战1
linux系统下使用crontab,在单体应用中使用Timer定时器,Spring Scheduled注解,Quartz框架,分布式调度框架xxl-job,elastic-job,saturn,tbschedule
-
开放API接口签名验证
让你的开放接口不再裸奔
-
spring oauth2+JWT后端自动刷新access_token
JWT 存储在客户端的认证字符串,无状态化,它可以存储当前登录的用户等认证信息,jwt的4种注销方法,jwt的刷新
-
SpringBoot整合RabbitMQ实现事务补偿
与阿里的Setta框架提供的强一致性事务补偿不一样,MQ提供的是弱一致性事务补偿
-
MyBatis框架下SQL注入攻击的3种方式
SQL漏洞的概念,猜解数据库,绕过密码登录验证,判断可注入点,预编译语句预防SQL注入
-
飞天班第53节:全局分布式id的设计
Mycat和Sharding jdbc如何通过UUID和雪花算法实现全局id
-
40个Spring常用注解
链式编程注解,跨域注解,@Mapper和@Repository的区别,@PostConstruct服务启动后执行一些初始操作,@PreDestroy服务停止前执行一些操作,本地事务管理,@Autowired与@Resource装配bean的两种方式,@Slf4打印日志注解,@RequestMapping的post、put、get、delete请求,@Aspect切面编程,@JsonFormat前端日期格式化,@ControllerAdvice统一异常处理
-
飞天班第24节:企业项目构建-阿里云视频点播
开通阿里云视频点播服务了解收费规则,视频安全HLS加密,使用服务端API/SDK上传播放视频,搭建视频微服务集成到项目中
-
飞天班第21节:企业项目研发(五)POI实际应用
EasyExcel介绍,POI读写excel,课程分类excel导入,树展示
-
飞天班第20节:企业项目研发(四)OSS云存储
阿里云OSS云存储,创建OSS微服务模块上传文件,头像
-
飞天班第17节:企业项目研发(一)MyBatisPlus使用
主键策略雪花算法,自动填充,乐观锁版本处理,分页插件,逻辑删除,性能分析插件,条件构造器QueryWrapper\UpdateWrapper,basemapper方法sql是如何注入mapper xml 的源码分析
-
飞天班第13节:SpringSecurity权限控制
使用SpringSecutiy用户认证和授权,结合前端实现不同权限不同视图,登录页定制和记住我,整合JWT无状态验证
-
飞天班第12节:SpringBoot开发单体应用(下)
精通Swagger,整合Yapi Api管理平台,@Async异步任务与失效原因分析,@Scheduled定时任务默认单线程,会造成任务阻塞,配置多线程,邮件任务,富文本编辑器EditorMd详解
-
飞天班第11节:SpringBoot开发单体应用(中)
页面国际化配置,后端国际化错误信息返回,登录拦截器,前端Thymeleaf页面的CRUD操作,error页面处理,快速扒前端页面
-
飞天班第10节:SpringBoot开发单体应用(上)
静态资源映射原理,什么是web jars,首页和网站图标,Thymeleaf模版引擎在Springboot项目中的使用,MVC自动配置原理,内容协商视图解析器,格式转化器Formatter,实现WebMvcConfigurer,如何让MVC自动配置失效,定义添加视图控制,添加资源处理
-
飞天班第9节:SpringBoot操作数据库
SpringData集成JDBC原理,集成Druid,集成Mybatis,Mybatis的流式查询、传递参数的7种方法、转义字符、sql和include标签配合使用定义可重用sql代码段,bind标签模糊查询传参,查询是否存在不再使用count,改用limit 1
-
飞天班第8节:SpringBoot原理探究
springboot如何实现自动配置,yaml语法学习,多环境配置,JSR303数据校验,@Validated与@Valid注解校验实体类,自动配置的原理,创建自己的启动器,springboot面试题,spring 三大框架的学习路线图