自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(338)
  • 问答 (2)
  • 收藏
  • 关注

原创 el-select 模糊搜索 实现一

本实现方式采用,页面打开后直接请求全部数据,然后输入框输入后搜索的话采用前端本地搜索(list.find 方式)

2024-02-27 22:56:03 152

原创 RabbitMQ 发送消息 绕过系统配置的 消息转换器方法

所以问题来了,系统目前已经集成好了, 都是用的 JSONB,这也是统一的配置。所以,直接就是看发送消息的源码,convertAndSend 方法,这里具体是哪里使用到了配置的消息转换器,消息转换器何时何以参加?起初想的是再弄一套配置,也就是 rabbitmqTemplate,这套配置就不配 JSON 的消息转换器了。不再走下面的消息转换了。我负责的系统需要与其他系统交互,需要我将消息发送到 MQ 上,其他系统监听消息。遇到问题,两个系统的发送消息格式都是不一致的,所以这个地方是需要协商打通的。

2024-01-03 14:05:44 680

原创 MySQL bin 目录启动命令 linux

./mysqld_safe &

2023-12-04 10:29:20 101

原创 根据一个类型 获取该类型的 特殊判断 优雅写法

如果我要查询的话,SQL 里的条件必定是一个时间范围,所以就需要根据类型来算好这个时间范围,所以可以写成下面这样。需求:一个统计接口,时间类型参数有以下:今日、近七天、近三十日等。到时候直接就是 获取该类型的 日期范围就好了,非常优雅。

2023-11-04 18:22:54 184

原创 Java 工具类 列表动态维护

常规实现:先删除原来的全部数据,再重新插入,这样就很耗时了,所以这里写一个工具类出来。具体参数如何传,已经写在了工具类的注释中。原本需求:一个二级 list 更新功能。1. 如果有新增的数据:仅对这些数据新增。2. 如果有删除的数据:仅删除这些数据。3. 其他的话就是更新了。

2023-10-28 23:14:58 232 1

原创 IDEA debug 时不阻塞程序

即可只阻塞当前线程,而不是全部线程。将每个断点的挂起方式改为 线程。

2023-10-28 17:40:22 125

原创 Redis 与 MySQL 一致性 实现方案

解决方法:MySQL 中的数据更新的时候 ,在更新之前先删一次 Redis 中的数据,在更新之后再删一次 Redis 中的数据。正常情况下的流程是:请求来了,先检查 Redis 有没有数据,有返回;没有便查询 MySQL 然后 放入 Redis。此时,如果 MySQL 的数据发生了变化,所以需要同步到 Redis 中。

2023-10-27 09:43:50 411

原创 RabbitMQ 消息模型

然后,生产者发送消息的时候就要传这个值了:比如 传一个 info,那么 交换机就会把消息转发给 绑定了 info 的队列 C2 上。首先可能存在多个交换机,所以 队列是需要绑定到交换机的,交换机转发消息时 可选择的队列列表 只能是绑定到它的 队列。消费者不与队列交互,只给交换机发送,交换机再把消息转发给指定队列,消费者监听到自己的队列有消息了,就可以消费了。所以消费者最终发的消息是:消息要发给哪个交换机的哪个 bindingKey 的队列上。广播就是将消息转发给 绑定到该交换机的 全部队列上。

2023-10-20 10:59:45 389

原创 SpringBoot 接口 字节数组直接显示为图片

【代码】SpringBoot 接口 字节数组直接显示为图片。

2023-10-12 23:04:28 1763

原创 git 项目带分支迁移到另一个 git 服务器

1. 指定迁移 git 仓库地址git remote add target 2. 全部代码推送git push target --all

2023-09-26 22:21:14 672

原创 MyBatisPlus 底层用 json 存储,Java 仍然使用 对象操作

PO 类的字段定义为一个对象,然后使用以下注解修饰@TableField(typeHandler = JacksonTypeHandler.class)当然 jsonTypeHandler 有多种可以选择。PO 类的字段定义为一个对象,然后使用以下注解修饰。

2023-09-21 11:59:21 139

原创 MybatisPlus 数据库字段为 int,PO 类定义为 枚举类

当一张表的某个字段是int,并且有不同的状态时,可以使用枚举类都列出来,就不用写死数值或者额外定义常量类了。其中该类的 grade 字段在数据库中为 int。而在 Java 类里使用Enum,那么该如何对应呢。将 @EnumValue 注解修饰到真正要数据库关联的字段上面。同理,字符串也可以这样操作。这样写之后,代码就更优雅了。首先定义一个 Java 类。

2023-09-21 11:39:42 179

原创 Map 转为 Java 类 方法

【代码】Map 转为 Java 类 方法。

2023-09-21 11:26:16 164

原创 保留 N 条数据功能 实现方案

需求:用户浏览某信息后 就插入一条浏览记录,该浏览记录限制只保留 N 条。实现方案:1. 插入记录2. 查询总记录3. 判断:总记录 是否大于 阈值 3.1 如果大于:总记录 - 阈值 获取到超出数量,将超出数量做处理 3.1.1 UPDATE 方式:UPDATE xxx SET is_del = 1LIMIT 超出数量 DELETE 方式:DELETE FROM xxx LIMIT

2023-09-06 14:34:08 71

原创 React Antd 实现表格合计功能

思路:首先拿到 表格数组对象,然后写一个工具类,然后向数组对象最后插入一条数据,这条数据的字段时根据表格数组里合计算出来的。

2023-08-03 14:55:24 1602

原创 ShardingSphere 源码模块介绍

Sharding - JDBC 主要实现数据库的分库分表,它通过解析应用程序的 SQL 语句,将其中的表名和条件就行解析和分析,然后根据预先配置的规则,将数据分散到不同的数据库和表中。用于提供数据库代理功能,它的作用是在应用程序和数据库之间充当一个中间层,接收来自应用程序的数据库请求,并根据配置进行相应的处理和路由。主要负责项目的整合和发布,该模块中的文件主要是一些配置和脚本文件,用于控制项目的构建和打包流程。公共基础设施模块,为其他模块提供一些共享的基础功能和工具类,它包含了以下几个主要的子模块。

2023-07-30 20:51:53 242

原创 动态线程池 dynamic-tp 源码

官方文档(1)支持运行时动态修改线程池参数字段包括:核心线程数、最大线程数等(2)近实时监控线程池情况,如果发现超过指定阈值就告警通知用户告知用户后,用户就可以修改线程池配置,怎么修改呢?直接修改配置中心的数据,也就是将线程池字段存储在配置中心,线程池也从配置中心读取,用户也从配置中心修改。如想了解更多使用信息,请查看上方官方文档。

2023-05-27 02:58:17 1554 2

原创 【Spring - beans】 BeanDefinition 源码

目录1. BeanDefinition1.1 AbstractBeanDefinition1.2RootBeanDefinition1.3ChildBeanDefinition1.4GenericBeanDefinition2.BeanDefinitionReader2.1AbstractBeanDefinitionReader2.2XmlBeanDefinitionReader2.3GroovyBeanDefinitionReader2.4Prope

2023-05-22 19:03:52 909

原创 MyBatis Plus 插件 动态数据源实现原理与源码讲解 (dynamic-datasource-spring-boot-starter-master)

多数据源即一个项目中同时存在多个不同的数据库连接池。比如 127.0.0.1:3306/test 127.0.0.1:3307/test127.0.0.1:3308/test总之项目存在需要操作多个库的需求。具体在编码方面呢,具体就是一个service 中,方法1使用库1查询,方法2使用库2查询。

2023-05-16 15:12:51 5916 2

原创 Nacos 鉴权系统源码讲解

鉴权功能默认没有开启,开启后的效果就是 Nacos 的接口需要用户登录并且具有权限才能调用该接口。例如注册实例、发布配置等。鉴权也就是 我是谁、我能干什么。

2023-04-22 14:34:57 1501

原创 实现 2PC 协议

2PC 协议(Two Phase Commit)是一个分布式事务协议。2PC 为两阶段提交,分为两个阶段。两个角色。1. PREPARE2PC 有两个角色1. Transaction Manger / TM 事务管理者2. Resouce Manager / RM 资源管理者。

2023-04-01 16:49:04 762

原创 责任链设计模式的一次实践

一次使用

2023-03-22 13:16:02 334

原创 Nacos 注册中心 - 健康检查机制源码

当一个服务实例注册到 Nacos 中后,其他服务就可以从 Nacos 中查询出该服务实例信息,就可以调用使用了。然而服务提供者如果此时挂掉了,此时其他服务拿到信息后就会调用不通,所以Nacos中的服务信息应该有一个更新机制(即删除掉挂掉的服务)那么服务注册信息应该如何维护呢,那就是判断某个服务实例是否有问题,如果检测到服务实例出现问题了就将他剔除掉。那么如何判断 服务实例 是否有问题呢?这就是健康检查要做的事情,即检查服务实例的健康状态。不健康则剔除下线。

2023-03-18 16:25:20 1440 4

原创 Nacos 注册中心 - 服务注册源码

订阅服务的意思是:订阅服务的变更,如果数据变更了,NacosServer 端会推送事件过来,这样 Client 的数据就会是最新的了。好了,这里已经完成了可靠性的保证,定时任务 RedoScheduledTask 会定时扫描 缓存 map 里的数据并做处理。在微服务架构中,服务之间的调用非常频繁,而且调用链路很长,因此需要对服务之间的调用进行跟踪和监控,以便及时发现和解决问题。这里也就是说,RPC 请求发送完成后,将缓存中的数据做了一个改动,意思就是代表 缓存的这条数据 是正常的(不需要重试了)

2023-03-12 18:01:38 859

原创 Nacos 配置中心 服务端推送变更源码讲解

接着上一篇继续当配置发生变更时,NacosServer 会对配置变更的客户端主动推送消息。那么 Nacos 是如何实现的呢?

2023-01-28 21:06:32 2353

原创 Nacos 配置中心源码讲解

运行时动态修改系统参数配置,不用重启服务方便运维人员修改系统参数,不直接改代码,安全性高,防止代码改坏了2微服务多,配置统一管理。

2023-01-22 21:56:57 2442

原创 Nacos 注册中心

而永久实例是采用服务端主动探测的方式,例如服务端请求永久服务的 HTTP 接口,如果状态返回 200 代表服务正常,如果返回了 503 Service Unavailable 或者 302 Temporary Redirect 则代表服务不可用了。假设在Nacos上注册了100个服务,由于一些原因等部分服务下线,只剩下20个服务,此时,大量请求来临,本来是有100个服务提供服务,但是现在却只剩了20个服务,结果不言而喻,这20个服务本来是正常的,但是却因为大量的请求则会挂掉。不同系统之间的服务又是不同的。

2023-01-20 15:28:38 2806 2

原创 Nacos 寻址机制

假设存在一个 Nacos 集群,其内部具有 A , B , C 三个节点。客户端如何决定向集群中的哪个节点发送请求在 application.yml 配置中,会列出 Nacos 集群的全部节点地址信息。spring:cloud:nacos:在最终实际发送请求时,会将会解析为 List servers,然后随机选择一个节点发送请求。// 省略非关键代码// 随机选择一个节点}现有如下客户端请求客户端 E 向 集群节点 A 发送一个注册服务的请求。

2022-12-24 02:20:28 1980

原创 Nacos 简介与 本地调试环境搭建

Nacos是Dynamic Naming and Configuration Service的首字母简称Nacos由阿里巴巴开源,经过10年双十一的高并发考验。支持具有数百万服务的大规模场景。使用Java语言编写,包含服务管理和配置管理两大功能本系列基于最新版本 Nacos2.2.0 讲解Nacos官网homeGithubBLOGblognacos-address:地址服务nacos-api:对外提供的api接口nacos-auth:Nacos鉴权功能。

2022-12-17 18:04:06 3198 4

原创 Nacos 消息通知系统 源码讲解

Nacos 节点内部使用了大量的事件机制进行通信,这样各种操作进行了解耦,提高了性能。接下来就介绍。所谓事件机制也就是 生产者消费者模式。生产者向队列发送生产一条消息,消费者从队列拿出一个消息进行消费。结构如下:正在上传…重新上传取消事件机制也是 Nacos 高性能的原因之一,事件生产后放到队列后请求就直接返回了。客户端不用等待完成,全都异步处理了,所以Nacos 支持高并发访问。Nacos 中的事件机制非常庞大,接下来以不同的模块的角度来介绍。

2022-12-16 15:19:52 1662 3

原创 Java 中的不同参数类型

是不是还傻傻分不清参数配置到底怎么写,写在哪个位置,那么这篇文章就让你学会。打开 IDEA 的 Run Configuration,可以看到以下参数配置。

2022-12-11 21:49:25 1055 1

原创 ShardingSphere- JDBC ,自定义SQL查询不出数据问题解决

问题现象:使用Mybatis写了一段SQL,数据库可以查询出来,但是通过代码查却为null。解决方法:ShardingJDBC....

2022-10-08 13:12:07 3195 2

原创 一次解释器模式的实际使用

不过好在,我找到一本书,叫做《秒懂设计模式》,终于理解了。学会了解释器模式,现在开始改造代码,首当其冲的难点在于如何定义表达式,如何定义终结表达式与非终结表达式。这段代码看起来... 很直观,简单,但是却不易维护,没有扩展性。其实可以发现,区间属于复合运算,就是左区间 和 右区间 的运算。一个个分析,对于这半个区间,特点就是一个符号 + 一个数值。好的,首先画一幅只有自己能够看懂的图,来帮助自己梳理逻辑。我先把数据拆分下,如上所示,每个表达式都用的分号;对于给定表达式,一个个来看,首先第一种 0 和 1。

2022-09-07 16:31:11 473 1

原创 Jenkins pipeline 自动部署实践

最近为公司做Jenkins部署改造,本文为我这几天的研究结果之前断断续续学过Jenkins,但从未成功过,原因在于他们都是简单的使用普通项目,我怎么就看不懂,各种配置之间没有逻辑让我有点晕此次机会,我重新翻阅了一遍《Jenkins2.x实践指南》,不得不说,带着问题的看书让我效率非常高,一个小时左右我就明白该怎么做了这次我使用的是pipeline方式实现,因为这种方式更具逻辑性,前后连贯,容易理解。不过我们得考虑到团队内其他成员的知识储备,所以pipeline文件内的我加满了必要的注释,帮助其他人员快速理解

2022-07-04 18:17:33 1262

原创 Base64编码原理

base 64、base 32、base 16 编码建议标准 https://www.ietf.org/rfc/rfc4648.txtBase64是基于64种字符的编码算法,即将数据使用64种字符表示,编码后的Base64字符串长度 通常为原来的3-4倍。(补充:Base32就是32个字符,Base16就是16个字符,为了能在Http get 参数方式传输,有了变体URLBase64,主要是将符号=和+换成了其他字符,因为这些字符在url有特殊的意义,不能直接,所以做了替换) 即如下表,例如数字0(十进制

2022-06-26 15:07:36 2754

原创 JVM调优实践

首先肯定要配置好gc日志-XX:+PrintGCDetails 打印gc日志-XX:+PrintGCDateStamps 打印日志时间戳-Xloggc:D:\log\gc\gc-%t.log 将gc日志存储在指定位置-XX:+UseGCLogFileRotation 开启gc日志分割(避免单个gc文件太大)-XX:NumberOfGCLogFiles=14 gc文件分割数量(如果超过则覆盖写)-XX:GCLogFileSize=100M 单个gc日志文件大小(超过则新开文件)

2022-05-26 09:51:41 408

原创 系统流量预估、架构设计方案

QPS预估每日页面浏览次数 pv = ( 总用户量 * 20% ) * 每天大致点击次数峰值时间qps =( pv * 80% )/ (每天秒数【86400】 * 20%) * (冗余系数【一般2-5】)80%的请求在20%的时间里架构配置各个组件并发能力基线值LVS 10W qps Nginx 5w qps MQ 10w qps SpringCloudGateWay 5k qps Tomcat 1k qps MySQL 1.5k qps...

2022-05-19 21:14:22 985

原创 ThreadLocal内存泄漏问题讲解

一、首先回顾一下内存泄漏是什么:内存泄漏是指:程序已经不再使用某字段、某对象。但是却无法回收掉它占用的内存。两个关键点:不再使用 并且 无法回收二、为什么ThreadLocal会发生内存泄漏问题?2.1 问题发现以下是整体结构ThreadLocal就相当于一个访问工具类,通过操作ThreadLocal对象的方法 来操作存储在当前线程内部的ThreadLocalMap里的值ThreadLocalMap是一个哈希数组,key为ThreadLocal对象,Value为一个Objec

2022-04-09 18:03:11 2707 3

原创 ES ElasticSearch Connection reset by peer问题解决

问题现象程序隔一段时间不操作后,再请求es就会报错Connection reset by peer,之后连续几次操作都正常问题原因报这个错的原因是 因为服务端已经关闭了链接,但是客户端还在使用这个链接那为什么会出现这个问题?有以下两个问题组成1. 为什么服务端会关闭链接?服务器会有TCP的Keepalive 经过一段时间如果没有操作就会自动断开连接功能linux查看超时时间默认为两小时# 查看超时时间(单位秒)cat /proc/sys/net/ipv4/tcp_

2022-01-09 21:39:30 8837 11

原创 Linux安装MySQL8

1. 准备好压缩包百度云 链接:https://pan.baidu.com/s/1c_VlLfyDOzXjnMlrtbM_mA 提取码:1024官网https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.27-el7-x86_64.tar.gz2. 服务器解压 tar -zxvfmysql-8.0.26-el7-x86_64.tar.gz3. home目录下创建data文件夹4.vim /etc/my.cnf (...

2021-11-02 13:59:27 328

空空如也

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

TA关注的人

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