自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 SpringBoot集成Flink-CDC

Flink CDCCDC相关介绍CDC是什么?CDC是Change Data Capture(变更数据获取)的简称。核心思想是,监测并捕获数据库的变动(包括数据或数据表的插入、更新以及删除等),将这些变更按发生的顺序完整记录下来,写入到MQ以供其他服务进行订阅及消费CDC分类CDC主要分为基于查询和基于Binlog基于查询基于Binlog开源产品Sqoop、DataXCanal、Maxwell、Debezium执行模式BatchStreaming是否可以

2024-11-05 16:48:55 1114

原创 easy-es使用

它主要就是简化了ES相关的API, 使用起来像MP一样舒服。

2024-10-31 14:59:38 667

原创 调度框架-Quartz-单机Quartz使用以及Job持久化

Quzrtz的Job持久化到MySQL, 并实现Job增删改查, 单次调用Job

2024-07-31 19:51:02 563

原创 分布式事务与Seata落地

事务指的就是一个操作单元, 在这个操作单元中的所有操作最终要保持一致的行为, 要么所有操作都成功, 要么所有的操作都被撤销。本地事务四大特性: ACIDA: 原子性(Atomicity), 一个事务中的所有操作, 要么全部完成, 要么全部不完成C: 一致性(Consistency), 在一个事务执行之前和执行之后数据库都必须处于一致性状态I: 隔离性(Isolation), 在并发环境中, 当不同的事务同时操作相同的数据时, 事务之间互不影响D: 持久性(Durability), 指的是只要事务成功结束,

2024-07-24 03:13:56 1059 1

原创 RocketMQ使用

RocketMQ只定义了一些基本语法来支持这个特性。你也可以很容易地扩展它。数值比较,比如:>,>=,

2024-07-24 02:55:50 662

原创 Spring系列-04-事件机制,监听器,模块/条件装配

什么时候需要自定义?想自己在合适的时机发布一些事件, 让指定的监听器来以此作出反应, 执行特定的逻辑自定义事件到底有什么刚需吗?讲道理,真的非常少。很多场景下, 使用自定义事件可以处理的逻辑, 完全可以通过一些其它的方案来替代, 这样真的会显得自定义事件很鸡肋运行示例论坛应用, 当新用户注册成功后, 会同时发送短信、邮件、站内信, 通知用户注册成功, 并且发放积分。

2024-07-22 13:54:32 1285

原创 Java集成openai,ollama,千帆,通义千问实现文本聊天

Java集成Ollama, Open ai, 千帆, 通义千问

2024-07-05 01:26:10 2083

原创 Java数据脱敏

敏感数据在存储过程中为是否为明文, 分为两种这里指的是数据库中存储的是明文数据, 返回给前端的时候脱敏Mybatis中使用插件, 需要实现拦截器接口Invocation类这个类包含了一些拦截对象的信息拦截签名Mybatis插件的粒度是精确到方法级别的, 那么疑问来了, 插件如何知道轮到它工作?签名机制解决的就是这个问题, 通过在插件接口上使用注解标注来解决这个问题插件的作用域Mybatis插件能拦截哪些对象/Mybatis插件能在哪个生命周期阶段起作用?如下Executor是SQL执行器, 包

2024-06-26 17:43:30 1374

原创 Spring系列-03-BeanFactory和Application接口和相关实现

SpringFramework 中的容器最核心的是 BeanFactory 与 ApplicationContext

2024-05-25 01:07:03 381 1

原创 Spring系列-02-Bean类型, 作用域, 实例化, 生命周期

本身是一个接口,它本身就是一个创建对象的工厂。如果 Bean 实现了接口,则它本身将不再是一个普通的Bean ,不会在实际的业务逻辑中起作用,而是由创建的对象来起作用getObject(): 返回创建的对象getObjectType(): 返回创建的对象的类型(即泛型类型)isSingleton(): 创建的对象是单实例Bean还是原型Bean,默认单实例@Nullable@NullableClass<?

2024-05-22 02:56:00 1067 1

原创 Spring系列-01-IOC的依赖查找和依赖注入

假定现在有一下需求, 开始使用的数据源是MySQL, 后续数据源变动为Oracle, 那么我们的代码就需要改动每次切数据源都需要改动, 那么进行优化。

2024-05-20 14:47:34 989

原创 Ubuntu安装和使用

查看当前桌面的环境商店中安装 Tweaks安装美化拓展安装chrome-gnome-shell是为了在浏览器里面能一键安装插件,名字中的“chrome”并不代表只能使用谷歌浏览器,火狐等其他浏览器也可以正常使用。下载主题这里以McMojave主题为例子mcOS 11CatalinaMcMojave下载主题文件进入.local/share/themes, 如果没有看到.local,就开启显示隐藏文件, 如果没有看到themes,就新建themes目录提取下载的主题,并复制这些提取的主题文件夹到。

2024-03-24 19:56:56 1126

原创 WSL使用

例如查出来的位置为C:\Users\Admin\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu22.04LTS_79rhkp1fndgsc\LocalState\ext4.vhdx。打开目录发现Ubuntu-22.04移动到了"E:\software\WSL\Ubuntu\temp-Ubuntu\ext4.vhdx", 但是"E:\software\WSL\Ubuntu\Ubuntu-22.04"目录不见了。

2024-03-24 19:48:46 1207

原创 sentinel中StatisticSlot数据采集的原理

在固定的时间窗口内,可以允许固定数量的请求进入;超过数量就拒绝或者排队,等下一个时间段进入, 如下图时间窗长度划分为1秒单个时间窗的请求阈值为3上述存在一个问题, 假如9:18:04:333-9:18:05:000产生了2个请求, 9:18:05:000-9:18:05:333产生了3个请求, 那么也就是说9:18:04:333-9:18:05:333这一秒内产生5个请求, 正常来说这里已经超出了阈值。

2024-03-24 17:21:50 2179

原创 sentinel熔断降级

熔断器分类和原理异常熔断器负责异常数/异常比例请求结束时统计异常数和请求总数, 判断是否达到阈值, 达到阈值更改熔断器状态RT熔断器:负责的是响应时间计算请求结束和请求开始的差值, 和阈值比较, 判断是否达到阈值, 达到阈值更改熔断器状态熔断器大体流程计数对比阈值熔断器验证状态流转OPEN: 熔断器打开, 系统进入熔断状态HALF_OPEN: 熔断器半开, 系统放行部分请求, 如果请求通过, 熔断器切回关闭状态, 如果请求出现异常, 熔断器切回打开, 继续熔断。

2024-03-18 16:44:57 1026

原创 sentinel基本流控

三个角色1. 监听器 PropertyListener2. 监听器管理者 SentinelProperty 3. 规则管理者 RuleManager

2024-03-18 16:41:19 1085

原创 sentinel系统负载自适应流控

系统负载自适应规则的核心类是 SystemRuleManager,它负责管理系统负载自适应规则的加载、更新和监听。当系统负载自适应规则发生变化时,SystemRuleManager 通过观察者模式通知相应的 RulePropertyListener 进行更新

2024-03-18 16:37:10 1198

原创 sentinel黑白名单权限控制

上述代码已经实例化了黑白名单监听器,并且已经将监听器交由 SentinelProperty 进行管理, 我们知道监听器监听的是规则, 那么还需要初始化规则。因为没必要, 看下述案例, 发现本质都是一样的, 换汤不换药罢了。, 将规则集合参数携带过去, 最终才能正常进入 for 循环遍历规则集合,将其组装成 Map 结构。监听器来感知黑白名单规则的变化, 将此监听器放入。方法就会进行规则的初始化, 具体的方法实现如下。进行规则初始化是不会成功的, 所以这里又调用。之后,我们会再执行一条初始化规则的代码.

2024-03-18 16:35:20 1005

原创 ThreadLocal, InheritableThreadLocal和TransmittableThreadLocal

ThreadLocal,InheritableThreadLocal,TransmittableThreadLocal

2024-03-07 23:24:36 830 1

原创 Java四大引用类型

Java中4种引用的级别和强度由高到低依次为:强引用 -> 软引用 -> 弱引用 -> 虚引用

2024-02-29 11:09:44 716

原创 sentinel中监听器的运用--规则管理

规则通用的三个字段, 设置抽象类实现Rule接口, 对下述字段复用规则id资源名称限制来源限制来源指的是诸如黑名单值、白名单值等, 也就是说限制哪些来源访问// 实现规则 Rule 接口// 规则id// 资源名称// 限制来源, 多个用逗号隔开, 比如黑名单规则, 限制userId是1和3的访问, 那么就写setLimitApp(1,3)@Override为什么limitApp不使用?其实两者都是可行的, 你可以使用逗号分隔, 也可以使用, 只要能满足需求即可。

2024-02-22 16:09:04 1050

原创 观察者模式, 发布-订阅模式, 监听器模式

观察者模式是一种行为型设计模式, 定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。

2024-02-21 21:36:48 1120

原创 sentinel的资源数据指标是如何采集

之前的NodeSelectorSlot和ClusterBuilderSlot已经完成了对资源调用树的构建, 现在则是要对资源进行收集, 核心点就是这些资源数据是如何统计

2024-02-19 18:10:56 849

原创 ProcessSlot构建流程分析

首先初始化Builder,负责管控责任链整体,Sentinel要求Builder只能存在一个,而且是外部系统优先原则,因此,我们可以自己编写一个以接口为名称的SPI文件来替代默认的 DefaultSlotChainBuilder。然后通过Builder初始化完整的责任链,这里仍然是通过SPI机制进行初始化,因此也可以额外扩展,比如外部系统自定义一个Slot且插入到完整责任链当中,这里值得注意的是责任链是有顺序的,如果顺序没指定正确,则可能造成意想不到的效果。顺序可以通过@Spi注解的order属性。

2024-02-03 14:53:55 971

原创 JDK和Spring的SPI机制原理分析

Java SPI(Service Provider Interface)是 Java 提供的一种轻量级的服务发现机制。它可以让开发者通过约定的方式,在程序运行时动态地加载和替换接口的实现,从而提高程序的扩展性和灵活性Java SPI 实际上是“基于接口的编程+策略模式+配置文件”组合实现的动态加载机制要使用Java SPI,需要遵循如下约定:当服务提供者提供了接口的一种具体实现后,在jar包的目录下创建一个以接口全限定名为命名的文件,内容为实现类全限定名接口实现类所在的jar包放在主程序的。

2024-02-02 17:24:40 1044 1

原创 sentinel的Context创建流程分析

限流:通过限制请求速率、并发数或者用户数量来控制系统的流量,防止系统因为流量过大而崩溃或无响应的情况发生。熔断:在系统出现故障或异常时将故障节点从系统中断开,从而保证系统的可用性。降级:在系统过载的情况下保证核心功能的可用性。熔断和限流的区别在于:熔断是针对故障节点的,将故障节点从系统中断开,而降级是针对整个系统的,系统在过载的情况下关闭一些非核心功能,仍能提供核心功能的可用性。资源: 资源是被 Sentinel 保护和管理的对象规则:用来定义资源应该遵循的约束条件资源和规则的关系。

2024-02-01 16:05:11 1046

原创 gateway集成sentinel配置nacos持久化GatewayFlowRule规则后--GatewayFlowRule规则失效(规则的时间单位和时间粒度失效)

其实笔者在写这块的时候, 参考了大量的博客, 但是那些博客实现了持久化是有缺陷的, sentinel-dashboard中操作缺失能同步到nacos, 但是这里的规则是有问题的, 无法使用的, 和我们理想中的效果大相径庭, 排查的思路大概如下。

2024-01-30 23:10:59 1433 3

原创 阿里云redis集群模式导致的gateway网关限流不生效

问题现象: 阿里云redis集群无法限流, 提示一下异常Error in execution;翻译过来大致的意思就是看一下gateway网关中使用的lua脚本, 位于gateway依赖包下的gateway原Lua脚本如下下边这版是删除了部分注释代码, 以及添加了部分注释的核心问题就在这里将KEYS[1]和 KEYS[2]赋值给了变量, 然后传递给了后续的代码然而, 为了保证脚本里面的所有操作都在相同slot进行,会对Lua脚本做如下。

2024-01-26 19:51:50 1162

原创 gateway网关限流

gateway集成redis实现用户+接口维度的限流, 并将限流所产生的key存入到redis的指定的索引库, 不和原业务的key的产生影响(不会在原业务索引库产生大量的key), 以及集成了sentinel做接口层面的限流, 并实现持久化

2024-01-12 14:59:23 1154

原创 多线程下子线程无法获取request的值

由于子线程无法获取请求对象, 导致出现了空指针解决方式有3种线程共享手动传值设置servletRequestAttributes。

2024-01-01 06:19:17 1588

原创 MySQL调优

从结构/架构, 配置参数对MySQL进行优化

2023-12-21 00:22:05 1102 1

原创 MySQL存储过程和触发器

MySQL中存储过程以及触发器的语法和案例应用

2023-12-12 20:51:33 318

原创 MySQL-18.主从复制

在实际工作中,我们常常将Redis作为缓存与MySQL配合来使用,当有请求的时候,首先会从缓存中进行查找,如果存在就直接取出。如果不存在再访问数据库,这样就提升了读取的效率,也减少了对后端数据库的访问压力。Redis的缓存架构是高并发架构中非常重要的一环。此外,一般应用对数据库而言都是“读多写少”,也就说对数据库读取数据的压力比较大,有一个思路就是采用数据库集群的方案,做主从架构、进行读写分离,这样同样可以提升数据库的并发处理能力。

2023-09-27 20:23:56 91 1

原创 MySQl-17.其它的数据库日志

中继日志只在主从服务器架构的从服务器上存在。从服务器为了与主服务器保持一致,要从主服务器读取二进制日志的内容,并且把读取到的信息写入本地的日志文件中,这个从服务器本地的日志文件就叫中继日志。然后,从服务器读取中继日志,并根据中继日志的内容对从服务器的数据进行更新,完成主从服务器的数据同步。搭建好主从服务器之后,中继日志默认会保存在从服务器的数据目录下从服务器名-relay-bin.序号。从服务器名- relay-bin.index,用来定位当前正在使用的中继日志。

2023-09-26 22:12:58 102

原创 MySQL-16.多版本控制MVCC

在MVCC机制中,多个事务对同一个行记录进行更新会产生多个历史快照,这些历史快照保存在Undo Log里。如果一个事务想要查询这个行记录,需要读取哪个版本的行记录呢?这时就需要用到Read View了,它帮我们解决了行的可见性问题。Read View就是事务在使用MVCC机制进行快照读操作时产生的读视图。当事务启动时,会生成数据库系统当前的一个快照,InnoDB为每个事务构造了一个数组,用来记录并维护系统当前活跃事务的ID“活跃"指的就是,启动了但还没提交这里介绍了 MVCC 在。

2023-09-26 16:10:46 124

原创 MySQL-15.锁

`锁`是计算机协调多个进程或线程`并发访问某一资源`的机制。在程序开发中会存在多线程同步的问题,当多个线程并发访问某个数据的时候,尤其是针对一些敏感的数据(比如订单、金额等),我们就需要保证这个数据在任何时刻`最多只有一个线程`在访问,保证数据的`完整性`和`一致性`。在开发过程中加锁是为了保证`数据的一致性`,这个思想在数据库领域中同样很重要。

2023-09-25 17:05:22 102 1

原创 MySQL-14.事务日志

事务有4种特性:原子性、一致性、隔离性和持久性。那么事务的四种特性到底是基于什么机制实现呢?锁机制redoundo重做日志回滚日志有的DBA或许会认为 UNDO 是 REDO 的逆过程,其实不然。REDO 和 UNDO都可以视为是一种恢复操作"物理级别"逻辑操作事务的回滚逆操作一致性非锁定读。

2023-09-23 17:46:21 296 1

原创 MySQL-13.事务基础知识

在关系型数据库中,关于数据表设计的基本原则、规则就称为范式。可以理解为,一张数据表的设计结构需要满足的某种设计标准的级别。要想设计一个结构合理的关系型数据库,必须满足一定的范式。有的时候不能简单按照规范要求设计数据表,因为有的数据看似冗余,其实对业务来说十分重要。这个时候,我们就要遵循业务优先的原侧,首先满足业务需求,再尽量减少冗余。如果数据库中的数据量比较大,系统的UV和PV访问频次比较高,则完全按照MySQL的三大范式设计数据表,读数据时会产生大量的关联查询,在一定程度上会影响数据库的读性能。

2023-09-22 20:01:17 154

原创 MySQL-11.数据库的设计规范

在关系型数据库中,关于数据表设计的基本原则、规则就称为范式。可以理解为,一张数据表的设计结构需要满足的某种设计标准的级别。要想设计一个结构合理的关系型数据库,必须满足一定的范式。有的时候不能简单按照规范要求设计数据表,因为有的数据看似冗余,其实对业务来说十分重要。这个时候,我们就要遵循业务优先的原侧,首先满足业务需求,再尽量减少冗余。如果数据库中的数据量比较大,系统的UV和PV访问频次比较高,则完全按照MySQL的三大范式设计数据表,读数据时会产生大量的关联查询,在一定程度上会影响数据库的读性能。

2023-09-21 23:31:21 126

原创 MySQL-12.数据库其它的调优策略

不过随着用户量的不断增加,以及应用程序复杂度的提升,我们很难用“”去定义数据库调优的目标,因为用户在不同时间段访问服务器遇到的瓶颈不同,比如双十一促销的时候会带来大规模的;还有用户在进行不同业务操作的时候,数据库的和都会有所不同。因此我们还需要更加精细的定位,去确定调优的目标。如何确定呢?一般情况下,有如下几种方式:我们需要调优的对象是整个数据库管理系统,它不仅包括 SQL 查询,还包括数据库的部署配置、架构 等。从这个角度来说,我们思考的维度就不仅仅局限在 SQL 优化上了。通过如下的步骤我们进行梳理:如

2023-09-21 23:25:13 111

空空如也

空空如也

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

TA关注的人

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