<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[青藤光年的博客]]></title><description><![CDATA[知道的越多，越发现自己的渺小]]></description><link>https://blog.youkuaiyun.com/WYA1993</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; WYA1993]]></copyright><item><title><![CDATA[Java 集合框架系列十二：Map 和 AbstractMap 详解]]></title><link>https://blog.youkuaiyun.com/WYA1993/article/details/108348389</link><guid>https://blog.youkuaiyun.com/WYA1993/article/details/108348389</guid><author>WYA1993</author><pubDate>Tue, 08 Sep 2020 23:11:34 +0800</pubDate><description><![CDATA[Map 类定义
/**
 * 
 * @see HashMap
 * @see TreeMap
 * @see Hashtable
 * @see SortedMap
 * @see Collection
 * @see Set
 * @since 1.2
 */
public interface Map&lt;K,V&gt; {
}

Map 是一个顶级接口，它也是 Java 集合框架的一员，Map 是一种基于 key-value 键值对的数据格式，并且 key 值不可以重复，每个 key 最多只能对应 ]]></description><category></category></item><item><title><![CDATA[Java 集合框架系列十七：JDK 1.8 Collections 详解]]></title><link>https://blog.youkuaiyun.com/WYA1993/article/details/108477501</link><guid>https://blog.youkuaiyun.com/WYA1993/article/details/108477501</guid><author>WYA1993</author><pubDate>Tue, 08 Sep 2020 21:30:59 +0800</pubDate><description><![CDATA[Collections 是在 JDK 1.2 时提供的用来操作集合的工具类，此类只包含对集合操作的静态方法。
Collections API
public class Collections {
    // 确保不可实例化
    private Collections() {
    }
    
    /**
     * 这些属性是 Collections 的调优参数。通常 Collections 的许多算法都有两个实现，
     * 一个适用于随机访问，另一个适合顺序访问。通常随机访问在列表数]]></description><category></category></item><item><title><![CDATA[Java 集合框架系列十五：JDK 1.8 Hashtable 详解]]></title><link>https://blog.youkuaiyun.com/WYA1993/article/details/108436987</link><guid>https://blog.youkuaiyun.com/WYA1993/article/details/108436987</guid><author>WYA1993</author><pubDate>Tue, 08 Sep 2020 19:28:28 +0800</pubDate><description><![CDATA[Hashtable 继承关系

Hashtable 是 JDK 1.0 提供的类，继承了 Dictionary 类，Dictionary 类现在已经标记为过时了，Hashtable 实现了 Map 接口，这是在 JDK 1.2 时改动的，还实现了 Cloneable 和 Serializable 接口，说明 Hashtable 支持浅拷贝、序列化与反序列化。具体的实现可以查看 Hashtable 的 clone()、writeObject()、readObject() 方法。
public class Ha]]></description><category></category></item><item><title><![CDATA[Java 集合框架系列十四：JDK 1.8 LinkedHashMap 详解]]></title><link>https://blog.youkuaiyun.com/WYA1993/article/details/108448907</link><guid>https://blog.youkuaiyun.com/WYA1993/article/details/108448907</guid><author>WYA1993</author><pubDate>Tue, 08 Sep 2020 19:23:44 +0800</pubDate><description><![CDATA[LinkedHashMap

]]></description><category></category></item><item><title><![CDATA[Java 集合框架系列十三：JDK 1.8 HashMap 详解]]></title><link>https://blog.youkuaiyun.com/WYA1993/article/details/108423178</link><guid>https://blog.youkuaiyun.com/WYA1993/article/details/108423178</guid><author>WYA1993</author><pubDate>Tue, 08 Sep 2020 19:21:56 +0800</pubDate><description><![CDATA[HashMap 类图

HashMap 继承自 AbstractMap，并实现了 Map、Cloneable、Serializable 接口。说明 HashMap 具有 Map 的全部实现，且 HashMap 默认支持浅拷贝，序列化和反序列化。具体的实现可以查看 HashMap 的 clone()、writeObject()、readObject() 方法。
通过 HashMap 的文档可以得到以下信息：

HashMap 是以 key-value 键值对的形式保存数据的，但是 HashMap 无法保证 k]]></description><category></category></item><item><title><![CDATA[Java 集合框架系列十一：JDK 1.8 TreeSet 详解]]></title><link>https://blog.youkuaiyun.com/WYA1993/article/details/108474817</link><guid>https://blog.youkuaiyun.com/WYA1993/article/details/108474817</guid><author>WYA1993</author><pubDate>Tue, 08 Sep 2020 19:08:47 +0800</pubDate><description><![CDATA[TreeSet 继承关系

类文档解读
老规矩，先通过 TreeSet 的类文档了解一下能得到哪些信息。

TreeSet 是 JDK 1.2 提供的基于 TreeMap 的 NavigableSet 实现。
TreeSet 支持元素的自然排序和按照在创建时指定的 Comparator 比较器进行排序。
TreeSet 的基本操作（add、remove 和 contains）的时间复杂度是 log(n) 。
TreeSet 是非线程安全的。
TreeSet 的迭代器是 fail-fast 策略的。

Tre]]></description><category></category></item><item><title><![CDATA[Java 集合框架系列十：JDK 1.8 Comparable 和 Comparator 详解]]></title><link>https://blog.youkuaiyun.com/WYA1993/article/details/108474611</link><guid>https://blog.youkuaiyun.com/WYA1993/article/details/108474611</guid><author>WYA1993</author><pubDate>Tue, 08 Sep 2020 18:56:26 +0800</pubDate><description><![CDATA[Comparator 和 Comparable 两者都属于集合框架的一部分，都是在 JDK 1.2 时提供的用来在对象之间进行比较的接口，但两者又有些许的不同。
先来看一下 Comparable 的例子，定义实体类 Student，实现 Comparable，重写 compareTo 方法：
public class Student implements Comparable&lt;Student&gt; {
    private String name;
    private Integer age;]]></description><category></category></item><item><title><![CDATA[Java 集合框架系列九：JDK 1.8 SortedSet 和 NavigableSet 详解]]></title><link>https://blog.youkuaiyun.com/WYA1993/article/details/108474413</link><guid>https://blog.youkuaiyun.com/WYA1993/article/details/108474413</guid><author>WYA1993</author><pubDate>Tue, 08 Sep 2020 18:43:01 +0800</pubDate><description><![CDATA[SortedSet 继承关系

SortedSet 直接继承了 Set，是 JDK 1.2 提供的接口，SortedSet 意为按照对象的比较方法对元素排序，而不是元素的插入顺序，插入顺序用 LinkedHashSet 来保存即可，SortedSet 是以自然排序或者按照 Comparator comparator() 比较器排序。
SortedSet 已知实现类有：ConcurrentSkipListSet 和 TreeSet。SortedSet 要求插入到 SortedSet 中的元素必须实现 Comp]]></description><category></category></item><item><title><![CDATA[Java 集合框架系列八：JDK 1.8 HashSet 和 LinkedHashSet 详解]]></title><link>https://blog.youkuaiyun.com/WYA1993/article/details/108474082</link><guid>https://blog.youkuaiyun.com/WYA1993/article/details/108474082</guid><author>WYA1993</author><pubDate>Tue, 08 Sep 2020 18:30:14 +0800</pubDate><description><![CDATA[HashSet 类图

HashSet 是在 JDK 1.2 提供的类，是 AbstractSet 的子类。HashSet 是 Set 集合比较常用的实现类。
public class HashSet&lt;E&gt; extends AbstractSet&lt;E&gt; implements Set&lt;E&gt;, Cloneable, java.io.Serializable {}

类文档解读
老规矩，先通过 HashSet 的类文档了解一下能得到哪些信息。

HashSet 是一个基于哈希表]]></description><category></category></item><item><title><![CDATA[Java 集合框架系列七：JDK 1.8 Set 和 AbstractSet 详解]]></title><link>https://blog.youkuaiyun.com/WYA1993/article/details/108473772</link><guid>https://blog.youkuaiyun.com/WYA1993/article/details/108473772</guid><author>WYA1993</author><pubDate>Tue, 08 Sep 2020 18:04:14 +0800</pubDate><description><![CDATA[Set 继承关系

Set 直接继承了 Collection 接口，也是在 JDK 1.2 提供的。Set的结构及实现都和Map保持高度一致，通过后面的源码分析你就可以看出来 Set 内部大量使用了 Map 的实现作为数据存储。
类文档解读
老规矩，先通过 Set 的类文档了解一下能得到哪些信息。

Set 是一个不允许重复的集合，Set 是数学上的集合的抽象，更正式地说，集合不包含一对元素 e1 和 e2 满足 e1.equals（e2）。
Set 最多只能包含一个 null 元素或者不允许 null 元]]></description><category></category></item><item><title><![CDATA[Java 集合框架系列六：JDK 1.8 Vector 详解]]></title><link>https://blog.youkuaiyun.com/WYA1993/article/details/108473199</link><guid>https://blog.youkuaiyun.com/WYA1993/article/details/108473199</guid><author>WYA1993</author><pubDate>Tue, 08 Sep 2020 17:47:07 +0800</pubDate><description><![CDATA[Vector 继承关系

Vector 是在 JDK 1.0 就提供的类，在 JDK 1.2 对 Vector 进行改造后，Vector 和 ArrayList 都继承实现了相同的类和接口。
public class Vector&lt;E&gt; extends AbstractList&lt;E&gt;
    implements List&lt;E&gt;, RandomAccess, Cloneable, java.io.Serializable {
}

Vector 实现了 RandomAcc]]></description><category></category></item><item><title><![CDATA[Java 集合框架系列五：JDK 1.8 LinkedList 详解]]></title><link>https://blog.youkuaiyun.com/WYA1993/article/details/108472280</link><guid>https://blog.youkuaiyun.com/WYA1993/article/details/108472280</guid><author>WYA1993</author><pubDate>Tue, 08 Sep 2020 17:46:40 +0800</pubDate><description><![CDATA[LinkedList 继承关系

LinkedList 也是 JDK 1.2 就提供的集合类，它继承了 AbstractSequentialList 抽象类，并实现了 Deque、List、Cloneable、Serializable  接口。
public class LinkedList&lt;E&gt; extends AbstractSequentialList&lt;E&gt;
    implements List&lt;E&gt;, Deque&lt;E&gt;, Cloneable, jav]]></description><category></category></item><item><title><![CDATA[Java 集合框架系列四：JDK 1.8 ArrayList 详解]]></title><link>https://blog.youkuaiyun.com/WYA1993/article/details/108471242</link><guid>https://blog.youkuaiyun.com/WYA1993/article/details/108471242</guid><author>WYA1993</author><pubDate>Tue, 08 Sep 2020 17:45:52 +0800</pubDate><description><![CDATA[ArrayList 继承关系

ArrayList 是 JDK 1.2 提供的 List 实现类，继承了 AbstractList 抽象类，实现了 Cloneable、Serializable、RandomAccess、List 接口。
public class ArrayList&lt;E&gt; extends AbstractList&lt;E&gt;
        implements List&lt;E&gt;, RandomAccess, Cloneable, java.io.Serializ]]></description><category></category></item><item><title><![CDATA[Java 集合框架系列三：JDK 1.8 List 和 AbstractList 和 AbstractSequentialList 详解]]></title><link>https://blog.youkuaiyun.com/WYA1993/article/details/108467713</link><guid>https://blog.youkuaiyun.com/WYA1993/article/details/108467713</guid><author>WYA1993</author><pubDate>Tue, 08 Sep 2020 17:45:10 +0800</pubDate><description><![CDATA[List 继承关系

List 是在 JDK 1.2 提供的接口，继承了 Collection 接口，List 代表有序集合，List 可以精确控制列表中每个元素的插入位置，可以通过索引访问元素，和 Set 不同得是 List 允许插入重复的元素，而且 List 的实现类如果允许插入 null 元素，那么可以存在多个 null 元素。List 在 Collection 接口的基础上添加了一系列针对其特性的方法，如通过索引操作元素。
有些 List 的实现可能对包含的元素有限制。例如有些实现禁止 null 元]]></description><category></category></item><item><title><![CDATA[Java 集合框架系列二：JDK 1.8 Iterable 和 Iterator、Enumerator 和 ListIterator 详解]]></title><link>https://blog.youkuaiyun.com/WYA1993/article/details/108466525</link><guid>https://blog.youkuaiyun.com/WYA1993/article/details/108466525</guid><author>WYA1993</author><pubDate>Tue, 08 Sep 2020 17:43:53 +0800</pubDate><description><![CDATA[Iterable
当我们想要遍历集合时，Java 为我们提供了多种选择，通常有以下三种写法：

写法 1：for 循环

    for (int i = 0, len = strings.size(); i &lt; len; i++) {
        System.out.println(strings.get(i));
    }


写法 2：foreach 循环

    for (String var : strings) {
        System.out.println(var);]]></description><category></category></item><item><title><![CDATA[Java 集合框架系列一：JDK 1.8 Collection 和 AbstractCollection 详解]]></title><link>https://blog.youkuaiyun.com/WYA1993/article/details/108466290</link><guid>https://blog.youkuaiyun.com/WYA1993/article/details/108466290</guid><author>WYA1993</author><pubDate>Tue, 08 Sep 2020 17:42:26 +0800</pubDate><description><![CDATA[Collection 继承关系
public interface Collection&lt;E&gt; extends Iterable&lt;E&gt; {
}    

Collection 是在 JDK 1.2 提供的接口，它继承了 Iterable 接口，说明 Collection 的所有实现类都支持 for-each 循环。
类文档解读
老规矩，先通过 Collection  的类文档了解一下能得到哪些信息。

Collection 是 Java 集合框架的根接口，集合是指用来存储一组对象的容器]]></description><category></category></item><item><title><![CDATA[架构师成长之路一——使用docker搭建Maven私服]]></title><link>https://blog.youkuaiyun.com/WYA1993/article/details/101064176</link><guid>https://blog.youkuaiyun.com/WYA1993/article/details/101064176</guid><author>WYA1993</author><pubDate>Sat, 21 Sep 2019 17:43:48 +0800</pubDate><description><![CDATA[搭建Maven私服是一个架构师必备的基础技能，一般大中型互联网企业都会搭建自己的Maven私服，私服是一种特殊的远程仓库，它是架设在局域网内的仓库服务，私服代理广域网上的远程仓库，供局域网内的用户使用。当Maven需要下载构件的时候，它从私服请求，如果 私服上不存在该构件，则从外部远程仓库下载，缓存在私服上之后，再为Maven的下载请求提供服务。

Maven私服的优点

节省自己的外网带宽，大量...]]></description><category></category></item><item><title><![CDATA[OAuth2.0系列六：OAuth2.0四种授权模式总结]]></title><link>https://blog.youkuaiyun.com/WYA1993/article/details/100763459</link><guid>https://blog.youkuaiyun.com/WYA1993/article/details/100763459</guid><author>WYA1993</author><pubDate>Thu, 12 Sep 2019 10:19:27 +0800</pubDate><description><![CDATA[授权模式总结

前面几节已经通过代码介绍了OAuth2.0四种授权模式的简单使用，现在来总结一下四种授权模式的特点

授权码模式

通过前端渠道客户获取授权码
	通过后端渠道，客户使用authorization code去交换access Token和可选的refresh token
	假定资源拥有者和客户在不同的设备上
	最安全的流程，因为令牌不会传递经过user-agent
密码模式

使用用...]]></description><category></category></item><item><title><![CDATA[OAuth2.0系列五：OAuth2.0客户端凭证]]></title><link>https://blog.youkuaiyun.com/WYA1993/article/details/100745577</link><guid>https://blog.youkuaiyun.com/WYA1993/article/details/100745577</guid><author>WYA1993</author><pubDate>Wed, 11 Sep 2019 19:09:48 +0800</pubDate><description><![CDATA[凭证模式



客户端通过客户端的id和secret申请授权，这种方式给出的令牌，是针对第三方应用的，而不是针对用户的，即有可能多个用户共享同一个令牌。

代码实战

第一步，创建maven应用client_server，pom文件如下：


&lt;parent&gt;
        &lt;artifactId&gt;microservice-parent&lt;/artifactId&gt...]]></description><category></category></item><item><title><![CDATA[OAuth2.0系列四：OAuth2.0简化模式]]></title><link>https://blog.youkuaiyun.com/WYA1993/article/details/100733341</link><guid>https://blog.youkuaiyun.com/WYA1993/article/details/100733341</guid><author>WYA1993</author><pubDate>Wed, 11 Sep 2019 13:17:30 +0800</pubDate><description><![CDATA[简化模式

有些纯前端应用，必须将令牌储存在前端。那么可以使用简化模式（隐藏式）来申请授权，颁发令牌。



浏览器向授权服务器申请授权，并设置response_type=token，表示直接返回令牌
	授权服务器通过校验后跳转到重定向地址并返回token
	浏览器通过token去申请资源
这种方式把令牌直接传给前端是很不安全的。因此，只能用于一些安全要求不高的场景，并且令牌的有效期必须非常短，通...]]></description><category></category></item></channel></rss>