- 博客(29)
- 问答 (5)
- 收藏
- 关注
原创 Java中的死锁
本文介绍了死锁的概念、原因及解决方法。死锁是多个线程因争夺资源而相互等待的现象,需要满足互斥、持有并等待、不可抢占和循环等待四个条件。通过Java代码演示了死锁场景,并提供了检测工具(jstack、jconsole)的使用方法。避免死锁的关键在于:按固定顺序获取锁、使用超时机制、减少锁的持有时间和粒度,以及合理使用并发工具。遵循这些原则可有效预防死锁问题。
2025-09-06 20:20:39
172
原创 Java并发机制的底层实现原理
Java并发机制的底层实现依赖于JVM和CPU指令。volatile通过添加特殊汇编指令保证可见性和有序性,触发缓存一致性协议使其他CPU缓存失效。synchronized基于Monitor对象实现同步锁。原子操作通过总线锁定或缓存锁定保证,最新处理器支持缓存行锁定优化性能。Java通过循环CAS和锁机制实现原子性,利用处理器提供的底层并发支持。
2025-09-06 20:10:45
523
原创 Lock 概述及其实现
本文介绍了Java中Lock接口及其实现类ReentrantLock和ReadWriteLock的使用。Lock提供了比synchronized更灵活的锁操作,需要手动释放锁,支持多条件对象。重点解析了Lock接口的lock()、newCondition()等方法,以及ReentrantLock的基本用法。ReadWriteLock通过读写分离提高并发性能,允许多线程同时读操作。文章通过代码示例展示了如何使用这些锁机制,并强调必须将unlock()放在finally块中以避免死锁。
2025-09-05 13:43:52
742
3
原创 告别 “无效阅读”!2025 开学季超赞科技书单,带孩子解锁 AI、编程新技能
【科技启蒙书单:助力青少年拥抱智能时代】精选七套优质科技读物,涵盖AI通识、计算技术、编程思维三大领域:《人工智能真好玩》以多视角解析AI本质;"计算技术三部曲"纵览技术演进史;《灵境奇遇》用冒险故事传授图形学知识;《拯救罗布计划》将Transformer架构融入科幻叙事;《天才引导的历程》揭示数学定理背后的思维之美;《少儿计算思维养成记》记录真实编程教学案例;"学编程"系列通过经典故事培养编程逻辑。这些兼具专业性与趣味性的书籍,为6-15岁青少年提供系统化的科技素养
2025-09-05 11:00:26
1251
原创 synchronized 锁升级
本文介绍了Java中synchronized锁的升级机制。在JDK1.6之前,synchronized是重量级锁,需要操作系统介入进行线程切换,性能较低。1.6后引入了锁升级机制:无锁→偏向锁→轻量级锁→重量级锁。偏向锁适用于单线程场景,轻量级锁通过CAS自旋减少阻塞,重量级锁用于竞争激烈的情况。锁升级过程体现在对象头的MarkWord中,根据竞争情况动态调整锁类型,从而提升性能。这种机制实现了先自旋再阻塞的优化策略,使synchronized在高并发场景下表现更优。
2025-09-04 16:16:26
817
1
原创 Java 对象内存布局和对象头
HotSpot虚拟机中,对象在堆内存的存储布局分为三部分:对象头、实例数据和对齐填充。对象头包含Mark Word(存储hashcode、分代年龄和锁标志)和类元信息指针各占8字节(64位系统)。实例数据存放属性信息,对齐填充保证对象大小是8字节的倍数。通过示例Object o = new Object()分析,空对象占用16字节(对象头16字节+0实例数据+0填充)。分代年龄最大值15,由4bit存储空间决定。
2025-09-04 16:09:46
290
原创 InnoDB存储引擎-事务
事务可由一条简单的SQL语句组成,也可以由一组复杂的SQL语句组成. 事务是访问并更新数据库中各种数据项的一个程序执行单元. 在事务中的操作, 要么都做修改, 要么都不做.
2025-09-03 15:44:19
914
原创 InnoDB存储引擎-锁
本文介绍了MySQL数据库锁机制及其并发控制技术。主要内容包括:锁的类型(共享锁、排他锁、意向锁等)、一致性非锁定读(MVCC实现)与锁定读的区别、锁的三种算法(Record Lock、Gap Lock、Next-Key Lock)。重点分析了并发可能带来的脏读、不可重复读和幻读问题,并说明MySQL 5.7如何通过MVCC和锁机制解决这些问题。最后简要提及死锁检测机制(wait-for graph)和MySQL 5.7提供的锁监控表。文章全面阐述了MySQL如何通过锁技术和MVCC实现事务隔离与数据一致性
2025-09-03 14:30:43
732
原创 InnoDB存储引擎-逻辑存储结构
本文介绍了InnoDB存储引擎的表结构和行记录格式。InnoDB采用索引组织表,所有表都有主键,数据按主键顺序存放。其逻辑存储结构分为表空间、段、区、页和行,其中页是磁盘管理最小单位(默认16KB)。InnoDB支持Compact和Redundant两种行记录格式,Compact更高效。当数据过大时会发生行溢出(如TEXT/BLOB字段),不同行格式处理方式不同:COMPACT存储前768字节在原页,DYNAMIC则完全存入溢出页。VARCHAR类型最大支持65535字节,需注意字符编码和表内所有VARCH
2025-09-02 15:04:08
673
1
原创 InnoDB存储引擎-索引与算法
本文介绍了InnoDB存储引擎的主要索引类型及其特性。重点分析了B+树索引的实现原理,包括聚集索引(主键索引)和辅助索引(非聚集索引)的结构差异,以及联合索引、覆盖索引等优化技术。特别讲解了索引下推(ICP)的工作原理及其在查询优化中的作用,指出其通过提前过滤索引列条件来减少回表操作。此外,文章还简要提及Cardinality值、哈希算法和全文检索等概念,为理解InnoDB索引机制提供了全面参考。
2025-09-02 09:49:02
1430
1
原创 InnoDB存储引擎-日志文件
本文介绍了MySQL三种重要日志的配置与使用方法: 错误日志:通过SHOW VARIABLES LIKE 'log_error'查看路径 慢查询日志: 记录执行超时和未使用索引的SQL 关键参数包括slow_query_log、long_query_time等 支持输出到文件或表 二进制日志: 记录数据变更操作,用于恢复和主从复制 支持STATEMENT/ROW/MIXED三种格式 需配置log_bin、binlog_format等参数 文中提供了各日志的开启命令、配置示例及注意事项,并推荐使用专用工具分析
2025-09-02 09:39:27
923
原创 InnoDB存储引擎-核心特性
InnoDB是MySQL5.5.8后的默认存储引擎,完全支持ACID事务,具有行锁、MVCC、外键等特性。其核心特性包括:1)Checkpoint技术缩短恢复时间,管理脏页刷新;2)Insert Buffer提升非唯一辅助索引的插入性能;3)Double Write机制防止部分页失效;4)自适应哈希索引自动优化热点查询;5)异步IO提升磁盘操作效率。这些特性使InnoDB成为高性能、高可靠性的存储引擎,支持800次/秒的插入更新操作。
2025-09-01 14:45:50
1168
原创 InnoDB存储引擎-线程模型
InnoDB采用多线程架构优化多核性能,核心线程包括:Master Thread(主线程)负责调度、日志刷新和脏页合并;IO Threads(10个)处理异步读写任务;Purge Thread回收undo页;Page Cleaner Thread刷新脏数据到磁盘。这些线程协同工作,实现高效并发处理,性能可通过调整线程参数进一步优化。
2025-09-01 14:14:24
296
原创 InnoDB存储引擎-内存结构
InnoDB存储引擎的内存结构主要包括缓冲池、日志缓冲区和自适应哈希索引。缓冲池采用优化后的LRU算法管理,通过冷热数据分区避免缓存污染,提升性能。日志缓冲区用于暂存重做日志,定期刷新到磁盘以保证事务持久性。此外,Free List管理空闲页,Flush List跟踪待刷新的脏页。合理配置内存参数对数据库性能至关重要。
2025-09-01 12:06:14
931
原创 MySQL 存储引擎及其种类
存储引擎是MySQL中负责数据存储和检索的核心模块,决定了数据的组织方式和功能特性。主要存储引擎包括:InnoDB(支持事务、行锁、外键,默认引擎)、MyISAM(读取性能高)、Memory(内存存储)和Archive(高压缩比)。不同引擎适用于不同场景,如InnoDB适合高并发写入,MyISAM适合读取密集型,Memory用于临时表,Archive适合日志归档。存储引擎基于表而非数据库,可根据需求灵活选择。
2025-09-01 11:56:59
313
原创 MySQL 体系结构
MySQL体系结构分为客户端、服务器层、存储引擎层和存储层。客户端通过TCP连接与服务器通信,服务器层包含连接管理、SQL解析、优化器和查询缓存等组件。存储引擎层负责数据存取,支持多种引擎如InnoDB和MyISAM。查询流程包括连接建立、SQL解析、优化生成执行计划,最终由存储引擎执行并返回结果。MySQL 8.0移除了查询缓存功能,因其命中率低且易失效。整个架构通过分层设计实现高效的数据管理和查询处理。
2025-09-01 11:10:08
803
原创 与 Java 线程的邂逅
摘要 本文介绍了操作系统中的进程与线程概念,重点阐述了线程的特性与管理。主要内容包括:进程是资源分配的最小单元,线程是CPU调度的最小单元;线程优先级决定处理器资源分配;Java线程的6种状态(NEW、RUNNABLE、BLOCKED等)及其转换;守护线程的特点;线程的启动通过start()方法实现,而中断应采用interrupt()配合状态检查的安全方式,避免使用废弃的suspend()/stop()方法。文章还对比了wait()和sleep()方法的区别,并提供了线程状态变迁图。
2025-09-01 09:59:06
849
原创 Synchronized 概述
摘要: synchronized是Java中的同步锁,具有可重入和悲观锁特性。它可以修饰实例对象、类对象或同步代码块中的对象。底层通过monitorenter/monitorexit指令实现,普通方法和静态方法通过ACC_SYNCHRONIZED标志区分。锁信息存储在对象头中,基于管程(Monitor)机制实现线程互斥访问共享资源。每个Java对象都关联一个ObjectMonitor监视器,线程获取锁即获得该monitor的所有权。同步方法不可继承,子类需显式添加synchronized或调用父类同步方法。
2025-08-31 21:09:17
456
1
原创 3 分钟打造AI 智能体,《Manus极简入门》让你一键开启高效生活工作模式!
在科技飞速发展的当下,人工智能已逐渐渗透到生活的方方面面,深刻改变着我们的生活与工作模式。今天,为大家带来一本极具价值的书籍——《Manus极简入门:从0到1快速打造你的AI智能体》,它将成为你探索AI世界的得力指南。
2025-03-27 08:56:33
962
2
原创 爆火的DeepSeek提示词技巧大公开!这7招让你事半功倍
本文详细探讨了DeepSeek的7大提示词技巧,从基础方法到高级策略,帮助你全面掌握这一强大语言模型的使用之道。无论是提升工作效率,还是探索AI创作的无限可能,这些技巧都能为你提供有力支持。随着技术的不断进步,DeepSeek还将带来更多可能性,让我们一起期待并持续探索吧!推荐语:《高效使用DeepSeek》是一本既适合个人,又适合企业的DeepSeek保姆级教程。
2025-03-04 11:07:54
3617
4
原创 Seata 解决分布式事务理论与实践
分布式事务:在分布式架构中一个业务需要跨对个微服务,需要这多个微服务执行的状态保持一致.分布式事务理论基础:CAP定理:C: 一致性在微服务架构中,从任何节点读取到的数据应当是一致的.A: 可用性在服务不宕机的情况下,必须返回预期的结果P: 分区容错在微服务架构中是避免不了的.BASE理论:- Basically Available 基本可用- Soft State 软状态- Eventually Consistent 最终一致性方案:AP: 可用性。
2023-09-05 08:36:07
2264
29
原创 分布式事务之 Seata 的部署和集成
Seata 是一个非常流行的开源分布式事务解决方案,它可以帮助开发人员在分布式环境中管理和协调多个数据库和服务的事务。SeaTA 提供了全局事务管理、分布式事务协调和高可靠性的功能,可以确保数据一致性和事务的可靠性。它支持主流的数据库和框架,并提供了针对不同业务场景和需求的多种使用场景。SeaTA 是一个成熟的、经过大规模实践验证的分布式事务解决方案,广泛应用于各种规模的分布式系统中。
2023-09-03 23:00:00
2126
62
原创 IDEA 集成 GIT
1.Projects : 表示gitlab中的项目# 2.Users :当前gitlab中的所有的用户# 3.Groups : 当前gitlab中所有的组,其实就是我们公司开发中的小组。分组的好处的是权限具有管理,各个小组之间是无法查看组之间的内容的GitLab为了安全起见,是没有注册权限的。这样只能后台生成账号和密码。【1】【2】【3】创建好用户之后组长点击edit进行编辑【4】在如下的弹出界面中输入密码和确认密码【5】组员使用你的用户名和密码登录。
2023-07-05 07:25:44
5964
13
原创 SpringSecurity-从入门到精通
SpringSecurity是 Spring 家族中的一个安全管理框架。相比与另外一个安全框架Shiro,它提供了更丰富的功能,社区资源也比Shiro丰富。 一般来说中大型的项目都是使用来做安全框架。小项目有Shiro的比较多,因为相比与SpringSecurity,Shiro的上手更加的简单。 一般Web应用的需要进行认证和授权。认证:验证当前访问系统的是不是本系统的用户,并且要确认具体是哪个用户授权:经过认证后判断当前用户是否有权限进行某个操作。
2023-07-04 06:30:45
799
32
原创 SpringBoot 实现合并表头导出数据 - EasyExcel应用
EasyExcel 官网介绍 传统操作Excel大多都是利用 Apach POI 进行操作的,但是 POI框架并不完善,使用过程非常繁琐且有较多的缺陷:动态操作Excel非常繁琐,对于新手来说,很难在短时间内上手;读写时需要占用较大的内存,当数据量大时容易发生内存溢出问题(OOM); 基于上述原因,阿里开源出一款易上手,且比较节省内存的Excel操作框架:EasyExcel
2023-07-03 23:00:00
1925
5
原创 SpringSecurity 快速入门
Spring Security是为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架(包含: 认证 , 授权两个方面)。它提供了完整的安全性解决方案,可以在Web请求级别和方法调用级别处理身份认证和授权充分利用了Spring IOC,DI(控制反转Inversion of Control ,DI:Dependency Injection 依赖注入)和AOP(面向切面编程)功能,为应用系统提供声明式的安全访问控制功能。
2023-05-14 17:30:24
947
2
原创 Maven详细教程(图文并茂)
Maven是一个项目管理工具。它包含了一个项目对象模型 (Project Object Model),一组标准集合,一个项目生命周期(Project Lifecycle),一个依赖管理系统(Dependency Management System),和用来运行定义在生命周期阶段(phase)中插件(plugin)目标(goal)的逻辑。当你使用Maven的时候,你用一个明确定义的项目对象模型来描述你的项目,然后Maven可以应用横切的逻辑,这些逻辑来自一组共享的(或者自定义的)插件。
2023-05-11 22:46:36
9290
1
原创 SpringBoot集成Sa-Token进行鉴权
Sa-Token 简明使用指南 Sa-Token 是一个轻量级 Java 权限认证框架,支持登录认证、权限认证、会话管理等功能。 主要特性: 登录认证:提供 login/logout/isLogin 等基础操作 权限控制:通过实现 StpInterface 接口自定义权限和角色 会话管理:支持强制注销、踢人下线、账号封禁等操作 灵活配置:可设置 token 有效期、并发登录、token 风格等 使用步骤: 添加 Maven 依赖 配置 yaml 文件 实现权限接口 使用 API 进行认证 特色功能包括权限通
2021-12-15 17:26:31
4988
4
JavaSE 五万字总结.pdf
2023-05-15
MyBatisPlus如何多表联查?
2022-02-16
Elasticsearch 7.8版本能和JDK8完美匹配吗?
2022-01-03
如何通过JavaWEB获取远程客户端的MAC地址?
2022-01-04
MySql 里面的 int 型如果我不设置长度那它默认的长度是多少?
2021-12-21
MySql 中的tinyint字段对应的java的什么类型?
2021-12-21
TA创建的收藏夹 TA关注的收藏夹
TA关注的人