自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(83)
  • 收藏
  • 关注

原创 【面试八股】一篇文章讲清楚JVM面试常考

文章摘要: JVM内存区域分为线程共享(方法区、堆)和线程私有(程序计数器、虚拟机栈、本地方法栈)。方法区存储类元数据,JDK8后由元空间实现;堆是GC主战场,存放对象实例;程序计数器记录线程执行位置;虚拟机栈管理方法调用栈帧。类加载通过双亲委派模型保障安全性与唯一性,但SPI、Tomcat等场景会破坏此模型。垃圾回收(GC)自动化管理堆内存,通过引用计数或可达性分析判断对象存活,解决C语言手动释放内存的痛点,提升开发效率与稳定性。(150字) 关键词: JVM内存结构、双亲委派、类加载机制、垃圾回收、GC

2026-04-17 10:27:50 490 40

原创 【Linux】Linux基本使用和程序部署

本文介绍了Linux环境搭建和常用命令的使用方法。主要内容包括:1)Linux环境搭建的四种方式,推荐使用云服务器;2)演示如何购买阿里云服务器并连接Xshell终端;3)详细讲解ls、pwd、cd、touch、cat、mkdir、rm、cp、mv、tail等常用命令的语法和功能;4)介绍vim文本编辑器的基本使用方法。文章提供了大量命令行截图示例,适合Linux初学者快速掌握基础操作。重点强调了命令的安全使用注意事项,如rm -rf的危险性。

2026-03-10 09:30:00 2474 50

原创 【博客系统】基于Spring全家桶的博客系统(下)

本文介绍了博客系统持久层代码的实现,包括实体类、Mapper接口以及请求响应模型的封装。使用MyBatis-Plus简化数据库操作,通过Lombok减少样板代码,并采用严格的参数校验确保数据安全。系统分为请求类(Request)和响应类(Response),前者用于接收前端参数并进行校验,后者统一后端返回数据结构。整体设计注重代码简洁性和安全性,为后续业务逻辑开发奠定基础。

2026-03-07 09:30:00 787 33

原创 【博客系统】基于spring全家桶的博客系统(上)

本文介绍了一个基于Spring Boot + MyBatis-Plus的简易博客系统开发过程。系统实现了用户登录、博客发布、查看等基础功能。项目准备包括数据库建表(博客表和用户表)、Maven依赖引入(Web、MyBatis-Plus等)和目录结构搭建。文章展示了核心功能界面效果,并提供了代码获取链接。该系统适合刚学完Spring基础的同学作为练手项目。

2026-03-06 09:30:00 566 37

原创 【Spring】Spring事务和事务传播机制

本文介绍了Spring中事务的实现方式,包括编程式事务和声明式事务。编程式事务通过手动代码控制事务的开启、提交和回滚;而声明式事务使用@Transactional注解自动管理事务,简化了操作。文章通过转账和用户注册的示例,展示了事务如何确保数据一致性——操作要么全部成功,要么全部失败。测试结果表明,提交事务时数据正常插入,回滚或异常时则不会影响数据库。声明式事务相比编程式事务更加简洁高效,是Spring推荐的事务管理方式。

2026-03-01 17:58:45 2128 48

原创 【图书管理系统】基于Spring全家桶的图书管理系统(下)

本文详细介绍了图书管理系统的后端接口实现,涵盖登录验证、图书增删改查及分页查询等核心功能。系统采用SpringBoot+MyBatis框架,通过Controller、Service、Mapper三层架构实现业务逻辑与数据交互。关键点包括:登录接口的参数校验与密码安全处理;Mapper层注解与XML混合使用;分页查询的SQL优化;以及统一结果返回、异常处理等规范化设计。文章提供完整代码示例和详细说明,帮助开发者快速构建健壮的图书管理系统,并为后续功能扩展打下基础。

2026-02-18 10:13:44 917 40

原创 【图书管理系统】基于Spring全家桶的图书管理系统(上)

本文介绍了基于Spring Boot和MyBatis的图书管理系统开发准备工作。主要内容包括:数据库表设计(用户表和图书表)、引入MyBatis和MySQL驱动依赖、配置数据库连接及日志、创建实体类映射数据库表。文章详细展示了SQL建表语句、配置文件设置和模型类定义,为后续开发打下基础。系统采用Lombok简化代码,实现用户管理和图书管理的基本功能。

2026-02-15 09:30:00 1317 26

原创 【SpringBoot】统一功能处理详解

本文介绍了如何通过@ControllerAdvice和ResponseBodyAdvice实现统一的数据返回格式。首先创建ResponseAdvice类实现ResponseBodyAdvice接口,重写supports方法判断是否处理响应,并在beforeBodyWrite方法中将响应数据封装为统一的Result对象。文中还提供了Result类的实现代码,包含成功、失败和未登录等情况的处理方法。最后指出当前实现存在某些操作异常但数据正常插入的问题,并附上测试控制器的示例代码。该方案能有效统一API响应格式,

2026-02-12 09:30:00 2400 34

原创 【SpringBoot】一篇文章讲清楚拦截器所有知识

摘要 本文介绍了Spring框架中的拦截器功能,主要讲解拦截器的快速入门、定义与配置方法,并详细分析了拦截路径设置和执行流程。拦截器允许在请求处理前后执行预设逻辑,例如检查用户登录状态。通过实现HandlerInterceptor接口并重写preHandle、postHandle等方法,可以自定义拦截逻辑。配置拦截器时,需通过WebMvcConfigurer注册,并指定拦截路径(如/**)和排除路径(如登录接口)。拦截器的核心作用是在请求进入Controller前进行验证,未通过验证的请求将被拦截。文章还通

2026-02-10 09:30:00 1363 38

原创 【Mybatis】Mybatis-plus使用介绍

MyBatis-Plus 是一款 MyBatis 的增强工具,在保留 MyBatis 核心功能的基础上,提供了更便捷的开发体验和丰富的功能支持。本文介绍了 MyBatis-Plus 的基本特性、快速上手步骤以及常见注解的使用方法。通过创建数据库表、搭建 SpringBoot 项目、定义实体类和 Mapper 接口,开发者可以快速实现单表的 CRUD 操作。文章还讲解了 @TableName、@TableField 等注解的作用,帮助开发者处理表名与字段名的映射关系。MyBatis-Plus 的简单配置和强大

2026-02-08 09:30:00 2005 46

原创 【Mybatis】动态SQL与留言板小项目

摘要 本文介绍了MyBatis中动态SQL的使用方法,重点讲解了<if>和<trim>标签的应用场景及实现方式。通过示例代码演示了如何利用<if>标签处理非必填字段的默认值问题,以及<trim>标签解决SQL语句中多余逗号的问题。文章对比了XML配置和注解两种实现方式,指出XML配置在动态SQL处理上更为简洁高效。最后提到<trim>标签的四个关键属性及其作用,为复杂SQL语句的构建提供了灵活解决方案。

2026-02-04 10:30:00 1716 49

原创 【Mybatis】一篇文章让你学会Mybatis基础内容

本文介绍了MyBatis数据库操作的基本方法,包括查询、插入、删除和更新。针对查询结果映射问题,提出了三种解决方案:起别名、结果映射和开启驼峰命名。插入操作演示了如何获取自增主键ID,删除和更新操作展示了基本用法。通过示例代码和日志截图,直观展示了各种操作的效果和注意事项。文章重点解决了数据库字段名与Java属性名不匹配的问题,推荐使用开启驼峰命名的方式简化开发。

2026-02-02 09:30:00 739 32

原创 【Mybatis】正式学习Mybatis前,你需要知道这些——

本文介绍了MyBatis框架的入门使用,主要包括: 准备工作 创建工程并添加MyBatis依赖 数据准备:创建用户表和实体类 配置数据库连接信息 第一个MyBatis代码 创建Mapper接口并使用@Mapper注解 通过@Select注解编写简单查询 测试方法 两种测试方式:单元测试类和启动类测试 解释@Mapper注解原理:MyBatis通过动态代理生成实现类 注意事项 遵循命名规范 理解MyBatis的代理机制 摘要概括了MyBatis入门的主要步骤,重点突出了配置方法、基本使用和测试验证,适合初学者

2026-01-31 11:03:11 952 41

原创 【Spring】Spring Boot 验证码小项目:Hutool 让图形验证码开发变简单

摘要 本文介绍了一个基于Hutool工具实现的验证码项目。项目包含前后端交互功能:后端提供生成验证码图片和校验验证码两个接口。使用Hutool的LineCaptcha工具类快速生成图形验证码,并将验证码存入Session。前端提交验证码后,后端进行校验并返回结果。文章详细讲解了Hutool的配置方法、验证码生成逻辑、Session存储机制以及前后端接口设计,实现了一个完整的验证码功能模块。

2026-01-30 12:30:00 1154 22

原创 【Spring Boot】一篇文章让你学会使用和查看Spring Boot日志

本文介绍了日志在软件开发中的重要性及其多种用途,包括系统监控、数据采集和日志审计等。通过对比System.out.print与专业日志框架的差异,强调了使用日志框架的必要性。文章详细讲解了SLF4J日志框架的门面模式设计,并通过房间灯光总开关的代码示例,形象说明了门面模式的实现方式。最后给出了使用Logger打印日志的基本方法,展示了专业日志记录的优势。

2026-01-30 09:30:00 889 20

原创 【Spring Boot】一篇文章讲清SpringBoot配置文件所有知识!

本文讲解 Spring Boot 配置文件的核心作用(解决硬编码问题),详解properties与yml两种格式的语法、读取方式(@Value、@ConfigurationProperties),对比两者优缺点并附实战案例(端口修改、对象 / 集合配置读取),帮助开发者快速掌握配置文件使用,推荐yml作为主流选择。

2026-01-28 12:30:00 1115 27

原创 【Spring】超详细!一篇文章让你完全理解Spring Ioc和 DI

摘要:本文围绕 Spring 核心的 IoC(控制反转)容器展开,通过汽车案例对比传统开发与 IoC 开发的差异,清晰阐释了 IoC “反转依赖对象创建控制权” 的核心思想及 DI(依赖注入)的实现逻辑。文中详细介绍了 Bean 的两类存储方式(@Controller/@Service 等类注解、@Bean 方法注解)与多种获取方式,深入分析了属性注入、构造函数注入、Setter 注入的优缺点及适用场景,并补充了 @Autowired 与 @Resource 的核心区别。最后厘清 Spring、Spring

2026-01-28 09:30:00 2013 33

原创 【Spring】从0到1掌握Spring MVC应用分层

本文介绍了应用分层在软件开发中的重要性,以及MVC与三层架构的区别与联系。通过图书管理系统案例,展示了如何将代码重构为Controller、Service、Dao和Model四层结构,实现代码的解耦和高内聚低耦合。应用分层能有效解决代码混乱问题,提升项目的可维护性和扩展性。

2026-01-25 11:33:17 1509 46

原创 【SpringMVC】模拟企业级开发-手把手带你制作小网页

摘要: 本文介绍了前后端交互接口的概念及开发流程,通过计算器和用户登录两个案例进行实操演示。接口(API)是前后端分离开发中约定的交互规范,类似于应用程序的操作说明书。文章首先通过加法计算器案例,展示了如何定义请求路径、参数及响应数据,并实现简单的数值相加功能。随后通过用户登录案例,详细讲解登录校验和获取登录状态的接口设计,包括后端会话管理(Session)的使用。两个案例均提供完整的前后端代码示例,帮助读者理解SpringMVC如何接收参数、处理请求并返回响应,为开发独立项目奠定基础。

2026-01-25 09:00:00 1327 37

原创 【Spring MVC】一篇文章让你学会应对所有SpringMVC响应场景

本文主要介绍了SpringMVC中的响应处理机制,重点探讨了返回静态页面、HTML代码片段和JSON数据的实现方式。通过示例代码演示了如何正确配置路径、使用@Controller与@RestController注解的区别,以及如何设置Content-Type响应头。特别强调了返回JSON数据时需确保类中包含getter/setter方法,否则会导致序列化失败。文章还解释了绝对路径与相对路径的应用场景,帮助开发者深入理解SpringMVC的核心响应机制。

2026-01-23 15:10:28 1445 52

原创 【Spring MVC】一篇文章带你吃透 SpringMVC 请求

文章摘要 本文深入探讨了SpringMVC请求参数处理的三种场景: 单个参数传递 对比Integer与int类型的差异:未传参时Integer默认为null,int会抛出500错误 建议优先使用包装类类型 多参数与对象传递 多参数通过名称匹配,与顺序无关 对象参数支持自动属性映射,无参构造方法会初始化默认值 参数重命名 使用@RequestParam注解解决前后端参数名不一致问题 支持设置必传校验(required属性) 核心结论:SpringMVC通过「参数解析→类型转换→赋值」流程处理请求,合理使用包装

2026-01-20 14:10:55 1449 51

原创 【Spring MVC】一篇文章让你轻松入门学习SpringMVC

本文介绍了Spring MVC框架的基本概念及其核心功能。文章首先解释了MVC(Model-View-Controller)设计模式,并说明Spring MVC是对该模式的具体实现。随后通过代码示例展示了如何使用@RequestMapping注解建立URL路由映射,处理用户请求并返回响应。文中还比较了Spring Boot与Spring MVC的关系,指出Spring Boot通过自动配置简化了Spring MVC的使用。最后通过表单示例验证了@RequestMapping可同时处理GET和POST请求。全

2026-01-18 17:04:51 1282 38

原创 【SpringBoot】从创建第一个spring项目开始

本文介绍了如何从零开始搭建一个SpringBoot项目,主要包含以下内容: SpringBoot核心特性:自动配置、Starter依赖、嵌入式服务器和约定大于配置原则 项目创建步骤:使用SpringBoot插件新建Maven项目,选择Spring Web依赖 项目结构说明:自动生成的pom文件配置和标准目录结构 项目启动方法:通过@SpringBootApplication注解标识启动类 示例开发:展示如何编写一个简单的"Hello World"网络接口 SpringBoot简化了Spr

2026-01-17 09:30:00 1859 31

原创 【SpringBoot】从学会使用maven开始

本文介绍了Maven项目的创建与配置方法。主要内容包括:1)通过IntelliJ IDEA创建Maven项目,解析项目目录结构;2)详解pom.xml文件配置,包括GAV坐标、全局属性配置和依赖管理;3)Maven生命周期及常用命令操作;4)依赖下载与本地仓库配置。重点讲解了如何通过pom.xml文件管理项目依赖,解决依赖冲突问题,并建议修改默认本地仓库位置以避免占用过多系统空间。文章为Java开发者提供了Maven项目创建和配置的实用指南。

2026-01-16 14:03:32 2440 47

原创 【javaEE】计算机网络数据链路层深度剖析与DNS域名系统

本文介绍了数据链路层中的以太网协议和重要应用层协议DNS。以太网协议通过mac地址标识相邻节点,与IP地址在网络层的作用形成对比。以太网数据帧格式包含源/目的mac地址、类型和校验和等字段,最大承载1500字节数据。ARP协议用于根据IP地址获取MAC地址。DNS协议则实现了域名到IP地址的映射,简化了用户对网站地址的记忆,从最初的hosts文件发展到现在的DNS服务器体系。

2026-01-16 13:57:00 1139 26

原创 【javaEE】IP协议详解

本文主要介绍了IP协议的相关知识,包括IP协议的报头格式、IP地址管理、路由选择等核心内容。重点解析了IPV4协议的报头结构,如版本号、服务类型、总长度、拆包组包机制、TTL生存时间等关键字段。针对IP地址不足问题,探讨了动态分配IP、NAT机制和IPV6三种解决方案。在网络划分方面,详细说明了网络号和主机号的作用,以及子网掩码的配置原理。文章通过图文结合的方式,帮助读者深入理解IP协议的工作原理及其在网络通信中的重要性。

2025-12-20 19:18:49 1561 36

原创 【javaEE】UDP与TCP核心原理深度解析:从“不可靠”到“稳如老狗”的进化之路

本文从实操角度解析UDP和TCP的核心差异,重点剖析了UDP的"不可靠传输"特性及其局限性(如64KB数据包限制、校验和防比特翻转),并深入讲解TCP通过确认应答机制(字节级编号、序号/确认序号字段)和超时重传机制(动态超时阈值、多次重传策略)实现可靠传输的原理。文章通过具体场景分析网络丢包原因及应对策略,帮助读者理解两种协议的设计逻辑与适用场景,适合需要夯实网络基础或备战面试的开发者阅读。

2025-12-19 16:28:37 2056 46

原创 【网络安全】黑客最阴的 “偷密钥” 套路:中间人攻击有多狠?HTTPS 用证书直接按死

本文详细解析了HTTPS的工作原理及其如何保障数据传输安全。首先通过运营商劫持案例说明HTTP明文传输的风险,进而引入加密机制。文章依次探讨了对称加密的局限性、非对称加密的应用,并重点剖析了中间人攻击手法。最后通过证书校验机制(包括数字签名验证)彻底解决安全隐患,完整展现了HTTPS"握手-加密-验证"的全流程。全文以通俗易懂的比喻和图示,将复杂的安全机制转化为形象的"反套路"防御体系,帮助读者深入理解HTTPS如何为网络通信上锁。

2025-12-19 12:05:34 1977 36

原创 【javaEE】保姆级 HTTP 全解析:请求响应 + 状态码 + Fiddler 实操

本文介绍了网络应用层协议的相关内容。首先讲解了自定义协议的四种常见数据组织格式:行文本、XML、JSON和Protobuf,分析了各自的优缺点及应用场景。然后重点介绍了HTTP协议,包括其请求响应模型,并通过抓包工具Fiddler展示了实际网络请求和响应的格式。文章详细解析了HTTP请求的结构,包括URL的组成、URL编码等内容,并通过实际网页URL示例说明各部分的作用。最后还提及了抓包工具的工作原理和安全风险。全文通过大量实例和截图,帮助读者直观理解网络协议的实际应用。

2025-12-15 20:53:13 1338 32

原创 【javaEE】Socket 编程(UDP/TCP)实战 + 期末大作业

本文摘要: 文章系统介绍了网络编程的核心概念与Socket编程实践。首先阐述了网络通信中的基本术语:发送端/接收端、请求/响应、客户端/服务端等角色定义。重点解析了Socket的本质——操作系统提供的应用层与传输层间编程接口,并分类说明流套接字(TCP)、数据报套接字(UDP)和原始套接字的特性差异,对比了TCP的可靠连接与UDP的无连接特性。通过Java代码示例演示了UDP回显服务器的实现,包括DatagramSocket和DatagramPacket的核心API使用,展现了"打开-读写-关闭&

2025-12-09 20:36:16 2063 31

原创 【javaEE】学完计算机网络,别一问只知道IP和端口!

本文介绍了计算机网络的基础概念,包括网络互连、局域网和广域网的组建方式,以及网络通信的关键要素。主要内容包括: 网络互连的发展:从独立计算机到协同工作的网络通信需求 局域网(LAN)的四种组建方式:直连、集线器、交换机、交换机和路由器组合 广域网(WAN)的概念:通过路由器连接多个局域网形成的更大范围网络 网络通信基础: IP地址:用于定位主机的网络地址 端口号:标识主机中的具体进程 协议:规定通信双方的数据格式 五元组:标识网络通信的五个关键要素 协议分层: OSI七层模型的理论框架 TCP/IP五层(或

2025-12-07 20:14:39 771 7

原创 【javaEE】文件&IO--文件内容操作

本文介绍了Java中文件内容的读写操作,主要围绕数据流(Stream)展开。流分为字节流(InputStream/OutputStream)和字符流(Reader/Writer),分别用于处理二进制文件和文本文件。重点讲解了FileInputStream的使用方法,包括try-with-resources自动关闭资源、read()方法的返回值含义(0-255表示字节数据,-1表示结束),以及输出型参数的应用。通过示例展示了如何读取文件内容并解析UTF-8编码的中英文字符。最后简要提及FileOutputSt

2025-12-07 15:32:13 1334 7

原创 【javaEE】文件&IO--认识文件&&文件的简单操作

本文介绍了文件的基本概念与操作,主要包括文件与目录文件的定义、树形结构组织方式、文件路径的分类(绝对路径与相对路径)以及文件种类(文本文件与二进制文件)。在文件操作方面,详细讲解了Java中File类的构造方法和常用方法,包括创建文件、判断文件类型、删除文件等操作,并分析了可能出现的异常情况。文章还通过代码示例演示了文件路径处理和删除操作的具体应用场景。

2025-11-28 20:33:39 855 1

原创 【javaEE】多线程--线程安全的集合类

本文探讨了多线程环境下集合类的安全使用策略。针对ArrayList,介绍了自行加锁、Collections.synchronizedList和CopyOnWriteArrayList三种方案,重点分析了CopyOnWriteArrayList"写时拷贝"的机制及其读多写少场景的适用性。对于哈希表,对比了Hashtable全局锁的弊端和ConcurrentHashMap的创新设计,包括锁桶机制、CAS优化和多线程协助扩容等关键技术。最后强调应根据实际读写比例选择最优方案,保证线程安全。

2025-11-27 17:10:39 1106 1

原创 【javaEE】多线程--JUC的常见类

本文介绍了Java并发编程中的JUC工具包,重点讲解了Callable接口、ReentrantLock锁和Semaphore信号量的使用与特性。Callable通过FutureTask实现带返回值的线程任务,比Runnable更灵活。ReentrantLock提供了手动加锁、超时等待和公平锁等高级功能,与synchronized各有适用场景。Semaphore则通过计数器控制资源访问,支持PV原子操作。文章还总结了三种创建线程的方式,并对比了synchronized和ReentrantLock在实现机制、加

2025-11-27 12:33:31 1040 4

原创 【javaEE】多线程进阶--CAS与原子类

本文介绍了CAS(比较并交换)的原理与应用。CAS通过原子性比较内存值与预期值实现无锁线程安全,核心逻辑封装在原子类中,支持自增、累加等"读-改-写"操作。文章分析了CAS的ABA问题(值被多次修改后恢复原值),提出通过版本号校验解决,但需注意版本号仅能感知问题,具体处理仍需开发者根据业务场景选择重试或放弃等策略。实践建议简单操作优先使用原子类,复杂场景仍需传统锁机制,非关键场景可忽略ABA问题。

2025-11-21 20:39:05 1031 2

原创 【javaEE】多线程进阶--锁策略

本文系统阐述了锁策略分类与synchronized实现原理。锁策略包含悲观/乐观、轻量/重量级、自旋/挂起等待等六种类型,形成"乐观→轻量→自旋"的递进关系。JDK1.8的synchronized作为自适应锁,具备可重入、非公平特性,通过无锁→偏向锁→轻量级锁→重量级锁的四级升级机制动态适应竞争强度,配合编译器的锁消除和锁粗化优化,在确保线程安全的同时最大化执行效率,展现了Java在并发控制方面的精妙设计。

2025-11-21 15:01:45 861

原创 【javaEE】多线程 -- 超级详细的核心组件精讲(单例模式 / 阻塞队列 / 线程池 / 定时器)原理与实现

本文聚焦 JavaEE 多线程核心编程,围绕单例模式、阻塞队列、线程池、定时器四大关键组件展开。单例模式详解饿汉 / 懒汉实现,重点解决线程安全与反射破坏问题;阻塞队列作为线程安全缓冲,支撑生产者消费者模型,实现解耦与削峰填谷;线程池剖析 ThreadPoolExecutor 七大参数与 Executors 工具类,规避 OOM 风险;定时器对比单线程 Timer 与多线程 ScheduledExecutorService,含模拟实现逻辑。全文以线程安全和效率优化为核心,结合实例代码与面试高频考点。

2025-11-20 14:10:55 964 2

原创 【javaEE】多线程——线程安全进阶☆☆☆

本文探讨了Java多线程中的内存可见性问题及解决方案。当多个线程共享变量时,由于编译器优化(如寄存器缓存),可能导致线程无法感知变量修改,出现死循环。通过volatile关键字可强制线程从主内存读取变量值,确保可见性,但无法保证原子性。此外,文章分析了wait-notify机制如何协调线程执行顺序,避免线程饿死。wait会释放锁让其他线程运行,notify则唤醒等待线程,两者需配合synchronized使用。通过代码示例展示了这些机制的实际应用场景。

2025-11-17 13:41:41 688 1

原创 【javaEE】多线程——线程安全初阶☆☆☆

本文探讨了多线程编程中的线程安全问题。通过示例代码展示,当两个线程同时对一个共享变量进行5000次自增操作时,由于并发执行导致最终结果并非预期的10000。分析发现线程不安全的原因包括:操作系统对线程的随机调度(根本原因)、多个线程修改同一变量,以及修改操作不具备原子性。文章指出,count++这类看似简单的操作实际上包含多步CPU指令,线程切换可能导致中间状态丢失。最后说明线程安全的三个关键条件,并强调原子性(操作的不可分割性)是解决线程安全问题的核心概念。

2025-11-14 21:09:17 1112 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除