SecurityFilterChain
`SecurityFilterChain` 是Spring Security中定义安全过滤器链的接口,其唯一实现类 `DefaultSecurityFilterChain` 封装了请求匹配器和过滤器列表,用于判定请求是否匹配并提供对应的过滤器链,是Web安全配置的核心组件。
ArrayList扩容机制
ArrayList添加元素时,先调用ensureCapacityInternal()确保容量,首次添加时默认扩容至10。每次扩容通过grow()实现,新容量为原容量的1.5倍(oldCapacity + (oldCapacity >> 1)),提升性能。当元素数超过当前容量时触发扩容,保证添加高效进行。length为数组属性,length()为字符串方法,size()用于集合元素计数。
映射关系
MyBatis中通过resultMap实现一对一、一对多、多对一及多对多映射。一对一用于属性与字段映射;一对多通过`<collection>`关联主表与子表集合;多对一使用`<association>`关联对象;多对多借助中间类实现双向集合映射,灵活处理复杂关系数据。
分页
本文介绍了五种分页实现方式:MyBatis自带RowBounds内存分页、PageHelper插件分页、原生SQL分页、数组分页(查全量后subList)及拦截器分页。前两者属逻辑分页,数据全加载至内存,小数据量高效但大数量易溢出;后三者为物理分页,通过SQL或拦截器实现真实分页,适用于大数据量场景。推荐优先使用物理分页以提升性能与稳定性。(238字)
Spring Boot是什么
Spring Boot 于2013年启动,旨在简化Spring应用开发。它通过自动配置和内嵌服务器,减少XML配置,实现开箱即用,提升开发效率,是Spring生态中不可或缺的快速开发利器。
文档的分页查询
MongoDB支持统计、分页与排序查询。使用count()统计记录数,limit()限制返回数量,skip()跳过指定条数实现分页,sort()按字段升序(1)或降序(-1)排序,三者执行顺序为:先sort→skip→limit,与书写顺序无关。
SpringSecurity核心功能
SpringSecurity支持表单、OAuth2、SAML等多样认证方式,可扩展自定义逻辑;提供URL、方法级鉴权,支持SPEL与RBAC模型;兼具CSRF防护等安全防御,功能全面,是Java生态成熟的权限解决方案。(238字)
线程池初始化严禁使用Executors
阿里巴巴代码规范禁止使用Executors创建线程池,因易导致OOM。推荐手动创建ThreadPoolExecutor,合理设置参数,避免资源耗尽风险。
初始化Map大小并非用多少指定多少
初始化HashMap时,指定容量并非直接生效,而是会调整为最近的2的幂次(如1变2、3变4)。为避免扩容开销,建议使用Guava的Maps.newHashMapWithExpectedSize(),或手动按公式:容量 = 预期元素数 / 0.75 + 1 进行设置,提升性能。
服务器数据恢复—硬盘离线引发的mdisk热备盘同步失败的数据恢复
V7000系列存储中有72块硬盘,6组Mdisk组成一个大存储池,3块硬盘作为热备盘使用,其中一块热备盘是启用的状态。
这台服务器存储中有一块硬盘离线,热备盘自动启用并开始同步数据。数据同步过程中同一组mdisk中的另外一块硬盘离线,该组mdisk失效,热备盘同步失败,存储不可用。