<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[The Beginning]]></title><description><![CDATA[学习一时爽。一直学，一直爽。]]></description><link>https://blog.youkuaiyun.com/TypantK</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; TypantK]]></copyright><item><title><![CDATA[【PHP】初学I]]></title><link>https://blog.youkuaiyun.com/TypantK/article/details/98055055</link><guid>https://blog.youkuaiyun.com/TypantK/article/details/98055055</guid><author>TypantK</author><pubDate>Fri, 02 Aug 2019 17:16:08 +0800</pubDate><description><![CDATA[①变量/字符串

变量表示：$abcd $1234
	var_dump()显示变量类型
	命名规则：下划线/字母开头
	memory_get_usage()获取当前PHP消耗的内存
	$string = "就是就是";$string = 9494; 可以直接转换类型
	echo布尔值会得到0/1 ， var_dump会得到bool(true/false)

$data_int1 = 123;...]]></description><category></category></item><item><title><![CDATA[【Java】商业运算中浮点型丢失精度问题]]></title><link>https://blog.youkuaiyun.com/TypantK/article/details/94591716</link><guid>https://blog.youkuaiyun.com/TypantK/article/details/94591716</guid><author>TypantK</author><pubDate>Thu, 04 Jul 2019 13:21:57 +0800</pubDate><description><![CDATA[test1:



test2:



test3:



所以在很要求精度的应用中，一定要用BigDecimal的String构造器

而一般数据库存储的都是double类型，所以就可以写一个BigDecimal的工具类，方便转换


public class BigDecimalUtil {

    private BigDecimalUtil(){

    }

    public s...]]></description><category></category></item><item><title><![CDATA[【Java】MyBatis-PageHelper的使用以及过程]]></title><link>https://blog.youkuaiyun.com/TypantK/article/details/94437198</link><guid>https://blog.youkuaiyun.com/TypantK/article/details/94437198</guid><author>TypantK</author><pubDate>Tue, 02 Jul 2019 16:43:49 +0800</pubDate><description><![CDATA[∵ 很容易忘记PageHelper的使用，以及使用方法很奇怪。∴下定决心记住以及弄清楚其背后的原理

先上代码，很简单的分页查询


public ServerResponse&lt;PageInfo&gt; getProductList(int pageNumber, int pageSize){
        /**
         * 1.pageHelper.startPage
   ...]]></description><category></category></item><item><title><![CDATA[【Java】读取配置文件的方式]]></title><link>https://blog.youkuaiyun.com/TypantK/article/details/94448082</link><guid>https://blog.youkuaiyun.com/TypantK/article/details/94448082</guid><author>TypantK</author><pubDate>Tue, 02 Jul 2019 15:47:18 +0800</pubDate><description><![CDATA[通过一个PropertiesUtil类，在tomcat初始化时，对Properties对象props进行初始化（指向对应的配置文件fileName-mmall）


public class PropertiesUtil {

    private static Logger logger = LoggerFactory.getLogger(PropertiesUtil.class);

   ...]]></description><category></category></item><item><title><![CDATA[【OS】同步异步/阻塞非阻塞、并发并行串行的区分]]></title><link>https://blog.youkuaiyun.com/TypantK/article/details/88911877</link><guid>https://blog.youkuaiyun.com/TypantK/article/details/88911877</guid><author>TypantK</author><pubDate>Sat, 20 Apr 2019 09:37:55 +0800</pubDate><description><![CDATA[参考地址：https://blog.youkuaiyun.com/qq_23282479/article/details/80424946





理解①

同步异步是对于被调用者的说明；阻塞非阻塞是对于调用者的说明

被调用者

同步的话就是在没有得到结果之前，该调用就不会返回。但是一旦返回结果，就得到返回值了；

异步的话则相反，调用者一调用之后就直接返回了，所以没有返回结果。而被调用者是通过状态...]]></description><category></category></item><item><title><![CDATA[【Algorithm】快排分区方法]]></title><link>https://blog.youkuaiyun.com/TypantK/article/details/88096230</link><guid>https://blog.youkuaiyun.com/TypantK/article/details/88096230</guid><author>TypantK</author><pubDate>Sat, 06 Apr 2019 13:28:04 +0800</pubDate><description><![CDATA[单向扫描

基准数为最右边




private static void quickSortLineryArray(int[] a, int start, int end) {
		if(a.length == 0 || a.length == 1) {
			return ;
		}
		int i = start;
		int j = start;	//j负责检查小于key的
		int k...]]></description><category></category></item><item><title><![CDATA[【OS】5种网络IO模型]]></title><link>https://blog.youkuaiyun.com/TypantK/article/details/88914515</link><guid>https://blog.youkuaiyun.com/TypantK/article/details/88914515</guid><author>TypantK</author><pubDate>Sun, 31 Mar 2019 19:22:37 +0800</pubDate><description><![CDATA[参考地址：http://www.cnblogs.com/findumars/p/6361627.html

https://time.geekbang.org/column/article/9293


目录

阻塞IO（Blocking IO）

非阻塞IO(Non-Blocking IO)-轮询

多路复用IO（IO Multiplexing）- 事件驱动IO

信号驱动IO

异步IO（...]]></description><category></category></item><item><title><![CDATA[【Java】设计模式--行为型模式 I]]></title><link>https://blog.youkuaiyun.com/TypantK/article/details/88776095</link><guid>https://blog.youkuaiyun.com/TypantK/article/details/88776095</guid><author>TypantK</author><pubDate>Sun, 24 Mar 2019 21:50:58 +0800</pubDate><description><![CDATA[策略模式




策略模式定义了一系列算法，并将每个算法封装起来，使他们可以相互替换，且算法的变化不会影响到使用算法的客户。



提供统一的方法（抽象策略角色）以及此方法不同的算法实现（具体策略角色）





环境角色（内部有策略角色的引用），将Context与实际的算法提供解耦






这个模式的一个“部分”很像结构性模式中的桥接模式


桥接的用意是：将抽象化与实现化解耦，使得二者...]]></description><category></category></item><item><title><![CDATA[【Java】设计模式--结构型模式]]></title><link>https://blog.youkuaiyun.com/TypantK/article/details/88749380</link><guid>https://blog.youkuaiyun.com/TypantK/article/details/88749380</guid><author>TypantK</author><pubDate>Sat, 23 Mar 2019 17:12:59 +0800</pubDate><description><![CDATA[目录

适配器模式

类的适配器模式（extends + implements）[Adapter的类]

对象的适配器模式(implements + 对象) [这里的对象指的是Adaptee的对象]

接口的适配器模式(abstract)[ 将接口适配成抽象类与类进行沟通 ]

装饰者模式（AOP）

代理模式（Proxy）

外观模式（Facade）

桥接模式（Bridge）

组合模式（Co...]]></description><category></category></item><item><title><![CDATA[【Java】标记接口]]></title><link>https://blog.youkuaiyun.com/TypantK/article/details/88710996</link><guid>https://blog.youkuaiyun.com/TypantK/article/details/88710996</guid><author>TypantK</author><pubDate>Thu, 21 Mar 2019 12:17:22 +0800</pubDate><description><![CDATA[Clonable接口

第一次见到还是Clonable接口，为什么会没有方法？



那实现了有什么用？

可以看注释的这一句话


* A class implements the &lt;code&gt;Cloneable&lt;/code&gt; interface to
* indicate（表明） to the {@link java.lang.Object#clone()} met...]]></description><category></category></item><item><title><![CDATA[【Java】3-浅拷贝/ 2-深拷贝]]></title><link>https://blog.youkuaiyun.com/TypantK/article/details/88708343</link><guid>https://blog.youkuaiyun.com/TypantK/article/details/88708343</guid><author>TypantK</author><pubDate>Thu, 21 Mar 2019 11:21:36 +0800</pubDate><description><![CDATA[三种浅拷贝



	构造器：ArrayList newArray = new ArrayList(oldArray);
	
底层调用Arrays.copyOf()和System.arraycopy()完成拷贝

这里的System.arraycopy()可以等价于数组的Clone()，也是浅拷贝








	Clone()：ArrayList newArray = (ArrayList&l...]]></description><category></category></item><item><title><![CDATA[【Java】设计模式--创建型模式]]></title><link>https://blog.youkuaiyun.com/TypantK/article/details/88691795</link><guid>https://blog.youkuaiyun.com/TypantK/article/details/88691795</guid><author>TypantK</author><pubDate>Thu, 21 Mar 2019 01:15:51 +0800</pubDate><description><![CDATA[创建型模式

目录

工厂模式

普通的工厂（参数是字符串）

☆多个方法工厂（没有字符串参数，调用不同方法作为传递参数方式--&gt; 工厂多个方法）

☆☆静态工厂方法模式（最优解BEST）

抽象工厂模式

单例模式

一般单例模式

☆☆枚举类型（最佳实现单例）

建造者模式

Builder：套餐规范

ConcurrentBuilder：每个套餐应该说明（实现）套餐的每个内容是什么
...]]></description><category></category></item><item><title><![CDATA[【Mysql】索引底层数据结构]]></title><link>https://blog.youkuaiyun.com/TypantK/article/details/88661683</link><guid>https://blog.youkuaiyun.com/TypantK/article/details/88661683</guid><author>TypantK</author><pubDate>Tue, 19 Mar 2019 20:52:43 +0800</pubDate><description><![CDATA[What's the index?



索引是帮助MySql高效获取数据的排好序的数据结构
	索引存储在文件里
	索引有很多不同的结构（BineryTree/Hash/BTree）


Why B+Tree is been used until now?

*BineryTree：没有自动调整功能，如果一直分别加入排序的数据(1-2-3-4-5-6-...)，会演变成链表，就失去了索引的意义...]]></description><category></category></item><item><title><![CDATA[【Java】Arrays.copyOf & System.arraycopy]]></title><link>https://blog.youkuaiyun.com/TypantK/article/details/88656326</link><guid>https://blog.youkuaiyun.com/TypantK/article/details/88656326</guid><author>TypantK</author><pubDate>Tue, 19 Mar 2019 10:36:58 +0800</pubDate><description><![CDATA[public static &lt;T&gt; T[] copyOf(T[] original, int newLength)



    @SuppressWarnings("unchecked")
    public static &lt;T&gt; T[] copyOf(T[] original, int newLength) {
        return (T[]) copyOf...]]></description><category></category></item><item><title><![CDATA[【Algorithm】链表算法中哑结点作用]]></title><link>https://blog.youkuaiyun.com/TypantK/article/details/88562891</link><guid>https://blog.youkuaiyun.com/TypantK/article/details/88562891</guid><author>TypantK</author><pubDate>Thu, 14 Mar 2019 22:26:16 +0800</pubDate><description><![CDATA[题目描述

Sort a linked list using insertion sort.

一般思路（直接在原链表上进行插排）

很好理解，就是遍历每个结点cur，同时记录其前一个结点pre。

如果碰到某个cur的值小于pre，从头结点开始遍历，直到找到应该插入的位置。

不使用哑结点的问题就是多判断了一个cur要替换头结点，头结点往后移的状况，这时不能用遍历的代码

需要额外写一种情况

...]]></description><category></category></item><item><title><![CDATA[【Java】JDK1.8之前HashMap并发情况为什么会发生死循环]]></title><link>https://blog.youkuaiyun.com/TypantK/article/details/88533494</link><guid>https://blog.youkuaiyun.com/TypantK/article/details/88533494</guid><author>TypantK</author><pubDate>Wed, 13 Mar 2019 15:36:48 +0800</pubDate><description><![CDATA[原帖地址：https://www.jianshu.com/p/4930801e23c8





进行put操作到阈值时，进行扩容的时候会导致死循环


void transfer(Entry[] newTable)
{
    Entry[] src = table;
    int newCapacity = newTable.length;
    //从OldTable将元素一个个拿出...]]></description><category></category></item><item><title><![CDATA[【Algorithm&DataStructure】二叉查找树（BST）的遍历]]></title><link>https://blog.youkuaiyun.com/TypantK/article/details/88086044</link><guid>https://blog.youkuaiyun.com/TypantK/article/details/88086044</guid><author>TypantK</author><pubDate>Wed, 13 Mar 2019 13:47:22 +0800</pubDate><description><![CDATA[先序遍历


    /**
	 * 先序遍历：递归实现
	 * @param root
	 */
	public void preOrderRe(TreeNode root){
		System.out.print(root.val);
		if(root.left != null) {
			preOrderRe(root.left);
		}
		if(root.right != null)...]]></description><category></category></item><item><title><![CDATA[【Java X 源码剖析】Collection的源码分析-JDK1.8-仍在更新]]></title><link>https://blog.youkuaiyun.com/TypantK/article/details/88091277</link><guid>https://blog.youkuaiyun.com/TypantK/article/details/88091277</guid><author>TypantK</author><pubDate>Wed, 13 Mar 2019 13:38:37 +0800</pubDate><description><![CDATA[Collection接口下的结构





目录

Set

HashSet

LinkedHashSet（父类HashSet，底层Map为LinkedHashMap）

TreeSet（依赖TreeMap）

ConcurrentSkipListSet



List-Queue

PriorityQueue（默认小顶堆）

①public boolean offer(E e) /publ...]]></description><category></category></item><item><title><![CDATA[【Java X 源码剖析】Map的源码分析--JDK1.8-仍在更新]]></title><link>https://blog.youkuaiyun.com/TypantK/article/details/88410916</link><guid>https://blog.youkuaiyun.com/TypantK/article/details/88410916</guid><author>TypantK</author><pubDate>Wed, 13 Mar 2019 13:38:19 +0800</pubDate><description><![CDATA[Map接口下的结构







目录

HashMap（散列表+链表or红黑树）

①public V Put(K key, V value)

②resize()

③public V get(Object key)

④public boolean containsKey(Object Key)

⑤public V remove(Object key)

public boolean ...]]></description><category></category></item><item><title><![CDATA[【Algorithm】《剑指offer》面试题32----从1到n整数中1出现的次数]]></title><link>https://blog.youkuaiyun.com/TypantK/article/details/88386888</link><guid>https://blog.youkuaiyun.com/TypantK/article/details/88386888</guid><author>TypantK</author><pubDate>Mon, 11 Mar 2019 00:54:16 +0800</pubDate><description><![CDATA[原贴地址：https://www.cnblogs.com/xuanxufeng/p/6854105.html





题目描述

求出1~13的整数中1出现的次数,并算出100~1300的整数中1出现的次数？为此他特别数了一下1~13中包含1的数字有1、10、11、12、13因此共出现6次,但是对于后面问题他就没辙了。ACMer希望你们帮帮他,并把问题更加普遍化,可以很快的求出任意非负整数区...]]></description><category></category></item></channel></rss>