<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[blueskypan的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/blueskypan</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; blueskypan]]></copyright><item><title><![CDATA[How Tomcat works 18: JMX管理]]></title><link>https://blog.youkuaiyun.com/blueskypan/article/details/83586033</link><guid>https://blog.youkuaiyun.com/blueskypan/article/details/83586033</guid><author>blueskypan</author><pubDate>Wed, 31 Oct 2018 16:23:27 +0800</pubDate><description><![CDATA[    1. Tomcat中的JMX概述
（1）概述
    对于一个可以被管理的Java对象，我们需要创建另一个对象MBean或Managed Bean。org.apache.catalina.mbeans包中有：ConnectorMBean, StandardEngineMBean, StandardHostMBean, StandardContextMBean。
    一个MBean暴露出...]]></description><category></category></item><item><title><![CDATA[How Tomcat works 16-17: ShutdownHook 和Tomcat启动]]></title><link>https://blog.youkuaiyun.com/blueskypan/article/details/83583065</link><guid>https://blog.youkuaiyun.com/blueskypan/article/details/83583065</guid><author>blueskypan</author><pubDate>Wed, 31 Oct 2018 14:12:48 +0800</pubDate><description><![CDATA[Shutdown Hook

一、概述
    1. JVM会响应关闭自己的两种Event
    （1）应用程序调用System.exit方法或最后一个非守护进程non-daemon退出
    （2）用户在关java程序之前，突然强制关机，比如CTRL+C或者注销系统
    2. JVM为shuttingdown提供了两段式处理流程
    （1）JVM会和所有注册过的shutdown ho...]]></description><category></category></item><item><title><![CDATA[How Tomcat Works 15: Digester]]></title><link>https://blog.youkuaiyun.com/blueskypan/article/details/83537303</link><guid>https://blog.youkuaiyun.com/blueskypan/article/details/83537303</guid><author>blueskypan</author><pubDate>Tue, 30 Oct 2018 10:02:20 +0800</pubDate><description><![CDATA[一、概述
    前面章节中，使用hard-code来管理各component间的从属关系，如果需要改变则需要重新编译Bootstrap类。幸运的是tomcat设计者采用了更优雅的方法来管理配置，即XML文件server.xml. 这样我们只需要修改server.xml文件就可以设置tomcat。如：&amp;lt;context docBase='myApp' path=&quot;/myApp&quot;/&amp;gt;
  ...]]></description><category></category></item><item><title><![CDATA[How Tomcat works 14: Service 和 Server]]></title><link>https://blog.youkuaiyun.com/blueskypan/article/details/83507282</link><guid>https://blog.youkuaiyun.com/blueskypan/article/details/83507282</guid><author>blueskypan</author><pubDate>Mon, 29 Oct 2018 16:01:43 +0800</pubDate><description><![CDATA[一、Server
    1. 总体架构位置


    2. Server的设计目的
    Server提供了优雅的启动停止所有内部组件的功能，有了server,无需再单独启动connector和Container
    3. Server具体内部功能
    server的许多内部方法都可以配置在server.xml文件中。可以包含0个到多个Service。Server的生命周期关联四个方...]]></description><category></category></item><item><title><![CDATA[How Tomcat works 13：Host容器和Engine容器]]></title><link>https://blog.youkuaiyun.com/blueskypan/article/details/83504440</link><guid>https://blog.youkuaiyun.com/blueskypan/article/details/83504440</guid><author>blueskypan</author><pubDate>Mon, 29 Oct 2018 13:28:06 +0800</pubDate><description><![CDATA[一、 Host
    容器Host比较简单，主要配置hostname，别名，添加默认和包含的context，以及是否允许自动部署等功能。
    （1）Host总体设计架构

   

（2）Request的处理流程
   A. 一个Request进入host后首先会使用pipleline责任链依次调用配置好的valves
   B. 在StandardValve内部standardHostMa...]]></description><category></category></item><item><title><![CDATA[RabbitMQ 配置和基本原理]]></title><link>https://blog.youkuaiyun.com/blueskypan/article/details/83410054</link><guid>https://blog.youkuaiyun.com/blueskypan/article/details/83410054</guid><author>blueskypan</author><pubDate>Fri, 26 Oct 2018 09:37:02 +0800</pubDate><description><![CDATA[    1. 配置：
    （1）最简单的java配置法：        


public class Test {
            public static void main(String[] args) {
                ConnectionFactory connectionFactory = new CachingConnectionFactory();
...]]></description><category></category></item><item><title><![CDATA[线程系列]]></title><link>https://blog.youkuaiyun.com/blueskypan/article/details/83374154</link><guid>https://blog.youkuaiyun.com/blueskypan/article/details/83374154</guid><author>blueskypan</author><pubDate>Thu, 25 Oct 2018 09:07:53 +0800</pubDate><description><![CDATA[    1. 线程不安全的原因


    java内存模型： 线程内存栈&amp;lt;----&amp;gt;堆 主存，之间的读取和写入导致多线程数据不一致问题
    2. Java的线程安全
    （1）使用synchronized
    a.方法同步时，锁定object，若方法静态锁定class
    b.synchronized(this)将在进入同步块前锁定对象
    c.需要避免deadl...]]></description><category></category></item><item><title><![CDATA[【MSQL】 yum安装以及 Master-Slave主从复制同步配置]]></title><link>https://blog.youkuaiyun.com/blueskypan/article/details/83309270</link><guid>https://blog.youkuaiyun.com/blueskypan/article/details/83309270</guid><author>blueskypan</author><pubDate>Tue, 23 Oct 2018 16:46:25 +0800</pubDate><description><![CDATA[    1. Yum 安装：
      


        # wget http://repo.mysql.com/mysql57-community-release-el6.rpm   
        # yum install -y mysql57-community-release-el6.rpm
        # yum search mysql #找到mysql57-commu...]]></description><category></category></item><item><title><![CDATA[Maven 相关知识点]]></title><link>https://blog.youkuaiyun.com/blueskypan/article/details/83184725</link><guid>https://blog.youkuaiyun.com/blueskypan/article/details/83184725</guid><author>blueskypan</author><pubDate>Fri, 19 Oct 2018 16:45:21 +0800</pubDate><description><![CDATA[    1. Maven的Lifecycle和Scope
    
    （1）Dependency Scope:
        a. compile时，在编译、测试、运行时，都需要jar在classpath中
        b. provided时，在编译、测试时，需要jar在classpath中，而运行时则认为在容器如【tomcat或JDK】会默认提供，所以不需要jar在classpat...]]></description><category></category></item><item><title><![CDATA[How Tomcat Works 12:  StandardContext]]></title><link>https://blog.youkuaiyun.com/blueskypan/article/details/83107754</link><guid>https://blog.youkuaiyun.com/blueskypan/article/details/83107754</guid><author>blueskypan</author><pubDate>Wed, 17 Oct 2018 12:19:36 +0800</pubDate><description><![CDATA[    1. StandardContext的配置
    （1）启动：start()方法调用后，如果context实例失败，需要将available设为false
    （2）Tomcat部署context时：会先读取解析%CATALINA_HOME%/conf内的web.xml为所有standardContext，而后会读取解析webapp-level级别的web.xml。此外，authen...]]></description><category></category></item><item><title><![CDATA[How Tomcat works 10: Security]]></title><link>https://blog.youkuaiyun.com/blueskypan/article/details/83090497</link><guid>https://blog.youkuaiyun.com/blueskypan/article/details/83090497</guid><author>blueskypan</author><pubDate>Tue, 16 Oct 2018 22:30:29 +0800</pubDate><description><![CDATA[    1. 概述：
    WebApp的资源的访问限制可以通过web.xml文件来支撑。Servlet容器可以通过叫做Authenticator valve类来支持。Authenticator valve会调用context's realms的authenticate方法校验user
    2. Realm类
    （1）一个Realm通常附属于一个context, 一个container...]]></description><category></category></item><item><title><![CDATA[How Tomcat works 11: StandardWrapper容器]]></title><link>https://blog.youkuaiyun.com/blueskypan/article/details/83098702</link><guid>https://blog.youkuaiyun.com/blueskypan/article/details/83098702</guid><author>blueskypan</author><pubDate>Tue, 16 Oct 2018 22:29:50 +0800</pubDate><description><![CDATA[    1. Http request处理时序图
    
    2. StandardContext和StandardWrapper的构造函数：      


  Public StandardContext() {
            super();
            pipeline.setBasic(new StandardContextValve());
        ...]]></description><category></category></item><item><title><![CDATA[How tomcat works 9: Session Management]]></title><link>https://blog.youkuaiyun.com/blueskypan/article/details/83088241</link><guid>https://blog.youkuaiyun.com/blueskypan/article/details/83088241</guid><author>blueskypan</author><pubDate>Tue, 16 Oct 2018 14:36:55 +0800</pubDate><description><![CDATA[1. 概述

（1）在HttpRequestBase的doGetSession()中，

a. 会使用manager=context.getManager-&amp;gt;session=manager.findSession(reqSessionId)

b. manager可以使用file或database持久化session

2. Sessions

(1) 由于安全问题使用StandardSes...]]></description><category></category></item><item><title><![CDATA[How Tomcat works 8: Loader类]]></title><link>https://blog.youkuaiyun.com/blueskypan/article/details/83068312</link><guid>https://blog.youkuaiyun.com/blueskypan/article/details/83068312</guid><author>blueskypan</author><pubDate>Tue, 16 Oct 2018 09:52:49 +0800</pubDate><description><![CDATA[1. 概述

  （1）需要定制加载类的原因：

安全性：每个context需要有自己的class loader来加载所有内部的servlet类。而不能用系统自带的system loader来加载，否则违反安全性约束
	重新加载：当WEB-INF/classes中的类改变时，需要重新加载
2. Java类加载器

（1）JVM每次加载java类，先创建class对象，后载入内存

（2）JVM加载...]]></description><category></category></item><item><title><![CDATA[How Tomcat works 7: Logger日志系统]]></title><link>https://blog.youkuaiyun.com/blueskypan/article/details/83058701</link><guid>https://blog.youkuaiyun.com/blueskypan/article/details/83058701</guid><author>blueskypan</author><pubDate>Mon, 15 Oct 2018 14:48:16 +0800</pubDate><description><![CDATA[1. Logger接口

（1）Code:


		package com.cisco.tomcat.logger;
		
		import java.beans.PropertyChangeListener;
		import com.cisco.tomcat.lifecycle.Container;
		
		public interface Logger {
			public static...]]></description><category></category></item><item><title><![CDATA[How Tomcat works 6: Lifecycle]]></title><link>https://blog.youkuaiyun.com/blueskypan/article/details/83052385</link><guid>https://blog.youkuaiyun.com/blueskypan/article/details/83052385</guid><author>blueskypan</author><pubDate>Sun, 14 Oct 2018 23:25:38 +0800</pubDate><description><![CDATA[概述
    Catalina由许多组件组成，当容器启动时，这些组件都需要启动。当容器停止时，所有组件都需要做清除动作。如：调用所有servlet的detroy动作，session manager把session对象存入第二存储位置。启动和停止组件的持续性机制就是实现Lifecycle接口的实现类。

    Lifecycle接口的实现组件可以触发一个或多个事件(Events):

    与启...]]></description><category></category></item><item><title><![CDATA[How Tomcat works 4-5: Container]]></title><link>https://blog.youkuaiyun.com/blueskypan/article/details/83052331</link><guid>https://blog.youkuaiyun.com/blueskypan/article/details/83052331</guid><author>blueskypan</author><pubDate>Sun, 14 Oct 2018 23:20:01 +0800</pubDate><description><![CDATA[Container概述
（1）主要包含四种：Engine：整个catalina servlet容器, Host：一个虚拟主机包含多个context容器, Context：一个web应用容器，包含一道多个Wrapper容器, Wrapper：独立servlet容器

（2）UML图



（3）添加/移除/查找子容器：

container.addChild(container) -&amp;gt; con...]]></description><category></category></item><item><title><![CDATA[How Tomcat works 3： 简单的connector]]></title><link>https://blog.youkuaiyun.com/blueskypan/article/details/83052256</link><guid>https://blog.youkuaiyun.com/blueskypan/article/details/83052256</guid><author>blueskypan</author><pubDate>Sun, 14 Oct 2018 23:12:10 +0800</pubDate><description><![CDATA[Connetor的业务流程图：


StringManager：
（1）用于给tomcat管理各种error message。不同语言包的error Message存储在如：LocalStrings.properties， 日文的文件如：LocalStrings_jp.properties

（2）StringManager是包内共享，全局使用Singleton pattern将所有key-val...]]></description><category></category></item><item><title><![CDATA[How Tomcat Works 2: A Simple Servlet Server]]></title><link>https://blog.youkuaiyun.com/blueskypan/article/details/82897512</link><guid>https://blog.youkuaiyun.com/blueskypan/article/details/82897512</guid><author>blueskypan</author><pubDate>Sat, 29 Sep 2018 14:58:37 +0800</pubDate><description><![CDATA[1 javax.servlet.Servlet 接口

（1）接口包含五个方法：

Public void init(ServletCongig config)

Public void service(ServletRequest request, ServletResponse response)

Public void destory()

Public void ServletConfi...]]></description><category></category></item><item><title><![CDATA[How Tomcat Works 1: A Simple Http Server]]></title><link>https://blog.youkuaiyun.com/blueskypan/article/details/82881525</link><guid>https://blog.youkuaiyun.com/blueskypan/article/details/82881525</guid><author>blueskypan</author><pubDate>Fri, 28 Sep 2018 13:22:56 +0800</pubDate><description><![CDATA[A Simple Web Server

    Web Server也称作HTTP server，用于客户端和服务器端HTTP通信。Java-base的webserver 主要使用java.net.Socket and java.net.ServerSocket.

 

1 HTTP协议介绍（Hypertest Transfer Protocol）

    Client request一个文...]]></description><category></category></item></channel></rss>