tomcat

tomcat开放源代码web应用服务器。jave代码开发的。

tomcat就是处理动态请求和基于java代码的页面开发。

可以在html当中写入java代码,tomcat可以解析html页面当中的java,执行动态请求

动态页面。

机制有问题:不对tomcat进行优化,会出现在:假死、停机。小集群,小服务,小应用使用于tomcat,大并发的场景不适合。

1.免费。

2、开源,可以二次封装。

3、可配置型强,可以根据需要进行自定义配置,包括端口号,虚拟主机,等等。4、安全性: tomcat自带安全机制,可以配置用户认证、授权、加密传输。

5、部署应用非常快捷: tomcat会自动部署,自动运行。核心组件三个:


1、 web容器:完成web服务器的功能,web应用。web----------->http(s)-------访问页面---

.---------->文件index.jsp

web容器中,封装了一组文件,在这一组文件之中,进行集中化管理。web动态页面。

  1. servlet容器:名字: catalina,处理servlet代码就是处理web请求(http),以及生成动态内容的java类。处理http请求。

3、jsp: jsp动态页面防疫成servlet代码,用标准格式,展示jsp的静态页面。

servlet:

1、处理http请求

2、生产动态内容,为了和数据库交互-----》用户发起的;jsp当中的。

3、会话管理,跟用户在不同请求之间的状态,通过管理,可以在用户访问不同页面时保持用户的状态。

4、与数据库交互,servlet可以连接到数据库,执行查询和更新操作。这就是servlet能够生成动态内容的原因。jsp: java server pages。动态页面的开发技术。使用jsp标签index.jsp 在html页面中插入java代码。

jsp容器----》html页面当中的java代码翻译-------》执行-------------》展示结果。通常<%,开头

%>,结尾。

面向对象:编程范式。思想。客观存在的实体和他们之间的关系,映射到计算机程序当中。计算机程序被组织成这一组相互作用的对象,每个对象都有数据(属性)和行为(方法)。

类:定义一组属性和方法。创建对象。实例。

封装:对象的属性和方法捆绑在一块,提供一个接口,可以让其他对象使用。

继承:一个类,可以继承另一个类父类子类子类可以重用父类的代码,而且还在不修改代码的情况下,进行扩展。多态:不同类的对象对相同的消息,做出不同的响应。

功能组件:

connector:负载对外接受和响应请求,是tomcat与外界的交通枢纽。监听端口,也可以接受外界请求,交给container处理。container:负责对内处理业务逻辑。

Engine:引擎,管理虚拟机(service,一个service里面可以包含多个虚拟主机。)可以管理多个虚拟主机,一个service里面只能有一个Engine;

Host:代表一个虚拟机,也可以叫站点。context: web应用。包含多个servlet。

wrapper:封装器,最底层,每一个wrapper封装一个servlet,负责对象实例的创建,执行,销毁。父子关系,工作方式也是从上到下。

1、输入网址,请求发送,请求发送到8080端口,被监听的获得;

2、connector会把请求转发到container处理...engine(虚拟主机,你要访问哪一个虚拟主机) .......host(主机站点包含要请求页面的位置。webapps)------>从contex,就是index.jsp里面的内容。--

-------------->wrapper(servlet,响应解析处理请求)-------jsp翻译官

--页面展示。

export JAVA_HOME=/usr/java/jdk1.8.0_201-amd64指定jdk的安装路径。jdk解释器,类似于shell,各种工具。

export CLASSPATH=.:JAVA_HOME/lib/tools.jar:JAVA_HOME/lib/dt.jarclasspath:定义类的

export PATH=JAVA_HOME/bin:PATH

bin:存放的启动和关闭tomcat脚本文件

conf:主配置文件server.xml 主配置文件contex.html host的默认配置信息tomcat-user.xml :认证用户密码的配置文件web.xml:配置servlet servlet的规范标准。

lib: tomcat运行库的jar包,一般不动,除非连接第三方-----redis,数据库logs:日志文件

webapps: web应用部署的默认目录。

workctomcat的工作目录。存放jsp编译之后的class文件,清楚tomcat缓存,就是删work目录。

JVM:就是java的虚拟机,是java应用程序在计算上运行的核心组件,jvm负载将编译后的java字节码(.class文件)

JVM优化:

PS Eden Space :堆内存:存储新创建的对象。

Ps Old Gen:堆内存,存储长时间存活的对象。

PS old Gen:堆内存,存储长时间存活的对象。

Ps Ssurvivor Space:堆内存:存在创建之后,生命周期较短的对象。

Code Cache:非堆内存:存储已经编译的代码

compressed Class Space:非堆内存:存储已经压缩的类。

Metaspace:非堆内存,存储类的元数据。

JAVA_OPTS="$JAVA_OPTS -server -Xms2048m -Xmx2048m -xmn768m -XX:ParallelGCThreads=2 -XX:PermSize=1024m-XX:MaxPermSize=1024m -Djava.awt.headless=true -XX:+DisableExplicitGc"

-server:第一个参数,指定内存池,一定放在第一个。

-Xms2048m:初始java堆的大小。分配JVM的最小内存,看cpu:cpu性能高,这个值

可以设高一点

-Xmx2048m: JAVA堆最大能多大,jvm的最大内存。和硬件内存挂钩。根据官方文档

起始值和最大值保持---致。XMS和XMX设为---样

的,内存可以设为物理内存的一般。

-Xmn768m:新生代的内存大小。官方推荐为了整个堆大小的3/8.

-XX:ParallelGCThreads=2: 配置并行收集器的线程数,同时可以有多少个线程进行垃圾回收。

-XX:PermSize:设置持久代内存的大小,默认是物理内存的1/4。

-XX:MaxPermSize=1024m:最大的非堆内存的大小,默认也是物理内存的1/4;-XX:PermSize=1024m -XX:MaxPermSize=1024m

非堆内存是不会被垃圾回收机制处理的,-X.PermSize持久代内存与最大非堆内存不能超出操作系统可用的内存。设置成一样大,可以减轻伸缩堆大小的压力。

-Djava.awt.headless=true:避免在linux环境下,web不能正常打开以正常显示图片。

-XX:+DisableExplicitGC":避免jvm空间大起大落,影响系统的响应时间。响应速度会很慢。

堆区当中:新生代中生代老年代

每一个新建的对象占用的空间,就是新生代。

java垃圾回收机制对堆区进行资源回收,新生代中没有被回收的资源,就是中生代。中生代没有被回收,就是老年代。

jvm大小:新生代+中生代+老年代+永久代。

相关推荐
啾啾Fun1 小时前
Java反射操作百倍性能优化
java·性能优化·反射·缓存思想
20岁30年经验的码农1 小时前
若依微服务Openfeign接口调用超时问题
java·微服务·架构
曲莫终1 小时前
SpEl表达式之强大的集合选择(Collection Selection)和集合投影(Collection Projection)
java·spring boot·spring
ajassi20001 小时前
开源 java android app 开发(十二)封库.aar
android·java·linux·开源
q567315232 小时前
Java使用Selenium反爬虫优化方案
java·开发语言·分布式·爬虫·selenium
kaikaile19952 小时前
解密Spring Boot:深入理解条件装配与条件注解
java·spring boot·spring
守护者1702 小时前
JAVA学习-练习试用Java实现“一个词频统计工具 :读取文本文件,统计并输出每个单词的频率”
java·学习
bing_1582 小时前
Spring Boot 中ConditionalOnClass、ConditionalOnMissingBean 注解详解
java·spring boot·后端
ergdfhgerty2 小时前
斐讯N1部署Armbian与CasaOS实现远程存储管理
java·docker
勤奋的知更鸟2 小时前
Java性能测试工具列举
java·开发语言·测试工具