自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 网络协议 TCP、UDP 和 HTTP

特性TCPUDP连接方式面向连接(三次握手)无连接可靠性可靠(确认、重传、校验、排序)不可靠(不确认、不重传、不排序)传输顺序保证顺序到达不保证顺序流量控制有无拥塞控制有无头部开销较大较小速度较慢(但可靠)较快(但不可靠)典型应用场景DNS、视频会议、在线游戏TCP和UDP各有优劣,选择使用哪种协议取决于具体的应用需求。如果需要数据可靠性和顺序性,TCP是更好的选择;如果对传输速度和实时性要求高,且能容忍部分数据丢失,则UDP更为适合。特性。

2024-09-28 23:27:40 522

原创 深入理解 CompletableFuture 的底层原理

是 Java 8 中新增的类,实现了Future和接口,提供了强大的异步编程能力。允许以非阻塞的方式执行任务,并且可以通过链式调用来组合多个异步操作。本文深入探讨了的底层原理,展示了其工作机制,并通过多个代码示例说明了如何在实际应用中使用。通过理解的异步编程模型、状态管理、任务调度和异常处理机制,我们可以更好地利用这一强大的工具构建高效、非阻塞的 Java 应用程序。希望这篇文章能够帮助你全面理解,并在实际开发中灵活应用。如果你有任何问题或建议,欢迎随时交流!

2024-09-28 23:27:09 665

原创 深入理解 CompletableFuture 的底层原理

是 Java 8 中新增的类,实现了Future和接口,提供了强大的异步编程能力。允许以非阻塞的方式执行任务,并且可以通过链式调用来组合多个异步操作。本文深入探讨了的底层原理,展示了其工作机制,并通过多个代码示例说明了如何在实际应用中使用。通过理解的异步编程模型、状态管理、任务调度和异常处理机制,我们可以更好地利用这一强大的工具构建高效、非阻塞的 Java 应用程序。希望这篇文章能够帮助你全面理解,并在实际开发中灵活应用。如果你有任何问题或建议,欢迎随时交流!

2024-09-27 09:05:19 923

原创 网络协议 TCP、UDP 和 HTTP

特性TCPUDP连接方式面向连接(三次握手)无连接可靠性可靠(确认、重传、校验、排序)不可靠(不确认、不重传、不排序)传输顺序保证顺序到达不保证顺序流量控制有无拥塞控制有无头部开销较大较小速度较慢(但可靠)较快(但不可靠)典型应用场景DNS、视频会议、在线游戏TCP和UDP各有优劣,选择使用哪种协议取决于具体的应用需求。如果需要数据可靠性和顺序性,TCP是更好的选择;如果对传输速度和实时性要求高,且能容忍部分数据丢失,则UDP更为适合。特性。

2024-09-27 09:02:31 2264

原创 网络协议 TCP、UDP 和 HTTP

特性TCPUDP连接方式面向连接(三次握手)无连接可靠性可靠(确认、重传、校验、排序)不可靠(不确认、不重传、不排序)传输顺序保证顺序到达不保证顺序流量控制有无拥塞控制有无头部开销较大较小速度较慢(但可靠)较快(但不可靠)典型应用场景DNS、视频会议、在线游戏TCP和UDP各有优劣,选择使用哪种协议取决于具体的应用需求。如果需要数据可靠性和顺序性,TCP是更好的选择;如果对传输速度和实时性要求高,且能容忍部分数据丢失,则UDP更为适合。特性。

2024-09-26 23:03:03 607

原创 深入理解 CompletableFuture 的底层原理

是 Java 8 中新增的类,实现了Future和接口,提供了强大的异步编程能力。允许以非阻塞的方式执行任务,并且可以通过链式调用来组合多个异步操作。本文深入探讨了的底层原理,展示了其工作机制,并通过多个代码示例说明了如何在实际应用中使用。通过理解的异步编程模型、状态管理、任务调度和异常处理机制,我们可以更好地利用这一强大的工具构建高效、非阻塞的 Java 应用程序。希望这篇文章能够帮助你全面理解,并在实际开发中灵活应用。如果你有任何问题或建议,欢迎随时交流!

2024-09-26 23:00:42 972

原创 深入理解 CompletableFuture 的底层原理

是 Java 8 中新增的类,实现了Future和接口,提供了强大的异步编程能力。允许以非阻塞的方式执行任务,并且可以通过链式调用来组合多个异步操作。本文深入探讨了的底层原理,展示了其工作机制,并通过多个代码示例说明了如何在实际应用中使用。通过理解的异步编程模型、状态管理、任务调度和异常处理机制,我们可以更好地利用这一强大的工具构建高效、非阻塞的 Java 应用程序。希望这篇文章能够帮助你全面理解,并在实际开发中灵活应用。如果你有任何问题或建议,欢迎随时交流!

2024-09-25 13:45:00 709

原创 网络协议 TCP、UDP 和 HTTP

特性TCPUDP连接方式面向连接(三次握手)无连接可靠性可靠(确认、重传、校验、排序)不可靠(不确认、不重传、不排序)传输顺序保证顺序到达不保证顺序流量控制有无拥塞控制有无头部开销较大较小速度较慢(但可靠)较快(但不可靠)典型应用场景DNS、视频会议、在线游戏TCP和UDP各有优劣,选择使用哪种协议取决于具体的应用需求。如果需要数据可靠性和顺序性,TCP是更好的选择;如果对传输速度和实时性要求高,且能容忍部分数据丢失,则UDP更为适合。特性。

2024-09-25 09:45:00 1606

原创 Redisson详解

等待锁的释放,并设置等待超时时间;公平锁机制确保线程按顺序获取锁;可中断锁允许线程在等待锁时被中断;自动释放机制防止锁长时间被占用;RedLock 算法提高分布式锁的容错性。这些机制确保了 Redisson 的分布式锁在高并发和分布式环境中的可靠性与高效性。3/3。

2024-09-24 14:18:37 317

原创 Spring 的循环依赖

二级缓存不能解决 Bean 代理的问题,特别是在涉及到 AOP 的情况下。三级缓存通过引入,可以确保在代理场景下也能处理循环依赖,提前暴露还未完全初始化的代理对象。因此,两级缓存不足以解决所有循环依赖问题,特别是在涉及到代理对象的情况下,三级缓存的机制显得非常必要。

2024-09-24 14:02:55 366

原创 Spring 的循环依赖

二级缓存不能解决 Bean 代理的问题,特别是在涉及到 AOP 的情况下。三级缓存通过引入,可以确保在代理场景下也能处理循环依赖,提前暴露还未完全初始化的代理对象。因此,两级缓存不足以解决所有循环依赖问题,特别是在涉及到代理对象的情况下,三级缓存的机制显得非常必要。

2024-09-23 13:51:10 753

原创 Redisson详解

等待锁的释放,并设置等待超时时间;公平锁机制确保线程按顺序获取锁;可中断锁允许线程在等待锁时被中断;自动释放机制防止锁长时间被占用;RedLock 算法提高分布式锁的容错性。这些机制确保了 Redisson 的分布式锁在高并发和分布式环境中的可靠性与高效性。3/3。

2024-09-23 13:50:38 788

原创 Linux的内存管理

等待锁的释放,并设置等待超时时间;公平锁机制确保线程按顺序获取锁;可中断锁允许线程在等待锁时被中断;自动释放机制防止锁长时间被占用;RedLock 算法提高分布式锁的容错性。这些机制确保了 Redisson 的分布式锁在高并发和分布式环境中的可靠性与高效性。3/3。

2024-09-22 16:24:39 720

原创 Spring 的循环依赖

二级缓存不能解决 Bean 代理的问题,特别是在涉及到 AOP 的情况下。三级缓存通过引入,可以确保在代理场景下也能处理循环依赖,提前暴露还未完全初始化的代理对象。因此,两级缓存不足以解决所有循环依赖问题,特别是在涉及到代理对象的情况下,三级缓存的机制显得非常必要。

2024-09-22 16:23:34 394

原创 Spring 的循环依赖

二级缓存不能解决 Bean 代理的问题,特别是在涉及到 AOP 的情况下。三级缓存通过引入,可以确保在代理场景下也能处理循环依赖,提前暴露还未完全初始化的代理对象。因此,两级缓存不足以解决所有循环依赖问题,特别是在涉及到代理对象的情况下,三级缓存的机制显得非常必要。

2024-09-20 09:05:05 503

原创 Linux的内存管理

等待锁的释放,并设置等待超时时间;公平锁机制确保线程按顺序获取锁;可中断锁允许线程在等待锁时被中断;自动释放机制防止锁长时间被占用;RedLock 算法提高分布式锁的容错性。这些机制确保了 Redisson 的分布式锁在高并发和分布式环境中的可靠性与高效性。3/3。

2024-09-20 09:01:38 805

原创 Linux的内存管理

等待锁的释放,并设置等待超时时间;公平锁机制确保线程按顺序获取锁;可中断锁允许线程在等待锁时被中断;自动释放机制防止锁长时间被占用;RedLock 算法提高分布式锁的容错性。这些机制确保了 Redisson 的分布式锁在高并发和分布式环境中的可靠性与高效性。3/3。

2024-09-19 23:37:52 1042

原创 Spring 的循环依赖

二级缓存不能解决 Bean 代理的问题,特别是在涉及到 AOP 的情况下。三级缓存通过引入,可以确保在代理场景下也能处理循环依赖,提前暴露还未完全初始化的代理对象。因此,两级缓存不足以解决所有循环依赖问题,特别是在涉及到代理对象的情况下,三级缓存的机制显得非常必要。

2024-09-19 23:37:17 415

原创 RocketMQ 消费方式

在消息传递系统中,“推(Push)”和“拉(Pull)”是两种不同的消息消费方式,RocketMQ 也支持这两种模式。下面是对这两种模式的详细解释:模式简介:工作原理:优点:缺点:适用场景:模式简介:工作原理:优点:缺点:适用场景:在 RocketMQ 中,你可以选择使用推模式或拉模式来消费消息:具体使用哪种模式,可以根据业务需求和系统特性来决定。

2024-09-18 16:02:30 276

原创 Spring 的循环依赖

二级缓存不能解决 Bean 代理的问题,特别是在涉及到 AOP 的情况下。三级缓存通过引入,可以确保在代理场景下也能处理循环依赖,提前暴露还未完全初始化的代理对象。因此,两级缓存不足以解决所有循环依赖问题,特别是在涉及到代理对象的情况下,三级缓存的机制显得非常必要。4o。

2024-09-18 11:00:03 430

原创 Spring 的循环依赖

二级缓存不能解决 Bean 代理的问题,特别是在涉及到 AOP 的情况下。三级缓存通过引入,可以确保在代理场景下也能处理循环依赖,提前暴露还未完全初始化的代理对象。因此,两级缓存不足以解决所有循环依赖问题,特别是在涉及到代理对象的情况下,三级缓存的机制显得非常必要。4o。

2024-09-17 23:58:08 581

原创 常见的限流算法

算法优点缺点使用场景计数器算法实现简单,适合小型项目临界点可能导致突发流量简单限流滑动窗口算法平滑计数器算法的缺点,避免流量突发需要更多的存储空间和实现复杂度流量分布较平滑的场景漏桶算法固定处理速率,流量控制稳定突发流量支持不佳,可能丢弃请求固定速率的服务令牌桶算法支持突发流量,保证请求处理的平滑实现复杂,维护令牌生成支持突发流量的限流场景Redis 限流分布式限流简单高效需要依赖 Redis,增加网络开销。

2024-09-17 23:57:36 871

原创 常见的限流算法

算法优点缺点使用场景计数器算法实现简单,适合小型项目临界点可能导致突发流量简单限流滑动窗口算法平滑计数器算法的缺点,避免流量突发需要更多的存储空间和实现复杂度流量分布较平滑的场景漏桶算法固定处理速率,流量控制稳定突发流量支持不佳,可能丢弃请求固定速率的服务令牌桶算法支持突发流量,保证请求处理的平滑实现复杂,维护令牌生成支持突发流量的限流场景Redis 限流分布式限流简单高效需要依赖 Redis,增加网络开销。

2024-09-16 23:57:24 1476

原创 Spring 的循环依赖

二级缓存不能解决 Bean 代理的问题,特别是在涉及到 AOP 的情况下。三级缓存通过引入,可以确保在代理场景下也能处理循环依赖,提前暴露还未完全初始化的代理对象。因此,两级缓存不足以解决所有循环依赖问题,特别是在涉及到代理对象的情况下,三级缓存的机制显得非常必要。4o。

2024-09-16 23:51:53 967

原创 Linux的内存管理

等待锁的释放,并设置等待超时时间;公平锁机制确保线程按顺序获取锁;可中断锁允许线程在等待锁时被中断;自动释放机制防止锁长时间被占用;RedLock 算法提高分布式锁的容错性。这些机制确保了 Redisson 的分布式锁在高并发和分布式环境中的可靠性与高效性。3/3。

2024-09-15 22:40:13 896

原创 Linux的内存管理

等待锁的释放,并设置等待超时时间;公平锁机制确保线程按顺序获取锁;可中断锁允许线程在等待锁时被中断;自动释放机制防止锁长时间被占用;RedLock 算法提高分布式锁的容错性。这些机制确保了 Redisson 的分布式锁在高并发和分布式环境中的可靠性与高效性。3/3。

2024-09-15 22:27:53 759

原创 Linux的内存管理

等待锁的释放,并设置等待超时时间;公平锁机制确保线程按顺序获取锁;可中断锁允许线程在等待锁时被中断;自动释放机制防止锁长时间被占用;RedLock 算法提高分布式锁的容错性。这些机制确保了 Redisson 的分布式锁在高并发和分布式环境中的可靠性与高效性。3/3。

2024-09-13 17:49:29 1048

原创 RocketMQ 消费方式

在消息传递系统中,“推(Push)”和“拉(Pull)”是两种不同的消息消费方式,RocketMQ 也支持这两种模式。下面是对这两种模式的详细解释:模式简介:工作原理:优点:缺点:适用场景:模式简介:工作原理:优点:缺点:适用场景:在 RocketMQ 中,你可以选择使用推模式或拉模式来消费消息:具体使用哪种模式,可以根据业务需求和系统特性来决定。4o mini

2024-09-13 09:15:23 697

原创 同步io和异步io

在同步 I/O 模型中,发起 I/O 操作的线程会被阻塞,直到操作完成。换句话说,线程会等待 I/O 操作完成后才能继续执行后续的代码。

2024-09-12 23:47:41 457

原创 Linux将文件中字符串“aaa”换成“123”输出

这个命令会在终端输出替换后的内容,但不会修改原始文件。命令来替换文件中的字符串。会直接修改原始文件。如果你想直接在原始文件中进行替换,并且保存更改,可以使用。,然后在原始文件中进行替换。在Linux中,你可以使用。这会将原始文件备份为。

2024-09-12 23:46:29 275

原创 网络协议 TCP、UDP 和 HTTP

HTTP/2 是基于 TCP 协议来传输数据的,TCP 是字节流协议,TCP 层必须保证收到的字节数据是完整且连续的,这样内核才会将缓冲区里的数据返回给 HTTP 应用,那么当「前 1 个字节数据」没有到达时,后收到的字节数据只能存放在内核缓冲区里,只有等到这 1 个字节数据到达时,HTTP/2 应用层才能从内核中拿到数据,这就是 HTTP/2 队头阻塞问题。HTTP/1.1的持久连接和缓存控制,HTTP/2的多路复用和头部压缩,以及HTTP/3基于QUIC的低延迟连接,都是为了解决前一版本中的不足。

2024-07-27 23:22:01 2711

原创 序列化与反序列化及不同序列化方式的性能对比

JSON: 简单、可读性强,但性能和体积上相对较差。Java原生序列化: Java内置,使用简单,但体积较大且性能一般。: Google开发的高效序列化框架,性能和体积优于JSON和Java原生序列化。

2024-07-13 15:37:14 1902

原创 深入理解 CompletableFuture 的底层原理

是 Java 8 中新增的类,实现了Future和接口,提供了强大的异步编程能力。允许以非阻塞的方式执行任务,并且可以通过链式调用来组合多个异步操作。本文深入探讨了的底层原理,展示了其工作机制,并通过多个代码示例说明了如何在实际应用中使用。通过理解的异步编程模型、状态管理、任务调度和异常处理机制,我们可以更好地利用这一强大的工具构建高效、非阻塞的 Java 应用程序。希望这篇文章能够帮助你全面理解,并在实际开发中灵活应用。如果你有任何问题或建议,欢迎随时交流!

2024-07-08 00:49:29 3361

原创 网络协议 TCP、UDP 和 HTTP

特性TCPUDP连接方式面向连接(三次握手)无连接可靠性可靠(确认、重传、校验、排序)不可靠(不确认、不重传、不排序)传输顺序保证顺序到达不保证顺序流量控制有无拥塞控制有无头部开销较大较小速度较慢(但可靠)较快(但不可靠)典型应用场景DNS、视频会议、在线游戏TCP和UDP各有优劣,选择使用哪种协议取决于具体的应用需求。如果需要数据可靠性和顺序性,TCP是更好的选择;如果对传输速度和实时性要求高,且能容忍部分数据丢失,则UDP更为适合。特性。

2024-06-25 10:06:23 2186

原创 MySQL 深分页解决方案

在MySQL中,深分页(deep pagination)指的是在结果集的末尾进行分页查询,例如查询第 1000 页的数据。这种操作通常会导致性能问题,因为 MySQL 必须扫描和跳过大量行数据来找到所需的结果。

2024-06-24 20:41:39 887

原创 Spring 设计模式

1. 引言设计模式是软件开发中的重要组成部分。这些解决方案不仅可以解决反复出现的问题,还可以通过识别常见模式帮助开发人员更好地理解框架的设计。

2024-06-19 00:46:16 1200

原创 Bean 的生命周期

如果在Spring配置文件中通过init-method指定了初始化方法,或者在Java代码中使用了JSR-250的@PostConstruct注解指定了初始化方法,这些方法会在InitializingBean的afterPropertiesSet方法之后调用。如果在Spring配置文件中通过destroy-method指定了销毁方法,或者在Java代码中使用了JSR-250的@PreDestroy注解指定了销毁方法,这些方法会在DisposableBean的destroy方法之后调用。

2024-06-17 00:24:52 1253

原创 Java 自定义注解结合 AOP 打造高效日志打印机制

通过定义自定义注解,可以对代码进行特定的标注,然后可以利用反射等机制在运行时获取这些注解信息,并基于此进行特定的处理或行为,比如实现特定的逻辑、进行配置、提供额外的约束等。它为开发者提供了一种灵活、可扩展的方式来为代码添加自定义的描述和指示信息。

2024-06-05 23:50:23 352

原创 Java并发编程AtomicInteger 原理

AtomicInteger 是 Java 中的一个类,它属于 java.util.concurrent.atomic 包。这个类提供了一种线程安全的方式来操作单个整数。AtomicInteger 利用了底层的 compare-and-swap (CAS) 原子操作,来保证操作的原子性,从而避免了使用锁带来的开销。

2024-06-04 21:17:25 1332

原创 JDK动态代理 VS Cglib动态代理

提到了动态代理就不得不提到静态代理和动态代理的区别了。动态代理和静态代理是两种常见的代理模式,在软件开发中经常被用来实现对象间的间接访问。它们之间的主要区别在于代理对象的生成时机和方式。静态代理和动态代理都是为了实现对象间的间接访问,通过代理对象来控制对目标对象的访问。静态代理在编译时就已经确定了代理对象,而动态代理是在运行时生成代理对象。静态代理需要为每个被代理类创建一个代理类,而动态代理可以动态地为多个类创建代理对象。动态代理相对于静态代理更加灵活,但实现机制相对复杂。

2024-06-04 09:58:41 1061

空空如也

空空如也

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

TA关注的人

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