本文开篇以系统登录页面的安全加固实践说起,详细分析了服务端提供的`loginEncryptKey` API 代码存在的问题,如接口对任意用户名返回密钥导致的安全风险,以及在高并发场景下可能引起的Redis缓存穿透问题。针对这些问题,提出了改进措施:首先对接口请求参数进行严格校验,确保用户名合法且存在于系统中;其次,优化加密密钥的生成与获取逻辑,采用预生成密钥池结合自定义哈希算法的方式,减少重复生成密钥的资源消耗。此外,为了适应集群环境,提出了利用Redis哈希表存储密钥和结合本地缓存的解决方案。最后,文章建议将密钥预置于应用配置文件中,简化了集群环境下的数据同步需求。
本文描述了一次针对SpringBoot应用中MyBatisPlus分页查询的性能优化过程。在优化时,作者重写了BaseMapper的`selectPage`方法,通过`Wrapper`的`between`操作添加了ID区间限制以提升SQL执行效率。然而,由于在业务服务类中循环调用分页查询时未每次都创建新的`Wrapper`对象,导致`id BETWEEN ? AND ?`条件重复出现在SQL中。那么,如何解决这个问题呢?