2.Javaweb模块基本

news2024/11/29 12:36:06

1.1web基本

session 和 cookie 有什么区别?
存储位置不同:session 存储在服务器端;cookie 存储在浏览器端。
安全性不同:cookie 安全性一般,在浏览器存储,可以被伪造和修改。
容量和个数限制:cookie 有容量限制,每个站点下的 cookie 也有个数限制。
存储的多样性:session 可以存储在 Redis 中、数据库中、应用程序中;而 cookie 只能存储在浏览器中。


说一下 session 的工作原理?
session 的工作原理是客户端登录完成之后,服务器会创建对应的 session,session 创建完之后,会把 session 的 id 发送给客户端,客户端再存储到浏览器中。这样客户端每次访问服务器时,都会带着 sessionid,服务器拿到 sessionid 之后,在内存找到与之对应的 session 这样就可以正常工作了。


如果客户端禁止 cookie 能实现 session 还能用吗?
可以用,session 只是依赖 cookie 存储 sessionid,如果 cookie 被禁用了,可以使用 url 中添加 sessionid 的方式保证 session 能正常使用。


如何避免 SQL 注入?
使用预处理 PreparedStatement。
使用正则表达式过滤掉字符中的特殊字符。


什么是 XSS 攻击,如何避免?
XSS 攻击:即跨站脚本攻击,它是 Web 程序中常见的漏洞。原理是攻击者往 Web 页面里插入恶意的脚本代码(css 代码、Javascript 代码等),当用户浏览该页面时,嵌入其中的脚本代码会被执行,从而达到恶意攻击用户的目的,如盗取用户 cookie、破坏页面结构、重定向到其他网站等。
预防 XSS 的核心是必须对输入的数据做过滤处理。


2.异常模块

2.1基本

throw 和 throws 的区别?
throw:是真实抛出一个异常。
throws:是声明可能会抛出一个异常。


final、finally、finalize 有什么区别?
final:是修饰符,如果修饰类,此类不能被继承;如果修饰方法和变量,则表示此方法和此变量不能在被改变,只能使用。
finally:是 try{} catch{} finally{} 最后一部分,表示不论发生任何情况都会执行,finally 部分可以省略,但如果 finally 部分存在,则一定会执行 finally 里面的代码。
finalize: 是 Object 类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法。


try-catch-finally 中哪个部分可以省略?
try-catch-finally 其中 catch 和 finally 都可以被省略,但是不能同时省略,也就是说有 try 的时候,必须后面跟一个 catch 或者 finally。


try-catch-finally 中,如果 catch 中 return 了,finally 还会执行吗?

 finally 一定会执行,即使是 catch 中 return 了,catch 中的 return 会等 finally 中的代码执行完之后,才会执行。

 运行时异常和一般异常(受检异常)区别是什么?


运行时异常包括 RuntimeException 类及其子类,表示 JVM 在运行期间可能出 现的异常。 Java 编译器不会检查运行时异常。
受检异常是Exception 中除 RuntimeException 及其子类之外的异常。 Java 编 译器会检查受检异常。

RuntimeException异常和受检异常之间的区别:

是否强制要求调用者必须处 理此异常,

如果强制要求调用者必须进行处理,那么就使用受检异常,

否则就选择非受检异常(RuntimeException)。

一般来讲,如果没有特殊的要求,我们建 议使用RuntimeException异常。

编译时异常和运行时异常区别_编译时异常和运行时异常的区别_夢想家吖的博客-CSDN博客文章目录1、编译时异常因为什么而得名2、编译时异常和运行时异常区别3、编译时异常还有其他名字4、运行时异常还有其他名字5、所有异常都发生在运行阶段的1、编译时异常因为什么而得名编译时异常和运行时异常,都发生在运行阶段。编译阶段异常是不会发生的。编译时异常因为什么而得名?因为编译时异常必须在编译(编写)阶段预先处理,如果不处理编译器报错,因此得名。所有异常都是运行阶段发生的。因为只有程序运行阶段才可以new对象。因为异常的发生都是new异常对象。2、编译时异常和运行时异常区别编译时异常一般_编译时异常和运行时异常的区别https://blog.csdn.net/qq2632246528/article/details/114086425

常见的异常类有哪些?
NullPointerException 空指针异常
ClassNotFoundException 指定类不存在
NumberFormatException 字符串转换为数字异常
IndexOutOfBoundsException 数组下标越界异常
ClassCastException 数据类型转换异常
FileNotFoundException 文件未找到异常
NoSuchMethodException 方法不存在异常
IOException IO 异常
SocketException Socket 异常


3.网络模块

3.1基本

http 响应码 301 和 302 代表的是什么?有什么区别?
301:永久重定向。
302:暂时重定向。
它们的区别是,301 对搜索引擎优化(SEO)更加有利;302 有被提示为网络拦截的风险。


forward 和 redirect 的区别?
forward 是转发 和 redirect 是重定向:
地址栏 url 显示:foward url 不会发生改变,redirect url 会发生改变;
数据共享:forward 可以共享 request 里的数据,redirect 不能共享;
效率:forward 比 redirect 效率高。


简述 tcp 和 udp的区别?

tcp 和 udp 是 OSI 模型中的运输层中的协议。tcp 提供可靠的通信传输,而 udp 则常被用于让广播和细节控制交给应用的通信传输。
两者的区别大致如下:
tcp 面向连接,udp 面向非连接即发送数据前不需要建立链接;
tcp 提供可靠的服务(数据传输),udp 无法保证;
tcp 面向字节流,udp 面向报文;
tcp 数据传输慢,udp 数据传输快;


tcp 为什么要三次握手,两次不行吗?为什么?
如果采用两次握手,那么只要服务器发出确认数据包就会建立连接,但由于客户端此时并未响应服务器端的请求,那此时服务器端就会一直在等待客户端,这样服务器端就白白浪费了一定的资源。若采用三次握手,服务器端没有收到来自客户端的再此确认,则就会知道客户端并没有要求建立请求,就不会浪费服务器的资源。


OSI 的七层模型都有哪些?
物理层:利用传输介质为数据链路层提供物理连接,实现比特流的透明传输。
数据链路层:负责建立和管理节点间的链路。
网络层:通过路由选择算法,为报文或分组通过通信子网选择最适当的路径。
传输层:向用户提供可靠的端到端的差错和流量控制,保证报文的正确传输。
会话层:向两个实体的表示层提供建立和使用连接的方法。
表示层:处理用户信息的表示问题,如编码、数据格式转换和加密解密等。
应用层:直接向用户提供服务,完成用户希望在网络上完成的各种工作。


get 和 post 请求有哪些区别?
get 请求会被浏览器主动缓存,而 post 不会。
get 传递参数有大小限制,而 post 没有。
post 参数传输更安全,get 的参数会明文限制在 url 上,post 不会。

4.设计模式

设计模式概览(23种设计模式+六大原则)_ThinkCockpit的博客-CSDN博客设计模式概览:23种设计模式、设计模式六大原则https://blog.csdn.net/qq_54140018/article/details/129979211

 Java设计模式面试题总结_KangJinXuan的博客-CSDN博客Java设计模式面试题_java设计模式面试题https://blog.csdn.net/KangJinXuan/article/details/126608406

 

单例模式:

懒汉式 和饿汉式

饿汉式 直接创建对象

4.1基础

说一下你熟悉的设计模式?
单例模式:保证被创建一次,节省系统开销。
工厂模式(简单工厂、抽象工厂):解耦代码。
观察者模式:定义了对象之间的一对多的依赖,这样一来,当一个对象改变时,它的所有的依赖者都会收到通知并自动更新。
外观模式:提供一个统一的接口,用来访问子系统中的一群接口,外观定义了一个高层的接口,让子系统更容易使用。
模版方法模式:定义了一个算法的骨架,而将一些步骤延迟到子类中,模版方法使得子类可以在不改变算法结构的情况下,重新定义算法的步骤。
状态模式:允许对象在内部状态改变时改变它的行为,对象看起来好像修改了它的类。


简单工厂和抽象工厂有什么区别?
简单工厂:用来生产同一等级结构中的任意产品,对于增加新的产品,无能为力。
工厂方法:用来生产同一等级结构中的固定产品,支持增加任意产品。
抽象工厂:用来生产不同产品族的全部产品,对于增加新的产品,无能为力;支持增加产品族。


设计模式是一种常用的解决软件设计问题的方法,它们被广泛应用于软件开发中。设计模式被分为三种类型:创建型、结构型和行为型。下面是所有23种设计模式的详细解释:

1、创建型模式


这些模式用于创建对象或者对对象的创建进行优化。

1.1、工厂模式 (Factory Pattern)


        定义了一个创建对象的接口,但让子类决定要实例化的类是哪一个。工厂方法使得一个类的实例化延迟到其子类。

1.2、抽象工厂模式 (Abstract Factory Pattern)


        提供了一种创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。

1.3、单例模式 (Singleton Pattern)


        保证一个类只有一个实例,并提供一个全局访问点。

1.4、建造者模式 (Builder Pattern)


        允许逐步构建复杂对象。与工厂模式不同的是,建造者模式更注重于对象的组装方式。

1.5、原型模式 (Prototype Pattern)


        通过复制现有的对象来创建新的对象。
 

2、结构型模式


        结构型模式是一类用于组织类和对象之间的关系的设计模式,它们通常解决对象的组合和对象之间的依赖关系的问题。结构型模式被分为7个不同的类型。

2.1、 适配器模式(Adapter Pattern)
        将一个类的接口转换成客户端所期望的另一种接口。适配器模式通常用于解决两个现有接口之间不兼容的问题,以使它们能够在一起工作。

2.2、桥接模式(Bridge Pattern)
        将一个对象的抽象部分与它的实现部分分离开来,使它们可以独立地变化。桥接模式通常用于解决多种实现方式的问题。

2.3、组合模式(Composite Pattern)
        将对象组合成树形结构,以表示“整体-部分”的层次结构。组合模式使得客户端可以将单个对象和组合对象一视同仁,从而简化了客户端代码。

2.4、装饰器模式(Decorator Pattern)
        允许在运行时动态地给对象添加功能,而无需修改它们的代码。装饰器模式是一种灵活而高效的替代继承的方式。

2.5、外观模式(Facade Pattern)
        为一个复杂的子系统提供了一个简单的接口。通过使用外观模式,客户端可以将子系统的复杂性从它们的代码中分离出来。

3、行为型模式
        它们关注对象之间的交互和职责分配。这些模式主要用于处理对象之间的通信,以及在不同对象之间分配职责和行为。以下是常见的行为型模式及其详解:

3.3、模板方法模式(Template Method Pattern)
        定义了一个算法的骨架,将一些步骤延迟到子类中实现。模板方法使得子类可以在不改变算法结构的情况下重新定义算法中某些步骤。

3.6、策略模式(Strategy Pattern)
        定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换。策略模式使得算法可独立于使用它的客户而变化。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1096086.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

浅讲make/makefile【linux】

浅讲make/makefile【linux】 一. 什么是make/makefile?二. makefile2.1 依赖关系与依赖方法2.2 浅用make2.2.1 make test2.2.2 clean 2.2 make一次执行多步2.3 部分修饰符号2.3.1 .PHONY(伪目标)2.3.2 2.3.3 $ $^ 一. 什么是make/makefile? make/makefi…

uml知识点学习

https://zhuanlan.zhihu.com/p/659911315https://zhuanlan.zhihu.com/p/659911315软件工程分析设计图库目录 - 知乎一、结构化绘图1. 结构化——数据流图Chilan Yuk:1. 结构化——数据流图2. 结构化——数据字典Chilan Yuk:2. 结构化——数据字典3. 结构…

“理解梯度下降:直觉、数学公式和推导”

一、说明 梯度下降是机器学习中使用的一种流行的优化算法,通过迭代调整函数的参数来最小化函数。基本思想是将函数的参数沿函数梯度最陡峭下降的方向移动。 二、关于梯度的叙述 简单来说,想象一下你在山顶,你想尽快到达山脚下。你可以开始下坡…

流程图规范

文章目录 1.符号概览2.要求2.1 从上至下,从左至右的流向顺序2.2 开始符号只能有一个出口2.3 进程符号不做逻辑校验2.4 相同流程图,符号大小应为一致2.5 引用流程,而不是重复绘制2.6 路径符号应尽量避免相互交叉2.7 同一路径,箭头只…

【Python】Python语言基础(下)

目录 第十一章 控制结构 for语句 if语句 while语句 第十二章 函数 函数介绍 函数的定义 函数的调用 函数的传参 函数的传参方式 位置实参 关键字实参 默认值实参 函数的返回值 函数传递未知数量的实参 函数的模块调用 调用整个模块 调用模块中特定功能 第十…

业财融合潮流下,构建国有企业全面预算管理体系

近年来,在我国快速发展的变革过程中,国有企业改革的持续深入需要积极结合市场环境和自身发展需求,然而其传统的财务管理模式难以适应企业提出的新要求,预算管理与经营销售之间不断出现隔阂。为确保全面预算管理在国有企业内部的良…

部署个人静态网站到阿里云服务器(含域名解析)

使用前提: 您目前已经有一个静态网站,可以在本地通过html进行访问。 1、购买阿里云服务器 该步骤最详细的教程来自官方文档 具体到从注册开始每一个鼠标点击都有图片介绍。 你可以按照他的步骤完成整个部署过程,当然可以自己选择服务器的…

【实用调试技巧】总是找不到Bug?手把手教你在vs2022中调试程序

🦄个人主页:修修修也 🎏所属专栏:程序调试及报错解决 ⚙️操作环境:Visual Studio 2022 目录 什么是Bug? 1947年9月9日:第一个"Bug"被发现 什么是调试? 调试是什么? 调试的基本步骤 Debug和Relese的区别 1.调试的区别 2.文件大小的…

13 | 如何正确使用 @Entity 里面的回调方法

Java Persistence API 里面规定的回调方法有哪些? JPA 协议里面规定,可以通过一些注解,为其监听回调事件、指定回调方法。下面我整理了一个回调事件注解表,分别列举了 PrePersist、PostPersist、PreRemove、PostRemove、PreUpdat…

线性排序:如何根据年龄给100万用户数据排序?

文章来源于极客时间前google工程师−王争专栏。 桶排序、计数排序、基数排序时间复杂度是O(n),所以这类排序算法叫作线性排序。 线性的原因:三个算法是非基于比较的排序算法,都不涉及元素之间的比较操作。 三种排序对排序的数据要求苛刻&am…

19 | 如何搞清楚事务、连接池的关系?正确配置是怎样的

事务的基本原理 在学习 Spring 的事务之前,你首先要了解数据库的事务原理,我们以 MySQL 5.7 为例,讲解一下数据库事务的基础知识。 我们都知道 当 MySQL 使用 InnoDB 数据库引擎的时候,数据库是对事务有支持的。而事务最主要的作…

(转)富文本编辑器——Vue2Editor

介绍 Vue2Editor是一个简单易用且功能强大的Vue版本的富文本编辑器,其基于Quill.js和Vuejs构建! 简单易用、功能强大的富文本编辑器——Vue2Editor Github https://github.com/davidroyer/vue2-editor 特性 简单易用;基于Vue.js & Quil…

【Golang】Go的并发和并行性解释。谁说Go不是并行语言?

偶然发现百度上有很多"师出同门"的"go是并发语言,而不是并行语言"的说法。让我顿感奇怪,"并行"说白了就是对CPU多核的利用,这年头不能利用多核的编译语言还有的混?而且还混的这么好?并且…

Linux网络编程系列之服务器编程——非阻塞IO模型

Linux网络编程系列 (够吃,管饱) 1、Linux网络编程系列之网络编程基础 2、Linux网络编程系列之TCP协议编程 3、Linux网络编程系列之UDP协议编程 4、Linux网络编程系列之UDP广播 5、Linux网络编程系列之UDP组播 6、Linux网络编程系列之服务器编…

echarts关于一次性绘制多个饼图 (基于vue3)

在echarts中,dataset 和 source 是用来配置数据的选项。 dataset 是一个包含数据相关配置的对象,用于指定数据的来源和格式。它可以包含多个维度的数据集,每个维度都可以有自己的名称和数据。 source 是 dataset 中的一个子项,用于…

图计算(林子雨慕课课程)

文章目录 13. 图计算13.1 图计算简介13.2 Pregel简介13.3 Pregel图计算模型13.3.1 有向图和顶点13.3.2 Pregel的计算过程13.3.2 Pregel实例 13.4 Pregel的C API13.4.1 定义Vertex基类13.4.2 消息传递机制和Combiner13.4.3 Aggregator、拓扑改变和输入输出 13.5 Pregel的体系结构…

【通过实验带你认识linux下的源码编译】

通过实验带你认识linux下的源码编译 01 初识项目编译02 编译过程03 完整的编译过程1、创建源代码文件2、创建configure脚本3、创建Makefile.am 源代码是相对目标代码和可执行代码而言的。源代码是用汇编语言和高级语言写出来的代码。 目标代码是指源代码经过编译程序产生的能被…

qml介绍

文章目录 qml简介对象一个风车的例子 qml简介 从 Qt 4.7 开始,Qt 引入了一种声明式脚本语言,称为 QML(Qt Meta Language 或者 Qt Modeling Language),作为 C 语言的一种替代。而 Qt Quick 就是使用 QML 构建的一套类库…

(latex中appendix附录怎么写)以及(附录里面的图片表格之类的如何重新编号)

文章目录 初级:怎么写进阶:怎么重新编号进阶:怎么换成单栏格式 初级:怎么写 这个很简单,我一开始以为很复杂。 \begin{document} #这里是“正文”。 #这里是“引用”。 #下面开始是附录。 \appendix \section{Proofs…

英语——分享篇——每日100词——801-900

medical——adj.医疗的——me我(熟词)di弟(拼音)cal擦了(拼音) chief——n.酋长——thief小偷——小偷拜见酋长 pork——n.猪肉——p皮鞋(编码)or偶人(拼音)k机关枪(编码)——穿着皮鞋的偶人扛着机关枪挑猪肉 pie——n.馅饼,派——瞥——他无意瞥见一块馅饼 saus…