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

每日三个JAVA经典面试题(十九)

1.Java Concurrency API 中的 Lock 接口(Lock interface)是什么?对比同步它有什么优势?Java并发API中的Lock接口提供了一种比传统synchronized块或方法更灵活、更强大的线程同步机制。Lock接口允许更细粒度的锁控制,通过它可以实现更复杂的线程同步结构,而不仅仅是同步代码块或方法。

Lock接口的主要特点:

  1. 显式锁定和解锁:与synchronized隐式锁的使用不同,使用Lock接口时,你需要显式地获取和释放锁。这提供了更好的控制,但也需要开发者手动管理锁的释放,以避免死锁。

  2. 尝试非阻塞地获取锁Lock接口提供tryLock()方法,允许线程尝试获取锁而不是无限期等待,这可以解决一些死锁问题。

  3. 可中断的锁获取操作lockInterruptibly()方法允许线程在等待锁的过程中响应中断。

  4. 支持超时tryLock(long time, TimeUnit unit)方法允许线程在给定的等待时间内尝试获取锁,如果在指定时间内没有获取到锁,线程可以放弃等待,这增加了更多的灵活性。

  5. 支持公平锁:一些Lock实现(如ReentrantLock)提供了构造函数,可以创建一个基于公平策略的锁。公平锁意味着线程将按照请求锁的顺序来获取锁,减少饥饿现象。

与synchronized的对比优势:

  • 灵活性Lock提供了更多的锁操作功能,如尝试获取锁、设置超时和中断等待锁的线程,使得锁的管理更加灵活。
  • 控制精度Lock允许在不同的作用域中获取和释放锁,不仅限于同步块的范围内,提供了更细粒度的锁控制。
  • 性能:在某些复杂的同步需求和高竞争环境下,Lock可能提供比synchronized更好的性能。
  • 公平性Lock可以创建公平锁,而synchronized块是非公平的。

尽管Lock接口提供了比synchronized更强大和灵活的同步控制能力,但它也需要更仔细的锁管理,包括确保在所有路径上锁都被正确释放,以避免死锁或资源泄漏。因此,选择使用Lock还是synchronized应根据具体的使用场景和需求来决定。对于简单同步需求,使用synchronized可能更简洁方便;对于需要高度控制和灵活性的场景,Lock可能是更好的选择。

2.jsp 和 servlet 有什么区别?

JSP (JavaServer Pages) 和 Servlet 是Java EE技术的两个核心组件,用于开发动态Web应用。它们之间的主要区别在于它们的用途、设计和工作方式。

1. 目的和设计哲学

  • Servlet:是Java的服务器端程序,用Java编写,主要用于处理客户端的请求并生成动态内容。Servlet是控制层的技术,用于业务逻辑的处理和数据处理。
  • JSP:是一种便于创建动态内容的Web页面技术。JSP可以看作是Servlet技术的扩展,它允许将Java代码嵌入到HTML页面中。JSP更侧重于视图,是用于展示层的技术。

2. 工作方式

  • Servlet:当请求到达Servlet时,Servlet容器(如Tomcat)会加载并执行Servlet类的service方法来处理请求,并生成响应。开发者需要在Servlet中通过编写Java代码来生成整个页面。
  • JSP:当请求指向JSP页面时,JSP引擎首先将JSP页面转换为一个Servlet源码,然后编译这个Servlet源码,生成对应的类文件,最后执行该Servlet。在JSP页面中,可以直接使用HTML标签,并在其中嵌入Java代码(通常通过特殊标签如<% %>实现)来生成动态内容。

3. 易用性和维护性

  • Servlet:编写和维护需要深入的Java编程知识,所有内容都通过Java代码生成,这对于主要处理业务逻辑和数据的场景更适合。
  • JSP:由于支持HTML标签,使得页面开发更为直观和简单。JSP允许Web开发者和设计师更容易地协作开发Web界面。

4. 性能

  • Servlet:通常,由于Servlet是预先编译好的,它的执行速度比JSP快。Servlet适用于处理复杂的处理逻辑。
  • JSP:虽然JSP页面最终也会被编译成Servlet,但这个转换和编译过程会在第一次请求时进行,可能导致第一次访问的性能稍差。不过,一旦编译完成,性能与Servlet相差无几。

总结

虽然JSP和Servlet在内部实现上有所不同,但它们都用于生成动态Web内容。选择使用JSP还是Servlet,主要取决于开发的需求、项目的结构以及开发团队的偏好。在现代Web应用开发中,经常将二者结合使用,利用Servlet处理复杂的业务逻辑,而使用JSP作为表现层来显示信息,以达到MVC(Model-View-Controller)设计模式的分离。

3.jsp 有哪些内置对象?作用分别是什么?

JSP (JavaServer Pages) 提供了一组内置对象(也称为隐式对象),这些对象在JSP页面中可直接使用,无需显式声明或初始化。这些内置对象提供了与Servlet容器和HTTP请求/响应等相关的功能。以下是一些常用的JSP内置对象及其作用:

1. request

  • 类型HttpServletRequest
  • 作用:代表客户端的请求。通过它可以获取到客户端发送的数据、查询字符串、请求参数等。

2. response

  • 类型HttpServletResponse
  • 作用:代表对客户端的响应。可以用来设置响应头、发送错误等。

3. out

  • 类型JspWriter
  • 作用:用于向客户端发送输出内容。通常用来输出HTML标记或文本数据。

4. session

  • 类型HttpSession
  • 作用:代表用户会话,可用于存储跨多个页面或请求的用户特定数据。

5. application

  • 类型ServletContext
  • 作用:代表整个Web应用的上下文环境,可用于存储全局共享数据。

6. config

  • 类型ServletConfig
  • 作用:提供了对Servlet配置信息的访问,如初始化参数。

7. pageContext

  • 类型PageContext
  • 作用:为JSP页面提供了一个存储属性的空间,并提供了对其他内置对象的访问。它是访问其他内置对象的入口。

8. page

  • 类型Object
  • 作用:代表JSP页面本身。在JSP页面中,this关键字就是page对象的一个引用。

9. exception

  • 类型Throwable
  • 作用:仅在错误页面中可用,代表原始页面抛出的异常。

这些内置对象使得在JSP页面中处理请求、响应、会话管理和异常处理等变得更加简单直接。它们是JSP规范的一部分,确保了JSP页面的开发效率和便利性。

相关文章:

每日三个JAVA经典面试题(十九)

1.Java Concurrency API 中的 Lock 接口(Lock interface)是什么&#xff1f;对比同步它有什么优势&#xff1f;Java并发API中的Lock接口提供了一种比传统synchronized块或方法更灵活、更强大的线程同步机制。Lock接口允许更细粒度的锁控制&#xff0c;通过它可以实现更复杂的线…...

springboot企业级抽奖项目业务一(登录模块)

开发流程 该业务基于rouyi生成好了mapper和service的代码&#xff0c;现在需要在controller层写接口 实际操作流程&#xff1a; 看接口文档一>controller里定义函数一>看给出的工具类一>补全controller里的函数一>运行测试 接口文档 在登录模块有登录和登出方…...

【Python + Django】启动简单的文本页面

前言&#xff1a; 为了应付&#xff08;bushi&#xff09;毕业论文&#xff0c;总要自己亲手搞一个像模像样的项目出来吧 ~ ~ 希望自己能在新的连载中学到项目搭建的知识&#xff0c;这也算是为自己的测试经历增添光彩吧&#xff01;&#xff01;&#xff01; 希望、希望大家…...

Docker——问题解决:服务器端和Windows端IP互通

踩了大坑&#xff0c;特此记录&#xff01;&#xff01;&#xff01;&#xff01;&#xff01; 我在服务器端部署了服务&#xff0c;但是在本地端Windows机器上无法访问&#xff0c;因此卡了一天。 1. 双向Ping通 防火墙导致只能单向Ping通 首先需要解决双向ping通的问题&…...

HTTP跨域

1. 简介 HTTP跨域是指不同域名下的网页请求资源时&#xff0c;由于浏览器同源策略限制&#xff0c;导致请求被阻止。为解决这一问题&#xff0c;开发者常采用跨域资源共享&#xff08;CORS&#xff09;等技术来允许合法跨域请求&#xff0c;确保网站功能正常运行。 同源 协议…...

用Python的turtle库绘制皮卡丘

turtle库的简介 turtle(海龟)库是turtle绘图体系的python实现&#xff0c;turtle库是一种标准库&#xff0c;是python自带的。 turtle(海龟)是一种真实的存在&#xff0c;有一个海龟在窗口的正中心&#xff0c;在画布上游走&#xff0c;走过的轨迹形成了绘制的图形&#xff0…...

C语言打印当前时间

#include <time.h> void print_current_time(char* func_name) { // 获取当前的时间 time_t current_time; time(&current_time); // 将时间转换为本地时间格式 struct tm *local_time localtime(&current_time); // 打印当前的时间 …...

(一)基于IDEA的JAVA基础4

注释文本&#xff0c;注释模版 单行注释://开头放在代码前面&#xff0c;对少部分。 多行注释:快捷方式ctrlshift/,对段落代码注 释。 文档注释:/**……**/&#xff0c;用于声明作者或创作时 间。 文档注释如何设置&#xff0c;首先找到File中…...

【Python】复习12:标准库与第三方库

目录 概念标准库第三方库总结Python 标准库`os` 模块`sys` 模块`json` 模块`re` 模块`datetime` 模块代码示例`os` 模块例子`sys` 模块例子`json` 模块例子`re` 模块例子`datetime` 模块例子第三方库`numpy``pandas``requests`安装第三方库使用第三方库其他一些流行的Python库数…...

CUDA 12介绍

CUDA&#xff08;Compute Unified Device Architecture&#xff09;是由 NVIDIA 开发的并行计算平台和应用程序编程接口&#xff08;API&#xff09;。CUDA 使开发人员能够使用 NVIDIA GPU 进行通用目的的并行计算。CUDA 通过利用 GPU 的大规模并行计算能力来加速各种类型的计算…...

旅游系统-软件与环境

运行 1.下载软件并进行环境配置 2.导入项目包以及SQL文件 (1)VsCode 管理员运行打开 a.新建terminal 注意&#xff1a; 1.执行 npm config set registry https://registry.npm.taobao.org 2.执行 npm install 3.执行 $env:NODE_OPTIONS“–openssl-legacy-provider” b.输入…...

AI基础知识(2)--决策树,神经网络

1.什么是决策树&#xff1f; 决策树是一类常见的机器学习方法&#xff0c;决策树是基于树的结构来进行决策。决策过程中提出的每一个问题都是对于属性的“测试”&#xff0c;决策的最终结论对应了我们希望的判定结果。一个决策树包含一个根节点&#xff0c;若干个内部节点和若…...

蓝桥杯C++大学B组一个月冲刺记录2024/3/21

蓝桥杯C大学B组一个月冲刺记录2024/3/20 规则&#xff1a;每日三题 今日的题很简单┗|&#xff40;O′|┛ 嗷~~ 1.奶酪 现有一块大奶酪&#xff0c;它的高度为 h &#xff0c;它的长度和宽度我们可以认为是无限大的&#xff0c;奶酪中间有许多半径相同的球形空洞。 我们可以在…...

由浅到深认识C语言(14):枚举

该文章Github地址&#xff1a;https://github.com/AntonyCheng/c-notes 在此介绍一下作者开源的SpringBoot项目初始化模板&#xff08;Github仓库地址&#xff1a;https://github.com/AntonyCheng/spring-boot-init-template & CSDN文章地址&#xff1a;https://blog.csdn…...

速盾cdn:cdn节点缓存内容不一致怎么办?

在使用CDN服务时&#xff0c;有时候可能会遇到CDN节点缓存内容不一致的情况。这种情况会导致用户访问网站时获取到的内容不一致&#xff0c;给用户带来困惑和不良体验。那么当遇到这种情况时&#xff0c;我们应该如何解决呢&#xff1f; 首先&#xff0c;我们需要了解CDN是如何…...

【LAMMPS学习】三、构建LAMMPS(6)在构建中包含软件包

3. 构建 LAMMPS 3.6.在构建中包含软件包 在 LAMMPS 中&#xff0c;包是一组启用一组特定功能的文件。例如&#xff0c;分子系统的力场或刚体约束都在封装中。在 src 目录中&#xff0c;每个包都是一个子目录&#xff0c;包名称为大写字母。 包文档页面上给出了包的概述。每…...

apache commons-dbcp Apache Commons DBCP 软件实现数据库连接池 commons-dbcp2

DBCP组件 许多Apache项目支持与关系型数据库进行交互。为每个用户创建一个新连接可能很耗时&#xff08;通常需要多秒钟的时钟时间&#xff09;&#xff0c;以执行可能需要毫秒级时间的数据库事务。对于一个公开托管在互联网上的应用程序&#xff0c;在同时在线用户数量可能非…...

8.2K star!史上最强Web应用防火墙

&#x1f6a9; 0x01 介绍 长亭雷池SafeLine是长亭科技耗时近 10 年倾情打造的WAF(Web Application Firewall)&#xff0c;一款敢打出口号 “不让黑客越雷池一步” 的 WAF&#xff0c;我愿称之为史上最强的一款Web应用防火墙&#xff0c;足够简单、足够好用、足够强的免费且开源…...

浅谈RPC的理解

浅谈RPC的理解 前言RPC体系Dubbo架构最后 前言 本文中部分知识涉及Dubbo&#xff0c;需要对Dubbo有一定的理解&#xff0c;且对源码有一定了解 如果不了解&#xff0c;可以参考学习我之前的文章&#xff1a; 浅谈Spring整合Dubbo源码&#xff08;Service和Reference注解部分&am…...

JDK发布信息、历史及未来规划

1.未来规划 发布日期类型版本其它信息2026-01-20CPU25.0.2, 21.0.10, 17.0.18, 11.0.30, 8u4812025-10-21CPU25.0.1, 21.0.9, 17.0.17, 11.0.29, 8u4712025-09-16Feature*25 LTS2025-07-15CPU24.0.2, 21.0.8, 17.0.16, 11.0.28, 8u4612025-04-15CPU24.0.1, 21.0.7, 17.0.15, 1…...

微软PowerBI考试 PL300-选择 Power BI 模型框架【附练习数据】

微软PowerBI考试 PL300-选择 Power BI 模型框架 20 多年来&#xff0c;Microsoft 持续对企业商业智能 (BI) 进行大量投资。 Azure Analysis Services (AAS) 和 SQL Server Analysis Services (SSAS) 基于无数企业使用的成熟的 BI 数据建模技术。 同样的技术也是 Power BI 数据…...

2025年能源电力系统与流体力学国际会议 (EPSFD 2025)

2025年能源电力系统与流体力学国际会议&#xff08;EPSFD 2025&#xff09;将于本年度在美丽的杭州盛大召开。作为全球能源、电力系统以及流体力学领域的顶级盛会&#xff0c;EPSFD 2025旨在为来自世界各地的科学家、工程师和研究人员提供一个展示最新研究成果、分享实践经验及…...

【Linux】C语言执行shell指令

在C语言中执行Shell指令 在C语言中&#xff0c;有几种方法可以执行Shell指令&#xff1a; 1. 使用system()函数 这是最简单的方法&#xff0c;包含在stdlib.h头文件中&#xff1a; #include <stdlib.h>int main() {system("ls -l"); // 执行ls -l命令retu…...

mongodb源码分析session执行handleRequest命令find过程

mongo/transport/service_state_machine.cpp已经分析startSession创建ASIOSession过程&#xff0c;并且验证connection是否超过限制ASIOSession和connection是循环接受客户端命令&#xff0c;把数据流转换成Message&#xff0c;状态转变流程是&#xff1a;State::Created 》 St…...

cf2117E

原题链接&#xff1a;https://codeforces.com/contest/2117/problem/E 题目背景&#xff1a; 给定两个数组a,b&#xff0c;可以执行多次以下操作&#xff1a;选择 i (1 < i < n - 1)&#xff0c;并设置 或&#xff0c;也可以在执行上述操作前执行一次删除任意 和 。求…...

【android bluetooth 框架分析 04】【bt-framework 层详解 1】【BluetoothProperties介绍】

1. BluetoothProperties介绍 libsysprop/srcs/android/sysprop/BluetoothProperties.sysprop BluetoothProperties.sysprop 是 Android AOSP 中的一种 系统属性定义文件&#xff08;System Property Definition File&#xff09;&#xff0c;用于声明和管理 Bluetooth 模块相…...

uniapp微信小程序视频实时流+pc端预览方案

方案类型技术实现是否免费优点缺点适用场景延迟范围开发复杂度​WebSocket图片帧​定时拍照Base64传输✅ 完全免费无需服务器 纯前端实现高延迟高流量 帧率极低个人demo测试 超低频监控500ms-2s⭐⭐​RTMP推流​TRTC/即构SDK推流❌ 付费方案 &#xff08;部分有免费额度&#x…...

【HTML-16】深入理解HTML中的块元素与行内元素

HTML元素根据其显示特性可以分为两大类&#xff1a;块元素(Block-level Elements)和行内元素(Inline Elements)。理解这两者的区别对于构建良好的网页布局至关重要。本文将全面解析这两种元素的特性、区别以及实际应用场景。 1. 块元素(Block-level Elements) 1.1 基本特性 …...

Reasoning over Uncertain Text by Generative Large Language Models

https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829 1. 概述 文本中的不确定性在许多语境中传达,从日常对话到特定领域的文档(例如医学文档)(Heritage 2013;Landmark、Gulbrandsen 和 Svenevei…...

用机器学习破解新能源领域的“弃风”难题

音乐发烧友深有体会&#xff0c;玩音乐的本质就是玩电网。火电声音偏暖&#xff0c;水电偏冷&#xff0c;风电偏空旷。至于太阳能发的电&#xff0c;则略显朦胧和单薄。 不知你是否有感觉&#xff0c;近两年家里的音响声音越来越冷&#xff0c;听起来越来越单薄&#xff1f; —…...