自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Java基础教程

本文摘要:Java基础教程从入门到精通,涵盖Java概述、环境搭建和基础语法三部分。首先介绍Java的跨平台特性及JDK/JRE/JVM体系结构,详细讲解环境配置步骤和第一个Java程序编写。其次讲解变量类型、运算符、控制流程和数组等基础语法,包括数据类型转换规则。最后介绍面向对象编程基础,包括类与对象的定义、成员变量/方法、构造方法等核心概念。教程通过大量代码示例帮助初学者快速掌握Java编程基础。

2025-12-29 09:01:54 973

原创 为什么 Netty 不使用 ThreadLocal 而是自定义了一个 FastThreadLocal ?

总而言之,Netty 创造并非为了重复造轮子,而是针对自身高性能、高并发的应用场景所做的一次精准优化。它通过数组索引直取解决了性能瓶颈,通过自动清理机制改善了内存管理,是 Netty 高性能基石的重要组成部分。

2025-12-29 08:56:38 379

原创 Java 线程池内部任务出异常后,如何知道是哪个线程出了异常?

摘要:Java线程池任务异常处理有多种方法,包括任务内部捕获、自定义线程工厂、使用Future对象和重写afterExecute钩子。任务内部捕获简单直接,自定义线程工厂便于日志追踪,Future对象能获取原始异常,afterExecute提供统一处理。核心在于结合有意义的线程命名和可靠的异常捕获机制,建议根据场景选择合适方法并配合日志框架,以提升排查效率。

2025-12-28 13:45:31 843

原创 Java 线程池中 shutdown 与 shutdownNow 的区别是什么?

追求平稳有序:若希望所有已提交任务都执行完毕再关闭线程池,请使用 shutdown()。需要立即停止:若需要立刻停止所有任务(例如程序紧急退出),请使用 shutdownNow(),但请知晓其依赖于任务对中断信号的响应。优雅关闭的最佳实践:通常结合shutdown()和方法,在保证任务完成和避免无限等待之间取得平衡。

2025-12-28 10:09:51 238

原创 Group by很慢,如何定位?如何优化?

以及。优化需要从定位问题入手,然后针对性地进行优化。

2025-12-26 13:51:00 644

原创 Java 线程池核心线程数在运行过程中能修改吗?如何修改?

Java线程池的核心线程数可通过setCorePoolSize()方法动态修改。调大时会按需创建新线程,调小时会逐步回收空闲线程。需注意:新值不能超过最大线程数,需配合allowCoreThreadTimeOut属性控制回收,且在线程池运行状态才有效。这种动态调整适用于周期性负载变化、突发流量等场景,能优化资源利用。代码示例展示了初始设置和动态调整的实现方式,关键要理解线程创建与回收机制,根据业务需求合理运用。

2025-12-24 09:37:03 389

原创 Java 并发库中提供了哪些线程池实现?它们有什么区别?

本文介绍了Java并发库中java.util.concurrent包提供的6种线程池实现,包括FixedThreadPool、CachedThreadPool、SingleThreadExecutor等,通过表格对比了它们的核心线程数、队列类型和适用场景。文章还提供了选择线程池的指导原则,建议根据任务特性(如执行时间、顺序要求、任务类型)选择合适的线程池,并特别指出无界队列可能导致的内存溢出风险。最后强调生产环境中应优先使用ThreadPoolExecutor构造函数创建线程池,以更好地控制资源使用。

2025-12-24 09:33:31 503

原创 如何合理地设置 Java 线程池的线程数?

合理设置 Java 线程池的线程数对应用性能至关重要。下面我将通过一个表格先梳理核心原则,再详细说明配置方法和实战建议。

2025-12-23 11:13:00 492

原创 你了解 Java 线程池的原理吗?

线程池是一种基于管理线程的工具,其核心目标是。下面将详细解释其核心原理、工作流程和关键组件。

2025-12-23 11:09:15 662

原创 Java 中如何创建多线程?

Java多线程创建方式对比及选择建议: 主要创建方式: 继承Thread类:简单直接,但有单继承限制 实现Runnable接口:灵活,可共享资源,推荐首选 实现Callable接口:可返回结果和异常,需配合Future使用 线程池(ExecutorService):生产环境推荐,提升性能 选择建议: 简单测试用Thread类 常规开发用Runnable 需要返回结果用Callable 生产环境必用线程池 注意事项: 必须用start()启动线程 共享资源需考虑线程安全 Runnable与Callable核心

2025-12-22 22:32:30 596

原创 Java 中线程之间如何进行通信?

在Java多线程编程中,线程间的通信是确保多个线程能够协调工作、安全共享数据的关键。根据不同的应用场景,你可以选择以下几种主流的通信方式。

2025-12-22 14:55:44 401

原创 Java中HashMap的原理

HashMap是Java中最常用的数据结构之一,它基于哈希表实现,提供了高效的键值对存储和检索功能。如果你对某个特定细节(比如红黑树的转换过程或是ConcurrentHashMap的实现)还想深入了解,我可以继续为你讲解。现在,Hashtable通常被视为遗留类,在新代码中更推荐使用HashMap(单线程)或ConcurrentHashMap(多线程)。“容量 × 负载因子”(即阈值)时,HashMap会自动进行扩容(容量大约翻倍)。HashMap的内部结构可以概括为 “数组 + 链表 + 红黑树”。

2025-12-20 21:22:15 27

原创 什么是用户态和内核态?

是操作系统中两种不同的CPU运行模式,用于区分程序执行时的权限级别,是操作系统安全性和稳定性的重要保障机制。

2025-12-19 09:16:39 546

原创 线程和进程有什么区别

是程序的一次执行过程,是系统进行资源分配和调度的基本单位。每个进程都有独立的内存空间、数据段和代码段,进程间的通信需要通过进程间通信(IPC)机制,如管道、消息队列、共享内存等。是进程中的一个执行单元,是CPU调度和分派的基本单位。同一进程内的多个线程共享进程的内存空间和系统资源,包括代码段、数据段和打开的文件等,但每个线程拥有独立的栈空间和程序计数器。:进程适合需要高安全性和独立性的任务,线程适合需要频繁切换和共享数据的并发任务。现代操作系统通常采用多线程模型来提高程序的并发性能。

2025-12-19 09:11:48 183

原创 操作系统中的进程有哪几种状态?

本文介绍了进程状态模型,重点阐述了经典五状态模型(新建、就绪、运行、阻塞、终止)的定义与转换关系,并补充了现代系统中常见的两种挂起状态(挂起就绪、挂起阻塞)。文章指出五状态模型是核心生命周期,而挂起状态是内存管理策略的临时状态。最后建议在面试或答题时,以五状态模型为基础,再补充挂起状态即可涵盖主流操作系统实现。全文简洁清晰地梳理了进程状态的关键概念。

2025-12-18 16:41:54 127

原创 java面试必问--线程池

线程池工作原理摘要(150字) 线程池通过预创建线程减少资源开销,包含核心线程数、最大线程数、队列等关键配置。任务提交时优先使用核心线程,满则入队;队列满才扩容至最大线程数;若均满则触发拒绝策略。空闲超时线程(超过核心数部分)会被回收。其核心机制是:1)按需创建线程;2)队列缓冲任务;3)动态扩容/收缩线程;4)拒绝策略兜底。通过分层处理(核心线程→队列→非核心线程)实现高效任务调度,图示流程清晰展示了不同负载下的处理逻辑。

2025-12-17 09:41:59 181

原创 到底什么是 TCP 连接?

TCP(Transmission Control Protocol,传输控制协议)连接是一种面向连接的、可靠的、基于字节流的传输层通信协议连接。它为应用程序提供了一种可靠的、全双工的通信通道,使得数据能够在网络中的两个端点之间准确、有序地传输。

2025-06-22 09:40:43 910

原创 说说你知道的几种 I/O 模型

I/O(输入/输出)模型是操作系统和网络编程中用于处理数据输入和输出的关键概念,不同的 I/O 模型在性能、响应速度和编程复杂度等方面存在差异。

2025-06-22 09:39:01 842

原创 Redis 性能瓶颈时如何处理?

当 Redis 遇到性能瓶颈时,需要从多个维度进行排查和优化。对于高并发场景,分片集群是最终解决方案,但需权衡运维复杂度。建议优先通过监控定位瓶颈点(如。Redis 性能瓶颈的解决需结合。

2025-06-20 11:47:09 1201

原创 说说 Springboot 的启动流程?

Spring Boot 的启动流程是一个从初始化到环境准备,再到组件扫描与自动配置,最后到 Bean 初始化与依赖注入,以及应用启动完成的完整过程。在这个过程中,Spring Boot 充分利用了 Spring 框架的核心特性,如依赖注入、面向切面编程等,同时提供了自动配置、组件扫描等便捷功能,大大简化了 Spring 应用的开发和部署。

2025-06-19 09:48:26 1033

原创 Spring Boot 工程启动以后,我希望将数据库中已有的固定内容,打入到 Redis 缓存中,请问如何处理?

Spring Boot项目中可以通过配置Redis和数据库连接,实现将数据库固定内容预加载到Redis缓存。步骤如下:1)添加Spring Data Redis和数据库驱动依赖;2)配置数据库和Redis连接信息;3)创建实体类和JPA Repository;4)编写服务类在应用启动时从数据库读取数据并存入Redis;5)配置RedisTemplate序列化方式。需注意大数据量时的分批处理、缓存更新机制及合适的序列化方案。这种方法可以有效提升系统性能。

2025-06-19 09:39:12 663

原创 如何使用 Redis 快速实现布隆过滤器?

使用多个不同种子的哈希算法(如 MurmurHash3),或对同一哈希结果进行位移/取模。根据需求选择方案:快速验证可用手动实现,生产环境推荐 RedisBloom。Redis 官方模块,提供原生布隆过滤器命令,优化性能和误判率。操作位数组,结合多个哈希函数计算位置。利用 Redis 的。

2025-06-05 13:41:27 812

原创 如何使用 Redis 快速实现排行榜?

Redis 的是实现排行榜的高效工具,其天然支持按分数排序、范围查询和原子操作。

2025-05-29 11:16:49 1156

原创 Redis 中如何保证缓存与数据库的数据一致性?

本文总结了Redis缓存与数据库数据一致性的保障策略,包括Cache Aside、Write Through、Write Behind等模式,以及Binlog监听和分布式锁方案。针对不同业务场景(强一致性/最终一致性/高并发写)给出具体选型建议,强调权衡一致性、性能和复杂度。关键实现细节涵盖延迟双删、重试机制和监控告警,并提供代码示例。最后指出分布式系统中完全强一致性难以实现,通常需通过异步机制确保最终一致性。

2025-05-29 10:36:52 1197

原创 Redis 中如何保证缓存与数据库的数据一致性?

在高并发环境下,Redis 缓存与数据库的数据一致性是一个关键问题。常用的策略包括 Cache Aside 模式、Read/Write Through 模式和 Write Behind 模式。Cache Aside 模式通过先更新数据库再删除缓存来保证一致性,适合大多数场景。Read/Write Through 模式由缓存层管理数据同步,简化了应用程序逻辑。Write Behind 模式则通过异步更新数据库提高写性能,但存在数据丢失风险。此外,双删策略、分布式锁、合理设置缓存过期时间以及数据库变更通知等方法

2025-05-22 10:09:38 1080

原创 Redis 中的缓存击穿、缓存穿透和缓存雪崩是什么?

缓存击穿:针对热点数据缓存过期或不存在时,大量请求直接访问数据库。解决方案包括互斥锁、永不过期、逻辑过期等。缓存穿透:查询不存在的数据,导致大量请求直接访问数据库。解决方案包括缓存空值、布隆过滤器、接口校验等。缓存雪崩:大量缓存数据过期或缓存服务器故障,导致大量请求直接落到数据库上。解决方案包括过期时间分散、高可用缓存集群、限流与降级等。在实际应用中,应根据具体情况选择合适的解决方案,并结合监控和告警机制,及时发现并处理缓存问题,确保系统的稳定性和性能。点击进入。

2025-05-22 09:58:31 938

原创 Redis 主从复制的实现原理是什么?

Redis主从复制通过主节点处理写操作,多个从节点同步数据并提供读服务,实现数据冗余、读写分离和高可用性。核心流程包括连接建立与身份验证、数据同步阶段(全量复制和增量复制)以及命令传播阶段。关键组件有复制积压缓冲区、复制偏移量与复制ID,异步复制机制确保数据一致性。故障转移可通过手动或自动方式实现,结合Redis Sentinel提升高可用性。实践建议包括监控复制状态、优化缓冲区大小、负载均衡和持久化配合。Redis主从复制是构建分布式缓存系统的基础,具备高效的数据同步和高可用性。

2025-05-13 08:54:11 917

原创 Redis 中常见的数据类型有哪些?

Redis 通过丰富的数据类型,覆盖了从简单缓存到复杂结构化数据的多样化需求。合理选择数据类型可显著提升性能并简化开发逻辑。(String、Hash、List、Set、Zset)和。Redis 常见的数据类型包括。

2025-05-12 09:51:10 1093

原创 为什么 Redis 设计为单线程?6.0 版本为何引入多线程?

Redis 6.0引入多线程的核心目的是优化网络I/O处理,通过分离I/O操作与命令执行,在保持数据一致性的前提下,充分利用多核CPU资源提升高并发场景下的性能,同时保持向后兼容性。

2025-05-12 09:22:12 607

原创 MySQL 中如何进行 SQL 调优?

在MySQL中进行SQL调优是一个系统性工程,需结合索引优化、查询改写、性能分析工具、数据库设计及硬件配置等多方面策略。通过以上策略,可显著提升MySQL查询性能,但需根据实际场景权衡利弊,避免过度优化。

2025-05-10 10:20:51 1094

原创 MySQL 中 count(*)、count(1) 和 count(字段名) 有什么区别?

在 MySQL 中,COUNT(字段名)COUNT(字段名)COUNT(字段名)COUNT(字段名)COUNT(字段名)COUNT(字段名)COUNT(字段名)

2025-05-10 10:17:44 612

原创 Redis 为什么这么快?

它通过牺牲部分功能(如复杂 SQL 查询)换取极致性能,适合高并发、低延迟的场景(如缓存、计数器、实时排行榜)。若需持久化或复杂操作,需合理配置参数以平衡性能与可靠性。

2025-05-09 09:00:50 1104

原创 MySQL 的乐观锁和悲观锁是什么?

在 MySQL 中,和是两种不同的并发控制机制,用于解决多用户/事务同时操作数据时的冲突问题。

2025-05-09 08:47:37 1376

原创 MySQL 中有哪些锁类型?

通过理解锁类型和行为,可有效优化 MySQL 并发性能,避免死锁和性能瓶颈。

2025-05-08 09:36:22 1025

原创 MySQL 中的事务隔离级别有哪些?

这些级别通过控制事务间的数据可见性,平衡了数据一致性与并发性能。通过合理选择隔离级别,可在保证数据一致性的同时,优化系统并发性能。

2025-05-08 08:59:32 829

原创 MySQL 中的 MVCC 是什么?

MVCC 是 MySQL InnoDB 存储引擎的核心特性之一,它通过数据版本化和一致性视图机制,在保证事务隔离性的同时,实现了高并发的读写操作。尽管 MVCC 存在一些局限性(如版本链开销和长事务问题),但在大多数场景下,它仍然是提升数据库并发性能的关键技术。是一种用于实现高并发读写操作的机制,它通过维护数据的多个版本来解决读写冲突,从而在保证事务隔离性的同时,减少锁的使用,提升数据库的并发性能。

2025-05-07 08:48:00 1453

原创 MySQL 中长事务可能会导致哪些问题?

在 MySQL 中,长事务(Long-Running Transaction)是指执行时间较长、未及时提交或回滚的事务。长事务的存在可能引发一系列问题,严重影响数据库的性能、稳定性和并发处理能力。长事务是 MySQL 性能优化的重要关注点,可能导致锁阻塞、回滚段膨胀、主从延迟、死锁、MVCC 性能下降等问题。通过合理设计事务、优化 SQL、监控告警和调整参数,可以有效避免或缓解这些问题,确保数据库的高性能和高可用性。

2025-05-07 08:45:05 1136

原创 MySQL 是如何实现事务的?

(原子性、一致性、隔离性、持久性),通过多层次机制(如日志、锁、并发控制)保障数据可靠性和一致性。通过合理配置(如隔离级别、日志参数)和优化(如批量提交、避免长事务),可在保证数据一致性的同时提升性能。MySQL 的事务实现基于。

2025-05-06 08:40:52 1333

原创 为什么 MySQL 选择使用 B+ 树作为索引结构?

B+ 树每个节点存储多个键值对(通常可达数百个),通过减少树的高度(通常3-4层即可存储千万级数据)降低磁盘I/O次数。例如,查询1000万条数据时,B+树仅需3-4次I/O,而二叉搜索树可能需要20次以上。相比之下,哈希索引不支持范围查询,二叉搜索树/红黑树I/O次数高,LSM树读放大严重,均无法满足MySQL的综合需求。所有数据存储在叶子节点,非叶子节点仅存储索引键和指针,节省存储空间,提升缓存命中率。例如,1GB索引中非叶子节点可能仅占10%,其余90%为叶子节点数据。

2025-05-06 08:38:26 780

原创 请详细描述 MySQL 的 B+ 树中查询数据的全过程

在 MySQL 中,B+ 树是 InnoDB 存储引擎默认的索引数据结构,用于高效组织数据并支持快速查询。以下是 B+ 树查询数据的。的三步流程,结合磁盘 I/O 优化和内存缓存机制,实现了高效的数据检索。工具分析执行计划,可进一步掌握 B+ 树在查询优化中的具体作用。在理解查询过程前,需明确 B+ 树的。MySQL 的 B+ 树查询通过。通过结合实际业务场景和。

2025-04-30 08:51:00 1517

基于Springboot的权限管理系统

Cloud-Platform是国内首个基于Spring Cloud微服务化开发平台,具有统一授权、认证后台管理系统,其中包含具备用户管理、资源权限管理、网关API 管理等多个模块,支持多业务系统并行开发,可以作为后端服务的开发脚手架。代码简洁,架构清晰,适合学习和直接项目中使用。 核心技术采用Spring Boot 2.1.2以及Spring Cloud (Greenwich.RELEASE) 相关核心组件,采用Nacos注册和配置中心,集成流量卫兵Sentinel,前端采用vue-element-admin组件,Elastic Search自行集成。

2025-05-10

企业用户中心项目+SpringBoot

企业核心的用户中心系统,基于springboot后端+React前端的全栈项目,实现了注册、登录、查询等基础功能

2025-05-07

RPC框架,基于 Java + Etcd + Vert.x 的高性能 RPC 框架

基于 Java + Etcd + Vert.x 的高性能 RPC 框架,用新颖的技术栈从 0 到 1 带大家开发轮子。教程由浅入深,可以学习并实践基于 Vert.x 的网络服务器、序列化器、基于 Etcd 和 ZooKeeper 的注册中心、反射、动态代理、SPI 机制、自定义网络协议、多种设计模式(单例 / 工厂 / 装饰者等)、负载均衡器设计、重试和容错机制、Spring Boot Starter 注解驱动开发等,大幅提升架构设计能力。

2025-05-07

空空如也

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

TA关注的人

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