- 博客(104)
- 收藏
- 关注
原创 多线程基础系列-ThreadLocal
ThreadLocal是Java提供的线程私有存储工具,为每个线程创建独立变量副本,实现线程间数据隔离。其核心原理是通过Thread内部的ThreadLocalMap存储数据,以ThreadLocal实例为key。典型应用包括保存线程上下文信息、解决线程安全问题(如SimpleDateFormat)和数据库连接管理。使用时需注意内存泄漏风险,务必调用remove()方法清理数据。ThreadLocal适用于线程私有数据场景,而非共享数据同步问题。
2026-01-05 15:57:58
850
原创 多线程基础系列-线程死锁
本文介绍了线程死锁的概念、检测方法和预防策略。死锁是指多个线程互相持有对方所需资源导致永久等待的现象,需同时满足互斥、请求保持、不可剥夺和循环等待四个条件。通过jstack、jcmd等工具或JConsole等可视化工具可检测死锁。预防措施包括统一加锁顺序、减少锁粒度、避免嵌套锁、使用可中断锁、采用高级并发工具以及设计不可变对象等。文章还提供了Java代码示例演示死锁场景和检测方法。
2025-12-31 16:34:05
375
原创 Mysql索引系列-回表
摘要: MySQL回表指使用二级索引查询时,若所需列不在索引中,需通过主键索引再次访问数据,导致两次B+Tree查找。回表会增加随机I/O开销,影响性能。通过EXPLAIN的Using index可判断是否发生回表。优化方法包括使用覆盖索引(将查询列加入二级索引)、减少SELECT *、提高索引选择性等。覆盖索引虽能避免回表,但需权衡维护成本。合理设计索引结构和查询语句可有效降低回表带来的性能损耗。
2025-12-30 15:32:05
549
原创 并发系列(一):深入理解信号量(含 Redis 分布式信号量)
摘要:信号量是并发编程中的经典同步原语,用于控制共享资源的并发访问数量。本文介绍了信号量的基本原理、典型应用场景(如并发控制、资源限制、对象池管理等),并通过Java代码示例演示了Semaphore和CountDownLatch的使用方法。其中Semaphore通过计数器机制实现资源访问控制,而CountDownLatch则适用于主线程等待多个子任务完成的场景。文章还提及分布式环境下可使用Redis实现跨进程信号量控制,为后续讨论分布式信号量奠定了基础。
2025-12-17 09:47:36
410
原创 Oracle跨用户表授权+同义词创建的标准脚本模板
本文提供了Oracle跨用户表授权和同义词创建的标准脚本模板,包含四种典型场景操作:1)单表授权+私有同义词;2)批量表授权+私有同义词;3)公有同义词创建;4)权限回收。所有脚本均采用参数化设计,使用<参数>标记需要替换的内容。模板支持不同权限组合(SELECT/INSERT/UPDATE/DELETE),包含单表和批量处理方案,并说明公有同义词需要DBA权限。执行前需替换实际参数值,注意批量操作时表名要用英文逗号分隔,避免空格。
2025-11-13 17:57:50
367
原创 OpenGauss备份全解析:方式对比与本地实操指南
文章摘要: OpenGauss数据库备份指南解析三种核心备份方式及其应用场景。逻辑备份(gs_dump)适合中小库备份,支持细粒度备份且跨版本兼容;物理备份(gs_basebackup)适合TB级大库,速度快但依赖数据库版本;WAL日志备份支持增量备份和时间点恢复。文章提供了同机部署场景下的实操脚本,包括逻辑备份(全库/单表)、物理备份(集群级)及WAL日志配置教程,帮助运维人员构建完整的备份策略。特别强调了不同备份方式在恢复速度、兼容性和空间占用等方面的差异。
2025-11-06 11:40:00
918
原创 在 Docker 中备份 openGauss 数据库(6.0.2)实战指南(含脚本与保留策略)
本文提供基于Docker部署的openGauss 6.0.2数据库备份方案,采用容器内omm用户本地执行gs_dump的方式。包含完整备份脚本,支持定时任务配置(示例为每日凌晨2点执行)和自动保留10天策略,备份文件存储于宿主机指定目录。文章详细说明了备份恢复方法,包括通过gsql执行SQL恢复和常见问题解决方案,如动态库缺失、权限问题等。该方案无需远程连接认证,支持日志记录和监控告警,建议配合独立存储使用并定期进行恢复演练验证。
2025-11-06 09:08:40
737
原创 IntelliJ IDEA 远程断点调试完全指南
本文详细介绍了IntelliJ IDEA远程断点调试的完整指南。主要内容包括:远程调试的工作原理(基于JDWP协议),典型应用场景(如微服务调试、性能分析),必备的前置条件检查。重点讲解了两种配置方法:Attach to Remote JVM(推荐方式)和Listen to Remote JVM,并提供了详细的参数说明和操作步骤。文中还包含三个实战案例:调试Docker容器应用、Kubernetes Pod应用以及Spring Boot开发环境调试,同时给出了常见问题(如连接失败)的解决方案。通过本指南,开
2025-10-31 17:51:52
529
原创 MyBatis主键回填机制深度解析:useGeneratedKeys与selectKey的选择与实践
MyBatis主键回填机制深度解析:`useGeneratedKeys`与`<selectKey>`的选择与实践
2025-04-11 15:34:33
934
原创 MySQL和Oracle常见语法差异详解
在数据库开发中,MySQL和Oracle是两个最常用的关系型数据库管理系统。虽然它们都遵循SQL标准,但在具体实现上存在一些差异。本文将详细介绍MySQL和Oracle在SQL语法上的主要区别,帮助开发人员更好地处理跨数据库开发。
2025-04-01 16:39:02
1202
原创 多线程基础系列-线程池
当有任务需要执行时,线程池会从池中取出一个空闲线程来执行该任务,任务执行完毕后,线程并不会立即销毁,而是返回线程池中等待下一次被复用。不同的队列实现会影响线程池的行为,常见的有ArrayBlockingQueue(固定大小)、LinkedBlockingQueue(无界或有限界限)、SynchronousQueue(直接传递,没有容量)等。当线程池中的线程数量超过核心线程数时,多余的空闲线程在等待新任务最长时间达到keepAliveTime后,如果还没有新任务到来,那么这些线程将被终止以节省资源。
2025-02-25 17:52:38
1015
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅
1