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大小:新生代+中生代+老年代+永久代。

相关推荐
xcl09253 小时前
北京24小时自助健身房系统软件开发实战:从架构到部署全流程指南
java·spring boot·架构
一 乐4 小时前
动漫书销售商城|基于springboot + vue动漫书销售商城(源码+数据库+文档)
java·数据库·vue.js·spring boot·毕业设计
卓怡学长5 小时前
w214基于jsp知道特产网
java·intellij-idea
步行cgn5 小时前
Spring 注解使用详解
java·spring
一条小小yu5 小时前
Spring IoC的理解
java·后端·spring
落魄实习生5 小时前
Agent Scope Java 2.x 系列【7】工具使用
java·开发语言·ai
旺仔学长 哈哈6 小时前
springboot钓鱼爱好者交流平台APP设计与实现
java·spring boot·mysql·充电桩管理系统
自强的小白7 小时前
核心功能(Service接口)
java·mybatis
乌暮8 小时前
深入理解 Java 泛型:把「万能盒子」用对、用稳
java·开发语言·后端·学习