自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 并发编程系列:信号量Semaphore代码分析

Semaphore的用法及源码分析,详细解释JDK1.5和JDK1.8关于释放资源的相关方法的区别。JDK1.5是有bug的,1.8中已修复

2024-04-01 07:21:04 124

原创 Leetcode高频题:213打家劫舍II

跟我之前写的打家劫舍1的解法只是当前数组能不能成环,不成环就是头尾互不影响,成环就是头尾互相影响,选这个就不能选那个。你不能先偷窃 1 号房屋(金额 = 2),然后偷窃 3 号房屋(金额 = 2), 因为他们是相邻的。你是一个专业的小偷,计划偷窃沿街的房屋,每间房内都藏有一定的现金。,这意味着第一个房屋和最后一个房屋是紧挨着的。同时,相邻的房屋装有相互连通的防盗系统,你可以先偷窃 1 号房屋(金额 = 1),然后偷窃 3 号房屋(金额 = 3)。偷窃到的最高金额 = 1 + 3 = 4。

2024-02-03 19:37:13 400 1

原创 Leetcode高频题:198打家劫舍1

你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,偷窃 1 号房屋 (金额 = 2), 偷窃 3 号房屋 (金额 = 9),接着偷窃 5 号房屋 (金额 = 1)。偷窃 1 号房屋 (金额 = 1) ,然后偷窃 3 号房屋 (金额 = 3)。偷窃到的最高金额 = 2 + 9 + 1 = 12。偷窃到的最高金额 = 1 + 3 = 4。给定一个代表每个房屋存放金额的非负整数数组,计算你。,一夜之内能够偷窃到的最高金额。

2024-02-03 19:31:34 482

原创 线程的常用方法-wait和notify以及线程的结束方式

详细介绍wait和notify的使用以及结束线程的方式

2023-11-26 11:44:49 185

原创 MySQL执行计划分析

type显示该sql对存储引擎的访问方式system:表中只有一条记录,并且使用的存储引擎对数据的统计是精准的(InnoDB不精准,MyIsam或者Memory可以)。const:单表查询,条件是主键或者非NULL唯一索引的等值判断就是const(常数级别)。eq_ref:连接查询中,被驱动表可能出现,出现条件与单表查询的const一样。ref:单表查询,条件是唯一索引为NULL或者非唯一索引的等值判断就是ref(单点扫描区间)。

2023-10-24 16:07:10 249

原创 MySQL面试题-索引的基本原理及相关面试题

因为大小是固定的16kb,所以单条数据占用的空间越小,则磁盘块可以放的数据条数越多,比如如果单条数据是1kb,那一个磁盘块只能放16条数据,而如果是1b就可以放16000条数据,也就是存储同样数量的数据,如果单条数据越小,则需要的磁盘块(节点)越少,也就是基于同样的Max.Degree,树的高度会降低。现在我们评估一下Y,对于叶子节点来说,每个页的大小也是16kb,但是叶子节点放的是真正的数据,占的空间会比较大一些,假设每一条数据1kb,那每个页只能放15条数据(我们页头页尾那部分数据全加起来大概。

2023-09-24 23:15:45 224

原创 Kafka关键点总结-消息的顺序性

需要注意的是,Kafka不能保证不同分区之间的消息顺序,因为分区是独立的存储单元。为了实现全局的消息顺序,生产者需要在发送时按照顺序将相关消息发送到同一个分区,而消费者需要订阅相同分区,并确保单一的消费者实例来处理消息。这将在分区级别保证消息的顺序性,但不会跨分区保证。:使用单一的消费者实例来处理一个分区内的消息可以确保消息按照发送顺序进行处理。:为了保证消息的顺序性,消费者可以选择订阅主题的特定分区,而不是订阅整个主题。这样,它将仅从一个分区读取消息,并且这个分区内的消息是有序的。

2023-09-19 15:34:05 464

原创 某大厂线上JVM参数(CMS+ParNew)参数解析

参数后,CMS在执行Remark阶段之前,会先执行一次年轻代的垃圾收集(CMS来执行这次新生代的垃圾回收,而不是ParNew)。参数的作用是在CMS的"Remark"阶段(重新标记阶段)之前执行一次年轻代的垃圾收集(Scavenge)。一般来说,这个参数通常在特定的性能调优场景下使用,而不是在普通应用程序中启用,因为它可能会导致垃圾收集操作的复杂性增加,可能会影响应用程序的性能。-XX:+UseConcMarkSweepGC 启用了 CMS 垃圾收集器,它是一种并发垃圾收集器,用于老年代的垃圾回收。

2023-09-17 15:57:00 153

原创 滑动窗口系列4-Leetcode322题零钱兑换-限制张数-暴力递归到动态规划再到滑动窗口

【代码】滑动窗口系列4-Leetcode322题零钱兑换-限制张数-暴力递归到动态规划再到滑动窗口。

2023-08-27 10:44:17 263

原创 滑动窗口系列3-Leetcode134题加油站

你无法返回 2 号加油站,因为返程需要消耗 4 升汽油,但是你的油箱只有 3 升汽油。开往 3 号加油站,你需要消耗 5 升汽油,正好足够你返回到 3 号加油站。开往 4 号加油站,此时油箱有 4 - 1 + 5 = 8 升汽油。开往 1 号加油站,此时油箱有 7 - 3 + 2 = 6 升汽油。开往 2 号加油站,此时油箱有 6 - 4 + 3 = 5 升汽油。开往 0 号加油站,此时油箱有 4 - 3 + 2 = 3 升汽油。开往 1 号加油站,此时油箱有 3 - 3 + 3 = 3 升汽油。

2023-08-27 10:43:06 355

原创 滑动窗口系列2-窗口内的最大值问题

题目过于简单,就不多写了,直接上代码。

2023-08-27 10:36:53 68

原创 滑动窗口系列1-达标子数组

滑动窗口系列算法题1

2023-08-27 10:19:38 334

原创 不基于比较的排序:基数排序

基数排序适用于范围比较确定的排序

2023-08-11 16:58:46 495

原创 Dubbo启动错误

C:\Users\chang\.jdks\corretto-1.8.0_362\bin\java.exe -javaagent:D:\软件安装包\ideaIU-2020.3.4.win\lib\idea_rt.jar=56964:D:\软件安装包\ideaIU-2020.3.4.win\bin -Dfile.encoding=UTF-8 -classpath C:\Users\chang\.jdks\corretto-1.8.0_362\jre\lib\charsets.jar;加完Nacos配置后报错。

2023-08-09 13:18:52 477 1

原创 分布式事务

如果协调者发出的第二次指令是回滚,则数据进行回滚并释放资源,这是一个靠谱的选择,1.如果第一阶段某个参与者给出了失败的反馈,那毫无疑问需要回滚。假设第一阶段大家返回的都是成功,但是当协调者发出第二条指令(提交)的时候,某个数据库的网络断了(收不到第二次指令),则其他数据库都执行了提交的操作,但是这个断了连接的数据库没有执行,导致数据不一致。2.阻塞资源:占用数据库连接、性能低,第一阶段执行完成后到协调者发第二条指令之前,占有数据库的资源,不能提交或者回滚,数据库的资源是宝贵的,这样会导致性能低。

2023-08-03 08:35:45 407

原创 ThreadLocal有内存泄漏问题吗

这是我们实际工作中可能面临的问题,如果ThreadLocal对象因为GC被回收了,也就是对应的key失去了引用,变成了null,那value也就无法访问了,如果我们使用的是new出来的线程,等线程执行结束了也就会被整体回收掉了,但是如果使用的是线程池那线程的空间就不会被回收,所以需要自己在使用完ThreadLocal对象后及时调用remove方法,移除Entry即可。key的是ThreadLocal对象,因为是弱引用,GC的时候就可以被回收掉,所以key的内存泄漏问题通过弱引用的设计就解决了。

2023-08-02 06:34:38 481

原创 ConCurrentHashMap常见面试题

在线程安全方面,如果存储元素的计算结果为空,会使用CAS来设置该节点,如果不为空就会使用synchronized加锁来实现,遍历桶中的元素,替换或者新增元素到桶中,最后判断是否需要转为红黑树(链表长度大于8并且数组的长度大于64的时候,链表升级为红黑树的结构),整个过程相当于只对头结点进行了加锁,比Segment加锁力度更小,发生加锁和hash冲突的频率也更低了,并发场景下性能更高,因为使用了红黑树,数据量比较大的时候查询性能更好。关于1.8中的一些核心方法可以查看我的另一篇关于源码分析的文章。

2023-08-02 05:50:08 421

原创 Kafka的零拷贝

在使用mmap时,操作系统会自动将文件的某些部分或者整个文件的内容映射到内存中,而这些映射的内存区域可以被当作普通的内存指针来访问,从而实现对文件内容的访问。零拷贝就是把这两次多余的拷贝省略掉,应用程序可以直接把磁盘中的数据从内核中直接传输给Socket,而不再需要经过应用程序所在的用户空间,所以零拷贝不是没有拷贝,而是对于用户空间来说,不再需要进行数据拷贝,这只是较少了不必要的拷贝次数而已。实现高性能的数据库和搜索引擎:将大规模的数据文件映射到内存中,可以大大提升数据的访问速度。

2023-07-30 16:16:05 2273

原创 分层架构简介

DCI架构模式是架构设计层面的方法论,在DCI架构模式中,把数据对象和通用对象进行抽取,这部分可能只有get set 排序 分页、对象的创建和销毁等一些逻辑,是属于贫血模型。四层架构是非严格的分层架构,每一个层级不会严格它可以调用的层级,而是对于它下面的层级都可以进行调用(从上到下依次是1,2,3,4层,这里说的下指的是数字越大,例如用户层不仅可以访问应用层,还可以访问领域层和基础设施层)4.由于Spring的存在(MVC的主要推崇者),其实我们的开发是不符合面相对象的。五层架构的变体:六层架构。

2023-07-02 16:31:52 522

原创 MySQL的服务层和存储引擎层

在MySQL中,服务层和存储引擎层是相互独立的组件,并且可以根据需求进行独立的选择和配置。MySQL支持多个存储引擎,包括InnoDB、MyISAM、Memory等,每个存储引擎具有不同的特性和适用场景。服务层提供了与存储引擎层的接口,允许应用程序通过服务层与所选的存储引擎进行交互。2. 存储引擎层(Storage Engine Layer): 存储引擎层是MySQL的底层组件,负责管理数据的存储和检索。它实现了数据的物理存储和索引结构,负责读取和写入数据,以及执行各种数据库操作,如插入、更新、删除等。

2023-06-26 18:35:54 641

原创 CAP理论

然而,由于网络不可靠性或节点故障等原因,可能会导致节点之间的通信中断或分区,即系统无法将所有节点连接在一起形成一个整体的网络。例如,一些系统更注重数据的一致性,即使在面临分区时也会牺牲可用性。分区容忍性(Partition tolerance)是指在分布式系统中,即使系统中的节点之间由于网络问题或故障而无法互相通信或产生分区(Partition),系统仍然能够继续正常运行。P是肯定需要保证的,可选的方案只有CP和AP,CP就是出现分区后保障一致性,AP是出现分区后保障可用性,CAP是无法同时保障的。

2023-06-26 16:08:44 201

原创 MySQL的分库分表

分库分表的一般条件:单表数据量超过1000w或者单表数据文件(.ibd)超过20GB,这个很重要,(很多年前我没怎么用过数据库的时候面试某著名大厂,让我等最后的谈钱不伤感情(他们hr不挂人),大领导对我非常满意,就跟我闲聊技术,就因为瞎XX聊天的时候说了一个过200w要分库分表的笑话,就从等待谈钱不伤感情到回去等通知吧,到手的offer没了,所以没事不要开玩笑。范围分表容易扩容,最后的数据存在于最后的节点上,如果 容量不够只需要在最后再添加服务器即可,但是存在尾部热点问题,最后的服务器读写压力可能最大。

2023-06-26 08:14:01 313

原创 Flink(1)-概述

Apache Flink 是一个框架和分布式处理引擎,用于在无边界和有边界数据流上进行有状态的计算。Flink 能在所有常见集群环境中运行,并能以内存速度和任意规模进行计算。

2023-06-24 18:51:21 569

原创 Redis的数据类型及对应的数据结构(二)

Zset 类型(有序集合类型)相比于 Set 类型多了一个排序属性 score(分值),对于有序集合 ZSet 来说,每个存储元素相当于有两个值组成的,一个是有序集合的元素值,一个是排序值。有序集合保留了集合不能有重复成员的特性(分值可以重复),但不同的是,有序集合中的元素可以排序。

2023-06-24 12:01:31 471

原创 Redis的数据类型及对应的数据结构(一)

Redis的数据类型及对应的数据结构系列文章第一部分,高频面试题

2023-06-23 12:01:58 353

原创 Redis过期策略

Redis的过期删除策略

2023-06-15 06:29:03 955

原创 MySQL中的行级锁

学习林老师大作,醍醐灌顶,面试高频

2023-06-13 07:40:26 6875

原创 MySQL中的事务

MySQL中的事务,面试中的绝对高频面试点,一定要重点掌握

2023-06-11 20:07:32 726

原创 MySQL中索引失效的场景

MySQL中常见的索引失效的场景,面试必考点,参考45讲及林老师其他

2023-06-11 18:07:16 731

原创 Mysql中联合索引的最左匹配

举例个例子 ,a 和 b 都是 int 类型且不为 NULL 的字段,那么 Q1 这条查询语句执行计划如下,可以看到 key_len 为 4 字节(如果字段允许为 NULL,就在字段类型占用的字节数上加 1,也就是 5 字节),说明只有 a 字段用到了联合索引进行索引查询,而且可以看到,即使 b 字段没用到联合索引,key 为 idx_a_b,说明 Q1 查询语句使用了 idx_a_b 联合索引。可以看到,联合索引的非叶子节点用两个字段的值作为 B+Tree 的 key 值。

2023-06-09 07:36:24 593

原创 数据结构与算法大厂实战真题第3题:找到>=num,并且离num最近的,2的某次方

int类型只有32位,第一位是符号位,我们这里是正数,所以第一个1顶多出现在31位,不过无所谓了。n>>>16是把num的第一个1的往后的17~32位都变成1(第一个1开始的32位都是1)n>>>8是把num的第一个1的往后的9~16位都变成1(第一个1开始的16位都是1)n>>>4是把num的第一个1的往后的五六七八位都变成1(第一个1开始的8位都是1)n>>>2是把num的第一个1的往后的三四位都变成1(第一个1开始的4位都是1)n>>>1是把num的第一个1的下一位也变成1(第一个1开始2位都是1)

2023-06-02 22:30:00 107

原创 SpringCloud:分布式锁和线程安全

分布式锁和线程安全的介绍

2023-06-02 06:46:41 510

原创 有序表4:应用:Leetcode第327题区间和的个数

有序表的应用:Leetcode第327题区间和的个数

2023-06-02 05:47:45 179

原创 有序表3:Size-BalanceTree

有序表第三篇文章:SB树,全名Size-BalanceTree

2023-06-01 16:41:42 96

原创 SpringCloud微服务踩坑系列:UnknownContentTypeException

问题原因,通过feignClient进行远程调用的时候,被调用的服务和调用服务的返回值不同。这里我们只是为了简单测试,就把FeignCient的返回值改为String了。

2023-06-01 13:55:24 2674

原创 SpringBoot多环境配置

至于为什么加上---可以解决这个问题?其实---相当于文件的连接符,怎么理解呢,你可以认为是---的上下是两个文件,依靠这个符号实现单文件可以实现多文件的效果,相当于写了多个yml的配置文件。我这里是要把Service-Order的服务在同一个服务器启动多个,只有端口是不同的。Nacos也正确注册。

2023-06-01 10:34:48 1309

原创 SpringCloud微服务踩坑系列:QueryWrapper中的AND和OR

显然不符合预期,后面只要有一个OR成立,则整个整理,前面的passenger_id 就变成了被忽略的条件,不会真正用来过滤。打印出来的SQL语句。那代码里如何实现呢?

2023-05-30 06:45:27 1192

原创 有序表2:跳表

跳表是一个随机化的数据结构,可以被看做二叉树的一个变种,它在性能上和红黑树,AVL树不相上下,但是跳表的原理非常简单,目前在Redis和LeveIDB中都有用到。Redis面试底层数据结构的时候跳表是必问的数据结构

2023-05-28 08:23:21 862

原创 SpringCloud微服务踩坑系列-Long类型参数的精度缺失

Long类型的精度缺失问题

2023-05-26 16:39:16 157

原创 SpringCloud微服务踩坑系列-java.lang.IllegalStateException

出问题的时候搜了好多,几乎千篇一律的让它方法参数中的int类型改为Integer类型,我想说的是,既然已经是null了,你转换成int会异常,那能转换为Integer类型真的就是你需要的吗?这里的问题是调用的时候使用了json,这是一个比较低级的错误,也是比较常见的错误,如果调用的时候使用的是json格式的话,那就应该使用@RequestBody来转化成一个类,body里的每个属性名字和类名相同。另外一种解决方式,不使用json,使用form-data,相当于每个参数对应方法一个属性。

2023-05-26 15:46:05 1236

空空如也

空空如也

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

TA关注的人

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