主要是自己在项目中(中小型项目) 有支付下单业务(只是办理VIP,没有涉及到商品库存),目前用户量还没有上来,目前没有出现问题,但是想到如果用户量变大,下单并发量变大,可能会出现一系列的问题,趁着空闲时间,做了这个demo测试相关问题。 可能遇到的问题如下: 订单重复 高并发下,性能变慢 解决方式: ThreadPoolExecutor 线程池 +…
一、读写分离介绍 当使用Spring Boot开发数据库应用时,读写分离是一种常见的优化策略。读写分离将读操作和写操作分别分配给不同的数据库实例,以提高系统的吞吐量和性能。 读写分离实现主要是通过动态数据源功能实现的,动态数据源是一种通过在运行时动态切换数据库连接的机制。它允许应用程序根据不同的条件或配置选择不同的数据源,以实现更灵活和可扩展的数据库访问。…
之前与同事讨论接口性能问题时听他介绍了一种缓存设计思路,觉得不错,做个记录供以后参考。 场景 假设有个以下格式的接口: GET /api?keys={key1,key2,key3,...}&types={1,2,3,...} 其中 keys 是业务主键列表,types 是想要取到的信息的类型。…
JVM 参数众多,我们常在启动一个 Java 程序时通过命令行(例如: java -jar app.jar )指定各种参数选项。很多同学就会对此感到疑惑,为什么有时候要用 -D ,有时候却要用 -X ,还有些时候用的却是 -XX 呢? 今天,我就在这篇文章中讲一讲这些选项之间的差异。看完这篇文章之后,你将学到 JVM…
开始准备 开始之前我们需要有Redis安装,我们采用本机Docker运行Redis, 主要命令如下 docker pull redis docker run --name my_redis -d -p 6379:6379 redis docker exec -it my_redis bash redis-cli 前面两个命令是启动redis docker,…
学习Drools,我们可以通过一个简单的案例来了解该规则引擎的使用过程。以下是一个样例工程的步骤: 首先,我们需要创建一个 Maven 工程。在 pom.xml 文件中添加 Drools 的依赖: <dependency> <groupId>org.drools</groupId> <artifactId>drools-core</artifactId>…
前言 GitHub Actions 可以构建一组自动化的工作流程,并提供了拉取请求、合并分支等事件来触发他们。一般成熟的开源项目会在每个版本发布时提供 releases ,它就是通过 Actions 来自动发布的。本文就以自动发布 releases 这个例子来认识 Actions。 创建 workflow workflow 被称为工作流,每个工作流以一个…
Guava是Google发布的一个开源库,主要提供了一些在Java开发中非常有用的工具类和API,比如字符串处理、集合操作、函数式编程、缓存等等。不管是工作还是学习都是非常值得我们去熟悉的,一起来看看吧。 字符串(Strings) Strings是Guava提供的一组字符串工具,它提供了许多有用的方法来处理字符串。以下是Strings的主要方法:…