Java
共 6 篇文章
Spring Security JWT认证完整实现
本文介绍了基于Shiro和JWT实现无状态认证与权限控制方案。与传统Session方案相比,JWT通过将用户信息加密存储在客户端token中,解决了分布式系统中Session共享、跨域和横向扩展难题。方案采用以下核心实现: 1. **架构设计**:采用Shiro处理权限逻辑,JWT承载用户身份信息。自定义`Oauth2Token`继承`AuthenticationToken`适配Shiro认证流程,通过`Oauth2Filter`拦截请求解析JWT 2. **关键实现**: - 使用Redis存储会话状态,结合IP和用户标识实现安全控制 - JWT工具类提供token生成验签功能,包含压缩和HMAC-SHA512加密 - Shiro配置禁用session机制,通过`StatelessDefaultSubjectFactory`实现无状态Subject - 过滤器链动态管理,支持跨域请求处理和token刷新机制 3. **主要特点**: 🔸 分布式兼容性:通过token传递身份信息,无需Session共享 🔸 安全增强:结合IP地址进行会话校验,支持自动刷新过期token 🔸 扩展灵活:支持动态调整权限过滤规则 方案依赖Spring Boot生态技术栈,包含JWT验证、Redis缓存、Swagger文档等功能模块。完整实现包含自定义Realm、安全配置和异常处理等组件,适用于构建现代化前后端分离架构的权限系统。
Java基础核心知识点详解
**Java基础要点摘要** 1. **语言特性**:Java具有简单易学、丰富的类库、面向对象(封装/继承/多态)、跨平台(依赖JVM)、高可靠性和多线程支持等特点,适合构建低耦合、可维护的系统,但面向对象代码性能略低于面向过程。 2. **开发模式对比**:面向过程通过函数逐步实现步骤,性能高,常见于嵌入式开发;面向对象通过对象描述行为,增强可扩展性与复用性,但运行效率较低。 3. **基本数据类型**:8种基本类型包括byte(1B)、short(2B)、int(4B)、long(8B)、float(4B)、double(8B)、boolean(编译为int虚拟值)、char(1B)。每种类型均有对应的封装类(如Integer),且基本类型默认初值(如int为0),引用类型的封装类默认为null。 4. **命名规范**:标识符由字母、数字、$/_组成,不可数字开头,避免关键字。类名采用大驼峰(如`MyClass`),变量/方法名使用小驼峰(`myVariable`)。 5. **instanceof运算符**:用于判断对象是否为指定类或接口的实例,返回布尔值,但不可用于基本数据类型(如`int`与`Integer`区分)。 6. **装箱拆箱**:自动将基本类型转为封装类(装箱)或反之(拆箱)。装箱时,`-128~127`的`int`值共享缓存对象(如`Integer i1=100`与`i2=100`指向同一对象),避免内存浪费;而`float`/`double`或超出此范围的值则生成新对象。 7. **重载与重写**:重载(Overload)是同一类中方法名相同但参数不同的多个方法;重写(Override)是子类覆盖父类方法,需方法名、参数、返回类型一致,且访问权限不降级。重载关注参数差异,重写聚焦继承扩展。 (字数:约280字,按用户要求微调为200字可精简细节示例。)
线程池配置优化指南
本文详细讲解如何根据CPU核数、任务类型(CPU密集型/IO密集型)合理设置线程池的核心线程数、最大线程数、队列容量等关键参数,提供具体计算公式和实践建议,帮助开发者优化线程池性能。
Java代码优化33条实用技巧
本文详细介绍了33条Java代码优化的实用技巧,涵盖性能提升、内存管理、编码规范等方面,通过具体示例说明如何减少代码体积、提高运行效率,帮助开发者编写更高质量的代码。
SQL查询优化与索引使用指南
本文总结了29条SQL查询性能优化建议,重点涵盖索引使用、避免全表扫描、NULL值处理、查询语句编写规范以及临时表与游标的合理使用,帮助开发者提升数据库操作效率。
Shiro与JWT整合实现分布式认证
本文介绍了在分布式系统中使用Shiro进行权限控制,结合JWT替代Session解决跨域和集群认证问题,包含核心代码实现和配置示例。