<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Roderick2015的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/Roderick2015</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Roderick2015]]></copyright><item><title><![CDATA[Tomcat架构学习总结]]></title><link>https://blog.youkuaiyun.com/Roderick2015/article/details/77435383</link><guid>https://blog.youkuaiyun.com/Roderick2015/article/details/77435383</guid><author>Roderick2015</author><pubDate>Sun, 27 Aug 2017 22:57:14 +0800</pubDate><description><![CDATA[首先用java编写一个最简单的http服务器我们需要做什么？ 
1.创建ServerSocket对象并监听某个端口（假定为8080） 
2.接收请求的字节流，解析并处理http协议内容 
3.执行业务逻辑 
4.响应处理结果 
大家都知道，为了执行业务逻辑，我们需要做大部分的重复工作，而且网络连接这块情况复杂容易出现问题，在实际工作中还要面对安全管理、监控管理等复杂问题。Tomcat这样的web服]]></description><category></category></item><item><title><![CDATA[SpringMVC源码之DispatchServlet请求处理]]></title><link>https://blog.youkuaiyun.com/Roderick2015/article/details/52908594</link><guid>https://blog.youkuaiyun.com/Roderick2015/article/details/52908594</guid><author>Roderick2015</author><pubDate>Mon, 24 Oct 2016 08:42:26 +0800</pubDate><description><![CDATA[我们编写Servlet处理Http请求时需要继承HttpServlet，因为在它的service方法中会把Web容器中获取到的HttpServletRequest和HttpServletResponse对象分发到doGet、doPost、doPut等七个方法中进行处理，我们只需覆写对应的方法即可，如覆写doGet方法来处理get类型的请求。]]></description><category></category></item><item><title><![CDATA[深入Tomcat源码分析Session到底是个啥!]]></title><link>https://blog.youkuaiyun.com/Roderick2015/article/details/52859314</link><guid>https://blog.youkuaiyun.com/Roderick2015/article/details/52859314</guid><author>Roderick2015</author><pubDate>Wed, 19 Oct 2016 14:48:02 +0800</pubDate><description><![CDATA[Session到底是个啥？我们都知道，HTTP协议本身是无状态的(Stateless)，这对于一些简单的页面展示来说，功能足够，不受影响。而对于日渐复杂的动态页面、应用，各种需要登录认证等场景，就力不从心了。试想对于一个已经登录的用户仍然一次次的提示登录，会是什么感受呢？因此，多数需要保持状态的应用，就要保证客户端和服务端交互状态的一致。对]]></description><category></category></item><item><title><![CDATA[Nginx/ZooKeeper 负载均衡的差异]]></title><link>https://blog.youkuaiyun.com/Roderick2015/article/details/52847867</link><guid>https://blog.youkuaiyun.com/Roderick2015/article/details/52847867</guid><author>Roderick2015</author><pubDate>Tue, 18 Oct 2016 12:33:11 +0800</pubDate><description><![CDATA[Nginx是著名的反向代理服务器，也被广泛的作为负载均衡服务器
ZooKeeper是分布式协调服务框架，有时也被用来做负载均衡
那么他们的区别是什么？如何选择呢？]]></description><category></category></item><item><title><![CDATA[SpringMVC源码之解读DispatcherServlet初始化流程]]></title><link>https://blog.youkuaiyun.com/Roderick2015/article/details/52846240</link><guid>https://blog.youkuaiyun.com/Roderick2015/article/details/52846240</guid><author>Roderick2015</author><pubDate>Tue, 18 Oct 2016 09:52:09 +0800</pubDate><description><![CDATA[SpringMVC的配置流程并不复杂，但每个步骤所涉及的东西比较多，一不小心配错可就糟糕了。但这参与感十足的配置方式除了它的灵活性外，也能让我们更加清楚框架在为我们服务之前，到底做了哪些事情，接下来我们就到源码中去看看SpringMVC的核心入口类DispatcherServlet在Web容器启动后做了哪些准备。]]></description><category></category></item><item><title><![CDATA[深入浅出ClassLoader]]></title><link>https://blog.youkuaiyun.com/Roderick2015/article/details/52767342</link><guid>https://blog.youkuaiyun.com/Roderick2015/article/details/52767342</guid><author>Roderick2015</author><pubDate>Sun, 09 Oct 2016 15:32:46 +0800</pubDate><description><![CDATA[1.为什么你需要了解和敬畏ClassLoader
ClassLoader在Java语言中占据了核心地位，Java应用服务器，OSGi，以及大量的网络框架，它们大多数都用到了ClassLoader。如果在使用过程中出现了类加载错误，你能解决它吗？

我们将从JVM和开发者两个角度讲述ClassLoader，将会选择一些典型的案例，然后演示如何解决它们。NoClassDefFoundError，Linkag]]></description><category></category></item><item><title><![CDATA[Tomcat的server.xml配置文件解析]]></title><link>https://blog.youkuaiyun.com/Roderick2015/article/details/52759201</link><guid>https://blog.youkuaiyun.com/Roderick2015/article/details/52759201</guid><author>Roderick2015</author><pubDate>Sat, 08 Oct 2016 17:38:50 +0800</pubDate><description><![CDATA[server.xml是我们配置和优化Tomcat时最重要的文件，Tomcat的几大核心组件都在这里配置，它上手容易，即食即用，见效快。对想要理解Tomcat原理的读者来说就更必不可少了，下面是它的标签结构。]]></description><category></category></item><item><title><![CDATA[聊聊设计模式 — 观察者模式]]></title><link>https://blog.youkuaiyun.com/Roderick2015/article/details/52728053</link><guid>https://blog.youkuaiyun.com/Roderick2015/article/details/52728053</guid><author>Roderick2015</author><pubDate>Mon, 03 Oct 2016 14:39:49 +0800</pubDate><description><![CDATA[想必玩过网络游戏的读者都知道任务系统，就是有人交给你个任务，然后你去完成这个目标。比如打打怪什么的，当你达成目标后，系统会提示你任务完成，还会给你点小奖励。那系统是怎么跟踪任务的，它怎么就知道你完成了呢？ 
       今天我们就从游戏的角度来了解观察者模式，首先我们需要编写玩家和任务系统两个对象，最后在场景类中进行调用。]]></description><category></category></item><item><title><![CDATA[聊聊设计模式 — 模板方法模式]]></title><link>https://blog.youkuaiyun.com/Roderick2015/article/details/52613886</link><guid>https://blog.youkuaiyun.com/Roderick2015/article/details/52613886</guid><author>Roderick2015</author><pubDate>Wed, 21 Sep 2016 21:54:18 +0800</pubDate><description><![CDATA[模板方法模式概括起来，就是先定义一个父类，然后写个模板方法包含一套处理流程，流程中的每个步骤都对应到独立的方法中处理，最后在模板方法中按照顺序汇总执行。流程可以这样理解，比如我们把下班回家吃饭分成三个步骤：1.下班回家 2.做饭 3.吃饭，这就是一个流程，而且必须得按照逻辑顺序，你肯定不能先吃饭，再做饭吧。而人千千万，是不可能一模一样的，有人开车回家，有人挤地铁回家，这就是子类要做的事，覆写父类的步骤方法，给出自己的]]></description><category></category></item><item><title><![CDATA[聊聊Java源码 — HashMap(1)]]></title><link>https://blog.youkuaiyun.com/Roderick2015/article/details/52563782</link><guid>https://blog.youkuaiyun.com/Roderick2015/article/details/52563782</guid><author>Roderick2015</author><pubDate>Sat, 17 Sep 2016 16:45:41 +0800</pubDate><description><![CDATA[起初呢，HashMap只是一个小小的数组，它拿到key之后，通过一个叫hash的算法，得到与该key对应的数组下标，并把key和value都存储到这个位置上，这就是HashMap的一个Node，计算这个下标的算法受数组长度和key值的影响，只要两者不变，位置就是固定的，所以在查询时花费的时间复杂度是O(1)。当你的key越来越多，出现两个甚至多个key被hash到同一个位置的情况，这就是hash碰撞，怎么办？]]></description><category></category></item><item><title><![CDATA[消息队列设计精要]]></title><link>https://blog.youkuaiyun.com/Roderick2015/article/details/52336155</link><guid>https://blog.youkuaiyun.com/Roderick2015/article/details/52336155</guid><author>Roderick2015</author><pubDate>Sat, 27 Aug 2016 17:30:06 +0800</pubDate><description><![CDATA[消息队列已经逐渐成为企业IT系统内部通信的核心手段。它具有低耦合、可靠投递、广播、流量控制、最终一致性等一系列功能，成为异步RPC的主要手段之一。当今市面上有很多主流的消息中间件，如老牌的ActiveMQ、Ra]]></description><category></category></item><item><title><![CDATA[消息队列的流派之争]]></title><link>https://blog.youkuaiyun.com/Roderick2015/article/details/52326967</link><guid>https://blog.youkuaiyun.com/Roderick2015/article/details/52326967</guid><author>Roderick2015</author><pubDate>Fri, 26 Aug 2016 11:44:30 +0800</pubDate><description><![CDATA[这篇文章的标题很难起，网上一翻全是各种MQ的性能比较，很容易让人以为我也是这么“粗俗”的人（o(╯□╰)o）。我这篇文章想要表达的是——它们根本不是一个东西，有毛的性能好比较？MQ是什么 
Message Queue（MQ），消息队列中间件。很多人都说：MQ通过将消息的发送和接收分离来实现应用程序的异步和解偶，这个给人的直觉是——MQ是异步的，用来解耦的，但是这个只是MQ的效果而不是目的。MQ真正的]]></description><category></category></item><item><title><![CDATA[Thrift应用实践—基本篇]]></title><link>https://blog.youkuaiyun.com/Roderick2015/article/details/52290982</link><guid>https://blog.youkuaiyun.com/Roderick2015/article/details/52290982</guid><author>Roderick2015</author><pubDate>Tue, 23 Aug 2016 15:01:18 +0800</pubDate><description><![CDATA[Thrift作为一个RPC框架，很好的解决了跨语言调用问题，并提供灵活高效的传输方式和Server模式。在实际应用中，个人认为Thrift更多的是用于系统的解耦，负责模块间的通信，使各模块可以独立开发、测试和发布等，一般情况下无需担心跨语言调用和传输性能问题。]]></description><category></category></item></channel></rss>