自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Java后端技术栈

未来的你在提醒你

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

原创 JAVA接口性能优化的 11 个技巧

优化索引。没错,优化索引的成本是最小的。你通过查看线上日志或者监控报告,查到某个接口用到的某条sql语句耗时比较长。这时你可能会有下面这些疑问:该sql语句加索引了没?加的索引生效了没?mysql选错索引了没?

2023-08-17 17:44:43 1027

转载 SpringBoot启动过程详解

这是一个扩展功能,callRunners(context, applicationArguments) 可以在启动完成后执行自定义的run方法;实现 ApplicationRunner 接口实现 CommandLineRunner 接口接下来我们验证一把,为了方便代码可读性,我把这2种方式都放在同一个类里面/*** 自定义run方法的2种方式*/@Component@Override。

2023-05-12 09:39:03 2236 1

原创 有状态和无状态登录

传统上用户登陆状态会以 Session 的形式保存在服务器上,而 Session ID 则保存在前端的 Cookie 中;而使用 JWT 以后,用户的认证信息将会以 Token 的形式保存在前端,服务器不需要保存任何的用户状态,这也就是为什么 JWT 被称为无状态登陆的原因,无状态登陆最大的优势就是完美支持分布式部署,可以使用一个 Token 发送给不同的服务器,而所有的服务器都会返回同样的结果。有状态和无状态最大的区别就是服务端会不会保存客户端的信息。

2024-04-26 08:53:50 244

原创 AOP动态修改注解值及异步子线程请求头丢失问题

4、多线程之--主线程结束,子线程无法获取主线程请求头信息 解决方案(实现ttl这个方式存当前请求的信息,然后去拿)1、动态注入参数:通过AOP注解占位符,匹配目标方法参数,可用于日志记录等场景。2、spel表达式匹配目标方法的参数进行动态入参。3、Java没有提供直接设置线程的上下文的对象。

2024-04-18 22:36:30 238 1

原创 maven问题汇总

其中url写成实际的地址:例如:http://hub.byd.com:9081/repository/maven-xxx-snapshot/

2024-04-17 19:35:13 473

原创 芋道框架讲解

官方文档:yudao-cloud 开发指南gitee:yudao-cloud: ruoyi-vue-pro 全新 Cloud 版本,优化重构所有功能。基于 Spring Cloud Alibaba + Gateway + Nacos + RocketMQ + Vue & Element 实现的后台管理系统 + 用户小程序,支持 RBAC 动态权限、多租户、数据权限、工作流、三方登录、支付、短信、商城、CRM、ERP 等功能。你的 ⭐️ Star ⭐️,是作者生发的动力!

2024-04-16 13:56:08 289

转载 SpringBoot之自定义starter

SpringBoot中的starter是一种非常重要的机制(自动化配置),能够抛弃以前繁杂的配置,将其统一集成进starter,应用者只需要在maven中引入starter依赖,SpringBoot就能自动扫描到要加载的信息并启动相应的默认配置。starter让我们摆脱了各种依赖库的处理,需要配置各种信息的困扰。SpringBoot会自动通过classpath路径下的类发现需要的Bean,并注册进IOC容器。

2024-04-16 10:32:33 19

转载 Springboot之Jasypt配置文件加密/解密

前言在大多数项目中,配置文件中的 mysql 数据库密码、redis 密码等其他敏感性密码都是以明文形式存在,这种配置本身没有任何问题,但是,在某些情况下,可能会对公司造成不可挽救的损失,比如:某一天,小明因为加班过度,头脑发昏,不小心把公司项目上传到自己的 GitHub 仓库里面了,导致的后果就是,公司数据库用户名密码泄露,被某些大佬加以利用…所以,基于上面这种情况,加入配置文件中数据库用户密码等其他敏感信息都是经过加密处理过的呢???是不是可以大概率避免这种情况。Jasypt 因此应运而生。

2024-04-16 09:26:21 340

转载 Jmeter 压测工具使用手册(完整版)

取当前时间_time,一些时间类的入参可以使用,如 {time (,)} 是生成精确到毫秒的时间戳、{time (/1000,)} 是生成精确到秒的时间戳、${__time (yyyy-MM-dd HHss,)} 是生成精确到秒的当前时间。如下图则是最低响应时间的值出现几率是很小的,实际 99% 的用户请求响应时间都要 20000+。无论要提取多少个值,引用名称就是一个的,比如名称为 id,${id_go}: 获取整个字符串 ab,${id_g1}:获取的是 a,${id_g2}:获取的是 b。

2024-04-16 08:41:00 24

转载 灰度发布实现

微服务中的灰度发布(又称为金丝雀发布)是一种持续部署策略,它允许在正式环境的小部分用户群体上先部署新版本的应用程序或服务,而不是一次性对所有用户同时发布全新的版本。这种方式有助于在生产环境中逐步验证新版本的稳定性和兼容性,同时最小化潜在风险,不影响大部分用户的正常使用。

2024-04-11 15:59:18 103

转载 Flowable常用网关使用介绍

并行网关允许将流程分成多条分支,也可以把多条分支汇聚到一起,并行网关的功能是基于进入和外出顺序流的。并行后的所有外出顺序流,为每个顺序流都创建一个并发分支。所有到达并行网关,在此等待的进入分支, 直到所有进入顺序流的分支都到达以后, 流程就会通过汇聚网关。排他网关,也叫异或网关,用于对流程中的决策建模。当执行到达这个网关时,会按照所有出口顺序流定义的顺序对它们进行计算。和排他网关一样,你可以在外出顺序流上定义条件,包含网关会解析它们。业务1、业务2都处理,并且当业务1、业务2都完成后才会汇聚走下面的。

2024-04-10 09:19:57 54

转载 Flowable主要容器介绍

我们通常意义上说的子流程通常就是指的内嵌子流程,它表现为将一个流程(子流程)定义在另一个流程(父流程)的内部,子流程作为父流程的一部分。子流程是主流程中的一部分流程片段,并非独立的流程定义,一般作为局部通用逻辑处理,或者因为特定业务需要,使比较复杂的单个主流程设计清晰直观。调用活动可以引用流程定义外部的流程,当执行到调用活动时启动引用的外部流程,当外部流程执行完后转到当前流程下一节点。和内嵌子流程类似,把一系列的活动归结到一起处理,不同之处在于事件子流程不能直接启动,要被动地由其它的。

2024-04-10 09:15:41 14

转载 flowable可使用元素介绍

external-worker服务任务允许您在Flowable流程引擎中执行外部任务,并与外部服务进行交互。可以将Flowable流程与外部应用程序或服务集成,并在流程执行期间调用外部服务的API。Camel服务任务允许您向Camel发送消息并从Camel接收消息。DMN是一种业务决策模型和语言,它用于描述业务决策的图形表示。DMN服务任务允许您在流程中嵌入DMN决策逻辑。Camel是一种简单的连接不同的应用程序和服务。Mule服务任务允许你发送消息给Mule。Mule是一个基于ESB架构的消息平台。

2024-04-10 09:14:15 16

转载 Flowable主要API介绍

ProcessMigrationService是Flowable引擎中的一个服务接口,用于支持流程实例的迁移和升级。ManagementService是Flowable引擎中的一个服务接口,用于管理和操作引擎的一些管理任务和操作。RuntimeService是Flowable引擎中的一个服务接口,用于管理流程实例的运行时状态和相关操作。TaskService是Flowable引擎中的一个服务接口,用于处理任务相关的操作和数据。引擎中的服务之一,用于管理流程定义的部署和查询。表结构不存在则会创建。

2024-04-10 09:12:18 83

转载 存储过程学习,很全很细,有语法 | 有例子 | 批量造数据100万 | 附件带脚本

存储过程其实很简单,就是数据库SQL脚本层面的代码封装与重用,创建编译并保存在数据库中。

2024-04-08 09:25:12 42

转载 Github Gitee Java开发 热门中后台开源项目

架构师技术图谱可扩展,可靠且高性能的大型系统背后的模式12个低代码开源项目

2024-03-28 14:54:50 49

转载 常见系统简写含义

OMS (订单管理系统)OMS系统可实现单次及批量订单,订单管理与库存管理相连接,并且在下订单时有库存预警及提示功能,订单管理同时与客户管理相连接,可查询历史订单情况以及订单的执行情况WMS (仓储管理系统)WMS仓储管理系统中的软件指的是支持整个系统运作的软件部分,包括收货处理、上架管理、拣货作业、月台管理、补货管理、库内作业、越库操作、循环盘点、RF操作、加工管理、矩阵式收费等TMS (运输管理系统)

2024-03-15 17:14:59 48

转载 Flowable集成Springboot

为啥想写flowable呢?原因很简单,因为最近在录的 tienchin 项目视频会用到,先写一篇文章和大家打打预防针,后面视频再细讲。流程引擎,也算是一个比较常见的工具了,我们在日常的很多开发中都会用到,当然用的最多的就是 OA 系统了,但是在一些非 OA 系统中,我们也会涉及到,比如一个 CRM 中,可能会有合同管理的需求,合同的审批,也是需要流程引擎的。所以今天我们来简单聊聊流程引擎,顺便写一个简单的例子,小伙伴们一起来感受下流程引擎到底是个啥。

2024-02-22 16:28:39 121

原创 CSDN第四个年头(选择没有对错,错的也要变成对的)

提示:你过去写得最好的一段代码是什么?提示:当前创作和你的工作、学习是什么样的关系。提示:可以和大家分享最初成为创作者的初心。提示:在创作的过程中都有哪些收获。提示:职业规划、创作规划等​​。

2024-02-22 15:06:41 466 1

转载 一文学会Java并发编程 Future、CompletableFuture

thenRun 也是对线程任务结果的一种消费函数,与thenAccept不同的是,thenRun 会在上一阶段 CompletableFuture 计算完成的时候执行一个Runnable,Runnable并不使用该 CompletableFuture 计算的结果。你可以把它看成一个计算流水线上的一个单元,并最终会产生一个最终结果,这意味着几个CompletionStage 可以串联起来,一个完成的阶段可以触发下一阶段的执行,接着触发下一次,再接着触发下一次,……从某种程度上说,这项能力是它的核心能力。

2024-01-31 15:25:11 90

转载 各种读取resources目录下文件的方法

我们写使用java写web项目时,有时需要将某些文件存放到resources目录下,之后我们需要在程序中去获取文件。如果是文件路径的话getFile和getPath效果是一样的,如果是URL路径的话getFile是带有参数的路径。这个命令去获取resource的路径,下面我打断点,可以看到resource的内容,里面有file,path。注意:有的可以在web项目中使用,有的则不可以在web项目中使用。现在主流的部署方式是将项目打成jar包部署。所以我们就要通过流的方式去获取文件。

2024-01-24 15:44:57 325

转载 Springboot集成Actuator和SpringbootAdminServer监控

Spring Boot Actuator可以帮助你监控和管理Spring Boot应用,比如健康检查、审计、统计和HTTP追踪等。所有的这些特性可以通过JMX或者HTTP endpoints来获得。Actuator同时还可以与外部应用监控系统整合,比如PrometheusGraphiteDataDogInfluxWavefrontNew Relic等。这些系统提供了非常好的仪表盘、图标、分析和告警等功能,使得你可以通过统一的接口轻松的监控和管理你的应用。示例:"db": {},},

2023-12-19 13:53:57 185

转载 CommandLineRunner、ApplicationRunner、ApplicationListener、@PostConstruct对比

1、一些比较独立,内容小巧的初始化逻辑,不影响springboot启动速度的使用@postConstruct注解2、若想通过ApplicationListener事件监听的方式,则需要处理好指定的容器、3、在数据初始化层面,不推荐@PostConstruct和ApplicationListener,原因是两者都会影响程序的启动,如果执行逻辑耗时很长,启动服务时间就很长。

2023-12-14 23:36:53 316

原创 springboot集成阿里云短信服务

Springboot整合阿里云短信服务_spring boot集成阿里短信验证码-CSDN博客

2023-12-05 13:10:29 574

转载 Skywalking

Skywalking全链路追踪使用说明-CSDN博客全网最全的Skywalking链路追踪-CSDN博客三、SpringBoot工程集成Skywalking。

2023-11-23 14:30:28 85

转载 springboot使用编程式事务

1.事务的定义包含:事务的隔离级别、事务的传播属性、超时时间设置、是否只读红线上方是些常量定义,关于常量定义(事务的隔离级别和事务的传播属性等等)具体事务常量定义//略复制事务的传播属性为,如果存在一个事务,则支持当前事务。如果没有事务则开启一个新的事务。被设置成这个级别时,会为每一个被调用的方法创建一个逻辑事务域。如果前面的方法已经创建了事务,那么后面的方法支持当前的事务,如果当前没有事务会重新建立事务,其他请看事务的传播属性事务的隔离级别采用底层数据库默认的隔离级别超时时间。

2023-11-23 14:08:26 745

原创 四种常见分布式限流算法实现!

我们可以看到,计数器类的限流,体现的是一个“戛然而止”,超过限制,立马决绝,但是有时候,我们可能只是希望请求平滑一些,追求的是“波澜不惊”,这时候就可以考虑使用其它的限流算法。固定窗口算法的优点是实现简单,占用空间小,但是它存在临界问题,由于窗口的切换是瞬间完成的,因此请求的处理并不平滑,可能会在窗口切换的瞬间出现流量的剧烈波动。这里还有一个小的可以完善的点,zset在member相同的情况下,是会覆盖的,也就是说高并发情况下,时间戳可能会重复,那么就有可能统计的请求偏少,这里可以用。

2023-11-08 16:01:43 813

原创 性能诊断工具对比+Prometheus(普罗米修斯)监控系统学习

【精选】Prometheus(普罗米修斯)监控系统_普罗米修斯监控_愿许浪尽天涯的博客-CSDN博客

2023-10-27 16:48:29 1143

转载 StopWatch—— 优雅的程序计时器

StopWatch在Spring,Apache,hutool的工具包中都有,里边的实现原理都差不多,只不过有一些API的调用和使用不太一样。我们先来看一下StopWatch的使用:相信看过SpringBoot源码// 声明一个StopWatch实例//任务启动……// 任务停止看SpringBoot的例子可以知道,StopWatch的使用基本分为三步:创建实例,启动,停止。但是作为spring的工具类,StopWatch会这么简单吗?当然不会。

2023-10-18 11:34:42 359

转载 @ServletComponentScan和@ComponentScan 注解

4、@Component (把普通pojo实例化到spring容器中,相当于配置文件中的<bean id="" class=""/>)泛指各种组件,就是说当我们的类不属于各种归类的时候(不属于@Controller、@Service等的时候),我们就可以使用@Component来标注这个类。包扫描会扫描只要标注了@Controller,@Service,@Repository,@Component这四个注解都会被扫描到容器中。用于标注数据访问层,也可以说用于标注数据访问组件,即DAO组件.

2023-10-16 17:39:37 552

转载 教你提高接口性能的18种方案

本文我们介绍了,优化接口的18种方案。

2023-10-12 17:15:04 659 1

转载 Logger.error方法之打印错误异常的详细堆栈信息

当使用两个参数error(String message, Throwable t),且第二个参数为Throwable时,才会将完整的异常堆栈打印出来。特性,当只输入一个参数时,此对象会被当做Object进行打印输出,如果是Exception e的话,这里直接就toString()。Logger类下有多个不同的error方法,根据传入参数的个数及类型的不同,自动选择不同的重载方法。根据方法重载特性,当第二个参数为Throwable时,会打印出异常信息,并且包含异常堆栈信息。使用Logger.erro。

2023-10-11 10:32:23 1658

转载 高并发下如何提高“锁”性能?

在项目中,尤其是电商或者做游戏开发的,高并发是必然的,但在高并发的环境下,大家会经常使用到锁。“锁” 是最常用的同步方法之一。但激烈的锁竞争会导致程序的性能下降,严重的甚至能导致 “死锁”的产生。这个时候,可能会有小伙伴会说,可以使用多线程啊。使用多线程的确可以明显地提高系统的性能。但事实上,使用多线程的方式会额外增加系统的开销。对于多线程应用来说, 系统除了处理功能需求外,还需要额外维护多线程环境的特有信息,如线程本身的元数据、线程的调度、线程上下文的切换等。

2023-10-08 17:37:27 78

转载 MongoDB学习

MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。MongoDB服务端可运行在。

2023-09-27 09:01:56 241

原创 ​K8s中yaml文件详解(超详细)​

上述例子中,使用两个空格作为缩进,但空格的数据量并不重要,只是至少要求一个空格并且所有缩进保持一致的空格数。除了上述的基本属性外,还能够指定复杂的属性,包括容器启动运行的命令、使用的参数、工作目录以及每次实例化是否拉取新的副本。注:上述的YAML文件中,metadata这个KEY对应的值为一个Maps,而嵌套的labels这个KEY的值又是一个Map。上述例子只是一个简单的最小定义:一个名字(front-end)、基于nginx的镜像,以及容器将会监听的指定端口号(80)。YAML对用户更加友好。

2023-09-20 17:29:23 1983

转载 kubernetes之helm简介、安装、配置

在我们yum管理工具,主要解决的是包之间的依赖问题,而我们的helm工具是安装服务的问题,在我们的k8s中的包管理工具helm,它可以通过一些仓库去下载一些我们想要yalm文件,我们去修改这些yalm文件对应的属性就可以安装对应我们想要的系统信息。Helm是kubernetes生态系统中的一个软件包管理工具,类似ubuntu的apt,centos的yum或python的pip一样,专门负责管理kubernetes应用资源;

2023-09-20 16:13:30 1231

转载 开源协议比较(BSD,Apache,GPL,LGPL,AGPL,MIT)

BSD开源协议是一个给于使用者很大自由的协议。基本上使用者可以”为所欲为”,可以自由的使用,修改源代码,也可以将修改后的代码作为开源或者专有软件再发布。如果再发布的产品中包含源代码,则在源代码中必须带有原来代码中的BSD协议。如果再发布的只是二进制类库/软件,则需要在类库/软件的文档和版权声明中包含原来代码中的BSD协议。不可以用开源代码的作者/机构名字和原来产品的名字做市场推广。BSD 代码鼓励代码共享,但需要尊重代码作者的著作权。

2023-09-17 18:34:38 1308

转载 JAVA的16 个实用代码优化小技巧

而使用 KeySet 方法,获得的是key 的集合,需要再进行一次 get 操作,多了一个操作步骤,所以更推荐使用 EntrySet 方式遍历 Map。当这些对象存入 HashMap 时,性能就会非常低,因为 HashMap 是通过 HashCode 定位到 Hash 槽,有冲突的时候,才会使用链表或者红黑树组织节点,固定地返回 0,相当于把 Hash 寻址功能无效了。由于堆资源是多线程共享的,是垃圾回收器工作的主要区域,过多的对象会造成 GC 压力,可以通过局部变量的方式,将变量在栈上分配。

2023-08-18 13:51:51 421

原创 性能调优思路

这类题型在面试中或者实战中都是一个很有深度的题目今天单独拎出来深度探讨一下主要的QPS每秒钟request/事务 数量.也就是每秒请求数,就是说服务器在一秒的时间内处理了多少个请求。以下解释来源于百度百科:每秒查询率(QPS,Queries-per-second)是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准,在因特网上,作为域名系统服务器的机器的性能经常用每秒查询率来衡量。区分TPS的概念:一个事务是指一个客户机向服务器发送请求然后服务器做出反应的过程。

2023-08-17 17:46:28 1143

原创 死锁的排查、OOM排查

4、jmap -dump:live,format=b,file=dump3.hprof pid ,使用jmap dump内存快照。3、如果是OOM,用jstat -gc pid 1000 100(每秒)监控JVM内存运行状况和gc频率。1、使用top命令看一下线上的CPU、内存是否正常。5、使用MAT工具进行分析。2、定位异常进程,看日志。

2023-08-17 17:28:01 94

尚硅谷RabbitMQ pdf笔记(优质文档)

尚硅谷RabbitMQ pdf笔记(优质文档)

2023-12-15

空空如也

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

TA关注的人

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