自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

jslzcydd的博客

为了更好的成长

  • 博客(48)
  • 收藏
  • 关注

原创 使用 docker-compose 部署和使用 Yapi

Yapi 就是一款高效、易用、功能强大的 api 管理平台,旨在为开发、产品、测试人员提供更优雅的接口管理服务。可以帮助开发者轻松创建、发布、维护 api,YApi 还为用户提供了优秀的交互体验,开发人员只需利用平台提供的接口数据写入工具以及简单的点击操作就可以实现接口的管理。本篇博客将介绍如何快速进行搭建 Yapi ,在 IDEA 开发工具安装 EasyYapi 插件,向 Yapi 系统发布接口文档。前提是安装好了 docker 和 docker-compose。# 验证Docker Compose。

2024-07-11 21:17:41 446

原创 关于线上问题CPU100%,频繁FullGC排查套路

因为之前在项目中有过类似的经历,最近想总结一些相关的知识点。如果是线上环境,其实我们可以依赖阿里开源的arthas来进行跟踪,。基于常规的情况下,我们在测试环境可以采用原生的一些Java自带的命令和工具进行问题的跟踪和排查。本文主要针对系统运行缓慢这一问题,提供该问题的排查思路,从而定位出问题的代码点,进而提供解决该问题的思路。对于线上系统突然产生的运行缓慢问题,如果该问题导致线上系统不可用,那么首先需要做的就是,导出 jstack 和内存信息,然后重启系统,尽快保证系统的可用性。

2024-02-27 15:56:14 1203

原创 postgresql和kingbase关于模糊查询大小写兼容问题

在mysql中,会有相关的like关键词,并且默认的是忽略大小写的。但是在postgresql和kingbase中,只有ilike关键字,并且默认是大小写敏感的。当我们使用mybatisplus的时候,默认提供的api也只有like()。这里提供一种方式来对原始api进行拓展。直接通过拦截器的方式,将select语句进行分析,当有like的时候将进行转为ilike。

2024-01-31 15:35:34 713

原创 redis stream结合springboot构造简单消息队列

专业的消息中间件,比如Apach Kafka有集群,副本和leader的概念, 每个节点(broker)数据改变都会往其他节点上更新副本, 这样的话,只要保证集群中数据最完整,响应速度最快的那个节点作为主节点(leader),就最大可能性保证数据不完整了。有一些场景是无法限制生产者生产速度的, 比如接受工厂机器传感器监控生产而定期传入的数据,这些数据是用来控制产品质量的,必须按照一定的并发量生产消息.增加多消费者的方式。支持消息确认机制(Ack),支持消息回朔,支持消息持久化,支持消息阻塞。

2024-01-31 15:13:31 2242 1

原创 redis详解- 过期删除策略和内存淘汰策略

假设 redis 里放了 10w 个 key,都设置了过期时间,你每隔几百毫秒,就检查 10w 个 key,那 redis 基本上就死了,cpu 负载会很高的,消耗在你的检查过期 key 上了。另外最重要的是,在获取某个键时,如果某个键的过期时间已经到了,但是还没执行定期删除,那么就会返回这个键的值,这是业务不能忍受的错误。缺点:对内存不友好,如果一个键已经过期,但是一直没有使用,那么该键就会一直存在内存中,如果数据库中有很多这种使用不到的过期键,这些键便永远不会被删除,内存永远不会释放。

2024-01-25 19:34:01 1030

转载 优化慢SQL:排查与解决

慢SQL是数据库性能优化中的一个重要方面,通过深入了解SQL查询的执行计划和性能瓶颈,我们可以采取一系列措施来提高查询效率。总体来说,建议从创建合适的索引、减少不必要的访问、使用覆盖索引等方面入手,同时根据具体场景进行SQL语句的改写和优化。未来,随着数据库技术的不断发展,我们还可以期待更多新的优化方法和工具的出现,帮助开发者更轻松地应对慢SQL的挑战,确保系统的稳定性和性能。创建合适的索引减少不必要访问的列使用覆盖索引语句改写数据结转选择合适的列进行排序适当的列冗余。

2024-01-25 19:19:21 263

原创 Redis 主从、哨兵和分片集群简单介绍

单节点 redis 并发能力有上限,要进一步提高 redis 并发能力,就要搭建,实现多节点集群

2024-01-09 21:39:32 973

原创 关于mysql8.0新特性的一些简单总结

在前面的文章中分享了一些mysql升级到8.0.x的一些实际做法,这里对mysql8.0.x的一些新特性或者是改良优化的地方做一些简单总结,可能涉及的方面不全或者个人理解不一样,见谅參考参考官网:MySQL :: MySQL 8.0 参考手册隐藏索引的特性对于性能调试非常有用。在 8.0 中,索引可以被“隐藏”和“显示”。当一个索引隐藏时,它不会被查询优化器所使用。也就是说可以隐藏一个索引,然后观察对数据库的影响。如果数据库性能有所下降,就说明这个索引是有用的,于是将其“恢复显示”即可;

2023-12-26 19:54:36 1226

原创 关于mysql8.0相关的升级

不知不觉,MySQL8.0已经有好多个GA小版本了。目前互联网上也有很多关于MySQL8.0的内容了,MySQL8.0版本基本已到稳定期,相信很多小伙伴已经在接触8.0了。本篇文章主要介绍从5.7升级到8.0版本的过程及注意事项,有想做版本升级的小伙伴可以参考下。

2023-12-26 14:06:44 1488

原创 关于redis单线程和IO多路复用的理解

首先,Redis是一个高性能的分布式缓存中间件。其复杂性不言而喻,对于Redis整体而言肯定不是只有一个线程。我们常说的Redis 是单线程,主要是指 Redis 在网络 IO和键值对读写是采用一个线程来完成的,这也是 Redis 对外提供键值存储服务的核心流程。但对于 Redis 的其他功能来说,比如持久化、异步删除、集群数据同步等,其实都是由额外的线程执行的。关于redis有几个基本的说辞:- 单线程- 基于内存操作,速度快- I/O 多路复用这里简单分析一下。

2023-12-22 17:26:42 1166

原创 Redis缓存穿透/击穿/雪崩以及数据一致性的解决方案

有关redis相关的,难免会涉及到四个特殊场景:缓存穿透、缓存雪崩、缓存击穿以及数据一致性。如果在开发中不注意这些场景的话,在高并发场景下有可能会导致系统崩溃,数据错乱等情况

2023-12-22 15:43:44 905

原创 Java的Set集合相关介绍

Set集合,可以去除重复元素。HashSet是基于HashMap实现的,使用组合的方式,并非继承。利用了HashMap的key不重复的特性,而value是一个默认空对象,其他方法也都是使用HashMap实现。LinkedHashSet继承自HashSet,而内部则是采用组合LinkedHashMap的方式实现的。LinkedHashSet在HashSet功能基础上,增加了按照元素插入顺序或者访问顺序的迭代方式,代价是额外增加一倍的存储空间。

2023-12-21 16:44:56 795

原创 SpringBoot 2.0 中默认 HikariCP 数据库连接池原理解析

本文首先对为什么使用数据库连接池做介绍,通过分析HiKariCP官网介绍及其源码,可以发现HiKariCP主要通过对字节码进行精简、优化代理和拦截器、自定义数组类型 FastList 及自定义并发集合类型 ConcurrentBag 等内容进行优化,文中重点讲解了FastList 与ConcurrentBag 的优化原理

2023-12-21 14:42:05 930

原创 关于ArrayList扩容机制的源码剖析及删除策略

在Java集合中,ArrayList是最常用到的数据结构,无论是在日常开发还是面试中,但是很多人对它的源码并不了解。下面提问几个问题,检验一下大家对ArrayList的了解程度。接下来一块分析一下ArrayList的源码,看完ArrayList源码之后,可以轻松解答上面四个问题ArrayList底层基于数组实现,可以随机访问,内部使用一个Object数组来保存元素。它维护了一个 elementData 数组和一个 size 字段,elementData数组用来存放元素,size字段用于记录元素个数。

2023-12-20 11:07:30 833

原创 源码角度简单介绍LinkedList

LinkedList底层是基于双向链表实现的,内部有三个属性,size用来存储元素个数,first指向链表头节点,last指向链表尾节点。// 元素个数// 头节点// 尾节点头尾节点都是由Node节点组成,Node节点表示双向链表,内部结构如下:// 存储元素数据E item;

2023-12-12 19:42:51 945

原创 Spring Boot业务代码中使用@Transactional事务失效总结

我们知道 Spring 声明式事务功能提供了极其方便的事务配置方式,配合 Spring Boot 的自动配置,大多数 Spring Boot 项目只需要在方法上标记 @Transactional注解,即可一键开启方法的事务性配置。当然后端开发人员对数据库事务这个概念并不陌生,也知道如果整体考虑多个数据库操作要么成功要么失败时,需要通过数据库事务来实现多个操作的一致性和原子性。

2023-12-12 12:31:05 1635

原创 关于mysql group by 执行原理和超大数据量查询优化介绍

关于MySQL中group by的执行流程和大数据量下的查询优化方案介绍

2023-12-11 11:15:49 1603

原创 JAVA定时任务技术总结

在日常的项目开发中,多多少少都会涉及到一些定时任务的需求。例如每分钟扫描超时支付的订单,每小时清理一次数据库历史数据,每天统计前一天的数据并生成报表,定时去扫描某个表的异常信息(最终一致性的方案也可能涉及),定时启用某个业务开关等等。下面对一些Java中常用的定时任务做一些简单的介绍。

2023-12-08 16:00:57 998

原创 Redis和MySQL双写一致性实用解析

关于Redis和MySQL出现的数据一致性问题方案分析

2023-12-07 11:13:04 1185

原创 关于对Spring事件监听机制相关解析

关于事件监听的源码

2023-12-06 11:35:33 1224

原创 关于对ArrayBlockingQueue 的AQS探究

AQS介绍

2023-12-05 11:21:25 939

原创 Hdfs梳理

Hdfs的文件自物理上是进行分块存储的,默认大小是128M,不足128M的则本身就是一块。例如一个300M的文件,会被分为3块,然后根据他内部算法将这3块分别放到不同的datanode机器进行存储,单个存储完成后再进行副本的复制,将某一台机器上的block复制到其他另外的节点(复制的数据根据配置的副本数,未配置的话默认就是3)所谓分布式文件系统,就是随着数据量越来越大,在一个操作系统存不下所有的数据,那么就分配到更多的操作系 统管理的磁盘中,但是不方便管理和维护,需要一种系统来管理多台机器上的文件。

2022-10-26 16:31:04 1355 1

原创 redisson锁的时间轮机制

Redisson是Redis官方推荐的Java版的Redis客户端。它提供的功能非常多,也非常强大,此处我们只用它的分布式锁功能。关于基本的用法不做赘述,简单看一下用法就好https://github.com/redisson/redisson添加redisson的配置和maven依赖<dependency> <groupId>org.redisson</groupId> <artifactId&gt.

2022-03-14 16:20:33 3357

原创 关于springboot访问tomcat,线程http-nio-8080-exec的来源问题

最近在看并发操作时候,例如jmeter进行接口压测(本地自己的springboot2的环境),发现一个有趣的现象,就是关于线程http-nio-8080-exec-1,http-nio-8080-exec-2等等的出现。但是这个线程数不管我的压测数是多少这个线程数不会超过10.抱着好奇的心去搜索了一下相关的文章,但是没有看到比较合适的。然后就只有自己去跟了一下源码。在此自己总结一下。两个问题:1、这个http-nio-8080-exec东西是怎么来的2、为什么这个线程数不超过10把这两个问题其

2022-03-12 16:01:33 22662 4

转载 Redisson连接redis单机和哨兵模式

从图中可以看出redisson对于不同的redis模式给出了不同的配置类MasterSlaveServersConfig SentinelServersConfig SingleServerConfig具体配置application.properties# redisson-single# redisson.address=redis://101.241.71.70:9090# redisson.password=123456# redisson-sentinelr

2022-03-10 14:41:39 4009 1

原创 关于缓存一致性和使用canal来解决的方案

在日常的项目开发中,有时候会遇到一些数据会进行缓存的情况,但同时数据库层面也会做相关的操作。原则上,对于一些实时性要求很高的数据,是不建议缓存的,这个意义是不大的。然后对于某些数据不管是先更新数据库再更新缓存,或者是先删缓存再更新数据库,都是有可能做到数据不一致的。为了达到最终一致性的话,其实大部分场景下,我们给数据加上过期时间就可以解决大部分的日常开发问题。如果对于数据的一致性要求很高,或者某些业务场景下,的确是要做这些事情的话,可以采用以下方案来解决。具体场景可以按照自己的项目结构进行方案一:延

2022-03-10 11:30:16 2293

原创 mybatis-plus的介绍和使用

**一、mybatis-plus简介:**Mybatis-Plus(简称MP)是一个 Mybatis 的增强工具,在 Mybatis 的基础上只做增强不做改变,为简化开发、提高效率而生。这是官方给的定义,关于mybatis-plus的更多介绍及特性,可以参考mybatis-plus官网。那么它是怎么增强的呢?其实就是它已经封装好了一些crud方法,我们不需要再写xml了,直接调用这些方法就行,就类似于JPA。在这里的是基于mp3.0版本来进行讲解的,2.0和3.0的使用差不多,只是一些API的名字不同

2021-09-09 18:14:08 1023

原创 关于postman更新后历史文件丢失的处理

今天在sign In后,发现之前保存的一些历史测试接口没有了,然后看了一下网上搜索也没有找打很合适的解决办法。然后自己试了一下,亲测可以。首先点击import然后如图,点击upload Files选择文件,然后选择C:\Users{用户名}\AppData\Roaming\Postman路径,在下面会看到很多json文件,这里就是你之前保存过的记录了。然后ctrl+左键选择多个。点击后然后import即可...

2021-08-23 17:11:27 10677 5

转载 spring Retry 相关介绍

什么时候用可以重试远程调用失败的可以重试 参校失败不应该重试 只读操作可以重试 幂等写操作可以重试 非幂等写操作不能重试(重试可能导致脏写,或产生重复数据)无状态(Stateless) 重试 无状态重试,是在一个循环中执行完重试策略,即重试上下文保持在一个线程上下文中,在一次调用中进行完整的重试策略判断。非常简单的情况,如远程调用某个查询方法时是最常见的无状态重试。 远程方法调用的时候不需要设置,因为远程方法调用是没有事务的。 有状态(Stateful) 重试有状态重试

2021-06-11 18:14:33 778

原创 关于orika做对象映射

一、Orika背景介绍    Orika是java Bean映射框架,可以实现从一个对象递归拷贝数据至另一个对象。在开发多层应用程序中非常有用。在这些层之间交换数据时,通常为了适应不同API需要转换一个实例至另一个实例。  有很多方法可以实现:硬代码拷贝或Dozer实现bean映射等。总之,需要简化不同层对象之间映射过程。  Orika使用字节码生成器创建开销最小的快速映射,比其他基于反射方式实现(如,Dozer)更快。之前使用Bean Copy 性能非常慢,发现在这个领域业界还是有很多...

2021-06-04 11:10:57 799

原创 关于Chrome浏览器安装elasticsearch-head插件

1.下载head包链接:https://pan.baidu.com/s/1buep_OX-E_EavG5GQ9GDFQ提取码:fnqv2.把下载好的 head包,单独减压到一个文件夹中。3.打开chrome,点击右上角的三个小点→更多工具→扩展程序→加载已减压的扩展程序→选择你第二步创建的文件注意不要进入文件内部。4.如图 点击5. 成功————————————————版权声明:本文为CSDN博主「秋风凉~」的原创文章,遵循CC 4.0 BY-SA版权协...

2021-04-20 15:26:40 481

原创 关于mysql explain的一些参数解释和用法

因为最近项目有在做mysql数据库相关的项目优化,优化的层面包含了代码结果的优化,SQL语句合理化的优化,以及数据库内存结果分析还有数据SQL语句的优化。大家应该都知道在mysql中的话,MySQL的EXPLAIN命令显示了mysql如何使用索引来处理select语句以及连接表。可以帮助选择更好的索引和写出更优化的查询语句。在此对这个做一个大概的总结。一、通过expalin可以得到1、表的读取顺序2、表的读取操作的操作类型3、哪些索引可以使用4、哪些索引被实际使用5、表之间的...

2021-03-26 13:50:33 282

原创 springcloud bus实现动态刷新

1.什么是Bus https://spring.io/projects/spring-cloud-bus springcloudbus使用轻量级消息代理将分布式系统的节点连接起来。然后,可以使用它来广播状态更改(例如配置更改)或其他管理指令。AMQP和Kafka broker实现包含在项目中。或者,在类路径上找到的任何springcloudstream绑定器都可以作为传输使用。 通俗定义: bus称之为springcloud中消息总线,主要用来在微服务系统中实现远端配置更新时通

2021-02-19 13:59:16 549

转载 Hystrix 用法及注解用法

Hystrix 用法及注解用法一、hystrix参数使用方法通过注解@HystrixCommand的commandProperties去配置,如下就是hystrix命令超时时间命令执行超时时间,为1000ms和执行是不启用超时@RestControllerpublic class MovieController { @Autowired private RestTemplate restTemplate; @GetMapping("/movie/{id}") @Hystr

2021-02-17 14:15:36 897

原创 关于解决后端重复提交的问题

之前在网上看过有很多种解决重复提交的方式,在这里我想做一种特别简单实用的方式,亲测有效。@RestControllerpublic class RedisTestController { @Autowired RedisTemplate redisTemplate; @GetMapping("/getRedisKey") public void getRedisKey()throws Exception{ InetAddress localHost =

2021-02-14 22:19:44 500 1

原创 关于解决Feign传递时缺少请求头信息和参数问题

当服务间用feign进行远程调用的时候。默认会出现缺少相关头信息的问题。例如Token或者cookie信息,因为在调用远程接口时,会进行RequestInterceptor的遍历,但是默认容器中是没有的,所以请求的头信息和请求参数都不会进行传递。我们可以通过实现RequestInterceptor注入容器,将请求相关信息进行传递来实现信息的转发。首先实现RequestInterceptor接口public class FeignBasicAuthRequestInterceptor impleme

2021-02-12 11:26:57 2105

原创 redis进行序列化和反序列化

在默认的情况下,springboot2.x整合redis之后,可以进行正常的保存数据了。但是缓存进去的对象类型数据是经过jdk默认序列化过后的,在可视化工具中是类似于乱码的格式,看起来非常不方便,所以需要进行格式化。在此我们可以采用Jackson2的方式来自定义序列化规则。因为在springboot初始化加载的时候,由于AutoConfiguration特性,会在spring容器中注入相关对象。@Configuration(proxyBeanMethods = false)@Conditio

2021-02-03 15:18:00 2484

原创 关于mysql中的数字类型的取值

关于mysql中的数字类型的取值截图:

2018-05-30 19:00:08 334

原创 关于在jaxb中处理null值的问题

今天在业务中遇到这样子的一个问题,然后就想考研分享一下。在生成xml的时候,如果xml对象的属性为null时,则最后的xml形式是为000010 其中的属性会被隐藏,但是我们要显示的时候,就可以将其null改变为” “形式的空字符串。 在这里我是用的设置监听的方式,并不需要去改原始的pojo类或者加什么注解之类,我觉得那样子反而要改动很多的东西,具体代码如下: 我是采用的内部类的方式, c...

2018-05-30 18:58:00 9375

原创 RabbitMQ的安装及和springboot的整合

Message Broker与AMQP简介Message Broker是一种消息验证、传输、路由的架构模式,其设计目标主要应用于下面这些场景:消息路由到一个或多个目的地消息转化为其他的表现方式执行消息的聚集、消息的分解,并将结果发送到他们的目的地,然后重新组合相应返回给消息用户调用Web服务来检索数据响应事件或错误使用发布-订阅模式来提供内容或基于主题的消息

2017-09-30 15:32:25 2019

空空如也

空空如也

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

TA关注的人

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