刷新
【解决方案】多租户技术架构设计入门(二)

博主头像 对于整个多租户技术架构的设计而言,笔者认为最关键的就是 3 点:数据隔离模式(策略) + 统一的用户&权限体系 + 调用时的行为隔离(请求拦截)。作为入门系列的第二篇,本文主要分享的是**在业务系统的应用内部如何对多数据源进行切换**,而底层的数据库硬件资源管理这部分会简单带过(一般由运维团队来负责... ...

【Guava】集合工具Collections2

博主头像 Collections2 private Collections2() { } 私有构造器,也没有静态构造器,所以可以很明确它是一个纯工具类了。 filter过滤方法 传入一个带过滤的容器,和一个实现过滤规则的函数类,返回一个带有过滤动作的容器 public static <E extends @N ...

Mybatis源码分析

博主头像 Mybatis解析 0.引入 Mybatis源码也是对Jbdc的再一次封装,不管怎么进行包装,还是会有获取链接、preparedStatement、封装参数、执行这些步骤的。本文来探索一下其运行原理。下面从最简单的mybatis使用案例,来看看mybatis的步骤。 public class Tes ...

SSE

博主头像 SSE是一种服务器推送技术,允许服务器实时向客户端发送数据流。它是一种轻量级的单向通信机制,特别适合于实时性要求高的场景,如实时更新日志、实时新闻推送等。在Java中,SSE的实现依赖于Servlet 3.0及以上版本,通过使用Java的特定库和框架,可以轻松地向客户端推送实时数据。 ...

虚拟电商-话费充值业务(二)话费充值对接供应商模块开发

博主头像 一、对接供应商模块开发 供应商对接模块chongba_recharge_supplier主要负责的就是调用外部的供应商系统进行充值下单,这种调用是一种基于HTTP协议的调用。 此外在供应商对接模块中主要是实现的业务逻辑有: 1:余额或押金不足情况下的失败轮转 2:网络故障/充值失败重试,需要添加一个 ...

JAVA语言中多态和修饰符的关系

​ 一、先看一个段子理解多态和修饰符的关系 想象你和小明在玩"角色扮演游戏": ​你是导演(父类),给小明分配了"普通员工"角色(父类方法) ​小明​(子类)说:"我要演得更骚气!"(方法重写) 但导演说:"不行!这个角色被final封印了,你只能按剧本演!" 这就是修饰符对多态的影响——它决定了小 ...

【Guava】BiMap&Multimap&Multiset

博主头像 BiMap Map 可以实现 key -> value 的映射,如果想要 value -> key 的映射,就需要定义两个 Map,并且同步更新,很不优雅。Guava 提供了 BiMap 支持支持双向的映射关系,常用实现有HashMap, EnumBiMap, EnumHashBiMap...。 而 ...

1. 初始 RabbitMQ 消息队列

博主头像 1. 初始 RabbitMQ 消息队列 @目录1. 初始 RabbitMQ 消息队列1. MQ 的相关概念2. MQ 的分类3. MQ 的选择4. RabbitMQ4.1 RabbitMQ 的概念4.2 RabbitMQ 的四大核心概念4.3 RabbitMQ 六大核心部分4.4 RabbitMQ ...

【Guava】集合工具类-Immutable&Lists&Maps&Sets

博主头像 Immutable 如《Effective Java》Item1)所述,在设计类的时候,倾向优先使用静态工厂方法(static factory method)而非构造函数(constructor)创建对象,优点在于: 静态工厂方法多了一层名称信息,比构造函数更富表达性。 可以更灵活地创建对象,比如缓 ...

mysql InnoDB的事务

博主头像 一、事务的概念 一组数据库操作要么全部成功,要么全部失败,目的是为了保证数据的最终一致性 二、事务的四大特性(ACID) 原子性(Actomicity):当前事务的操作要么成功,要么失败,原子性是由undo log日志来保证 一致性(Consistency):使用事务的最终目的,由业务代码正确逻辑保 ...

CentOS 7安装Docker

博主头像 1.系统需求 CentOS 7或更高版本。 centos-extras仓库必须处于启用状态,该仓库默认启用,但如果禁用了该仓库,请重新启用。 建议使用overlay2存储驱动。 2.使用Yum安装 2.1卸载老版本的Docker 在CentOS中,老版本Docker的软件包名是docker或dock ...

前缀和

博主头像 前缀和 前缀和又称累计和,是指将序列中从起始位置到当前位置的所有元素进行求和 prefixSum[0] = nums[0] prefixSum[1] = nums[0] + nums[1] prefixSum[2] = nums[0] + nums[1] + nums[2] ... prefixSu ...

<1···323334···56>