一、前言 策略模式可能是在工作中使用最多的,也是在面试中最常提到的,代码重构和优化的必备! 小编之前也是一直说,其实没有真正的实战;最近有了机会实战了一下,来分享一下使用心得和在企业级的使用! 二、策略模式 1. 什么是策略模式 策略模式,英文全称是 Strategy Design Pattern 。在 GoF 的《设计模式》一书中,它是这样定义的:…
我们在平时开发中经常会涉及调用某个REST接口从而获取对应数据的情况,在这个过程中,返回的数据往往都是JSON数据,一般情况下,我们都会针对这些JSON数据定义对应实体类,从而获取我们需要的数据。这种方式对于结构简单的JSON数据是OK的,但是如果遇到下面这种多级嵌套的数据就比较蛋疼了: { "a1": { "b1": { "c1": { "d1":…
解决目标 在单体架构下,同时容下客户端和管理端,通俗点就是一个项目单服务, 同时实现页面A(用户的登录)与页面B(管理员登录),跳转到对应不同的操作端。当然两种身份的用户他不能随意进入其他端,所以需要两种不同的令牌生成和验证。用户表拆分为两个:一个normal_user表,一个super_user表,而不是简简单一个表加权限字段。…
主要是自己在项目中(中小型项目) 有支付下单业务(只是办理VIP,没有涉及到商品库存),目前用户量还没有上来,目前没有出现问题,但是想到如果用户量变大,下单并发量变大,可能会出现一系列的问题,趁着空闲时间,做了这个demo测试相关问题。 可能遇到的问题如下: 订单重复 高并发下,性能变慢 解决方式: ThreadPoolExecutor 线程池 +…
一、读写分离介绍 当使用Spring Boot开发数据库应用时,读写分离是一种常见的优化策略。读写分离将读操作和写操作分别分配给不同的数据库实例,以提高系统的吞吐量和性能。 读写分离实现主要是通过动态数据源功能实现的,动态数据源是一种通过在运行时动态切换数据库连接的机制。它允许应用程序根据不同的条件或配置选择不同的数据源,以实现更灵活和可扩展的数据库访问。…
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>…