![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
ATP应用测试平台
文章平均质量分 71
厉害哥哥吖
呼哧呼哧三碗饭。。。
展开
-
(四)延时任务篇——redisson实现延迟任务实战
上一节内容中介绍了如何使用redis的zset结构实现延迟任务的实战内容,从使用角度来说还是略显繁琐,而且定时任务的方式扫描redis获取过去的任务也会存在任务空转的问题。在此基础上,我们可以使用redisson的阻塞队列,完成延迟任务的实战场景。原创 2024-07-31 19:43:27 · 319 阅读 · 0 评论 -
(三)延时任务篇——通过redis的zset数据结构,实现延迟任务实战
在前一篇内容中我们介绍了如何使用redis key过期失效的监控,完成任务延时关闭的功能,同时官方并不支持使用此种方式实现,由于其安全性较低,存在数据丢失的情况。本节内容是对延迟任务的又一实现方案,通过redis zset的数据结构完成延迟任务。使用一个常量order作为key,订单id作为value值,任务的过期时间作为score值,通过定时任务取前100名的数据,比较score值和当前时间的大小,如果该值小于当前时间,则证明该订单已过期,完成关单的操作,并将该订单数据在redis中删除。原创 2024-07-30 20:20:50 · 423 阅读 · 0 评论 -
(二)延时任务篇——通过redis的key监听,实现延迟任务实战
本节内容是关于使用redis的过期key,通过开启其监听失效策略,模拟订单延迟任务的执行流程。其核心原理是通过使用redis订阅与发布的方式,将过期失效的key通过广播的方式,发布给客户端,客户端可以监听此消息进而消费消息。需要注意的是官方并不推荐此方式,因为其容易造成数据丢失,例如没有客户端消费消息,消息也会丢失。对于一些安全性要求比较低的场景,可以使用此方式实现延迟队列。原创 2024-07-29 19:38:14 · 505 阅读 · 0 评论 -
(二十一)springboot实战——Spring AI劲爆来袭
Spring AI 是一个面向人工智能工程的应用框架。其目标是将 Spring 生态系统的设计原则,如可移植性和模块化设计,应用到人工智能领域,并推广使用普通的Java对象(POJOs)作为构建应用程序的基础。原创 2024-05-05 15:21:14 · 2594 阅读 · 4 评论 -
(十二)springboot实战——SSE服务推送事件案例实现
SSE(Server-Sent Events,服务器推送事件)是一种基于HTTP协议的服务器推送技术。它允许服务器向客户端发送异步的、无限长的数据流,而无需客户端不断地轮询或发起请求。这种技术可以用来实现实时通信、在线聊天、即时更新等功能。使用SSE时,客户端通过简单的HTTP请求与服务器建立连接,并在连接保持打开的情况下接收服务器发送的数据。服务器可以随时向客户端发送新的数据(以文本格式),并在数据前面添加特定的标识符,以便客户端能够正确地解析数据。原创 2024-02-02 16:09:08 · 4335 阅读 · 0 评论 -
(十一)springboot实战——springboot3下关于WebFlux项目的一些常用功能整合
本节内容主要是对webflux项目一些常用功能的介绍,例如系统集成swagger接口文档,方便接口测试以及前后端项目联调测试;使用actuator完成系统各种指标的监控功能;系统使用logback日志框架完成项目日志的收集;使用过滤器WebFilter完成一些初始化验证;使用CorsWebFilter解决系统的跨域问题;使用AOP切面实现功能方法操作日志的打印等。原创 2024-01-31 15:50:26 · 1101 阅读 · 0 评论 -
(十)springboot实战——springboot3下的webflux项目mysql数据库事务处理
WebFlux 是 Spring Framework 5.0 中引入的一种新型反应式编程模型,支持非阻塞 I/O,适用于高并发、高吞吐量的应用程序。本节内容以关系型数据库mysql为例,通过使用R2DBC框架完成关系型数据库的调用,并会通过具体的案例实现webflux应用下的数据库事务管理,并包含最佳的使用实战案例,通过spring的AOP实现最终的事务控制。原创 2024-01-30 16:01:18 · 2599 阅读 · 1 评论 -
(九)springboot实战——springboot3下的webflux项目参数验证及其全局参数验证异常处理
在上一节内容中,我们介绍了如何在webflux项目中自定义实现一个全局的异常处理器ErrorWebExceptionHandler,正常情况下其可以处理我们系统的运行时异常,但是无法处理参数验证的异常WebExchangeBindException,所以这里提供另外的全局异常处理方式,通过注解@ExceptionHandler实现参数验证的全局异常处理。原创 2024-01-29 14:31:57 · 909 阅读 · 0 评论 -
(八)springboot实战——springboot3下的webflux项目全局异常处理
在webflux响应式编程中,如何处理系统运行时异常是本节的主要内容。在传统的Servlet阻塞式web项目中主要通过HandlerExceptionResolver处理器来处理,而在webflux响应式web项目中,则是通过DispatchExceptionHandler异常处理器来处理异常。由于大量的异常可能在运行过程中产生,针对业务方法单个处理显然不是最优的选项。原创 2024-01-26 16:31:54 · 1268 阅读 · 0 评论 -
(七)springboot实战——springboot3集成R2DBC实现webflux响应式编程服务案例
本节主要内容是关于使用新版springboot3集成响应式数据库R2DBC,完成响应式web服务案例。需要注意的是,此次项目使用的JDK版本是JDK17,springboot版本使用3.2.2版本。WebFlux 是一个基于响应式编程模型的框架,适用于构建异步、非阻塞的高性能 Web 应用程序。它具有高并发能力、函数式编程风格、与其他 Spring 框架的集成能力等优势,可以满足对性能要求高或需要处理大量并发请求的场景。原创 2024-01-26 11:42:12 · 1492 阅读 · 4 评论 -
(二十八)ATP应用测试平台——使用electron集成vue3桌面应用程序
Electron 是一个开源的框架,它允许使用 Web 技术(HTML、CSS 和 JavaScript)构建跨平台的桌面应用程序。通过 Electron,开发者可以使用前端技术栈来创建具有原生应用程序体验的桌面应用。原创 2024-01-24 17:59:33 · 1539 阅读 · 1 评论 -
(二十七)ATP应用测试平台——基于mybatisplus和aop切面实现数据权限隔离的案例实战
在实际项目开发中,我们经常会用到俩种权限,一种是功能权限,一种是数据权限。功能权限主要是用来限制用户的操作,而数据权限是限制用户能查看到哪些数据。功能权限我们可以使用流行的框架shiro或者spring-security实现,本节内容不做介绍。关于数据权限,我们可以根据项目的需求逐个在查询条件处添加,这也是最容易想到的方案。本节内容我们提供一种更加灵活和低耦合的方式实现数据权限过滤。核心思想就是通过底层的拦截器,将数据权限的过滤条件在底层查询操作开始之前添加,这样就可以根据实际需求完成数据的过滤。原创 2023-11-10 10:28:08 · 802 阅读 · 0 评论 -
(五)库存超卖案例实战——使用zookeeper分布式锁解决“超卖”问题
本节内容使用zookeeper实现分布式锁,完成并发访问“超卖”问题的解决。相对于redis分布式锁,zookeeper能够保证足够的安全性。关于zookeeper的安装内容这里不做介绍,开始本节内容之前先自行安装好zookeeper中间键服务。这里我们利用创建zookeeper路径节点的唯一性实现分布式锁。并同时演示如何使用Curator工具包,完成分布式锁。原创 2023-11-01 12:32:44 · 337 阅读 · 0 评论 -
(四)库存超卖案例实战——优化redis分布式锁
在上一节内容中,我们已经实现了使用redis分布式锁解决商品“超卖”的问题,本节内容是对redis分布式锁的优化。在上一节的redis分布式锁中,我们的锁有俩个可以优化的问题。第一,锁需要实现可重入,同一个线程不用重复去获取锁;第二,锁没有续期功能,导致业务没有执行完成就已经释放了锁,存在一定的并发访问问题。本案例中通过使用redis的hash数据结构实现可重入锁,使用Timer实现锁的续期功能,完成redis分布式锁的优化。最后,我们通过集成第三方redisson工具包,完成分布式锁以上俩点的优化内容。R原创 2023-10-27 17:35:22 · 835 阅读 · 0 评论 -
(三)库存超卖案例实战——使用redis分布式锁解决“超卖”问题
在上一节内容中我们介绍了如何使用mysql数据库的传统锁(行锁、乐观锁、悲观锁)来解决并发访问导致的“超卖问题”。虽然mysql的传统锁能够很好的解决并发访问的问题,但是从性能上来讲,mysql的表现似乎并不那么优秀,而且会受制于单点故障。本节内容我们介绍一种性能更加优良的解决方案,使用内存数据库redis实现分布式锁从而控制并发访问导致的“超卖”问题。关于redis环境的搭建这里不做介绍,可查看作者往期博客内容。原创 2023-10-25 16:08:11 · 820 阅读 · 0 评论 -
(二)库存超卖案例实战——使用传统锁解决“超卖”问题
在上一节内容中,我们详细介绍了超卖问题产生的原因,以及在单应用的项目中,如何解决超卖的问题——通过jvm本地锁控制并发访问从而解决“超卖问题”。同时我们也提出本地锁只能解决单应用服务的超卖问题,本节内容我们话接上篇,使用传统锁的方式解决在多应用服务访问中的并发问题。主要是通过mysql的乐观锁和悲观锁解决解决并发问题。原创 2023-10-23 14:52:35 · 233 阅读 · 0 评论 -
(一)库存超卖案例实战——库存超卖现象的产生及其解决方案概述
本节内容我们主要介绍一下web应用中常见的一类问题——产品“超卖”问题,通过一个springboot项目案例完成超卖现象的演示,并针对不同的应用场景下,提供这一类问题的解决方案,关于更详细的解决方案案例实战内容,请关注作者后期的博客内容。原创 2023-10-20 16:50:54 · 339 阅读 · 0 评论 -
(二十六)ATP应用测试平台——将一个微服务打包成含skywalking链路追踪的docker镜像
延续前面的章节内容,本节内容我们以ht-atp的springboot应用为例,封装一个包含skywalking链路追踪的微服务docker应用。完成服务调用的链路追踪监控。采用字节码注入的方式实现代码的无侵入,探针采集数据粒度粗,但性能表现优秀,且对云原生支持。skywalking基于字节码注入的调用链路分析以及应用监控分析工具,特点是支持多种插件,UI功能较强,接入端无代码侵入。原创 2023-05-19 18:05:12 · 922 阅读 · 0 评论 -
(二十五)ATP应用测试平台——springboot集成knife4j实现API接口文档说明
原生的swagger文档虽然也可以作为API文档输出,但是不够简洁优美,本节内容我们主要介绍一下knife4j组件,该组件是对swagger API文档的二次封装,使用API文档更加简洁明了,无论是入参还是结果响应,都有清晰的说明,而且可以保留缓存,方便刷新文档后继续保留之前的操作。原创 2023-02-23 15:32:42 · 541 阅读 · 0 评论 -
(二十四)ATP应用测试平台——springboot集成fastdfs上传与下载功能
本节内容我们主要介绍一下如何在springboot项目中集成fastdfs组件,实现文件的上传与下载。关于fastdfs服务中间键的安装过程,本节内容不做介绍。fastdfs是一个轻量级的分布式文件系统,也是我们文件存储中常常使用的组件之一,主要包括文件存储、文件同步、文件访问,实现了文件存储和负载均衡的问题。原创 2023-02-17 13:19:31 · 927 阅读 · 2 评论 -
(二十三)ATP应用测试平台——阿里云短信发送功能集成
本节内容我们主要介绍如何使用阿里云短信服务实现应用系统的短信发送,需要我们在阿里云短信平台提前申请好短信发送模板,以及短信签名、accessKey和accessSecret等资料,这里我们以发送短信验证码为例,实现短信消息的发送。原创 2023-02-14 16:46:18 · 583 阅读 · 0 评论 -
(二十二)ATP应用测试平台——swagger2集成swagger-bootstrap-ui实现API文档访问
原生的swagger文档虽然也可以作为API文档输出,但是不够简洁优美,本节内容我们介绍一下swagger-bootstrap-ui组件,实现对swagger API文档的二次封装,使用API文档更加简洁明了,无论是入参还是结果响应,都有清晰的说明,而且可以保留缓存,方便刷新文档后继续保留之前的操作。原创 2023-02-07 17:51:41 · 512 阅读 · 0 评论 -
(二十一)ATP应用测试平台——vue实战之大红灯笼高高挂
2022年的最后一天班,好的开始,好的结束。把大红灯笼高高挂起来,欢度元旦的到来,兔年的到来。明年再战。原创 2022-12-30 18:02:53 · 222 阅读 · 0 评论 -
(二十)ATP应用测试平台——websocket实现微服务版在线客服聊天室实战案例
在前面的博客内容中我们介绍了如何使用websocket实现一个网页版的在线客服聊天室,众所周知,由于websocket是一个长连接,要和服务端保持会话连接,所以其本身并不适用于微服务环境,在微服务环境中,有可能A、B俩个客户端连接到不同的服务A、B中,这样就没法保证A、B俩个客户端完成聊天的功能,因为会话不在同一台服务器上,A、B无法感知到对方发送的消息,为了解决websocket单机的这个痛点,我们引入消息中间键RocketMQ的广播机制,实现消息的转发,从而实现微服务版的websocke聊天室功能。原创 2022-11-04 22:11:17 · 1871 阅读 · 0 评论 -
(十九)ATP应用测试平台——springboot集成RocketMQ案例实战
本节内容是关于RocketMQ消息中间键的实战内容,主要介绍在springboot项目中如何集成使用RocketMQ消息中间键,包括消息的发送、消息的接收以及RocketMQ的一些配置说明,以及效果说明。话不多说,开始实战内容。原创 2022-10-20 18:57:52 · 1032 阅读 · 0 评论 -
(十八)ATP应用测试平台——关于springboot应用监控的那些事
本节内容我们主要介绍一下springboot应用的常见应用参数监控指标,从而更好的关注springboot应用的运行状况并实现应用的监控。除此之外,我们通过集成一个第三方的监控平台,通过图形化的界面实时观测我们运行项目的一些实时运行参数指标。原创 2022-09-26 21:30:32 · 326 阅读 · 0 评论 -
(十七)ATP应用测试平台——Redis实现API接口访问限流(固定窗口限流算法)
本节内容我们使用redis实现接口API的访问限流,这里提供spring的interceptor拦截器和aop切面俩种方式实现接口api的细粒度限流,根据实际情况,选择一种方式即可。说到限流我们前面已经介绍过在微服务中使用阿里巴巴的产品sentinel实现限流,sentinel是功能更加强大限流产品。本节内容我们是基于redis自身的一些特性实现限流,相对来说还是一种比较通俗易懂的实现限流方式原创 2022-06-02 12:00:54 · 683 阅读 · 1 评论 -
(十七)ATP应用测试平台——自定义实现一个springboot2的线程池启动器starter
启动器是springboot的一大特点,我们可以根据项目自身需求按需装配我们的组件。例如我们需要操作redis,项目中可以添加一个redis的启动器spring-boot-starter-data-redis,这样redis的一些客户端操作功能我们就集成好了,不用在繁琐的集成redis客户端的依赖,启动器会帮我们加载一切我们所需要的包。既然这么方便,那么我们如何定制自己的项目启动器呢?请看下文。。。原创 2022-05-07 14:44:42 · 515 阅读 · 2 评论 -
(十六)ATP应用测试平台——java应用中的过滤器Filter、拦截器Interceptor、参数解析器Resolver、Aop切面,你会了吗?
前言过滤器Filter、拦截器Interceptor、参数解析器Resolver、Aop切面是我们应用开发中经常使用到的技术,到底该如何使用这些web附属功能, 本小节我们就分别介绍一下其各自的用法及其应用场景。正文过滤器过滤器Filter是依赖于servlet存在的一种对web资源预处理的一种手段,不依赖于spring容器启动,是一种独立的web资源预处理器。能够对动静态资源统一拦截,统一过滤,springsecurity中就有用到过滤器的统一拦截功能,实现访问权限资源的控制。其是一种粗原创 2022-02-21 19:08:31 · 1325 阅读 · 0 评论 -
(十五)ATP应用测试平台——使用JustAuth快速集成前后端分离的第三方扫码授权登录功能
通过使用JustAuth我们可以快速的集成我们第三方的一些扫码登录功能,其本质是对于各种第三方扫码功能的封装,我们也可以按照自己的需求自行封装,原则上都是调用第三方认证中心的授权接口,完成授权功能,获取到第三方的用户信息。本节我们通过java反射机制获取我们的第三方授权实例对象,并通过前端定时器定时更新我们的二维码,并实时检测扫码登录的回调结果,从而实现前后端分离的扫码登录功能。正文结语原创 2022-01-18 08:01:10 · 1708 阅读 · 0 评论 -
(十四)ATP应用测试平台——使用docker-compose一键式安装ATP应用测试平台的依赖服务
前言关于ATP应用服务测试平台的相关内容已经更新不少,下载项目的小伙伴第一时间一定是想着怎么把这个平台项目跑起来,看下小编花里胡哨的效果是否能正常show。不过由于依赖的增多,项目的服务也随之多了起来,例如为了测试mysql的主从集群读写分离,需要安装mysql的主从服务器,为了测试redis的哨兵模式及分布式锁机制,需要安装一套redis集群,为了测试消息中间键kafka分发消息,需要安装zookeeper集群与kafka集群,由于这些服务的增加,测试环境的搭建也随之复杂了起来。为了解决这个痛点,小编原创 2021-11-18 10:52:55 · 3212 阅读 · 0 评论 -
(十三)ATP应用测试平台——springboot集成kafka案例实战
前言kafka消息中间键也是我们经常要用到的功能,尤其是在大数据、高并发的项目中,如日志收集、业务数据分发等等。其最核心的俩大功能作用是:①削峰填谷②异步解耦。本节我们主要介绍一下如何在springboot项目中集成kafka消息中间键,实现简单的数据分发以及消费的案例。正文 kafka集群搭建 快速搭建一个kafka集群,我们这里以docker环境为例,搭建一个kafka集群,具体搭建过程请参考以下博客,这里不再赘述。(六)史上最强ELK集群搭建系列教程——kafka集群搭建_北溟原创 2021-11-05 11:13:49 · 613 阅读 · 0 评论 -
(十二)ATP应用测试平台——关于vue中Vue-Quill-Editor、Mavon-Editor、Tinymce等多种富文本编辑器的集成使用
前言正文结语原创 2021-08-24 15:26:53 · 971 阅读 · 1 评论 -
(十一)ATP应用测试平台——使用vue-video-player视频播放组件实现网页视频流的播放案例实战
前言在网页中播放视频也是我们经常要使用到的功能,例如设备监控的视频流实时播放,MP4、m3u8等视频资源播放等等,在vue项目中,我们可以使用目前封装好的开源组件vue-video-player实现上述的要求。本节我们就详细讲解一下如何使用vue-video-player组件实现视频资源的播放,这里特别要说明的一点是关于本节内容中后端视频资源接口需要特殊处理,否则返回给前端的视频资源无法快进或者后退播放。源码地址:https://gitee.com/northcangap/atp。喜欢的朋友可以star原创 2021-08-20 17:17:08 · 940 阅读 · 0 评论 -
(十)ATP应用测试平台——关于vue-router前端路由的配置使用案例
前言VueRouter是Vue.js(opens new window)官方的路由管理器。它和Vue.js的核心功能深度集成,功能丰富,是我们构建vue前端项目中必不可少的的组件之一,本节我们简单介绍一下在vue项目中如何使用vue-router组件实现页面的路由跳转。源码地址:https://gitee.com/northcangap/atp。喜欢的朋友可以star一下哦,创作不易。正文①安装vue-router命令:npm i vue-router -s②路由配置impo.原创 2021-08-20 11:36:23 · 153 阅读 · 0 评论 -
(九)ATP应用测试平台——使用EasyExcel实现excel导入、导出、多sheet填充、模板下载等功能案例实战
前言Java开发中实现Excel的导入、导出、填充、多sheet页操作等常用功能也是我们经常要面对的开发需求,本文以easyexcel为例,将excel中的常用功能整理成一个个小案例,参考使用。案例源码地址:https://gitee.com/northcangap/atp。喜欢的朋友可以star一下哦,创作不易。效果如下:正文excel模板下载①引入easyexcel的pom<!-- https://mvnrepository.com/artifact/com.alib..原创 2021-08-19 19:17:37 · 681 阅读 · 0 评论 -
(八)ATP应用测试平台——关于axios的配置使用
前言该篇是应某个粉丝的要求讲解一下关于axios请求组件的使用,其实axios组件类似我们以前使用过的jQuery中的ajax组件,都是用于进行http网络请求的组件。axios组件在前后端分离项目中使用的更加广泛,也更易集成,尤其是其拦截器的功能,使网络请求更加健壮、灵活。今天我们就讲一下如何使用axios组件发送网络请求,本小节依然使用我们的ATP应用测试平台进行相关案例的演示。源码地址:https://gitee.com/northcangap/atp。喜欢的朋友可以star一下哦,创作不易。原创 2021-08-18 10:28:09 · 284 阅读 · 0 评论 -
(七)ATP应用测试平台——使用bat批处理实现springboot项目的启动与关闭
前言在windows环境中实现springboot项目的启停,我们可以通过cmd控制台来实现,更为优雅的方式是我们通过批处理文件来处理,这样可以屏蔽项目启动关停的难度,实现一键式的启停,并且自行配置java环境,这对于windows环境的单应用而言,批处理文件更加简洁,同时也可以实现开机自启动等相关设置。优不优秀,你来定。。。正文CMD方式启动springboot应用bat批处理文件启动springboot应用①应用结构②应用的启动批处理文件(双击文件启动应用)@ech..原创 2021-08-17 18:37:23 · 522 阅读 · 0 评论 -
(六)ATP应用测试平台——关于网页表格的打印及PDF下载的实战案例
前言在网站应用中,我们可能会有这样一个需求,将网页的部分内容,例如表格,网页片段下载打印或者导出PDF,本小节内容正是关于这样一个内容的实战,基于vue2环境开发,希望能够帮助到你。源码地址:https://gitee.com/northcangap/atp,效果如下:正文 源码TablePrint.vue <template> <div class="container"> <div class="title"> <原创 2021-08-16 10:34:35 · 259 阅读 · 0 评论 -
(五)ATP应用测试平台常用技术栈案例整合——license-maven-plugin插件实现代码一键式版权信息添加
前言在项目代码开发中,我们会有需求在代码中标识软件的一些版权信息,或者是申请软件著作权中用到版权信息。本小节作者推介一款maven插件,能够通过maven的打包命令或者插件的命令,轻松实现在我们的源码中植入版权信息。那就是我们的license-maven-plugin插件。本小节的演示项目依然使我们的ATP应用测试平台。欢迎fork哦。正文pom文件中引入license-maven-plugin插件<plugin> <groupId>com.mycila</原创 2021-04-29 16:09:56 · 1108 阅读 · 1 评论