RememberMe基本用法
本示例通过Spring Security实现RememberMe功能,用户勾选后登录信息持久化,关闭浏览器仍可免密访问。通过`remember-me` Cookie传递令牌,实现会话保持。但存在令牌泄露风险,可通过Token持久化至数据库并增加二次校验提升安全性,保障系统稳定与用户数据安全。(238字)
OAuth2.0使用场景
A网站需打印用户存于B网站的照片时,传统方式需共享账号密码,而OAuth2只需获取临时通行令牌,按需授权、安全可控。它实现服务间资源安全共享,虽类似单点登录但本质不同:前者是系统代用户操作资源,后者是用户一次登录多处通行。Spring Security的OAuth2兼具二者能力。
MongoDB的特点
MongoDB是一款高性能、高可用、高扩展的NoSQL数据库,支持嵌入式数据模型、多种存储引擎及索引类型,提供自动故障转移、分片扩展、区域化数据管理,并具备丰富查询能力,适用于海量数据存储与多样化应用场景。
Thread.sleep(0) 到底有什么用
Thread.Sleep(0)并非无用,它会触发操作系统立即重新进行CPU竞争,让其他线程获得执行机会,避免界面假死。而Sleep(1000)也不保证精确唤醒时间,因线程需等待调度。本文深入解析Windows抢占式调度机制,揭示Sleep背后的真实行为。
先检查,再编译以及编译的对应和引用传递问题
Java泛型类型检查在编译时针对引用而非对象本身。即使类型擦除后变为Object,编译器仍会根据引用声明的泛型类型(如ArrayList<String>)对add等方法调用进行类型检查,确保类型安全。
泛型在静态方法和静态类中的问题
泛型类中静态成员不能使用类的泛型参数,因静态成员不依赖对象实例,而泛型类型在对象创建时才确定。如`public class Test2<T>`中,`static T one`会编译错误。但可定义泛型方法,如`public static <T> T show(T one)`,其T为方法局部泛型,独立于类泛型,合法有效。
Configuration
被 @Configuration 标注的类视为Spring配置类,功能等同于XML配置文件。通过 @Bean 注册Bean,结合 AnnotationConfigApplicationContext 可启动IOC容器,加载并管理配置类及其中的Bean组件。
SpringCloud概述
Spring Cloud是微服务的统一解决方案,具备约定大于配置、组件丰富、开箱即用等特点。通过整合Netflix与Alibaba生态,形成完整技术栈,其中Spring Cloud Alibaba因Nacos、Sentinel等优秀组件成为主流选择。
Eureka服务注册与发现
本节介绍Spring Cloud中Eureka注册中心的搭建与使用,完成user-service和order-service服务注册,并实现多实例部署。虽Eureka逐步被Nacos替代,但仍具学习价值,为后续服务发现组件替换奠定基础。(239字)
什么是RESTful
RESTful是一种基于资源的API设计规范,强调使用统一的URI表示资源,通过HTTP动词(GET、POST、PUT、DELETE)操作资源,实现行为标准化。它解决了传统接口路径混乱、行为不统一的问题,具有结构清晰、易于理解与扩展的优势。
MyBatis映射关系
本文介绍MyBatis中四种映射关系:一对一(resultMap处理字段与属性映射)、一对多(使用`<collection>`标签关联集合)、多对一(通过`<association>`建立关联)及多对多(借助中间类实现双向集合映射),适用于复杂对象关系的数据持久化处理。
领域模型图(数据架构/ER图)
数据架构核心输出为ER图,包含实体、关系与属性,用于构建数据模型。通过业务域分解与领域建模,结合四色原型法(MI红色、PPT绿色、Role黄色、DESC蓝色)抽象业务,逐步提炼系统数据架构。
QLExpress使用及源码分析
QLExpress是阿里巴巴开源的轻量级规则引擎,支持通过注解与YAML配置实现业务逻辑与代码解耦。提供AST语法树解析、上下文构建及高效执行机制,适用于动态规则场景。GitHub地址:https://github.com/alibaba/QLExpress
01-认识Activiti
工作流指具有审批流程的业务(如请假、报销等),通过流程引擎实现可视化管理。它支持单/多节点审批,广泛应用于CRM、TMS、WMS等系统。主流技术包括BPMN、Activiti、Flowable等,推动了泛微、金蝶、用友等企业的发展。
[MES]数据库改造H2到MySQL(☆☆)
本文介绍如何运行并改造一个SpringBoot项目,包括从Gitee克隆代码、环境配置(JDK/Maven)、数据库从H2切换至MySQL等步骤,强调新人如何应对技术栈不熟、环境配置难等问题,并引导思考如何高效请教同事、快速融入团队开发。
先把磁盘文件拷贝到 PageCache 上,再拷贝到进程中
PageCache通过缓存磁盘数据到内存,提升读取性能,并支持预读和合并IO。但传输大文件时易占满缓存,影响小文件性能,此时应使用异步IO+直接IO,避免额外拷贝与缓存污染,尤其适用于高并发场景。
Java线程池实现架构
Java中线程池相关类主要包括Executor、ExecutorService、ScheduledExecutorService及其具体实现ThreadPoolExecutor和ScheduledThreadPoolExecutor。Executors为工厂类,用于创建不同类型的线程池。Executor是顶层接口,仅支持执行无返回值任务;ExecutorService扩展其功能,支持有返回值任务及线程管理;ScheduledExecutorService进一步增加定时调度能力。
ArrayList扩容机制
本文深入分析了Java中ArrayList的add及扩容机制。通过源码解析,详解ensureCapacityInternal、ensureExplicitCapacity和grow方法的工作流程,揭示其首次扩容默认至10,之后每次扩容为原容量1.5倍的核心逻辑,并区分length、length()与size()的用法差异。
认识OAuth2.0
OAuth2.0是一种开放授权协议,允许第三方应用在用户授权下获取资源访问权限,而无需获取用户账号密码。其核心是通过令牌(token)实现安全授权,广泛应用于第三方登录、服务间资源调用等场景,支持授权码、简化、密码和客户端四种模式,兼顾安全性与灵活性。
SpringCloud概述
Spring Cloud是Spring推出的微服务一站式解决方案,弥补了分散技术栈的整合难题。它具备约定大于配置、组件丰富、开箱即用等特点,完美支持云原生架构。版本以伦敦地铁站命名,如Hoxton.SR12,避免与子项目版本冲突,便于统一管理。
映射关系(1-1 1-n n-n)
MyBatis中通过resultMap实现关联映射:一对一使用resultMap解决字段与属性名不一致;一对多在“一”方配置<collection>,如用户包含多个角色;多对一通过<association>关联,如博客关联作者;多对多借助中间类,双方均用<collection>维护集合关系。
5.LoadBalance
本文深入解析Dubbo四大负载均衡算法:随机、轮询、最少活跃数与一致性哈希。结合流程图与数学分析,详解每种策略的实现原理与适用场景,重点剖析最小活跃数统计机制及一致性哈希的虚拟节点设计,帮助理解集群容错核心逻辑,助力面试与实战。
容器化部署引擎Docker
本节介绍Docker技术,解决微服务部署中环境不一致、依赖冲突等问题。Docker通过打包应用及依赖,实现跨环境无缝迁移;利用容器隔离机制,确保各服务互不干扰。相比虚拟机,Docker更轻量、启动更快、资源占用少,是现代应用交付的首选方案。
Eclipse运行SSM/SSH项目教程
本文介绍了如何在Eclipse中导入并运行Java Web项目,涵盖基础软件安装(Eclipse、JDK、Tomcat)、项目导入步骤、Eclipse与Tomcat的绑定配置及常见问题处理。提供多个SSM/SSH实战项目案例与视频讲解,助你快速搭建开发环境并成功运行项目。
MyBatis常见配置
本文介绍了 MyBatis 的核心配置机制,包括属性加载优先级(方法参数 > resource/url > properties 元素)、常见配置项如缓存、延迟加载、执行器类型等,并详解了多环境配置方式及事务管理器(JDBC 与 MANAGED)的使用场景,适用于多数据源管理和容器集成。
ArrayList扩容机制
本文深入分析了Java中ArrayList的add()及扩容机制。添加元素时,先调用ensureCapacityInternal()确保容量,首次添加时默认扩容至10;当元素数量超过当前数组长度时,触发grow()方法,将容量扩大为原来的1.5倍(通过位运算优化性能),并通过实例详解了扩容流程,同时辨析了length、length()和size()的区别。