自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 guava 找不到类

在使用guava 进行熟悉copy 的是报找不到类的错误的时候可以看一下是不是以来没有导入全。一般第二个依赖没有引入就会报类找不到的错误。

2024-11-12 19:58:23 157

原创 一致性哈希

比如说当前已有业务进行了分表 分了n张表但是随着业务的不断增加n 张表已经不够用了所以要重新扩张m张表,如果按照哈希取模的方式进行分表的话就要重新对n+m张表进行重新计算 这样的成本是非常高的,这个时候。要实现一致性哈希需要先构建一个哈希环,然后划分固定数量过的节点 比如说划分2^32 个 那么他的节点范围就是 0-2^32-1。回到最初的问题如果现在要进行扩展 我们是不是只需要讲要扩展的表映射到 哈希环当中就可以了而不需要对所用的表进行重新哈希。然后我们让每张表都映射的哈希环的节点上去。

2024-10-25 15:32:34 313

原创 AQS详解之ReentrantLock 演示

进来之后你得先知道自己是谁,比如说现在进来的是李华,然后李华想知道这个锁现在还是不是小明的(小明在这里是泛称,也有可能是其他人),如果不是小明的那么 “嘿嘿” 我就不客气啦是我的了 拿到了之后我具成功了(返回 true),如果这把锁还是小明的怎么办那么就要判断一下这次来访问的是不是小明如果是那么就让状态+1(state)加一的目的是为了更好的解锁 因为你加了几次锁就要释放几次锁。因为返回了false 所以要自在else当中的acquire(),那么这个方法是干什么的呢?

2024-10-22 22:01:52 673

原创 synchronized 和 ReentrantLock 的区别

但是,JDK 中的某些阻塞操作不会卸载虚拟线程,因此会阻塞其载体和底层操作系统线程。那么那些操作会阻塞载体呢,官方也给出了答案。synchronized 和 reentrantLock 是开发中比较常用的两个同步方法(锁) ,他们俩之间还是有区别的要不然也不会设计出来两个,接下来我我们就来聊聊他们两个之间的区别。在synchronized 代码块或者方中,或者 当它执行本机方法或外部函数时 会阻塞载体,阻塞载体之后就失去了虚拟线程的优势所有官方推荐使用 reentrantlock。我贴了一下关键的部分。

2024-10-20 21:53:49 434

原创 Java 中 synchronized 锁升级的过程

一个synchronized 同步代码块被线程首次进入的时候会获取偏向锁 锁对象就会进入“偏向模式” 在偏向模式下 锁对象就会偏向第一个线程(就像初恋一样)然后 如果说下一次有一个线程来访问如果是刚开始进来的那个线程的话(初恋线程)那么就不用加锁了(不用使用monitorentry、monitoreit )这样的话就节省了加锁的时间 ,如果要进来的不是初恋线程怎么办,要是这样的话“偏向锁”就会升级成轻量锁。大家稍微了解一下即可 主要是为了辅助理解“轻量锁“,接下来咱们开始说“轻量锁”。

2024-10-20 18:48:00 888

原创 java 中的同步方式

1.synchronized 是最基础的一个同步方法他是jvm 提供 并且控制的 他的工作原理就是 加锁 一个时间内只能有一个线程进行操作 synchronized 是java 中最基础 最重的一个锁(及时jvm对其进行了大量优化)不适合用在高并发的场景中。Semaphore 的作用是用来限制线程访问量的,比如说一个资源可以承受10个线程的同时访问 再多就扛不住了 那么这个时候做为程序员要做的就应该在业务层面进行限制(老板不舍得加钱买服务器咱们也没办法)这个时候就可以使用Semaphore 来进行限制。

2024-10-20 09:16:27 835

原创 解决hash 冲突的方法

线性探测的意思就是说默认放在冲突位置的后一位,比如说在n为发生了冲突那么线性探测就向后一位放在n+1位,如果n+1位已经存在值了怎么办,那就顺势向后延伸直到找到一个空的为止,可是如果利用这个方法会产生一个问题,向后延伸释放可以是可以可是 你是有地方放了那原本应该放在这个位置的值人家怎么办,人家经过计算分配到了一个“房子“ 满心欢喜的要住进去,突然发现已经有人住了,我只想说“*******”,如果这种情况少还行要是非常多的话就会产生“聚集现象”非常影响后续的插入和查找的效率,于是就引入了第二种算法。

2024-10-19 15:17:18 410

原创 MySQL中的MVCC

如果说不可见 之后呢,总要给我们一个数据吧,这个时候就可以回到咱们上面讲的undologle,当前版本不可见那就通过 db_roll_ptr 去找上一个版本的 然后拿着上一个版本的 db_trx_id 然后去和Read View 中的 trx_ids 进行比较 ,循环往复直到找到可见的数据。首先先来讲一下undolog,undolog在这里的作用是用来存储存储的每一行数据的历史版本,并且每一行数据出来我们存储的数据之外还会而外存储一下信息比如。Read View 有四个比较重要的属性。

2024-10-16 10:50:14 1433

原创 java 字符串拼接以及intern() 方法的使用

2️⃣intern方法将对象ab所对应的字符串“ab” 放到字符串常量池中(intern方法的作用在这里我就不阐述了)此时字符串常量池中“ab” 存储的并不是 真正的字符串 “ab” 而是 堆空间中变量ab 的地址,之所以这样做是为了节省空间。原因是 : 1️⃣已经提前把字符串“ab” 放到了字符串常量池当中了 所以说2️⃣ 返回的就不是对象ab的地址了而是字符串常量池中的“ab” 所以导致了结果的不同。3️⃣变量ab2 对应的ab就是字符串常量池中的ab也就是 对象ab 的地址引用。

2024-10-14 22:59:14 231

原创 Springboot的启动流程

从启动类的run方法一路点过来就可以看到,咱们继续深入 想看一下new SpringApplication(primarySources) 的构造方法当中做了什么。默认实现的类都是Springboot启动说必须的对象,该方法就是为了保证加载springboot说必须的一下系统类资源。关于springboot的启动流程的强烈推荐大家点击源码看一看,看过之后会有很大的收获。这个是我在网上找的已经看不清是哪位大神的原创了,要是冒犯到请联系我。1️⃣使用来加载主资源的 这个主资源就是 你的启动类。

2024-10-14 20:44:05 155

原创 Springboot 自动装配的过程

bean可以简单的理解为类 ,在我们平常通过Maven拉取的jar包中存在的类就被看作一个又一个的bean ,在Springboot中这些bean会根据Spring的条件配置规则来判断要装配哪些bean ,通过规则的bean会被转化成一个一个configuration文件然后从放到spring.factories 文件中。(springboot3 已经把这个文件剔除了替换成了imports文件)少年辛苦终身事,莫向光阴惰寸功。

2024-10-14 13:34:00 193

原创 如何让特定的Spring Bean 在系统加载Bean之前加载

我们在工作的是可能会遇到要将特定的bean 提前加载来满足其他bean对该bean 的依赖,那么该怎么做呢,可以使用@Order 的方法来进行排序加载,可是这种方法有局限性也是常踩的坑,@Order这个注解只能工资相同bean类型的bean加载的顺序。在Bean1中加载Bean2 也就是说Bean是提前加载的Bean。按照逻辑应该是先加载Bean2 再加载Bean3 ,启动验证一下。他们两个bean根本就不是同一个类型的做不到加载顺序的排序。像是以上代码的这种Bean1是先于Bean2 加载的。

2024-10-14 12:56:46 350

原创 java.lang.IllegalStateException: Failed to start RocketMQ push consumer

rocketmq监听文件当中每个监听方法的分组必须是唯一的,这个问题就是由于出现了相同分组引起的。

2024-10-13 21:03:39 227

原创 Description:Field rocketMQTemplate in com.spt.message.service.MqProducerService required a bean of

原理是什么尼,springboot2x的时候自动装配用的是spring.factories 但是springboot3之后用的是上面新加的那个路径文件imports 所以说不兼容。遇到这个问题就是springboot和rocketmq不兼容的问题可以使用rocketmq最新版替换进行解决。如果说你不想换那么你就在resources下面新建。这个路径的imports文件 然后添加。这么一条在你们就可以了。

2024-10-13 20:44:23 360

原创 ElasticsearchException[failed to bind service]; nested: AccessDeniedException[/usr/share/elasticsear

这个错误一般出现在docker不熟Elasticsearch 中,原因是在进行挂载的时候本地挂载的文件夹权限不够造成的。sudo chmod 777 文件夹。通过这个格式就可以解决。

2024-10-13 15:10:15 403

原创 because the connected party did not properly respond after a period of time, or established connect

出现上面报错的原因是因为当你执行命令的时候回去国外的仓库下载你需要的包,但是被防火墙拦截了,你只需要更换一下代理就可以.

2024-04-02 15:01:42 5289 3

原创 go: go.mod file not found in current directory or any parent directory; see ‘go help modules‘

go mod init xxxx 命令就可以了,xxx 随便起名字去,不过一般设置成自己的项目名。出现这个问题的原因是因为你的项目中缺乏 xxx.mod 文件,你只需要执行一下。

2024-04-02 12:48:22 171 1

空空如也

空空如也

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

TA关注的人

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