当前位置: 首页 > news >正文

Java面试题(Tomcat与Nginx)

Tomcat

什么是Tomcat?

简单来说是一个运行Java的网络服务器,也是jsp和serlvet的一个容器

Tomcat的缺省端口是多少,怎么修改?

conf文件夹下修改server.xml文件

<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1"
redirectPort="8443" uriEncoding="utf-8"/>

port="8080"改成你想要的端口

tomcat目录结构?

        1.bin:启动和关闭的bat文件

        2.conf:配置文件

        3.server.xml:配置server信息

        4.web.xml:文件配置与web应用

        5.tomcat-user.xml:配置相关权限

        6.lib:jar包

        7.logs:存放日志

        8.webapps:web应用

        9.work:存放访问后生成的.class文件

如何配置tomcat的虚拟目录?

虚拟目录指的就是工作目录,如果要进行WEB项目开发,那么就必须要在Tomcat中配置此目录

1.conf/server.xml文件中进行修改

<Context path="/test1" docBase="D:\test" reloadable="true"></Context> 

path: 表示虚拟目录的名称

2.不修改server.xml

在tomcat文件夹的conf"catalina"localhost下新建一个xml文件

<Context  docBase="换成你的路径"  reloadable="true">

文件名改成你自己的譬如http://localhost:8080/bbs ,文件名就为bbs.xml

浏览器请求在tomcat中的请求流程

        1.客户端发送请求(包含了请求的URL、请求方法、请求头和请求体等信息)

        2.Tomcat接收请求(根据请求的URL和请求方法等信息,将请求分发给相应的Servlet或JSP)

        3.Servlet或JSP处理请求

        4.Servlet或JSP生成响应(处理完请求后,会生成HTTP响应并发送给Tomcat服务器)

        5.Tomcat发送响应(Tomcat生成的响应后,会将响应发送给客户端)

        6.客户端接收响应

tomcat的部署方式

        1.直接把 Web 项目放在 webapps 下

        2.在 server.xml 文件上配置<Context>节点,设置相关的属性

        3.通过 Catalina 来进行配置:进入到 confCatalinalocalhost 文件下,创建一个xml 文件,该文件的名字就是站点的名字

tomcat如何优化

        1.去掉对 web.xml 的监视,把 jsp 提前编辑成 Servlet

        2.添加服务器资源

        3.对于静态页面利用缓存和压缩

        4.组建tomcat 集群有效提升性能

        5.优化 tomcat 参数(主要是优化连接配置,关闭客户端 dns 查询)

内存调优

        1.调整JVM参数来控制Tomcat的内存使用情况(如:JAVA_OPTS)

        2.关闭不必要的功能(如:dns 查询)

        3.减少Web应用程序

        4.使用内存监控工具

        5.升级tomcat版本

垃圾回收策略

在 catalina.sh 中,调整 JAVA_OPTS 变量

共享session

        1.使用 Tomcat 本身的 Session 复制功能

        2.使用第三方来存放共享 Session

        3.使用黏性 session 的策略

tomcat的工作模式

有三种工作模式:独立的 Servlet 容器、进程内的 Servlet 容器和进程外的 Servlet 容器

tomcat容器是如何创建servlet类实例?用到了什么原理

        1.当容器启动时,会读取在webapps目录下所有的web应用中的web.xml文件,然后对 xml文件进行解析,并读取servlet注册信息。然后,将每个应用中注册的servlet类都进行加载,并通过 反射的方式实例化

        2.在servlet注册时加上1如果为正数,则在一开始就实例化,如果不写或为负数,则第一次请求实例化

Nginx

什么是nginx

是一个 轻量级/高性能的反向代理Web服务器

优点:

        1.跨平台、配置简单

        2.非阻塞、高并发连接

        3.内存消耗小、内存消耗小

        4.稳定性高,宕机的概率非常小

运用场景

        1.http服务器:可以做网页静态服务器

        2.虚拟主机:实现在一台服务器虚拟出多个网站

        3.反向代理:负载均衡多台服务器平均分担负载,不会应为某台服务器负载高宕机而某台服务器闲置

nginx与tomcat的区别

        1.Tomcat是Java Web应用服务器,而Nginx是高性能的HTTP和反向代理服务器

        2.Tomcat支持Java应用程序的部署和管理;Nginx则更多地是通过负载均衡和缓存技术来提高Web服务器的性能

        3.Tomcat可以独立作为Web服务器运行,也可以集成在其他Web服务器中;而Nginx通常被用作反向代理服务器

Nginx如何处理HTTP请求

        1.Nginx解析配置文件,得到需要监听的端口与 IP 地址

        2.再 fork出多个子进程

        3.子进程会竞争 accept 新的连接

        4.设置读写事件处理函数,并添加读写事件来与客户端进行数据的交换

        5.Nginx 或客户端来主动关掉连接

正向代理与反向代理

正向代理:一个位于客户端和原始服务器之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标,然后代理向原始服务器转交请求并将获得的内容返回给客户端

代理端代理的是客户端

反向代理:代理服务器来接受 Internet上的连接请求,然后将请求,发给内部网络上的服务器并将从服务器上得到的结果返回给 Internet 上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器

代理端代理的是服务端

cookie和session区别?

        1.cookie数据存放在客户的浏览器上,session数据放在服务器上

        2.cookie不是很安全

        3.session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能,考虑到减轻服务器性能方面,应当使用cookie

        4.单个cookie保存的数据不能超过4K,而session则存储与服务端,浏览器对其没有限制

Nginx 是如何实现高并发的

        一个主要过程,多个工作过程,每个工作过程可以处理多个请求,每个进来request,处理worker进程会有一个。但不是全程处理,处理到可能堵塞的地方,比如向上游(后端)服务器转发request,等待请求返回。然后,worker继续处理其他请求,一旦上游服务器返回,事件将触发,worker将接管,request将继续下去。由于web server的工作性质决定了每个request的大部分生命都在网络传输中,但实际上在server机器上花费的时间片并不多。解决高并发问题的秘密是几个过程。也就是说,@skoo所说的webserver正好属于网络io密集型应用,而不是计算密集型。

Nginx 负载均衡实现策略

        1.轮询(默认):每个请求按时间顺序逐一分配到不同的后端服务器

        2.权重:值越大,分配到的访问概率越高

        3.IP绑定:每个请求按访问IP的哈希结果分配

        4.第三方插件

Nginx 解决跨域

使用Nginx转发请求。把跨域的接口写成调本域的接口,然后将这些接口转发到真正的请求地址

为什么不使用多线程

        Nginx:采用单线程异步非阻塞处理请求,不会为每个请求分配CPU和内存资源,节省大量资源,减少CPU上下文切换,使Nginx支持更高的并发性

Nginx常见的优化配置

        1.为静态文件启用缓存,以减少带宽并提高性能

        2.启用gzip压缩

        3.服务静态文件

        4.使用HTTP/2协议

        5.调整worker_processes参数

        6.调整worker_connections参数

Nginx安全设置

        1.防止DDoS攻击

        2.防止SQL注入

        3.防止XSS攻击

相关文章:

Java面试题(Tomcat与Nginx)

Tomcat 什么是Tomcat&#xff1f; 简单来说是一个运行Java的网络服务器&#xff0c;也是jsp和serlvet的一个容器 Tomcat的缺省端口是多少&#xff0c;怎么修改? conf文件夹下修改server.xml文件 <Connector connectionTimeout"20000" port"8080" p…...

React-使用mobx

React 中使用 mobx 配置开发环境 安装mobx和中间件工具 mobx-react-lite 只能函数组件中使用 yarn add mobx mobx-react-lite初始化 mobx 定义数据状态 state在构造器中实现数据响应式处理 makeAutoObservble定义修改数据的函数 action实例化 store 并导出 import { compute…...

LeetCode ACM模式——哈希表篇(一)

刷题顺序及部分思路来源于代码随想录&#xff0c;网站地址&#xff1a;https://programmercarl.com 部分思路来源于力扣官方题解&#xff0c;作者主页&#xff1a;https://leetcode.cn/u/leetcode-solution/ 242. 有效的字母异位词 给定两个字符串 s 和 t &#xff0c;编写一个…...

WPF实战学习笔记31-登录界面全局通知

UI添加消息聚合器 <md:Snackbarx:Name"LoginSnakeBar"Grid.ColumnSpan"2"Panel.ZIndex"1"MessageQueue"{md:MessageQueue}" />注册提示消息 文件&#xff1a;Mytodo.Views.LoginView.cs构造函数添加内容 //注册提示消息 aggre…...

通用商城项目(中)

金山编译器出问题了。下面段落标号全出问题了&#xff0c;排版也出问题了。懒得改了。 使用对象存储OSS&#xff0c;保存品牌logo 新建Module&#xff0c;提供上传、显示服务 有些不明所以的&#xff0c;按照steinliving-commodity配置了一通pom.xml 新建application.yml&…...

谨慎使用JSON.stringify

谨慎使用JSON.stringify 为了避免因为对象是引用类型而造成的数据源污染&#xff0c;我们通常使用 JSON.stringify 将其转换为字符串&#xff0c;而后通过JSON.parse方法将字符串转化一个新对象来实现深拷贝。但是在这个过程中也会存在一些问题&#xff0c;本文就介绍一下使用…...

驱动开发day8

编写LED灯的驱动&#xff0c;使用GPIO子系统&#xff0c;里面添加按键的中断处理 1.应用程序发送指令控制LED亮灭 2.按键1 按下&#xff0c;led1电位反转 按键2按下&#xff0c;led2电位反转 按键3 按下&#xff0c;led3电位反转 驱动程序 #include <linux/init.h> #i…...

CAS 机制

问题分析与思考&#xff1a; CAS 是 Java 中 Unsafe 类里面的方法&#xff0c;它的全称是 CompareAndSwap&#xff0c;比较并交换 的意思。 它的主要功能是能够保证在多线程环境下&#xff0c;对于共享变量的修改的原子性。 举个例子&#xff0c;比如说有这样一个场景&#xff…...

#P1003. [NOIP2009普及组] 道路游戏

题目描述 小新正在玩一个简单的电脑游戏。 游戏中有一条环形马路&#xff0c;马路上有 nn 个机器人工厂&#xff0c;两个相邻机器人工厂之间由一小段马路连接。小新以某个机器人工厂为起点&#xff0c;按顺时针顺序依次将这 nn 个机器人工厂编号为 1\sim n1∼n&#xff0c;因…...

python-网络爬虫.regular

regular 正则表达式 (regular expression) 正则表达式(regular expression)描述了一种字符串匹配的模式 &#xff08;pattern&#xff09;&#xff0c; 可以用来检查一个串是否含有某种子串、将匹配的子串替换或者从某个串 中取出符合某个条件的子串等。 正则表达式是由普通…...

手动搭建gateway,项目集成gateway实现Token效果

目录 背景步骤1、首先创建springboot项目2、引入依赖3、配置文件&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff08;超级重要&#xff01;&#xff01;&#xff01;根据自己的需要进行配置&#xff09;4、相关类我们在服务中进行的白名单中接口的操作如…...

linux下SVN服务器搭建

在本教程中&#xff0c;我们将介绍如何在Linux系统下搭建Subversion&#xff08;SVN&#xff09;服务器。Subversion是一种流行的版本控制系统&#xff0c;它允许多个人在同一项目上进行协作&#xff0c;同时避免了他们各自的更改发生冲突。 安装SVN 在大多数Linux发行版中&am…...

技术等级 TRL 定义

“不同环境、不同目标下TRL表述不一样” 技术等级 TRL 定义 TRL1 基本原理提出和发现 TRL2 技术应用研究 TRL3 完成概念验证&#xff0c;如叶栅试验、燃烧室头部试验等 TRL4 完成模拟部件试验&#xff0e;如压气机性能试验&#xff0c;燃烧室扇形试验 TRL5 完…...

DHorse v1.3.0 发布,基于k8s的发布平台

综述 DHorse是一个简单易用、以应用为中心的云原生DevOps系统&#xff0c;具有持续集成、持续部署、微服务治理等功能&#xff0c;无需安装依赖Docker、Maven、Node等环境即可发布Java、Vue、React应用&#xff0c;主要特点&#xff1a;部署简单、操作简洁、功能快速。 新增特…...

Redis - 缓存的双写一致性

概念&#xff1a; 当修改了数据库的数据也要同时更新缓存的数据&#xff0c;缓存和数据库的数据要保持一致 那为什么会有不一致的情况呢&#xff1f; 如果不追求一致性&#xff0c;正常有两种做法 先修改数据库 后删除旧的缓存先删除旧的缓存 再修改数据库 我们以先删除旧的…...

opencv03-Mat矩阵API的使用

opencv03-Mat矩阵API的使用 构造方法(具体介绍看API文档) int main() {Mat m1 Mat(200, 100, CV_8UC1);imshow("o1", m1);Mat m2 Mat(Size(100, 200), CV_8UC1);imshow("o2", m2);Mat m3 Mat(200, 100, CV_8UC3, Scalar(255, 0, 0));imshow("o3&…...

2023届浙江大学MPA提面A资格经验总结分享

本人是去年报考的浙大MPA项目&#xff0c;并通过提面获得了A资格&#xff0c;新一年浙大MPA项目提前批面试已经开始了&#xff0c;受达立易考周老师邀请来分享下我的提面经验&#xff0c;希望我的经验能对还在迷茫中的小伙伴有所帮助。 点开提面通知&#xff0c;首先看到…...

BugKu CTF(杂项篇MISC)—想要种子吗

BugKu CTF(杂项篇MISC)—想要种子吗 提 示: 描 述:flag{} 题目下载后是一张图片&#xff0c;打开如下。 一、工具 十六进制编辑器010 editor kali系统文件分离工具binwalk或者foremost 维吉尼亚密码 STEGHIDE图片隐写工具 文章所需的软件下载地址 ARCHPR压缩包密码破解…...

类之间的关系

1、类关系 继承、实现、依赖、组合、聚合 继承&#xff1a;一个类继承另一个类&#xff1b; 实现&#xff1a;一个类实现另一个接口&#xff1b; 依赖&#xff1a;一个类作为另一个的局部变量&#xff0c;方法的参数&#xff0c;临时对象等&#xff1b; 组合&#xff1a;一个类…...

【蓝图】p40-p43对象引用、变量有效性、实现键盘控制物体自转、简单点名系统

p40-p43对象引用、变量有效性、实现键盘控制物体自转、简单点名系统 p40对象引用、变量有效性p41实现键盘控制物体自转创建bool值控制旋转实现通过键盘控制自转 p42p43简单点名系统Get All Actors Of Class&#xff08;获得场景中所有该类的actor演员&#xff09;getFor Each L…...

PHP和Node.js哪个更爽?

先说结论&#xff0c;rust完胜。 php&#xff1a;laravel&#xff0c;swoole&#xff0c;webman&#xff0c;最开始在苏宁的时候写了几年php&#xff0c;当时觉得php真的是世界上最好的语言&#xff0c;因为当初活在舒适圈里&#xff0c;不愿意跳出来&#xff0c;就好比当初活在…...

解决Ubuntu22.04 VMware失败的问题 ubuntu入门之二十八

现象1 打开VMware失败 Ubuntu升级之后打开VMware上报需要安装vmmon和vmnet&#xff0c;点击确认后如下提示 最终上报fail 解决方法 内核升级导致&#xff0c;需要在新内核下重新下载编译安装 查看版本 $ vmware -v VMware Workstation 17.5.1 build-23298084$ lsb_release…...

抖音增长新引擎:品融电商,一站式全案代运营领跑者

抖音增长新引擎&#xff1a;品融电商&#xff0c;一站式全案代运营领跑者 在抖音这个日活超7亿的流量汪洋中&#xff0c;品牌如何破浪前行&#xff1f;自建团队成本高、效果难控&#xff1b;碎片化运营又难成合力——这正是许多企业面临的增长困局。品融电商以「抖音全案代运营…...

页面渲染流程与性能优化

页面渲染流程与性能优化详解&#xff08;完整版&#xff09; 一、现代浏览器渲染流程&#xff08;详细说明&#xff09; 1. 构建DOM树 浏览器接收到HTML文档后&#xff0c;会逐步解析并构建DOM&#xff08;Document Object Model&#xff09;树。具体过程如下&#xff1a; (…...

MySQL 8.0 OCP 英文题库解析(十三)

Oracle 为庆祝 MySQL 30 周年&#xff0c;截止到 2025.07.31 之前。所有人均可以免费考取原价245美元的MySQL OCP 认证。 从今天开始&#xff0c;将英文题库免费公布出来&#xff0c;并进行解析&#xff0c;帮助大家在一个月之内轻松通过OCP认证。 本期公布试题111~120 试题1…...

【学习笔记】深入理解Java虚拟机学习笔记——第4章 虚拟机性能监控,故障处理工具

第2章 虚拟机性能监控&#xff0c;故障处理工具 4.1 概述 略 4.2 基础故障处理工具 4.2.1 jps:虚拟机进程状况工具 命令&#xff1a;jps [options] [hostid] 功能&#xff1a;本地虚拟机进程显示进程ID&#xff08;与ps相同&#xff09;&#xff0c;可同时显示主类&#x…...

Element Plus 表单(el-form)中关于正整数输入的校验规则

目录 1 单个正整数输入1.1 模板1.2 校验规则 2 两个正整数输入&#xff08;联动&#xff09;2.1 模板2.2 校验规则2.3 CSS 1 单个正整数输入 1.1 模板 <el-formref"formRef":model"formData":rules"formRules"label-width"150px"…...

Xen Server服务器释放磁盘空间

disk.sh #!/bin/bashcd /run/sr-mount/e54f0646-ae11-0457-b64f-eba4673b824c # 全部虚拟机物理磁盘文件存储 a$(ls -l | awk {print $NF} | cut -d. -f1) # 使用中的虚拟机物理磁盘文件 b$(xe vm-disk-list --multiple | grep uuid | awk {print $NF})printf "%s\n"…...

腾讯云V3签名

想要接入腾讯云的Api&#xff0c;必然先按其文档计算出所要求的签名。 之前也调用过腾讯云的接口&#xff0c;但总是卡在签名这一步&#xff0c;最后放弃选择SDK&#xff0c;这次终于自己代码实现。 可能腾讯云翻新了接口文档&#xff0c;现在阅读起来&#xff0c;清晰了很多&…...

Windows安装Miniconda

一、下载 https://www.anaconda.com/download/success 二、安装 三、配置镜像源 Anaconda/Miniconda pip 配置清华镜像源_anaconda配置清华源-CSDN博客 四、常用操作命令 Anaconda/Miniconda 基本操作命令_miniconda创建环境命令-CSDN博客...