自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 HashMap初始化容量怎么保证是2的n次方

HashMap通过方法将用户传入的初始容量调整为大于或等于该值的最小 2 的幂次方。容量为 2 的幂次方可以优化哈希值映射、减少冲突,并简化扩容操作。这种设计是HashMap高性能的关键之一。通过这种机制,HashMap确保了初始容量始终是 2 的幂次方,从而提高了哈希表的性能和可靠性。

2025-03-14 16:22:15 370

原创 根据JVM参数改变系统默认的HashCode计算方法

在 Java 中,-XX:hashCode是一个 JVM 参数,用于控制对象的 hashCode() 方法的生成方式。通过设置不同的参数值,可以改变 hashCode() 的生成算法。

2025-03-14 15:57:32 423

原创 多线程--happens-before原则

原则是 Java 内存模型(JMM)的核心概念之一,用于定义多线程环境下操作之间的和。它的作用是确保在多线程程序中,某些操作的结果对其他线程是可见的,并且操作的执行顺序符合预期。

2025-03-11 15:42:06 460

原创 设计模式--单例模式

在高并发应用中,数据库连接池是管理数据库连接资源的常用方式。为了避免重复创建连接池,我们可以使用单例模式来设计一个。在多线程应用中,线程池是管理线程资源的常用方式。为了避免重复创建线程池,我们可以使用单例模式来设计一个。在一个大型系统中,日志记录是必不可少的。为了避免重复创建日志对象,我们可以使用单例模式来设计一个。为了避免重复加载配置文件,我们可以使用单例模式来设计一个。,统一管理线程池的创建和任务分配。,统一管理日志的写入和输出。,统一管理配置的读取和访问。,统一管理连接的获取和释放。

2025-03-07 16:39:45 342

原创 多线程--创建线程的三种方法

创建线程的三种方法

2025-03-07 10:32:51 393

原创 多线程--进程与线程

进程与线程

2025-03-06 16:26:51 154

原创 多线程--锁

锁是一种用于控制多个线程对共享资源访问的同步机制。它的主要作用是确保同一时刻只有一个线程可以访问共享资源,从而避免数据竞争和不一致性问题。

2025-03-06 11:41:49 824

原创 多线程--synchronized关键字

synchronized是Java中的一个关键字,用于实现线程同步,确保多个线程在访问共享资源时的线程安全。它可以修饰方法或代码块,确保同一时刻只有一个线程可以执行被修饰的代码。

2025-03-05 15:53:39 449

原创 多线程--volatile关键字

特性描述可见性通过内存屏障强制刷新 CPU 缓存,确保变量的修改对其他线程立即可见。有序性通过内存屏障禁止指令重排序,确保代码的执行顺序与编写顺序一致。适用场景状态标志、简单的可见性需求。性能开销比轻量,但比普通变量稍高。

2025-03-05 13:57:57 1071

原创 多线程--JMM(Java Memory Modle,java内存模型)

特性描述解决方法可见性一个线程对共享变量的修改,其他线程能够立即看到。volatile、锁机制有序性程序的执行顺序按照代码的先后顺序执行。volatile、锁机制原子性一个操作是不可分割的,要么全部执行成功,要么全部不执行。原子类、锁机制JMM 是 Java 多线程编程的基础,理解其内存结构和规则,可以帮助我们编写高效、可靠的多线程程序。

2025-03-04 16:21:20 833

原创 多线程--线程池

核心线程数。:最大线程数。:线程空闲时间。unit:时间单位。workQueue:工作队列。:线程工厂。handler:拒绝策略。

2025-03-04 14:50:53 618

原创 多线程--常见的线程安全问题

问题类型描述解决方法竞态条件多个线程同时访问共享资源,导致行为依赖于执行顺序。使用锁或原子类数据竞争多个线程同时访问共享变量,导致行为不可预测。使用volatile或锁机制死锁多个线程互相等待对方释放锁,导致无法继续执行。避免嵌套锁,使用锁顺序一致性活锁线程不断重试某个操作,导致无法继续执行。引入随机性饥饿某些线程由于优先级低或竞争资源失败,导致长时间无法执行。使用公平锁,合理设置优先级内存可见性问题一个线程对共享变量的修改,另一个线程无法立即看到。使用。

2025-03-04 11:49:40 1278

原创 多线程--项目中哪些地方用到了多线程

场景原理技术实现异步任务处理通过多线程异步执行任务,避免阻塞主线程。@Async批量数据处理将数据分片,利用多线程并行处理。定时任务定时执行任务,如数据清理、缓存刷新。@Scheduled高并发请求处理使用线程池处理高并发请求,提高系统吞吐量。、消息队列并行计算利用多线程并行处理计算密集型任务。Stream API。

2025-03-04 11:00:31 1362

原创 spring--spring和springboot差别

特性Spring项目初始化手动配置使用 Spring Initializr 快速生成配置方式XML 或 Java 配置自动配置 + 外部化配置Web 开发手动配置 DispatcherServlet自动配置 DispatcherServlet内嵌服务器需要外部服务器内嵌服务器依赖管理手动管理Starter 依赖 + 自动依赖管理监控和管理需要手动集成 Actuator内置 Actuator是Spring的进一步封装和优化,适合快速开发和现代应用架构。

2025-03-03 16:15:42 1270

原创 集合之List--List如何安全删除

方法适用场景特点单线程环境安全高效removeIf()Java 8+,单线程环境简洁,适合函数式编程倒序遍历for循环根据索引删除避免索引错位多线程环境线程安全,适合读多写少+ 锁多线程环境线程安全,需要手动加锁生成新列表不修改原列表,适合函数式编程。

2025-03-03 11:39:35 1675

原创 集合之List--List如何实现排序

如果需要对自定义对象排序,可以实现Comparable接口或使用Comparator示例:自定义对象排序int age;​​@Override​方法适用场景特点自然排序或自定义排序简单易用,支持降序排序自然排序或自定义排序Java 8 引入,直接操作List流式处理,支持并行排序适合函数式编程风格实现Comparable自定义对象的自然排序需要修改类代码使用Comparator自定义排序规则灵活,无需修改类代码。

2025-03-03 11:21:44 864

原创 集合之List--List如何去重

方法是否保留顺序时间复杂度适用场景HashSet不保留O(n)快速去重,不关心顺序保留O(n)快速去重,保留顺序保留O(n)函数式编程风格手动遍历去重保留O(n²)数据量较小TreeSet排序O(n log n)去重并排序保留O(n)使用第三方库。

2025-03-03 11:04:49 808

原创 集合之List--ArrayList扩容机制

ArrayList的默认初始容量为 10。当元素数量超过当前容量时,会触发扩容,新容量通常是原容量的 1.5 倍。扩容操作会复制元素到新数组,时间复杂度为 O(n)。可以通过提前调整容量,或通过trimToSize减少容量。理解ArrayList的扩容机制有助于在性能敏感的场景中优化内存使用和性能。

2025-03-03 10:39:25 313

原创 集合之List--ArrayList是否线程安全?如何线程安全地操作ArrayList?

ArrayList本身不是线程安全的。可以通过或手动同步来实现线程安全。选择哪种方式取决于具体的应用场景和性能需求。

2025-03-03 10:04:04 429

原创 MySQL--DQL、DML、DDL、DCL概念与区别

在SQL中,根据功能和操作对象的不同,通常将语文分为四大类:DQL(数据查询语言)、DML(数据操作语言)、DDL(数据定义语言)、DCL(数据控制语言)定义:用于从数据库中检索数据,不修改数据或数据库结构核心命令:SELECT:查询数据用途:从表中提取特定条件的过滤支持复杂的条件过滤、排序、分组、聚合等操作示例:SELECT name, age FROM users WHERE age > 18 ORDER BY name;二、DML(Data Manipulation Language,数据

2025-02-28 17:04:01 1115

原创 spring--ApplicationContext和BeanFactory的区别(源码)

是 Spring 容器的基础接口,提供最基本的 Bean 管理功能。是的扩展,提供了更多企业级功能。在实际开发中,通常使用,因为它功能更强大,使用更方便。通过理解和的区别和源码实现,可以更好地掌握 Spring 容器的核心机制。

2025-02-28 17:02:20 515

原创 设计模式--spring中用到的设计模式

定义:确保一个类只有一个实例,并提供全局访问点Spring中的应用:Spring默认将Bean配置为单例模式@Component// Spring 默认将其管理为单例在spring容器中,MySingletonBean只会有一个实例。

2025-02-27 15:38:32 990

原创 集合之线程安全--java中有哪些线程安全的集合

集合类型线程安全原理适用场景写时复制 + 锁读多写少的列表写时复制 + 锁读多写少的集合分段锁(JDK 7)或 CAS + synchronized高并发的键值对存储跳表 + CAS需要有序的键值对存储跳表 + CAS需要有序的集合锁 + 条件变量生产者-消费者模型方法级别加锁(synchronized)需要线程安全的集合Vector方法级别加锁(synchronized)不推荐使用Hashtable方法级别加锁(synchronized)不推荐使用。

2025-02-27 15:37:01 1028

原创 集合之List--ArrayList与LinkedList以及List与数组、Set的区别

在java中,List是最常用的集合类型之一,而ArrayList和LinkedList是List接口的两种主要实现。它们各有优缺点,适用于不同的场景。此外,List与数组、Set之间也有显著的区别。以下是对他们的详细对比和分析底层实现:基于动态数组特点随机访问速度快:通过索引访问元素的时间复杂度为O(1)。插入和删除效率低:在中间插入或删除元素时,需要移动后续元素,时间复杂度为O(n)内存占用少:只需要存储元素本身,不需要额外的指针适用场景:频繁读取数据(如遍历或随机访问)数据量较大且插入/删除操作较少的

2025-02-26 16:39:20 1097

原创 MySQL--聚集索引、辅助索引、回表查询和覆盖索引的原理

在MySQL中,索引是提高查询性能的核心工具。理解和的原理,对于优化数据性能至关重要。以下是对这些概念的详细解释以及优化方法。

2025-02-26 14:53:32 655

原创 MySQL--索引的优化--ORDER BY

在MySQL中,ORDER BY语句的性能优化是一个重要的课题,尤其是在处理大数据集时,如果ORDER BY没有正确使用索引,可能会导致全表扫描或文件排序(Using filesort),从而严重影响查询性能。以下是一些详细的优化策略和示例。

2025-02-26 14:02:51 709

原创 MySQL--索引的优化--LIKE模糊查询

通过以上方法,可以显著优化MySQL中LIKE模糊查询的性能。根据具体的业务需求和数据特点,选择合适的优化策略:前缀匹配:使用普通索引。后缀匹配:使用反转索引。中间匹配:使用全文索引或外部搜索引擎。大数据量:使用分区表或外部搜索引擎。高频查询:使用缓存。注:了解MySQL-MATCH ... AGAINST工具参考MySQL-MATCH ... AGAINST工具。

2025-02-26 11:30:45 1508 2

原创 MySQL-MATCH ... AGAINST工具

在MySQL中,MATCH……AGAINST是全文索引(Full-Text index)的查询语法,它允许你对文本进行高效的全文搜素,支持自然语言搜索和布尔搜索模式。以下是MATCH……AGAINST的详细用法和示例。

2025-02-26 11:28:51 810

原创 MySQL联合索引

联合索引适用于多列查询、排序和分组操作。最左前缀原则是关键,查询条件必须从索引的最左列开始。优化建议选择性高的列放在前面。避免冗余索引。使用覆盖索引减少回表。使用EXPLAIN分析查询计划。

2025-02-25 16:59:40 917

原创 MySQL索引失效

索引失效的原因多样,常见问题包括OR条件、LIKE通配符、函数使用、数据类型不匹配等。通过优化查询、调整索引设计,可以有效避免索引失效,提升查询性能。

2025-02-25 16:33:58 761

原创 快照读与当前读

读取历史版本数据,保证一致性视图,适合高并发查询。

2025-02-25 15:55:33 1036

原创 锁的分类(详解)

定义锁是数据库管理系统(DBMS)用来控制对共享资源(如表、行、页等)访问的控制确保事务的隔离性防止多个事务同时修改同一数据,导致数据不一致锁的基本原理当一个事务访问数据时,会请求锁如果锁被授予,其他事务必须等到锁释放后才能访问该数据。

2025-02-25 11:23:00 404

原创 出现死锁怎么处理

行级锁、页级锁和表级锁都可能出现死锁,但它们的处理方式基本相同。死锁的处理核心在于,而与锁的粒度无关。

2025-02-25 11:21:16 435

原创 可重复读隔离级别为什么不能防止幻读

在可重复读隔离级别下,幻读的发生是因为 MVCC 无法完全控制范围查询中新插入的数据。MySQL 通过机制部分解决了幻读问题,但并不能完全避免。如果需要完全避免幻读,可以使用串行化隔离级别,但会牺牲并发性能。在实际应用中,应根据业务需求选择合适的隔离级别,权衡数据一致性和并发性能。

2025-02-24 16:55:23 1054

原创 当规避了不可重复读问题后,怎么保证幂等性

在隔离级别下,事务在第一次查询时会生成一个,并在整个事务期间使用该视图。这意味着事务在后续的查询中只能看到第一次查询时的数据快照,而不会看到其他事务提交的修改。虽然这种机制避免了,但如果程序基于第一次查询到的数据做结果处理,可能会导致错误的结果。以下详细分析这种情况及其解决方案。

2025-02-24 14:48:20 973

原创 MySQL的三种并发问题和四种隔离级别

阅读之前,请心里默念,脏读、不可重复读、幻读是三种常见的并发问题,隔离级别是应对并发问题的四种隔离级别,,不要混淆。在数据库事务中,和是三种常见的并发问题。它们与事务的隔离级别密切相关,理解这些问题有助于选择合适的隔离级别来平衡数据一致性和并发性能。

2025-02-24 14:37:11 1960 2

原创 数据库-事务的ACID

事务中的所有操作要么全部成功执行,要不全部不执行。如果事务中的任何一部分操作失败,整个事务将被回滚倒事务开始前的状态,就像什么都没发生过一样。

2025-02-24 11:06:41 494

原创 MySQL隔离级别的实现方式

MVCC是MySQL InnoDB实现事务隔离级别的核心技术,它通过维护数据的多个版本和Read View机制,实现了高并发性和一致性读。不同的隔离级别通过调整Read View的生成时机和数据可见性规则,提供了不同的数据一致性保证。理解MVCC的工作原理对于优化数据库性能和设计高并发应用至关重要。

2025-02-24 11:06:08 470

原创 倒排索引(Inverted Index)

是一种用于快速查找文档中包含特定词的数据结构,广泛应用于全文搜索引擎(如Elasticsearch、Lucene等)和数据库的全文索引中。与传统的正排索引(从文档到词的映射)不同,倒排索引是从词到文档的映射。

2025-02-21 15:51:07 527

原创 索引的种类

索引的种类可以根据不同的分类标准进行划分。

2025-02-21 15:50:41 425

Windows环境下DeepSeek AI本地部署指南 - 从模型安装到ChatBox配置全过程

内容概要:本文档详尽记录了Windows系统中部署DeepSeek AI的步骤,涵盖了从下载和安装Ollama模型、依据硬件参数量选择合适显存要求的模型、解决安装过程可能出现的问题以及安装并配置友好型对话窗口软件ChatBox的整个过程。尤其强调了针对不同的显卡配置推荐的参数量大小,确保安装后的稳定运行,同时提供了模型卸载的方法,方便用户后期维护和升级AI系统。 适用人群:适合有一定Windows操作系统操作经验和网络使用基础的技术爱好者,特别是希望在个人计算机上建立私有人工智能环境的研究者或是开发者。 使用场景及目标:适用于希望通过简单易懂的指引自行搭建DeepSeek本地化AI环境,以便研究深度学习模型、实验AI交互特性的个体或团队。本流程旨在减少外部依赖如云端AI服务平台的成本,使用户能在本地环境中测试不同规模的预训练语言模型的效果和效率。 其他说明:对于显存不足导致的性能下降或者安装过程中遇到的进度停滞问题给予了针对性解决方案,即调整网络状态,并提示了模型更新迭代时所需采取的动作以确保最佳体验。此外还提到可以根据需求更改AI的性格设定和对话规则等高级选项来提高人机互动的质量。

2025-02-24

空空如也

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

TA关注的人

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