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

AI-调查研究-01-正念冥想有用吗?对健康的影响及科学指南

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; &#x1f680; AI篇持续更新中&#xff01;&#xff08;长期更新&#xff09; 目前2025年06月05日更新到&#xff1a; AI炼丹日志-28 - Aud…...

多云管理“拦路虎”:深入解析网络互联、身份同步与成本可视化的技术复杂度​

一、引言&#xff1a;多云环境的技术复杂性本质​​ 企业采用多云策略已从技术选型升维至生存刚需。当业务系统分散部署在多个云平台时&#xff0c;​​基础设施的技术债呈现指数级积累​​。网络连接、身份认证、成本管理这三大核心挑战相互嵌套&#xff1a;跨云网络构建数据…...

CVPR 2025 MIMO: 支持视觉指代和像素grounding 的医学视觉语言模型

CVPR 2025 | MIMO&#xff1a;支持视觉指代和像素对齐的医学视觉语言模型 论文信息 标题&#xff1a;MIMO: A medical vision language model with visual referring multimodal input and pixel grounding multimodal output作者&#xff1a;Yanyuan Chen, Dexuan Xu, Yu Hu…...

逻辑回归:给不确定性划界的分类大师

想象你是一名医生。面对患者的检查报告&#xff08;肿瘤大小、血液指标&#xff09;&#xff0c;你需要做出一个**决定性判断**&#xff1a;恶性还是良性&#xff1f;这种“非黑即白”的抉择&#xff0c;正是**逻辑回归&#xff08;Logistic Regression&#xff09;** 的战场&a…...

【力扣数据库知识手册笔记】索引

索引 索引的优缺点 优点1. 通过创建唯一性索引&#xff0c;可以保证数据库表中每一行数据的唯一性。2. 可以加快数据的检索速度&#xff08;创建索引的主要原因&#xff09;。3. 可以加速表和表之间的连接&#xff0c;实现数据的参考完整性。4. 可以在查询过程中&#xff0c;…...

在四层代理中还原真实客户端ngx_stream_realip_module

一、模块原理与价值 PROXY Protocol 回溯 第三方负载均衡&#xff08;如 HAProxy、AWS NLB、阿里 SLB&#xff09;发起上游连接时&#xff0c;将真实客户端 IP/Port 写入 PROXY Protocol v1/v2 头。Stream 层接收到头部后&#xff0c;ngx_stream_realip_module 从中提取原始信息…...

现代密码学 | 椭圆曲线密码学—附py代码

Elliptic Curve Cryptography 椭圆曲线密码学&#xff08;ECC&#xff09;是一种基于有限域上椭圆曲线数学特性的公钥加密技术。其核心原理涉及椭圆曲线的代数性质、离散对数问题以及有限域上的运算。 椭圆曲线密码学是多种数字签名算法的基础&#xff0c;例如椭圆曲线数字签…...

在鸿蒙HarmonyOS 5中使用DevEco Studio实现录音机应用

1. 项目配置与权限设置 1.1 配置module.json5 {"module": {"requestPermissions": [{"name": "ohos.permission.MICROPHONE","reason": "录音需要麦克风权限"},{"name": "ohos.permission.WRITE…...

【碎碎念】宝可梦 Mesh GO : 基于MESH网络的口袋妖怪 宝可梦GO游戏自组网系统

目录 游戏说明《宝可梦 Mesh GO》 —— 局域宝可梦探索Pokmon GO 类游戏核心理念应用场景Mesh 特性 宝可梦玩法融合设计游戏构想要素1. 地图探索&#xff08;基于物理空间 广播范围&#xff09;2. 野生宝可梦生成与广播3. 对战系统4. 道具与通信5. 延伸玩法 安全性设计 技术选…...

蓝桥杯3498 01串的熵

问题描述 对于一个长度为 23333333的 01 串, 如果其信息熵为 11625907.5798&#xff0c; 且 0 出现次数比 1 少, 那么这个 01 串中 0 出现了多少次? #include<iostream> #include<cmath> using namespace std;int n 23333333;int main() {//枚举 0 出现的次数//因…...