- 博客(58)
- 收藏
- 关注
原创 Redis分布式缓存
因为slave原本也是一个master,有自己的replid和offset,当第一次变成slave,与master建立连接时,发送的replid和offset是自己的replid和offset。不过,旧的数据只要是绿色的,说明是已经被同步到slave的数据,即便被覆盖了也没什么影响。此时如果slave恢复,需要同步,却发现自己的offset都没有了,无法完成增量同步了。命令,让master节点变成当前slave节点的slave节点,当然slave节点变成master节点,实现无感知的数据迁移。
2025-06-06 14:57:04
1093
原创 Seata分布式事务
SAGA模式是一种基于补偿事务(Compensating Transactions)的分布式事务管理方式。在SAGA模式下,长事务被拆解为一系列的局部事务(通常是单独的微服务操作),每个局部事务都有一个补偿操作。补偿操作是用于回滚先前成功执行的局部事务的操作。拆分事务:一个分布式事务被拆分为多个局部事务,每个局部事务在不同的服务上执行。执行局部事务:每个局部事务在执行时,会进行状态更新,并且会向下一个事务传递数据。成功时执行补偿:如果所有局部事务都成功执行,整个事务提交。
2025-06-05 22:38:54
555
原创 Sentinel微服务保护
什么是雪崩问题?微服务之间相互调用,因为调用链中的一个服务故障,引起整个链路都无法访问的情况。限流是对服务的保护,避免因瞬间高并发流量而导致服务故障,进而避免雪崩。是一种预防措施。超时处理、线程隔离、熔断降级是在部分服务故障时,将故障控制在一定范围,避免雪崩。是一种补救措施。Sentinel是阿里巴巴开源的一款微服务流量控制组件。官网地址:https://sentinelguard.io/zh-cn/index.html。
2025-06-05 12:45:49
926
原创 sentinel规则持久化
另外,还需要修改com.alibaba.csp.sentinel.dashboard.controller.v2包下的FlowControllerV2类。在sentinel-dashboard源码的pom文件中,nacos的依赖默认的scope是test,只能在测试时使用,这里要去除。在sentinel-dashboard的test包下,已经编写了对nacos的支持,我们需要将其拷贝到main下。修改其中的nacos地址,让其读取application.properties中的配置。
2025-06-05 12:12:37
689
原创 Elasticsearch
什么是elasticsearch?一个开源的分布式搜索引擎,可以用来实现搜索、日志统计、分析、系统监控等功能。什么是elastic stack(ELK)?是以elasticsearch为核心的技术栈,包括beats、Logstash、kibana、elasticsearch。什么是Lucene?是Apache的开源搜索引擎类库,提供了搜索引擎的核心API。分词器的作用是什么?创建倒排索引时对文档分词。用户搜索时,对输入的内容分词。为什么安装IK分词器?
2025-06-04 16:52:29
1166
原创 RabbitMQ
基本消息队列的消息发送流程:建立connection。创建channel。利用channel声明队列。利用channel向队列发送消息。基本消息队列的消息接收流程:建立connection。创建channel。利用channel声明队列。定义consumer的消费行为handleDelivery()。利用channel将消费者与队列绑定。多个消费者绑定到一个队列,同一条消息只会被一个消费者处理。通过设置prefetch来控制消费者预取的消息数量。交换机的作用是什么?
2025-06-03 00:19:09
1374
原创 Docker
数据卷(volume)是一个虚拟目录,指向宿主机文件系统中的某个目录。如图:两个容器(Container)里面的文件可以都挂载到一个数据卷上面。一旦完成数据卷挂载,对容器的一切操作都会作用在数据卷对应的宿主机目录了。这样,我们操作宿主机的/var/lib/docker/volumes/html目录,就等于操作容器内的/usr/share/nginx/html目录了。常见的镜像在DockerHub就能找到,但是我们自己写的项目就必须自己构建镜像了。而要自定义镜像,就必须先了解镜像的结构才行。
2025-05-28 23:10:47
782
原创 Centos7安装Docker
Docker 分为 CE 和 EE 两大版本。CE 即社区版(免费,支持周期 7 个月),EE 即企业版,强调安全,付费使用,支持周期 24 个月。Docker CE 分为stabletest和nightly三个更新频道。官方网站上有各种环境下的安装指南,这里主要介绍 Docker CE 在 CentOS上的安装。
2025-05-28 22:41:23
507
原创 配置中心-远程调用-网关-跨域
使用Feign的步骤:① 引入依赖② 添加@EnableFeignClients注解③ 编写FeignClient接口④ 使用FeignClient中定义的方法代替RestTemplate类型作用说明修改日志级别包含四种不同的级别:NONE、BASIC、HEADERS、FULL响应结果的解析器http远程调用的结果做解析,例如解析json字符串为java对象请求参数编码将请求参数编码,便于通过http请求发送支持的注解格式默认是SpringMVC的注解失败重试机制。
2025-05-27 12:32:24
914
原创 nacos集群搭建
官方给出的Nacos集群图:其中包含3个nacos节点,然后一个负载均衡器代理3个Nacos。这里负载均衡器可以使用nginx。
2025-05-27 11:52:37
732
原创 注册中心-负载平衡
单体架构:简单方便,高度耦合,扩展性差,适合小型项目。例如:学生管理系统分布式架构:松耦合,扩展性好,但架构复杂,难度大。适合大型互联网项目,例如:京东、淘宝微服务:一种良好的分布式架构方案①优点:拆分粒度更小、服务更独立、耦合度更低②缺点:架构非常复杂,运维、监控、部署难度提高SpringCloud是微服务架构的一站式解决方案,集成了各种优秀微服务功能组件SpringCloudRibbon的底层采用了一个拦截器,拦截了RestTemplate发出的请求,对地址做了修改。
2025-05-26 17:42:51
655
原创 Aciviti工作流
配置完成后启动项目,启动完成后activiti数据库会自动创建25张activiti相关的表。表里面,每一个流程变量都有对应的流程实例 ID,这就说明这些流程变量是属于某一个流程实例的。通过taskService.complete(task.getId());<------------------候选组用户><------------------候选组用户><------------------候选组用户>表的里的TASK_ID_ 有值字段就要值了。表里面查不到该变量了,需要在历史表里面查询。
2025-05-24 17:49:35
915
原创 23种设计模式
只有一个实例。自我实例化。提供全局访问点优点确保一个类只有一个实例,方便控制实例数量,避免资源浪费。减少频繁创建和销毁对象的开销,尤其对于重量级对象(如数据库连接、线程池)。缺点违反单一职责原则,单例类既要负责自身的业务逻辑,又要管理实例创建,职责过重。扩展性差,单例类没有接口,难以通过继承或实现接口进行扩展。建造者模式是指将一个复杂对象的构造和表示分离,使同样的构建过程可以创建不同的表示。优点分离了部件的构造(由Builder来负责)和装配(Director负责)。
2025-05-23 14:34:35
928
原创 SpringBoot
/定义切面@Aspect@Component//定义切点@Pointcut注解本身不执行任何操作//定义切面@Aspect@Component//定义切点//定义前置通知System.out.println("执行了前置通知");//定义后置通知System.out.println("执行了后置通知");//环绕通知System.out.println("环绕前通知");System.out.println("环绕后通知");return ret;
2025-05-19 17:31:43
1119
原创 MybatisPlus
在中扫描Mapper.xml#配置日志# 扫描mapper.xml文件# 配置包别名接口文件/** 根据id查询用户信息为map集合 **/文件</测试@TestWrapper:条件构造抽象类的最顶端父类AbstractWrapper:用于查询条件封装,生成 sql 的 where 条件QueryWrapper:查询条件封装UpdateWrapper:Update 条件封装AbstractLambdaWrapper:使用Lambda 语法。
2025-05-06 17:33:01
1016
原创 SpringSecurity
我们还希望在认证失败或者是授权失败的情况下也能和我们的接口一样返回相同结构的json,这样可以让前端能对响应进行统一的处理。要实现这个功能我们需要知道SpringSecurity的异常处理机制。在SpringSecurity中,如果我们在认证或者授权的过程中出现了异常会被ExceptionTranslationFilter捕获到。在ExceptionTranslationFilter中会去判断是认证失败还是授权失败出现的异常。
2025-04-27 18:27:24
620
原创 MyBatis
查询:连接数据库会消耗资源;一次查询的结果,给它暂时存放在一个可以直接取到的地方–>内存:缓存。当再次查询相同的数据的时候,直接走缓存,就不用走数据库了。(1)什么是缓存Cache存在内存中的临时数据。(2)为什么使用缓存减少和数据库的交互次数,减少系统开销,提高系统效率。(3)什么样的数据能使用缓存经常查询并且不经常改变的数据。导包</</</</在mapper中指定使用我们的ehcache缓存实现。
2025-04-26 21:48:38
1074
原创 SpringMVC
中心控制器:Spring的web框架围绕DispatcherServlet设计。DispatcherServlet的作用是将请求分发到不同的处理器。Spring MVC框架像许多其他MVC框架一样,。前端控制器 DispatcherServlet:相当于转发器,减少了其它组件之间的耦合度。处理器映射器 HandlerMapping:根据请求的URL来查找Handler处理器适配器 HandlerAdapter:负责执行Handler。
2025-04-26 15:37:41
1176
原创 Spring
AOP的全称是Aspect Oriented Programming,即面向切面编程。是实现功能统一维护的一种技术,它将业务逻辑的各个部分进行隔离,使开发人员在编写业务逻辑时可以专心于核心业务,从而提高了开发效率。作用:在不修改源码的基础上,对已有方法进行增强。实现原理:动态代理技术。优势:减少重复代码、提高开发效率、维护方便应用场景:事务处理、日志管理、权限控制、异常处理等方面。
2025-04-25 18:53:32
867
原创 TypeScript-知识点梳理
⾃定义类型,可以更灵活的限制类型// 性别的枚举Male,Female// ⾃定义⼀个年级类型(⾼⼀、⾼⼆、⾼三)// ⾃定义⼀个学⽣类型// 定义两个学⽣变量:s1、s2s1 = {name:'张三',age:18,gender:Gender.Male,grade:1}s2 = {name:'李四',age:18,gender:Gender.Female,grade:2}
2025-04-23 18:35:13
685
原创 Vue3-全知识点
打包大小减少。初次渲染快, 更新渲染快。内存减少。使用代替实现响应式。重写虚拟的实现和。(组合):与与…新的内置组件:…其他改变:新的生命周期钩子 选项应始终被声明为一个函数移除支持作为 的修饰符…点击查看官方文档2.2、基于 vite 创建(推荐) 是新一代前端构建工具,官网地址:https://vitejs.cn,的优势如下:自己动手编写一个App组件安装官方推荐的插件:总结:向下兼容语法,且中的模板中可以没有根标签3. Vue3核心语法3.1. 【OptionsAPI 与 Compos
2025-04-22 20:03:17
1578
原创 Vue2-vueRouter
特别注意:路由携带params参数时,若使用to的对象写法,则不能使用path配置项,必须使用name配置!:router-link 标签类似于 a 标签,而 to 属性和 a 标签的 href 属性作用相似。hash值不会包含在 HTTP 请求中,即:hash值不会带给服务器。方式二:路由懒加载,就是跳转到这个页面的时候,再去加载这个文件。方式一:直接导入,就是在应用第一次执行时,就会加载这个文件。作用:路由组件所独有的两个钩子,用于捕获路由组件的激活状态。分类:全局守卫、独享守卫、组件内守卫。
2025-04-22 15:31:17
873
原创 Vue2-vuex
在Vue中实现集中式状态(数据)管理的一个Vue插件,对vue应用中多个组件的共享状态进行集中式的管理(读/写),也是一种组件间通信的方式,且适用于任意组件间通信。//借助mapMutations生成对应的方法,方法中会调用commit去联系mutations(对象写法)//借助mapActions生成对应的方法,方法中会调用dispatch去联系actions(对象写法)//借助mapGetters生成计算属性,从getters中读取数据。//借助mapState生成计算属性,从state中读取数据。
2025-04-22 15:23:50
872
原创 Vue2-重要知识点
子给父转数据一种组件间通信的方式,适用于:父组件 ===> 子组件 (父给子传数据)通过父组件给子组件绑定一个自定义事件实现子给父传递数据(第一种写法,使用@或v-on)通过父组件给子组件绑定一个自定义事件实现子给父传递数据(第二种写法,使用ref)全局事件总线:App.vue-- props方式: --> <!-- 通过父组件给子组件传递函数类型的props实现子给父传递数据 --> < School :mps = " getSchoolName " /> <!
2025-04-22 14:58:07
1106
原创 Mysql-JDBC
第二步:获取连接(表示JVM进程和数据库进程之间的通道打开了,进程之间的重量级通信,使用之后要关闭通道)第六步:释放资源(使用完资源之后要关闭资源,Java和数据库之间属于进程之间的通信,使用之后要关闭)第五步:处理查询结果集(只有当第四步执行的是select的语句的时候才有第五步)第一步:注册驱动(告诉java程序要连接哪个品牌的数据库)第三步:获取数据库操作对象(专门执行sql语句的对象)第四步:执行sql语句(DDL、DQL…
2025-04-16 18:29:16
238
原创 Mysql-锁
表级锁,每次操作锁住整张表。锁定粒度大,发生锁冲突的概率最高,并发度最低。应用在MyISAM、 InnoDB、BDB等存储引擎中。表锁元数据锁(meta data lock,MDL)意向锁行级锁,每次操作锁住对应的行数据。锁定粒度最小,发生锁冲突的概率最低,并发度最高。应用在InnoDB存储引擎中。InnoDB的数据是基于索引组织的,行锁是通过对索引上的索引项加锁来实现的,而不是对记录加的锁。对于行级锁,主要分为以下三类:(图片理解可以参考回表查询)
2025-04-16 18:06:49
640
原创 Mysql-视图和存储过程
存储过程是事先经过编译并存储在数据库中的一段 SQL 语句的集合,调用存储过程可以减少数据在数据库和应用服务器之间的传输,提高数据处理的效率。存储过程思想上很简单,就是数据库 SQL 语言层面的代码封装与重用。封装,复用: 可以把某一业务SQL封装在存储过程中,需要用到的时候直接调用即可。可以接收参数,也可以返回数据。减少网络交互,效率提升:如果涉及到多条SQL,每执行一次都是一次网络传输。而如果封装在存储过程中,我们只需要网络交互一次可能就可以了。
2025-04-15 15:55:06
916
原创 Mysql-SQL优化
COUNT(字段):当字段存在NULL值且无索引时,效率最低。若字段有索引,效率会有所提升。COUNT(主键 id):通常比COUNT(字段)效率高,因为主键有索引,但相比COUNT(1)和COUNT(*)可能会稍慢。COUNT(1):效率和COUNT(*)相近,部分情况下可被优化器优化。COUNT(*):在 InnoDB 存储引擎中,通常是效率最高的统计行数的方法,MySQL 对其做了专门优化。
2025-04-11 15:01:39
1015
原创 Mysql-事务和索引
无索引情况在无索引情况下,就需要从第一行开始扫描,一直扫描到最后一行,我们称之为全表扫描,性能很低。有索引情况如果我们针对于这张表建立了索引,此时我们在进行查询时,只需要扫描几次就可以找到数据了,极大的提高的查询的效率。
2025-04-08 20:07:53
659
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人