开发笔记
共 11 篇文章
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、安全配置和异常处理等组件,适用于构建现代化前后端分离架构的权限系统。
Docker Compose配置文件详解
本文介绍了Docker Compose配置文件的架构与服务配置规范。配置文件由version、services、networks和volumes四大模块构成:version指定文件格式版本,services定义容器服务,networks配置网络,volumes声明数据卷。服务配置支持多种参数,核心配置项包括: 1. **build**:指定Dockerfile构建路径和参数,支持context/dockefile指定构建上下文,可通过args传递构建参数,3.4+版本引入target参数指定构建阶段; 2. **deploy**:Swarm集群专属配置,包含replicas副本数、placement节点约束、update_config滚动更新策略及restart_policy重启策略; 3. **depends_on**:定义服务依赖关系,控制启动/停止顺序,但不保证依赖服务完全就绪后再启动; 4. **网络与端口**:服务通过networks关联网络,ports配置端口映射; 5. **资源控制**:cap_add/drop调整内核能力,resources限制资源使用。 需注意在Swarm模式下,build、cap_add/drop等配置项将被忽略。配置文件结构示例展示了投票应用的复杂拓扑,包含Redis、数据库、可视化组件等服务的部署参数与约束条件。
Docker容器操作与命令详解
本文详细介绍了Docker容器的运行命令、参数解析及常用操作,包括MySQL和Redis的容器化部署示例,并涵盖了Docker镜像管理、容器生命周期操作及Dockerfile语法指南。
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字可精简细节示例。)
Shell脚本命令参数使用指南
本文详细介绍了用于启动、停止、备份和查看日志的Shell脚本命令参数,包括-s/--start启动服务、-stop停止服务、-c/--copy备份项目以及-l/--log查看日志,各命令均需指定端口号操作。
线程池配置优化指南
本文详细讲解如何根据CPU核数、任务类型(CPU密集型/IO密集型)合理设置线程池的核心线程数、最大线程数、队列容量等关键参数,提供具体计算公式和实践建议,帮助开发者优化线程池性能。
Spring IOC与AOP源码解析
本文深入解析了Spring框架的核心组件IOC与AOP的原理与实践。Spring通过IOC(控制反转)实现对象依赖管理,以BeanFactory和ApplicationContext容器为核心,通过XML配置定义Bean及其依赖关系,并支持单例、原型等作用域。依赖注入(DI)使组件解耦,提升灵活性。AOP(面向切面编程)分离横切关注点(如日志、事务),Spring采用代理模式(JDK动态代理或CGLIB)实现切面织入,支持前置、后置等增强类型,广泛用于监控、安全等场景。文章结合配置示例与代码片段,阐述了Spring如何通过IOC解耦对象、AOP模块化横切逻辑,帮助开发者高效构建可维护的Java企业级应用。
Java代码优化33条实用技巧
本文详细介绍了33条Java代码优化的实用技巧,涵盖性能提升、内存管理、编码规范等方面,通过具体示例说明如何减少代码体积、提高运行效率,帮助开发者编写更高质量的代码。
Linux系统安装Tesseract图文识别教程
本文详细介绍了在Linux系统中安装Tesseract OCR引擎的完整步骤,包括依赖包下载、环境变量配置、编译安装过程及最终版本验证方法,帮助用户顺利完成安装。
SQL查询优化与索引使用指南
本文总结了29条SQL查询性能优化建议,重点涵盖索引使用、避免全表扫描、NULL值处理、查询语句编写规范以及临时表与游标的合理使用,帮助开发者提升数据库操作效率。