- 博客(27)
- 收藏
- 关注
原创 JVM——内存模型
Java内存模型(JMM)定义了多线程环境下共享数据的读写规则,确保数据的原子性、可见性和有序性。原子性问题如i++操作在多线程中可能被中断,可通过synchronized解决,它通过Monitor机制控制线程访问。可见性问题涉及线程缓存与主内存不一致,volatile关键字可确保变量修改对所有线程可见,但不保证原子性。有序性问题在多线程中由指令重排引起,volatile也能防止指令重排序。CAS(比较并交换)是一种乐观锁技术,适用于低竞争环境,与volatile结合可实现无锁并发。synchronized
2025-05-23 09:00:27
1150
原创 JVM——垃圾回收
本文详细介绍了Java垃圾回收机制的核心概念和实现方法。首先,文章解释了如何判断对象可以回收,包括引用计数法和可达性分析算法,并介绍了四种引用类型:强引用、软引用、弱引用和虚引用。接着,文章探讨了三种垃圾回收算法:标记清除、标记整理和标记复制,并分析了它们的优缺点。随后,文章介绍了分代垃圾回收机制,将堆内存划分为新生代和老年代,并详细描述了MinorGC的流程。此外,文章还介绍了六种常见的垃圾回收器,包括串行、并行和并发的垃圾回收器,并重点分析了CMS和G1垃圾回收器的工作原理和优缺点。最后,文章提供了垃圾
2025-05-23 08:55:07
1180
原创 Spring Boot——自动配置
本文详细介绍了Spring框架中bean的多种加载方式及其控制机制。首先,通过XML和注解方式声明bean,包括使用@Component及其衍生注解、@Bean注解等。其次,探讨了扩展初始化、加载配置类、使用@Import注解、实现ImportSelector和ImportBeanDefinitionRegistrar接口等高级加载方式。此外,还介绍了bean加载控制,包括编程式和注解式匹配环境加载bean,以及通过属性配置解耦业务bean。最后,深入分析了SpringBoot自动配置的原理,包括@Spri
2025-05-22 11:19:03
1268
原创 SpringCloud(三)
Feign是一个声明式的HTTP客户端,旨在简化远程服务调用的代码编写,提高可读性和维护性。它通过Spring MVC注解来声明远程调用的信息,如服务名称、请求方式、路径和参数等。Feign支持自定义配置,如日志级别,并提供了性能优化选项,如使用连接池替代默认的URLConnection。最佳实践建议将FeignClient抽取为独立模块,以避免紧耦合。此外,Spring Cloud Gateway作为统一网关,提供了身份认证、权限校验、服务路由、负载均衡和请求限流等功能。它基于Spring 5的WebFl
2025-05-22 11:15:16
691
原创 JVM——类加载器
类加载器是JVM中用于将字节码文件(.class文件)加载到虚拟机中的组件,确保Java程序能够启动。类加载器包括启动类加载器、扩展类加载器、应用类加载器和自定义类加载器。双亲委派模型是类加载器的工作机制,通过逐级委托避免类重复加载,确保类库API的安全性和唯一性。类装载的执行流程包括加载、验证、准备、解析、初始化、使用和卸载七个阶段。加载阶段获取类的二进制数据并创建Class对象,验证确保类符合JVM规范,准备为类变量分配内存,解析将符号引用转换为直接引用,初始化执行静态变量和代码块的初始化,使用阶段执行
2025-05-21 08:45:40
968
原创 SpringCloud(二)
本文主要介绍了Ribbon负载均衡和Nacos注册中心的相关内容。在Ribbon负载均衡部分,详细阐述了负载均衡的原理、流程、策略以及懒加载与饥饿加载的区别和配置方式。Nacos注册中心部分,首先介绍了Nacos的快速入门步骤,包括服务注册和依赖配置;其次,深入探讨了Nacos的服务分级存储模型,包括服务跨集群调用问题、集群属性设置和负载均衡策略;最后,介绍了Nacos的环境隔离功能及其与Eureka的区别。此外,还简要提及了Nacos的配置管理功能,包括统一配置管理、配置热更新、配置共享以及Nacos集群
2025-05-21 08:39:15
890
原创 JavaWeb——Request & Response
本文主要介绍了HTTP请求和响应的基本概念及其在Java Web开发中的应用。Request是浏览器发送的HTTP请求数据,由Tomcat解析并封装成对象,用于获取请求行、请求头和请求体中的数据。Response是服务器处理请求后返回的响应数据,开发人员可以通过该对象设置响应行、响应头和响应体。此外,文章还详细讲解了请求转发和重定向的实现方式及其特点:请求转发在服务器内部资源间跳转,地址栏不变,可共享数据;重定向可跳转到任意资源,地址栏变化,但不能共享数据。这些内容为理解Web开发中请求与响应的处理机制提供
2025-05-19 09:38:16
746
原创 SpringCloud——EureKa
本文介绍了微服务架构的基本概念及其优势,包括单一职责、面向服务、自治和隔离性等特点。重点讨论了微服务拆分及远程调用的注意事项,如避免重复开发、数据独立性和接口暴露等。此外,文章详细阐述了Eureka注册中心的原理及其在微服务架构中的作用,包括服务注册、发现和健康监控等。最后,提供了搭建EurekaServer和服务注册的具体步骤,以及如何通过服务名称进行服务发现和负载均衡的实现方法。
2025-05-19 09:37:08
1012
原创 HTTP协议
Hyper Text Transfer Protocal,超文本传输协议,规定了浏览器和服务器之间数据传输的规则1.基于TCP协议:面向连接,安全2.基于请求-响应模型的:一次请求对应一次响应3.HTTP协议是无状态的协议:对于事务处理能力没有记忆能力。每次请求-响应都是独立的。
2025-05-12 13:14:37
284
原创 Spring——面试题
Spring框架中的单例Bean默认是线程安全的,前提是Bean中不包含可变的成员变量。如果存在可变状态,需通过多例模式或加锁来确保线程安全。AOP(面向切面编程)用于封装与业务无关的公共行为,减少重复代码,提升系统可维护性,常见应用包括日志记录、缓存处理和事务管理。Spring事务管理分为编程式和声明式,后者基于AOP实现,通过拦截方法进行事务处理。事务失效的常见场景包括异常被捕获、抛出检查异常以及非public方法。Spring Bean的生命周期包括BeanDefinition的创建、实例化、依赖注入
2025-05-12 13:13:28
629
原创 JVM——内存结构
什么是JVM?Java Virtual Machine - java程序的运行环境好处:(1)一次编写,到处运行(2)自动内存管理,垃圾回收功能(3)数组下标越界检查(4)多态的基石比较JDK,JVM,JRE。
2025-04-22 08:00:00
560
原创 Redis——内存策略
Redis之所以性能强,主要的原因就是基于内存存储。然而单节点的Redis其内存大小不宜过大,会影响持久化或主从同步性能。当内存使用达到上限时,就无法存储更多数据了,再添加数据时就会淘汰其他数据。所有就有内存淘汰策略。1.过期策略对于Redis缓存,我们可以通过expire命令给Redis的key设置TTL(存活时间):可以发现,当key的TTL到期以后,再次访问name返回时nil,说明这个key已经不存在了,对应的内存也得到释放。从而起到内存回收的目的。1.1过期策略——DB结构。
2025-04-20 14:23:50
1178
原创 Redis——通信协议
RESP 通信协议以其简洁、高效和易读的特点,成为了分布式系统和数据库领域的重要通信协议。无论是 Redis 开发者,还是从事分布式系统设计的工程师,掌握 RESP 协议的原理和应用都具有重要意义。
2025-04-20 12:13:23
314
原创 Redis——网络模型
Redis 以其卓越的性能和灵活的特性,成为众多开发者在缓存、消息队列等场景的首选。而 Redis 强大性能的背后,其网络模型与 IO 机制发挥着关键作用。数据的读写速度直接影响着用户体验。大家日常逛的电商平台,流畅加载商品详情页离不开它;接下来,我们就深入挖掘一下,看看 Redis 是如何通过它们实现高效运转的。
2025-04-18 20:46:19
1040
原创 SpringBoot——配置文件
Spring Boot 参数配置化是一种强大而实用的技术,它通过将配置与代码分离,为应用程序带来了更高的灵活性、可维护性和可扩展性。无论是简单的配置修改,还是复杂的多环境管理,Spring Boot 都提供了丰富多样的配置方式来满足我们的需求。掌握参数配置化技术,能够让我们在 Spring Boot 开发中更加得心应手,轻松应对各种配置需求。
2025-04-17 22:27:13
656
原创 Redis——五种数据类型
Redis 中的每种数据类型都由特定的数据结构来实现,数据结构为数据类型提供了底层的存储和操作机制。不同的数据类型具有不同的特性和应用场景,数据结构的选择和设计是为了更好地满足这些特性。数据结构是实现数据类型的基础,它们共同构成了 Redis 强大的功能体系,使得 Redis 能够在不同的应用场景中,根据数据的特点和操作需求,选择合适的数据类型和对应的数据结构来高效地处理和管理数据。
2025-04-17 13:49:45
854
原创 Redis——数据结构
Redis 的五种数据结构 String、Zset、Set、Hash、List 实际上是由底层 6 种数据结构支撑的,这 6 种底层数据结构分别是:简单动态字符串(SDS)、链表、字典、跳跃表、整数集合、压缩列表。
2025-04-17 10:10:57
1636
原创 Spring——AOP
面向切面编程,面向方面编程),其实就是面向特定方法编程,它允许开发者在不修改原有代码的基础上,对程序多个模块中重复出现的功能进行统一管理。动态代理是面向切面编程最主流的实现。而springAOP是spring框架的高级技术,旨在管理bean对象过程中,主要通过底层的动态代理机制,对特定的方法进行编程。
2025-04-15 09:53:15
844
1
原创 MySQL——MVCC(多版本并发控制)
MVCC作用主要我们在快照读的时候来决定我们提取的到底是哪个版本MVCC实际上实现原理是3部分,隐藏字段,Undo log ,Read View隐藏字段:主要取决于事务id,和回滚指针undo log 版本链Read View读视图。
2025-04-13 15:04:00
853
1
原创 MySQL——事务
事务是一组操作的集合,他是一个不可分割的工作单位,事务把所有的操作作为一个整体一起向系统提交或撤销操作请求,以及这些操作要么同时成功要么同时失败。默认MySQL的事务是自动提交的,也就是说,当执行一条DML语句,MySQL会立即隐式的提交事务。
2025-04-13 13:16:35
1107
原创 Redis——实现消息队列
消息队列:Message Queue,字面意思就是存放消息的队列,最简单的消息队列模型包括3个角色以下就是基于Redis结构特性来实现消息队列。
2025-04-10 22:57:37
718
原创 MySQL——锁
读锁不会阻塞其他客户端的读,但是会阻塞写。写锁及会阻塞其他客户端的读,也会阻塞其他客户端的写对于DML操作插入,删除,查询表中的数据互相兼容,对数据库结构操作失败客户端一:开启事务进行查询语句客户端二:更新数据操作库表:为该库表添加一个字段失败意向共享锁与读锁兼容,与写锁互斥。意向互斥锁与读锁写锁互斥。1.针对索引进行检索时,对已存在的记录进行等值匹配时,将自动优化为行锁2.InnoDB的行锁是针对于索引加的锁不通过索引条件检索数据,那么InnoDB将对表中的所有记录加锁,此时。
2025-04-09 22:00:18
1002
原创 MySQL——InnoDB引擎架构
当我们去操作MySQL的时候先去操作缓冲区,如果缓冲区没有数据会将磁盘中的数据加载回来,然后再存储在缓冲区中,我么在增删改的时候都去操作缓冲区,然后缓冲区中的数据 会以一定频率通过后台线程写道磁盘架构中进行永久化保存。
2025-04-09 12:28:38
1021
原创 Spring Boot Starter开发
是 Spring Boot 的依赖管理方式,是一组预定义的依赖集合。其用途在于简化项目依赖配置,避免手动添加和管理大量依赖。1.所以spring-boot-starter还是很强大的,不需要手动处理复杂的依赖关系,只需在pom.xml文件中引入就可以java中调用,大家试想一下大家在做项目的时候只是引入了mybatis-plus-boot-starter就可以在java中对数据库进行操作了可见有多么便捷,好用。2.如果不开发引入spring-boot-starter就要自己编写配置类手动创建配置类。
2025-03-23 22:28:55
532
原创 redis实现分布式锁(一)
其实是够用的,它是基于每个服务器的锁监视器来完成的,但是集群模式下synchronized,有多个jvm,多个锁监视器,不共享,所以就需要多个jvm可以共享看到的锁监视器分布式锁。好啦,这样就可以实现一个简单的分布式锁啦,但是还会存在解锁安全的问题,这个问题在我下一篇文章,如果觉得有用的话麻烦给我点个关注,我是废材,会持续更新有用的编程知识!所以需要保证添加锁和设置过期时间的原子性,redis本身就有方法保证添加锁和设置过期时间。但是大家想一下,有没有可能获取锁了但还没有给锁设置过期时间服务器就宕机了。
2025-03-17 18:56:30
226
原创 全局异常处理器
接下来我们就可以自定义异常类了,登录时产生的异常(LoginFailedExceeption),注册时产生的异常(AccountNotFoundException)等等,但是大家也不要担心这些异常类里面实现也很简单,因为全局异常处理器已经帮我们对于异常做出了处理,我们只需要继承实现就可以了,这样只是为了更加规范。方法抛出指定类型的异常时,Spring会自动调用被@ExceptionHandler注解的方法来处理该异常。我是废材,如果觉得有用的话麻烦点个关注,我会持续更新有用的编程知识!
2025-03-16 21:32:49
352
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人