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

相关推荐
小Ti客栈3 小时前
Spring Boot 集成 Springdoc-OpenAPI 与 Knife4j实现接口文档与可视化调试
java·spring boot·后端
Ai拆代码的曹操4 小时前
Spring 事务 REQUIRES_NEW 嵌套调用:连接池翻倍的秘密
java·后端·spring
动恰客流统计4 小时前
ReID边缘计算视觉统计:餐饮店客流增长的数字化破局路径
java·大数据·运维·人工智能
Ivanqhz5 小时前
Rust &‘static str浅析
java·前端·javascript·rust
weixin_419658318 小时前
Docker 搭建 Jenkins 服务
java·docker·jenkins
captain3768 小时前
多线程线程安全问题
java·java-ee
CoderYanger9 小时前
A.每日一题:1979. 找出数组的最大公约数
java·程序人生·算法·leetcode·面试·职场和发展·学习方法
灵极海9 小时前
LangChain4j RAG 实战完整指南:从入门到踩坑
java·langchain
yaoxin5211239 小时前
476. Java 反射 - 调用方法
java·开发语言
Ivanqhz9 小时前
Rust Lazy浅析
java·javascript·rust