- 博客(157)
- 资源 (2)
- 收藏
- 关注
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 Maven找不到依赖终极解决方案
离线网络环境中拷贝maven仓库到离线机器,使用maven加载项目,maven编译jar包找不到或者提示jar包信息不可用,现提供以下本人解决的方式,亲测可用基础解决方案常规idea的maven设置,确保maven的版本,配置文件保持一致,maven仓库可用刷新maven操作,重试n次maven离线与在线的切换(toggle offline mode),达到刷新maven的目的pom文件中针对加载不到jar包的依赖,删除,刷新maven,再添加该依赖方式idea重启idea关闭项目,重新打开项目启动i
2022-08-27 19:35:53
20860
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 MySQL索引(二)索引优化方案有哪些
在上一篇文章中,我们介绍了MySQL中常见的索引类型以及每种索引的各自特点,那么这篇文章带你来与我一起看一下聚集索引与二级索引的关系,最后在附上常见的索引优化方案。首先我们还是看一下聚集索引和二级索引的区别MySQL索引(一)聚集索引和二级索引区别首先,每个Innodb引擎的表都有一个聚集索引,用于存储行数据,通常情况下,聚集索引也叫做主键索引。 如果一个表定义了主键,Innodb就使用它作为聚集索引。因此我们要尽可能的为表添加一个主键,如果实在没有一个列是非空且唯一的可以作为主键列,建议
2022-04-05 20:04:23
1802
2
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 Elasticsearch7.4源码编译记录
Elasticsearch 7.4.3 源码编译记录 建议:不要使用本机装的gradle,编译时会自动下载匹配版本的gradle 环境 Macos 10.4 idea 2019 jdk12 elasticsearch7.4 代码 编译过程 1、克隆代码 https://github.com/elastic/elasticsearch/tree/7.4 2、编译idea,这一步会自动下载对应版本的gradle,需要设置好java版本为jdk
2022-03-21 22:14:53
2130
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 MySQL索引(一)
MySQL VersionMySQL 8.0.20索引定义索引一种特殊的数据结构,为表中的数据行提供快速查找功能,通常通过一个树结构(B树)来表示特定的列,或者一组列的所有值。Innodb引擎中的表有一个表示主键的聚集索引,还可以在一个列或者多个列上创建一个或多个二级索引。根据二级索引的结构,可以分为部分索引(col_name (length)),列索引(col_name),组合索引(col_name1,col_name2,…)大多数 MySQL 索引(PRIMARY KEY、 UNIQUE、IND
2022-03-15 21:52:25
838
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 一文彻底理解乐观锁与悲观锁
通过阅读本文可以获得什么1、什么是乐观锁?2、乐观锁实现方式都有什么?3、乐观锁优缺点有哪些?4、乐观锁适用场景?5、什么是悲观锁?6、悲观锁实现方式有哪几种?7、悲观锁优缺点?8、悲观锁的适用场景?首先,我们先看一下什么是乐观锁,在我个人理解,乐观锁可以抽象为去银行取钱,假如银行没有人排队,所以不需要取号,直接去柜台A就可以办理业务。反之悲观锁就是假如去银行取钱,每次去都好巧不巧的都有人在柜台A排队,所以此时需要取号,然后等叫号在去柜台A办理业务。(假设银行只有一个柜台A,不..
2022-03-03 19:57:19
2797
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 一文理解一致性哈希算法
对于最近看到的哈希算法,然后还有一致性哈希算法,本文针对网上搜集到的资料做一个整理,方便后面回顾一致性哈希算法的知识,这就是本篇文章《一文彻底读懂一致性哈希算法》的由来;一致性hash算法是1997年麻省理工学院提出,是一种特殊的hash算法,目的是解决分布式缓存的问题。在移除或者添加一个服务器时,能够尽可能小的改变已存在的服务请求与处理请求服务器之间的映射关系。一致性hash解决了简单hash算法在分布式hash表(Distributed Hash Table,DHT)中存在的动态伸缩问题。
2022-02-13 21:24:36
608
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
转载 MySQL-MVCC全网最详细解读
什么是MVCC在学习MVCC前,先了解一下当前读和快照读 当前读 比如lock in share mode(共享锁),for update,update,delete,insert(排它锁)这些操作都是一些当前读,当前读的定义就是读取当前数据的最新版本,读取时还要保证其它并发事务不能修改数据,会对读取的记录进行加锁 快照读 不加锁的select就是快照读,即不加锁的非阻塞读,快照读的前提是隔离级别不是串行级别,串行级别下快照读会退化为当前读。快照读的实现是基于多版本并发控制,即M
2022-01-17 22:54:38
401
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 Elasticsearch 6.5源码编译最新版
6.5源码编译启动安装教程这里就不写了,百度下怎么安装就行版本我这安装的最新版配置阿里云加速,找到安装的根目录,我这里是 /Users/cxt,在 mac 上就波浪线的目录,自己根据自己系统找到 gradle 安装目录即可创建 init.gradlecd /Users/cxt# 此目录下有个隐藏文件夹gradle,注意小数点cd .gradlevim init.gradleinit.gradle 内容如下allprojects{ repositories {
2021-04-03 21:42:16
281
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 一篇文章学会使用@Transactional
@Transactional参考文档https://docs.spring.io/spring-framework/docs/4.3.13.RELEASE/spring-framework-reference/htmlsingle/#transaction-declarative-annotations作用范围方法当类配置了@Transactional ,方法也配置了@Transactional,方法的事务会覆盖类的事务属性信息。类当把 @Transactional 注解作用在类上面
2021-03-28 14:44:25
273
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 Nacos 入门实战
Nacos 配置快速开始快速开始官网启动 standalone代表单机模式运行,非集群sh startup.sh -m standalone 服务注册curl -X POST ‘http://127.0.0.1:8848/nacos/v1/ns/instance?serviceName=nacos.naming.serviceName&ip=20.18.7.10&port=8080’* 服务发现```textcurl -X GET 'http://127
2020-12-10 19:51:48
298
原创 InheritableThreadLocal 是如何实现的父子线程局部变量的传递
我们通过一个示例,验证了父子线程间可以通过进行传递,测试了不同方式初始化,并对比了与线程池启动的区别。其实殊途同归,线程池最后调用的还是Thread里面的方法。唯一需要注意的就是通过初始化是在get时赋值的,不过这个应该也不重要,了解一下就好,应该也没有面试官会这么抠这个问题吧。最重要的就是,不管用什么方式,一定要在使用完成之后进行remove。大家可以在评论区交流一下父子间线程传递参数的场景有哪些!点击原文醉鱼Java,回复面试,获取2024面试资料。
2024-07-07 21:26:34
729
原创 Maven 父子pom依赖编译报错‘parent.relativePath‘相关的问题如何解决
今天简单的水一篇,在微服务的项目开发中,新增模块有的同事就会在不注意的情况下触发该隐藏bug,导致无法打包。所以解决就是除了根据提示信息查看是否有错误之外,还要查看父子pom的版本号是否对应,千万不要想当然。WX 搜索《醉鱼Java》,回复面试,获取2024面试资料。如果这篇文章对您有所帮助或者启发,帮忙点个关注叭,您的支持是我坚持写作的最大动力。
2024-06-25 11:01:55
756
原创 面试官:对于MQ中的消息堆积你是怎么理解的?
消息堆积发生的原因一般就是消费者出了问题,或者被一个异常一直错误的重试。那么解决方式也就是我们上面所说的,水平扩容消费者、消费者处理速度优化、消费者异常重试等。不过相对应的,消息的重试也就会发生一条消息执行多次的情况,那么你的接口做幂等了吗,下一篇文章,我们就来看下MQ中的消息重复,如何处理消费过程中的重复消息。WX 搜索《醉鱼Java》,回复面试,获取2024面试资料。如果这篇文章对您有所帮助或者启发,帮忙点个关注叭,您的支持是我坚持写作的最大动力。__
2024-06-06 09:42:00
374
原创 面试官:对于MQ中的消息丢失你是如何理解的?
消息丢失的定义是:在消息传递的过程中,在某个环节意外丢失,也就是消息没有成功的发送或者没有被正确的接收。生产者未能成功发送消息。消费者未能正确接收消息。消费者未能正确处理消息。对于第三条可以理解为特殊的消息丢失,因为消费者的逻辑处理错误,程序bug等其他原因,造成消息在处理过程中消息丢失或者被忽略(异常之后错误的应答等),也就是说消息没有正确的被消费掉,我们也可以认为是一种消息丢失。上面我们分析了什么是消息丢失,产生的原因有哪些以及如何解决。
2024-06-03 20:54:30
690
原创 不掌握BigDecimal的四大坑你敢用吗?
本文从精度的比较、除法运算中是否设置精度、对象初始化到转字符串,四个角度来把BigDecimal的坑尽可能清晰的描述出来,以及基于这些坑得到的最佳实践。有些场景下推荐使用BigDecimal,但是能不用还是不用,比doublefloat多出来的性能损失得是你能接受的。如果非得用,那上面这几个坑一定要规避。WX 搜索《醉鱼Java》,回复面试,获取2024面试资料。如果这篇文章对您有所帮助或者启发,帮忙点个关注叭,您的支持是我坚持写作的最大动力。__
2024-05-31 09:33:22
414
原创 Redis中大Key与热Key的解决方案
大 key指的是一个键中包含了大量的数据。(总结一个字就是大占用空间大key通常指的是一个键包含了大量的数据,使得该键对应值的占用的内存超出了正常范围。这个大小的阈值并不是固定的,而是相对于 Redis 实例的可用内存而言。当一个键的大小超出了 Redis 实例可用内存时,就可以认为它是一个大key。操作耗时:如果对一个 key 的操作所需的时间过长,导致性能下降或者影响其他请求的处理速度,也可以说这个 key 是大key。因为这种情况通常是由于该 key 下包含了大量的数据。热 key指的是频繁访问的键。
2024-05-30 09:40:26
772
原创 微服务中使用Maven BOM来管理你的版本依赖
为什么要使用BOM?如何定义BOM?项目使用方法?BOM(Bill of Materials)是由Maven提供的功能,它通过定义一整套相互兼容的jar包版本集合,使用时只需要依赖该BOM文件,即可放心的使用需要的依赖jar包,且无需再指定版本号。BOM的维护方负责版本升级,并保证BOM中定义的jar包版本之间的兼容性。
2024-05-25 20:59:01
506
原创 Macos sonoma docker-compose /usr/local/bin/docker-compose: bad interpreter: /usr/bin/python: no such
解决方式就是,最新的 docker 都包含compose的东西,所以只需要去掉短线执行命令即可。需要注意的是,docker compose。
2024-05-14 10:55:51
166
原创 可重入分布式锁有哪些应用场景
对于工作中用到分布式锁的场景,都要考虑是否可以重入,防止死锁的发生。锁的可重入,两点需要我们注意,一个是保存当前持有锁的线程,另一个就是锁的加锁次数。好了本文到这就结束了,如果读完感觉有所收获,欢迎三连。大家都要一起进步。
2024-05-10 11:04:54
1173
原创 密文字段模糊检索方案
对的,你没猜错,既然是要分词,对于特殊的中文业务场景,直接使用 Elasticsearch 的分词器分词不就好了吗,然后再用 Elasticsearch 的强大检索能力,不就可以满足我们的模糊检索需求了吗,想到就去做,下面就跟着我一起来看下如果用 Elasticsearch 的分词实现密文模糊检索。在个别特殊领域中,数据的安全问题是非常的重要的,所以需要数据库存储的数据是需要加密存储的。因为在中文的场景中,中文既然要分词,选择专业的分词器应该是更合理的啊,所以我们可以使用?下面来跟我看第一种。
2024-04-18 09:27:03
525
原创 MySQL与Redis缓存一致性的实现与挑战
这个方式也算是我们实际系统使用中比较推荐的一种方式,但是这种方式在理论上还是可能会出现问题,两个并发操作,其中一个查询操作没有命中缓存,此时查询出来了数据库中的老数据,此时另一个并发的更新操作,在刚才的并发读操作之后更新了数据库中的数据并删除了缓存,然后并发读操作线程又把老数据写入了缓存,此时又造成了数据的不一致,应用程序读取的都是脏数据。遇到的问题是两个并发的更新操作,数据库先更新的后更新缓存,数据库后更新的先更新缓存,这样就会造成数据库与缓存的数据不一致,应用程序中读取的数据都是脏数据。
2024-04-16 12:28:43
607
原创 工作中用Redis最多的10种场景
Redis是一种非常优秀的基于KV的键值对缓存数据库,有非常不错的性能和稳定性,无论是在工作中,还是在面试中,都经常会出现。因此,有必要深入研究并在工作中使用它。使用Redis做分布式锁应该是Redis的使用者最经常听说的一个场景了,Redis实现的分布式锁相对于其他的分布式锁,性能更好,相信大家也听过什么Redis+Lua王炸组合什么的。在很多网站都有分类树的功能,菜单的树展示形式,如果没有静态html页面的话就需要调用接口,树一般都会递归去实现获取,为了性能考虑一般我们都会将菜单树的数据缓存,将树的。
2024-04-16 12:26:43
352
转载 面试官说出一个错误的结论,我们该咋办?
今天逛掘金的时候发现后端领域的top1文章就是标题这个,然后我就好奇心点进去看一下。发现要是有个多年面试经验的老鸟,遇到这种情况的几率还是挺大的。所以我就拿来分享一下。
2024-04-09 16:12:01
44
原创 聊一下Redis实现分布式锁的8大坑
前两篇文章都在讲 Redis 的大常用数据类型,以及典型的大应用场景。那么今天就来看看 Redis 实现分布式锁。在分布式系统中,保证资源的互斥访问是一个关键的点,而 Redis 作为高性能的键值存储系统,在分布式锁这块也被广泛的应用。然而,在使用 Redis 实现分布式锁时需要考虑很多的因素,以确保系统正确的使用还有程序的性能。下面我们将探讨一下使用Redis实现分布式锁时需要注意的关键点。首先还是大家都知道,使用 Redis 实现分布式锁,是两步操作,设置一个key。
2024-04-08 16:57:35
1072
原创 Redis的5大常见数据类型的用法
上一篇文章我们讲了Redis的10大应用场景,这一篇文章就针对Redis的常用数据结构进行一个说明,通过示例的形式演示每一种数据结构如何使用。假设我们有一个社交网络应用,需要存储用户的好友列表,并且要求好友列表中不能有重复的用户。命令向有序集合中添加成员,同时为每个成员指定一个分数,从而创建一个新的有序集合。:适用于获取单个值,比如获取用户的姓名或者用户的年龄等。:适用于获取对象的指定属性,比如获取用户对象的姓名属性。命令可以获取有序集合的基数,即有序集合中成员的数量。
2024-04-03 11:59:07
801
原创 深度解析:Elasticsearch检索请求原理
在上一篇文章中,我们学习了 Elasticsearch 的写入流程,今天我们来学习一下 Elasticsearch 的读取流程,当一个检索请求到达 Elasticsearch 之后是如何进行检索的呢?在多文档请求中,Elasticsearch 会将该请求拆分为多个文档的请求,并把它们并行的发送到对应的分片。2、协调节点将查询请求广播到每一个数据节点,这些数据节点的分片就会处理该查询请求。请求,对应的分片将文档数据返回给协调节点,最后协调节点将数据整合返回给客户端。节点通过对传入的文档的。
2024-03-29 18:11:31
503
原创 深度解析:Elasticsearch写入请求处理流程
数量,对于有的索引,例如日志,每天、每周、每月的日志被单独存在一个索引上,老得索引一般都是只读的,也不太可能发生变化,所以我们就可以使用这个。提供所有还没有被刷到磁盘的操作的一个持久化记录。在 Elasticsearch 进行提交操作的时候,成本是非常高的,所以策略就是在写入到内存缓冲区的时候,同步写入一份数据到。数量太多,每一个都会造成文件句柄、内存、CPU的大量消耗,还有一个更重要的点就是,每个检索请求也会轮流检查每一个。最后送上一个我自己理解的图,参考了官网的描述,以及网上画的,如有错误欢迎指出。
2024-03-21 11:24:16
610
原创 深入解读 Elasticsearch 磁盘水位设置
到了这,还记得我们的问题吗,就是说 Elasticsearch 是怎么判定的磁盘超出设定的阈值的呢?左右,所以按照 Elasticsearch 的设定,ES 中分片应该是无法分配的。,可以看到,当前类中出现了两次,根据日志打印的其他信息不难发现,对于此处就是。是的你没猜错,通过这个位置你就可以知道是哪个方法调用的这,我们点一下。阈值时,对于新创建的索引主分片不影响,副本分片受影响;判断,相信就是这了,我的感觉来了,没想到这个找起来这么简单。行方法的开头打一个断点,重启之后,进入断点之后的值如下。
2024-03-10 22:50:11
1355
转载 硬核干货:4W字从源码上分析JUC线程池ThreadPoolExecutor的实现原理
原文地址硬核干货:4W 字从源码上分析 JUC 线程池 ThreadPoolExecutor 的实现原理 - 线程池 - 并发编程 - Throwable。
2024-02-01 18:09:49
123
原创 Elasticsearch Index Shard Allocation 索引分片分配策略
Elasticsearch 的集群在分配分片的时候,Elasticsearch 会尽可能的将单个索引的分片尽可能的分配在尽可能多的节点上,但是有时不是那么的均匀。通过上述的操作可以让我们尽可能的防止数据丢失,但是如果离开的节点很快就恢复那么这可能就是没有必要的操作了。如果当前离开的节点上有主分片,会将其它的副本分片提升为主分片以替换该节点上的主分片;可以看到,有分片是没有进行分配的,所以这也是修改分片分配策略时需要特别注意的一点。如果延迟分配超时,主节点会将丢失的分片分配给另一个节点,该节点将开始恢复。
2024-01-19 11:12:28
609
原创 Elasticsearch Reroute API 的使用
该参数的意思就是,如果有该索引的副本分片存在(但是该分片是过时的,也就是说不是最新的副本分片),Elasticsearch 会将主分片分配给该副本分片,所以这个情况下会造成数据丢失。的主分片与副本文件同时离开,Elasticsearch 集群无法找到有效的分片充当主分片,所以分片会无法分配。该参数命令会为索引分配一个全新的空的主分片,相当于没有数据,也就造成数据丢失了,而且是完全丢失。使用如下命令获取索引分片分配情况,不加参数随机返回一个有问题的索引,加了参数就按照参数指定的来返回。
2023-12-22 10:48:25
732
原创 一致性 Hash 算法 Hash 环发生偏移怎么解决
所以一致性 Hash 算法就是通过这种方法来判断对象该存储在哪台服务器上的,也就是将缓存服务器与缓存对象绑定到 Hash 环上之后,从被缓存的对象开始,顺时针方向遇到的第一台服务器就是缓存对象要存储的服务器,由于缓存对象对服务器 Hash 后的值是固定的,所以在服务器不变的情况下,一张图片必定会缓存在固定的服务器上,所以当下次访问该图片时,只要再次使用同样的哈希算法计算,即可获取出该图片在哪台服务器上,然后直接去对应的服务器上获取即可。一个设计良好的分布式系统应该具有良好的单调性,即。
2023-11-23 10:22:33
384
原创 Vue中动态Class实战
想实现一个假如有5个div块,默认都是灰色,鼠标悬浮到哪个div上,那个div就显示为黑色。通过动态 class 类名来实现,实现鼠标悬浮到div时动态绑定class。具体的实现业务逻辑可根据这个进行演变。
2023-11-20 18:19:03
264
原创 Vue+Swiper实现轮播图效果
插件,可以实现当前这个需求。核心代码就两块,一块布局,一块样式。参考官网发现有很多种实现方式,本文选择单页面引入的方式。在项目中使用到了轮播图,实现点击上一张下一张时实现循环显示,同时预览两个图片,并加以文字对图片的说明。文本链接如下:https://swiperjs.com/element。如果遇到按钮无法生效,页面样式等问题,排查引入的 CSS 是否正确。实现了自带切换按钮在图片外部。实现了自定义的切换按钮。
2023-11-20 10:43:36
1042
7
原创 Elasticsearch 外部词库文件更新
Elasticsearch 使用外部词库文件配置IK实现自定义分词,动态更新词库,实现热更新分词逻辑
2023-11-12 11:55:50
1264
elasticsearch-demo
2022-04-08
mybatisplus入门源码
2018-09-28
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人