<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Chilx的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/showchi</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; showchi]]></copyright><item><title><![CDATA[高效易用的 MAC 版 SVN 客户端：macSvn 使用体验]]></title><link>https://blog.youkuaiyun.com/showchi/article/details/148401669</link><guid>https://blog.youkuaiyun.com/showchi/article/details/148401669</guid><author>showchi</author><pubDate>Tue, 03 Jun 2025 15:21:18 +0800</pubDate><description><![CDATA[最近有个项目要使用svn, 但是mac缺乏一款像 Windows 平台 TortoiseSVN 那样全面、高效且便捷的 SVN 客户端工具, 直到博主找到了该工具本文将结合实际使用体验，详细介绍 macSvn工具的核心功能与操作指南。从 官网下载对应版本的安装包 https://www.macsvn.co/zh-cn/
双击即可安装
安装完成后 macSvn可以无缝和访达衔接, 只需要简单配置

配置完成后即可在放到中看到
同时支持右键操作文件
博主现在只是简单的使用macSvn, 能轻松的上手, 估推荐给]]></description><category></category></item><item><title><![CDATA[JVM之类加载过程]]></title><link>https://blog.youkuaiyun.com/showchi/article/details/120769842</link><guid>https://blog.youkuaiyun.com/showchi/article/details/120769842</guid><author>showchi</author><pubDate>Thu, 14 Oct 2021 18:25:02 +0800</pubDate><description><![CDATA[类加载过程
类加载过程分为以下三个过程 加载 -&gt; 链接 -&gt; 初始化，而链接又可以分为三个过程 验证 -&gt; 准备 -&gt; 解析。
整个类加载过程入下图

类的整个生命周期在此基础上又加了两个过程 使用 -&gt; 卸载。



加载
查找并加载类的二进制数据。


链接

验证
确保类的信息都是正确的，符合当前使用虚拟机的规范。

文件格式验证：验证字节流是否符合Class文件的格式规范，且能被当前虚拟机处理
源数据验证：对字节码描述的信息进行语义分析，以保证其描述的信息符合Java]]></description><category></category></item><item><title><![CDATA[并发编程之BlockingQueue]]></title><link>https://blog.youkuaiyun.com/showchi/article/details/116537433</link><guid>https://blog.youkuaiyun.com/showchi/article/details/116537433</guid><author>showchi</author><pubDate>Sat, 08 May 2021 18:21:58 +0800</pubDate><description><![CDATA[文章目录一、 简介二、BlockingQueue核心方法三、具体实现1、ArrayBlockingQueue2、LinkedBlockingQueue
一、 简介
BlockingQueue简介


首先它一个队列，所以它继承了Queue接口具有队列的特性；
其次是一个阻塞队列。


我们平时常用的队列只要为一下两种

先进先出-FIFO：先插入的数据最先出队列，类似我们排队买东西，先排队的先买
先进后出-LIFO：后插入的数据最先出队列，类似我们放羽毛球的球筒，先放进去的最后才能拿出来

队列不只有这两种]]></description><category></category></item><item><title><![CDATA[BlockingQueue之LinkedBlockingQueue]]></title><link>https://blog.youkuaiyun.com/showchi/article/details/116537551</link><guid>https://blog.youkuaiyun.com/showchi/article/details/116537551</guid><author>showchi</author><pubDate>Sat, 08 May 2021 18:18:10 +0800</pubDate><description><![CDATA[文章目录1 核心参数2 构造方法3 核心方法
LinkedBlockingQueue

LinkedBlockingQueue是一种基于单向链表 的阻塞队列。其队头和队尾分别有两个指针来控制，所以生产者和消费者可以采用独立的锁来控制数据同步，也就意味着在高并发的情况下，生产者和消费者是可以同时操作队列的，从而提高了队列的并发性。
​		因为生产者和消费者是不同的锁控制的，所以记录队列总数count是一个AtomicInteger的原子变量

1 核心参数
public class LinkedBlockin]]></description><category></category></item><item><title><![CDATA[BlockingQueue之ArrayBlockingQueue]]></title><link>https://blog.youkuaiyun.com/showchi/article/details/116537490</link><guid>https://blog.youkuaiyun.com/showchi/article/details/116537490</guid><author>showchi</author><pubDate>Sat, 08 May 2021 18:16:12 +0800</pubDate><description><![CDATA[文章目录1 核心参数2 构造方法3 核心方法
ArrayBlockingQueue

基于数组的阻塞队列，底层数据结构为定长的数组，实例化的时候必须指定数组的长度

1 核心参数
public class ArrayBlockingQueue&lt;E&gt; extends AbstractQueue&lt;E&gt;
        implements BlockingQueue&lt;E&gt;, java.io.Serializable {
		
    /** 存储数据的数组 */
    fi]]></description><category></category></item><item><title><![CDATA[林妹妹问我@Value怎么使用]]></title><link>https://blog.youkuaiyun.com/showchi/article/details/115517861</link><guid>https://blog.youkuaiyun.com/showchi/article/details/115517861</guid><author>showchi</author><pubDate>Thu, 08 Apr 2021 13:23:03 +0800</pubDate><description><![CDATA[文章目录1、String类型2、Array类型3、List/Set集合类型4、 Map类型5、ConfigurationProperties6、附加7、结束语
博主正在开心的准备看英雄联盟季后赛 FPX和RNG的比赛，这时候女朋友林妹妹走过来
林妹妹：我最近在学习spring，现在学到了数据绑定@Value这个注解，学的不是很明白，你能给我讲讲吗？
博主：等一会哈，我看完比赛
林妹妹：你说什么？
博主：你听错的我时候的马山开始，看什么比赛（害怕中…）
准备好了吧，咱们先从简单类型开始
1、String类型
]]></description><category></category></item><item><title><![CDATA[SpringAOP之注解方式]]></title><link>https://blog.youkuaiyun.com/showchi/article/details/115377576</link><guid>https://blog.youkuaiyun.com/showchi/article/details/115377576</guid><author>showchi</author><pubDate>Thu, 01 Apr 2021 16:32:22 +0800</pubDate><description><![CDATA[文章目录1、概述2、实现方式2.1 代理方式分为两种：**动态代理**、**静态代理**2.2 代理方式的选择3、名词解释4、具体实现4.1 新建springboot项目并映入AOP依赖4.2 编写注解类4.3 编写切面类4.4 注意事项5、演示
1、概述

SpringAOP不是一门技术而是一种设计思想，称为面向切面编程，是利用横切技术剖析对象内部，将业务之间共同调用的逻辑提取并封装为一个可复用的模块，这个模块被命名为切面（Aspect），该模块减少系统中的重复代码，降低模块间的耦合度，可用于日志、权限认]]></description><category></category></item><item><title><![CDATA[idea  搭建 spring-framework-5.1.x源码详情]]></title><link>https://blog.youkuaiyun.com/showchi/article/details/114061986</link><guid>https://blog.youkuaiyun.com/showchi/article/details/114061986</guid><author>showchi</author><pubDate>Thu, 25 Feb 2021 14:01:23 +0800</pubDate><description><![CDATA[文章目录一、gradle配置二、导入spring源码三、验证
一、gradle配置

从gradle官网下在自己需要的版本，博主下载的是5.6.3的

配置环境变量
博主用的是mac所以这里就只介绍mac下配置gradle，windows下配置和配置java环境变量一致，如果有不明白的可以参考这篇文章windows配置gradle
打开环境变量文件

open -e .bash_profile

追加以下内容
# gradle
GRADLE_HOME=/Users/xx/xxx/xxx/gradle-5.6]]></description><category></category></item><item><title><![CDATA[springboot+mybatis+tkmybatis+postgresSQL实现主键返回，自定义handler处理数组和jsonb]]></title><link>https://blog.youkuaiyun.com/showchi/article/details/109852507</link><guid>https://blog.youkuaiyun.com/showchi/article/details/109852507</guid><author>showchi</author><pubDate>Fri, 20 Nov 2020 16:40:42 +0800</pubDate><description><![CDATA[文章目录1、前言2、项目搭建2.1 springboot搭建2.2 集成mybatis2.3 集成tk.mapper2.4 集成postgreSQL2.5 集成pagehelper2.6 添加库表3、项目配置3.1 生成实体文件3.2 类型转换器3.2.1 数组类型转换器3.2.2 实体类型转换器3.2.3 实体数组类型转换器3.3 返回主键配置3.2 复杂类型返回4、测试4.1 增加4.2 修改4.3 查询4.4 删除
1、前言
公司的一个项目是用springdata jpa实现的，但是公司中没人对DDD]]></description><category></category></item><item><title><![CDATA[Docker介绍及镜像制作和导入]]></title><link>https://blog.youkuaiyun.com/showchi/article/details/108874885</link><guid>https://blog.youkuaiyun.com/showchi/article/details/108874885</guid><author>showchi</author><pubDate>Tue, 29 Sep 2020 20:12:35 +0800</pubDate><description><![CDATA[文章目录1、docker简介2、docker安装3、从 docker hub下载安装镜像4、镜像制作4.1、通过官方镜像制作（不建议）4.2、通过Dockefiler制作（建议）5、镜像导出和导出6、基本命令
作者： 良霄
1、docker简介
官网： https://www.docker.com/

什么是docker
Docker时Docker.Lnc公司开源的一个基于LXC（linux容器）技术之上搭建的Container容器引擎，源代码托管在Github上，基于Go语言并遵从Apache2.0协议开]]></description><category></category></item><item><title><![CDATA[SpringBean生命周期详情]]></title><link>https://blog.youkuaiyun.com/showchi/article/details/106432322</link><guid>https://blog.youkuaiyun.com/showchi/article/details/106432322</guid><author>showchi</author><pubDate>Fri, 29 May 2020 20:36:41 +0800</pubDate><description><![CDATA[啥也不说先来一波流程图

下面咱们详细说下每个步骤

1、根据配置调用Bean的构造方法或者工厂方法实例化Bean
2、根据完成Bean对属性的依赖注入
3、如果Bean实现了BeanNameAware接口, Spring调用setBeanName方法传入beanId
4、如果Bean实现了BeanFactoryAware接口, Spring调用setBeanFactory方法传入当前工厂实例的引用
5、如果Bean实现了ApplicationContextAware接口,spring调用setApplic]]></description><category></category></item><item><title><![CDATA[那些年我们忽略的集群时钟不同步问题]]></title><link>https://blog.youkuaiyun.com/showchi/article/details/106230110</link><guid>https://blog.youkuaiyun.com/showchi/article/details/106230110</guid><author>showchi</author><pubDate>Wed, 20 May 2020 11:22:38 +0800</pubDate><description><![CDATA[文章目录1. 问题引出2. 时钟同步2.1 服务器都可以联网2.2 只有一台服务可联网或都不能联网
1. 问题引出
时钟指的是服务器时间，当集群中的各个服务器之间的时钟不一致的时候必然会导致一些问题。
我们以电商为例，当有三个并发同时请求服务求来下单，请求通过Ngnix转发分别分发到不同的服务上，而此时服务器的时间是不一致的，时间如下图分别为五点，八点和十点，请求处理过程中我们会把服务器的当前时间当做订单的创建时间保存到数据库中，那么当我们根据订单的创建时间进行排序的时候就会出现问题，存在订单顺序错乱的问题]]></description><category></category></item><item><title><![CDATA[浅谈一致性hash]]></title><link>https://blog.youkuaiyun.com/showchi/article/details/106219619</link><guid>https://blog.youkuaiyun.com/showchi/article/details/106219619</guid><author>showchi</author><pubDate>Tue, 19 May 2020 19:30:43 +0800</pubDate><description><![CDATA[文章目录什么是Hash普通Hash的分析普通Hash存在的问题一致性Hashg概念实现普通Hash和一致性Hash普通Hash实现一致性Hash实现不带虚拟节点实现带虚拟节点实现
什么是Hash

Hash就是把任意长度的输入,通过散列算法,变换成固定长度的输出,该输出就是散列值。例如Integer.hashCode()，String.hashCode() 等。就算是输入的那内容不一致也有可能导致输出的hash值一致，这种情况就是hash碰撞，hash碰撞是不可避免的，设计出高效的hash算法是不容易的。
]]></description><category></category></item><item><title><![CDATA[java集合之HashMap源码分析]]></title><link>https://blog.youkuaiyun.com/showchi/article/details/106197947</link><guid>https://blog.youkuaiyun.com/showchi/article/details/106197947</guid><author>showchi</author><pubDate>Mon, 18 May 2020 18:09:47 +0800</pubDate><description><![CDATA[文章目录HashMap基本介绍初始化数据操作添加元素 put(K, V)获取元素 get(K)删除元素(K)总结
HashMap基本介绍

底层数结构

jdk_1.8之前的底层数据结构是数组 + 链表

jdk_1.8之前的底层数据结构是数组 + 链表 + 红黑树




本篇主要分析的是jdk_1.8

继承体系

public class HashMap&lt;K,V&gt; extends AbstractMap&lt;K,V&gt;
    implements Map&lt;K,V&gt;, C]]></description><category></category></item><item><title><![CDATA[java集合之LinkedList源码分析]]></title><link>https://blog.youkuaiyun.com/showchi/article/details/105861248</link><guid>https://blog.youkuaiyun.com/showchi/article/details/105861248</guid><author>showchi</author><pubDate>Thu, 30 Apr 2020 15:14:01 +0800</pubDate><description><![CDATA[文章目录LinkedList基本介绍初始化数据操作添加元素获取元素删除元素总结
LinkedList基本介绍

底层数结构


LinkedList的底层数据结构是链表


继承体系

public class LinkedList&lt;E&gt;
    extends AbstractSequentialList&lt;E&gt;
    implements List&lt;E&gt;, ...]]></description><category></category></item><item><title><![CDATA[java集合之ArrayList源码分析]]></title><link>https://blog.youkuaiyun.com/showchi/article/details/105839897</link><guid>https://blog.youkuaiyun.com/showchi/article/details/105839897</guid><author>showchi</author><pubDate>Wed, 29 Apr 2020 15:19:55 +0800</pubDate><description><![CDATA[文章目录ArrayList基本介绍初始化添加删除总结
ArrayList基本介绍

底层数据结构


ArrayList实际上就是动态数组, 所以他的底层数据结构为数组(Array)


继承体系

public class ArrayList&lt;E&gt; extends AbstractList&lt;E&gt;
        implements List&lt;E&gt;, Rand...]]></description><category></category></item><item><title><![CDATA[解决tomcat8.5.x控制台乱码]]></title><link>https://blog.youkuaiyun.com/showchi/article/details/105630191</link><guid>https://blog.youkuaiyun.com/showchi/article/details/105630191</guid><author>showchi</author><pubDate>Mon, 20 Apr 2020 11:10:50 +0800</pubDate><description><![CDATA[问题发现
最近在研究spring和springMvc的源码 在构建代码的时候用的是tomcat 8.5.54
项目部署在tomcat中启动发现日志中文乱码

问题解决
在网上找了好多解决方法都没有成功解决问题
最后修改了 conf/logging.properties中的日志编码成功成功解决问题
把java.util.logging.ConsoleHandler.encoding = UTF-8修...]]></description><category></category></item><item><title><![CDATA[SpringBean循环依赖]]></title><link>https://blog.youkuaiyun.com/showchi/article/details/105452529</link><guid>https://blog.youkuaiyun.com/showchi/article/details/105452529</guid><author>showchi</author><pubDate>Sat, 11 Apr 2020 14:44:21 +0800</pubDate><description><![CDATA[SpringBean循环依赖什么是循环依赖循环依赖的方式循环依赖的解决prototype(多例)singleton（单例）
啥也不说先来一波时序图

什么是循环依赖

循环依赖其实就是循环引⽤，也就是两个或者两个以上的 Bean 互相持有对⽅，最终形成闭环。⽐如A
依赖于B， B依赖于C， C⼜依赖于A, 如下图


循环依赖的方式

构造器循环依赖  --&gt; 构造器注入
Filed属性循环...]]></description><category></category></item><item><title><![CDATA[设计模式之单例设计模式]]></title><link>https://blog.youkuaiyun.com/showchi/article/details/101353380</link><guid>https://blog.youkuaiyun.com/showchi/article/details/101353380</guid><author>showchi</author><pubDate>Wed, 25 Sep 2019 21:10:37 +0800</pubDate><description><![CDATA[文章目录一、单例设计模式介绍二、单例模式的实现方式1、懒汉式（线程不安全）2、懒汉式（线程安全）3、饿汉式4、双重校验锁5、静态内部类6、枚举
一、单例设计模式介绍

单例模式（Singleton Pattern）是 Java 中最简单的设计模式之一。这种类型的设计模式属于创建型模式，它提供了一种创建对象的最佳方式。
这种模式涉及到一个单一的类，该类负责创建自己的对象，同时确保只有单个对象被创建。...]]></description><category></category></item><item><title><![CDATA[设计模式概述]]></title><link>https://blog.youkuaiyun.com/showchi/article/details/101210586</link><guid>https://blog.youkuaiyun.com/showchi/article/details/101210586</guid><author>showchi</author><pubDate>Mon, 23 Sep 2019 16:29:35 +0800</pubDate><description><![CDATA[文章目录设计模式介绍什么是 GOF（四人帮，全拼 Gang of Four）？设计模式类型创建者模式结构性模式行为型模式
设计模式介绍

设计模式（Design pattern）代表了最佳的实践，通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。

什么是 GOF（四...]]></description><category></category></item></channel></rss>