logo
publist
写文章

简介

该用户还未填写简介

擅长的技术栈

可提供的服务

暂无可提供的服务

Java反射机制原理

从 Spring XML 配置的一个问题出发,系统整理反射的本质、类加载三阶段及获取 Class 对象的三种方式。**

#java#开发语言#spring +1
Java并发编程 synchronized 如何真正保证线程安全

本文摘要: synchronized是Java实现线程安全的核心机制,其本质是通过"写后读"(Write-Before-Read)思想确保并发准确性。文章首先指出volatile的局限性:无法保证复合操作的原子性。然后深入剖析synchronized的工作原理:通过独占锁机制,确保一个线程完成读写操作后,其他线程才能访问共享数据。文章特别强调常见的错误用法:将读写操作拆分到不同同步方法中,导致锁保

文章图片
#java#jvm#后端 +2
SpringBoot 向 IOC 容器注册组件的两种姿势:@Configuration 与 @Import

标注的类等同于一份 XML 配置文件,@Bean方法等同于<bean>标签,方法名是 bean 的 id,返回值是容器中的实例,默认单例;配置类本身也是组件(因为被@Component标注),且容器中管理的是它的CGLIB 代理对象;为Full 模式,代理保证@Bean方法无论调用多少次都返回容器中的同一个单例;false为Lite 模式,每次调用都新建对象,但省去代理开销、启动更快——有组件依赖

文章图片
#spring boot#后端#java +1
SpringBoot 静态资源映射规则与定制

本文系统介绍了SpringBoot静态资源访问的核心规则。默认支持/static、/public等四个类路径目录的静态资源映射,请求优先由Controller处理,未匹配则交由静态资源处理器。通过配置static-path-pattern可添加访问前缀,static-locations可替换默认映射目录(注意2.4+版本配置项变更)。Webjars资源通过/META-INF/resources/w

文章图片
#spring boot#java#spring +1
Java 反射机制详解(二)——Field、Method、Constructor操作

本文摘要: Java反射核心操作指南:通过Class对象实现字段、方法和构造器的动态调用。关键点包括: 字段操作:区分getFields()与getDeclaredFields(),掌握private字段的暴力反射(setAccessible) 方法调用:通过getMethod/getDeclaredMethod获取方法,使用invoke执行,注意参数类型匹配 对象创建:两种方式(Class.ne

#java#开发语言#spring
Soring Java 动态代理:JDK 与 CGLIB 详解

本文介绍了两种动态代理技术:JDK动态代理和CGLIB动态代理。JDK动态代理要求被代理类必须实现接口,通过Proxy类创建代理对象,在InvocationHandler中实现增强逻辑。CGLIB则通过继承方式实现代理,使用Enhancer创建代理对象,利用MethodInterceptor进行方法拦截。两者都能在不修改源代码的情况下为方法添加额外功能,JDK代理基于接口而CGLIB基于继承,分别

文章图片
#java#开发语言#spring +2
Java 并发编程基础:线程状态与上下文切换深度解析

本文深入解析Java并发编程基础,重点探讨线程状态与上下文切换机制。首先区分并发与并行的本质差异:并行是多个线程同时执行不同任务,而并发是多个线程竞争同一资源。文章详细剖析线程生命周期(新建、就绪、运行、等待、终止)及操作系统非公平队列调度原理,强调start()方法只是将线程提交至就绪队列而非立即执行。核心部分阐述上下文切换的概念、开销(毫秒级时间消耗)及其对性能的影响,指出多线程并非总是优于单

#java#开发语言#jvm +1
Java并发编程 CPU 高速缓存解析

本文从CPU物理架构出发,分析了高速缓存存在的必要性及其设计原理。多核CPU通过三级缓存(L1/L2/L3)解决总线竞争问题,实现真正并行。缓存以64字节的缓存行为基本单元,但可能引发伪共享问题。文章详细阐述了缓存命中机制、原子操作原理,以及缓存带来的并发隐患——多核副本导致的数据不一致问题。最后总结了缓存设计的核心价值:在提升CPU利用率的同时,也引入了并发编程的复杂性。这些底层机制是理解现代C

#java#开发语言#后端 +1
Java并发编程 final 语义与跨线程变量访问

本文从JVM内存模型出发,分析了多线程编程中变量访问的限制。关键点在于:每个线程拥有独立的栈空间,局部变量存储在各自栈中,线程间无法直接访问。Java通过隐式final机制限制子线程修改主线程变量,只能读取副本。引用类型(对象、数组)存储在共享堆中,子线程可通过不改变引用指向的方式修改对象内部属性,实现线程间数据共享。相比之下,基本类型因存储在栈中且无法绕过final限制,不能用于跨线程修改。理解

#java#开发语言#jvm +1
MyBatis 缓存机制:一级缓存与二级缓存原理详解

摘要: MyBatis提供一级缓存(SqlSession级别)和二级缓存(namespace级别)优化查询性能。一级缓存基于Session内的HashMap,相同参数查询直接返回,失效于CUD操作或Session关闭;二级缓存跨Session共享,需手动开启且要求实体类序列化,通过flushInterval避免脏读。两者区别在于作用域、生命周期及共享性,二级缓存存在集群同步和外部修改问题。实际项目

#mybatis#java#后端 +3
    共 13 条
  • 1
  • 2
  • 请选择