自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 13种设计模式 demo

demo。

2024-09-27 14:56:36 138

原创 Redis 主从复制的原理详解

当 Sentinel 发现主节点故障时,会通过选举机制,将其中一个从节点提升为新的主节点,并通知其他从节点重新指向新的主节点。如果从节点与主节点断开连接,当从节点恢复连接后,主节点会将自从连接断开后的增量数据发送给从节点,以保持数据的同步。手动故障恢复:在传统的 Redis 主从复制架构中,当主节点故障时,通常需要人工干预,将其中一个从节点提升为主节点,并重新配置其他节点指向新的主节点。增量复制:在全量复制完成后,从节点会通过命令传播机制,接收主节点的实时写操作日志,并应用到自己的数据集中,实现实时同步。

2024-09-20 13:28:11 1146

原创 RabbitMQ 和 Kafka 的详细对比表格

RabbitMQ适合需要灵活消息路由、消息确认和易于管理的场景,特别适合中小型项目和需要多种协议支持的场景。Kafka适合需要高吞吐量、低延迟和海量数据处理的场景,特别适合实时数据处理和流处理应用。选择合适的工具取决于应用的具体需求和场景。如果需要灵活的消息路由和易于管理,可以选择 RabbitMQ;如果需要高吞吐量和低延迟,可以选择 Kafka。

2024-09-20 10:06:50 625

原创 Spring Boot 中整合 Kafka

通过以上步骤,我们成功地在 Spring Boot 中整合了 Kafka,并实现了消息的生产和消费。Spring Kafka 提供了简单易用的 API,使得我们可以轻松地与 Kafka 进行交互。你可以根据实际需求进一步扩展和优化这个示例。在 Kafka 中,消费者消费消息失败后是否重新入队(重回队列)取决于消费者的配置和处理逻辑。Kafka 本身并没有直接提供“消费失败重回队列”的功能,但可以通过一些策略来实现类似的效果。

2024-09-20 09:52:00 1497

原创 Spring Boot 项目中整合 RabbitMQ,使用死信队列(Dead Letter Exchange, DLX)实现延迟队列功能

配置 RabbitMQ:在文件中配置 RabbitMQ 的连接信息。创建 RabbitMQ 配置类:定义交换机、队列和绑定关系,设置死信交换机。发送延迟消息:通过发送带有 TTL 的消息。消费延迟消息:通过注解消费死信队列中的消息。通过这种方式,可以在 Spring Boot 项目中使用死信队列实现延迟队列功能。需要注意的是,消息的 TTL 是以毫秒为单位的,且消息的延迟时间不能超过 RabbitMQ 的最大消息大小限制。

2024-09-19 17:34:40 825

原创 好文推荐-架构

intro · dianping/cat Wiki · GitHub

2024-09-18 14:26:27 301

原创 mysql 隔离级别-【脏读-不可重复读-幻读】-【读已提交-读未提交-可重复读-串行】- 超级详细包看懂

2024-08-16 17:44:00 161

原创 spring @Transactional 是怎么实现事务的

Spring的注解通过Spring的事务管理机制实现事务控制。这个机制主要依赖于Spring的AOP(面向切面编程)和事务管理器(Transaction Manager)。下面是。

2024-08-16 14:53:30 553

原创 spring事务什么时候会失效

1.bean 对象没有被spring容器管理确保类被Spring管理,通常通过添加@Service或@Component注解。2.方法的访问修饰符不是public注解只能作用于public方法。如果方法不是public的,事务管理将失效。3.自身调用问题在同一个类中,一个方法调用另一个方法,可能导致事务管理失效。解决办法:通过注入自身的方式,强制使用代理类来进行调用。4.数据源没有配置事务管理器在Spring Boot中,事务管理是自动启用的。你只需要在主类上添加。

2024-08-16 14:47:02 383

原创 a 方法调用 b 方法 2个方法都有事务,且传播特性相同或不同。举例所有排列组合场景,并详细说明

在Java中,事务的传播特性定义了方法调用中事务的行为。REQUIRED(默认):如果当前存在事务,则加入该事务;如果没有事务,则创建一个新的事务。:无论当前是否存在事务,都创建一个新的事务。SUPPORTS:如果当前存在事务,则加入该事务;如果没有事务,则以非事务方式执行。:以非事务方式执行,如果当前存在事务,则将其挂起。MANDATORY:必须在已有事务中执行,如果当前没有事务,则抛出异常。NEVER:以非事务方式执行,如果当前存在事务,则抛出异常。NESTED:如果当前存在事务,则在嵌套事务中执行;

2024-08-16 13:53:50 1283

原创 1-安装Elasticsearch

未完待续。

2024-08-15 13:32:54 294

原创 登录过程记录

过程:

2024-08-14 15:03:15 355

原创 CPU飙升 怎么定位问题

【top】查看所有进程占系统CPU的排序,定位是哪个进程搞的鬼。PID那一列就是进程号。定位进程中使用 CPU 最高的线程tid线程 tid 转化 16 进制,例如printf ‘0x%x’ 11882 得到16进制的 0x2e6a【jstack pid | grep tid 】找到线程堆栈,例如jstack 11763 | grep 0x2e6a -A 30查问题时,会要多次上面的操作以分析确定问题,这个过程。期望整合上面的过程成一个脚本,这样一行命令就可以自动化地搞定。

2024-08-14 14:41:54 1908

原创 mysql的锁

2024-08-13 14:27:47 94

原创 git update-git-for-windows 升级失败

再执行一次git update-git-for-windows 成功。

2024-08-12 19:13:05 308

原创 一个完整的 Web 请求到底发生了什么

本文主要内容是试图记录一个完整 Web 请求的详细过程,从用户在浏览器中输入 URL 地址说起,然后浏览器如何找到服务器地址的过程,并发起请求;最后到请求在服务器端处理完成后,浏览器渲染响应页面过程。6.当数据返回浏览器时,浏览器解析数据发现还有一些静态资源(如:css,js或者图片)时又会发起另外的请求,而这些请求可能会在CDN上,那么CDN服务器又会处理这个用户的请求。但需要注意的是,从 HTTP 1.1 开始,服务器可以与客户端保持长连接,不一定是请求完成后就断开连接,这取决于服务器的操作。

2024-08-08 13:20:27 307

原创 【系统响应慢排查所需命令】ps -ef、grep、jstat、pmap 、sort 、head 、jmap 、dump.hprof

假如是搜索功能缓慢,就用查看符合条件的进程【查询包含字符串“search”的进程】【ps -ef | grep search】jstat 这个命令主要是查看gc 、内存相关的信息【jstat -option】,以下是jstat 支持的选项。查看search 服务的gc情况【查询进程id 31665 的 gc 情况】【jstat -gc 31665】: 显示垃圾回收的统计信息,包括各个内存池的使用情况和垃圾回收的时间。状态的线程,并统计每个线程等待的锁的数量,输出前 10 个。

2024-08-08 09:41:11 901

原创 关键词查找【Knuth-Morris-Pratt (KMP) 算法】

KMP算法的核心是利用匹配失败后的信息,尽量减少模式串与主串的匹配次数以达到快速匹配的目的。

2024-07-25 09:35:54 250

原创 关键词查找【Aho-Corasick 算法】

【代码】关键词查找【Aho-Corasick 算法】

2024-07-25 09:31:54 570

原创 关键词查找【Boyer-Moore 算法】

BM算法的精华就在于BM(text, pattern),也就是BM算法当不匹配的时候一次性可以跳过不止一个字符。通常搜索关键字越长,算法速度越快。它的效率来自于这样的事实:对于每一次失败的匹配尝试,算法都能够使用这些信息来排除尽可能多的无法匹配的位置。BM算法实际上包含两个并行的算法(也就是两个启发策略):坏字符算法(bad-character shift)和好后缀算法(good-suffix shift)。这两种算法的目的就是让模式串每次向右移动尽可能大的距离(即上面的BM( )尽可能大)。

2024-07-25 09:26:20 416

原创 快速排序【示例】

们的计算机每秒钟可以运行 10 亿次,那么对 1 亿个数进行排序,桶排序只需要 0.1 秒,而冒。空间的问题,但在算法的执行效率上却牺牲了很多,它的时间复杂度达到了 O(N2)。设置一个基准点,将小于等于基准点的数全部放到基准点的左边,将大于等于基准点的数全。快速排序之所以比较快,是因为相比冒泡排序,每次交换是跳跃式的。冒泡排序可以说是我们学习的第一个真正的排序算法,并且解决了桶排序浪费。因此快速排序的最差时间复杂度和冒泡排序是一样的,都是 O(N2),然在最坏的情况下,仍可能是相邻的两个数进行了交换。

2024-07-20 13:40:12 250

原创 冒泡排序【示例】

冒泡排序的基本思想是:每次比较两个相邻的元素,如果它们的顺序错误就把它们交换过来。第二个循环O(n-1 + n-2 +n-3 +....1)这种排序空间复杂度较堆排序少,但是时间复杂度高。答案:不要走开,请看下节——快速排序。那还有没有更好的排序算法呢?:只需要借助一个temp,第一个循环O(n-1)

2024-07-20 13:31:40 340

原创 最简单的桶排序【示例其实是简化版的桶排序算法,真正的桶排序算法要比这个更加复杂】

简化版的桶排序:它非常浪费空间!即便只给你 5 个数进行排序(例如这 5 个数是 1、1912345678、2100000000、18000000 和 912345678),你也仍然需要 2100000001 个“桶”,这真是太浪费空间了!还有,如果现在需要排序的不再是整数而是一些小数,比如将 5.56789、2.12、1.1、3.123、4.1234这五个数进行从小到大排序又该怎么办呢?小哼的班上只有 5 个同学,这 5 个同学分别考了 5 分、3 分、5 分、2 分和 8 分。

2024-07-20 13:14:42 145

原创 单点登录(SSO)是什么

1.同域 SSO 2.同父域 SSO 3.跨域 SSO

2024-07-12 15:30:40 1295

原创 java 线上生产问题排查思路-【jvm内存溢出】

栈内存可以分为虚拟机栈(VM Stack)和本地方法栈(Native Method Stack),除了它们分别用于执行Java方法(字节码)和本地方法,其余部分原理是类似的(以虚拟机栈为例说明)。如果递归的次数足够多,多到栈中栈帧所使用的内存超出了栈内存的最大容量,此时JVM就会抛出StackOverflowError。内存溢出指程序申请内存时,没有足够的内存供申请者使用。内存溢出就是你要的内存空间超过了系统实际能分配给你的空间,相当于此时系统没法满足你的需求,就会报内存溢出的错误。

2024-07-12 14:01:08 862

原创 7个神级网盘搜索引擎推荐,建议收藏

今天,我向大家推荐7个高质量的网盘搜索引擎网站,它们支持目前各大主流网盘,完全免费,简单易用,绝对是资源党的福音。它支持搜索阿里云盘、夸克网盘、百度网盘等多种网盘资源,并支持用户自主上传阿里、夸克、UC资源链接,且资源不断更新,非常丰富。支持百度网盘、诚通网盘、阿里云盘、夸克网盘,搜索关键词结果琳琅满目,资源丰富可用,唯一的缺点是资源需购买,不过价格不贵!网站资源多,响应快,支持百度、阿里、夸克、迅雷网盘,资源很丰富,唯一的缺点是需要付年费,不过个人觉得很值!网址:www.xiaoluso.com。

2024-07-11 17:23:52 6529

原创 html表单ajax提交后,数据库保存下来的值多了个“,”

解决方式:将display=none 的input 设置 disabled=true,这样这个input 就不会参与序列化了。原因:页面上有2个name 相同的input,其中一个input display=none。serialize() 序列化会将display=none 的input 的值也序列化进去。

2024-07-11 13:52:49 219

原创 大批量更新禁止for循环更新单个,要用批量更新

大批量操作可能会造成严重的主从延迟,特别是主从模式下,大批量操作可能会造成严重的主从延迟,因为需要 slave 从 master 的 binlog 中读取日志来进行数据同步。大批量写操作(UPDATE、DELETE、INSERT),需要分批多次进行操作。binlog 日志为 row 格式时会产生大量的日志。场景:65w条 for循环更新单个,出现了主从异常。

2024-07-08 13:46:05 459

原创 一张表数据量有几百万,新增一个字段要花一小时才执行结束,这一小时内影响点有哪些

在字段新增过程中,数据库可能会经历一定程度的性能下降,因为数据库引擎需要执行大量的写操作来更新表中的每一行数据。:在新增字段的过程中,数据库服务器的 CPU、内存和磁盘等资源可能会被大量使用,导致系统负载增加。:在更新过程中,如果出现错误或中断,可能会导致数据不一致的情况。:如果应用程序依赖于新增字段的数据,那么在字段新增期间,应用程序可能无法正常工作或会收到不完整或错误的数据。为了减少这些影响,您可以考虑在系统负载较低的时段执行这样的操作,或者在操作之前做好充分的备份和准备工作。

2024-07-05 16:06:07 370

原创 定时任务刷数据:mysql 65w数据分页查询 每页100条,40w以后越来越慢

解决方式:定时任务指定入参,例如0,100000(主键id>0 且

2024-07-05 09:59:40 153

原创 30个人一人出一万一起开店,这算非法集资吗

疑惑???

2024-07-04 17:20:40 403

原创 关键词搜索里 minimum_should_match 和 multi_match

minimum_should_match 设置99%的话,也是必须命中其中任意一词才符合召回条件(搜索词分出来的词数*最小匹配度百分比后向下取整 得到1)例如搜索词“迈瑞呼吸机” 分出了2个词,minimum_should_match 设置1的话,必须命中其中任意一词才符合召回条件。minimum_should_match 是最小匹配数,可以设置数字也可以设置百分比。multi_match 是跨字段搜索。

2024-07-04 17:10:22 324

原创 动态添加同义词和扩展词问题

安装完ik分词插件后,在ik插件的配置文件IKAnalyzer.cfg.xml 里设置远程扩展词地址,扩展词更新后,搜索词实时生效,但是索引里的历史数据必须重刷才能生效,所以数据量小的话可以定期全量重刷,数据量大的话用reindex重建。建索引的时候在settings里设置同义词远程地址 并设置刷新间隔30s,动态添加的同义词30s后生效。

2024-07-04 17:04:28 219

原创 ik_smart 和 ik_max_word 如何选择

指标:搜索分词器选哪个:索引分词器选哪个:如何设置搜索分词器和索引分词器

2024-07-04 16:55:17 186

原创 ik-7.8.0 阅读源码笔记

ISegmenter是分词器接口,它下面有3个实现类 分别是 中文-日韩文子分词器 中文数量词子分词器 英文字符及阿拉伯数字子分词器。4、下载源码后 config 目录下是ik 自带的词库,主词典,扩展主词典、停止词、副词、量词等。3、同义词地址 是建索引 的时候 在 setting里设置的,未完待续(还没看完),有读过源码的,欢迎在评论区一起讨论研究。5、ik 是怎么实现一个字符串 分成 一个一个的词的?1、ik 是安装在 es 插件目录下的。将要分词的搜索词,经过3个分词器去分词。

2024-07-04 16:41:13 154

原创 相关性得分计算公式

2024-07-04 16:19:06 388

原创 explain:true 查看es 相关性得分 是如何计算出来的

2024-07-04 16:18:02 352

原创 es 清除查询出来的文档

2024-07-04 16:10:52 97

原创 查看和取消任务http://xxxxx:9200/_tasks/Doh6WMb3TLyinndekte6KA:39938 http://xxxxx:9200/_tasks/任务id

通过上述请求获取执行结果,包含完成结果,总文档数,创建文档数,更新文档数,耗时。reindex 分批执行后返回任务id。

2024-07-04 16:04:22 368

原创 post http://xxxxx:9200/_reindex?wait_for_completion=false 用法和生产速度

将符合条件的数据从invite_tender_p 复制到 zhao_tou_biao_p 索引里,分批复制,每批5000,同时zhao_tou_biao_p 里的文档id 用invite_tender_p 的infoId。使用场景:es 字段已经创建无法动态修改分词器,也无法动态修改 setting.当想修改分词器和setting的时候使用。生产340w 数据19G 需要89分钟。

2024-07-04 16:01:39 167

13种设计模式 demo

13种设计模式 demo

2024-09-27

空空如也

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

TA关注的人

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