自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

醉鱼的博客

低级到高级的踩坑记录

  • 博客(148)
  • 资源 (2)
  • 收藏
  • 关注

原创 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 19378

原创 MySQL索引(二)索引优化方案有哪些

在上一篇文章中,我们介绍了MySQL中常见的索引类型以及每种索引的各自特点,那么这篇文章带你来与我一起看一下聚集索引与二级索引的关系,最后在附上常见的索引优化方案。首先我们还是看一下聚集索引和二级索引的区别MySQL索引(一)聚集索引和二级索引区别首先,每个Innodb引擎的表都有一个聚集索引,用于存储行数据,通常情况下,聚集索引也叫做主键索引。 如果一个表定义了主键,Innodb就使用它作为聚集索引。因此我们要尽可能的为表添加一个主键,如果实在没有一个列是非空且唯一的可以作为主键列,建议

2022-04-05 20:04:23 1740 2

原创 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 2099

原创 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 814

原创 一文彻底理解乐观锁与悲观锁

通过阅读本文可以获得什么1、什么是乐观锁?2、乐观锁实现方式都有什么?3、乐观锁优缺点有哪些?4、乐观锁适用场景?5、什么是悲观锁?6、悲观锁实现方式有哪几种?7、悲观锁优缺点?8、悲观锁的适用场景?首先,我们先看一下什么是乐观锁,在我个人理解,乐观锁可以抽象为去银行取钱,假如银行没有人排队,所以不需要取号,直接去柜台A就可以办理业务。反之悲观锁就是假如去银行取钱,每次去都好巧不巧的都有人在柜台A排队,所以此时需要取号,然后等叫号在去柜台A办理业务。(假设银行只有一个柜台A,不..

2022-03-03 19:57:19 2747

原创 一文理解一致性哈希算法

对于最近看到的哈希算法,然后还有一致性哈希算法,本文针对网上搜集到的资料做一个整理,方便后面回顾一致性哈希算法的知识,这就是本篇文章《一文彻底读懂一致性哈希算法》的由来;一致性hash算法是1997年麻省理工学院提出,是一种特殊的hash算法,目的是解决分布式缓存的问题。在移除或者添加一个服务器时,能够尽可能小的改变已存在的服务请求与处理请求服务器之间的映射关系。一致性hash解决了简单hash算法在分布式hash表(Distributed Hash Table,DHT)中存在的动态伸缩问题。

2022-02-13 21:24:36 569

转载 MySQL死锁排查笔记

MySQL发生死锁时是谁与谁在争夺什么呢?跟我一起来探秘吧

2022-01-17 23:04:05 549

转载 MySQL-MVCC全网最详细解读

什么是MVCC在学习MVCC前,先了解一下当前读和快照读 当前读 比如lock in share mode(共享锁),for update,update,delete,insert(排它锁)这些操作都是一些当前读,当前读的定义就是读取当前数据的最新版本,读取时还要保证其它并发事务不能修改数据,会对读取的记录进行加锁 快照读 不加锁的select就是快照读,即不加锁的非阻塞读,快照读的前提是隔离级别不是串行级别,串行级别下快照读会退化为当前读。快照读的实现是基于多版本并发控制,即M

2022-01-17 22:54:38 312

转载 JVM常用排查工具这些你都会用吗

JVM常用排查工具你都了解吗

2022-01-17 22:52:43 287

原创 全网最全的分布式ID生成方案解析

分布式ID全解析

2021-12-15 19:50:07 3509

原创 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 253

原创 一篇文章学会使用@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 258

原创 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 264

原创 Java工具类集合

DateUtil工具类分布式雪花算法id生成JDK1.8time时间转换JSON转换工具类

2019-09-12 16:55:37 247

原创 SpringBoot整合demo

一、 springboot整合tkMapper二、springboot整合redis

2019-07-23 21:00:20 184

原创 密文字段模糊检索方案

对的,你没猜错,既然是要分词,对于特殊的中文业务场景,直接使用 Elasticsearch 的分词器分词不就好了吗,然后再用 Elasticsearch 的强大检索能力,不就可以满足我们的模糊检索需求了吗,想到就去做,下面就跟着我一起来看下如果用 Elasticsearch 的分词实现密文模糊检索。在个别特殊领域中,数据的安全问题是非常的重要的,所以需要数据库存储的数据是需要加密存储的。因为在中文的场景中,中文既然要分词,选择专业的分词器应该是更合理的啊,所以我们可以使用?下面来跟我看第一种。

2024-04-18 09:27:03 92

原创 MySQL与Redis缓存一致性的实现与挑战

这个方式也算是我们实际系统使用中比较推荐的一种方式,但是这种方式在理论上还是可能会出现问题,两个并发操作,其中一个查询操作没有命中缓存,此时查询出来了数据库中的老数据,此时另一个并发的更新操作,在刚才的并发读操作之后更新了数据库中的数据并删除了缓存,然后并发读操作线程又把老数据写入了缓存,此时又造成了数据的不一致,应用程序读取的都是脏数据。遇到的问题是两个并发的更新操作,数据库先更新的后更新缓存,数据库后更新的先更新缓存,这样就会造成数据库与缓存的数据不一致,应用程序中读取的数据都是脏数据。

2024-04-16 12:28:43 451

原创 工作中用Redis最多的10种场景

Redis是一种非常优秀的基于KV的键值对缓存数据库,有非常不错的性能和稳定性,无论是在工作中,还是在面试中,都经常会出现。因此,有必要深入研究并在工作中使用它。使用Redis做分布式锁应该是Redis的使用者最经常听说的一个场景了,Redis实现的分布式锁相对于其他的分布式锁,性能更好,相信大家也听过什么Redis+Lua王炸组合什么的。在很多网站都有分类树的功能,菜单的树展示形式,如果没有静态html页面的话就需要调用接口,树一般都会递归去实现获取,为了性能考虑一般我们都会将菜单树的数据缓存,将树的。

2024-04-16 12:26:43 255

转载 面试官说出一个错误的结论,我们该咋办?

今天逛掘金的时候发现后端领域的top1文章就是标题这个,然后我就好奇心点进去看一下。发现要是有个多年面试经验的老鸟,遇到这种情况的几率还是挺大的。所以我就拿来分享一下。

2024-04-09 16:12:01 12

原创 聊一下Redis实现分布式锁的8大坑

前两篇文章都在讲 Redis 的大常用数据类型,以及典型的大应用场景。那么今天就来看看 Redis 实现分布式锁。在分布式系统中,保证资源的互斥访问是一个关键的点,而 Redis 作为高性能的键值存储系统,在分布式锁这块也被广泛的应用。然而,在使用 Redis 实现分布式锁时需要考虑很多的因素,以确保系统正确的使用还有程序的性能。下面我们将探讨一下使用Redis实现分布式锁时需要注意的关键点。首先还是大家都知道,使用 Redis 实现分布式锁,是两步操作,设置一个key。

2024-04-08 16:57:35 999

原创 Redis的5大常见数据类型的用法

上一篇文章我们讲了Redis的10大应用场景,这一篇文章就针对Redis的常用数据结构进行一个说明,通过示例的形式演示每一种数据结构如何使用。假设我们有一个社交网络应用,需要存储用户的好友列表,并且要求好友列表中不能有重复的用户。命令向有序集合中添加成员,同时为每个成员指定一个分数,从而创建一个新的有序集合。:适用于获取单个值,比如获取用户的姓名或者用户的年龄等。:适用于获取对象的指定属性,比如获取用户对象的姓名属性。命令可以获取有序集合的基数,即有序集合中成员的数量。

2024-04-03 11:59:07 743

原创 深度解析:Elasticsearch检索请求原理

在上一篇文章中,我们学习了 Elasticsearch 的写入流程,今天我们来学习一下 Elasticsearch 的读取流程,当一个检索请求到达 Elasticsearch 之后是如何进行检索的呢?在多文档请求中,Elasticsearch 会将该请求拆分为多个文档的请求,并把它们并行的发送到对应的分片。2、协调节点将查询请求广播到每一个数据节点,这些数据节点的分片就会处理该查询请求。请求,对应的分片将文档数据返回给协调节点,最后协调节点将数据整合返回给客户端。节点通过对传入的文档的。

2024-03-29 18:11:31 473

原创 深度解析:Elasticsearch写入请求处理流程

数量,对于有的索引,例如日志,每天、每周、每月的日志被单独存在一个索引上,老得索引一般都是只读的,也不太可能发生变化,所以我们就可以使用这个。提供所有还没有被刷到磁盘的操作的一个持久化记录。在 Elasticsearch 进行提交操作的时候,成本是非常高的,所以策略就是在写入到内存缓冲区的时候,同步写入一份数据到。数量太多,每一个都会造成文件句柄、内存、CPU的大量消耗,还有一个更重要的点就是,每个检索请求也会轮流检查每一个。最后送上一个我自己理解的图,参考了官网的描述,以及网上画的,如有错误欢迎指出。

2024-03-21 11:24:16 451

原创 深入解读 Elasticsearch 磁盘水位设置

到了这,还记得我们的问题吗,就是说 Elasticsearch 是怎么判定的磁盘超出设定的阈值的呢?左右,所以按照 Elasticsearch 的设定,ES 中分片应该是无法分配的。,可以看到,当前类中出现了两次,根据日志打印的其他信息不难发现,对于此处就是。是的你没猜错,通过这个位置你就可以知道是哪个方法调用的这,我们点一下。阈值时,对于新创建的索引主分片不影响,副本分片受影响;判断,相信就是这了,我的感觉来了,没想到这个找起来这么简单。行方法的开头打一个断点,重启之后,进入断点之后的值如下。

2024-03-10 22:50:11 1054

转载 硬核干货:4W字从源码上分析JUC线程池ThreadPoolExecutor的实现原理

原文地址硬核干货:4W 字从源码上分析 JUC 线程池 ThreadPoolExecutor 的实现原理 - 线程池 - 并发编程 - Throwable。

2024-02-01 18:09:49 89

原创 Elasticsearch Index Shard Allocation 索引分片分配策略

Elasticsearch 的集群在分配分片的时候,Elasticsearch 会尽可能的将单个索引的分片尽可能的分配在尽可能多的节点上,但是有时不是那么的均匀。通过上述的操作可以让我们尽可能的防止数据丢失,但是如果离开的节点很快就恢复那么这可能就是没有必要的操作了。如果当前离开的节点上有主分片,会将其它的副本分片提升为主分片以替换该节点上的主分片;可以看到,有分片是没有进行分配的,所以这也是修改分片分配策略时需要特别注意的一点。如果延迟分配超时,主节点会将丢失的分片分配给另一个节点,该节点将开始恢复。

2024-01-19 11:12:28 470

原创 Elasticsearch Reroute API 的使用

该参数的意思就是,如果有该索引的副本分片存在(但是该分片是过时的,也就是说不是最新的副本分片),Elasticsearch 会将主分片分配给该副本分片,所以这个情况下会造成数据丢失。的主分片与副本文件同时离开,Elasticsearch 集群无法找到有效的分片充当主分片,所以分片会无法分配。该参数命令会为索引分配一个全新的空的主分片,相当于没有数据,也就造成数据丢失了,而且是完全丢失。使用如下命令获取索引分片分配情况,不加参数随机返回一个有问题的索引,加了参数就按照参数指定的来返回。

2023-12-22 10:48:25 634

原创 一致性 Hash 算法 Hash 环发生偏移怎么解决

所以一致性 Hash 算法就是通过这种方法来判断对象该存储在哪台服务器上的,也就是将缓存服务器与缓存对象绑定到 Hash 环上之后,从被缓存的对象开始,顺时针方向遇到的第一台服务器就是缓存对象要存储的服务器,由于缓存对象对服务器 Hash 后的值是固定的,所以在服务器不变的情况下,一张图片必定会缓存在固定的服务器上,所以当下次访问该图片时,只要再次使用同样的哈希算法计算,即可获取出该图片在哪台服务器上,然后直接去对应的服务器上获取即可。一个设计良好的分布式系统应该具有良好的单调性,即。

2023-11-23 10:22:33 314

原创 Vue中动态Class实战

想实现一个假如有5个div块,默认都是灰色,鼠标悬浮到哪个div上,那个div就显示为黑色。通过动态 class 类名来实现,实现鼠标悬浮到div时动态绑定class。具体的实现业务逻辑可根据这个进行演变。

2023-11-20 18:19:03 229

原创 Vue+Swiper实现轮播图效果

插件,可以实现当前这个需求。核心代码就两块,一块布局,一块样式。参考官网发现有很多种实现方式,本文选择单页面引入的方式。在项目中使用到了轮播图,实现点击上一张下一张时实现循环显示,同时预览两个图片,并加以文字对图片的说明。文本链接如下:https://swiperjs.com/element。如果遇到按钮无法生效,页面样式等问题,排查引入的 CSS 是否正确。实现了自带切换按钮在图片外部。实现了自定义的切换按钮。

2023-11-20 10:43:36 608

原创 Elasticsearch 外部词库文件更新

Elasticsearch 使用外部词库文件配置IK实现自定义分词,动态更新词库,实现热更新分词逻辑

2023-11-12 11:55:50 1238

原创 Elasticsearch跨集群检索配置

跨集群检索字面意思,同一个检索语句,可以检索到多个ES集群中的数据,ES集群默认是支持跨集群检索的,只需要动态的增加入节点即可,下面跟我一起来体验下ES的跨集群检索的魅力。基础的跨集群配置与检索就到此, 实际的使用中查询语句的条件等各个方法都会有限制,这个需要根据实际使用场景来进行修改了,反正现在怎么操作你会了,比着葫芦画瓢还不简单吗。每个集群独立执行搜索请求。1、向本地集群中发送跨集群检索请求,该集群中的协调节点接收并解析请求。1、向本地集群中发送跨集群检索请求,该集群中的协调节点接收并解析请求。

2023-10-28 17:19:16 379

原创 深入了解 Elasticsearch 8.1 中的 Script 使用

如果我们还想操作当前解析的数据我们可以使用运行时字段,因为运行时字段不需要进行索引会更加的灵活,可以很方便的修改脚本及运行方式。所谓的解析字符串,只是一组固定格式的字符串,提前使用变量的形式编译,在插入文档时,通过脚本进行解析保存,方便后面的检索等请求。后面有机会会出现一片使用Java编译脚本的使用,等后面时间吧,最近这段时间听尴尬的,也托更很久了,以后慢慢的都要补上。上面我们是在检索请求中使用的脚本字段来使用的脚本,下面我们先内置一个脚本,通过使用。中,可以用于查询、聚合、脚本字段、脚本排序等各种用例。

2023-10-28 17:12:01 1613

原创 如何优化因为高亮造成的大文本(大字段)检索缓慢问题

字段是读取的大文本内容,所以后果就是索引的单个字段很大,造成单独检索请求的时候速度还可以,但是加入高亮之后检索请求的耗时就非常的慢了。的策略,为了在检索的字段中创建出一个有意义的高亮片段,高亮器会使用原始文本的开始和结束字符串的偏移量,偏移量的获取可以从一下方式获得。数据量少的时候对比不是特别明显,所以在测试时,可以在索引中添加大量的测试数据进行测试,本人在测试过程中es的索引大小在。通过上面的查询请求中高亮参数的指定可以发现,高亮器还是支持其他的参数的,那么我们下面将对几个常用的参数进行说明。

2023-08-23 08:04:36 782

原创 Elasticsearch算分优化方案之rescore_query

es的重新评分,即在检索出来一次结果的基础上在进行检索提升数据排序效果,但是仅对查询或者post_filter阶段返回的前多少条进行二次查询。它可以根据特定的需求和业务规则,对原始查询结果进行二次排序,以提高最相关的文档的排名。我们可以对检索结果进行二次评分,增加自己更复杂的评分逻辑,提供更准确的结果排序,但是相应的也会增加查询的计算成本与响应时间。是一种用于改进搜索结果排序的查询,可以根据不同的规则和需求重新计算得分并重新排序搜索结果,以提高搜索准确性和实用性。是一种用于改进搜索结果排序的查询。

2023-08-22 23:14:21 1002

原创 大文本的全文检索方案附件索引

总的来说,处理大文本时,需要综合考虑性能、资源利用、错误处理等方面的问题,合理设计和优化Pipeline的处理过程。在实际应用中,可以进行压力测试和性能测试,找到最合适的处理方案,确保系统能够稳定高效地处理大文本内容。处理文本内容可以在不影响检索功能的前提下,优化索引文档的大小,提高索引和检索的性能,并灵活地处理和扩展数据。通过上面两步的操作之后我们的测试环境就算搭建完成了,下面就可以进行大文本内容的读取测试了,首先我们还是准备几个测试的文本文件,比如。参数,将其设置为较小的值,限制保存的字符数。

2023-08-19 22:06:50 2594

原创 ObjectProvider的理论与实战

同时,它还可以根据条件或配置来选择不同的对象实例,提供了灵活的对象管理机制。在实际项目中,我们可以根据具体的需求来决定是否使用@Lazy注解,以提高系统的性能和效率。总结起来,ObjectProvider是一个用于获取对象实例的接口,在Spring框架中可以通过依赖注入来使用它。通过使用泛型,我们可以指定要获取的Bean的类型,这样可以避免类型转换的麻烦。但是有时候,我们希望在运行时动态地获取对象,或者需要根据条件来选择不同的对象实例。方法来获取唯一的对象实例,如果存在多个对象,则抛出异常。

2023-08-04 07:55:45 247

原创 聚合在Elasticsearch中的使用及示例验证

例如,我们可以先按分类分组,然后在每个分类内再按制造商进行分组,并计算每个分类下的平均价格。词条聚合是一种用于对文本字段进行分组的聚合方式,它会将相同值的文档分到同一个桶(Bucket)中,并计算每个桶中文档的数量。范围聚合允许我们根据指定的范围条件将文档分组,例如:按价格范围进行分组并统计每个价格范围内的商品数量。字段)创建一个价格区间的直方图,将商品按照价格范围进行分组,并统计每个价格区间内的商品数量。的日期字段,我们可以进行日期直方图聚合,按照日期进行分组并统计每个时间段内的文档数量。

2023-08-02 21:04:18 936

原创 使用Freemarker模版导出xls文件使用excel打开提示文件损坏

1、首先使用Excel创建一个空白excel文件,输入我们要导出的表格模板,如下图所示,我们创建一个表格,表格中导出姓名、年龄、电话、住址等信息的这样一个表格,并且添加了一行示例数据。导出xls文件进行查看文件内容,我们的预期就是国产Office可以打开观看,而Excel打开时提示文件已损坏。打开结果就不进行展示了,感兴趣的可以使用上面的代码进行一下测试。在项目中使用freemarker的xml模板导出xls格式的Excel文件时,使用国产Office工具可以打开查看,使用Excel打开提示文件已损坏。

2023-08-01 21:10:08 463

原创 异步检索在 Elasticsearch 中的理论与实践

在传统的同步搜索中,当客户端发出一个查询请求后,它需要等待 Elasticsearch 返回所有匹配结果才能继续处理其他任务。异步检索是 Elasticsearch 中一个强大且实用的特性,可以显著提高搜索和查询操作的性能,特别在处理大规模数据或复杂查询时。在 Elasticsearch 中,使用异步检索需要创建一个异步搜索任务。异步检索的优点在于它能够显著提高搜索和查询操作的性能和响应时间,特别是在处理大量数据或复杂查询时。的索引提交了一个异步搜索请求,该请求使用简单的匹配查询来查找包含特定值的文档。

2023-07-31 21:50:01 1065 1

elasticsearch-demo

验证不同项目使用同一个版本elasticsearch,增加namespace区分索引。 elasticsearch版本7.4.0,springboot 2.3.12

2022-04-08

mybatisplus入门源码

SpringBoot整合mybatisPlus入门程序源代码,代码中详细介绍了怎么从一个空白的SpringBoot框架整合mybatisPlus的过程,配套教程在本人博客中

2018-09-28

空空如也

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

TA关注的人

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