自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 常见重试策略总结

调用接口失败可能有很多原因,有时可能是服务提供者返回了错误,但有时可能只是网络不稳定或服务提供者重启等临时性问题。这种情况下,我们可能更希望服务消费者拥有自动重试的能力,提高系统的可用性。下面主要给大家介绍一下主流的重试策略,以及通过Java的 Guava-Retrying 库简单的实现一下不同的重试策略。

2025-01-12 21:36:35 842

原创 【Redis】浅析Redis大Key

在 Redis 中,大 Key 是指在 Redis 中存储的单个键值对所占的空间过大,对于大 Key 也没有严格的定义区分,但通常满足以下条件的 Key 会被视为大 Key本文介绍了 Redis 中大 Key 的定义及其可能引发的问题,并提供了快速定位大Key的方法以及优化方案。通过合理的优化措施,我们可以有效提升 Redis 的性能,改善用户体验。

2024-10-31 23:29:22 1838 1

原创 【设计模式】一文搞懂策略模式

策略模式是一种行为型设计模式,它定义了一系列算法,并将每个算法封装起来,使他们可以相互替换,且算法的变化不会影响到使用算法的客户。主要用在有多种算法相似的情况下,避免大量使用 if...else 和 switch-case 所带来的复杂和难以维护的问题。策略模式通过定义一系列可互换的算法,并将它们封装到独立的策略类中,使得算法可以在运行时动态替换,提供了更灵活和可扩展的设计方案。策略模式有效地消除了算法的条件分支语句,使代码更加简洁和清晰。

2024-10-21 18:49:01 938

原创 常见状态码汇总

在工作中经常会遇到各种各样的bug,在我们排查问题时,经常需要查看response返回的状态码信息来判断bug类型,除了项目自定义的状态码之外,其余的就是常见的网络状态码,所以了解常见的HTTP网络状态码是非常重要的,这能帮助我们快速的排查出问题,本文是关于常见的网络状态码的总结。相比于其他类别状态码来说,1xx 平时大概率不会碰到,所以这里直接跳过。

2024-09-30 23:31:54 781

原创 【java】常见限流算法原理及应用

在现代分布式系统和高并发场景下,限流已成为保障系统稳定性和可用性的重要手段。随着互联网应用规模的不断扩大,系统经常会面对海量请求和突发流量,如何有效控制和管理这些请求流量成为一项关键挑战。限流算法作为流量控制的重要工具,能够帮助系统平衡资源分配、抵御恶意攻击,并在高峰期维持服务的连续性与可靠性。本文将深入探讨几种常见的限流算法及其应用场景,帮助读者更好地理解限流机制的工作原理与优化策略。

2024-09-20 18:32:57 1384

原创 【bug】Command line is too long. Shorten the command line via JAR manifest or via a classpath file

启动项目时传递给Java虚拟机的命令行参数超过了操作系统允许的最大长度。

2024-08-31 16:56:04 984

原创 【java】过滤器与拦截器

在实际开发中,和是我们经常使用的,尽管这两者在功能上有许多相似之处,比如二者都是 AOP 编程思想的体现,日志记录等,但一谈到它们的区别,许多人可能会感到困惑,很多人可能没有深入区分和总结这两者,因此常常难以准确地理解它们各自的作用和使用场景,本文主要是对这两者进行区分和总结。

2024-08-11 20:23:25 456 2

原创 【Redis】布隆过滤器

布隆过滤器由「初始值都为 0 的位图数组」和「 N 个哈希函数」两部分组成。当我们在写入数据库数据时,在布隆过滤器里做个标记,这样下次查询数据是否在数据库时,只需要查询布隆过滤器,如果查询到数据没有被标记,说明不在数据库中。第一步,使用 N 个哈希函数分别对数据做哈希计算,得到 N 个哈希值;第二步,将第一步得到的 N 个哈希值对位图数组的长度取模,得到每个哈希值在位图数组的对应位置。第三步,将每个哈希值在位图数组的对应位置的值设置为 1;

2024-07-27 15:00:24 377

原创 【多线程】AB两个线程交替打印1到100

问题:使用两个线程从0到1交替打印奇数和偶数。

2024-07-19 19:10:42 208

原创 【多线程】深入浅出之Java线程池

线程池是管理一系列线程的资源池,当有任务要处理时,直接从线程池中获取线程来处理,处理完之后线程并不会立即被销毁,而是等待下一个任务。线程池是一种管理和重用线程的机制,它通过有效地控制并发线程数量,提高系统性能和资源利用率,在实际应用中,我们可以通过合理使用线程池,并根据实际情况进行监控和调优,有效提高系统的性能和稳定性。

2024-05-25 18:20:01 757

原创 自定义实现负载均衡算法(轮询法、一致性哈希和随机法)

一致性哈希算法的核心思想是将整个哈希值空间划分成一个环状结构,每个节点或服务器在环上占据一个位置,每个请求根据其哈希值映射到环上的一个点,然后顺时针寻找第一个大于或等于该哈希值的节点,将请求路由到该节点上。通过手写实现这些算法,我们可以更深入地理解它们的原理和工作机制,并从中学习到如何设计和实现高效的负载均衡策略。每台服务器被选择的概率相等,因此每次请求都有相同的概率被分配到每台服务器上。它将请求依次分配到后端服务器上,确保每台服务器都能够平均地处理请求,而不考虑服务器的实际连接数和系统负载情况。

2024-05-22 20:02:48 321 1

原创 【设计模式】一文搞懂单例模式

在软件开发中,我们经常会遇到需要确保某个类只有一个实例存在的情况,在这种情况下,单例模式成为了一种强大而常用的设计模式。想象一下,当我们需要访问应用程序的配置信息时,我们希望有一个唯一的配置对象来统一管理这些信息,这时,单例模式就能派上用场。然而,单纯地使用单例模式并不足以解决所有问题,在实现单例模式时,我们需要考虑到线程安全性、延迟加载等因素,以确保其在不同情况下的正确性和性能。

2024-05-19 17:45:16 973 1

原创 Dokcer常用指令

【代码】Dokcer常用指令。

2024-01-22 18:30:48 564

原创 Git的基本使用

5. git push -u origin 把当前分支的修改从本地仓库提交到远程仓库。使用git init时,当前目录会生成一个.git文件,这个文件称之为版本库。使用git commit时,会将暂存区的文件添加到本地仓库。远程托管代码的仓库,如git、github、gitlab。4. git commit -m "" 将暂存区的文件添加到本地仓库。使用git add时,会将工作区的文件放到暂存区。3. git add . 将修改的文件添加到暂存区。本地项目存放文件的位置。

2024-01-20 10:19:11 1218

原创 MySQL三大日志(binlog、redo log和undo log)

MySQL日志主要包括错误日志、一般查询日志、慢查询日志、事务日志、中继日志、二进制日志、重做日志、回滚日志几大类,其中最为重要的就是(bin log)、(redo log)和(undo log),本文主要介绍redo logbinlog、两阶段提交和undo log。MySQL 主要日志。

2023-11-26 19:55:05 2313 1

原创 List集合(Java)

Java常见的集合主要分为3种:List(列表)、Map(映射)、Set(集),集合相关类和接口都在java.util中。本文主要介绍List集合Java主要集合关系。

2023-11-25 15:52:06 884

原创 Redis的持久化策略

RDB持久化是把当前进程数据生成快照保存到硬盘的过程,触发RDB持久化过程分为手动触发和自动触发。RDB⽂件是⼀个压缩的⼆进制⽂件,通过它可以还原某个时刻数据库的状态。由于RDB⽂件是保存在硬盘上的,所以即使Redis崩溃或者退出,只要RDB⽂件存在,就可以⽤它来恢复还原数据库的状态。save: 同步保存操作,会阻塞 Redis 主线程;bgsave: fork 出一个子进程,子进程执行,不会阻塞 Redis 主线程,默认选项。使用save相关配置,如“save m n”。

2023-11-24 20:31:28 1908 3

原创 拉链法(解决哈希冲突)

1.拉链法2.开放寻址法。

2023-11-22 19:14:47 449

原创 MVCC(多版本并发控制)

当一个事务进行读操作时,它会使用快照读,写操作时,会生成一个新的数据脚本,并将修改后的数据写入数据库。事务提交时所做的修改将成为数据库的最新版本,对其他的事务可见。MVCC是一种并发控制机制,用于多个并发事务同时读写数据库时保持数据的一致性和隔离性,MVCC 通过创建数据的多个版本和使用快照读取来实现并发控制(通过在每个数据行上维护多个版本的数据来实现的。每个事务读到的数据版本可能是不一样的,在同一个事务中,用户只能看到该事务创建。来判断数据的可见性,如不可见,则通过数据行的。

2023-11-19 15:25:54 116

空空如也

空空如也

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

TA关注的人

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