企业开发中Maven的基本使用

2023-04-25
阅读 8 分钟
1k
管理依赖:通过<dependencyManagement>,声明依赖版本,进行依赖的版本控制的。引入依赖:通过<dependency>,进行依赖的实际引入。构建jar包:在需要打包的模块中添加<build>并加入定制插件plugin进行jar生成。依赖冲突:通过工具或者命令行排查冲突的依赖后,使用exclusion来排出冲突的依赖。

聊聊如何运用JAVA注解处理器(APT)

2023-04-12
阅读 5 分钟
643
什么是APTAPT(Annotation Processing Tool)它是Java编译期注解处理器,它可以让开发人员在编译期对注解进行处理,通过APT可以获取到注解和被注解对象的相关信息,并根据这些信息在编译期按我们的需求生成java代码模板或者配置文件(比如SPI文件或者spring.fatories)等。APT获取注解及生成代码都是在代码编译时候完成...

IO:阻塞和非阻塞、同步和异步

2023-02-27
阅读 4 分钟
451
阻塞:当数据还没准备好时,调用了阻塞的方法,则线程会被挂起,会让出CPU时间片,此时是无法处理过来的请求,需要等待其他线程来进行唤醒,该线程才能进行后续操作或者处理其他请求。非阻塞:意味着,当数据还没准备好的时候,即便我调用了阻塞方法,该线程也不会被挂起,后续的请求也能够被处理。同步

只改了五行代码接口吞吐量提升了10多倍

2023-02-14
阅读 7 分钟
586
背景公司的一个ToB系统,因为客户使用的也不多,没啥并发要求,就一直没有经过压测。这两天来了一个“大客户”,对并发量提出了要求:核心接口与几个重点使用场景单节点吞吐量要满足最低500/s的要求。当时一想,500/s吞吐量还不简单。Tomcat按照100个线程,那就是单线程1S内处理5个请求,200ms处理一个请求即可。这个没有...

怎样快速地迁移 MySQL 中的数据?

2023-01-16
阅读 5 分钟
478
我们通常会遇到这样的一个场景,就是需要将一个数据库的数据迁移到一个性能更加强悍的数据库服务器上。这个时候需要我们做的就是快速迁移数据库的数据。那么,如何才能快速地迁移数据库中的数据呢?今天我们就来聊一聊这个话题。数据库的数据迁移无外乎有两种方式,一种是物理迁移,另一种则是逻辑迁移。首先,我们生成 ...

说说 Spring 定时任务如何大规模企业级运用

2023-01-11
阅读 6 分钟
509
Spring 定时任务简介Cloud Native定时任务是业务应用开发中非常普遍存在的场景(如:每分钟扫描超时支付的订单,每小时清理一次数据库历史数据,每天统计前一天的数据并生成报表等等), 解决方案很多 ,Spring 框架提供了一种通过注解来配置定时任务的解决方案,接入非常的简单,仅需如下两步:

你知道微服务架构中的“发件箱模式”吗

2023-01-09
阅读 3 分钟
574
前言微服务架构如今非常的流行,这个架构下可能经常会遇到“双写”的场景。双写是指您的应用程序需要在两个不同的系统中更改数据的情况,比如它需要将数据存储在数据库中并向消息队列发送事件。您需要保证这两个操作都会成功。如果两个操作之一失败,您的系统可能会变得不一致。那针对这样的情况有什么好的方法或者设计保...

7min到40s:SpringBoot启动优化实践

2022-12-28
阅读 13 分钟
599
0 背景公司 SpringBoot 项目在日常开发过程中发现服务启动过程异常缓慢,常常需要6-7分钟才能暴露端口,严重降低开发效率。通过 SpringBoot 的 SpringApplicationRunListener 、BeanPostProcessor 原理和源码调试等手段排查发现,在 Bean 扫描和 Bean 注入这个两个阶段有很大的性能瓶颈。通过 JavaConfig 注册 Bean, 减...
封面图