<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Aaaabt的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/Aaaabt</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Aaaabt]]></copyright><item><title><![CDATA[RabbitMQ集群架构笔记]]></title><link>https://blog.youkuaiyun.com/Aaaabt/article/details/123038807</link><guid>https://blog.youkuaiyun.com/Aaaabt/article/details/123038807</guid><author>Aaaabt</author><pubDate>Mon, 21 Feb 2022 00:40:54 +0800</pubDate><description><![CDATA[RabbitMQ集群架构笔记
RabbitMQ 四种集群架构
主备模式


warren(兔子窝)，一个主/备方案(主节点如果挂了，从节点提供服务，和ActiveMQ利用Zookeeper做主/备一样)

图中的consumer不仅仅是消费者，可以理解为需求方，通过HaProxy默认路由到主节点，默认也是master提供服务，而当master出现故障之后，下一次路由在HaProxy里配置了一些规则后，它会帮我们路由到备份节点，备份节点就会升级为主节点，而当原主节点修复完成后便会加入该集群，成为新主节点的备份]]></description><category></category></item><item><title><![CDATA[socket、网络模型笔记]]></title><link>https://blog.youkuaiyun.com/Aaaabt/article/details/123002853</link><guid>https://blog.youkuaiyun.com/Aaaabt/article/details/123002853</guid><author>Aaaabt</author><pubDate>Fri, 18 Feb 2022 14:33:23 +0800</pubDate><description><![CDATA[socket、网络模型笔记
Socket是什么？
​		socket是一个文件，也是一个编程模型，本质上是一种管道文件

那么既然是一个文件，就会有文件描述符

同时也是编程接口(Stub)

客户端只有一种socket，即代表服务端的socket，而作为服务端，它有两种socket：

Server Socket File

服务端Socket是虚拟抽象出来的概念，它里面存的是客户端Socket的文件描述符，是操作系统提供的编程模型

listen(80)
clientsocket=serversocke]]></description><category></category></item><item><title><![CDATA[MySQL备份笔记]]></title><link>https://blog.youkuaiyun.com/Aaaabt/article/details/122915446</link><guid>https://blog.youkuaiyun.com/Aaaabt/article/details/122915446</guid><author>Aaaabt</author><pubDate>Sun, 13 Feb 2022 22:32:45 +0800</pubDate><description><![CDATA[MySQL备份笔记
备份的分类维度

备份时数据库的状态

Hot Backup(热备)：正常运行中直接备份
Cold Backup(冷备)：完全停止后备份
Warm Backup(温备)：数据库只读


备份文件的格式

逻辑备份：输出文本或SQL语句
物理备份(裸文件)：备份数据库底层文件，如对于InnoDB来说，一般就是.idb文件以及其他元数据的文件


备份的内容

完全备份：备份完整数据
增量备份：备份数据差异
日志备份：备份Binlog(Binlog代表这一段时间内所有的数据差异，即数据变化的]]></description><category></category></item><item><title><![CDATA[MySQL刷脏]]></title><link>https://blog.youkuaiyun.com/Aaaabt/article/details/122894857</link><guid>https://blog.youkuaiyun.com/Aaaabt/article/details/122894857</guid><author>Aaaabt</author><pubDate>Sat, 12 Feb 2022 12:20:04 +0800</pubDate><description><![CDATA[MySQL刷脏
脏页的产生

更新数据时，只更新了内存中的数据页，没有更新磁盘
内存中数据页和磁盘中数据页不一致，称为脏页

刷脏

将内存中数据页保存至磁盘
同时，删除与此页相关的redo log，推进check point


为什么要刷脏？

内存中的脏页太多，内存不足(会产生性能问题)
redo log文件写满，需要推进check point(会产生性能问题)
系统空闲，提前刷脏，预防上述情况
MySQL关闭前，保存数据

避免被迫刷脏

正确告知InnoDB，服务器的硬盘性能
配置合理的脏页比例上]]></description><category></category></item><item><title><![CDATA[进程间同步方式]]></title><link>https://blog.youkuaiyun.com/Aaaabt/article/details/122822404</link><guid>https://blog.youkuaiyun.com/Aaaabt/article/details/122822404</guid><author>Aaaabt</author><pubDate>Tue, 08 Feb 2022 13:51:19 +0800</pubDate><description><![CDATA[进程间同步方式笔记
线程的同步方式

互斥锁(mutex)
读写锁(rwlock)
自旋锁(spin_lock)
条件变量(condition)

上述方式对进程并不适用，因为进程间的资源是相互独立的，而线程间共享着同一个进程的资源
进程间通信的方法
管道
# 匿名管道
netstat -anlp | grep 8080
cat server.log | grep ERROR | grep Thread
man netstat | more

这里的"|“实际上就是管道的意思，”|“前面部分作为”|"后面的]]></description><category></category></item><item><title><![CDATA[JMM笔记]]></title><link>https://blog.youkuaiyun.com/Aaaabt/article/details/122694043</link><guid>https://blog.youkuaiyun.com/Aaaabt/article/details/122694043</guid><author>Aaaabt</author><pubDate>Tue, 25 Jan 2022 23:54:49 +0800</pubDate><description><![CDATA[JMM笔记
Java内存模型


JCP定义了一种Java内存模型，以前是在JVM规范中，后来独立出来成为JSR-133(Java内存模型和线程规范修订)


内存模型：
在特定的操作协议下，对特定的内存或高速缓存进行读写访问的过程抽象


Java内存模型主要关注JVM中把变量值存储到内存和从内存中取出变量值这样的底层细节



对于Java内存模型，有些基本要求：

所有变量(共享的)都存储在主内存中，每个线程都有自己的工作内存；工作内存中保存该线程使用到的变量的主内存副本拷贝
线程对变量的所有操作(读]]></description><category></category></item><item><title><![CDATA[JVM笔记]]></title><link>https://blog.youkuaiyun.com/Aaaabt/article/details/122674958</link><guid>https://blog.youkuaiyun.com/Aaaabt/article/details/122674958</guid><author>Aaaabt</author><pubDate>Mon, 24 Jan 2022 21:05:22 +0800</pubDate><description><![CDATA[JVM笔记
为什么Java可以跨平台

Java源码首先会被编译成字节码，再由不同平台的JVM进行解析，Java语言在不同的平台上运行时不需要进行重新编译，Java虚拟机在执行字节码的时候，把字节码转换成具体平台上的机器指令。
为什么JVM不直接将源码解析成机器码去执行

准备工作：每次执行都要进行各种语法、语义检查，不能保存下来，性能会受到影响
兼容性：也可以将别的语言解析成字节码

JVM如何加载.class文件



Class Loader：依据特定格式，加载class文件到内存


Executi]]></description><category></category></item><item><title><![CDATA[虚拟内存笔记]]></title><link>https://blog.youkuaiyun.com/Aaaabt/article/details/122599904</link><guid>https://blog.youkuaiyun.com/Aaaabt/article/details/122599904</guid><author>Aaaabt</author><pubDate>Thu, 20 Jan 2022 13:43:29 +0800</pubDate><description><![CDATA[为什么要有虚拟内存
有些进程实际需要的内存很大，超过物理内存的容量，比如一个几十G的游戏，要运行在内存为8G的计算机上
由于多道程序设计，主存是同时可以存放多个进程的逻辑及数据的，这就使得每个进程可用的物理内存更加稀缺
不可能无限增加物理内存，物理内存总会有不够的时候

虚拟内存是什么

虚拟内存是操作系统内存管理的关键技术
使得多道程序运行和大程序运行成为现实
把程序使用内存划分，将部分暂时不使用的内存放置在辅存，这和局部性原理室友关系的，因为程序所使用的内存并不是一次性所有的数据都去读写，所]]></description><category></category></item><item><title><![CDATA[CopyOnWriteArrayList部分源码分析]]></title><link>https://blog.youkuaiyun.com/Aaaabt/article/details/122578461</link><guid>https://blog.youkuaiyun.com/Aaaabt/article/details/122578461</guid><author>Aaaabt</author><pubDate>Wed, 19 Jan 2022 12:52:47 +0800</pubDate><description><![CDATA[CopyOnWriteArrayList部分源码分析为什么会保证线程安全]]></description><category></category></item><item><title><![CDATA[传输层协议笔记(TCP、UDP)]]></title><link>https://blog.youkuaiyun.com/Aaaabt/article/details/122521429</link><guid>https://blog.youkuaiyun.com/Aaaabt/article/details/122521429</guid><author>Aaaabt</author><pubDate>Sun, 16 Jan 2022 12:11:24 +0800</pubDate><description><![CDATA[传输层协议笔记
TCP和UDP差别
端口
​		由传输层的主要作用：提供主机之间不同进程之间的通信可知，在网络层提供了IP地址之后我们需要定位到具体的某一个进程，而定位到具体进程的方式就是通过端口。
主机	—	IP地址
主机网络进程	—	端口
套接字(socket)	—	IP地址 + 端口
端口实际上是一个数字，占16位，端口范围在：0~65535
UDP头部

UDP长度其实是标识UDP数据报文的长度有多长，而UDP校验和是UDP数据附加的标识，通过这个校验和就可以判断数据在传输过程是否有发生差错，也即校]]></description><category></category></item><item><title><![CDATA[HTTP相关学习笔记]]></title><link>https://blog.youkuaiyun.com/Aaaabt/article/details/122511572</link><guid>https://blog.youkuaiyun.com/Aaaabt/article/details/122511572</guid><author>Aaaabt</author><pubDate>Sat, 15 Jan 2022 16:07:05 +0800</pubDate><description><![CDATA[HTTP相关
HTTP/0.9

HTTP协议原型
设计缺陷
只支持GET方法
不支持多媒体内容
只有HTML对象

HTTP/1.0

广泛使用
增加多种方法
支持多媒体对象
无连接、无状态
…

HTTP/1.1
​		更多的从性能及效率去考虑，为了提升性能、效率及减少带宽的使用，提出了很多革新的技术。

长连接
管道化
缓存处理
断点传输
…

HTTP/2.0

性能进一步提升
二进制分帧
多路复用
首部压缩
服务端推送
…

keep-alive 长连接
​		HTTP协议是处于应用层的协议，底层]]></description><category></category></item><item><title><![CDATA[InnoDB逻辑存储结构]]></title><link>https://blog.youkuaiyun.com/Aaaabt/article/details/121885261</link><guid>https://blog.youkuaiyun.com/Aaaabt/article/details/121885261</guid><author>Aaaabt</author><pubDate>Sun, 12 Dec 2021 12:03:13 +0800</pubDate><description><![CDATA[InnoDB逻辑存储结构

表空间(tablespace)
​		表空间指的是数据表在硬盘上的存储空间，也即我们所有的数据和数据表最终都是落在磁盘上的ibd文件中。在默认情况下所有表的数据都存在共享表空间中，也就是在默认情况下，InnoDB就一个ibdata1文件。然而每个表的数据也可以放在独占表空间中，也推荐大家使用独占表空间，因为在增删数据库的时候，ibdata1文件不会自动收缩。而且如果使用独占表空间，每个innodb表数据目录下都会有一个.ibd文件，用来存放对应表的数据和索引，这样的话在数据库崩溃]]></description><category></category></item><item><title><![CDATA[MySQL软件架构]]></title><link>https://blog.youkuaiyun.com/Aaaabt/article/details/121885239</link><guid>https://blog.youkuaiyun.com/Aaaabt/article/details/121885239</guid><author>Aaaabt</author><pubDate>Sun, 12 Dec 2021 12:01:14 +0800</pubDate><description><![CDATA[MySQL软件架构

客户端
​		客户端就是诸如我们平时所用到的Java连接数据库的JDBC等，主要是给MySQL Server发指令和发sql语句来完成我们想要达成的目的。
MySQL Server
​		从整体上看，MySQL Server就是连接了客户端和文件系统的桥梁，帮我们去处理了客户端发起的请求以及反馈从文件系统中获取的数据内容等。
连接器
​		顾名思义，连接器就是用来接收客户端的连接的，一般都是TCP连接。
缓存
​		当连接器连接到客户端并接收到一条Sql查询语句后，会先去缓存中查找，如]]></description><category></category></item><item><title><![CDATA[谈谈自己对B、B+树的一些理解]]></title><link>https://blog.youkuaiyun.com/Aaaabt/article/details/121738094</link><guid>https://blog.youkuaiyun.com/Aaaabt/article/details/121738094</guid><author>Aaaabt</author><pubDate>Sun, 05 Dec 2021 23:57:45 +0800</pubDate><description><![CDATA[谈谈自己对B、B+树的一些理解
1、二叉查找树 Binary Search Tree
​		在正式谈谈B树、B+树之前先谈谈二叉树，在数据库主流的索引查找方式中，线性查找和二分查找我在这就不过多的赘述了，想必大家也很清楚他们的算法了，但是由于在磁盘中，很多时候我们并不能获取到相当大一片连续的物理空间，在其中碎片是非常多的，所以二分查找在数据量庞大的时候就无法找到中间的数据在哪，这也是二分查找的缺陷所在，因此，发展出了二叉查找树。那二叉树的数据结构如下图所示：

可以看到，在二叉查找树中，小于根节点的数都会被]]></description><category></category></item><item><title><![CDATA[使用Stream流完成按年份对已按时间降序排列的博客内容进行分组]]></title><link>https://blog.youkuaiyun.com/Aaaabt/article/details/121448436</link><guid>https://blog.youkuaiyun.com/Aaaabt/article/details/121448436</guid><author>Aaaabt</author><pubDate>Sun, 21 Nov 2021 00:52:07 +0800</pubDate><description><![CDATA[使用Stream流完成按年份对已按时间降序排列的博客内容进行分组
在做自己的博客系统练手项目的时候想到可以做一个时间轴，按年份进行分类，并输出博客的创建时间以及博客标题，那实际上目前也已得知我只需要几个字段：

博客Id：用于点击博客标题的时候跳转详情页面
博客标题
创建时间

那么现在问题来了，我如果要进行根据年份排序，那这个返回的结果肯定是个集合，而这个集合中每一个都有一个年份字段，并且对应的就有一个博客响应参数的集合，有的家人可能就会想到，可以用map解决啊！而事实上，我们也知道HashMap并没有排]]></description><category></category></item><item><title><![CDATA[修改gitee或者github等在本机的默认用户]]></title><link>https://blog.youkuaiyun.com/Aaaabt/article/details/121259726</link><guid>https://blog.youkuaiyun.com/Aaaabt/article/details/121259726</guid><author>Aaaabt</author><pubDate>Thu, 11 Nov 2021 00:20:40 +0800</pubDate><description><![CDATA[修改gitee或者github等在本机的默认用户
之前由于工作的缘故，我需要用到公司的邮箱从gitee上拉取项目，但我通过配置git的全局变量
git config --global user.name "xxx"
git config --global user.email "xxx@xxx.mail"

仍然无法从远端获取，于是我发现，光是修改这个好像没什么用，还需要按照下述步骤修改：
打开控制面板-&gt;凭据管理器-&gt;Windows凭据


然后我们就能看到以下凭据：

点击要修改的凭据，修改]]></description><category></category></item><item><title><![CDATA[kafka学习笔记-客户端操作]]></title><link>https://blog.youkuaiyun.com/Aaaabt/article/details/121253457</link><guid>https://blog.youkuaiyun.com/Aaaabt/article/details/121253457</guid><author>Aaaabt</author><pubDate>Wed, 10 Nov 2021 17:56:31 +0800</pubDate><description><![CDATA[kafka学习笔记-客户端操作
​	kafka其实没有所谓单节点这一说，即使是一个节点也是一个节点的集群，所以kafka默认就是一个集群的形式。

kafka客户端API类型

AdminClient API：允许管理和检测Topic、broker以及其他kafka对象。类似服务器上命令行对topic等操作。
Producer API：发布消息到1个或多个Topic
Consumer API：订阅一个或多个Topic，并处理产生的消息，相对比较复杂的API
Streams API：高效地将输入流转换到输出流]]></description><category></category></item><item><title><![CDATA[kafka学习笔记-初始kafka]]></title><link>https://blog.youkuaiyun.com/Aaaabt/article/details/121222445</link><guid>https://blog.youkuaiyun.com/Aaaabt/article/details/121222445</guid><author>Aaaabt</author><pubDate>Tue, 09 Nov 2021 10:18:45 +0800</pubDate><description><![CDATA[kafka学习笔记-初识kafka
一、纠正误区
​    kafka并不只是大家平时所认为的消息系统，在官网的介绍中又说到：“A distributed streaming platform”–一个分布式流媒体平台。kafka是基于zookeeper的分布式消息系统。
​    kafka具有：

高吞吐率
高性能
实时
高可靠等

二、安装kafka
​    官网下载地址：http://kafka.apache.org/downloads
​	下载完毕后将该压缩包放入服务器的自定义kafka目录下，执]]></description><category></category></item><item><title><![CDATA[Springboot修改了application.yml或者.properties文件的引用后启动报错的问题]]></title><link>https://blog.youkuaiyun.com/Aaaabt/article/details/120966905</link><guid>https://blog.youkuaiyun.com/Aaaabt/article/details/120966905</guid><author>Aaaabt</author><pubDate>Tue, 26 Oct 2021 10:26:10 +0800</pubDate><description><![CDATA[在工作的时候，很多情况下我们会使用定义生产、测试、开发等环境下所用的配置，然后在application.yml或者properties中引用相应的配置，偶然间我在修改配置中的showSql属性时，一启动项目就开始报错
Caused by: java.nio.charset.MalformedInputException: Input length = 1
	at java.nio.charset.CoderResult.throwException(CoderResult.java:281) ~[?:1.8]]></description><category></category></item><item><title><![CDATA[有关多个tomcat的配置]]></title><link>https://blog.youkuaiyun.com/Aaaabt/article/details/119318855</link><guid>https://blog.youkuaiyun.com/Aaaabt/article/details/119318855</guid><author>Aaaabt</author><pubDate>Mon, 02 Aug 2021 10:07:52 +0800</pubDate><description><![CDATA[有关多个tomcat的配置
一、下载安装tomcat
​	下载tomcat的话我们可以去官网上下载免安装版

​	根据自己的需求选择对应的版本

​	以tomcat 9 举例，如果根据自己系统选择下载的压缩包，这个下载下来是免安装的，解压到目的位置之后配置即可用
二、配置
​	解压完后，我们可以右击此电脑 -&gt; 属性 -&gt; 高级系统设置 -&gt; 环境变量



​	这里由于我之前配置过一个tomcat 8 ，所以在这个位置已经有了一个配置，同样的，我们在系统变量中新建一个变量，取另外一个名字]]></description><category></category></item></channel></rss>