<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[菜鸟更要继续努力的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/qq_45472201</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; qq_45472201]]></copyright><item><title><![CDATA[从零到一手写一个小型RPC框架——介绍篇]]></title><link>https://blog.youkuaiyun.com/qq_45472201/article/details/128256984</link><guid>https://blog.youkuaiyun.com/qq_45472201/article/details/128256984</guid><author>qq_45472201</author><pubDate>Fri, 09 Dec 2022 18:01:54 +0800</pubDate><description><![CDATA[小型入门RPC框架]]></description><category></category></item><item><title><![CDATA[Zookeeper基础学习（一）：概述篇]]></title><link>https://blog.youkuaiyun.com/qq_45472201/article/details/123101343</link><guid>https://blog.youkuaiyun.com/qq_45472201/article/details/123101343</guid><author>qq_45472201</author><pubDate>Thu, 24 Feb 2022 00:07:20 +0800</pubDate><description><![CDATA[Zookeeper概述
相信有过微服务经验的同学一定听说过Zookeeper、Nacos等注册中心、配置中心的大名，从今天开始系统认真学习一下Zookeeper的基本原理；
首先抛出几个问题，这也是解决Zookeeper这类中间件到底解决了什么问题的关键：

Zookeeper是什么？
Zookeeper能做什么？

Zookeeper是什么？
根据官网文档的介绍：

ZooKeeper: A Distributed Coordination Service for Distributed Applicat]]></description><category></category></item><item><title><![CDATA[JVM基础学习（二）：内存分配策略与垃圾收集技术]]></title><link>https://blog.youkuaiyun.com/qq_45472201/article/details/123044855</link><guid>https://blog.youkuaiyun.com/qq_45472201/article/details/123044855</guid><author>qq_45472201</author><pubDate>Mon, 21 Feb 2022 12:54:09 +0800</pubDate><description><![CDATA[Java与C++之间有一堵由内存动态分配和垃圾收集技术所围成的高墙，墙外面的人想进去，墙里面的人却想出来

垃圾收集概述
Java内存模型中的堆和方法区是垃圾收集技术所需要关注的终点，因为其他的区域会跟随线程的结束而自动回收。
而需要解决垃圾收集的首要目标便是解决如何判断一个对象已经不需要了从而自动进行回收；判断对象是否可以进行回收的算法可以分为引用计数算法与可达性分析算法。
对于Redis有一些了解的同学应该知道Redis的对象内存回收算法便是使用的引用计数算法；而JVM都是使用的可达性分析算法，在此我.]]></description><category></category></item><item><title><![CDATA[Redis持久化机制之RDB]]></title><link>https://blog.youkuaiyun.com/qq_45472201/article/details/122950804</link><guid>https://blog.youkuaiyun.com/qq_45472201/article/details/122950804</guid><author>qq_45472201</author><pubDate>Tue, 15 Feb 2022 19:20:21 +0800</pubDate><description><![CDATA[Redis的持久化机制有两种：RDB持久化和AOF持久化。因为Redis是一个内存数据库，如果没有合适的持久化机制，那么一旦服务器进程退出，服务器中的数据库状态也会消失。本章介绍RDB持久化机制。
RDB持久化
RDB持久化，是Redis可以将数据库状态保存到一个RDB文件中，并可以通过该RDB文件生成RDB文件的时候的数据库状态。RDB文件是一个经过压缩的二进制文件。
生成RDB文件的Redis命令有两个：

SAVE
BGSAVE

SAVE命令会阻塞Redis服务器，此期间服务器不能处理任何命令请求；]]></description><category></category></item><item><title><![CDATA[深入MySQL（四）：MySQL的SQL查询语句性能优化概述]]></title><link>https://blog.youkuaiyun.com/qq_45472201/article/details/122764428</link><guid>https://blog.youkuaiyun.com/qq_45472201/article/details/122764428</guid><author>qq_45472201</author><pubDate>Sat, 05 Feb 2022 02:03:48 +0800</pubDate><description><![CDATA[对于MySQL的优化而言，SQL查询语句的优化是重要的一部分，一个好的查询语句可以使得该查询的执行效果响应快且获取数据准确。
对于语句查询的原理，我浅读了《高性能MySQL》之后总结为一下几点，所有的SQL查询语句优化的原理归根结底都可以看做以下几点的运用。

优化数据访问
优化扫描行数
重构查询

优化数据访问
对于一个查询而言，有时候导致查询性能低下的原因有可能是因为访问的数据太多，我们可以通过减少访问的数据量进行优化。根据这一策略，我们可以将优化数据访问的步骤分为以下两步：

确认应用程序是否检索大量]]></description><category></category></item><item><title><![CDATA[深入MySQL（三）：MySQL的索引的应用]]></title><link>https://blog.youkuaiyun.com/qq_45472201/article/details/122757064</link><guid>https://blog.youkuaiyun.com/qq_45472201/article/details/122757064</guid><author>qq_45472201</author><pubDate>Sun, 30 Jan 2022 23:26:37 +0800</pubDate><description><![CDATA[在MySQL的优化中，索引的作用绝对算是一个大头，很多时候索引使用得当可以使得一个查询的效率提高几个数量级，同时它还具有自动排序等功能。所以如果是深入MySQL，那么索引绝对是其中重要的一部分。
MySQL中的索引
MySQL中的索引按类型分大致可以分为5类：

主键索引
普通索引
唯一索引
文本索引
组合索引

主键索引
定义：唯一且不为空，简称主键，表中可以没有主键，但是最多只能有一个;
在Innodb中，会默认将主键索引设置为聚簇索引；
一般而言，主键索引的建立符合以下的原则：

与业务无关的自增属性]]></description><category></category></item><item><title><![CDATA[深入MySQL（二）：MySQL的数据类型]]></title><link>https://blog.youkuaiyun.com/qq_45472201/article/details/122757059</link><guid>https://blog.youkuaiyun.com/qq_45472201/article/details/122757059</guid><author>qq_45472201</author><pubDate>Sun, 30 Jan 2022 23:26:00 +0800</pubDate><description><![CDATA[前言
对于MySQL中的数据类型的选择，不同的数据类型看起来可能是相同的效果，但是其实很多时候天差地别。
本章从MySQL中的常用类型出发，结合类型选择的常见错误，贯彻MySQL的常用类型选择。
常用类型
MySQL的常用类型并不多，总的来说分为以下几种：

整数类型
实数类型
字符串类型
日期和时间类型

整数类型
存储整数的话，可以用以下几种数据类型进行表示：TINYINT，SMALLINT，MEDIUMINT，INT，BIGINT，分别使用8,16,24,32,64位进行存储。
同时还可以设置UNSI]]></description><category></category></item><item><title><![CDATA[数据库面试常问知识点：事务相关知识整理]]></title><link>https://blog.youkuaiyun.com/qq_45472201/article/details/119789687</link><guid>https://blog.youkuaiyun.com/qq_45472201/article/details/119789687</guid><author>qq_45472201</author><pubDate>Thu, 19 Aug 2021 13:49:27 +0800</pubDate><description><![CDATA[事务基本概念
什么是事务
事务：指一组操作，可以是一个SQL语句也可以是多个SQL语句；
事务的特性
一般来说，事务要满足四大特性（ACID）

原子性（atomicity）：一个事务是一个不可分割的工作单位，事务中的操作要么都成功要么都失败；
一致性（consistency）：事务必须是使数据库从一个一致性状态变成另外一个一致性状态；
隔离性（isolation）：一个事务的执行不能被其他事务干扰。即一个事务内部的操作及其数据并发的其他事务是隔离的，互不干扰；
持久性（durability）：若一个事务已]]></description><category></category></item><item><title><![CDATA[Java集合进阶之序列化]]></title><link>https://blog.youkuaiyun.com/qq_45472201/article/details/119523599</link><guid>https://blog.youkuaiyun.com/qq_45472201/article/details/119523599</guid><author>qq_45472201</author><pubDate>Mon, 09 Aug 2021 00:06:47 +0800</pubDate><description><![CDATA[Java集合进阶之序列化序列化序列化具体原理启示
序列化
首先我们大家都知道，我们的Java程序它是一直在内存中跑的，然后如果我们需要将一个对象持久化或者在网络中传输的话，那么我们就需要进行序列化，将其转化为二进制；
然后在阅读源码的时候，我们都知道所有容器的底层都会有个存储变量，可能为数组或者其他数据结构，但是我发现基本上所有的容器它底层存储变量都添加了transient修饰符，该修饰符便代表着它并不能进行序列化操作，序列化操作的时候会忽略它；
那么感觉与我们所了解的不符合，那么我们就会非常奇怪，接下来用]]></description><category></category></item><item><title><![CDATA[Java集合进阶之HashMap篇]]></title><link>https://blog.youkuaiyun.com/qq_45472201/article/details/119216817</link><guid>https://blog.youkuaiyun.com/qq_45472201/article/details/119216817</guid><author>qq_45472201</author><pubDate>Sun, 08 Aug 2021 23:56:27 +0800</pubDate><description><![CDATA[Java集合进阶之Map篇Map概述预备知识：哈希表与哈希冲突
Map概述
Map是一个key-value对应的数据结构，他在实际生产环境与面试中都是高频使用与提问，今天我们来深入Map的底层源码，来学习比较各种map；
预备知识：哈希表与哈希冲突
Map的底层数据结构便是哈希表，所以我们有必要在学习Map之前先复习一下我们当时数据结构所学习的哈希表

散列表（Hash table，也叫哈希表），是根据关键码值(Key value)而直接进行访问的数据结构。也就是说，它通过把关键码值映射到表中一个位置来访问]]></description><category></category></item><item><title><![CDATA[Java集合进阶之ArrayList与LinkedList]]></title><link>https://blog.youkuaiyun.com/qq_45472201/article/details/119150679</link><guid>https://blog.youkuaiyun.com/qq_45472201/article/details/119150679</guid><author>qq_45472201</author><pubDate>Thu, 29 Jul 2021 17:33:52 +0800</pubDate><description><![CDATA[这里写自定义目录标题ArrayList类概述增
ArrayList类概述
ArrayList和LinkedList是Java集合类中常用的List类，其中我们众所周知的区别有

ArrayList底层是数组，支持随机访问；LinkedList底层是链表，不支持随机访问；
LinkedList由于底层是链表，所以其insert与remove操作会比ArrayList快很多；
LinkedList常用于栈（Stack）与队列（Queue）

容器嘛，最为核心的属性便是增、删、改、查这四个属性了，而我们今天来深入]]></description><category></category></item><item><title><![CDATA[计算机网络应用层（二）：DNS协议详解]]></title><link>https://blog.youkuaiyun.com/qq_45472201/article/details/118873236</link><guid>https://blog.youkuaiyun.com/qq_45472201/article/details/118873236</guid><author>qq_45472201</author><pubDate>Sun, 18 Jul 2021 19:16:51 +0800</pubDate><description><![CDATA[DNS协议详解前言DNS协议概述DNS工作原理DNS缓存
前言
DNS是计算机网络中应用层的一个协议，可能很多同学碰到过DNS被劫持的情况，我们现在来学习一下DNS协议，来了解为什么DNS被劫持之后，我们便不能访问互联网的原因。
DNS协议概述
我们在网络上看到的url格式可能是这样的：

www.google.com

google十分适合我们人类记忆，因为其是一个简单易记的单词形式。
因特网上的主机可以用多种方式进行标识，常见的有两种：

利用主机名进行标识，例如www.google.com
利用IP地]]></description><category></category></item><item><title><![CDATA[计算机网络应用层（一）：HTTP协议详解]]></title><link>https://blog.youkuaiyun.com/qq_45472201/article/details/118757170</link><guid>https://blog.youkuaiyun.com/qq_45472201/article/details/118757170</guid><author>qq_45472201</author><pubDate>Fri, 16 Jul 2021 11:28:35 +0800</pubDate><description><![CDATA[前言
本博客参考内容来自**《计算机网络自顶向下方法》**与网络博客总结
HTTP概况
Web的应用层协议为HTTP协议（超文本传输协议），是web的核心。
HTTP由两个程序实现：用户程序、服务器程序。
基本Web术语

Web页面：Web页面（文档）由对象组成。一个对象只是一个文件，比如HTML文件，JPEG文件等。多数Web页面含有一个HTML页面和多个引用对象。
Web浏览器：实现HTTP的客户端。
Web服务器：实现HTTP的服务端，存储Web对象，每个对象由URL寻址。
往返时间（Round-T]]></description><category></category></item><item><title><![CDATA[SpringBoot中对于拦截器的使用与应用场景解析]]></title><link>https://blog.youkuaiyun.com/qq_45472201/article/details/118067555</link><guid>https://blog.youkuaiyun.com/qq_45472201/article/details/118067555</guid><author>qq_45472201</author><pubDate>Sun, 20 Jun 2021 11:50:48 +0800</pubDate><description><![CDATA[应用场景

权限检查：检查是否有访问某接口的权限；
日志记录：记录请求信息的日志，便于进行信息监控与统计；
性能检测：慢日志等记录时间的场景；

如何实现拦截器
拦截器接口
public interface HandlerInterceptor {
	/**
	 * 预处理回调方法，预处理
	 * @param request	请求
	 * @param response	响应
	 * @param handler	响应的处理器，自定义Controller
	 * @return	返回true则流程继续，返]]></description><category></category></item><item><title><![CDATA[MySQL原理学习（一）基础架构]]></title><link>https://blog.youkuaiyun.com/qq_45472201/article/details/117885655</link><guid>https://blog.youkuaiyun.com/qq_45472201/article/details/117885655</guid><author>qq_45472201</author><pubDate>Sun, 13 Jun 2021 21:47:47 +0800</pubDate><description><![CDATA[MySQL基础架构前言MySQL组件分层连接器查询缓存分析器优化器执行器小结
前言
本系列基于极客时间MySQL45讲，加以自己的理解以及查阅博客等资料汇总整理，以供大家一起交流学习。
MySQL组件分层
MySQL可以分为Server层与存储引擎层。
Server层包括：

连接器
查询缓存
分析器
优化器
执行器
其他内置函数的实现（日期、时间、数学、加密等）

具体作用举例：
存储过程、触发器、视图等。
存储引擎层包括：
数据的提取和存储。
其架构模式是插件式的，也就是说，可以指定多种数据库引擎，在现]]></description><category></category></item><item><title><![CDATA[对于Java IO的一些理解]]></title><link>https://blog.youkuaiyun.com/qq_45472201/article/details/117804979</link><guid>https://blog.youkuaiyun.com/qq_45472201/article/details/117804979</guid><author>qq_45472201</author><pubDate>Fri, 11 Jun 2021 20:09:40 +0800</pubDate><description><![CDATA[Java NIO前言
前言
在学习JavaSE的时候，大部分人学习的IO都是基于流的BIO，叫做阻塞io。BIO的早期处理文件的方式是边读文件边处理数据，在后期引入了缓冲块流，将文件一次性读入内存再进行操作。
而在jdk1.4中加入了nio的概念，被称为new i/o或者non-block i/o，它是面向Buffer的传输流，Buffer可以将文件一次性读入内存在做后续操作。
在jdk1.7中推出了 nio2 ， 提出了操作系统层面实现的异步I/O。
今天就来进行Java的I/O比较。

...]]></description><category></category></item><item><title><![CDATA[雪花算法生成全局唯一ID的原理及其Java实现]]></title><link>https://blog.youkuaiyun.com/qq_45472201/article/details/117638605</link><guid>https://blog.youkuaiyun.com/qq_45472201/article/details/117638605</guid><author>qq_45472201</author><pubDate>Sun, 06 Jun 2021 23:52:30 +0800</pubDate><description><![CDATA[账号生成算法账号生成算法随机数mysql自增推特开源的雪花算法雪花算法的优缺点总结
账号生成算法
相信大家都有过如何生成账号的困惑，今天我来说一下我初学的时候常用的账号生成算法。

随机数
mysql自增主键
雪花算法

随机数
当时刚刚学习JavaSE，想的是直接随机数生成id，不知道mysql主键可以进行自增。
简单来说，随机生成id会有以下缺点：

每次生成一个id，需要去mysql中查询是否有重复的，这样数据量巨大的时候便会效率及其低下。
分布式环境下若代码比较烂可能会产生线程安全问题。

所以随机]]></description><category></category></item><item><title><![CDATA[JavaSE之Java反射机制详解]]></title><link>https://blog.youkuaiyun.com/qq_45472201/article/details/117629017</link><guid>https://blog.youkuaiyun.com/qq_45472201/article/details/117629017</guid><author>qq_45472201</author><pubDate>Sun, 06 Jun 2021 22:01:48 +0800</pubDate><description><![CDATA[JavaSE之反射机制什么是反射反射提供了哪些功能反射如何使用获取Class对象的方式通过类的class属性通过Object对象的getClass方法通过Class类的forName()静态方法通过ClassLoader构建Class反射的使用创建对象
什么是反射
Java反射机制是指在运行状态中，对于任意一个类，都可以知道该类的所有方法和属性；对于任意一个对象，都可以调用该类的任何一个方法和属性；这种动态获取对象信息和动态调用对象的方法的功能称为Java的反射机制。
简单来说，就是在运行过程中，将对象的方]]></description><category></category></item><item><title><![CDATA[一文带你了解MySQL的数据类型以及常见使用场景]]></title><link>https://blog.youkuaiyun.com/qq_45472201/article/details/117396403</link><guid>https://blog.youkuaiyun.com/qq_45472201/article/details/117396403</guid><author>qq_45472201</author><pubDate>Sun, 30 May 2021 20:08:43 +0800</pubDate><description><![CDATA[前言
MySQL中有许多数据类型，其中用的最多的便是varchar，int等。但是使用过程中我们也会对其他数据类型的使用有疑问，今天就写一篇博客来介绍一下MySQL中的数据类型，及其使用场景。
数据类型分类
MySQL中的数据类型大致可以分为3大类：

数值类型
日期/时间类型
字符串（字符）类型

当然还有一些比较特殊的数据类型，比如 ENUM 等。
数值类型
数值类型相信很多同学都跟我一样，数据量小的时候使用 int 类型，数据量大的时候使用 bigint 类型。
但是其实MySQL里面有多种数据类型，]]></description><category></category></item><item><title><![CDATA[一文带你了解VO、BO、DTO、POJO的异同]]></title><link>https://blog.youkuaiyun.com/qq_45472201/article/details/117391185</link><guid>https://blog.youkuaiyun.com/qq_45472201/article/details/117391185</guid><author>qq_45472201</author><pubDate>Sat, 29 May 2021 21:24:24 +0800</pubDate><description><![CDATA[之前学习SSM的时候没有分包与安全的概念，写项目传输的都是pojo类，参考了其他大佬的发现他们都是再次进行封装，只给前端必要的信息，于是我去找学长了解了一下相关知识，本文系统介绍一下VO、BO、DTO、POJO的异同与使用。
概念
VO（View Object）：视图对象，用于展示层，用处是将某个指定页面的所有数据封装起来。
DTO（Data Transfer Object）：数据传输对象，泛指展示层与服务层之间的数据传输对象。
DO（Domain Object）：领域对象（实体对象），从现实世界中抽象出来]]></description><category></category></item></channel></rss>