Spring 事务传播特性 背景问题在项目中写出了如下模式的代码 [email protected] @Transactional public void parent() { // 期望:parent() 不回滚 balabalaService.child(); } @Override public void child 2022-06-16
锁库大师 背景希望在顾客下单时对库存明细表中的商品进行库存锁定,库存明细表简化后如下所示: 可见一条产品编码有可能存在多条库存明细,客户的订单大致会锁定几十行的库存,要求如下: 尽可能快,并发也高,支持多节点 为了数据的一致性,最好不用 redis 扣减的方案 锁库同时在锁库流水表中插入锁库记录 优化方案分析通过分析系统现有的方案,发现锁库操作时间主要浪费在更新库存明细的锁库数量上,为了防止超卖,每一 2022-06-16
MongoDB 初探 MongoDB 初探对于已经熟悉 MySQL 的同学来说,初次接触 MongoDB 可能会不习惯它的语法,本篇文章将通过一个简单的示例带你入门 MongoDB。 准备对于 MongoDB 新手,可以借助 DataGrip 来学习MongoDB 语法。在 MongoDB 中实现准备好两个表 “old” 和 “new”,并随意插入一些数据 12345678910111213db.createColle 2022-04-11 MongoDB
Distributed locks with Redis Distributed locks with Redis 原文链接:https://redis.io/topics/distlock BackgroundDistributed locks are a very useful primitive in many environments where different processes must operate with shared reso 2022-03-23 Redis
ClashForWindows tap 模式无法正常连接网络 ClashForWindows 正常情况下只能代理通过 Http 或 Socks 代理工作。这两种协议工作在网络模型中的较高层级,可能无法代理系统全部的流量,比如对 SSH 或 WSL 等不起作用,使用时需要对这些应用单独配置。其实下面这几个选项可以让 ClashForWindows 有能力在 TCP/IP 层级工作,从而代理系统全部流量,具体的教程参见官方文档 这里主要提一下通过官方文档操作之 2022-02-14 教程
Java 函数式编程详解 概要首先一个简单的示例展示一下什么是函数式编程 假设我们有一个「Person」列表 1234567List<Person> people = List.of( new Person("John", MALE), new Person("Maria", FEMALE), new Person("A 2021-09-25
Soul 网关 5:Dubbo 请求是怎么被处理的 前言前文我们已经搭建了 Dubbo 和 Http 的示例,并且大致了解了 Soul 对 Http 的处理流程,本节我们来看看 Soul 网关对于 Dubbo 和 Http 的处理有什么异同。 前文我们知道,Soul 网关的 Plugin 链式处理核心是 SoulWebHandler,并且知道了调用链中的插件的用途。 https://solidspoon.xyz/2021/03/06/Soul-% 2021-03-10 Soul 学习笔记 Soul Dubbo
Soul 网关 4:Dubbo 插件的使用 文档地址: https://dromara.org/zh/projects/soul/dubbo-plugin/ ZooKeeper本次实例需要 ZK,这里提供 Docker 和下载压缩文件两种方式。 Docker1docker run -dit --name zk -p 2181:2181 zookeeper 安装下载地址 https://zookeeper.apache.org/rele 2021-03-10 Soul 学习笔记 Soul Dubbo
使用 Java 的动态代理实现 AOP Spring 的 AOP 是基于动态代理实现的,本文基于 Java 里的动态代理,实现一个简单的 AOP。 要代理的接口123456public interface ExampleService { /** * 打印信息 */ void info();} 接口的实现本文就会通过动态代理增加该实例的功能 123456public class Examp 2021-03-08 Java AOP
Java 线程间协作方法总结 本文总结一下我知道的 Java 线程间协作的方式,以计算斐波那契数列为例,新线程负责计算,主线程取得结果。 不使用多线程并发工具使用循环判断指定一个变量作为信号,用循环的方式监控这个变量 123456789101112131415161718192021222324252627282930313233343536373839404142434445/** * 使用循环不断判断 */public c 2021-03-07 Java