- 博客(141)
- 收藏
- 关注
原创 ES和MySQL概念对比
ES和MySQL都属于数据库,不过各有各的特性,大致使用方法与MySQL类似并无区别。MySQL:擅长事务持有ACID的特性,确保数据的一致性和安全。ES:持有倒排索引,适合海量数据搜索和分析。
2025-04-15 11:59:57
411
原创 docker安装ES
1. 创建docker网络,使其docker内部通信2. 下载 | 导入镜像文件(ES + Kibana)3. 创建容器,并访问。
2025-04-15 10:26:13
204
原创 NIO入门
NIO:通过管道处理数据,支持阻塞IO和非阻塞IO。Channel与Buffer做直接交互,用于数据的传输,支持非阻塞IO,Buffer用于存放数据,Selector用于管理多个管道,允许单个线程处理多个IO。Channel与Buffer联调。
2025-03-21 20:35:46
576
原创 MySQL索引失效的场景
在联合索引中,查询条件必须从索引的最左边列开始,否则后续的索引列可能无法被利用。例如,对于联合索引,查询条件必须包含name,否则无法利用索引。查询条件中的索引列必须是连续的,不能跳过中间的列,否则后续的索引列将失效。例如,查询条件为name和phone,但跳过了age,那么phone这一列的索引将失效。如果查询条件中某个索引列使用了范围查询(如BETWEEN),那么该列之后的索引列将失效。例如,查询条件为,那么phone这一列的索引将失效,因为age是范围查询。假设有一个联合索引。
2025-03-21 19:02:01
448
原创 MySQL索引
索引能够帮助MySQL高效获取数据的数据结构,没添加索引的时候走的是全表扫描,需要把数据库中的每一行数据都走一遍,效率十分低。假设我现在执行一行sql,那么数据库会根据age字段把uesr表中的数据全部查一遍。
2025-03-08 17:04:58
443
原创 MySQL存储引擎
存储引擎是索引,查询,更新的具体实现,不同的存储引擎针对不同的场景有不同的实现,存储引擎的范围是针对表而并非数据库,也可以看成一个表的类型。在MySQL5.5之后,默认的存储引擎是InnoDB,可以使用show create table 表名来查看建表语句,MySQL通过ENGINE关键字来指定存储引擎查询当前数据库支持的存储引擎。
2025-03-07 16:22:28
258
原创 sentinel集成nacos做持久化配置
sentinel提供了非常强大的控制台来提供流控等功能,但是控制台只是临时的配置,想要将流控配置永久的保存,或者在项目启动的时候就加载,不需要手动设置,就需要使用到nacos与sentinel做集成配置。这里都是不变代码,直接复制粘贴,改一下就可以了。然后在nacos中的配置文件中注册配置文件。注意信息要和配置文件一样。然后在需要做拦截的接口上添加注解。在模块的配置文件中添加配置。
2025-02-18 11:59:19
358
原创 redis解决高并发看门狗策略
当一个业务执行时间超过自己设定的锁释放时间,那么会导致有其他线程进入,从而抢到同一个票,所有需要使用看门狗策略,其实就是开一个守护线程,让守护线程去监控key,如果到时间了还未结束,就会将这个key重新set一次,重置到原来的时间,只要主线程未结束,守护线程就会一直存在。1. 导入依赖,这里导入依赖可能会和原先的redis依赖冲突,所以只能留下一个,不然可能会出错。在方法末尾添加释放锁,别忘了添加try-catch-finally块。3. 开始分布式锁-看门狗策略,找到高频访问的业务添加以下代码。
2025-02-17 23:41:55
815
原创 使用redis分布式锁来解决高并发场景
这一段就是用于设置锁,将这一段放置在方法开始的最前面即可,而释放锁则放在方法结束的末尾然后将这个key手动清除即可。
2025-02-17 21:30:03
316
原创 使用synchronized解决高并发场景
只需要在高频访问的方法上添加synchronized关键字即可,synchronized能够保证单机情况下一次只有一个线程能够进入方法中执行,这样就很好的解决的高并发的场景,但是如果机器一多,就需要使用其他的解决方案了,比如redis分布式锁。synchronized能很好的解决高并发所带来的超卖等问题,但是synchronized也有属于它的缺陷,就是只适合单机模式,如果同时开启多个实例,那么还是会出现超卖的情况,下面就介绍一下synchronized使用方法,十分的简单。
2025-02-17 21:20:07
194
原创 seata集成nacos
将以下配置添加到配置中,注意,配置文件和上面的相互对应,如果需要修改的话,请将其他的配置文件全部修改。我们需要修改的是application.yml文件,另一个带example的是官方提供的模板文件。5. 打开nacos配置中心,将上面配置的文件加入到配置中心。4. 我们打开,然后将以下信息进行添加,可复制后进行修改。#nacos集成nacos并配置mysql数据源。这里面的配置需要相互对应的修改,不能乱改。6. 配置idea中的模块配置文件。3. 打开配置文件配置数据源。
2025-02-17 19:09:50
184
原创 seata基本使用
TC作为一个独立的服务,管理着全局和分支事务,TM定义事务范围并向TC请求开启一个全局的事务,RM监控所有的分支事务,当所有的分支事务成功,则通知TC进行提交事务,如果有一个事务失败,那么TC会执行逆向sql用于回滚事务。RM:资源管理器 管理事务的状态,与TC做交流,通知TC是提交事务还是回滚事务。TM:事务管理者 定义事务的范围,在事务开始的时候向TC请求开启一个全局事务。TC:事务协调者 用于开启一个全局和分支事务。在事务的初始链,事务刚开始的地方添加注解。使用之前需要先导入仪依赖。
2025-02-17 14:31:51
482
原创 vue3 store刷新失效场景解决方案
vuex-persistedstate 是一个常用的插件,可以方便地将 Vuex 状态持久化到 localStorage 或 sessionStorage 中。
2025-02-04 21:19:48
260
原创 validation校验器
NotBlank(message = "手机号不能为空")2. 在controller使用的时候需要通过 @Valid 来启动。3. 在全局异常中可以捕获相关异常,返回值那一行是获取上面的提示字段。1. 在使用的时候需要在指定的变量上添加校验规则注解。4. 通过全局异常捕获,并返回前端。3. 在使用的时候进行开启校验。2. 通过给一个变量设定规则。
2025-01-25 02:07:13
297
原创 web程序防止xss攻击和跨域
xss攻击是指有人恶意编写了一段脚本链接,当用户点击的时候就会向用户所在的服务器发送一个请求,这个请求包含了一段js代码,如果不防止xss那么这段js代码会被执行,这样子后果十分严重,容易被篡改数据和像数据库插入一条恶意数据。
2025-01-16 15:52:34
262
原创 docker 安装nacos
我们基于Docker来部署Nacos的注册中心,首先我们要准备MySQL数据库表,用来存储Nacos的数据。由于是Docker部署,所以大家需要将资料中的SQL文件导入到你。在root目录下创建nacos文件夹,并创建文件。
2025-01-14 19:54:03
139
原创 Rabbit MQ-保证消费者消息的可靠性
当MQ向消费者发送一个消息之后需要得到消费者的状态,因为消息并不一定就真的被消费者给消费了,可能在消费的过程中出现了一些意外,比如1. 网络问题2. 消息转换有问题3. 消费者本身的业务处理有问题由于消息回执的处理代码比较统一,因此SpringAMQP帮我们实现了消息确认。none:不处理。即消息投递给消费者后立刻ack,消息会立刻从MQ删除。非常不安全,不建议使用manual:手动模式。需要自己在业务代码中调用api,发送ack或reject,存在业务入侵,但更灵活auto:自动模式。
2025-01-08 20:52:14
828
原创 Rabbit MQ-lazy队列
普通队列:将消息直接存入内存,读取数据快,但是消息容易溢出,安全性较低,适用于实时的消息传递高频交易、订单等(读取数据块,处理速度快)惰性队列:消息存入磁盘,安全性较高、适用于消息量大,且容易堆积的场景,比如日志、事件追踪、大规模数据等。在创建队列的时候点击以下 Lazy mode即可创建为惰性队列。一般情况都是根据场景来决定的以下是他们适合的场景。
2025-01-08 15:58:34
409
原创 Rabbit MQ-保证发送者消息的可靠性
1. 消息发送者的可靠性保证消息的可靠性可以通过发送者重连和发送者确认来实现发送者重连发送者重连机制就是在发送信息的时候如果连接不上mq不会立即结束,而是会在一定的时间间隔之类进行重新连接,连接的次数和时间都是由我们在配置文件中指定的,具体的就是通过retry属性来spring: rabbitmq: # rabbitmq配置 host: localhost # rabbitmq地址 port: 5672 # rabbitmq端口 virtual-host:
2025-01-08 11:25:00
1085
原创 LInux单机安装Redis
1. 由于Redis是基于c语言编写的所以安装的时候需要先安装gee以及gcc的依赖,yum云用不了可以看一下这个。2. 添加redis的压缩包。
2025-01-06 20:38:12
531
原创 Rabbit MQ ----消息转换器
我们在传递消息的时候,可能会传递不同类型的消息,比如map,list等集合,甚至更加复杂的消息,但是AMQP的默认消息转换器是java提供的,他在解析的时候会进行序列化变成一段乱码。可以看见,直接就是乱码了,这个时候,就需要使用Jackson提供的消息转换器来保证消息的可读性。
2025-01-06 03:05:45
515
原创 RabbitMQ通过代码创建交换机和队列
3. Topic:与Direct类似,但是Topic支持通配符,能够使用通配符实现多匹配,一般情况下Binding Key是由多个单词组成,而Topic能够通过#和*来模糊匹配,#代表多个单词,*代表一个单词。2. Direct:通过Binding Key与队列绑定,生产者在发送信息的时候会通过Routing Key来告诉交换机消息要发送给谁。1. Fanout:采用广播形式来发送消息,会将消息路由到所有绑定了的队列之中。4. Headers :根据消息头进行匹配,基本上很少使用,限制较多,而且麻烦。
2025-01-05 17:17:58
257
原创 sentinel-请求限流、线程隔离、本地回调、熔断
请求限流:控制QPS来达到限流的目的线程隔离:控制线程数量来达到限流的目录本地回调:当线程被限流、隔离、熔断之后、就不会发起远程调用、而是使用本地已经准备好的回调去提醒用户熔断:熔断也叫断路器,当失败、或者异常等情况达到了一定的阈值,就会进入断路器。
2024-12-29 22:44:12
504
原创 微服务保护-sentinel
sentinel为我们提供了多种方式去保护我们的微服务安全,比如请求限流、线程隔离、断路器等。请求限流:通过控制QPS来降低微服务的访问次数,从而达到保护微服务的目的线程隔离:通过控制Thread线程数量来保证微服务的安全断路器:当一个微服务的访问频率达到了一定的阈值就会将这个微服务给阻断,在一定的时间之内是禁止访问的。
2024-12-29 18:59:38
730
原创 nacos-gateway动态路由
使用 save(Mono<RouteDefinition> route) 方法可以添加一个新的路由定义。如果路由定义已经存在,则会更新该路由定义。
2024-12-27 15:16:12
1906
web开发及spring-jar
2024-08-15
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人