<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[mdq11111的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/mdq11111</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; mdq11111]]></copyright><item><title><![CDATA[Netty 1-1 入门实例]]></title><link>https://blog.youkuaiyun.com/mdq11111/article/details/79303909</link><guid>https://blog.youkuaiyun.com/mdq11111/article/details/79303909</guid><author>mdq11111</author><pubDate>Sat, 10 Feb 2018 11:28:55 +0800</pubDate><description><![CDATA[Netty 1-1 入门实例NettyServer AND ServerChannelHandler 创建Netty服务端创建服务端的都是模板代码，1.设置group，需要设置两个EventLoopGroup。bossGroup用于监听客户端Channel连接的线程组，Selector作用。workGroup用于处理网络IO，可以自定义线程数。2.设置服务端的ServerSocketChannel...]]></description><category></category></item><item><title><![CDATA[Spring应用 4 ApplicationContextAware应用理解]]></title><link>https://blog.youkuaiyun.com/mdq11111/article/details/79050280</link><guid>https://blog.youkuaiyun.com/mdq11111/article/details/79050280</guid><author>mdq11111</author><pubDate>Sat, 13 Jan 2018 11:31:15 +0800</pubDate><description><![CDATA[Spring应用 4  ApplicationContextAware应用理解


Aware接口的Bean在被初始之后，可以取得一些相对应的资源。
Aware接口本身并不具备什么功能，一般是用于子类继承后，Spring上下文初始化bean的时候会对这个bean传入需要的资源。
例如ApplicationContextAware接口，可以在Spring初始化实例 Bean的时候，可以通过]]></description><category></category></item><item><title><![CDATA[Spring应用 2 profile多环境配置管理]]></title><link>https://blog.youkuaiyun.com/mdq11111/article/details/79050267</link><guid>https://blog.youkuaiyun.com/mdq11111/article/details/79050267</guid><author>mdq11111</author><pubDate>Sat, 13 Jan 2018 11:30:10 +0800</pubDate><description><![CDATA[Spring应用 2 profile加载不同环境配置


profile的应用


通过Spring profile属性可以帮助我们快速方便的切换环境。使得开发、测试、生产环境得到快速切换。
1.不同环境加载不同的配置文件（数据库连接地址、api接口、用户密码等）
2.不同环境加载不同的接口实现类（数据源、业务逻辑、结果处理）
3.不同环境定义不同的日志级别


通过下面的]]></description><category></category></item><item><title><![CDATA[Spring应用 1 springXML配置说明]]></title><link>https://blog.youkuaiyun.com/mdq11111/article/details/79050260</link><guid>https://blog.youkuaiyun.com/mdq11111/article/details/79050260</guid><author>mdq11111</author><pubDate>Sat, 13 Jan 2018 11:28:55 +0800</pubDate><description><![CDATA[Spring应用 1 springXML配置说明




隐式对Spring容器注册Process 
context:annotation-config/>


为了在spring开发过程中，为了简化开发过程。会使用注解形式的开发模式。但使用相应的注解需要spring.xml中定义相应的BeanProcessor，这样显得很笨重。
使用@Autowired注解，必须事先在Spr]]></description><category></category></item><item><title><![CDATA[SpringMVC源码 3.3 DispatchServlet逻辑处理]]></title><link>https://blog.youkuaiyun.com/mdq11111/article/details/79050171</link><guid>https://blog.youkuaiyun.com/mdq11111/article/details/79050171</guid><author>mdq11111</author><pubDate>Sat, 13 Jan 2018 11:13:12 +0800</pubDate><description><![CDATA[SpringMVC源码 3.3 DispatchServlet逻辑处理




FramewServlet请求引导
我们知道在HttpServlet中提供了相应的服务方法，他们是doDelete、doGet、doPost、doPut、doOption、doTrace，他们根据请求的不同形式引导至相应的函数进行处理。我们最常用的无非是doGet和doPost两个方法。
在Framewo]]></description><category></category></item><item><title><![CDATA[SpringMVC源码 3.2 DispatchServlet 组件初始化]]></title><link>https://blog.youkuaiyun.com/mdq11111/article/details/79050159</link><guid>https://blog.youkuaiyun.com/mdq11111/article/details/79050159</guid><author>mdq11111</author><pubDate>Sat, 13 Jan 2018 11:11:36 +0800</pubDate><description><![CDATA[SpringMVC源码 3.2 DispatchServlet 组件初始化




DispatchServlet还剩下最后的刷新，onRefresh方法。在这个方法中主要初始了一些DispatchServlet中需要使用的一些组件。
例如各种Resolver、HandlerMapping、HandlerAdapter、HandlerExceptionResolvers等。


]]></description><category></category></item><item><title><![CDATA[SpringMVC源码 3.1 DispatchServlet初始化]]></title><link>https://blog.youkuaiyun.com/mdq11111/article/details/79050150</link><guid>https://blog.youkuaiyun.com/mdq11111/article/details/79050150</guid><author>mdq11111</author><pubDate>Sat, 13 Jan 2018 11:10:16 +0800</pubDate><description><![CDATA[SpringMVC源码 3.1 DispatchServlet初始化




上文总结：
前面两篇笔记主要写了ContextLoaderListener在SpringMVC中启动的流程，已经通过ContextLoader完成了对WebApplicationContext（Spring容器）的创建。
还有Spring 在 web.xml中需要的配置相关的东西。
在Spring中，Co]]></description><category></category></item><item><title><![CDATA[SpringMVC源码 2 WebApplicationContext]]></title><link>https://blog.youkuaiyun.com/mdq11111/article/details/79050089</link><guid>https://blog.youkuaiyun.com/mdq11111/article/details/79050089</guid><author>mdq11111</author><pubDate>Sat, 13 Jan 2018 11:02:55 +0800</pubDate><description><![CDATA[SpringMVC源码 2 WebApplicationContext







1.上文总结：

上一篇中讲了一些，关于SpringMVC 在Servlet容器启动过程中ServletContext的构建，以及Spring中ContextLoaderListener和ContextLoader在初始化过程中的初始化流程以及创建的一些内容。

1.在Servlet容器启]]></description><category></category></item><item><title><![CDATA[SpringMVC源码 1 ContextLoaderListener和Servlet容器web.xml配置]]></title><link>https://blog.youkuaiyun.com/mdq11111/article/details/79050053</link><guid>https://blog.youkuaiyun.com/mdq11111/article/details/79050053</guid><author>mdq11111</author><pubDate>Sat, 13 Jan 2018 10:59:10 +0800</pubDate><description><![CDATA[SpringMVC源码 1 ContextLoaderListener和Servlet容器web.xml配置







1.先说下ServletContext

javaee标准规定了，servlet容器需要在应用项目启动时，给应用项目初始化一个ServletContext作为公共环境容器存放公共信息。ServletContext中的信息都是由容器提供的。



]]></description><category></category></item><item><title><![CDATA[NettyExample 1.2 Http文件的上传和下载]]></title><link>https://blog.youkuaiyun.com/mdq11111/article/details/78946775</link><guid>https://blog.youkuaiyun.com/mdq11111/article/details/78946775</guid><author>mdq11111</author><pubDate>Mon, 01 Jan 2018 19:20:32 +0800</pubDate><description><![CDATA[NettyExample 1.2 Http文件的上传和下载



Netty服务端。
注意：如果文件过大需要调整HttpObjectAggregator的初始化参数，数据传输的大小

public class NettyHttpServer {
     private static Logger log = LoggerFactory.getLogger(NettyHttpSer]]></description><category></category></item><item><title><![CDATA[NettyExample 1 构建简单的http服务]]></title><link>https://blog.youkuaiyun.com/mdq11111/article/details/78946755</link><guid>https://blog.youkuaiyun.com/mdq11111/article/details/78946755</guid><author>mdq11111</author><pubDate>Mon, 01 Jan 2018 19:16:08 +0800</pubDate><description><![CDATA[NettyExample 1 构建简单的http服务


netty 最新版本是netty-4.1.15.Final. 本来还有Netty5，但官网已经放弃5.0了，maven仓库倒是还有5.0的版本。下载netty-4.1.15.Final源码包，里面包含一个 netty-example-4.1.15.Final-sources.jar文件,提供了比较丰富的example例子。


]]></description><category></category></item><item><title><![CDATA[Netty 4 ChannelHandler和ChannelPipeline]]></title><link>https://blog.youkuaiyun.com/mdq11111/article/details/78946744</link><guid>https://blog.youkuaiyun.com/mdq11111/article/details/78946744</guid><author>mdq11111</author><pubDate>Mon, 01 Jan 2018 19:14:54 +0800</pubDate><description><![CDATA[Netty 4 ChannelHandler和ChannelPipeline


相关的接口：
1.ChannelHandler
   对应的ChannelInboundHandler和ChannelOutboundHandler
   对应的ChannelInboundHandlerAdapter和ChannelOutboundHandlerAdapter
2.ChannelPip]]></description><category></category></item><item><title><![CDATA[Netty 3 Bootstrap和Channel的生命周期]]></title><link>https://blog.youkuaiyun.com/mdq11111/article/details/78946723</link><guid>https://blog.youkuaiyun.com/mdq11111/article/details/78946723</guid><author>mdq11111</author><pubDate>Mon, 01 Jan 2018 19:09:53 +0800</pubDate><description><![CDATA[Netty 3 Bootstrap和Channel的生命周期








Bootstrap简介
Bootstrap ：引导程序，将ChannelPipeline、ChannelHandler、EventLoop进行整体关联作用。
Bootstrap的结构中。定义了一个抽象父类，两个具体子类。







public abstract class Ab]]></description><category></category></item><item><title><![CDATA[Netty 2 线程模型和EventLoop源码]]></title><link>https://blog.youkuaiyun.com/mdq11111/article/details/78946713</link><guid>https://blog.youkuaiyun.com/mdq11111/article/details/78946713</guid><author>mdq11111</author><pubDate>Mon, 01 Jan 2018 19:07:11 +0800</pubDate><description><![CDATA[Netty 2 线程模型和EventLoop源码





Reactor线程模型
Reactor是一种经典的线程模型，Reactor线程模型分为单线程模型、多线程模型以及主从多线程模型。下面分别分析一下各个Reactor线程模型的优缺点。





Reactor单线程模型仅使用一个线程来处理所有的事情，包括客户端的连接和到服务器的连接，以及所有连接产生的读写事件，这种]]></description><category></category></item><item><title><![CDATA[Java并发编程艺术 9 Java中的线程池]]></title><link>https://blog.youkuaiyun.com/mdq11111/article/details/77822722</link><guid>https://blog.youkuaiyun.com/mdq11111/article/details/77822722</guid><author>mdq11111</author><pubDate>Sun, 03 Sep 2017 15:22:21 +0800</pubDate><description><![CDATA[第9章  Java中的线程池


线程池的优点
【1】降低资源消耗。通过重复利用已创建的线程，可以减少创建、销毁线程的消耗
【2】提高响应速度。可以直接使用已创建线程。
【3】提高线程的管理性。通过线程池统一的分配、调优和监控。



线程池创建

new ThreadPoolExecutor(corePoolSize, maximumPoolSize, keepAlive]]></description><category></category></item><item><title><![CDATA[Java并发编程艺术 8 Java中的并发工具类]]></title><link>https://blog.youkuaiyun.com/mdq11111/article/details/77822701</link><guid>https://blog.youkuaiyun.com/mdq11111/article/details/77822701</guid><author>mdq11111</author><pubDate>Sun, 03 Sep 2017 15:20:01 +0800</pubDate><description><![CDATA[第8章 Java中的并发工具类


并发工具类中主要提供了一些并发流程控制的手段。主要有CountDownLatch、CyclicBarriery和Semaphore
Exchanger工具类提供在线程间交换数据的一种手段。




CountDownLatch 
CountDownLatch类能够使一个线程进行等待，等待其他相关的线程完成各自的任务以后再执行当前线程的工作。]]></description><category></category></item><item><title><![CDATA[Java并发编程艺术 7 Java的13个原子操作类]]></title><link>https://blog.youkuaiyun.com/mdq11111/article/details/77822689</link><guid>https://blog.youkuaiyun.com/mdq11111/article/details/77822689</guid><author>mdq11111</author><pubDate>Sun, 03 Sep 2017 15:18:21 +0800</pubDate><description><![CDATA[第7章 Java的13个原子操作类


原子更新基本数据类型
AtomticBoolean    AtomicInteger   AtomicLong



AtomicInteger aint = new AtomicInteger(10);
aint.incrementAndGet();    //原子方式将当前值加1，返回自增后的  ++i
aint.decrementA]]></description><category></category></item><item><title><![CDATA[Java并发编程艺术 6 Fork/Join框架]]></title><link>https://blog.youkuaiyun.com/mdq11111/article/details/77822675</link><guid>https://blog.youkuaiyun.com/mdq11111/article/details/77822675</guid><author>mdq11111</author><pubDate>Sun, 03 Sep 2017 15:17:06 +0800</pubDate><description><![CDATA[Java并发编程艺术 6 Fork/Join框架]]></description><category></category></item><item><title><![CDATA[Java并发编程艺术 6 Java并发容器和框架]]></title><link>https://blog.youkuaiyun.com/mdq11111/article/details/77822629</link><guid>https://blog.youkuaiyun.com/mdq11111/article/details/77822629</guid><author>mdq11111</author><pubDate>Sun, 03 Sep 2017 15:10:28 +0800</pubDate><description><![CDATA[第六章 Java并发容器和框架


ConcurrentHashMap
ConcurrentHashMap是线程安全的HashMap，保证线程安全的同时保证高效。是HashMap和HashTable的进化版。


HashMap和HashTable的区别
HashMap和HashTable几乎是等价的，但还是存在一定的区别。
【1】HashMap不是线程安全的，HashTable]]></description><category></category></item><item><title><![CDATA[Java并发编程艺术  5 Java中的锁]]></title><link>https://blog.youkuaiyun.com/mdq11111/article/details/77689308</link><guid>https://blog.youkuaiyun.com/mdq11111/article/details/77689308</guid><author>mdq11111</author><pubDate>Tue, 29 Aug 2017 22:46:21 +0800</pubDate><description><![CDATA[第五章 Java中的锁


Lock接口
在Lock接口出现之前，Java使用synchronized管金子实现锁功能，在JavaSE 5 后，在并发包中新增了Lock接口（相关实现）来完成锁功能。Lock提供与synchronized类似的同步功能。


Lock在使用过程中需要显式的获取和释放锁。，缺少了synchronized提供隐式获取释放的便捷性。但是提供了锁的操作性，可以]]></description><category></category></item></channel></rss>