<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Welcome to tiny_spot]]></title><description><![CDATA[不积跬步，无以至千里，不积小流，无以成江海]]></description><link>https://blog.youkuaiyun.com/qq_41550842</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; qq_41550842]]></copyright><item><title><![CDATA[GIT常用操作]]></title><link>https://blog.youkuaiyun.com/qq_41550842/article/details/130536008</link><guid>https://blog.youkuaiyun.com/qq_41550842/article/details/130536008</guid><author>qq_41550842</author><pubDate>Sat, 06 May 2023 22:08:19 +0800</pubDate><description><![CDATA[具体的，若某用户对文件A已经做了修改且已提交至远程仓库。安装完成后运行git程序，大打开git bash界面，然后输入以下命令，设置全局用户名与全局邮箱。b、本地新建目录用于保存项目，且在该目录下右击打开git bash，输入如下命令后执行。c、本地回滚版本成功，但是远程仓库还没有成功。本地git安装完成后，需让IDE绑定本地GIT程序，IDE方可使用本地GIT。b、如果以远程仓库为准点击“接受他们的”，如果需要具体分析，则点击“合并”b、本地合并完后，再使用图形界面push到远程仓库。]]></description><category></category></item><item><title><![CDATA[Java ArrayList扩容机制（基于JDK1.8）]]></title><link>https://blog.youkuaiyun.com/qq_41550842/article/details/119810467</link><guid>https://blog.youkuaiyun.com/qq_41550842/article/details/119810467</guid><author>qq_41550842</author><pubDate>Fri, 20 Aug 2021 12:33:43 +0800</pubDate><description><![CDATA[ArrayList继承自AbstractList，实现List接口，是一个可变长的列表。

不同于LinkedList，LinkedList底层由链表实现，所以只需维护好底层链表，即可实现列表的长度变化。而ArrayList底层由数组实现，数组初始化需要指定长度，所以想要实现可变长的列表，ArrayList底层肯定做了一些小动作来支持。今天看了下ArrayList的源码，记录一下它的扩容机制。

首先，需要了解类内的这6个属性：


/**
     * 列表默认的初始化容量，10
     */
    ]]></description><category></category></item><item><title><![CDATA[Spring学习之JdbcTemplate简单使用]]></title><link>https://blog.youkuaiyun.com/qq_41550842/article/details/107695230</link><guid>https://blog.youkuaiyun.com/qq_41550842/article/details/107695230</guid><author>qq_41550842</author><pubDate>Thu, 30 Jul 2020 17:32:40 +0800</pubDate><description><![CDATA[1.准备工作


	数据库中建一个测试用的表
	

CREATE TABLE `users` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(256) CHARACTER SET utf8mb4 DEFAULT NULL,
  `age` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=29 DEFAULT CHARSET=utf8;


]]></description><category></category></item><item><title><![CDATA[Java8新特性之Stream API学习]]></title><link>https://blog.youkuaiyun.com/qq_41550842/article/details/104979994</link><guid>https://blog.youkuaiyun.com/qq_41550842/article/details/104979994</guid><author>qq_41550842</author><pubDate>Thu, 19 Mar 2020 23:35:46 +0800</pubDate><description><![CDATA[Java8新特性之Stream API学习
Stream API 介绍
Java8中有两个最为重要的改变。第一个是Lambda表达式；另一个就是Stream API 。
Stream是Java8中处理集合的关键抽象概念，它可以指定你希望对集合进行的操作，可以执行非常复杂的查找、过滤和映射数据等操作。使用Stream API对集合数据进行操作，就类似于使用SQL执行的数据库查询。也可以使用Strea...]]></description><category></category></item><item><title><![CDATA[Java8新特性之Lambda表达式学习]]></title><link>https://blog.youkuaiyun.com/qq_41550842/article/details/104852916</link><guid>https://blog.youkuaiyun.com/qq_41550842/article/details/104852916</guid><author>qq_41550842</author><pubDate>Sat, 14 Mar 2020 00:17:38 +0800</pubDate><description><![CDATA[Lambda表达式
​		Lambda表达式是Java8推出的非常强大的特性之一。借助它，我们对一些接口的简单实现不再需要写那么多繁琐，多余的代码，只需写一些关键性的代码，即简洁又优雅，装X与无形之中。但是正因如此，可读性也就不要奢求了。
**使用要求：*待实现的接口中只能有一个需要被实现的方法，不包括default修饰的方法。而这种接口，就称之为函数式接口，通常用@FunctionalInter...]]></description><category></category></item><item><title><![CDATA[Java8新特性之函数式接口学习]]></title><link>https://blog.youkuaiyun.com/qq_41550842/article/details/104845746</link><guid>https://blog.youkuaiyun.com/qq_41550842/article/details/104845746</guid><author>qq_41550842</author><pubDate>Fri, 13 Mar 2020 17:40:42 +0800</pubDate><description><![CDATA[函数式接口
只包含一个方法的接口（default方法除外）称为函数式接口。可用@FunctionalInterface注解修饰，可以语法检查。
@FunctionalInterface
public interface InterfaceTest {
	void test();
    
	default void defaultMethod() {}
}

四大内置核心函数式接口

Lambda...]]></description><category></category></item><item><title><![CDATA[Nginx简单安装与配置(学习)]]></title><link>https://blog.youkuaiyun.com/qq_41550842/article/details/103532550</link><guid>https://blog.youkuaiyun.com/qq_41550842/article/details/103532550</guid><author>qq_41550842</author><pubDate>Fri, 13 Dec 2019 20:22:48 +0800</pubDate><description><![CDATA[Nginx
什么是Nginx（what） ？

Nginx(“engine x”) 是一个开源的高性能的Http和反向代理服务软件。
nginx因具有高并发（特别是静态资源），占用系统资源少等特性，且功能丰富而逐渐变得流行。


Nginx的功能（为何要使用Nginx（why））？
反向代理


正向代理
客户端指定目标服务器，而中间代理只是起到转发的作用。客户端需要配置代理服务器地址。正向代理最...]]></description><category></category></item><item><title><![CDATA[HashMap源码学习（JDK1.8）]]></title><link>https://blog.youkuaiyun.com/qq_41550842/article/details/100865166</link><guid>https://blog.youkuaiyun.com/qq_41550842/article/details/100865166</guid><author>qq_41550842</author><pubDate>Sun, 15 Sep 2019 22:24:21 +0800</pubDate><description><![CDATA[今天撸了一下Java8的HashMap源码，总算搞清楚了一点点，所以Mark一下（有理解不对的地方希望有大佬指出）

先看一下HashMap的存储结构，先对HashMap的存储结构有一个初步认识对源码分析有很大好处。

上图取自CS-Notes
上图的0-15可以看做是16个桶，HashMap初始桶的数量为16，然后下面吊着的是桶上面的链表。

还是先看看结点的存储结构吧：
static clas...]]></description><category></category></item><item><title><![CDATA[Java反射机制]]></title><link>https://blog.youkuaiyun.com/qq_41550842/article/details/99306087</link><guid>https://blog.youkuaiyun.com/qq_41550842/article/details/99306087</guid><author>qq_41550842</author><pubDate>Mon, 12 Aug 2019 16:35:26 +0800</pubDate><description><![CDATA[什么是Java反射机制
  JAVA反射机制是在运行状态中，对于任意一个实体类，都能够知道这个类的所有属性和方法；对于任意一个对象，都能够调用它的任意方法和属性；这种动态获取信息以及动态调用对象方法的功能称为java语言的反射机制。
  Java的反射机制允许编程人员在对类未知的情况下，获取类相关信息的方式变得更加多样灵活，调用类中相应方法，是Java增加其灵活性与动态性的一种机制。----百度百...]]></description><category></category></item><item><title><![CDATA[设计模式之单例模式]]></title><link>https://blog.youkuaiyun.com/qq_41550842/article/details/98111824</link><guid>https://blog.youkuaiyun.com/qq_41550842/article/details/98111824</guid><author>qq_41550842</author><pubDate>Thu, 01 Aug 2019 22:11:36 +0800</pubDate><description><![CDATA[单例模式
单例模式（Singleton Pattern）是 Java 中最简单的设计模式之一。刚刚看了看单例模式，趁热打铁，先做个笔记。

这种模式涉及到一个单一的类，该模式的要求是：
1.该类负责创建自己的对象，同时确保只有单个对象被创建
2.这个类提供了一种访问其唯一的对象的方式，可以直接访问，不需要实例化该类的对象。

根据要求考虑采用什么样的方式实现，因为不能被实例化，那么该类的构造方法我...]]></description><category></category></item><item><title><![CDATA[Java自定义排序]]></title><link>https://blog.youkuaiyun.com/qq_41550842/article/details/96606437</link><guid>https://blog.youkuaiyun.com/qq_41550842/article/details/96606437</guid><author>qq_41550842</author><pubDate>Sat, 20 Jul 2019 19:56:29 +0800</pubDate><description><![CDATA[Java中自定义排序可以通过实现Comparator接口或Comparable接口来完成。
关键：实现Comparator接口的关键在于重写compare()方法，Comparable接口的关键在于重写compareTo()方法。JDK中大部分的类都实现了Comparable接口，拥有compareTo方法。如Integer，String等。但是对于自己定义类，如果需要自定义排序，则要实现Comp...]]></description><category></category></item><item><title><![CDATA[页面跳转后提示信息]]></title><link>https://blog.youkuaiyun.com/qq_41550842/article/details/95485778</link><guid>https://blog.youkuaiyun.com/qq_41550842/article/details/95485778</guid><author>qq_41550842</author><pubDate>Thu, 11 Jul 2019 16:57:51 +0800</pubDate><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;我们在开发web应用的时候，经常会遇到这种问题：当你登录成功或失败后，你希望给用户提示一些信息，来提高用户体验。
&nbsp;&nbsp;&nbsp;&nbsp;其中信息提示的效果还算好做，使用一些其他的插件（如toastr）就可以做的很优美。但其中的逻辑处理，后端控制可能需要仔细琢磨，今天我在写一个登陆逻辑时碰到了这种逻辑问题，查阅了许多优秀的博客...]]></description><category></category></item><item><title><![CDATA[使用RedirectAttributes将数据传入重定向的页面]]></title><link>https://blog.youkuaiyun.com/qq_41550842/article/details/95489026</link><guid>https://blog.youkuaiyun.com/qq_41550842/article/details/95489026</guid><author>qq_41550842</author><pubDate>Thu, 11 Jul 2019 16:50:48 +0800</pubDate><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;有时候咱们可能会遇到需要将数据传入重定向的页面当中的情形，比如登录成功后重定向到项目主页，并显示提示信息。这时就需要将登录验证中得到的验证结果传入重定向之后的页面。
使用RedirectAttributes 可以达到我们想要的效果，他是专门用于重定向携带参数跳转的的工具类，它有两种实现方式：
第一种：
使用redirectAttributes.add...]]></description><category></category></item><item><title><![CDATA[十大经典内部排序之八大实现（Java版）]]></title><link>https://blog.youkuaiyun.com/qq_41550842/article/details/89386400</link><guid>https://blog.youkuaiyun.com/qq_41550842/article/details/89386400</guid><author>qq_41550842</author><pubDate>Thu, 18 Apr 2019 20:49:03 +0800</pubDate><description><![CDATA[在将排序之前，先来了解一下排序的一些基本概念。

内部排序和外部排序：内部排序指的是待排序记录全部存放在计算机内存中进行排序的过程。外部排序指的是待排序记录的数量很大，以致内存一次不能容纳全部记录，在排序过程中需对外存进行访问的排序过程。

排序的稳定性：当待排序序列中存在两个或两个以上的关键字相等的记录时，设有两个关键字相等的记录和​​​​​​（i &lt; j),即在排序前在​前面，若排序后，...]]></description><category></category></item><item><title><![CDATA[二叉树（Binary Tree）]]></title><link>https://blog.youkuaiyun.com/qq_41550842/article/details/89297784</link><guid>https://blog.youkuaiyun.com/qq_41550842/article/details/89297784</guid><author>qq_41550842</author><pubDate>Sun, 14 Apr 2019 16:19:44 +0800</pubDate><description><![CDATA[二叉树是n个结点所构成的集合，它或为空树或为非空树。

对于非空树T：1.有且仅有一个称之为根的结点；2.除根节点之外的其余结点分为两个互不相交的子集T1和T2，分别称为左子树和右子树，且T1和T2也都是二叉树。

满二叉树：深度为k且含有个节点的二叉树。

完全二叉树：深度为k的，有n个结点的二叉树，当且仅当其每一个结点都与深度为k的满二叉树中编号从1-n的结点一一对应，称之为完全二叉树。

...]]></description><category></category></item><item><title><![CDATA[二叉排序树Java实现(Binary Sort Tree)]]></title><link>https://blog.youkuaiyun.com/qq_41550842/article/details/89297622</link><guid>https://blog.youkuaiyun.com/qq_41550842/article/details/89297622</guid><author>qq_41550842</author><pubDate>Sun, 14 Apr 2019 16:09:42 +0800</pubDate><description><![CDATA[二叉排序树又称二叉查找树，它是一种对排序和查找都很有用的特殊二叉树。

二叉树的定义：二叉树或者是一颗空树，或者是具有下列性质的二叉树：

1.若它的左子树不为空，则左子树上所有结点的值均小于它的根结点的值；

2.若它的右子树不为空，则右子树上所有结点的值均大于它的根结点的值；

3.它的左右子树也分别为二叉排序树。

简单的说就是（左 &lt; 根 &lt; 右）

二叉排序树的创建：从空的...]]></description><category></category></item><item><title><![CDATA[Java集合之HashMap]]></title><link>https://blog.youkuaiyun.com/qq_41550842/article/details/88719759</link><guid>https://blog.youkuaiyun.com/qq_41550842/article/details/88719759</guid><author>qq_41550842</author><pubDate>Thu, 21 Mar 2019 18:08:08 +0800</pubDate><description><![CDATA[首先上图：

Map接口是一种双列集合，不同于List和Set这些单列集合，它的每一个元素都包含一个键值对key和value，键和值对象之间存在一种对应关系，称为映射。从Map集合中访问元素时，只要指定了key，就可以通过key找到对应的value。由图可知，HashMap是Map接口的实现类，它基于哈希表，必须保证不出现重复的键，但没要求值也要唯一（相同的值可以有多个键对应），并且键和值都允许使...]]></description><category></category></item><item><title><![CDATA[快速排序----Java实现]]></title><link>https://blog.youkuaiyun.com/qq_41550842/article/details/88699956</link><guid>https://blog.youkuaiyun.com/qq_41550842/article/details/88699956</guid><author>qq_41550842</author><pubDate>Wed, 20 Mar 2019 21:35:40 +0800</pubDate><description><![CDATA[快排是由冒泡排序改进而得的。冒泡一次交换只能消除一个逆序，而快排的一次交换可以消除多个逆序，从而大大加快排序的速度。

算法步骤：

    在待排序的n个记录（元素）中任取一个记录（通常取第一个记录）作为枢轴（或者叫支点，就是先随便取一个数），设它的值为key。快排就是在每一趟排序后，把所有值小于key的记录交换到key前面，而把比key大的记录交换到key的后面，最后将key放到“中...]]></description><category></category></item><item><title><![CDATA[Java集合之TreeSet]]></title><link>https://blog.youkuaiyun.com/qq_41550842/article/details/88692075</link><guid>https://blog.youkuaiyun.com/qq_41550842/article/details/88692075</guid><author>qq_41550842</author><pubDate>Wed, 20 Mar 2019 17:21:31 +0800</pubDate><description><![CDATA[首先上图：

TreeSet是Collection和Set接口的是实现类，特点是元素不重复，且无序（指存入顺序和取出顺序可能不一致）。它内部采用自平衡的排序二叉树来存储元素，以此结构来保证元素不重复且可以对元素进行排序。自平衡的排序二叉树很重要的一个性质是根节点的左子树都小于根节点，根节点的右子树都大于根节点。以此迭代，从而保证有序。另外TreeSet不是线程安全的。下面的代码演示的是TreeSe...]]></description><category></category></item><item><title><![CDATA[Java集合之HashSet]]></title><link>https://blog.youkuaiyun.com/qq_41550842/article/details/88673244</link><guid>https://blog.youkuaiyun.com/qq_41550842/article/details/88673244</guid><author>qq_41550842</author><pubDate>Tue, 19 Mar 2019 21:34:55 +0800</pubDate><description><![CDATA[首先上图：



由图可知，HashSet是Collection和Set接口的实现类。Set的一个重要特性就是元素不可重复，且元素无序（存入顺序与取出顺序不一致），这与List接口是恰恰相反的。HashSet是根据对象的哈希值来确定元素在集合中的存储位置，因此具有良好的存取和查找性能，其底层其实是一个HashMap的实例，它允许使用null元素。HashSet不是线程安全的。Set集合和List...]]></description><category></category></item></channel></rss>