<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[zztIsGood的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/zztIsGood</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; zztIsGood]]></copyright><item><title><![CDATA[事务分类与理解]]></title><link>https://blog.youkuaiyun.com/zztIsGood/article/details/106783030</link><guid>https://blog.youkuaiyun.com/zztIsGood/article/details/106783030</guid><author>zztIsGood</author><pubDate>Tue, 16 Jun 2020 11:12:08 +0800</pubDate><description><![CDATA[传统型事务
一阶段提交协议（Mysql）
XA 两阶段提交协议（分布式事务：prepare + commit）

2PC



两段提交（2PC）的缺点
二阶段提交看似能够提供原子性的操作，但它存在着严重的缺陷
网络抖动导致的数据不一致： 第二阶段中协调者向参与者发送commit命令之后，一旦此时发生网络抖动，导致一部分参与者接收到了commit请求并执行，可其他未接到commit请求的参与者无法执行事务提交。进而导致整个分布式系统出现了数据不一致。
超时导致的同步阻塞问题： 2PC中的所有的参与者节点都为]]></description><category></category></item><item><title><![CDATA[计算机网络 谢希仁版笔记]]></title><link>https://blog.youkuaiyun.com/zztIsGood/article/details/106084020</link><guid>https://blog.youkuaiyun.com/zztIsGood/article/details/106084020</guid><author>zztIsGood</author><pubDate>Tue, 02 Jun 2020 09:46:37 +0800</pubDate><description><![CDATA[3. 数据链路层

差错检测；现实的通信链路都不会是理想的，存在一定的信噪比，从而导致误码率；为了保证数据的可靠传输，在数据链路层广泛的采用了循环冗余校验（CRC）
传输差错可分为两大类：比特差错（由于信噪比、硬件设施的原因）、传输差错（帧丢失、帧重复、帧乱序）
为了保证传输的质量，现在使用了两种方式实现可靠性传输协议（这样做可以提高通信效率）：

对于通信质量良好的有线传输链路，如果数据链路层出现差错，需要由上层协议改进（如传输层、TCP）
对于信号质量较差的无线传输链路，使用确认重传机制。


在通信线]]></description><category></category></item><item><title><![CDATA[Redis 设计与实现]]></title><link>https://blog.youkuaiyun.com/zztIsGood/article/details/105715827</link><guid>https://blog.youkuaiyun.com/zztIsGood/article/details/105715827</guid><author>zztIsGood</author><pubDate>Fri, 08 May 2020 19:47:28 +0800</pubDate><description><![CDATA[数据结构对象
简单动态字符串

redis 使用SDS（simple Dynamic String）作为可被修改的字符串值；C字符串作为简单字面量（不可变更）。
SDS 除了作为字符串值之外，还当做缓冲区；AOF模块中的缓冲区和客户端的缓冲区。

SDS遵循空字符串结尾的好处是可以使用C的部分函数。
SDS的优势：

降低获取字符串的时间复杂度
杜绝缓冲区溢出（不用注意SDS的空间大小，在设置值的...]]></description><category></category></item><item><title><![CDATA[基于不同场景的幂等性技术实施方案]]></title><link>https://blog.youkuaiyun.com/zztIsGood/article/details/105527457</link><guid>https://blog.youkuaiyun.com/zztIsGood/article/details/105527457</guid><author>zztIsGood</author><pubDate>Wed, 15 Apr 2020 09:22:51 +0800</pubDate><description><![CDATA[背景
在实际操作的过程中很多业务都需要校验操作的幂等性，譬如：

防止表单重复提交
账户金额扣减
MQ消息的重复消费

幂等性的概念
幂等（idempotent、idempotence）是一个数学与计算机学概念，常见于抽象代数中。在编程中，一个幂等操作的特点是其任意多次执行所产生的影响均与一次执行的影响相同。（通俗的理解就是，一次操作和多次操作产生的影响都是相同的）
幂等性的技术实现
DB操作

...]]></description><category></category></item><item><title><![CDATA[MySQL优化：基于成本计算的优化]]></title><link>https://blog.youkuaiyun.com/zztIsGood/article/details/105372226</link><guid>https://blog.youkuaiyun.com/zztIsGood/article/details/105372226</guid><author>zztIsGood</author><pubDate>Tue, 07 Apr 2020 21:11:30 +0800</pubDate><description><![CDATA[12 谁最便宜就选谁 ----MySQL基于成本的优化
查询成本由两方面组成：

IO成本
MyISAM、InnoDB存储引擎都是将数据和索引都存储到磁盘上的,从磁盘到内存这个加载的过程损耗的时间称之为I/O成本。
CPU成本
读取以及检测记录是否满⾜对应的搜索条件、对结果集进⾏排序等这些操作损耗的时间称之为CPU成本。

设计MySQL的⼤叔规定读取⼀个⻚⾯花费的成本默认是1.0，读取以及检测⼀...]]></description><category></category></item><item><title><![CDATA[kafka 权威指南笔记]]></title><link>https://blog.youkuaiyun.com/zztIsGood/article/details/105346581</link><guid>https://blog.youkuaiyun.com/zztIsGood/article/details/105346581</guid><author>zztIsGood</author><pubDate>Mon, 06 Apr 2020 20:36:12 +0800</pubDate><description><![CDATA[1.2 kafka 登场
1.2.1 消息和批次

Kafka 的数据单元被称为消息。
为了提高效率，消息被分批次写入 Kafka 批次就是 组消息，这些消息属于同一 主题和分区。

1.2.2 模式
可以理解是kafka的消息结构；序列化协议
1.2.3 主题和分区
主题可以被分为若干个分区 个分区就是一个提交日志。消息以追加的方式写入分区，然后以先入先出的顺序读取。由于一个主题可以被分为多个分...]]></description><category></category></item><item><title><![CDATA[JVM 监控工具使用]]></title><link>https://blog.youkuaiyun.com/zztIsGood/article/details/105244722</link><guid>https://blog.youkuaiyun.com/zztIsGood/article/details/105244722</guid><author>zztIsGood</author><pubDate>Mon, 06 Apr 2020 14:17:45 +0800</pubDate><description><![CDATA[jmap（查看内存）

-heap 打印内存统计的数据（在mac 上有bug）
-histo[:live] 查看类在jvm中实例化的对象的统计；如果添加live参数，则只统计当前存活的对象
jmap -dump:file=XXX.hprof,format=b pid 生成heapdump文件

jmap -heap
sh-4.1# jmap -heap 1
Attaching to process...]]></description><category></category></item><item><title><![CDATA[InnoDB一棵B+树可以存放多少行数据？]]></title><link>https://blog.youkuaiyun.com/zztIsGood/article/details/103815188</link><guid>https://blog.youkuaiyun.com/zztIsGood/article/details/103815188</guid><author>zztIsGood</author><pubDate>Fri, 03 Jan 2020 10:26:14 +0800</pubDate><description><![CDATA[一个问题？
InnoDB一棵B+树可以存放多少行数据？这个问题的简单回答是：约2千万。为什么是这么多呢？因为这是可以算出来的，要搞清楚这个问题，我们先从InnoDB索引数据结构、数据组织方式说起。
我们都知道计算机在存储数据的时候，有最小存储单元，这就好比我们今天进行现金的流通最小单位是一毛。在计算机中磁盘存储数据最小单元是扇区，一个扇区的大小是512字节，而文件系统（例如XFS/EXT4）他的最...]]></description><category></category></item><item><title><![CDATA[Git 之 revert]]></title><link>https://blog.youkuaiyun.com/zztIsGood/article/details/103727211</link><guid>https://blog.youkuaiyun.com/zztIsGood/article/details/103727211</guid><author>zztIsGood</author><pubDate>Fri, 27 Dec 2019 10:33:24 +0800</pubDate><description><![CDATA[revert 可以取消指定的提交内容。
当讨论 revert 时，需要分两种情况，因为 commit 分为两种：一种是常规的 commit，也就是使用 git commit 提交的 commit；另一种是 merge commit，在使用 git merge 合并两个分支之后，你将会得到一个新的 merge commit
merge commit 和普通 commit 的不同之处在于 merge ...]]></description><category></category></item><item><title><![CDATA[JAVA SpringBoot 项目打成jar包供第三方引用自动配置(Spring发现)解决方案]]></title><link>https://blog.youkuaiyun.com/zztIsGood/article/details/103452315</link><guid>https://blog.youkuaiyun.com/zztIsGood/article/details/103452315</guid><author>zztIsGood</author><pubDate>Tue, 17 Dec 2019 10:05:53 +0800</pubDate><description><![CDATA[需求描述
当我们想要利用SpringBoot封装一套组件并发布给第三方使用时，我们就不得不考虑我们的组件能否被使用者正确引入使用，此处描述的时打包成 jar 包后 Spring 配置类不为扫描、未注册Bean的问题。
解决方案
此处提供三种解决方案，友好型依次提升。
1、使用者手动配置 basePackages
2、使用者通过注解方式启用配置
3、SpringBoot 主动发现
正文开始
第一种：...]]></description><category></category></item><item><title><![CDATA[JAVA程序员基本修养笔记]]></title><link>https://blog.youkuaiyun.com/zztIsGood/article/details/102881866</link><guid>https://blog.youkuaiyun.com/zztIsGood/article/details/102881866</guid><author>zztIsGood</author><pubDate>Mon, 04 Nov 2019 08:51:22 +0800</pubDate><description><![CDATA[数组及其内存管理

java数组是静态的（静态变量被初始化之后不可以再次赋值），当数组被初始化之后该内存空间和数组长度都不可以变化。

静态数组初始化 （指定数组内容，由系统指定数组长度）
动态初始化（指定数组长度之后再次赋值数组内容）


java数组变量是一种引用变量，数组变量并不是数组本身，他是指向堆内存中的数组对象
对数组执行初始化，并不是对数组变量执行初始化，而是对数组对象初始化，分配一...]]></description><category></category></item><item><title><![CDATA[JAVA8日期API]]></title><link>https://blog.youkuaiyun.com/zztIsGood/article/details/100744281</link><guid>https://blog.youkuaiyun.com/zztIsGood/article/details/100744281</guid><author>zztIsGood</author><pubDate>Wed, 11 Sep 2019 18:07:24 +0800</pubDate><description><![CDATA[https://blog.youkuaiyun.com/weixin_40413816/article/details/83658973

]]></description><category></category></item><item><title><![CDATA[平时碰到系统CPU飙高和频繁GC，排查的基本解决思路]]></title><link>https://blog.youkuaiyun.com/zztIsGood/article/details/99694046</link><guid>https://blog.youkuaiyun.com/zztIsGood/article/details/99694046</guid><author>zztIsGood</author><pubDate>Sat, 17 Aug 2019 16:10:06 +0800</pubDate><description><![CDATA[对于线上系统突然产生的运行缓慢问题，如果该问题导致线上系统不可用，那么首先需要做的就是，导出jstack和内存信息，然后重启系统，尽快保证系统的可用性。这种情况可能的原因主要有两种：
代码中某个位置读取数据量较大，导致系统内存耗尽，从而导致Full GC次数过多，系统缓慢；
代码中有比较耗CPU的操作，导致CPU过高，系统运行缓慢；
相对来说，这是出现频率最高的两种线上问题，而且它们会直接导致系统...]]></description><category></category></item><item><title><![CDATA[JAVA8 Lambda reduce的用法]]></title><link>https://blog.youkuaiyun.com/zztIsGood/article/details/98507376</link><guid>https://blog.youkuaiyun.com/zztIsGood/article/details/98507376</guid><author>zztIsGood</author><pubDate>Mon, 05 Aug 2019 18:40:05 +0800</pubDate><description><![CDATA[JAVA8-LAMBDA中reduce的用法
理解、学习与使用 JAVA 中的 OPTIONAL

]]></description><category></category></item><item><title><![CDATA[SpringBoot 配置参数加载顺序]]></title><link>https://blog.youkuaiyun.com/zztIsGood/article/details/98041857</link><guid>https://blog.youkuaiyun.com/zztIsGood/article/details/98041857</guid><author>zztIsGood</author><pubDate>Thu, 01 Aug 2019 11:38:27 +0800</pubDate><description><![CDATA[顺序如下：
数字小的优先级越高，即数字小的会覆盖数字大的参数值，我们来实践下，验证以上配置参数的加载顺序。

1、开发者工具 `Devtools` 全局配置参数；

2、单元测试上的 `@TestPropertySource` 注解指定的参数；

3、单元测试上的 `@SpringBootTest` 注解指定的参数；

4、命令行指定的参数，如 `java -jar springboot.jar ...]]></description><category></category></item><item><title><![CDATA[http code 502/503/504]]></title><link>https://blog.youkuaiyun.com/zztIsGood/article/details/90289813</link><guid>https://blog.youkuaiyun.com/zztIsGood/article/details/90289813</guid><author>zztIsGood</author><pubDate>Fri, 17 May 2019 11:19:05 +0800</pubDate><description><![CDATA[50X 的分析
还是百度最真实


]]></description><category></category></item><item><title><![CDATA[JAVA多态]]></title><link>https://blog.youkuaiyun.com/zztIsGood/article/details/90286373</link><guid>https://blog.youkuaiyun.com/zztIsGood/article/details/90286373</guid><author>zztIsGood</author><pubDate>Fri, 17 May 2019 08:50:48 +0800</pubDate><description><![CDATA[1、缺陷：覆盖私有方法

2、缺陷：域与静态方法


这里的静态和域 与私有方法类似；会开辟独立的空间进行存储。

]]></description><category></category></item><item><title><![CDATA[【协议森林】彻底理解cookie、session、token]]></title><link>https://blog.youkuaiyun.com/zztIsGood/article/details/90052233</link><guid>https://blog.youkuaiyun.com/zztIsGood/article/details/90052233</guid><author>zztIsGood</author><pubDate>Fri, 10 May 2019 09:46:14 +0800</pubDate><description><![CDATA[发展史
1、很久很久以前，Web 基本上就是文档的浏览而已， 既然是浏览，作为服务器， 不需要记录谁在某一段时间里都浏览了什么文档，每次请求都是一个新的HTTP协议， 就是请求加响应，  尤其是我不用记住是谁刚刚发了HTTP请求，   每个请求对我来说都是全新的。这段时间很嗨皮
2、但是随着交互式Web应用的兴起，像在线购物网站，需要登录的网站等等，马上就面临一个问题，那就是要管理会话，必须记住哪...]]></description><category></category></item><item><title><![CDATA[线程池的实现方式]]></title><link>https://blog.youkuaiyun.com/zztIsGood/article/details/88378843</link><guid>https://blog.youkuaiyun.com/zztIsGood/article/details/88378843</guid><author>zztIsGood</author><pubDate>Sun, 10 Mar 2019 15:15:06 +0800</pubDate><description><![CDATA[ThreadPoolExecutor
概述：
Executor框架的最顶层实现是ThreadPoolExecutor类，Executors工厂类中提供的newScheduledThreadPool、newFixedThreadPool、newCachedThreadPool方法其实也只是ThreadPoolExecutor的构造函数参数不同而已。通过传入不同的参数，就可以构造出适用于不同应用场景下...]]></description><category></category></item><item><title><![CDATA[JVM 概念与参数调优]]></title><link>https://blog.youkuaiyun.com/zztIsGood/article/details/88045644</link><guid>https://blog.youkuaiyun.com/zztIsGood/article/details/88045644</guid><author>zztIsGood</author><pubDate>Thu, 28 Feb 2019 21:36:05 +0800</pubDate><description><![CDATA[JVM 基本概念
JVM运行时数据区分类

JVM栈 (Java Virtual Machine Stacks)
堆内存 (Heap Memory)
方法区 (Method Area)
本地方法栈 (Native Method Stacks)
程序计数器 (Program Counter (PC) Register)


作者：张启露
来源：优快云
原文：https://blog.csdn.ne...]]></description><category></category></item></channel></rss>