自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 练习两年半,我的全栈博客出生了

个人开发的全栈博客部署上线

2025-02-04 14:53:44 396

原创 Mysql为什么用B+树作为索引结构

女朋友问我:为什么 MySQL 喜欢 B+ 树?我笑着画了 20 张图

2025-09-04 19:42:45 163

原创 redis的hash表如何扩容

redis的hash表如何扩容,rehash、渐进式扩容

2025-09-04 19:42:03 250

原创 List<?>和List<Object>区别

List和List

2025-09-04 19:36:11 519

原创 Java ForkJoin

ForkJoin

2025-09-04 19:34:16 936

原创 JAva深浅拷贝

深浅拷贝

2025-09-04 19:33:18 201

原创 三级缓存能解决所有循环依赖吗

Spring解决单例模式下的setter循环依赖问题的主要方式是通过三级缓存解决循环依赖。三级缓存指的是Spring在创建Bean的过程中,通过三级缓存来缓存正在创建的和已经创建完成的Bean实例。只有【第三种方式】的循环依赖问题被Spring解决了,其他两种方式在遇到循环依赖问题时,Spring都会产生异常。那么从上面就可以看到其实两级缓存就解决依赖循环,那要三级缓存有什么用呢?

2025-09-04 19:31:12 392

原创 MySQL性能优化

定位到慢 SQL 后,接下来就要针对具体问题进行优化。当面试官对基础优化知识比较满意时,可能会深入探讨一些架构层面的优化方案。性能优化的第一步永远是找到瓶颈。

2025-09-04 19:28:11 428

原创 垃圾回收,几种GC算法及GC机制

常见垃圾回收算法、GC算法、GC机制

2025-09-04 19:23:03 1228

原创 多版本并发控制MVCC

mvcc、mysql、锁

2025-09-04 19:02:24 1125

原创 登陆注册后刷新并跳转

另一种方法是始终使用 `history.push()` 跳转到目标页面,然后通过 `setTimeout` 延迟调用 `window.location.reload()`,确保页面状态更新后再进行刷新。这样,如果用户已经在 `/home` 页面,`history.push('/home')` 不会做任何操作,但会通过 `window.location.reload()` 强制刷新页面。// 检查当前路径,如果已经在 /home 页面,不做任何跳转,直接刷新。// 延迟刷新页面,确保页面跳转完成。

2025-09-04 18:58:52 380

原创 浅学Redux状态管理

2025-09-04 18:55:11 119

原创 IPV6、广播地址

就是说可以使用IPV6的地址格式来表示一个IPV4的地址,换句话说就是把IPv4地址转变为了一种特殊形式的IPv6地址:"X:X:X:X:X:X:d.d.d.d" , 其中"X:X:X:X:X:X"的前80位设为0,后16位设为1,然后再跟IPv4地址。例如,IPv4地址是192.168.0.1,那么嵌入在IPv6协议中呈现的地址为::FFFF:192.168.0.1。网络前缀相当于IPV4中的网络位,用来标识区分不同的网络范围,接口标识就是在这个网络范围内区分不同的主机。

2025-09-04 18:53:21 399

原创 后端Long类型数据传给前端造成精度丢失

后端Long类型数据传给前端造成精度丢失。

2025-09-04 18:51:14 267

原创 前端url参数拼接和提取

在你的 `location.search` 和 `searchParams` 中,有很多 `%20`(代表空格)和其他 URL 编码的字符(如 `%E5%85%B3` 表示 `关`)。- **`location.search`**:输出的是原始的 URL 查询字符串,包含了编码后的字符(比如 `%20` 表示空格,`%E5%85%B3` 表示 `关`)。- **多余的空格干扰**:如果 URL 中有不必要的 `%20`,这些可能会影响参数的正确解析。确保 URL 中没有不必要的空格字符(`%20`)。

2025-09-04 18:41:41 788

原创 二叉搜索树、平衡二叉树、红黑树、B树、B+树、跳表

平衡二叉树、二叉搜索树、红黑树、B树、B+树、跳表

2025-09-04 18:35:32 408

原创 线程生命周期、守护线程、礼让线程、插入线程

Thread的守护线程、礼让线程、插队线程、线程生命周期

2025-09-01 15:10:44 463

原创 同源策略--跨域

我们发送的请求通常包含这三部分:协议+域名+端口。如果浏览器发送的和当前界面的url的这三部分全部相同即为同源,反之不同源。如果没有同源策略,假设用户登陆网站a后又去访问b网站,那么b网站就可以窃取用户在网站a的cookie进而冒充用户。注意,我们常说的同源策略是针浏览器针对ajax的限制!!ajax请求可以到达服务器并响应,但是浏览器会对响应进行校验,非同源则跨域。

2025-09-01 15:07:51 1270

原创 I/O多路复用select/poll/epoll

服务端首先调用socket函数创建网络协议及传输协议,然后调用bind函数,为socket绑定ip地址和端口,最后调用listen函数监听并通过accept函数从内核获取客户端连接。socket模型可以使两个进程跨主机通信,创建Socket的时候,可以指定网络层使用的是IPv4还是IPv6,传输层使用的是TCP还是UDP。客户端创建socket,调用connect函数,指定ip地址和端口,TCP三次握手后就可以和服务端通信了。

2025-09-01 15:04:40 223

原创 单例模式synchronized和volatile

由于Java内存模型允许编译器和处理器对指令进行重排序,在没有volatile的情况下,可能会出现重排序,例如先将对象引用赋值给instance,但对象的实例化操作尚未完成。= null,认为单例已经创建,从而得到一个未完全初始化的对象。在创建单例对象时,通过synchronized保证了创建过程的线程安全性,避免多个线程同时创建多个单例对象。它确保对instance的修改对所有线程都是可见的,并且保证了上述三个步聚按顺序执行,避免了在单例创建过程中因指令重排序而导致的问题。

2025-09-01 14:57:25 247

原创 几个基于AQS的同步工具类:Semaphore、CountDownLatch、CyclicBarrier

SEmaphore信号量、CountDownLatch计数器、CyclicBarrier循环栅栏

2025-09-01 14:53:09 938

原创 如何停止线程运行

线程调用interrupt()后,在线程的run方法中判断当前对象的interrupted()状态,如果是中断状态则抛出异常,达到中断线程的效果。先将线程sleep,然后调用interrupt标记中断状态,interrupt会将阻塞状态的线程中断。会抛出中断异常,达到停止线程的效果。线程调用stop0方法会被暴力停止,方法已弃用,该方法会有不好的后果:强制让线程停止有可能使一些请理性的工作得不到完成。

2025-09-01 14:51:57 259

原创 Docker基础概念

namespace 是为了隔离进程组之间的资源,而 cgroup 是为了对一组进程进行统一的资源监控和限制。Docker 是基于轻量级虚拟化技术的软件,虚拟化技术是一种资源管理技术,是将计算机的各种资源予以抽象、转换后呈现出来并可供分割、组合为一个或多个电脑配置环境。Docker 技术是基于 LXC(Linux container- Linux 容器)虚拟容器技术的。LXC技术主要是借助 Linux 内核中提供的 CGroup 功能和 namespace 来实现。

2025-09-01 14:50:24 245

原创 CAP&BASE理论

即分布式系统中,多个节点之间的网络本来是连通的,但是因为某些故障某些节点之间不连通了,整个网络就分成了几块区域,这就是。当发生网络分区的时候,如果要继续服务,那么C和A只能 2 选 1。也就是说当网络分区之后 P 是前提,分区容错性是必须要实现的。因此,比如 ZooKeeper、HBase 就是 CP 架构,Cassandra、Eureka 就是 AP 架构,Nacos 不仅支持 CP 架构也支持 AP 架构。举个例子:若系统出现“分区”,系统中的某个节点在进行写操作。

2025-09-01 14:42:35 684

原创 死锁概念及条件

当两个线程互相持有互斥锁,并且都在等待对方释放锁,在没有外力的作用下,这些线程会一直相互等待,无法继续运行,这种情况就是发生死锁。持有并等待条件:线程1持有资源A,要申请资源B,然而资源B被线程2持有,那么线程1就会等待。不可剥夺条件:当线程已经持有了资源 ,环路等待条件:在死锁发生的时候,

2025-09-01 14:41:25 251

原创 mysql锁

行级锁、表级锁、全局锁、临建锁、间隙锁、记录锁

2025-09-01 14:39:38 658

原创 TCP粘包

原因在于两者发送方的机制不同,UDP传输时,系统不会对报文进行拆分,在封装好UDP头部后就会交给网络层,所以发出去的UDP报文就是完整的一个消息,也就是每个UDP报文就是一个消息的边界。而TCP协议则会对发出消息拆分成多个报文,如果接收方不知道发送方的消息长度,就不知道消息的边界,无法读取有效的消息,因此TCP传输不能认为一个用户消息对应一个TCP报文,所以说TCP是面向字节流的协议。当两个消息的部分内容被分到同一个TCP报文,就出现了粘包,这时接收方不知道消息的边界的话,无法读出有效的消息。

2025-09-01 14:38:27 200

原创 SpringMVC流程、过滤器、拦截器

中渲染了对应的视图之后请求结束。是在请求进入容器后,但在进入。之前进行预处理,请求结束是在。

2025-09-01 14:36:32 266

原创 MYSQL表分区

表分区是将表中的数据按照某种规则(如范围、列表、哈希等)分散存储到多个分区中。每个分区可以独立地进行操作,例如查询、插入、更新和删除。分区的目的是将数据分散到多个存储单元中,从而提高性能和可管理性。

2025-09-01 14:31:47 800

原创 AOP主流是运行织入还是编译织入,有什么区别

在面向切面编程(AOP)中,织入(Weaving)是指将切面(Aspect)的代码插入到目标对象(Target Object)的过程。根据织入发生的时间,可以分为三种主要的织入方式:编译时织入(Compile-time Weaving)、加载时织入(Load-time Weaving)和运行时织入(Runtime Weaving)。

2025-09-01 14:28:23 329

原创 volatile关键字及内存屏障

当一个线程修改了一个。

2025-09-01 14:27:03 140

原创 mysql深度分页

作为下一页的起始条件。

2025-08-31 19:41:59 230

原创 top命令和ps命令

主要显示的是信息。默认情况下,top显示的是系统中当前活动的进程,并且会(默认每 3 秒刷新一次)。它显示的是进程的资源占用情况,如 CPU 使用率、内存使用率、进程 ID(PID)、进程优先级等。如果需要查看线程,可以通过特定选项如 -H切换到线程模式,。

2025-08-31 19:35:08 346

原创 雪花算法生成分布式ID

这当然会导致分布式实例规模由 210(1024)2^{10}(1024)210(1024) 降至 27(128)2^7(128)27(128),同时每个分布式实例支持最多 23(8)2^3(8)23(8) 次时间回拨。将原本 10 位的机器码拆分成 3 位时钟序列及 7 位机器码。发生时间回拨的时候,时间已经发生了变化,那么这时将时钟序列新增 1 位,重新定义整个雪花 Id。当出现虚拟机、容器时间矫正或手动调整时间、硬件故障时会出现时间回拨,即系统时间被调整到一个比之前时间更早的时刻。

2025-08-31 19:32:26 327

原创 kafka、RabbitMQ结构

Kafka主要用于高吞吐量、分布式的消息处理,适合大规模数据流的实时处理。RabbitMQ提供了丰富的消息路由功能,适合复杂的业务逻辑和多种消息分发模式。

2025-08-31 19:16:18 955

原创 如何保证redis和mysql的数据一致性

适合读多写少的场景,因为当写入比较频繁时,,对缓存的命中率有影响。读时先读redis,读不到则查mysql,写时先更新mysql,然后删除redis缓存。而上述成功的前提这两个操作都能同时执行成功,所以问题就是,在删除缓存(第二个操作)的时候失败了,导致缓存中的数据是旧值,而数据库是最新值。如何保证两个操作都能执行成功?订阅MySQL binlog + 消息队列 + 重试缓存的删除,优点是规避了代码入侵问题,也很好的保证缓存一致性的问题,缺点就是引入的组件比较多。

2025-08-31 19:12:50 286

原创 消息队列如何消息不丢失、不重复消费、有序性、消息堆积

了,增加 Topic 的队列数和消费者数量, 注意队列数一定要增加,不然新增加的消费者是没东西消费的。比如kafka,一个topic多个分区,单个分区内消息有序,一个分区只能由一个消费者组中的一个消费者消费,保证了有序性、不重复消费。可以看到正常业务而言消息重复是不可避免的,因此我们只能从另一个角度来解决重复消息的问题。在消息中添加序列号,记录消息的发送顺序。消费者消费能力弱:优化下消费逻辑,比如之前是一条一条消费,可以改成批量消费。:如果消息丢失,序列号可能会出现断层,需要额外的机制来处理这种情况。

2025-08-31 19:05:54 442

原创 数据库索引abc,请问查询哪些字段能命中索引

查询语句:select * from table where a=?也就是说,一旦遇到范围查询,索引只能用到该字段为止。的条件会在索引层面被提前过滤,减少了回表的记录数,提高查询效率。但开启索引下推后,存储引擎在遍历索引时,会同时检查。的记录,而无需将这些记录回表查询完整数据后再过滤。会命中索引,但索引的使用会在这里中断。不参与索引的范围定位,但通过索引下推,的条件可以通过 “索引下推”过滤。无法直接使用索引进行匹配。的条件,直接过滤掉不满足。

2025-08-31 19:01:30 232

原创 进程间通信的几种方式

内核中的消息链表,数据是带类型的消息体(需收发方匹配类型),解决管道无格式问题,但需用户态与内核态数据拷贝,速度不及时。:可跨主机通信,也支持本地通信,分 TCP(可靠)、UDP(不可靠)、本地进程间通信三种类型,是跨主机进程通信的核心方式。:本质是资源计数器,通过 P/V 原子操作控制,用于保护共享资源(互斥)或同步进程,解决共享内存的竞争问题。:内核分配共享空间,进程直接访问,无需拷贝,是最快的方式,但多进程访问需同步,否则数据易错乱。命令),进程可默认处理、捕捉或忽略,仅。无法捕捉 / 忽略。

2025-08-31 18:58:45 155

原创 Thread、ThreadLocal、ThreadLocalMap

参考:通常情况下,我们创建的变量可以被任何一个线程访问和修改。这在多线程环境中可能导致数据竞争和线程安全问题。那么,JDK 中提供的类正是为了解决这个问题。

2025-08-31 18:56:11 329

Flume进阶-自定义拦截器jar包

Flume进阶-自定义拦截器jar包

2024-04-28

Video Speed Controller_0.6.3_chrome.zzzmh.cn.crx

Video Speed Controller_0.6.3_chrome.zzzmh.cn.crx

2022-12-03

关于同一二叉树的最佳前缀码的疑问

2022-12-20

/home和home有区别呢?

2022-12-05

这个百度网盘下载的pr压缩包,,后缀rar,怎么弄不开啊

2022-12-02

填&x[i++]可以吗

2022-12-04

运行为什么是5呢?xff是什么意思?

2022-12-02

为什么结果是0呢?s[0]就是0,不是直接跳出循环了吗

2022-12-02

为什么结果是9啊?*p是指针变量吧?&a[3]不就是4的地址吗?

2022-12-02

我有user0目录,为什么绝对路径进不去,相对路径能进去

2022-12-08

这是一个有strcat函数功能的程序,为什么最后要加上s1[i]='\0'呢?

2022-11-28

为什么a[31]和a[32]结果不一样啊

2022-11-28

第一道答案我觉得是-1,1。第二道完全不理解

2022-11-25

真的匪夷所思,完全不理解

2022-11-25

&数组名a,是整个数组地址,而数组名a是首元素地址。两者不同体现在哪里?可否举个例子?

2022-11-02

为什么这个输入:01和01之后的输出结果不同

2022-10-30

为什么运行结果是2 4呢?,2可以理解,4怎么来的?

2022-10-30

为什么结果是-1 0呢?

2022-10-30

选择排序能讲一下吗,绕蒙了

2022-09-24

运行结果错在哪里,如何修改

2022-08-28

html和css导航栏制作出现的二级子菜单占位问题

2023-06-16

Clion的cpp文件运行后出现乱码文字

2023-05-04

图片中出格的dl怎么并列在一块啊,问题在哪里?

2023-04-23

数据结构链表的创建插入删除操作

2023-03-12

HTML的style样式里的hover怎么设置在每一行?

2023-03-08

clion的代码无法运行

2023-03-15

vscode的c语言环境配置json文件

2023-03-10

左三角有了,怎么做一个右三角

2023-03-09

Eclipse软件中file无法创建class类

2023-02-27

VS2019中在右边资源管理器新建的项和左上角文件里的新建的项不一样

2023-02-04

VS生成错误代码无法运行

2023-02-16

网上找的图书管理系统,添写的删除功能无法实现

2023-01-29

c语言求二维数组鞍点,找不出bug在哪

2023-01-27

c语言写了个图书管理代码,选项为1.2.3的时候运行bug,核对好多遍了,哪里出错了?

2023-01-17

关于在main外面定义一个结构体及结构体变量的疑问

2023-01-17

Linux火狐浏览器如何下载应用?这是什么情况?

2023-01-14

结果怎么会是1,5呢?我觉得是1,3

2022-12-20

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

TA关注的人

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