自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 在Spring中获取Bean的各种方式

适用于需要手动控制Bean创建和管理的场景,通常在简单的测试或非Spring管理的类中使用。这些方法各有优缺点和适用场景,可以根据具体的需求选择合适的方式来获取Spring Bean。:适用于需要每次调用都返回新的Bean实例的场景(如Prototype作用域的Bean)。:适用于需要在非Spring管理的类中访问Spring管理的Bean。:适用于需要在Java代码中配置Bean而不是使用XML配置的场景。:适用于需要依赖注入的类中,这是Spring中最常用的注入方式。:适用于需要基于名称注入的场景,

2024-07-22 18:29:22 260

原创 MyBatis 插件机制、分页插件如何实现的

MyBatis 插件机制允许开发者在 SQL 执行的各个阶段(如预处理、执行、结果处理等)中插入自定义逻辑,从而实现对 MyBatis 行为的扩展和增强。

2024-07-22 12:28:48 537

原创 华为od-C卷100分题目8 - CPU算力分配

现有两组服务器A和B,每组有多个算力不同的CPU,其中A[i]是A组第i个CPU的运算能力,B[i]是B组第i个CPU的运算能力。为了让两组服务器的算力相等,允许从每组各选出一个CPU进行一次交换,求两组服务器中,用于交换的CPU的算力,并且要求从A组服务器中选出的CPU,算力尽可能小。第一行输入为L1和L2,以空格分隔,L1表示A组服务器中的CPU数量,L2表示B组服务器中的CPU数量。对于每组测试数据,输出两个整数,以空格分隔,依次表示A组选出的CPU算力、B组选出的CPU算力。

2024-07-22 09:08:12 87

原创 华为od-C卷100分题目9 - 最大坐标值

有智障举报抄袭,题目是你出的?自己写的代码也举报抄袭,断了别人财路,别人60块的专栏,赚了10多w了。整个游戏过程中,小明所处的坐标值依次为[0,-5,-3],最大坐标值为0。思路:非常简单,根据数值的正负和是否和幸运值相等进行移动,更新最大值。指令为1,正好等于幸运数,前进1+1=2步,此时坐标值为-3;游戏开始前,站在坐标轴原点,此时坐标值为0;指令为-5,后退5步,此时坐标值为-5;

2024-07-22 09:06:34 90

原创 JVM调优 jstat 与 jstack

它能帮助你诊断挂起(hang)或响应慢的应用程序,通过展示每个线程的堆栈跟踪信息,可以分析线程的状态以及它们在做什么。是一个命令行工具,用于监控正在运行的 Java 虚拟机(JVM)的性能。输出将包含每个线程的堆栈跟踪,包括线程 ID、线程名称、线程状态以及调用栈。通过分析这些信息,你可以判断哪些线程处于阻塞状态、哪些线程持有锁、哪些线程可能造成死锁等。首先,你需要启动一个 Java 应用程序,确保你知道该应用程序的进程 ID(PID)。是你的 Java 进程的 PID。是你的 Java 进程的 PID。

2024-07-21 17:51:34 406

原创 JVM 中的OopMap与安全点

OopMap 是 JVM 中用于跟踪对象引用位置的数据结构,帮助垃圾回收器在 GC 过程中正确地处理和更新对象引用。它在 JIT 编译期间生成,并在垃圾回收时使用,以确保内存管理的准确性和效率。通过 OopMap,JVM 可以更高效地进行垃圾回收,从而提升应用程序的性能和稳定性。安全点是 JVM 用于在 GC 过程中暂停应用程序线程的机制,确保 GC 能够安全、准确地执行。通过在方法调用、循环回边、异常抛出等位置插入安全点,JVM 能够有效地管理对象引用,减少 GC 的停顿时间,提升应用程序的性能和稳定性。

2024-07-21 17:30:25 680

原创 Redis 基数树

Redis 使用基数树来优化其 HyperLogLog 和 Stream 数据类型的存储和查询操作。基数树通过压缩节点和高效的前缀匹配,提供了优异的存储效率和查找性能。然而,其实现复杂性和潜在的内存消耗需要在具体应用中权衡考虑。理解 Redis 基数树的原理和应用,有助于更好地利用 Redis 的高级数据结构和优化存储性能。

2024-07-20 09:12:13 510

原创 Redis 跳跃列表与紧凑列表

跳跃列表是 Redis 中实现有序集合的一种高效数据结构。通过多层链表的设计,跳跃列表能够在保证高效查询的同时,提供较高的插入和删除性能。Redis 的跳跃列表实现结合了简单性和高效性,适用于各种需要有序存储和快速访问的数据场景。紧凑列表是一种高效的内存优化数据结构,适用于存储小规模列表和哈希表。通过紧密排列的内存结构,紧凑列表能够显著减少内存消耗,并提高缓存命中率。然而,由于操作复杂度较高,当数据规模增大时,紧凑列表的性能会受到一定影响。

2024-07-20 09:06:00 946

原创 Redis 压缩列表与快速列表

压缩列表是一种紧凑的数据结构,用于存储一系列小数据项(例如,列表、哈希表、集合中的元素)。压缩列表通过将多个元素打包在一个单一的内存块中来减少内存使用。

2024-07-19 12:33:51 743

原创 Redis 内部的字符串和字典

字典在 Redis 中主要用于实现 Redis 的哈希(Hash)数据类型,同时也是 Redis 的许多其他数据结构(如集合、排序集合等)的基础。Redis 字典的实现细节非常重要,直接影响到 Redis 的性能和内存使用。这些内部结构和优化措施使 Redis 能够高效地处理字符串类型的数据,同时保持较高的性能和较低的内存开销。Redis 字典的这些设计和优化使其能够高效地处理大量的键值对操作,同时保持较高的性能和较低的内存开销。Redis 字典支持动态扩展和收缩哈希表的大小,以便更好地适应数据的变化。

2024-07-19 12:29:06 809

原创 如何保证对Redis操作的原子性

在Redis中,保证操作的原子性非常重要,特别是在高并发的场景下。Redis提供了多种机制来确保操作的原子性,包括单个命令的原子性、多命令事务(事务脚本)、乐观锁机制(WATCH)等。

2024-07-19 09:08:14 334

原创 Redis SCAN 命令

SCAN命令用于遍历 Redis 数据库中的键,它是无阻塞的,支持增量迭代。该命令返回一个游标和一组元素,每次调用都会返回下一批元素,直到游标值为 0 表示遍历完成。cursor:游标的起始值,一般从 0 开始。:可选参数,用于模式匹配,只有匹配的键才会被返回。:可选参数,表示每次迭代返回的键的个数,默认值为 10。SCAN命令及其家族命令(SSCANHSCANZSCAN)是 Redis 中用于遍历大数据集的利器。它们通过游标实现增量遍历,避免了传统遍历命令(如KEYS。

2024-07-18 10:23:48 1039

原创 Redis 地理位置 GEO 模块

GeoHash 将二维的地理坐标(经纬度)编码为一维的字符串,利用这种编码,可以将地理空间划分成不同的网格,每个网格由一个唯一的字符串表示。空间分割:GeoHash 将地理空间划分为不同的网格,并将每个网格用唯一的字符串表示。字符越长,精度越高:GeoHash 字符串越长,表示的地理位置越精确。相邻网格相邻字符:地理位置相近的点,其 GeoHash 字符串前缀相同。Redis 通过引入 GeoHash 和 GEO 命令,使得地理位置数据的存储和查询变得简单高效。

2024-07-18 10:18:40 345

原创 Redis 延迟队列

延迟队列是一种特殊的队列,允许元素在特定的延迟时间之后才被消费。在一些场景中,如任务调度、订单超时处理、消息重试等,延迟队列是非常有用的。通过使用 Redis 的有序集合,可以高效地实现延迟队列。关键在于利用任务的执行时间作为排序依据,并通过定期扫描来处理到期的任务。使用 Lua 脚本可以确保获取和删除任务的原子性,从而避免并发问题。

2024-07-18 09:53:02 775

原创 @Conditional注解

在Spring框架中,注解用于基于特定条件有选择地注册bean。通过注解,可以在应用程序上下文中有条件地注册bean,而不是在所有情况下都注册它们。这对于创建灵活和可配置的Spring应用程序非常有用。

2024-07-17 09:16:22 932

原创 InnoDB表空间

InnoDB表空间是MySQL数据存储和管理的核心组件,通过不同类型的表空间(共享表空间、独立表空间和通用表空间)提供灵活的存储和管理方案。理解和合理配置表空间可以显著提升数据库的性能和可管理性。

2024-07-17 09:10:58 404

原创 InnoDB 存储结构与索引页结构

InnoDB 的存储结构和索引页结构设计使得 MySQL 数据库在性能和可靠性上都有很好的表现。通过合理配置和优化这些结构,可以显著提高数据库的查询性能和数据操作效率。理解这些底层原理,对于数据库的维护和优化具有重要意义。

2024-07-16 09:14:33 526

原创 InnoDB 的 Buffer Pool

InnoDB 的 Buffer Pool 是提高数据库性能的关键组件,通过将频繁访问的数据缓存到内存中,减少磁盘 I/O 操作。配置和优化 Buffer Pool 大小、管理 LRU 链表、合理配置多个实例以及监控 Buffer Pool 使用情况,都是提升数据库性能的重要措施。理解和掌握 Buffer Pool 的工作原理和管理方法,可以帮助数据库管理员更有效地优化 MySQL 数据库的性能。

2024-07-16 09:08:11 699

原创 InnoDB

InnoDB 作为 MySQL 的默认存储引擎,提供了强大的事务支持、行级锁定、多版本并发控制和崩溃恢复机制。它的底层实现涉及复杂的数据结构和算法,保证了高性能和高可靠性。通过理解这些底层原理,可以更好地优化和管理 MySQL 数据库。

2024-07-15 10:01:16 860

原创 rabbitmq消息投递失败

使用Confirm模式和确保消息从生产者正确发送到交换机和队列。使用手动消息确认机制处理消费者无法处理的消息。配置死信队列处理无法处理或过期的消息。确保消息处理逻辑具有幂等性,以防止重复处理导致的数据不一致。通过这些方法,可以提高消息系统的可靠性和健壮性,确保消息不会丢失或重复处理。

2024-07-15 09:37:23 606 1

原创 Instrumentation API和Javassist对比

适用于需要深入控制Java应用程序行为的场景,如性能分析、安全增强等。Javassist适用于需要动态生成类、动态修改字节码的场景,如动态代理、ORM框架等。选择使用哪种工具取决于具体的需求和开发环境。对于复杂的高级应用,可能需要结合使用两者来实现更灵活和高效的解决方案。Javassist(Java Programming Assistant)是一个用于在运行时编辑字节码以及创建、编辑Java类的库。

2024-07-14 15:26:00 996

原创 过滤器(Filter)和拦截器(Interceptor)的区别

过滤器(Filter)拦截器(Interceptor)定义和用途基于Servlet规范,用于请求和响应的预处理和后处理基于Spring框架,用于在方法调用前后进行处理实现和配置实现接口,配置在web.xml或注解@WebFilter实现接口,在Spring配置中进行配置工作流程在请求到达Servlet之前和响应返回客户端之前执行在Controller方法执行前后和视图渲染之前执行作用范围作用于所有请求,包括静态和动态资源。

2024-07-14 14:36:22 339

原创 Mysql索引、执行计划、体系架构

MySQL索引是一种数据结构,存储在磁盘上的表数据的副本,以提高对数据的检索速度和效率。它类似于书中的目录,可以快速找到数据的位置,而不必全文搜索整本书。MySQL的体系架构是一个复杂而又高效的系统,通过不同的组件和优化策略实现了数据库管理系统的功能和性能优化。理解MySQL的体系架构及其各个组件的作用,有助于开发者和管理员更好地优化和管理MySQL数据库,提高系统的稳定性和性能。

2024-07-13 09:56:37 909

原创 Zookeeper

Zookeeper是一个分布式协调服务,用于管理和协调分布式应用程序的组件。它提供了集中式的服务,用于维护配置信息、命名、分布式同步和组服务。Zookeeper可以帮助开发人员简化分布式应用的设计和实现。

2024-07-13 09:44:31 1066

原创 Curator分布式锁

Curator 是一个用于 Apache ZooKeeper 的客户端库,提供了更高级的抽象和工具,以简化 ZooKeeper 的使用。Curator 是由 Netflix 开发的,并已成为分布式应用程序中使用 ZooKeeper 的事实标准。它解决了原生 ZooKeeper API 使用复杂、易出错的问题,通过提供易于使用的高级 API 和实用工具,显著提高了开发效率和代码质量。

2024-07-12 17:36:57 1099

原创 Tomcat底层原理

Tomcat作为一个成熟的Servlet容器,通过灵活的组件架构、高效的请求处理流程和健壮的线程模型,支持高并发的Web应用。同时,通过生命周期管理、配置管理和自定义类加载机制,提供了丰富的扩展和配置能力。理解Tomcat的底层原理,有助于优化应用性能、解决复杂问题以及进行定制开发。

2024-07-12 12:49:19 973

原创 Spring常见的自定义和扩展的方法

通过类和@Bean方法,自定义Bean的创建过程。@Bean使用Spring AOP(Aspect-Oriented Programming)自定义注解和拦截方法调用。通过实现接口,在Bean的初始化前后添加自定义逻辑。@Component@Override@Override通过实现接口,可以在Bean定义加载后但在Bean实例化前修改Bean定义。@Component@Override通过实现接口,监听Spring应用上下文事件。

2024-07-12 12:44:48 256

原创 Synchronized底层工作原理

通过对象头中的锁标志位和Monitor对象实现了多线程的同步机制。通过锁的升级与膨胀策略,它在无竞争的情况下尽可能减少同步开销,而在竞争激烈的情况下保证线程安全。理解其底层原理有助于更好地使用,从而编写出高效的并发程序。

2024-07-11 09:17:54 322

原创 RabbitMQ 高级功能

RabbitMQ 是一个广泛使用的开源消息代理,它支持多种消息传递协议,可以在分布式系统中用于可靠的消息传递。除了基本的消息队列功能外,RabbitMQ 还提供了一些高级功能,增强了其在高可用性、扩展性和灵活性方面的能力。

2024-07-11 09:12:16 1500

原创 Quartz 介绍

Quartz 是一个功能强大的开源作业调度框架,适用于 Java 应用。它被广泛用于执行调度任务,如批处理作业、定时任务、复杂的工作流等。Quartz 提供了丰富的 API 和配置选项,能够满足各种调度需求。Quartz 是一个强大的作业调度框架,适用于各种类型的 Java 应用。通过合理使用 Quartz 的核心组件和 API,可以实现灵活、高效的作业调度,为应用程序的定时任务和批处理需求提供可靠的解决方案。

2024-07-10 09:10:32 974

原创 Quartz 核心

【代码】Quartz 核心。

2024-07-10 09:09:54 733

原创 流媒体技术

流媒体(Streaming Media)是一种在互联网上连续传输音频、视频和多媒体文件的技术。流媒体技术允许用户在下载文件的同时立即播放内容,而无需等待整个文件下载完成。这种技术极大地提升了用户体验,特别是在观看直播和视频点播时。流媒体技术通过编码与压缩、分片传输、协议实现、缓冲与解码等多个步骤,实现了高效、低延迟的音视频内容传输。流媒体技术不仅提升了用户体验,也为各种应用场景提供了强有力的技术支持。

2024-07-09 12:37:20 929

原创 Redis哨兵模式与集群模式的快速部署

上述Docker Compose文件分别展示了如何搭建Redis哨兵模式和集群模式的环境。通过这种方式,可以快速创建高可用、可扩展的Redis服务。

2024-07-09 09:10:43 316

原创 Netty 入门教程:高性能网络编程框架

Netty 是一个用于构建高性能、可扩展的网络应用的框架。它抽象了 Java 原生的复杂 NIO API,提供了简单易用的 API,使得开发网络应用变得更加简便。Netty 可以用于各种场景,包括 TCP/IP 服务器、HTTP 服务器、WebSocket 服务器等。

2024-07-08 14:17:49 779

原创 Redis哨兵模式和集群模式的区别

哨兵模式主要解决高可用性问题,适用于中小型系统,通过哨兵节点监控和故障转移来保证服务的连续性。集群模式主要解决数据分片和分布式存储问题,适用于大型系统,通过数据分片和多节点部署来实现水平扩展和高可用性。根据业务需求选择合适的 Redis 模式,可以更好地利用 Redis 的特性,提高系统的性能和可靠性。

2024-07-08 09:47:33 381

原创 华为od-C卷200分题目7 - 可以组成网络的服务器

在一个机房中,服务器的位置标识在 n*m 的整数矩阵网格中,1表示单元格上有服务器,0 表示没有。如果两台服务器位于同一行或者同一列中紧邻的位置,则认为它们之间可以组成一个局域网。请你统计机房中最大的局域网包含的服务器个数。[0][0]、[1][0]、[1][1]三台服务器相互连接,可以组成局域网。思路:非常简单,遍历图,到过的地方标记一下就行了,计数找最大值。第一行输入两个正整数,n和m,0 < n,m

2024-07-07 16:19:15 263

原创 华为od-C卷200分题目6 - 5G 网络建设

第三行开始连续输入 M 行数据,格式为 X Y Z P,其中 X Y 表示基站的编号,0 < X

2024-07-07 15:57:39 618

原创 MySQL常用高级特性

MySQL支持多种存储引擎,每种引擎在数据存储、索引、事务处理等方面有不同的特点。事务(Transaction)是一组数据库操作的集合,具有原子性、一致性、隔离性和持久性(ACID)。MySQL通过事务和锁机制来确保数据的一致性和完整性。外键(Foreign Key)用于维护表之间的关系和数据的完整性,确保子表的值在父表中存在。分区是一种将表的数据分成多个部分存储的技术,以提高查询性能和管理大型表。MySQL复制用于将数据从一个MySQL服务器复制到另一个服务器,实现数据的冗余和分布式存储。

2024-07-06 09:18:11 1023

原创 Redis高级特性

发布/订阅模式是一种消息通信模式,允许一个或多个发布者将消息发送到一个或多个订阅者。Redis提供简单的事务功能,可以确保一组命令按顺序执行,具有原子性。Redis支持Lua脚本,可以将多个命令封装在一个脚本中执行,确保原子性和高效性。Redis提供两种持久化方式:RDB快照和AOF日志。RDB (Redis Database)快照:在指定时间间隔保存数据快照。AOF (Append Only File)日志:记录每次写操作,重启时重放日志。

2024-07-06 09:12:19 805

原创 PostgreSQL和Mysql的对比

开源和社区支持:PostgreSQL 是一个开源项目,有一个活跃的社区支持和丰富的文档资源。跨平台:支持多种操作系统,包括 Linux、Windows、macOS 等。SQL 标准兼容:高度符合 SQL 标准,支持大多数 SQL 功能,同时还扩展了许多高级特性。PostgreSQL 是一种功能强大、灵活且可靠的数据库系统,适用于各种复杂的数据管理需求。通过其高级的 SQL 支持、数据完整性保障、扩展性、并发性和安全性,PostgreSQL 成为企业级应用和开发者的首选数据库管理系统之一。

2024-07-05 09:22:46 970

空空如也

空空如也

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

TA关注的人

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