1.工程搭建与验证
本文介绍如何基于阿里云脚手架快速搭建SpringBoot工程(选用2.7.6版本),并整合Spring Security。通过引入web和security依赖,编写测试接口,启动后自动跳转登录页,使用默认用户密码登录验证权限控制功能。完整代码见GitHub仓库Day01分支。
2.通用权限管理模型
本文介绍了ACL和RBAC两大权限模型。ACL通过用户/角色与权限直接关联,实现简单但管理复杂;RBAC基于角色授权,解耦用户与权限,支持角色继承与职责分离,更适用于复杂系统。还简要提及DAC、MAC、ABAC等模型供拓展了解。
1-常用过滤器介绍
Spring Security通过过滤器链实现安全控制,如SecurityContextPersistenceFilter管理上下文,UsernamePasswordAuthenticationFilter处理登录,CsrfFilter防范跨站请求伪造等。不同过滤器各司其职,按配置动态加载,共同构建完整安全体系。(238字)
2.过滤器链加载原理
通过分析DelegatingFilterProxy、FilterChainProxy与SecurityFilterChain源码,揭示了Spring Security过滤器链的加载机制:由web.xml中配置的DelegatingFilterProxy通过bean名称获取FilterChainProxy,再由其封装多个SecurityFilterChain,最终将十五个过滤器逐一加载执行,实现安全控制。
5-MongoDB实战演练
基于SpringDataMongoDB实现头条文章评论功能,涵盖增删改查、按文章ID查询评论及点赞功能。采用MongoDB存储,通过索引优化查询效率,支持分页查询子评论,构建高并发评论系统。
RocketMQ:底层Netty频繁OS OOM
本文记录了一例Java应用因多ClassLoader加载多个Netty的PooledByteBufAllocator,导致堆外内存超限引发OS OOM的排查过程。虽设MaxDirectMemorySize为1G,但7个独立实例各自占用近1G,总量远超限制。通过NMT、Arthas等工具定位问题,最终确认为中间件类加载隔离所致。建议短期调小堆内存腾出空间,长期推动中间件优化。
Docker
本文介绍Docker基础操作,涵盖镜像与容器管理、Dockerfile编写及自定义镜像构建。通过实例演示Java项目打包、编写Dockerfile、生成镜像、运行容器并映射端口,最终验证服务运行状态,适合初学者快速掌握Docker核心技能。(238字)
一场FullGC故障排查
本文记录了一次由Full GC引发的CPU使用率异常问题排查过程。通过分析JVM堆内存发现,大对象(List<Map>)导致老年代频繁占满,触发Full GC,进而引起CPU飙升。结合JPofiler工具定位到代码中Excel数据加载逻辑存在内存膨胀问题,最终提出优化方案并总结排查思路。
七、ThreadLocal
ThreadLocal是线程本地变量,为每个线程提供独立的变量副本,避免线程间竞争。每个线程可独立操作自己的数据,互不干扰。适用于如任务耗时统计等场景,提升性能。子线程无法继承父线程的ThreadLocal值,但可通过InheritableThreadLocal实现数据传递。底层通过ThreadLocalMap存储,线程退出时自动清理,也可手动remove释放内存。
Linux
本文介绍如何将SpringBoot项目打包并部署至Linux服务器。包含工程搭建、JDK安装配置、应用上传启动及通过心跳接口验证服务健康状态的完整流程,适用于Java应用的Linux部署测试场景。(238字)