<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Jagger的博客]]></title><description><![CDATA[天道酬勤]]></description><link>https://blog.youkuaiyun.com/sinat_29899265</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; sinat_29899265]]></copyright><item><title><![CDATA[Tomcat源码解析：请求处理过程]]></title><link>https://blog.youkuaiyun.com/sinat_29899265/article/details/106946587</link><guid>https://blog.youkuaiyun.com/sinat_29899265/article/details/106946587</guid><author>sinat_29899265</author><pubDate>Sun, 28 Jun 2020 10:59:03 +0800</pubDate><description><![CDATA[文章目录前言建立Socket连接发布PollerEvent事件处理PollerEvent事件读取Socket数据解析Http数据匹配servlet调用servlet创建filter调用链调用Filter调用servlet总结
我们都知道，一个http请求过程一般为浏览器发送请求-&gt;建立socket连接-&gt;通过socket读取数据-&gt;解析http数据-&gt;调用后台服务完成响应，而对于Tomcat来说，着重点在建立socket连接-&gt;通过socket读取数据-&gt;解析http数据]]></description><category></category></item><item><title><![CDATA[Tomcat源码解析：启动]]></title><link>https://blog.youkuaiyun.com/sinat_29899265/article/details/106946439</link><guid>https://blog.youkuaiyun.com/sinat_29899265/article/details/106946439</guid><author>sinat_29899265</author><pubDate>Wed, 24 Jun 2020 16:24:31 +0800</pubDate><description><![CDATA[文章目录1.Catalina开启start2.Server启动3.Service启动3.1 Engine启动3.2 Host3.2.1 Host的初始化3.2.2 Host的启动3.2.3Pipeline启动3.2.4 HostConfig3.3 Context3.3.1 Context的启动3.3.2 ContextConfig3.3.2.1 Wrapper的启动3.3.2.2 加载静态文件3.3.2.3 设置ServletContainerInitializer3.3.3 调用ServletContai]]></description><category></category></item><item><title><![CDATA[Tomcat源码解析：初始化]]></title><link>https://blog.youkuaiyun.com/sinat_29899265/article/details/106946294</link><guid>https://blog.youkuaiyun.com/sinat_29899265/article/details/106946294</guid><author>sinat_29899265</author><pubDate>Wed, 24 Jun 2020 16:18:55 +0800</pubDate><description><![CDATA[文章目录BootstrapinitloadCatalinaloadDigesterinitServer初始化Service初始化Engine初始化Connector初始化ProtocolHandler初始化Endpoint初始化
Bootstrap
启动Tomcat只需要执行Bootstrap中的#main方法即可。
public static void main(String[] args) {
     Bootstrap bootstrap = new Bootstrap();
     bootst]]></description><category></category></item><item><title><![CDATA[Tomcat源码解析：环境搭建]]></title><link>https://blog.youkuaiyun.com/sinat_29899265/article/details/106946205</link><guid>https://blog.youkuaiyun.com/sinat_29899265/article/details/106946205</guid><author>sinat_29899265</author><pubDate>Wed, 24 Jun 2020 16:15:24 +0800</pubDate><description><![CDATA[下载源码
从github下载tomcat源码
git clone https://github.com/apache/tomcat.git

或者直接fork一份到自己仓库，以便后续添加注释，附上笔者自己的tomcat地址https://github.com/jaggercoders/tomcat.git
MAVEN构建
因为本人习惯使用maven，所以将源码转为maven工程，新建pom.xml
&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;projec]]></description><category></category></item><item><title><![CDATA[SpringBoot集成neo4j示例]]></title><link>https://blog.youkuaiyun.com/sinat_29899265/article/details/102516424</link><guid>https://blog.youkuaiyun.com/sinat_29899265/article/details/102516424</guid><author>sinat_29899265</author><pubDate>Sat, 12 Oct 2019 10:58:19 +0800</pubDate><description><![CDATA[文章目录SpringBoot集成neo4j配置测试neo4j cypher常用语法创建创建node创建relationship查询1.查询节点2.查询两个节点的关系3.限制路径查询条件删除补充1.MATCH与OPTIONAL MATCH的区别2.常用的relationship函数
SpringBoot集成neo4j
配置

xml配置：

&lt;dependency&gt;
    &lt;gr...]]></description><category></category></item><item><title><![CDATA[使用DockerCompose部署SpringBoot项目]]></title><link>https://blog.youkuaiyun.com/sinat_29899265/article/details/98062590</link><guid>https://blog.youkuaiyun.com/sinat_29899265/article/details/98062590</guid><author>sinat_29899265</author><pubDate>Thu, 01 Aug 2019 15:22:17 +0800</pubDate><description><![CDATA[文章目录环境准备构建Docker镜像docker command构建maven插件构建Docker Compose构建docker-compose 文件run docker-compose扩展
环境准备

首先需要安装Docker环境，如果是Mac或者Windows系统可从官网直接下载Docker Desktop，Linux用户可参考官网的安装示例。
准备两个SpringBoot项目demo和de...]]></description><category></category></item><item><title><![CDATA[Spring IOC源码分析二：Spring refresh上-@Configuration、@Component、@Bean]]></title><link>https://blog.youkuaiyun.com/sinat_29899265/article/details/94720587</link><guid>https://blog.youkuaiyun.com/sinat_29899265/article/details/94720587</guid><author>sinat_29899265</author><pubDate>Fri, 05 Jul 2019 10:40:55 +0800</pubDate><description><![CDATA[文章目录1.prepareRefresh3.prepareBeanFactory4.postProcessBeanFactory5.invokeBeanFactoryPostProcessors执行BeanFactoryPostProcessorsConfigurationClassPostProcessorpostProcessBeanDefinitionRegistry方法解析@Configu...]]></description><category></category></item><item><title><![CDATA[mysql8.0.11 datetime精度丢失的问题]]></title><link>https://blog.youkuaiyun.com/sinat_29899265/article/details/91990485</link><guid>https://blog.youkuaiyun.com/sinat_29899265/article/details/91990485</guid><author>sinat_29899265</author><pubDate>Fri, 14 Jun 2019 17:32:28 +0800</pubDate><description><![CDATA[序
测试接口时，代码中使用LocalDateTime.now()生成时间戳，并insert到db中类型为datetime的字段中，查看db后发现存入的时间与系统生成的时间不同，多了一秒，打断点发现new 出来的Date为2019-06-14 13:02:58.789,存入的数据为2019-06-14 13:02:59。经过排查解决后，记录一下此次问题。
排查思路
首先这很明显可以看出是因为时间的精...]]></description><category></category></item><item><title><![CDATA[Spring IOC源码分析四：@Autowired]]></title><link>https://blog.youkuaiyun.com/sinat_29899265/article/details/89357532</link><guid>https://blog.youkuaiyun.com/sinat_29899265/article/details/89357532</guid><author>sinat_29899265</author><pubDate>Wed, 17 Apr 2019 15:43:05 +0800</pubDate><description><![CDATA[文章目录测试用例源码分析1.注册AutowiredAnnotationBeanPostProcessor-beanDefinition2.实例化AutowiredAnnotationBeanPostProcessor3.调用AutowiredAnnotationBeanPostProcessor作为MergedBeanDefinitionPostProcessor作为InstantiationAw...]]></description><category></category></item><item><title><![CDATA[Spring IOC源码分析三：Spring refresh下-实例化bean]]></title><link>https://blog.youkuaiyun.com/sinat_29899265/article/details/89023404</link><guid>https://blog.youkuaiyun.com/sinat_29899265/article/details/89023404</guid><author>sinat_29899265</author><pubDate>Thu, 04 Apr 2019 15:10:21 +0800</pubDate><description><![CDATA[文章目录7.initMessageSource8.initApplicationEventMulticaster9.onRefresh10.registerListeners11.finishBeanFactoryInitializationcreate Bean Instancefactory instantiate beanautwire instantiate beandefault ins...]]></description><category></category></item><item><title><![CDATA[Spring IOC源码分析一：注册beanDefinition]]></title><link>https://blog.youkuaiyun.com/sinat_29899265/article/details/89022765</link><guid>https://blog.youkuaiyun.com/sinat_29899265/article/details/89022765</guid><author>sinat_29899265</author><pubDate>Thu, 04 Apr 2019 14:58:07 +0800</pubDate><description><![CDATA[文章目录前言容器初始化AnnotationConfigApplicationContext测试用例解析并注册bean definitionregisterBeanscanBean
前言
本篇文章的主要目的是梳理Spring 容器启动时bean 加载的主流程和相关核心逻辑。
本篇文章主要分析以注解的方式加载bean，以容器初始化singleton bean为主流程，singleton bean在容器...]]></description><category></category></item><item><title><![CDATA[手撸一个spring cloud openFeign]]></title><link>https://blog.youkuaiyun.com/sinat_29899265/article/details/86595461</link><guid>https://blog.youkuaiyun.com/sinat_29899265/article/details/86595461</guid><author>sinat_29899265</author><pubDate>Tue, 22 Jan 2019 15:27:10 +0800</pubDate><description><![CDATA[最近在看spring-cloud-openFeign的源码，为了帮助理解流程，手撸了一个基于github.feign的简化版的spring-cloud-openFeign，如果对feign工作原理不明白的，建议先看上一篇文章spring-cloud-openFeign源码深度解析 https://blog.youkuaiyun.com/sinat_29899265/article/details/865779...]]></description><category></category></item><item><title><![CDATA[spring-cloud-openFeign源码深度解析]]></title><link>https://blog.youkuaiyun.com/sinat_29899265/article/details/86577997</link><guid>https://blog.youkuaiyun.com/sinat_29899265/article/details/86577997</guid><author>sinat_29899265</author><pubDate>Mon, 21 Jan 2019 16:43:40 +0800</pubDate><description><![CDATA[如何使用spring cloud feign
@SpringBootApplication
@EnableFeignClients
public class WebApplication {

	public static void main(String[] args) {
		SpringApplication.run(WebApplication.class, args);
	}

	@Fe...]]></description><category></category></item><item><title><![CDATA[spring boot @value 取不到.properties的值]]></title><link>https://blog.youkuaiyun.com/sinat_29899265/article/details/85232126</link><guid>https://blog.youkuaiyun.com/sinat_29899265/article/details/85232126</guid><author>sinat_29899265</author><pubDate>Mon, 24 Dec 2018 13:33:05 +0800</pubDate><description><![CDATA[最近我们组在为别的组提供api接口，需要通过@value取到properties里配置的超时时间，结果怎么设置都取不到，而通过@ConditionalOnProperty或者@ConfigurationProperties，都可以成功取到，最后在坚持不懈的努力下，找到了原因，因为那个项目用到了shiro，而shiro有个配置和@value正好冲突了。
@Bean
public  Lifecycle...]]></description><category></category></item><item><title><![CDATA[SpringBoot集成mybatis使用HikariCP多数据源配置]]></title><link>https://blog.youkuaiyun.com/sinat_29899265/article/details/83624633</link><guid>https://blog.youkuaiyun.com/sinat_29899265/article/details/83624633</guid><author>sinat_29899265</author><pubDate>Fri, 02 Nov 2018 09:15:38 +0800</pubDate><description><![CDATA[SpringBoot集成mybatis使用HikariCP自定义多数据源
之前分享了SpringBoot集成mybatis使用durid自定义多数据源配置，因为spring boot的版本是1.5.9，所以采用了durid连接池进行配置，后来由于项目升级为2.+，而spring boot的2.+版本集成了Hikari作为连接池，所以研究了一下写法。
1.首先配置application.proper...]]></description><category></category></item><item><title><![CDATA[SpringBoot集成mybatis使用durid多数据源配置]]></title><link>https://blog.youkuaiyun.com/sinat_29899265/article/details/82744567</link><guid>https://blog.youkuaiyun.com/sinat_29899265/article/details/82744567</guid><author>sinat_29899265</author><pubDate>Mon, 17 Sep 2018 16:21:26 +0800</pubDate><description><![CDATA[SpringBoot集成mybatis自定义多数据源配置



1.首先配置application.yml。

因为spring官方没有提供和durid集成，所以这部分也需要自定义配置。



datasource:
  local:
    url: jdbc:mysql://127.0.0.1:3306/my_dev?autoReconnect=true&amp;amp;amp;useUnicode=true...]]></description><category></category></item><item><title><![CDATA[Spring Security 4.x -> 5.x 踩坑记录]]></title><link>https://blog.youkuaiyun.com/sinat_29899265/article/details/82743608</link><guid>https://blog.youkuaiyun.com/sinat_29899265/article/details/82743608</guid><author>sinat_29899265</author><pubDate>Mon, 17 Sep 2018 15:33:25 +0800</pubDate><description><![CDATA[ 
                            1. AuthenticationManager无法自动注入

在实现AbstractAuthenticationProcessingFilter重写以用户名、密码认证时，需要显示注入AuthenticationManager，不然会报如下错误：

Caused by: org.springframework.beans.factory....]]></description><category></category></item><item><title><![CDATA[Lombok集成spring boot遇到的坑]]></title><link>https://blog.youkuaiyun.com/sinat_29899265/article/details/82493944</link><guid>https://blog.youkuaiyun.com/sinat_29899265/article/details/82493944</guid><author>sinat_29899265</author><pubDate>Fri, 07 Sep 2018 11:27:49 +0800</pubDate><description><![CDATA[最近有同事在spring boot中用Lombok @Data注解时遇到了一个奇怪的问题，然后有幸一起研究了一下，把研究成果记录下来。



问题

先上代码：



@Data
public abstract class TestAbstract {

    private RedisTemplate redisTemplate;

    public TestAbstract(RedisT...]]></description><category></category></item><item><title><![CDATA[elasticsearch5.6.1.集成springboot 遇到的坑]]></title><link>https://blog.youkuaiyun.com/sinat_29899265/article/details/81772037</link><guid>https://blog.youkuaiyun.com/sinat_29899265/article/details/81772037</guid><author>sinat_29899265</author><pubDate>Fri, 17 Aug 2018 09:15:50 +0800</pubDate><description><![CDATA[spring boot 集成redis和elasticsearch遇到的坑

起因是因为我在一个已经集成了redis的spring boot项目上引入了spring-data-elasticsearch包，配好环境之后开始报如下的错误。



 Failed to instantiate [org.elasticsearch.client.transport.TransportClient]: F...]]></description><category></category></item><item><title><![CDATA[深入Java虚拟机笔记--Java8内存结构]]></title><link>https://blog.youkuaiyun.com/sinat_29899265/article/details/81002380</link><guid>https://blog.youkuaiyun.com/sinat_29899265/article/details/81002380</guid><author>sinat_29899265</author><pubDate>Wed, 11 Jul 2018 17:10:06 +0800</pubDate><description><![CDATA[我们都知道，Java代码是要运行在虚拟机上的，而虚拟机在执行Java程序的过程中会把所管理的内存划分为若干个不同的数据区域，这些区域都有各自的用途。

其中有些区域随着虚拟机进程的启动而存在，而有些区域则依赖用户线程的启动和结束而建立和销毁。在《Java虚拟机规范（Java SE 8）》中描述了JVM运行时内存区域结构如下： 
 
图片来源于网上。

程序计数器（Program Counter R...]]></description><category></category></item></channel></rss>