- 博客(22)
- 收藏
- 关注
原创 tomcat 源码总结
一、Tomcat的功能 对于一个web开发者而言,Tomcat 是一个请求处理的第一步,然后再进行我们业务处理。如下图: 从上图可以看出,Tomcat有2大块非常重要的功能:1、HTTP服务器的功能:socket 通信、解析报文。2、servlet 容器的功能。下面我们具体看下这2部分的功能(本文主要关注coyote、Catalina模块,对于EL、Jasper没做分析)。二、Tomcat的架构 Tomcat 为了完成上述的功能,封装了很对的组件,各...
2020-06-02 00:02:14
297
原创 类加载器工作模型简介(二)
文章目录一、类加载描述二、类加载流程加载连接验证准备解析初始化一、类加载描述类加载过程就是将class文件加载到内存,并对进行校验、解析、初始化等的过程,其实就是将编译后的java文件(.class文件)变成虚拟机中的class对象,每个类都有且只有一个class对象(class和类加载器确定一个class对象,类一样但是由不同的加载器加载也是不同的class对象),都是首次主动使用后被加载到...
2020-02-13 17:19:41
395
原创 类加载流程简介(一)
文章目录一、类加载描述二、类加载流程一、类加载描述 类加载过程就是将class文件加载到内存,并对进行校验、解析、初始化等的过程,其实就是将编译后的java文件(.class文件)变成class对象,每个类都有且只有一个class对象,都是首次主动使用后被加载到JVM的方法区中。类加载过程在程序运行期间完成。 类从被加载到内存开始,到卸载出内存为止,整个生命周期如下: ![在这里插入...
2020-02-12 01:05:04
387
原创 Flink学习(二) job 执行流程
Flink SourceFunction 学习记录SourceFunction 简单使用和描述SourceContext 详解合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML ...
2019-11-02 17:48:15
1165
1
原创 Kafka Consumer 消费逻辑
简介:本文主要叙述KafkaConsumer消费逻辑(本文使用的是flink 中的Kafka-client),是如何获取获取数据,这里直奔主题,从KafkaConsumer直接看起来。
2019-10-26 19:52:04
697
原创 flink学习(一) —Flink-Kafka-Connector基本描述
一、flink-connector-kafka 功能简介 flink Kafka Connector 是 flink 内置的Kafka连接器,包含了从topic读取数据的Flink Kafka Consumer 和 向topic写入数据的flink kafka producer,除了基本功能意外还提供了基于 checkpoint 机制提供了完美的容错能力。本片文章主要是Fli...
2019-10-25 00:20:48
1975
1
原创 Hadoop 安装(mac 环境,伪分布式)
Hadoop 可以部署成非分布式模式运行的一个java进程(主要用于本地调试),也可以可以在单节点上以所谓的伪分布式模式运,每一个Hadoop守护进程都作为一个独立的Java进程运行。下面主要说下Mac下面伪分布式的安装和启动一、安装前准备。 java环境配置 jdk 安装包下载,解压和配置环境变量的配置。 如果第一次配置环境变量,创建一个.bash_profile的隐藏配...
2019-10-01 17:25:07
342
原创 Flink Event Time 和WaterMark
flink watermark欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢...
2019-07-21 15:23:18
296
原创 类加载器简介
一、ClassLoader简介 Java的类加载器的作用就是在运行时加载类到虚拟机中,首先不管对于什么样的java应用肯定是由很多class组成实现的,不同的功能所在的class是不一样的(你说我把所有的功能放在一个class里面,那你很棒棒哦),比如当我们的入口函数被调用的时候,入口函数使用了其他class(静态代码块、实例)的功能,这时类加载器就会按需加载将需要...
2019-01-20 16:20:16
209
原创 tomcat 初始化
一、启动 对于tomcat的启动类,主要是Catalina和Bootstrap这2个类。我们先看下启动的流程图,然后针对这2个类单独叙说。 下面我们主要看下Bootstrap和Catalina这2个类(JMX这块会单独放到后续说)。 1、Bootstrap类是一个入口点,当我们在使用startup.bat(startup.sh)等启动脚本时实际上是调用的该类的main方...
2019-01-18 15:43:06
873
原创 Digester简介和使用
一、Digester简介 1、sax简单介绍,对于XML的解析java有很多种实现,如DOM、SAX等,degister就是基于SAX实现,SAX提供了文件读取的底层接口,它是基于事件驱动类型。在解析XML的过程中,元素通过匹配模式(matching pattern)进行识别,比如当扫描到文节点元素(element)开始或者结束这些地方的时候会通知事件处理函数...
2019-01-13 17:42:42
8744
2
原创 TOMCAT源码环境搭建(maven方式)
一、TOMCAT 源码的获取 对于tomcat的源码,可以从github上面poll最新的:https://github.com/apache/tomcat或者从tomcat官网获取:https://tomcat.apache.org/download-90.cgi,(目前已经更新到9了,我们以最新的为主)。二、添加依赖 1、 由于tomcat是ant管理的,使用...
2019-01-10 23:13:09
1770
1
原创 HTTP请求的完整流程(tomcat)
1、HTTP协议的简单介绍 网络通信协议的本质就是规则,软件和硬件必须遵循的共同守则。我们先看下HTTP协议的请求体和响应体是什么样子:GET /servlet/myServlet HTTP/1.1Host: localhost:8080Connection: keep-aliveCache-Control: max-age=0Upgrade-Insecure-Requests...
2018-12-28 18:11:02
2499
原创 BeanPostProcessor和BeanFactoryPostProcessor浅析以及在spring初始化中回调
一、先看下BeanPostProcessor和BeanFactoryPostProcessor的各自的子类以及方法。 1、 BeanFactoryPostProcessor,是针对整个工厂生产出来的BeanDefinition作出修改或者注册。作用于BeanDefinition时期。从名称可以看出是容器级别的,继承关系如下: Bean...
2018-11-21 15:50:45
10263
1
转载 rabbitMQ、AMQP入门
本文参照:http://www.rabbitmq.com/tutorials/amqp-concepts.htmlRabbitMQ官方解释:消息系统允许软件、应用相互连接和扩展。这些应用可以相互链接起来组成一个更大的应用,或者将用户设备和数据进行连接。消息系统通过将消息的发送和接收分离来实现应用程序的异步和解偶。我们白话文的理解就是:是一个消息代理 - 一个消息系统的媒介。它可以为你的应...
2018-09-12 23:39:00
519
原创 spi模式
一、java spi对于java spi大部分开发者都不会陌生,我们使用的第三方框架的配置如:jdbc、日志、spring、微服务框架等。spi全称:Service Provider Interface,实现了模块间的解耦,实现可拔插。java spi的约束如下:在META-INF/services/目录中创建以接口全限定名命名的文件该文件内容为Api具体实现类的全限定名 使用S...
2018-09-05 12:04:09
401
原创 ubuntu安装sqlserver
可参照官网教程:https://docs.microsoft.com/zh-cn/sql/linux/quickstart-install-connect-ubuntu?view=sql-server-2017一、安装sqlserver 1、导入公共存储库 GPG 密钥: wget -qO- https://packages.microsoft.com...
2018-09-01 11:40:08
6804
原创 eureka-client服务启动
我们在看流程前看下下面的一个类图,其中client的流程基本都在DiscoveryClient的构造方法中,而eureka-server的逻辑大部分在PeerAwareInstanceRegistryImpl和PeerEurekaNodes中。这里再介绍下InstanceInfo和EurekClient的区别, 主要用于标示这个应用的实例信息,如应用名称、consumer(provider)...
2018-08-27 23:04:23
1239
原创 ApplicationContextInitializer的三种使用方法
概述:ApplicationContextInitializer是在springboot启动过程(refresh方法前)调用,主要是在ApplicationContextInitializer中initialize方法中拉起了ConfigurationClassPostProcessor这个类(我在springboot启动流程中有描述),通过这个processor实现了beandefinition...
2018-07-19 00:53:35
19696
3
原创 springboot bean的实例化过程和属性注入过程
了解过springboot的加载流程的都知道springboot初始化bean都在refresh方法中。这个方法代码如下:// Prepare this context for refreshing.prepareRefresh();// Tell the subclass to refresh the internal bean factory.新建beanFactoryConfigura...
2018-07-03 17:59:10
21207
2
原创 BeanDefinitionRegistryPostProcessor和ClassPathBeanDefinitionScanner实现自定义注解的接口代理和注入
123123
2018-06-28 14:24:46
5195
1
原创 window下面 用mod_wsgi集成apache2.2+django1.8+python2.7环境
版本 mod_wsgi 3.3 下载地址:https://code.google.com/p/modwsgi/downloads/detail?name=mod_wsgi-win32-ap22py27-3.3.so;python 2.7django1.8apache2.2 可以在官网下载;首先 安装python、django、 apache(这就不一一叙述怎么安装了)
2015-01-09 15:47:26
480
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人