自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

vangoghlaam的博客

小小码农一枚,欢迎一起交流学习

  • 博客(121)
  • 收藏
  • 关注

原创 Set集合如何保证元素不重复

Set接口继承自Collection,强制要求实现类不允许包含重复元素。Set集合能够保证元素不重复,主要依赖于哈希算法、对象相等性判断和特定的数据结构设计。下面从底层实现、判断逻辑和不同Set实现的差异三个方面详细解释。

2025-03-25 10:52:48 471

原创 Java之运行时数据区

内存区域线程共享作用异常程序计数器否记录当前线程执行的字节码指令地址无Java 虚拟机栈否存储方法调用的栈帧本地方法栈否支持 Native 方法调用Java 堆是存储对象实例和数组方法区是存储类信息、常量、静态变量等运行时常量池是存储类文件中的常量池信息直接内存是用于 NIO 操作。

2025-03-24 17:22:09 881

原创 MySQL之日志

MySQL 的日志系统是数据库管理的重要组成部分,不同类型的日志有不同的用途。理解这些日志的作用和配置方式,可以帮助你更好地进行数据库的维护、优化和故障排查。

2025-03-24 13:46:11 578

原创 Redis实现秒杀的几种方式

简单计数器:适合简单的秒杀场景,性能高。分布式锁:适合需要严格避免超卖的场景。List队列:适合高并发场景,实现简单。Lua脚本:适合需要原子性操作的场景。Sorted Set:适合需要排序的场景。根据具体业务需求选择合适的实现方式。如果需要更高的性能和可靠性,可以结合消息队列(如Kafka、RabbitMQ)和数据库(如MySQL)进行异步处理和数据持久化。

2025-03-21 15:17:08 1364

原创 Java之Unsafe类

Unsafe类是 Java 中一个非常特殊且强大的工具类,它提供了直接操作内存、线程、对象等底层功能。由于它的功能非常强大且不安全(容易导致程序崩溃或数据不一致),因此被命名为Unsafe。Unsafe类通常用于高性能库、框架或需要直接操作内存的场景(如 Netty、Disruptor 等)。

2025-03-20 09:58:03 502

原创 MySQL之索引下推

索引下推(Index Condition Pushdown, ICP)是MySQL 5.6引入的一种查询优化技术,旨在减少存储引擎层与服务器层之间的数据传输量。通过将WHERE条件中可索引的部分下推到存储引擎层进行过滤,减少不必要的数据读取和传输,从而提升查询性能。

2025-03-19 13:27:06 466

原创 SQL | 被忽视的 HAVING:聚合后的筛选利器

在 SQL 中,HAVING 子句经常被忽视,但它却是处理聚合数据后的筛选利器。与 WHERE 子句在聚合前筛选不同,HAVING 允许你在 GROUP BY 之后对聚合结果进行筛选,为数据分析提供了更灵活的方式。HAVING 是 SQL 中一个强大的工具,它可以帮助你更灵活、更高效地处理聚合数据。掌握 HAVING 的使用技巧,可以让你在数据分析中游刃有余。

2025-03-17 15:14:11 443

原创 Java之队列

在 Java 中,队列(Queue)是一种常用的数据结构,遵循 先进先出(FIFO) 的原则。Java 提供了多种队列实现,适用于不同的场景。以下是 Java 中常用的队列实现及其特点: 是 Java 集合框架中的一个接口,定义了队列的基本操作。常用方法包括:2.2 实现:基于动态数组实现的双端队列()。特点:无界队列(默认初始容量为 16,动态扩容)。不支持 元素。插入和删除操作的时间复杂度为 O(1)。性能优于 ,因为基于数组实现,内存占用更小。适用场景:需要高效的双端队列操

2025-03-13 13:35:33 791

原创 SQL之谓词 → 理解EXISTS

EXISTS是一种高效的谓词,用于检查子查询是否返回结果。它不关心具体数据,只关心是否存在结果,因此在处理存在性检查时性能优越。与IN和JOIN相比,EXISTS更适合用于检查相关记录是否存在,尤其是在子查询结果集较大的情况下。NOT EXISTS是EXISTS的反向操作,用于检查子查询是否没有返回结果。通过合理使用EXISTS,可以编写出高效且易于理解的 SQL 查询。

2025-03-13 13:30:39 800

原创 Deepseek 高效提问法则:快速获取精准答案

在向 AI 助手(如 Deepseek)提问时,使用结构化的提问方式可以显著提高获取答案的效率和准确性。在提问前,先简要说明问题的背景或上下文。如果需要特定格式的回答(如步骤、列表、代码示例等),可以在提问中明确说明。明确你希望达成的目标或解决的问题。目标越具体,AI 的回答越精准。如果问题涉及多个领域或方向,可以限定回答的范围,避免答案过于宽泛。提供与问题相关的详细信息,如技术栈、工具、代码片段、错误信息等。作用:提供更多细节,帮助 AI 更好地理解你的需求。,你可以更高效地获取精准答案。

2025-03-11 11:32:42 1973

原创 聊聊Spring AI,一起进入Java AI的世界

Spring AI 为 Java 开发者提供了一个强大的工具集,使得在 Spring 应用程序中集成 AI 功能变得更加简单和高效。无论是机器学习、自然语言处理还是计算机视觉,Spring AI 都为 Java 开发者打开了通往 AI 世界的大门。如果对 Spring AI 或 Java AI 世界感兴趣,可以从官方文档和示例项目开始,逐步探索这个充满可能性的领域。欢迎一起交流学习。

2025-03-11 10:00:39 971

原创 Deepseek自定义API|Java示例|返回说明

DeepSeek以搜索增强架构和混合专家模型为核心技术,通过深度融合搜索引擎与神经网络,实现了跨领域推理、实时信息处理与创造性输出的能力。这种技术架构使得DeepSeek能够实时检索并解析信息,解决传统大语言模型在信息滞后方面的问题。

2025-03-10 13:48:20 1065

原创 Java|锁机制

Java中的锁机制通过提供互斥访问、保证内存可见性、保证原子性和线程同步等手段,确保了多线程环境下对共享资源的安全访问。同时,Java提供了多种锁策略和具体的锁实现,以满足不同场景下的需求。

2025-01-02 15:03:15 681

原创 Java|List实现去重操作

在选择判断List中是否有重复元素的方法时,应根据具体需求权衡多个因素。如果性能是首要考虑因素,并且不关心元素的顺序,那么使用HashSet是一个很好的选择。如果希望代码更加简洁和现代化,并且可以接受一定的性能开销,那么StreamAPI是一个不错的选择。如果原始List的顺序很重要(尽管在重复判断任务中顺序并不直接影响结果),那么可以使用。在实际应用中,应根据具体场景选择合适的方法。

2025-01-02 14:01:26 646

原创 JVM优化之GC

JVM中的GC优化是一个复杂而关键的任务。通过深入理解GC的基本原理与算法、选择合适的垃圾回收器、调整堆内存大小与比例、启用GC日志与分析、优化代码与数据结构以及持续监控与调优等措施,可以显著提高Java应用程序的性能和稳定性。同时,也需要注意避免内存泄漏、平衡吞吐量与响应时间以及考虑硬件与操作系统差异等挑战。

2025-01-02 13:41:49 817

原创 分库分表后,如何处理全局ID

在数据库架构设计中,分库分表是一种常见的优化策略,用于解决单表数据量过大导致的查询性能下降问题。然而,分库分表后如何处理主键ID成为了一个关键问题,因为每个表如果都从1开始累加,会导致主键冲突,因此需要生成全局唯一的ID来支持。

2024-12-31 14:51:13 676

原创 MVC和设计模式的关系

MVC(Model-View-Controller)是一种软件架构设计模式,它将应用程序分为三个核心组件:模型(Model)、视图(View)和控制器(Controller)。这三个组件各自承担不同的职责,共同协作以完成应用程序的功能。模型(Model):负责管理应用程序的数据和业务逻辑。它是应用程序的核心部分,包含了所有的业务规则和数据操作。视图(View):负责展示用户界面,显示模型中的数据。它是用户与应用程序交互的窗口,可以是HTML页面、JSP文件、Thymeleaf模板等。

2024-12-31 14:33:55 465

原创 MySQL|并发

并发控制是指在多个用户同时访问数据库时,如何保证数据一致性和完整性的机制。在并发环境下,多个事务可能同时读取和修改相同的数据,如果没有适当的并发控制机制,就可能导致数据不一致或丢失等问题。

2024-12-31 14:23:22 503

原创 MySQL|SQL执行顺序

SQL的执行顺序,我们需要理解MySQL在处理SQL查询时的内部逻辑。虽然SQL查询的书写顺序通常是SELECT、FROM、WHERE等,但MySQL在执行这些查询时遵循的是不同的逻辑顺序。了解MySQL SQL查询的执行顺序对于优化查询性能和调试SQL语句至关重要。通过合理安排查询条件、使用索引、避免不必要的查询等操作,可以显著提高MySQL查询的性能和效率。,MySQL的优化器可能会根据查询的具体条件和表的索引情况进行优化,改变某些步骤的执行顺序以提高性能。

2024-12-31 14:17:25 397

原创 Spring自动注入和手动实例化

依赖管理:自动注入通过Spring容器管理对象的依赖关系,降低了耦合度;而手动实例化需要开发者自己管理依赖关系,可能导致耦合度增加。代码简洁性:自动注入通过配置文件或注解简化了对象创建和依赖配置的代码;而手动实例化需要编写更多的代码来创建和配置对象。测试与可维护性:自动注入使得对象易于替换和测试,提高了代码的可维护性和可扩展性;而手动实例化可能导致测试困难和维护成本增加。实际开发中,应根据项目的具体需求和场景选择合适的对象创建方式。

2024-12-31 14:05:05 422

原创 Java|自定义注解

首先,你需要使用@interface关键字来定义一个注解。注解的定义可以包含元素(类似于类的属性),这些元素可以有默认值。元素使用value()作为默认名称时,在使用注解时可以省略元素名。java复制代码// 指定注解的保留策略为运行时,这样可以在运行时通过反射访问注解// 指定注解可以应用的Java元素类型,这里是方法和类// 定义注解的元素,这里是一个名为description的字符串元素// 可以定义更多元素...

2024-12-31 13:56:07 355

原创 Java|OOP指针压缩

Java中,(ordinary object pointer)是一个指向对象的托管指针,指是在Java虚拟机(JVM)中对对象引用(或指针)进行压缩的技术。这种技术主要用于减少内存占用并提高性能,特别是在64位系统上。

2024-12-31 13:53:43 902

原创 SQL回表

数据库管理系统中,特别是在使用MySQL这类关系型数据库时,"回表"(也称为"回主表")是一个常见的术语,通常与InnoDB存储引擎的索引操作有关。理解回表的概念有助于优化查询性能。

2024-12-31 13:44:40 337

原创 编程语言真有“鄙视连”吗,你怎么看

我们应该以开放和包容的心态去欣赏和学习不同的编程语言,以实际需求为导向,做出最适合项目的决策。加强不同语言社区之间的交流和合作,促进技术的创新和发展,共同推动整个编程行业的繁荣和发展。

2024-12-31 13:29:24 354

原创 Java|Comparable 和 Comparator

定义顺序Comparable:定义对象的自然排序顺序。Comparator:定义对象的自定义排序顺序。实现位置Comparable:由类自身实现。Comparator:由外部类实现,可以有多个实现。灵活性Comparable:比较逻辑与类绑定,灵活性较差。Comparator:比较逻辑与类分离,灵活性高,可以定义多种排序方式。使用场景Comparable:适用于自然排序。Comparator:适用于多种排序需求。通过理解和使用这两个接口,你可以更好地控制Java集合框架中的排序行为。

2024-12-31 11:50:43 328

原创 Python进阶|动态定义函数

动态定义函数在Python中是一种强大的技术,可以显著提高代码的灵活性和可维护性。然而,它也需要谨慎使用,以避免潜在的安全问题和代码可读性问题。根据具体需求选择合适的方法,可以在运行时动态地创建和调用函数。

2024-12-30 15:47:59 462

原创 Python进阶|并发编程

Python并发编程是指在同一时间段内同时处理多个任务的编程方式。这种编程方式可以加速程序的执行速度,特别是在处理I/O密集型任务(如文件操作、网络请求等)时,能够更有效地利用系统资源。

2024-12-30 15:47:07 442

原创 Python进阶|方法解析顺序

Python中,方法解析顺序(Method Resolution Order,简称MRO)是指类继承体系中,Python如何确定在调用方法时的解析顺序。MRO决定了在多继承环境下,Python如何寻找方法或属性,即它会根据一定规则从父类中查找方法或属性,避免重复继承带来的歧义。

2024-12-30 15:45:38 472

原创 Python进阶|requests

Python中,requests库是一个非常强大且流行的HTTP客户端库,它使得发送HTTP请求变得异常简单。requests库遵循Python的简洁哲学,并且易于上手和使用。以下是对requests。

2024-12-30 15:44:39 356

原创 Python进阶|Django

Django是一个开放源代码的Web应用框架,由Python写成,采用了MVC(Model-View-Controller,模型-视图-控制器)的框架模式,但Django中更关注的是模型(Model)、模板(Template)和视图(Views),称为MTV模式。

2024-12-30 15:34:19 382

原创 Python进阶|点位符

在Python进阶学习中,点位符(或称占位符)是字符串格式化中的一个重要概念。

2024-12-30 15:31:49 563

原创 Java进阶|序列化和反序列化

序列化:Java序列化是指将Java对象的状态转换为字节序列的过程。通过序列化,可以将对象存储到磁盘中或通过网络进行传输。序列化后的对象可以保持其完整性和可传递性,核心作用是对象状态的保存与重建。反序列化:Java反序列化是指将字节序列恢复为Java对象的过程。通过反序列化,可以读取存储在磁盘中或网络上的对象,并重新获取对象的引用。

2024-12-30 15:12:10 424

原创 Java|Map原理

Map是Java集合框架中的一个接口,它用于存储键值对(key-value pairs)。Map中的每个键都是唯一的,并且每个键都映射到一个值。Map接口提供了多种方法来操作这些键值对,如添加、获取、删除等。

2024-12-30 14:07:45 738

原创 Java、K8s和Docker如何实现自动化

Java、K8s(Kubernetes)和Docker可以协同工作,以实现应用程序的自动化部署、管理和扩展。

2024-12-30 13:51:46 1095

原创 聊聊Java反射

Java反射机制是一种在运行时(Runtime)分析和操作类、接口、字段(Field)和方法(Method)的能力。它允许程序在运行时查询和使用任何类的信息,包括私有的和受保护的成员,以及动态地创建对象和调用方法。

2024-12-30 13:28:55 763

原创 Python进阶|Pytest测试框架

Pytest是Python的一个第三方测试框架,用于编写和运行单元测试、集成测试和功能测试。它以其简单、灵活、易于扩展的特点,被广泛应用于Python项目的测试工作中。Pytest测试框架以其简单、灵活、易于扩展的特点,成为了Python项目测试工作中的重要工具。通过掌握Pytest的基本用法和高级用法,测试人员可以更加高效地编写和运行测试用例,提高测试工作的质量和效率。

2024-12-27 17:28:55 649

原创 Python进阶|ConfigParser

Python标准库中的一个模块,它提供了读取和写入配置文件的功能。配置文件通常用于存储应用程序的设置或参数,这样用户或开发者就可以在不修改代码的情况下调整它们。支持的文件格式通常是.ini文件,这种文件格式简单易懂,易于编辑。

2024-12-27 17:27:26 223

原创 Python进阶|Yield

Python中,yield关键字被用于从一个函数中返回一个生成器(generator)对象。生成器是一种特殊的迭代器,它允许你一次返回一个值(通过yield),并在函数执行到该点时“暂停”,以便在需要下一个值时可以从该点继续执行。这种机制对于处理大量数据或需要惰性求值(即按需计算值)的场景非常有用。

2024-12-27 17:25:28 400

原创 聊聊BigDecimal

BigDecimal是Java中的一个类,位于java.math包下。它提供了在Java应用中进行精确的小数运算的能力。与float和double提供的浮点数运算相比,BigDecimal可以避免在运算过程中因为无法精确表示而产生的误差积累。

2024-12-27 17:19:35 361

原创 策略模式和if-else

策略模式和if-else语句各有优缺点,选择哪种方法取决于具体的应用场景和需求。如果条件逻辑复杂且需要动态变化,策略模式更加适合;如果条件逻辑简单且固定,if-else语句可能更加简洁高效。在实际开发中,应根据具体情况灵活选择。

2024-12-27 17:10:35 412

空空如也

空空如也

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

TA关注的人

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