<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[SUPERCHAT8的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/SUPERCHAT8</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; SUPERCHAT8]]></copyright><item><title><![CDATA[SSM---------@RequestMapping的原理]]></title><link>https://blog.youkuaiyun.com/SUPERCHAT8/article/details/100996803</link><guid>https://blog.youkuaiyun.com/SUPERCHAT8/article/details/100996803</guid><author>SUPERCHAT8</author><pubDate>Wed, 18 Sep 2019 20:24:13 +0800</pubDate><description><![CDATA[@RequestMapping的原理

1、@RequestMapping注解所配置的内容会被保存到 HandlerMapping（处理器映射器）中，然后等待客户端的访问


2.当拦截到请求时，DispatcherServlet会将拦截的请求的信息 与 HandlerMapping中保存的信息进行匹配，找到对应的处理器（处理器中包含控制器逻辑,处理器是对控制器的封装），然后HandlerMapp...]]></description><category></category></item><item><title><![CDATA[设计模式-----七大设计指导原则]]></title><link>https://blog.youkuaiyun.com/SUPERCHAT8/article/details/100938076</link><guid>https://blog.youkuaiyun.com/SUPERCHAT8/article/details/100938076</guid><author>SUPERCHAT8</author><pubDate>Tue, 17 Sep 2019 20:12:45 +0800</pubDate><description><![CDATA[面向对象设计模式的七大设计原则：

1、开放封闭原则
2、单一职责原则
3、接口隔离原则
4、迪米特原则
5、里式替换原则
6、合成复用原则
7、依赖倒置原则

一、开放封闭原则

1、核心概念：对拓展功能开放，对修改封闭


2、开闭原则的核心思想是：面向抽象编程，可以提高系统软件的复用性


3、具体的应用举例：当软件的需求发生变化的时候，尽量通过拓展的方式来实现新的功能的增加，而不是通过修改...]]></description><category></category></item><item><title><![CDATA[SSM---------SpringMVC处理流程]]></title><link>https://blog.youkuaiyun.com/SUPERCHAT8/article/details/100936936</link><guid>https://blog.youkuaiyun.com/SUPERCHAT8/article/details/100936936</guid><author>SUPERCHAT8</author><pubDate>Tue, 17 Sep 2019 20:00:01 +0800</pubDate><description><![CDATA[流程图：
流程解析:
1、客户端发起请求，DispatcherServlet拦截到请求
2、DispatcherServlet会 找HandlerMapping来查找 URL对应的的处理器（所有的处理器在启动的时候都会注册）
3、HandlerMapping 返回一个HandlerExecutionChaind对象（里面包含一个handler 和 多个拦截器）
public class Handl...]]></description><category></category></item><item><title><![CDATA[并发编程---------ConcurrentHaspMap的实现原理(JDK1.7和JDK1.8区别)]]></title><link>https://blog.youkuaiyun.com/SUPERCHAT8/article/details/100935717</link><guid>https://blog.youkuaiyun.com/SUPERCHAT8/article/details/100935717</guid><author>SUPERCHAT8</author><pubDate>Tue, 17 Sep 2019 19:28:22 +0800</pubDate><description><![CDATA[ConcurrentHashMap 和 HaspMap比较：

1 、HashMap是线程不安全的，多线程环境中的put方法容易引起死循环，CPU利用率暴增到100%
2 、Hashtable是一个非常古老的类（都没有遵循驼峰命名）但它是一个线程安全的类，所有的操作都使用了synchronized,在整个哈希表上上了一把锁（相当于数据库中的表锁的概念），多线程的时候只有一个线程能够实现操作，其它线...]]></description><category></category></item><item><title><![CDATA[BlockingQueue原理解析]]></title><link>https://blog.youkuaiyun.com/SUPERCHAT8/article/details/100932974</link><guid>https://blog.youkuaiyun.com/SUPERCHAT8/article/details/100932974</guid><author>SUPERCHAT8</author><pubDate>Tue, 17 Sep 2019 17:47:51 +0800</pubDate><description><![CDATA[方法功能表




功能
抛出异常
返回特殊值
超时
阻塞




新增
add(e)
offer()
offer(timeout)
put(e)


删除
remove()
poll()
poll(timeout)
take()


查询
element()
peek()
无
无


这些方法都使用了 ReentrantLock，所以BlockingQueue是线程安全的( add()方法不是 ...]]></description><category></category></item><item><title><![CDATA[PriorityQueue优先级队列 ----- 堆排序]]></title><link>https://blog.youkuaiyun.com/SUPERCHAT8/article/details/100931317</link><guid>https://blog.youkuaiyun.com/SUPERCHAT8/article/details/100931317</guid><author>SUPERCHAT8</author><pubDate>Tue, 17 Sep 2019 17:11:43 +0800</pubDate><description><![CDATA[特点


优先级队列是无界的(默认容量为11：DEFAULT_INITIAL_CAPACITY = 11)，最大可以达到 Integer.MAX_VALUE ,容量不够会使用grow(size)方法实现扩容
线程不安全，对应的线程安全类:PriorityBlockingQueue 类
不允许为 null
PriorityQueue默认的是维持一个小顶堆
自定义的对象要实现 Comparator接口...]]></description><category></category></item><item><title><![CDATA[高并发编程系列：4种常用Java线程锁的特点，性能比较、使用场景]]></title><link>https://blog.youkuaiyun.com/SUPERCHAT8/article/details/100596077</link><guid>https://blog.youkuaiyun.com/SUPERCHAT8/article/details/100596077</guid><author>SUPERCHAT8</author><pubDate>Sat, 07 Sep 2019 13:35:32 +0800</pubDate><description><![CDATA[多线程的缘由

在出现了进程之后，操作系统的性能得到了大大的提升。虽然进程的出现解决了操作系统的并发问题，但是人们仍然不满足，人们逐渐对实时性有了要求。
使用多线程的理由之一是和进程相比，它是一种非常花销小，切换快，更”节俭”的多任务操作方式。
在Linux系统下，启动一个新的进程必须分配给它独立的地址空间，建立众多的数据表来维护它的代码段、堆栈段和数据段，这是一种”昂贵”的多任务工作方式。而...]]></description><category></category></item><item><title><![CDATA[最全Java锁详解：独享锁/共享锁+公平锁/非公平锁+乐观锁/悲观锁]]></title><link>https://blog.youkuaiyun.com/SUPERCHAT8/article/details/100595407</link><guid>https://blog.youkuaiyun.com/SUPERCHAT8/article/details/100595407</guid><author>SUPERCHAT8</author><pubDate>Sat, 07 Sep 2019 13:03:22 +0800</pubDate><description><![CDATA[在Java并发场景中，会涉及到各种各样的锁，比如：高并发编程系列：4种常用Java线程锁的特点，性能比较、使用场景，这些锁有对应的种类：公平锁，乐观锁，悲观锁等等，这篇文章来详细介绍各种锁的分类：


1、公平锁/非公平锁

2、可重入锁

3、独享锁/共享锁

4、乐观锁/悲观锁

5、分段锁

6、自旋锁




乐观锁 VS 悲观锁

乐观锁与悲观锁是一种广义上的概念，体现了看待线程同步的...]]></description><category></category></item><item><title><![CDATA[高并发编程系列之IO模型（二）--------NIO教程]]></title><link>https://blog.youkuaiyun.com/SUPERCHAT8/article/details/100592863</link><guid>https://blog.youkuaiyun.com/SUPERCHAT8/article/details/100592863</guid><author>SUPERCHAT8</author><pubDate>Sat, 07 Sep 2019 10:57:38 +0800</pubDate><description><![CDATA[NIO和NIO的区别




BIO
NIO




面向的流的操作
面向缓冲区


阻塞IO
非阻塞IO(能立即返回)


无
选择器


NIO的三个重要核心
1、Channel(通道)
Channel通道，可以使用它实现数据的读取和写入，通道是双向的，可以双向同时读写（流是单项的，BIO中要输入流、输出流），这充分的利用了操作系统的全双工的支持，从而实现更高效率的传输数据。
Channel的...]]></description><category></category></item><item><title><![CDATA[高并发编程系列之IO模型（一）--------BIO教程]]></title><link>https://blog.youkuaiyun.com/SUPERCHAT8/article/details/100587673</link><guid>https://blog.youkuaiyun.com/SUPERCHAT8/article/details/100587673</guid><author>SUPERCHAT8</author><pubDate>Fri, 06 Sep 2019 23:31:58 +0800</pubDate><description><![CDATA[同步 与 异步 的区别
同步: 发送一个请求，必须等待返回，才能再发送下一个请求 ，能够避免死锁，数据脏读的发生
异步: 发送一个请求，你不用等待返回，可以接着发送另一个请求，适合并发的场景
举例: 烧开水，将水壶放在燃气灶上，你不能取干别的（只能在哪里老老实实的等着水烧开，这就是同步）
     要是烧水期间，你取做别的，看看报纸，浇浇花，水烧开了，有一个信号通知你，这就是异步完成

阻塞和非阻...]]></description><category></category></item><item><title><![CDATA[代理模式----静态代理、动态代理 、CGLIB代理]]></title><link>https://blog.youkuaiyun.com/SUPERCHAT8/article/details/100176760</link><guid>https://blog.youkuaiyun.com/SUPERCHAT8/article/details/100176760</guid><author>SUPERCHAT8</author><pubDate>Wed, 04 Sep 2019 16:49:39 +0800</pubDate><description><![CDATA[代理模式：
	提供了对目标对象额外的访问方式，即通过代理对象访问目标对象，这样可以在不修改原目标对象的前提下，提供额外的功能操作，扩展目标对象的功能。

	简言之，代理模式就是设置一个中间代理来控制访问原目标对象，以达到增强原对象的功能和简化访问方式。


1、静态代理
 * 使用静态代理的目的：  在不改变原来的类的前提下，对这个类的一些功能实现增强效果

静态代码的优点：

 			可以在不更...]]></description><category></category></item><item><title><![CDATA[设计模式--单例模式--三种实现方法---和单例模式的安全隐患]]></title><link>https://blog.youkuaiyun.com/SUPERCHAT8/article/details/100172910</link><guid>https://blog.youkuaiyun.com/SUPERCHAT8/article/details/100172910</guid><author>SUPERCHAT8</author><pubDate>Sat, 31 Aug 2019 17:24:12 +0800</pubDate><description><![CDATA[package singleton;
1.饥饿单例模式的实现：
优点： 饥饿单例，不用使用锁，使用的效率高，
缺点： 类加载的时候就要初始化，导致程序启动初始化慢，同时可能后面用不到，但却一直		占着内存，造成浪费
/**
 * @author : GONG ZHI QIANG
 * @data : 2019-08-31 , 14:27
 * @user : SnaChat
 * @project...]]></description><category></category></item><item><title><![CDATA[实现一个自己的数据库连接池----利用工厂设计模式]]></title><link>https://blog.youkuaiyun.com/SUPERCHAT8/article/details/100172157</link><guid>https://blog.youkuaiyun.com/SUPERCHAT8/article/details/100172157</guid><author>SUPERCHAT8</author><pubDate>Sat, 31 Aug 2019 14:12:29 +0800</pubDate><description><![CDATA[1.抽象接口的实现
/**
 1. @author : GONG ZHI QIANG
 2. @data : 2019-08-30 , 22:50
 3. @user : SnaChat
 4. @project: DesignPattern
 5. @description :
 */
public abstract class Pool {

    public String propert...]]></description><category></category></item><item><title><![CDATA[Java Test]]></title><link>https://blog.youkuaiyun.com/SUPERCHAT8/article/details/100164539</link><guid>https://blog.youkuaiyun.com/SUPERCHAT8/article/details/100164539</guid><author>SUPERCHAT8</author><pubDate>Fri, 30 Aug 2019 19:08:23 +0800</pubDate><description><![CDATA[欢迎使用Markdown编辑器
你好！ 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章，了解一下Markdown的基本语法知识。
新的改变
我们对Markdown编辑器进行了一些功能拓展与语法支持，除了标准的Markdown编辑器功能，我们增加了如下几点新功能，帮助你用它写博客：

全新的界面设计 ，将会带来全新的写作体...]]></description><category></category></item></channel></rss>