<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[IT小跟班]]></title><description><![CDATA[着重于后端，略知些前端，双管齐下才是真]]></description><link>https://blog.youkuaiyun.com/ye17186</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; ye17186]]></copyright><item><title><![CDATA[Jackson将json串转成List或Map等集合]]></title><link>https://blog.youkuaiyun.com/ye17186/article/details/125166572</link><guid>https://blog.youkuaiyun.com/ye17186/article/details/125166572</guid><author>ye17186</author><pubDate>Tue, 07 Jun 2022 15:51:35 +0800</pubDate><description><![CDATA[Jackson将json串转成List、Map等集合时，需要保证集合内的元素泛型不能丢失。
方法一每次都需要构建TypeReference参数，比较麻烦，也不够美观，因此不推荐这种方式。方法二写好工具类后，封装好JavaType参数，即可直接使用了，推荐此方法
方法二：（推荐）...]]></description><category></category></item><item><title><![CDATA[Hexo博客icarus主题定制篇]]></title><link>https://blog.youkuaiyun.com/ye17186/article/details/111564883</link><guid>https://blog.youkuaiyun.com/ye17186/article/details/111564883</guid><author>ye17186</author><pubDate>Tue, 22 Dec 2020 19:27:12 +0800</pubDate><description><![CDATA[本文基于Hexo和Icarus4.1.1版本，对博客主题定制过程做一个记录。在icarus4.0版本中，主题npm方式安装的话，本地将不会有主题相关的文件，需要定制的话，可以通过修改node_modules中的对应文件来完成。虽然方法不是很优雅，但是暂时也找不到解决方法。
定制CDN
由于总所周知的原因，默认的CDN可能会被墙掉，造成网站打开速度极慢。我们可以找到_config.icarus.yml，将CDN改成如下：
providers:
    cdn: loli
    fontcdn: loli
 ]]></description><category></category></item><item><title><![CDATA[SpringBoot 异步线程间传递上下文]]></title><link>https://blog.youkuaiyun.com/ye17186/article/details/111028900</link><guid>https://blog.youkuaiyun.com/ye17186/article/details/111028900</guid><author>ye17186</author><pubDate>Fri, 11 Dec 2020 09:59:04 +0800</pubDate><description><![CDATA[SpringBoot异步线程间传递上下文需求实现启用异步功能配置异步配置任务装饰器完工
需求
SpringBoot项目中，经常使用@Async来开启一个子线程来完成异步操作。主线程中的用户信息需要传递给子线程
实现
启用异步功能
在启动类里加上@EnableAsync注解
@EnableAsync
@SpringBootApplication
public class Application {}

配置异步
新建一个配置类，实现AsyncConfigurer接口，并重写getAsyncExecutor方法]]></description><category></category></item><item><title><![CDATA[简述JVM内存模型中的五大分区]]></title><link>https://blog.youkuaiyun.com/ye17186/article/details/106092575</link><guid>https://blog.youkuaiyun.com/ye17186/article/details/106092575</guid><author>ye17186</author><pubDate>Wed, 13 May 2020 10:34:44 +0800</pubDate><description><![CDATA[JVM内存模型，主要包含五个区域。其中线程共享：方法区和堆，线程私有：虚拟机栈、本地方法栈和程序计数器

方法区
方法区是用来存储被Java虚拟机加载的类信息，常量，静态变量，运行时常量池等。在jdk8以前，方法区中定义了永久代。因为使用永久代来实现了方法区，所以被描述为堆的一个逻辑部分。但是它确是“非堆”，只是设计堆中的收集器 扩展到了方法区而已。在jdk8的时候，永久代被替换成了元空间（Metaspace）。这样做的好处有以下原因：

Metaspace使用的是本地内存
字符串常量池存在永久代中，容易出]]></description><category></category></item><item><title><![CDATA[CAP定理]]></title><link>https://blog.youkuaiyun.com/ye17186/article/details/103901723</link><guid>https://blog.youkuaiyun.com/ye17186/article/details/103901723</guid><author>ye17186</author><pubDate>Thu, 09 Jan 2020 09:27:30 +0800</pubDate><description><![CDATA[CAP定理简介BASE理论ZK与CP、Eureka与AP
简介
CAP定理指的是一个分布式系统中，Consistency（一致性）、Availability（可用性）、Partition tolerance（分区容错性），三者不可兼得。

一致性（C）：分布式系统中多个主机之间是否能够保持数据一致的特性。即当系统数据发生变更后，各个主机中的数据仍然处于一致的状态。
可用性（A）：系统提供的服务必须...]]></description><category></category></item><item><title><![CDATA[【JDK源码学习】HaspMap扩容操作]]></title><link>https://blog.youkuaiyun.com/ye17186/article/details/102482796</link><guid>https://blog.youkuaiyun.com/ye17186/article/details/102482796</guid><author>ye17186</author><pubDate>Thu, 10 Oct 2019 16:44:33 +0800</pubDate><description><![CDATA[HashMap的扩容是学习HashMap源码的重中之重，面试中经常被问到。本文就以实例的方式，解析HashMap的扩容过程，以及JDK1.8和1.7的扩容操作的区别

一、什么时候HashMap会扩容

调用HashMap的put方法时，如果当前的数组（HashMap的底层数据结构就是数组）为null，或者数组的长度大于阈值（数组长度*负载因子）时，会发生扩容。数组为null时，会扩容成默认长度或...]]></description><category></category></item><item><title><![CDATA[SpringBoot跨域问题CORS解决]]></title><link>https://blog.youkuaiyun.com/ye17186/article/details/93984088</link><guid>https://blog.youkuaiyun.com/ye17186/article/details/93984088</guid><author>ye17186</author><pubDate>Fri, 28 Jun 2019 12:12:52 +0800</pubDate><description><![CDATA[前后端分离的项目中，接口和页面往往部署中不同的服务中，这个时候就是出现跨域的问题。如果是SpringBoot项目，可以采用下面两种方式来解决跨域问题。

一、全局配置（推荐）


@Configuration
public class CorsMappingConfig implements WebMvcConfigurer {

    @Override
    public void add...]]></description><category></category></item><item><title><![CDATA[【JDK源码学习】HashMap源码分析]]></title><link>https://blog.youkuaiyun.com/ye17186/article/details/91600597</link><guid>https://blog.youkuaiyun.com/ye17186/article/details/91600597</guid><author>ye17186</author><pubDate>Wed, 12 Jun 2019 20:59:57 +0800</pubDate><description><![CDATA[HashMap在日常开发中使用频率相当频繁，面试中也会经常被问到。这个java中常用的集合类之一，学习下其源码很有必要。

本文会分析HashMap的数据结构、构造函数，常用方法put、get，扩容，链表与红黑树互转。

一、静态属性


/**
* 默认初始容量 - 必须是2的幂
*/
static final int DEFAULT_INITIAL_CAPACITY = 1 &lt;&lt; ...]]></description><category></category></item><item><title><![CDATA[SpringBoot全局配置日期类型参数Date自动绑定，返回结果自动格式化]]></title><link>https://blog.youkuaiyun.com/ye17186/article/details/90712056</link><guid>https://blog.youkuaiyun.com/ye17186/article/details/90712056</guid><author>ye17186</author><pubDate>Fri, 31 May 2019 12:19:49 +0800</pubDate><description><![CDATA[网上的说法有很多，但都不太全面，本文是通过自己实践后，总结出来的处理方式。自定绑定和自动格式化是两种不同的处理，所以需要针对这两个进行配置，以springboot自带的jackson为例

一、接收参数自动绑定

1、配置一个String转Date的转化器


public class StringToDateConverter implements Converter&lt;String, Da...]]></description><category></category></item><item><title><![CDATA[【JAVA设计模式】工厂模式详细解读之工厂方法模式]]></title><link>https://blog.youkuaiyun.com/ye17186/article/details/90637731</link><guid>https://blog.youkuaiyun.com/ye17186/article/details/90637731</guid><author>ye17186</author><pubDate>Tue, 28 May 2019 13:57:29 +0800</pubDate><description><![CDATA[工厂方法模式(Factory Method Pattern)又称为工厂模式，也叫虚拟构造器(Virtual Constructor)模式或者多态工厂(Polymorphic Factory)模式，它属于类创建型模式。

工厂方法模式是一种实现了“工厂”概念的面向对象设计模式。就像其他创建型模式一样，它也是处理在不指定对象具体类型的情况下创建对象的问题。

工厂方法模式的实质是“定义一个创建对象的接...]]></description><category></category></item><item><title><![CDATA[【JAVA设计模式】工厂模式详细解读之简单工厂模式]]></title><link>https://blog.youkuaiyun.com/ye17186/article/details/90636459</link><guid>https://blog.youkuaiyun.com/ye17186/article/details/90636459</guid><author>ye17186</author><pubDate>Tue, 28 May 2019 13:36:15 +0800</pubDate><description><![CDATA[工厂模式可以分为三类：

1、简单工厂模式（Simple Factory）

2、工厂方法模式（Factory Method）

3、抽象工厂模式（Abstract Factory）

这三种模式逐步抽象，并且更具有一般性。在设计模式分类中都属于创建型模式。

创建型模式(Creational Pattern)对类的实例化过程进行了抽象，能够将软件模块中对象的创建和对象的使用分离。为了使软件的结构...]]></description><category></category></item><item><title><![CDATA[【JDK源码学习】JDK中的CAS操作及ABA问题如何解决]]></title><link>https://blog.youkuaiyun.com/ye17186/article/details/89963341</link><guid>https://blog.youkuaiyun.com/ye17186/article/details/89963341</guid><author>ye17186</author><pubDate>Mon, 13 May 2019 14:02:18 +0800</pubDate><description><![CDATA[一、解释

CAS的全称是compare-and-swap，即比较和交换。虽然看起来的先比较再交换，无法保证原子性，其实其利用的是底层硬件，是一条CPU的原子指令，是线程安全的。jdk中的juc包中的线程安全性，都是基于CAS实现的。其处理过程是：CAS操作需要输出两个数值，其一是旧值（操作前的值），其二是新值，在操作期间先比较一下旧值是否发生的变化，如果没有变化，则用新值替换旧值，否则不交换。
...]]></description><category></category></item><item><title><![CDATA[RocketMQ中Topic、Tag如何正确使用]]></title><link>https://blog.youkuaiyun.com/ye17186/article/details/89640286</link><guid>https://blog.youkuaiyun.com/ye17186/article/details/89640286</guid><author>ye17186</author><pubDate>Sun, 28 Apr 2019 16:23:57 +0800</pubDate><description><![CDATA[一、概念

1、Topic：消息主题，通过 Topic 对不同的业务消息进行分类。

2、Tag：消息标签，用来进一步区分某个 Topic 下的消息分类，消息队列 RocketMQ 允许消费者按照 Tag 对消息进行过滤，确保消费者最终只消费到他关注的消息类型。

Topic 与 Tag 都是业务上用来归类的标识，区分在于 Topic 是一级分类，而 Tag 可以说是二级分类，关系如图所示。


...]]></description><category></category></item><item><title><![CDATA[缓存穿透、缓存击穿、缓存雪崩及解决方案]]></title><link>https://blog.youkuaiyun.com/ye17186/article/details/89469074</link><guid>https://blog.youkuaiyun.com/ye17186/article/details/89469074</guid><author>ye17186</author><pubDate>Tue, 23 Apr 2019 11:32:16 +0800</pubDate><description><![CDATA[系统中常常用Redis来做缓存，极大的提升了系统性能和效率，但同时也存在一些问题。其一是数据一致性问题，严格意义上来讲，只要用到缓存，那就会有一致性问题，这是无解的。另一个问题就是本文要讲的缓存穿透、缓存击穿、缓存雪崩，不仅仅局限于Redis，其他方式实现的缓存，也存在着三个问题。

一、缓存穿透

缓存穿透是指，用户在查询一个数据库肯定不存在的数据时，这时的返回结果的null，结果不会存入缓存。...]]></description><category></category></item><item><title><![CDATA[Java线程池七个参数详解]]></title><link>https://blog.youkuaiyun.com/ye17186/article/details/89467919</link><guid>https://blog.youkuaiyun.com/ye17186/article/details/89467919</guid><author>ye17186</author><pubDate>Tue, 23 Apr 2019 11:14:33 +0800</pubDate><description><![CDATA[java多线程开发时，常常用到线程池技术，这篇文章是对创建java线程池时的七个参数的详细解释。
从源码中可以看出，线程池的构造函数有7个参数，分别是corePoolSize、maximumPoolSize、keepAliveTime、unit、workQueue、threadF...]]></description><category></category></item><item><title><![CDATA[【JAVA设计模式】单例模式之七种常见写法分析]]></title><link>https://blog.youkuaiyun.com/ye17186/article/details/89355483</link><guid>https://blog.youkuaiyun.com/ye17186/article/details/89355483</guid><author>ye17186</author><pubDate>Wed, 17 Apr 2019 17:09:29 +0800</pubDate><description><![CDATA[简介

单例模式是一种常见的设计模式，其定义是单例对象的类，在虚拟机中只运行一个实例存在。在多线程环境下，应该提供一定的机制，确保只会产生一个实例

一、饿汉式--静态变量（推荐）


public class MySingleton1 {

    private static MySingleton1 instance = new MySingleton1();

    public sta...]]></description><category></category></item><item><title><![CDATA[常用的分布式事务解决方案]]></title><link>https://blog.youkuaiyun.com/ye17186/article/details/89352992</link><guid>https://blog.youkuaiyun.com/ye17186/article/details/89352992</guid><author>ye17186</author><pubDate>Wed, 17 Apr 2019 11:51:39 +0800</pubDate><description><![CDATA[转载请注明出处：https://blog.youkuaiyun.com/u010425776/article/details/79516298


众所周知，数据库能实现本地事务，也就是在同一个数据库中，你可以允许一组操作要么全都正确执行，要么全都不执行。这里特别强调了本地事务，也就是目前的数据库只能支持同一个数据库中的事务。但现在的系统往往采用微服务架构，业务系统拥有独立的数据库，因此就出现了跨多个数据库的...]]></description><category></category></item><item><title><![CDATA[JVM之GC垃圾回收机制]]></title><link>https://blog.youkuaiyun.com/ye17186/article/details/89083434</link><guid>https://blog.youkuaiyun.com/ye17186/article/details/89083434</guid><author>ye17186</author><pubDate>Mon, 08 Apr 2019 14:08:52 +0800</pubDate><description><![CDATA[学习JVM中的垃圾回收机制，就是要弄清楚下面三个问题

1、哪些内存需要被回收

2、什么时候回收这些内存

3、如何回收这些内存

针对以上三个问题，逐个分析

一、哪些内存需要被回收

垃圾回收器在判断一个对象是否需要被回收时，有两种算法

1、引用计数法

给每个对象添加一个引用计数器，每当有一个地方引用这个对象时，计数器加1，当引用失效时减1。当对象的引用计数器为0时，就代表这个对象可以被...]]></description><category></category></item><item><title><![CDATA[Linux（CentOS 7.2）下设置Nginx开机自动启动]]></title><link>https://blog.youkuaiyun.com/ye17186/article/details/89026691</link><guid>https://blog.youkuaiyun.com/ye17186/article/details/89026691</guid><author>ye17186</author><pubDate>Thu, 04 Apr 2019 16:36:18 +0800</pubDate><description><![CDATA[CentOS 7以上使用Systemd进行系统初始化的，服务文件已.service结尾。现在要设置nginx开机自动启动，如果使用yum安装的nginx，安装是会自动创建nginx.service服务，我们直接使用如下命令即可设置成开机自动启动


[root@localhost ~]# systemctl enable nginx.service


1、创建nginx.service

如果是...]]></description><category></category></item><item><title><![CDATA[HashMap容量和负载因子]]></title><link>https://blog.youkuaiyun.com/ye17186/article/details/88876417</link><guid>https://blog.youkuaiyun.com/ye17186/article/details/88876417</guid><author>ye17186</author><pubDate>Fri, 29 Mar 2019 10:17:22 +0800</pubDate><description><![CDATA[HashMap底层数据结构是数组+链表，JDK1.8中还引入了红黑树，当链表长度超过8个时，会将链表转成红黑树，以提升其查找性能。那么，给出一个&lt;key, value&gt;节点，HashMap是如何确定这个节点应该放在具体哪个位置呢？（以JDK1.8为例）


final V putVal(int hash, K key, V value, boolean onlyIfAbsent,
bo...]]></description><category></category></item></channel></rss>