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

相关推荐
jinanwuhuaguo34 分钟前
(第三十三篇)五月的文明奠基:OpenClaw 2026.5.2版本的文明级解读
android·java·开发语言·人工智能·github·拓扑学·openclaw
xmjd msup1 小时前
spring security 超详细使用教程(接入springboot、前后端分离)
java·spring boot·spring
952362 小时前
SpringBoot统一功能处理
java·spring boot·后端
Lyyaoo.2 小时前
优惠券秒杀业务分析
java·开发语言
消失的旧时光-19432 小时前
统一并发模型:线程、Reactor、协程本质是一件事(从线程到协程 · 第6篇·终章)
java·python·算法
勿忘初心12212 小时前
Java 国密 SM4 加密工具类实战(Hutool + BouncyCastle)|企业级数据加密 + 兼容 JDK8
java·数据安全·数据加密·后端开发·企业级开发·国密 sm4
庞轩px2 小时前
第8篇:原子类与CAS底层原理——无锁并发的实现
java·cas·乐观锁·aba·无锁编程·自旋
rleS IONS2 小时前
SpringBoot中自定义Starter
java·spring boot·后端
苍煜3 小时前
慢SQL优化实战教学
java·数据库·sql
AI进化营-智能译站3 小时前
ROS2 C++开发系列16-智能指针管理传感器句柄|告别ROS2节点内存泄漏与野指针
java·c++·算法·ai