<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[好好学习！]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/qq_43673818</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; qq_43673818]]></copyright><item><title><![CDATA[互联网大厂Java求职者面试实录：严肃面试官VS搞笑水货程序员谢飞机]]></title><link>https://blog.youkuaiyun.com/qq_43673818/article/details/159290886</link><guid>https://blog.youkuaiyun.com/qq_43673818/article/details/159290886</guid><author>qq_43673818</author><pubDate>Fri, 20 Mar 2026 23:15:29 +0800</pubDate><description><![CDATA[你能简单说说Java的核心基础知识吗？嗯，Java是一种面向对象的编程语言，有JVM，写一次，处处跑。不错，回答得简洁明了，继续。你知道Java并发编程中JUC包的主要作用吗？JUC就是java.util.concurrent，里面有很多工具类，比如线程池、锁，还有并发集合。很好，有点儿基础。那你能说说JVM内存模型主要有哪些区域吗？JVM内存有堆、栈、方法区，还有程序计数器，堆是存对象的。]]></description><category></category></item><item><title><![CDATA[【源码】Spring源码解析（一）IOC容器]]></title><link>https://blog.youkuaiyun.com/qq_43673818/article/details/122778676</link><guid>https://blog.youkuaiyun.com/qq_43673818/article/details/122778676</guid><author>qq_43673818</author><pubDate>Thu, 03 Feb 2022 21:30:18 +0800</pubDate><description><![CDATA[本文对Spring IOC容器的启动流程以及Bean的生命周期的各个阶段的源码进行了详细的分析，并对BeanFactory的继承体系进行了较详细的介绍。]]></description><category></category></item><item><title><![CDATA[【个人项目】基于 Netty，Nacos 的 RPC 框架的实现]]></title><link>https://blog.youkuaiyun.com/qq_43673818/article/details/122483135</link><guid>https://blog.youkuaiyun.com/qq_43673818/article/details/122483135</guid><author>qq_43673818</author><pubDate>Thu, 13 Jan 2022 21:27:54 +0800</pubDate><description><![CDATA[yuanlin-rpc-framework
yuanlin-rpc-framework 是一款基于 Netty 实现的 RPC 框架，框架主要分为网络传输、服务发布、服务调用三个部分，实现了多种序列化方法和负载均衡策略，注册中心支持 ZooKeeper 和 Nacos。
架构

服务提供者（server）向注册中心（registry）注册服务，服务消费者（client）通过注册中心获取服务地址，再通过网络向服务提供者发起服务调用请求。
特性
通用

良好的接口抽象，详细的中文注释，单元测试
实现 4 种序列]]></description><category></category></item><item><title><![CDATA[zookeeper安装]]></title><link>https://blog.youkuaiyun.com/qq_43673818/article/details/121956158</link><guid>https://blog.youkuaiyun.com/qq_43673818/article/details/121956158</guid><author>qq_43673818</author><pubDate>Wed, 15 Dec 2021 16:55:37 +0800</pubDate><description><![CDATA[1.安装JDK，注意要配置 JAVA_HOME
拿到JDK的安装路径，比如
C:\Program Files\Java\jdk1.8.0_211

2. 下载zookeeper

3. 解压安装包
解压安装包，新建data和log包

4.修改配置文件
conf文件
将zoo_sample.cfg 拷贝一份为zoo.cfg，然后添加下面两行

env文件
在zkEnv中添加一行设置JAVA_HOME

zkServer.cmd
添加pause防止cmd闪退

5.点击zkServer启动zookeeper
]]></description><category></category></item><item><title><![CDATA[【数据结构】手写小顶堆（实现泛型和简单扩容）]]></title><link>https://blog.youkuaiyun.com/qq_43673818/article/details/119798348</link><guid>https://blog.youkuaiyun.com/qq_43673818/article/details/119798348</guid><author>qq_43673818</author><pubDate>Thu, 19 Aug 2021 11:33:09 +0800</pubDate><description><![CDATA[小顶堆
/**
 * @Author yl
 * 小顶堆
 */
public class MyHeap&lt;T&gt; {

    private int size = 0;

    private T[] queue;

    private Comparator&lt;T&gt; comparator;

    public MyHeap(Integer size, Comparator&lt;T&gt; comparator) {
        queue = (T[]) new Obj]]></description><category></category></item><item><title><![CDATA[【源码】常用容器源码流程梳理]]></title><link>https://blog.youkuaiyun.com/qq_43673818/article/details/119549477</link><guid>https://blog.youkuaiyun.com/qq_43673818/article/details/119549477</guid><author>qq_43673818</author><pubDate>Mon, 09 Aug 2021 23:34:25 +0800</pubDate><description><![CDATA[文章目录ListArrayList

本文是我在浏览了常用容器类的源码后，对他们的底层数据结构、重要属性、扩容流程，增加元素，获取元素，删除元素的方法进行的一个梳理

List
ArrayList
     1.底层数据结构 + 成员变量
	     elementData（Object[]）：存放数据
	     size（int）：当前集合元素个数
	     elementData.length（int）：当前集合容量
	     DEFAULT_CAPACITY（int）：集合默认最小容量为 10
]]></description><category></category></item><item><title><![CDATA[【Git】GitLab学习笔记]]></title><link>https://blog.youkuaiyun.com/qq_43673818/article/details/116211302</link><guid>https://blog.youkuaiyun.com/qq_43673818/article/details/116211302</guid><author>qq_43673818</author><pubDate>Tue, 27 Apr 2021 22:27:26 +0800</pubDate><description><![CDATA[GitHub

GitHub是一个面向开源及私有软件项目的托管平台，因为只支持git作为唯一的版本库格式进行托管，故名GitHub。
GitHub于2008年4月10日正式上线，除了Git代码仓库托管及基本的 Web管理界面以外，还提供了订阅、讨论组、文本渲染、在线文件编辑器、协作图谱（报表）、代码片段分享（Gist）等功能。目前，其注册用户已经超过350万，托管版本数量也是非常之多，其中不乏知名开源项目Spring、MyBatis、React、Vue等。
2018年6月4日，微软宣布，通过75亿美元的股票]]></description><category></category></item><item><title><![CDATA[【Git】Git学习笔记（Git架构，创建仓库，版本控制，分支管理）]]></title><link>https://blog.youkuaiyun.com/qq_43673818/article/details/116194823</link><guid>https://blog.youkuaiyun.com/qq_43673818/article/details/116194823</guid><author>qq_43673818</author><pubDate>Tue, 27 Apr 2021 21:49:21 +0800</pubDate><description><![CDATA[文章目录Git简介什么是项目的版本管理？团队协同开发版本管理工具--GitGit架构Git的基本使用Git设置用户信息Git回退版本远程仓库分支分支常用指令企业中分支常用模型总结
Git简介
什么是项目的版本管理？

在项目开发过程中，项目每开发到一个阶段都对当前项目进行一次备份，这个备份就是项目的一个版本。当我们继续开发一个阶段，再进行备份，就生成了多个版本。多个版本的集合就是项目的版本库。

项目管理中的一些问题

需要手动维护版本的更新日志，记录版本的变化
需要手动查找历史版本，当历史版本比较多的时候]]></description><category></category></item><item><title><![CDATA[【项目开发】常用流程图]]></title><link>https://blog.youkuaiyun.com/qq_43673818/article/details/116143237</link><guid>https://blog.youkuaiyun.com/qq_43673818/article/details/116143237</guid><author>qq_43673818</author><pubDate>Mon, 26 Apr 2021 09:35:17 +0800</pubDate><description><![CDATA[文章目录类图状态图时序图原型图E-R图
类图
类图是描述系统中的类，以及各个类之间的关系的静态视图。能够让我们在正确编写代码以前对系统有一个全面的认识。类图是一种模型类型，确切的说，是一种静态模型类型。


状态图
描述类的对象所有可能的状态，以及事件发生时状态的转移条件。可以捕获对象、子系统和系统的生命周期。他们可以告知一个对象可以拥有的状态，并且事件(如消息的接收、时间的流逝、错误、条件变为真等)会怎么随着时间的推移来影响这些状态。一个状态图应该连接到所有具有清晰的可标识状态和复杂行为的类；该图可以确定]]></description><category></category></item><item><title><![CDATA[【计算机网络】计算机网络巩固学习（网络层）]]></title><link>https://blog.youkuaiyun.com/qq_43673818/article/details/115841620</link><guid>https://blog.youkuaiyun.com/qq_43673818/article/details/115841620</guid><author>qq_43673818</author><pubDate>Wed, 21 Apr 2021 17:34:11 +0800</pubDate><description><![CDATA[网络层
通过路由器将各种网络连接起来，屏蔽掉各种网络在物理上或者其他方面的不同。但我们利用IP协议就可以使这些不同的网络在用户看来好像是一个统一的网络。
使用IP协议的虚拟互连网络称为IP网。
在这种覆盖全球的IP网的上部使用TCP协议，就是现在的互联网。

各类IP地址的网络号字段和主机号字段。

使用点分十进制法表示IP地址

一般不使用的特殊的IP地址

IP地址的重要特点。



如何将IP地址转为MAC地址。
ARP地址解析协议
ARP 是解决同一个局域网上主机与路由器的 IP 地址和 MAC 地]]></description><category></category></item><item><title><![CDATA[【计算机网络】计算机网络巩固学习（基本分层，物理层，数据链路层）]]></title><link>https://blog.youkuaiyun.com/qq_43673818/article/details/115832700</link><guid>https://blog.youkuaiyun.com/qq_43673818/article/details/115832700</guid><author>qq_43673818</author><pubDate>Sun, 18 Apr 2021 21:10:48 +0800</pubDate><description><![CDATA[基本分层
OSI七层模型

应用层：最高层，直接为应用进程通信提供服务。
表示层：为应用层提供数据的表示、压缩、加密。
会话层：用于在两个会话层主体之间建立和管理连接。
传输层：为端到端提供传输服务，有TCP和UDP协议。
网络层：网络层将数据封装成数据报，将数据报从源端传到目的端，同时进行路由选择。
数据链路层：在物理层提供比特流的基础上，建立相邻节点之间的数据链路，通过差错控制在信道上进行传输。
物理层：定义物理链路的电气、规程等特性，实现透明传输比特流。

五层模型
应用层，传输层，网络层，数据链路层]]></description><category></category></item><item><title><![CDATA[【Java并发】死锁实例（两个线程互相等待资源）]]></title><link>https://blog.youkuaiyun.com/qq_43673818/article/details/115798299</link><guid>https://blog.youkuaiyun.com/qq_43673818/article/details/115798299</guid><author>qq_43673818</author><pubDate>Sat, 17 Apr 2021 17:17:38 +0800</pubDate><description><![CDATA[开启两个线程，先各自获取一个资源，然后尝试获取对方的资源。
public class TestInput {

    static Object resource_one = new Object();
    static Object resource_two = new Object();

    public static void main(String[] args) {
        Thread1 thread1 = new Thread1();
        Thread2 thr]]></description><category></category></item><item><title><![CDATA[【Java并发】模拟JDK1.7 HashMap发生死锁]]></title><link>https://blog.youkuaiyun.com/qq_43673818/article/details/115797691</link><guid>https://blog.youkuaiyun.com/qq_43673818/article/details/115797691</guid><author>qq_43673818</author><pubDate>Sat, 17 Apr 2021 16:58:34 +0800</pubDate><description><![CDATA[注：如果当前JDK版本不是1.7可以先安装一下JDK1.7，然后在IDEA的Project Structure调一下使用的JDK版本，再在settings中调一下java complier的版本，就可以使用JDK1.7了。（如果是maven项目不要使用maven重新导入，否则Project Structure中的修改会被还原）
代码非常简单，创建80个线程一直插入数据，多试几次，知道发生死锁。
public class TestInput {

    static HashMap&lt;String, S]]></description><category></category></item><item><title><![CDATA[【Java虚拟机】Java VisualVM使用]]></title><link>https://blog.youkuaiyun.com/qq_43673818/article/details/115567403</link><guid>https://blog.youkuaiyun.com/qq_43673818/article/details/115567403</guid><author>qq_43673818</author><pubDate>Sat, 10 Apr 2021 11:08:13 +0800</pubDate><description><![CDATA[堆溢出实例
通过不断创建Object对象，并加入到List中，导致堆溢出。
import java.util.ArrayList;
import java.util.List;

/**
 * -Xms100M -Xmx100M
 * -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=D:/
 */
public class HeapOOM {
    public static void main(String[] args) {
        List&]]></description><category></category></item><item><title><![CDATA[【Java虚拟机】OOM各种情况实例（堆，栈，元空间，直接内存）]]></title><link>https://blog.youkuaiyun.com/qq_43673818/article/details/115564535</link><guid>https://blog.youkuaiyun.com/qq_43673818/article/details/115564535</guid><author>qq_43673818</author><pubDate>Sat, 10 Apr 2021 10:34:51 +0800</pubDate><description><![CDATA[文章目录堆溢出（OOM：Java Heap Space）栈溢出（unable to create new native thread）栈溢出（StackOverFlowError）元空间溢出（OOM:MetaSpace）直接内存溢出（OOM:Direct buffer memory）堆内存太小（OOM：GC overhead limit exceeded）

代码放在了GitHub上，需要的话可以直接拉：
https://github.com/yuanlin-repository/-OOM-

堆溢出（OO]]></description><category></category></item><item><title><![CDATA[【Redis】Redis持久化原理，主从复制，哨兵，集群]]></title><link>https://blog.youkuaiyun.com/qq_43673818/article/details/115489562</link><guid>https://blog.youkuaiyun.com/qq_43673818/article/details/115489562</guid><author>qq_43673818</author><pubDate>Wed, 07 Apr 2021 16:48:44 +0800</pubDate><description><![CDATA[文章目录RedisRedis的高可用性系统处于不可用什么叫Redis的不可用redis基于哨兵的高可用性Redis 持久化RDBAOFRedis replication 主从复制master持久化对主从架构安全的意义主从复制原理全量复制增量复制主从复制断点续传无磁盘化复制过期key处理心跳检测哨兵介绍核心知识异步复制集群脑裂异步复制和脑裂导致的数据丢失如何降低损失减少异步复制的数据丢失减少脑裂的数据丢失主观宕机和客观宕机哨兵集群的自动发现机制slave配置的自动纠正slave-&gt;master选举算法q]]></description><category></category></item><item><title><![CDATA[【Redis】Redis工具类（设置，删除，设置超时，自增，自减，类型转换）]]></title><link>https://blog.youkuaiyun.com/qq_43673818/article/details/115485271</link><guid>https://blog.youkuaiyun.com/qq_43673818/article/details/115485271</guid><author>qq_43673818</author><pubDate>Wed, 07 Apr 2021 14:41:58 +0800</pubDate><description><![CDATA[public class RedisService {
	
	@Autowired
	JedisPool jedisPool;
	
	/**
	 * 获取当个对象
	 * */
	public &lt;T&gt; T get(KeyPrefix prefix, String key,  Class&lt;T&gt; clazz) {
		 Jedis jedis = null;
		 try {
			 jedis =  jedisPool.getResource();
			 //生成真正的key
			]]></description><category></category></item><item><title><![CDATA[【Redis】常见面试题总结]]></title><link>https://blog.youkuaiyun.com/qq_43673818/article/details/115440959</link><guid>https://blog.youkuaiyun.com/qq_43673818/article/details/115440959</guid><author>qq_43673818</author><pubDate>Mon, 05 Apr 2021 14:52:08 +0800</pubDate><description><![CDATA[文章目录Redis概述什么是RedisRedis为什么这么快Redis有哪些数据类型Redis底层数据结构Redis底层实现之跳跃表Redis持久化机制RDBAOF缓存异常缓存雪崩缓存穿透缓存击穿缓存预热缓存更新缓存降级热点数据和冷数据事务Redis事务的概念Redis事务的三个阶段Redis事务相关命令事务的ACIDRedis分布式问题分布式锁什么是 RedLock常用工具Redis支持的Java客户端都有哪些？官方推荐用哪个？Redis和Redisson有什么关系？Jedis与Redisson对比有什么]]></description><category></category></item><item><title><![CDATA[【项目开发问题】SpringBoot整合Mybatis，日期无法转化，MD5加盐]]></title><link>https://blog.youkuaiyun.com/qq_43673818/article/details/115008953</link><guid>https://blog.youkuaiyun.com/qq_43673818/article/details/115008953</guid><author>qq_43673818</author><pubDate>Fri, 19 Mar 2021 16:14:22 +0800</pubDate><description><![CDATA[1.在SpringBoot启动类上配置要扫描的包

2.配置yml文档
server:
  port: 8080

spring:
  datasource:
    username: root
    password: 123456
    url: jdbc:mysql://localhost:3306/seckill?useUnicode=true&amp;characterEncoding=UTF-8&amp;useJDBCCompliantTimezoneShift=true&amp;useL]]></description><category></category></item><item><title><![CDATA[【Redis】SpringBoot整合Redis]]></title><link>https://blog.youkuaiyun.com/qq_43673818/article/details/114836941</link><guid>https://blog.youkuaiyun.com/qq_43673818/article/details/114836941</guid><author>qq_43673818</author><pubDate>Mon, 15 Mar 2021 17:42:56 +0800</pubDate><description><![CDATA[文章目录一、创建SpringBoot项目Redis 可以配置的字段二、测试1. 配置yml2. 原生API测试（RedisTemplate）3. 自定义RedisTemplate
一、创建SpringBoot项目
创建时勾上 Redis。

注意：在 SpringBoot 2.x 之后，原来使用的 jedis 被替换为了 lettuce。

jedis 和 lettuce 有什么区别呢？

jedis：采用直连，多个线程操作时不安全，如果想要避免不安全，使用 jedis pool 连接池！BIO
lettu]]></description><category></category></item></channel></rss>