练习
本课程围绕微服务核心组件展开,涵盖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字)
数据库检索:如何使用 B+ 树对海量磁盘数据建立索引?
本节深入探讨磁盘环境下大规模数据检索的挑战与解决方案,重点解析B+树如何通过索引与数据分离、多阶平衡结构及双向链表连接叶子节点等设计,显著减少磁盘I/O次数,实现高效查找、插入、删除和范围查询,广泛应用于数据库系统。