持久层框架MyBatisPlus
MyBatisPlus是MyBatis的增强工具,简化单表CRUD操作,支持条件构造器、分页、代码生成等功能,提升开发效率,广泛应用于企业级Java项目中。
练习
本课程围绕微服务核心组件展开,涵盖Nacos配置中心、Feign远程调用及Gateway网关搭建。通过实践掌握配置管理、服务通信优化与统一网关鉴权,提升系统可维护性与架构设计能力,强化代码整合与主动优化经验。
数据库设计三范式
数据库三范式简介:第一范式要求字段原子性,不可再分;第二范式在满足第一范式基础上,消除部分依赖,确保主键唯一确定非主键;第三范式消除传递依赖,避免非主键间相互决定。三者旨在减少数据冗余、提升维护性,但实际设计应结合业务需求灵活应用,不必拘泥范式。
大厂如何解决订单幂等问题
为保障分布式系统数据一致性,需实现接口幂等性。创建订单时,通过预生成唯一订单号并利用数据库主键唯一约束,防止重复插入;支付等操作借助Redis或状态字段记录处理标识,避免重复执行。针对ABA问题,采用版本号机制,更新时校验并自增版本号,确保数据修改的顺序性和正确性,有效解决网络重试导致的数据异常,适用于各类数据库操作场景。
了解SQL注入
SQL注入是通过恶意输入操纵数据库查询的攻击方式,可导致身份验证绕过、数据泄露、篡改甚至系统命令执行。其原理是在用户输入中插入恶意SQL代码,利用应用输入验证不足和动态拼接SQL语句的漏洞。常见防御包括白名单验证、参数化查询、错误信息屏蔽及使用IPS等网络防护措施。OWASP将其列为头号Web安全威胁。
RememberMe简介及用法
RememberMe功能实现用户关闭浏览器后仍保持登录状态,非简单存储账号密码。通过勾选“记住我”,服务端生成令牌并存入Cookie,后续请求自动携带该令牌验证身份。为提升安全性,可将Token持久化至数据库,并结合二次校验机制,防止令牌泄露导致的安全风险。
认证源码分析与自定义后端认证逻辑
本文深入分析Spring Security认证流程,从UsernamePasswordAuthenticationFilter到AuthenticationManager、ProviderManager,最终到UserDetailsService的自定义实现。详解认证链路中各组件职责,揭示如何通过实现UserDetailsService接口,结合数据库完成自定义用户认证,并配置Security配置类,实现权限控制与登录逻辑。
2. 整合切面,参数拦截+过滤
该类通过AOP切面记录Web请求日志,自动拦截Controller层请求,输出请求来源、URL、方式、方法及参数,并统计执行耗时,便于调试与监控,支持后续扩展至数据库或ELK存储。
3.分页
本文介绍了五种分页实现方式:MyBatis自带RowBounds内存分页、PageHelper插件分页、原生SQL分页、数组分页(查全量再subList)及拦截器分页。前两者属逻辑分页,数据量大时易耗内存;后三者为物理分页,直接在数据库层面控制数据返回,适合大数据量场景。总结指出:小数据量可用逻辑分页,推荐优先使用物理分页以提升性能与稳定性。(238字)