当前位置: 首页 > 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…...

iOS 26 携众系统重磅更新,但“苹果智能”仍与国行无缘

美国西海岸的夏天&#xff0c;再次被苹果点燃。一年一度的全球开发者大会 WWDC25 如期而至&#xff0c;这不仅是开发者的盛宴&#xff0c;更是全球数亿苹果用户翘首以盼的科技春晚。今年&#xff0c;苹果依旧为我们带来了全家桶式的系统更新&#xff0c;包括 iOS 26、iPadOS 26…...

应用升级/灾备测试时使用guarantee 闪回点迅速回退

1.场景 应用要升级,当升级失败时,数据库回退到升级前. 要测试系统,测试完成后,数据库要回退到测试前。 相对于RMAN恢复需要很长时间&#xff0c; 数据库闪回只需要几分钟。 2.技术实现 数据库设置 2个db_recovery参数 创建guarantee闪回点&#xff0c;不需要开启数据库闪回。…...

《从零掌握MIPI CSI-2: 协议精解与FPGA摄像头开发实战》-- CSI-2 协议详细解析 (一)

CSI-2 协议详细解析 (一&#xff09; 1. CSI-2层定义&#xff08;CSI-2 Layer Definitions&#xff09; 分层结构 &#xff1a;CSI-2协议分为6层&#xff1a; 物理层&#xff08;PHY Layer&#xff09; &#xff1a; 定义电气特性、时钟机制和传输介质&#xff08;导线&#…...

rnn判断string中第一次出现a的下标

# coding:utf8 import torch import torch.nn as nn import numpy as np import random import json""" 基于pytorch的网络编写 实现一个RNN网络完成多分类任务 判断字符 a 第一次出现在字符串中的位置 """class TorchModel(nn.Module):def __in…...

Angular微前端架构:Module Federation + ngx-build-plus (Webpack)

以下是一个完整的 Angular 微前端示例&#xff0c;其中使用的是 Module Federation 和 npx-build-plus 实现了主应用&#xff08;Shell&#xff09;与子应用&#xff08;Remote&#xff09;的集成。 &#x1f6e0;️ 项目结构 angular-mf/ ├── shell-app/ # 主应用&…...

招商蛇口 | 执笔CID,启幕低密生活新境

作为中国城市生长的力量&#xff0c;招商蛇口以“美好生活承载者”为使命&#xff0c;深耕全球111座城市&#xff0c;以央企担当匠造时代理想人居。从深圳湾的开拓基因到西安高新CID的战略落子&#xff0c;招商蛇口始终与城市发展同频共振&#xff0c;以建筑诠释对土地与生活的…...

AI+无人机如何守护濒危物种?YOLOv8实现95%精准识别

【导读】 野生动物监测在理解和保护生态系统中发挥着至关重要的作用。然而&#xff0c;传统的野生动物观察方法往往耗时耗力、成本高昂且范围有限。无人机的出现为野生动物监测提供了有前景的替代方案&#xff0c;能够实现大范围覆盖并远程采集数据。尽管具备这些优势&#xf…...

Linux系统部署KES

1、安装准备 1.版本说明V008R006C009B0014 V008&#xff1a;是version产品的大版本。 R006&#xff1a;是release产品特性版本。 C009&#xff1a;是通用版 B0014&#xff1a;是build开发过程中的构建版本2.硬件要求 #安全版和企业版 内存&#xff1a;1GB 以上 硬盘&#xf…...

掌握 HTTP 请求:理解 cURL GET 语法

cURL 是一个强大的命令行工具&#xff0c;用于发送 HTTP 请求和与 Web 服务器交互。在 Web 开发和测试中&#xff0c;cURL 经常用于发送 GET 请求来获取服务器资源。本文将详细介绍 cURL GET 请求的语法和使用方法。 一、cURL 基本概念 cURL 是 "Client URL" 的缩写…...

ubuntu系统文件误删(/lib/x86_64-linux-gnu/libc.so.6)修复方案 [成功解决]

报错信息&#xff1a;libc.so.6: cannot open shared object file: No such file or directory&#xff1a; #ls, ln, sudo...命令都不能用 error while loading shared libraries: libc.so.6: cannot open shared object file: No such file or directory重启后报错信息&…...