-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.html
1 lines (1 loc) · 31.3 KB
/
index.html
1
<!-- build time:Sat Dec 07 2024 18:41:42 GMT+0800 (中国标准时间) --><!DOCTYPE html><html lang="zh-CN"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=2"><meta name="theme-color" content="#FFF"><link rel="apple-touch-icon" sizes="180x180" href="/images/apple-touch-icon.png"><link rel="icon" type="image/ico" sizes="32x32" href="/images/favicon.ico"><meta http-equiv="Cache-Control" content="no-transform"><meta http-equiv="Cache-Control" content="no-siteapp"><link rel="alternate" type="application/rss+xml" title="爱WIKI" href="https://i-wiki.cn/rss.xml"><link rel="alternate" type="application/atom+xml" title="爱WIKI" href="https://i-wiki.cn/atom.xml"><link rel="alternate" type="application/json" title="爱WIKI" href="https://i-wiki.cn/feed.json"><link rel="stylesheet" href="//fonts.googleapis.com/css?family=Mulish:300,300italic,400,400italic,700,700italic%7CFredericka%20the%20Great:300,300italic,400,400italic,700,700italic%7CNoto%20Serif%20JP:300,300italic,400,400italic,700,700italic%7CNoto%20Serif%20SC:300,300italic,400,400italic,700,700italic%7CInconsolata:300,300italic,400,400italic,700,700italic&display=swap&subset=latin,latin-ext"><link rel="stylesheet" href="/css/app.css?v=0.2.5"><link rel="canonical" href="https://i-wiki.cn/"><title>PPYYLEE = 爱 WIKI = 学无止境</title><meta name="generator" content="Hexo 6.3.0"></head><body itemscope itemtype="http://schema.org/WebPage"><div id="loading"><div class="cat"><div class="body"></div><div class="head"><div class="face"></div></div><div class="foot"><div class="tummy-end"></div><div class="bottom"></div><div class="legs left"></div><div class="legs right"></div></div><div class="paw"><div class="hands left"></div><div class="hands right"></div></div></div></div><div id="container"><header id="header" itemscope itemtype="http://schema.org/WPHeader"><div class="inner"><div id="brand"><div class="pjax"><a href="/" class="logo" rel="start"><p class="artboard">PPYYLEE</p><h1 itemprop="name headline" class="title">爱 WIKI</h1></a><p class="meta" itemprop="description">= 学无止境 =</p></div></div><nav id="nav"><div class="inner"><div class="toggle"><div class="lines" aria-label="切换导航栏"><span class="line"></span> <span class="line"></span> <span class="line"></span></div></div><ul class="menu"><li class="item title"><a href="/" rel="start">PPYYLEE</a></li></ul><ul class="right"><li class="item theme"><i class="ic i-sun"></i></li><li class="item search"><i class="ic i-search"></i></li></ul></div></nav></div><div id="imgs" class="pjax"><ul><li class="item" data-background-image="https://tva2.sinaimg.cn/large/6833939bly1gipewkhf1zj20zk0m81kx.jpg"></li><li class="item" data-background-image="https://tva2.sinaimg.cn/large/6833939bly1gipevgoki5j20zk0m84qp.jpg"></li><li class="item" data-background-image="https://tva2.sinaimg.cn/large/6833939bly1giclfb3vzhj20zk0m8wny.jpg"></li><li class="item" data-background-image="https://tva2.sinaimg.cn/large/6833939bly1giclgi503lj20zk0m8hdt.jpg"></li><li class="item" data-background-image="https://tva2.sinaimg.cn/large/6833939bly1gicliwyw55j20zk0m8hdt.jpg"></li><li class="item" data-background-image="https://tva2.sinaimg.cn/large/6833939bly1gipet8c1a2j20zk0m8kct.jpg"></li></ul></div></header><div id="waves"><svg class="waves" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 24 150 28" preserveAspectRatio="none" shape-rendering="auto"><defs><path id="gentle-wave" d="M-160 44c30 0 58-18 88-18s 58 18 88 18 58-18 88-18 58 18 88 18 v44h-352z"/></defs><g class="parallax"><use xlink:href="#gentle-wave" x="48" y="0"/><use xlink:href="#gentle-wave" x="48" y="3"/><use xlink:href="#gentle-wave" x="48" y="5"/><use xlink:href="#gentle-wave" x="48" y="7"/></g></svg></div><main><div class="inner"><div id="main" class="pjax"><div class="index wrap"><h2 class="divider">精选分类</h2><div class="cards"><section class="item"><div class="cover" data-background-image="/backend/cover.jpg"><h2 class="title">后端</h2></div><div class="info"><div class="ribbon"><a href="/categories/backend/" itemprop="url" title="后端">后端</a></div><div class="inner"><ul class="posts"><li><a title="go" href="/categories/backend/go/">go</a></li><li><a title="mysql" href="/categories/backend/mysql/">mysql</a></li><li><a title="分布式事务" href="/categories/backend/%E5%88%86%E5%B8%83%E5%BC%8F%E4%BA%8B%E5%8A%A1/">分布式事务</a></li></ul><div class="meta footer"><span><i class="ic i-file"></i>3 个子项,13 篇文章</span></div><a href="/categories/backend/" itemprop="url" title="后端" class="btn">more...</a></div></div></section><section class="item"><div class="cover" data-background-image="/tools/cover.jpg"><h2 class="title">工具</h2></div><div class="info"><div class="ribbon"><a href="/categories/tools/" itemprop="url" title="工具">工具</a></div><div class="inner"><ul class="posts"><li><a title="aria2" href="/categories/tools/aria2/">aria2</a></li></ul><div class="meta footer"><span><i class="ic i-file"></i>1 个子项,1 篇文章</span></div><a href="/categories/tools/" itemprop="url" title="工具" class="btn">more...</a></div></div></section></div><h2 class="divider">文章列表</h2><div class="segments posts"><article class="item"><div class="cover"><a href="/2024/343f91fc83c3/" itemprop="url" title="Go基础-常用容器"><img data-src="https://tva2.sinaimg.cn/mw690/6833939bly1gipeun65urj20zk0m81ii.jpg"></a></div><div class="info"><div class="meta"><span class="item" title="创建时间:2024-12-03 22:08:38"><span class="icon"><i class="ic i-calendar"></i> </span><time itemprop="dateCreated datePublished" datetime="2024-12-03T22:08:38+08:00">2024-12-03</time> </span><span class="item" title="本文字数"><span class="icon"><i class="ic i-pen"></i> </span><span>1.2k</span> <span class="text">字</span> </span><span class="item" title="阅读时长"><span class="icon"><i class="ic i-clock"></i> </span><span>1 分钟</span></span></div><h3><a href="/2024/343f91fc83c3/" itemprop="url" title="Go基础-常用容器">Go基础-常用容器</a></h3><div class="excerpt"># GO 中常用容器 # 1. 数组 // 申明时需要固定大小 var name [size] Tvar classMates [3]stringclassMates[0] = "小明"classMates[1] = "小红"classMates[2] = "小李"classMates2 := [...]string&#123;"小明","小红","小李"&#125; // 使用初始化列表初始化数组classMates3 = new([3]string)...</div><div class="meta footer"><span><a href="/categories/backend/go/" itemprop="url" title="go"><i class="ic i-flag"></i>go</a></span></div><a href="/2024/343f91fc83c3/" itemprop="url" title="Go基础-常用容器" class="btn">more...</a></div></article><article class="item"><div class="cover"><a href="/2023/e378d05a98d4/" itemprop="url" title="Mysql 添加远程账号"><img data-src="https://tva2.sinaimg.cn/mw690/6833939bly1gipevarprfj20zk0m8npd.jpg"></a></div><div class="info"><div class="meta"><span class="item" title="创建时间:2023-02-16 17:28:16"><span class="icon"><i class="ic i-calendar"></i> </span><time itemprop="dateCreated datePublished" datetime="2023-02-16T17:28:16+08:00">2023-02-16</time> </span><span class="item" title="本文字数"><span class="icon"><i class="ic i-pen"></i> </span><span>182</span> <span class="text">字</span> </span><span class="item" title="阅读时长"><span class="icon"><i class="ic i-clock"></i> </span><span>1 分钟</span></span></div><h3><a href="/2023/e378d05a98d4/" itemprop="url" title="Mysql 添加远程账号">Mysql 添加远程账号</a></h3><div class="excerpt">添加一个新账号 create user 'account'@'%' identified by 'password'; 赋予新账号权限 grant all privileges on `Test`.* to 'account'@'%' ; #权限参考 all 所有权限 select 查询权限 insert 插入权限 delete 删除权限 update 更新权限 *.* 所有表 刷新权限 FLUSH PRIVILEGES;</div><div class="meta footer"><span><a href="/categories/backend/mysql/" itemprop="url" title="mysql"><i class="ic i-flag"></i>mysql</a></span></div><a href="/2023/e378d05a98d4/" itemprop="url" title="Mysql 添加远程账号" class="btn">more...</a></div></article><article class="item"><div class="cover"><a href="/2023/8cf859c786e2/" itemprop="url" title="Mysql8 新安装后无密码登录"><img data-src="https://tva2.sinaimg.cn/mw690/6833939bly1gipevgoki5j20zk0m84qp.jpg"></a></div><div class="info"><div class="meta"><span class="item" title="创建时间:2023-02-16 17:21:36"><span class="icon"><i class="ic i-calendar"></i> </span><time itemprop="dateCreated datePublished" datetime="2023-02-16T17:21:36+08:00">2023-02-16</time> </span><span class="item" title="本文字数"><span class="icon"><i class="ic i-pen"></i> </span><span>296</span> <span class="text">字</span> </span><span class="item" title="阅读时长"><span class="icon"><i class="ic i-clock"></i> </span><span>1 分钟</span></span></div><h3><a href="/2023/8cf859c786e2/" itemprop="url" title="Mysql8 新安装后无密码登录">Mysql8 新安装后无密码登录</a></h3><div class="excerpt">修改配置文件 vi /etc/my.cnf #进入 mysql 配置文件 在配置文件中设置 skip-grant-tables #即不校验密码登录 重启 mysql systemctl restart mysqldmysql -u root -p #不用输入密码,直接回车 将密码置空 update user set authentication_string='' where user = 'root'; 删除 2 中添加的配置项并重启 mysql 如需修改密码 ALTER USER...</div><div class="meta footer"><span><a href="/categories/backend/mysql/" itemprop="url" title="mysql"><i class="ic i-flag"></i>mysql</a></span></div><a href="/2023/8cf859c786e2/" itemprop="url" title="Mysql8 新安装后无密码登录" class="btn">more...</a></div></article><article class="item"><div class="cover"><a href="/2023/44b61dee094f/" itemprop="url" title="leetcode-1807. 替换字符串中的括号内容"><img data-src="https://tva2.sinaimg.cn/mw690/6833939bly1giclhnx9glj20zk0m8npd.jpg"></a></div><div class="info"><div class="meta"><span class="item" title="创建时间:2023-01-12 17:24:08"><span class="icon"><i class="ic i-calendar"></i> </span><time itemprop="dateCreated datePublished" datetime="2023-01-12T17:24:08+08:00">2023-01-12</time> </span><span class="item" title="本文字数"><span class="icon"><i class="ic i-pen"></i> </span><span>545</span> <span class="text">字</span> </span><span class="item" title="阅读时长"><span class="icon"><i class="ic i-clock"></i> </span><span>1 分钟</span></span></div><h3><a href="/2023/44b61dee094f/" itemprop="url" title="leetcode-1807. 替换字符串中的括号内容">leetcode-1807. 替换字符串中的括号内容</a></h3><div class="excerpt"># 1807. 替换字符串中的括号内容 难度:中等 解题思路: knowledge 转换 hashmap 便于查找 依次遍历 s,获取()中的字符串为 key,如果 hashmap 中不存在 key 对应的 value 则替换为 &quot;?&quot; func evaluate(s string, knowledge [][]string) string &#123; var know = map[string]string&#123;&#125; for _, v := range knowledge &#123;...</div><div class="meta footer"><span><a href="/categories/%E7%AE%97%E6%B3%95/leetcode/" itemprop="url" title="leetcode"><i class="ic i-flag"></i>leetcode</a></span></div><a href="/2023/44b61dee094f/" itemprop="url" title="leetcode-1807. 替换字符串中的括号内容" class="btn">more...</a></div></article><article class="item"><div class="cover"><a href="/2021/fd677132940e/" itemprop="url" title="go 基础篇"><img data-src="https://tva2.sinaimg.cn/mw690/6833939bly1gipeun65urj20zk0m81ii.jpg"></a></div><div class="info"><div class="meta"><span class="item" title="创建时间:2021-12-01 00:46:24"><span class="icon"><i class="ic i-calendar"></i> </span><time itemprop="dateCreated datePublished" datetime="2021-12-01T00:46:24+08:00">2021-12-01</time> </span><span class="item" title="本文字数"><span class="icon"><i class="ic i-pen"></i> </span><span>2.2k</span> <span class="text">字</span> </span><span class="item" title="阅读时长"><span class="icon"><i class="ic i-clock"></i> </span><span>2 分钟</span></span></div><h3><a href="/2021/fd677132940e/" itemprop="url" title="go 基础篇">go 基础篇</a></h3><div class="excerpt"># 基本语法 # 1. 变量 // 申明的变量必须被使用 否则编译不通过var a intvar b string var c []float // 一个 float 类型的切片var d struct&#123; // 申明一个匿名结构体 该结构体有一个 int 类型字段 x x int&#125;var e func() bool // 申明一个函数变量var ( // 同时申明多组变量 f int g string)// 省略类型 编译器会尝试进行类型推导var a = 100 a := 100 // 编译报错 a, b = 100, "ok" //...</div><div class="meta footer"><span><a href="/categories/backend/go/" itemprop="url" title="go"><i class="ic i-flag"></i>go</a></span></div><a href="/2021/fd677132940e/" itemprop="url" title="go 基础篇" class="btn">more...</a></div></article><article class="item"><div class="cover"><a href="/2021/b8326b69e0d3/" itemprop="url" title="Mysql: on duplicate key update"><img data-src="https://tva2.sinaimg.cn/mw690/6833939bly1gicis3attqj20zk0m8k7l.jpg"></a></div><div class="info"><div class="meta"><span class="item" title="创建时间:2021-10-09 12:39:12"><span class="icon"><i class="ic i-calendar"></i> </span><time itemprop="dateCreated datePublished" datetime="2021-10-09T12:39:12+08:00">2021-10-09</time> </span><span class="item" title="本文字数"><span class="icon"><i class="ic i-pen"></i> </span><span>1.2k</span> <span class="text">字</span> </span><span class="item" title="阅读时长"><span class="icon"><i class="ic i-clock"></i> </span><span>1 分钟</span></span></div><h3><a href="/2021/b8326b69e0d3/" itemprop="url" title="Mysql: on duplicate key update">Mysql: on duplicate key update</a></h3><div class="excerpt"># 使用场景 在实际应用中,经常碰到导入数据的功能,当导入的数据不存在时则进行添加,有修改时则进行更新 在 MySQL 数据库中,如果在 insert 语句后面带上 ON DUPLICATE KEY UPDATE 子句,而要插入的行与表中现有记录的惟一索引或主键中产生重复值,那么就会发生旧行的更新;如果插入的行数据与现有表中记录的唯一索引或者主键不重复,则执行新纪录插入操作。 说通俗点就是数据库中存在某个记录时,执行这个语句会更新,而不存在这条记录时,就会插入。 # 用法 该语句是基于唯一索引或主键使用,比如一个字段 user_id 被加上了 unique...</div><div class="meta footer"><span><a href="/categories/backend/mysql/" itemprop="url" title="mysql"><i class="ic i-flag"></i>mysql</a></span></div><a href="/2021/b8326b69e0d3/" itemprop="url" title="Mysql: on duplicate key update" class="btn">more...</a></div></article><article class="item"><div class="cover"><a href="/2021/03643db49451/" itemprop="url" title="分布式事务:DTM Workflow模式"><img data-src="https://tva2.sinaimg.cn/mw690/6833939bly1gipet4bz0yj20zk0m8e81.jpg"></a></div><div class="info"><div class="meta"><span class="item" title="创建时间:2021-09-30 17:45:47"><span class="icon"><i class="ic i-calendar"></i> </span><time itemprop="dateCreated datePublished" datetime="2021-09-30T17:45:47+08:00">2021-09-30</time> </span><span class="item" title="本文字数"><span class="icon"><i class="ic i-pen"></i> </span><span>5.9k</span> <span class="text">字</span> </span><span class="item" title="阅读时长"><span class="icon"><i class="ic i-clock"></i> </span><span>5 分钟</span></span></div><h3><a href="/2021/03643db49451/" itemprop="url" title="分布式事务:DTM Workflow模式">分布式事务:DTM Workflow模式</a></h3><div class="excerpt"># Workflow 模式 Workflow 模式是 DTM 首创推出的模式,在这个模式下,可以混合使用 XA、SAGA、TCC,也可以混合使用 HTTP、gRPC、本地操作,用户可以对分布式事务里面的绝大部分内容进行定制,具备极大的灵活性,下面我们以转账场景,讲述如何在 Workflow 下进行实现。 # workflow 例子 Workflow 模式下,既可以使用 HTTP 协议,也可以使用 gRPC 协议,或者是本地操作。下面以 gRPC 协议作为例子,一共分为一下几步: 初始化 SDK 注册 workflow 执行 workflow # 首先需要在使用 workflow 前对...</div><div class="meta footer"><span><a href="/categories/backend/%E5%88%86%E5%B8%83%E5%BC%8F%E4%BA%8B%E5%8A%A1/%E4%BA%8B%E5%8A%A1%E6%A8%A1%E5%BC%8F/" itemprop="url" title="事务模式"><i class="ic i-flag"></i>事务模式</a></span></div><a href="/2021/03643db49451/" itemprop="url" title="分布式事务:DTM Workflow模式" class="btn">more...</a></div></article><article class="item"><div class="cover"><a href="/2021/d0caa7cb6848/" itemprop="url" title="分布式事务:DTM XA模式"><img data-src="https://tva2.sinaimg.cn/mw690/6833939bly1gicitht3xtj20zk0m8k5v.jpg"></a></div><div class="info"><div class="meta"><span class="item" title="创建时间:2021-09-30 17:34:59"><span class="icon"><i class="ic i-calendar"></i> </span><time itemprop="dateCreated datePublished" datetime="2021-09-30T17:34:59+08:00">2021-09-30</time> </span><span class="item" title="本文字数"><span class="icon"><i class="ic i-pen"></i> </span><span>2.2k</span> <span class="text">字</span> </span><span class="item" title="阅读时长"><span class="icon"><i class="ic i-clock"></i> </span><span>2 分钟</span></span></div><h3><a href="/2021/d0caa7cb6848/" itemprop="url" title="分布式事务:DTM XA模式">分布式事务:DTM XA模式</a></h3><div class="excerpt"># XA 事务模式 # XA 是什么 XA 是由 X/Open 组织提出的分布式事务的规范,XA 规范主要定义了 (全局) 事务管理器 (TM) 和 (局部) 资源管理器 (RM) 之间的接口。本地的数据库如 mysql 在 XA 中扮演的是 RM 角色 XA 一共分为两阶段: 第一阶段(prepare):即所有的参与者 RM 准备执行事务并锁住需要的资源。参与者 ready 时,向 TM 报告已准备就绪。 第二阶段 (commit/rollback):当事务管理者 (TM) 确认所有参与者 (RM) 都 ready 后,向所有参与者发送 commit 命令。 目前主流的数据库基本都支持 XA...</div><div class="meta footer"><span><a href="/categories/backend/%E5%88%86%E5%B8%83%E5%BC%8F%E4%BA%8B%E5%8A%A1/%E4%BA%8B%E5%8A%A1%E6%A8%A1%E5%BC%8F/" itemprop="url" title="事务模式"><i class="ic i-flag"></i>事务模式</a></span></div><a href="/2021/d0caa7cb6848/" itemprop="url" title="分布式事务:DTM XA模式" class="btn">more...</a></div></article><article class="item"><div class="cover"><a href="/2021/ddd8b3452e91/" itemprop="url" title="分布式事务:DTM TCC模式"><img data-src="https://tva2.sinaimg.cn/mw690/6833939bly1gipexj2jgzj20zk0m8b09.jpg"></a></div><div class="info"><div class="meta"><span class="item" title="创建时间:2021-09-30 12:11:46"><span class="icon"><i class="ic i-calendar"></i> </span><time itemprop="dateCreated datePublished" datetime="2021-09-30T12:11:46+08:00">2021-09-30</time> </span><span class="item" title="本文字数"><span class="icon"><i class="ic i-pen"></i> </span><span>3.6k</span> <span class="text">字</span> </span><span class="item" title="阅读时长"><span class="icon"><i class="ic i-clock"></i> </span><span>3 分钟</span></span></div><h3><a href="/2021/ddd8b3452e91/" itemprop="url" title="分布式事务:DTM TCC模式">分布式事务:DTM TCC模式</a></h3><div class="excerpt"># TCC 事务模式 什么是 TCC,TCC 是 Try、Confirm、Cancel 三个词语的缩写,最早是由 Pat Helland 于 2007 年发表的一篇名为《Life beyond Distributed Transactions:an Apostate’s Opinion》的论文提出。 # TCC 组成 TCC 分为 3 个阶段 Try 阶段:尝试执行,完成所有业务检查(一致性), 预留必须业务资源(准隔离性) Confirm 阶段:如果所有分支的 Try 都成功了,则走到 Confirm 阶段。Confirm 真正执行业务,不作任何业务检查,只使用 Try...</div><div class="meta footer"><span><a href="/categories/backend/%E5%88%86%E5%B8%83%E5%BC%8F%E4%BA%8B%E5%8A%A1/%E4%BA%8B%E5%8A%A1%E6%A8%A1%E5%BC%8F/" itemprop="url" title="事务模式"><i class="ic i-flag"></i>事务模式</a></span></div><a href="/2021/ddd8b3452e91/" itemprop="url" title="分布式事务:DTM TCC模式" class="btn">more...</a></div></article><article class="item"><div class="cover"><a href="/2021/22f84f93ed46/" itemprop="url" title="分布式事务:DTM 二阶段消息模式"><img data-src="https://tva2.sinaimg.cn/mw690/6833939bly1gipeuibk9fj20zk0m8ay2.jpg"></a></div><div class="info"><div class="meta"><span class="item" title="创建时间:2021-09-29 18:23:12"><span class="icon"><i class="ic i-calendar"></i> </span><time itemprop="dateCreated datePublished" datetime="2021-09-29T18:23:12+08:00">2021-09-29</time> </span><span class="item" title="本文字数"><span class="icon"><i class="ic i-pen"></i> </span><span>3.4k</span> <span class="text">字</span> </span><span class="item" title="阅读时长"><span class="icon"><i class="ic i-clock"></i> </span><span>3 分钟</span></span></div><h3><a href="/2021/22f84f93ed46/" itemprop="url" title="分布式事务:DTM 二阶段消息模式">分布式事务:DTM 二阶段消息模式</a></h3><div class="excerpt"># 二阶段消息 # 概述 本文提出的二阶段消息,可以完美替代现有的事务消息或本地消息表架构。 下面我们以跨行转账作为例子,给大家详解这种新架构。业务场景介绍如下: 我们需要跨行从 A 转给 B 30 元,我们先进行可能失败的转出操作 TransOut,即进行 A 扣减 30 元。如果 A 因余额不足扣减失败,那么转账直接失败,返回错误;如果扣减成功,那么进行下一步转入操作,因为转入操作没有余额不足的问题,可以假定转入操作一定会成功。 # HTTP 接入 二阶段消息完成上述任务的核心代码如下所示: msg := dtmcli.NewMsg(DtmServer,...</div><div class="meta footer"><span><a href="/categories/backend/%E5%88%86%E5%B8%83%E5%BC%8F%E4%BA%8B%E5%8A%A1/%E4%BA%8B%E5%8A%A1%E6%A8%A1%E5%BC%8F/" itemprop="url" title="事务模式"><i class="ic i-flag"></i>事务模式</a></span></div><a href="/2021/22f84f93ed46/" itemprop="url" title="分布式事务:DTM 二阶段消息模式" class="btn">more...</a></div></article></div></div><nav class="pagination"><div class="inner"><span class="page-number current">1</span><a class="page-number" href="/page/2/">2</a><a class="extend next" rel="next" href="/page/2/"><i class="ic i-angle-right" aria-label="下一页"></i></a></div></nav></div><div id="sidebar"><div class="inner"><div class="panels"><div class="inner"><div class="contents panel pjax" data-title="文章目录"></div><div class="related panel pjax" data-title="系列文章"></div><div class="overview panel" data-title="站点概览"><div class="author" itemprop="author" itemscope itemtype="http://schema.org/Person"><img class="image" itemprop="image" alt="PPYYLEE" data-src="/images/avatar.jpg"><p class="name" itemprop="name">PPYYLEE</p><div class="description" itemprop="description">渺小的沙子 无尽的空洞</div></div><nav class="state"><div class="item posts"><a href="/archives/"><span class="count">16</span> <span class="name">文章</span></a></div><div class="item categories"><a href="/categories/"><span class="count">13</span> <span class="name">分类</span></a></div><div class="item tags"><a href="/tags/"><span class="count">12</span> <span class="name">标签</span></a></div></nav><div class="social"><span class="exturl item github" data-url="aHR0cHM6Ly9naXRodWIuY29tL3BweXlsZWU=" title="https://github.com/ppyylee"><i class="ic i-github"></i></span> <span class="exturl item music" data-url="aHR0cHM6Ly9tdXNpYy4xNjMuY29tLyMvdXNlci9ob21lP2lkPTM4MjYxMjA4NTQ=" title="https://music.163.com/#/user/home?id=3826120854"><i class="ic i-cloud-music"></i></span> <span class="exturl item email" data-url="bWFpbHRvOjY0MjE4ODU3M0BxcS5jb20=" title="mailto:[email protected]"><i class="ic i-envelope"></i></span></div><ul class="menu"><li class="item"><a href="/" rel="section"><i class="ic i-home"></i>首页</a></li><li class="item dropdown"><a href="javascript:void(0);"><i class="ic i-feather"></i>文章</a><ul class="submenu"><li class="item"><a href="/archives/" rel="section"><i class="ic i-list-alt"></i>归档</a></li><li class="item"><a href="/categories/" rel="section"><i class="ic i-th"></i>分类</a></li><li class="item"><a href="/tags/" rel="section"><i class="ic i-tags"></i>标签</a></li></ul></li><li class="item"><a href="/friends/" rel="section"><i class="ic i-heart"></i>friends</a></li></ul></div></div></div><ul id="quick"><li class="prev pjax"></li><li class="up"><i class="ic i-arrow-up"></i></li><li class="down"><i class="ic i-arrow-down"></i></li><li class="next pjax"><a href="/page/2/" rel="next" title="下一篇"><i class="ic i-chevron-right"></i></a></li><li class="percent"></li></ul></div></div><div class="dimmer"></div></div></main><footer id="footer"><div class="inner"><div class="widgets"><div class="rpost pjax"><h2>随机文章</h2><ul><li class="item"><div class="breadcrumb"><a href="/categories/backend/" title="分类于 后端">后端</a> <i class="ic i-angle-right"></i> <a href="/categories/backend/%E5%88%86%E5%B8%83%E5%BC%8F%E4%BA%8B%E5%8A%A1/" title="分类于 分布式事务">分布式事务</a> <i class="ic i-angle-right"></i> <a href="/categories/backend/%E5%88%86%E5%B8%83%E5%BC%8F%E4%BA%8B%E5%8A%A1/%E4%BA%8B%E5%8A%A1%E6%A8%A1%E5%BC%8F/" title="分类于 事务模式">事务模式</a></div><span><a href="/2021/03643db49451/" title="分布式事务:DTM Workflow模式">分布式事务:DTM Workflow模式</a></span></li><li class="item"><div class="breadcrumb"><a href="/categories/backend/" title="分类于 后端">后端</a> <i class="ic i-angle-right"></i> <a href="/categories/backend/mysql/" title="分类于 mysql">mysql</a></div><span><a href="/2023/8cf859c786e2/" title="Mysql8 新安装后无密码登录">Mysql8 新安装后无密码登录</a></span></li><li class="item"><div class="breadcrumb"><a href="/categories/backend/" title="分类于 后端">后端</a> <i class="ic i-angle-right"></i> <a href="/categories/backend/%E5%88%86%E5%B8%83%E5%BC%8F%E4%BA%8B%E5%8A%A1/" title="分类于 分布式事务">分布式事务</a> <i class="ic i-angle-right"></i> <a href="/categories/backend/%E5%88%86%E5%B8%83%E5%BC%8F%E4%BA%8B%E5%8A%A1/%E4%BA%8B%E5%8A%A1%E6%A8%A1%E5%BC%8F/" title="分类于 事务模式">事务模式</a></div><span><a href="/2021/22f84f93ed46/" title="分布式事务:DTM 二阶段消息模式">分布式事务:DTM 二阶段消息模式</a></span></li><li class="item"><div class="breadcrumb"><a href="/categories/backend/" title="分类于 后端">后端</a> <i class="ic i-angle-right"></i> <a href="/categories/backend/mysql/" title="分类于 mysql">mysql</a></div><span><a href="/2023/e378d05a98d4/" title="Mysql 添加远程账号">Mysql 添加远程账号</a></span></li><li class="item"><div class="breadcrumb"><a href="/categories/backend/" title="分类于 后端">后端</a> <i class="ic i-angle-right"></i> <a href="/categories/backend/%E5%88%86%E5%B8%83%E5%BC%8F%E4%BA%8B%E5%8A%A1/" title="分类于 分布式事务">分布式事务</a> <i class="ic i-angle-right"></i> <a href="/categories/backend/%E5%88%86%E5%B8%83%E5%BC%8F%E4%BA%8B%E5%8A%A1/%E4%BA%8B%E5%8A%A1%E6%A8%A1%E5%BC%8F/" title="分类于 事务模式">事务模式</a></div><span><a href="/2021/ddd8b3452e91/" title="分布式事务:DTM TCC模式">分布式事务:DTM TCC模式</a></span></li><li class="item"><div class="breadcrumb"><a href="/categories/backend/" title="分类于 后端">后端</a> <i class="ic i-angle-right"></i> <a href="/categories/backend/%E5%88%86%E5%B8%83%E5%BC%8F%E4%BA%8B%E5%8A%A1/" title="分类于 分布式事务">分布式事务</a> <i class="ic i-angle-right"></i> <a href="/categories/backend/%E5%88%86%E5%B8%83%E5%BC%8F%E4%BA%8B%E5%8A%A1/%E4%BA%8B%E5%8A%A1%E6%A8%A1%E5%BC%8F/" title="分类于 事务模式">事务模式</a></div><span><a href="/2021/6b628305873a/" title="分布式事务:DTM SAGA模式">分布式事务:DTM SAGA模式</a></span></li><li class="item"><div class="breadcrumb"><a href="/categories/backend/" title="分类于 后端">后端</a> <i class="ic i-angle-right"></i> <a href="/categories/backend/mysql/" title="分类于 mysql">mysql</a></div><span><a href="/2021/b8326b69e0d3/" title="Mysql: on duplicate key update">Mysql: on duplicate key update</a></span></li><li class="item"><div class="breadcrumb"><a href="/categories/backend/" title="分类于 后端">后端</a> <i class="ic i-angle-right"></i> <a href="/categories/backend/%E5%88%86%E5%B8%83%E5%BC%8F%E4%BA%8B%E5%8A%A1/" title="分类于 分布式事务">分布式事务</a></div><span><a href="/2021/b520c7c67266/" title="分布式事务:DTM">分布式事务:DTM</a></span></li><li class="item"><div class="breadcrumb"><a href="/categories/tools/" title="分类于 工具">工具</a> <i class="ic i-angle-right"></i> <a href="/categories/tools/aria2/" title="分类于 aria2">aria2</a> <i class="ic i-angle-right"></i> <a href="/categories/%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6/" title="分类于 配置文件">配置文件</a></div><span><a href="/2020/9982038c8ca6/" title="aria2 配置文件">aria2 配置文件</a></span></li><li class="item"><div class="breadcrumb"><a href="/categories/%E7%AE%97%E6%B3%95/" title="分类于 算法">算法</a> <i class="ic i-angle-right"></i> <a href="/categories/%E7%AE%97%E6%B3%95/leetcode/" title="分类于 leetcode">leetcode</a></div><span><a href="/2023/44b61dee094f/" title="leetcode-1807. 替换字符串中的括号内容">leetcode-1807. 替换字符串中的括号内容</a></span></li></ul></div><div><h2>最新评论</h2><ul class="leancloud-recent-comment"></ul></div></div><div class="status"><div class="copyright">© 2018 – <span itemprop="copyrightYear">2024</span> <span class="with-love"><i class="ic i-sakura rotate"></i> </span><span class="author" itemprop="copyrightHolder">PPYYLEE @ PPYYLEE</span></div><div class="count"><span class="post-meta-item-icon"><i class="ic i-chart-area"></i> </span><span title="站点总字数">33k 字</span> <span class="post-meta-divider">|</span> <span class="post-meta-item-icon"><i class="ic i-coffee"></i> </span><span title="站点阅读时长">30 分钟</span></div><div class="powered-by">基于 <span class="exturl" data-url="aHR0cHM6Ly9oZXhvLmlv">Hexo</span> & Theme.<span class="exturl" data-url="aHR0cHM6Ly9naXRodWIuY29tL2FtZWhpbWUvaGV4by10aGVtZS1zaG9rYQ==">Shoka</span></div><div><a target="_blank" rel="noopener" href="https://beian.miit.gov.cn/">赣ICP备15011505号-2</a></div></div></div></footer></div><script data-config type="text/javascript">var LOCAL={path:"",favicon:{show:"(●´3`●)",hide:"(´Д`)"},search:{placeholder:"文章搜索",empty:"关于 「 ${query} 」,什么也没搜到",stats:"${time} ms 内找到 ${hits} 条结果"},valine:!0,fancybox:!0,copyright:'复制成功,转载请遵守 <i class="ic i-creative-commons"></i>BY-NC-SA 协议。',ignores:[function(e){return e.includes("#")},function(e){return new RegExp(LOCAL.path+"$").test(e)}]}</script><script src="https://cdn.polyfill.io/v2/polyfill.js"></script><script src="//cdn.jsdelivr.net/combine/npm/[email protected]/pace.min.js,npm/[email protected]/pjax.min.js,npm/[email protected]/dist/fetch.umd.min.js,npm/[email protected]/lib/anime.min.js,npm/algoliasearch@4/dist/algoliasearch-lite.umd.js,npm/instantsearch.js@4/dist/instantsearch.production.min.js,npm/lozad@1/dist/lozad.min.js,npm/quicklink@2/dist/quicklink.umd.js"></script><script src="/js/app.js?v=0.2.5"></script></body></html><!-- rebuild by hrmmi -->