JAVA Web_定义Servlet_1 欢迎考生
题目
假定:本地服务器(127.0.0.1)上有一名为jspExam的Web项目,现按要求定义一Servlet,实现以下功能:
1)Servlet的类名自定义,假定可以用以下url访问该Servlet,
http://127.0.0.1:8080/jspExam/exam?username=xxx&usernumber=+++
请用注解方式配置该Servlet的url。其中“xxx”代表考生姓名,“+++”代表考生考号。
2)该Servlet处理get请求方式;
3)该Servlet返回HTML格式的内容;
4)访问该Servlet将根据参数username和usernumber输出不同的内容:“欢迎xxx,你的考号是+++”,比如:username=张三&usernumber=123456
将输出:欢迎张三,你的考号是123456
注释:
利用String对象手动实现编码转换:
new String(name.getBytes("IS0-8859-1"),"utf-8")
前文链接:如何在Eclipse新建一个Web项目-CSDN博客
JAVAWeb_Servlet:前置准备与理论简易介绍-CSDN博客
因为这是我们第一次真正意义上,编写Servlet的代码。所以接下来想要实现这个小项目,我们会先顺着题目来一步一步来:
1. 创建项目
根据题意,“本地服务器”就是我们自己的计算机,OK,已经准备好了。接下来,按照题上说:“名为jspExam的Web项目”。—— 意味着 我们的项目名称为jspExam
2. 定义Servlet
现在我们需要定义一个Servlet,要求实现以上4个功能:
2.1 Servlet类名 与 注解方式配置Servlet的URL
既然该Servlet的类名自定义,那作者就不客气了:就叫……ExamServlet
也是到这儿发现一个技巧:就是直接创建servlet时也可以顺便把包建了(扶额邪魅一笑)“Java package”包名这儿——作者就直接上网名了。
创建完后:
(作者为了更加详细地编写servlet,把事先的代码都删掉)
servlet类名自定义ok后,接下来我们需要使用注解方式配置该 Servlet 的 URL 映射:
还记得注解方式配置Servlet的url的语法吗:
@WebServlet("...")
// ...为绝对路径。以 / 开头,表示从项目的根路径开始。
项目名为题意上jspExam,而这个servlet的url映射路径我们则需要根据题意,我们注意观察 :
看清了看清了,项目后的路径“/exam”,那么则这个servlet的映射Url正是这个:
于是注解代码:(不要加分号哈)
@WebServlet("/exam")
有同学会说:“欸作者,第一个功能还有最后一截信息,就不管了吗?”
意味深长地摇摇头:非也非也。接下来我们会揭晓这部分是何物?
2.2 处理GET请求
根据我们的前置知识:我们简单介绍了get请求和post请求,只是留下了眼缘。这里题上明确要求我们处理get请求:那么我们可以将代码开头了:(不熟悉开头的同学,可先移步这篇文章JAVAWeb_Servlet:前置准备与理论简易介绍-CSDN博客
@WebServlet("/exam")
public class ExamServlet extends HttpServlet
{//将我们的servlet继承HttpServlet,我们就可以重写HttpServlet它的doGet方法
}
接下里,重写doGet方法:不管什么逻辑,先搭框架
@WebServlet("/exam")
public class ExamServlet extends HttpServlet
{//将我们的servlet继承HttpServlet,我们就可以重写HttpServlet它的doGet方法protected void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException{}
}
我知道大家在写代码时,会出现警告报错:
这是因为没有导入相应的程序包:还记得在前置知识里说的快捷键吗(勾唇一笑),Ctrl+Shift+O
解决了。
@WebServlet("/exam")
public class ExamServlet extends HttpServlet
{protected void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException{//那这里应该怎么处理呢?}
}
先来解决刚刚的遗留问题:
“?username=xxx&usernumber=+++”是什么?
2.2.1 查询字符串:
整个http://127.0.0.1:8080/jspExam/exam?username=xxx&usernumber=+++是一个 HTTP GET 请求的 URL。
而?username=xxx&usernumber=+++是查询字符串(Query String)。用于向服务器传递额外的参数——这里,传入了两个参数,第一个参数名字是username,它的值为xxx;第二个参数名为usernumber,它的值为+++。两个参数以&分隔。
//查询字符串的语法
?key1=value1&key2=value2&key3=value3
//通俗来说,在servlet的url映射路径后,以?开头后面跟着一系列键值对,键值对之间用 & 分隔的部分
虽说查询字符串对于其他请求可用于传递额外的参数,但对于GET请求而言,它最经典的传参就是依靠查询字符串,我们往往将查询字符串的传入的参数作为GET请求要处理的参数。有同学要问了,为什么要传参呢?
用户在请求时传递参数的主要原因是向服务器提供必要的信息,以便服务器能够根据这些信息生成相应的响应。也就是提供用户所需要的服务。
2.2.2 处理内容
现在来正式处理GET请求:根据题意,我们站在服务端的角度,面对客户端传来的GET请求包含了ta的名字和考号,ta所需要的响应——正是针对用户相应的名字和考号按格式输出信息
我们在前导篇说过,用户的请求会在doGet方法里打包成一个类的对象:httpServletRequest request。
要输出这样的信息,我们得从获得的请求里,拿到username和usernumber这两个参数的值。
2.2.3 获取请求里的参数
HttpServletRequest里有个成员方法:getParameter("...")可以帮我们获取请求里的参数,不仅仅是GET请求。
// 方法概述
String getParameter(String name)
// 参数name:String类型,指定要获取的参数名称。
//返回值 :String类型,表示请求中具有指定名称的参数值。如果请求中没有该名称的参数,则返回null。
我们举个例子:假设客户端发来一个请求,客户端那边的提交的username(用户名)这个参数的值为Zhao Qiansun。我们在编写servlet时,需要获得客户端的用户名。
String usrname = request.getParameter("username");
// 这句代码是写在我们的servlet里,我们定义一个usrname去接收request里参数名为username的值
if(usrname = null)
{//这里表明我们表示客户端没传它的username 或者 请求里并没有名为username的参数//所以getParameter("")后返回null
}
else
{//处理参数
}
再来看需求,我们就明白这个Get请求里,客户端传来了两个参数的值:
//一个参数的值是username=张三
//另一个是usernumber=123456
按照后续打印要求,我们很明显需要这两个参数,于是我们可以先调用getParameter("")来获取这两个参数。(题上并没有说null时怎么处理,那么我们也就忽略)
String name = request.getParameter("username");//不出意外,name="张三"
String number = request.getParameter("usernumber");//不出意外,number="123456"
写进整体的代码:
@WebServlet("/exam")
public class ExamServlet extends HttpServlet
{protected void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException{String name = request.getParameter("username");String number = request.getParameter("usernumber");}
}
2.2.4 响应时输出要求内容
Servlet里,要在网页输出内容——也有个方法。很明显,这是响应的内容;所以调用的方法也是response的成员函数。
PrintWriter getWriter()
//返回一个PrintWriter对象,该对象可用于向客户端发送字符文本响应。
//无参调用
//返回PrintWriter类型,表示用于向客户端发送字符文本响应的输出流。
//异常IOException:如果发生输入/输出错误,例如在获取输出流时出现异常。
关于输出流:按照作者奇思妙想的理解,输出流就是建立一条管道:管道里从内存到目的地(此处是我们的网页)管道里输出着一个一个要求我们打印的字符/字节。——于是就此分为 字符流/字节流。
那具体怎么用呢? 要输出“欢迎xxx,你的考号是+++”.其实就是 : 1. 建立一条输出管道(获取响应的输出流) 2. 往输出流放入我们要输出的字符
怎么放入呢? 其实在JAVA里,和我们刚开始学的打印方法一样的名字:println/write
甚至用法都是一样的。
对比
println()
:在写入内容后自动添加行分隔符,适合输出多行文本。
write()
:不会自动添加行分隔符,适合输出连续的文本内容。
这里大家随意选择:
所以这段“输出要求内容”的代码:
PrintWriter out = response.getWrite();//1. 获取响应的输出流
out.println("欢迎"+name+",你的考号是"+number);// 2. 使用打印方法,放入我们要输出的字符串
结合前面的代码:
@WebServlet("/exam")
public class ExamServlet extends HttpServlet
{protected void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException{String name = request.getParameter("username");String number = request.getParameter("usernumber");//到这儿,成功获取所需参数//输出要求内容PrintWriter out = response.getWriter();out.println("欢迎"+name+",你的考号是"+number);}
}
作者已经迫不及待运行这个servlet了:
在自动跳转的浏览器的URL里记得传参(查询字符串)——是的,自己又当写servlet的服务端又当传参的客户端(邪魅一笑)
结果:
好家伙,乱码了。
2.2.5 响应乱码解决
中文乱码问题,就是这编码方式不认识咱们汉字,编不了咱们汉字。没事儿,我们就先设置编码。这编码不行,咱们就换个编码——如:UTF-8
既然是响应乱码……其实响应为我们提供了要设置编码方式的方法:setContentType();
我们一般就是解决中文乱码,那么就加上这句就没问题了:
response.setContentType("text/html;charset=UTF-8");
//charset - 字符集 意味着使用utf-8编码的字符集
//那前半截是什么意思?
//text/html 的功能: 告诉客户端:响应的内容是一个HTML文档。 浏览器应该按照HTML的规则来解析和渲染这些内容。
这句代码可谓一箭双雕:既设置了响应的编码方式和响应的内容类型(html格式)
顺便完成了刚刚忽略的第3)点(再次邪魅一笑)
所以完整的代码:
@WebServlet("/exam")
public class ExamServlet extends HttpServlet
{protected void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException{//上来就设置响应的编码和内容类型response.setContentType("text/html;charset=UTF-8");String name = request.getParameter("username");String number = request.getParameter("usernumber");//到这儿,成功获取所需参数//输出要求内容PrintWriter out = response.getWriter();out.println("欢迎"+name+",你的考号是"+number);}
}
客户端(网页输出):
完整参考代码:
@WebServlet("/exam")
public class ExamServlet extends HttpServlet
{protected void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException{request.setCharacterEncoding("UTF-8");//这句话理论说,在处理GET请求不必加(甚至多余)
//但是,如果处理了响应编码后输出仍乱码的话,很可能是在对请求体解码时错误。加上可能多余但绝不会出错response.setContentType("text/html;charset=UTF-8");String name = request.getParameter("username");String number = request.getParameter("usernumber");//到这儿,成功获取所需参数//输出要求内容PrintWriter out = response.getWriter();out.println("欢迎"+name+",你的考号是"+number);}
}
如果有同学好奇作者怎么解释servlet的运行,以及servlet代码入门:不妨继续移步:JAVAWeb_Servlet:前置准备与理论简易介绍-CSDN博客
如果这篇文章的题目已经通关,我们接下来则继续处理另一种常见请求:POST请求。敬请期待……(抱拳)
相关文章:
JAVA Web_定义Servlet_1 欢迎考生
题目 假定:本地服务器(127.0.0.1)上有一名为jspExam的Web项目,现按要求定义一Servlet,实现以下功能: 1)Servlet的类名自定义,假定可以用以下url访问该Servlet, http://127.0.0.1:80…...
鸿蒙NEXT开发Emitter工具类(ArkTs)
import { emitter } from kit.BasicServicesKit;/*** TODO Emitter工具类(进行线程间通信)* author: 鸿蒙布道师* since: 2025/04/11*/ export class EmitterUtil {/*** 发送事件* param eventId 事件ID,string类型的eventId不支持空字符串。…...
vue项目引入tailwindcss
vue3项目引入tailwindcss vue3 vite tailwindcss3 版本 初始化项目 npm create vitelatest --template vue cd vue npm install npm run dev安装tailwindcss3 和 postcss 引入 npm install -D tailwindcss3 postcss autoprefixer // 初始化引用 npx tailwindcss init -p…...
Quartz修仙指南:从定时任务萌新到调度大能的终极奥义
各位被Thread.sleep()和ScheduledExecutorService折磨的道友们!今天要解锁的是Java界任务调度至尊法宝——Quartz!这货能让你像玉皇大帝安排天庭日程一样,精确控制每个任务的执行时机!准备好告别蹩脚的手动定时器了吗?…...
Process Explorer 性能调优实战:精准定位资源泄漏与高负载进程
一、下载与安装 下载地址 Process Explorer安装包下载:https://pan.quark.cn/s/950c36ba5364下载后解压压缩包,运行 procexp.exe(32 位系统)或 procexp64.exe(64 位系统)。 界面概览 主界面以树…...
Docker 常用命令指南
Docker 提供了丰富的命令行工具来管理镜像、容器、网络和数据卷等资源。本指南按类别整理 Docker 的常用命令,并为每个命令提供简体中文说明和示例,以帮助您快速查询和掌握日常使用。 1. 镜像管理 Docker 镜像(Image)是打包好的应用程序及其依赖环境,可用于创建容器。常用…...
3.1A、34V DC/DC 同步降压转换器WD5034
以下是对 WD5034 相关内容的编辑: WD5034 是一款性能卓越的高效率、单片同步降压 DC/DC 转换器,凭借其先进的恒定频率、平均电流模式控制架构,在众多电源管理芯片中脱颖而出。以下是其详细特点和优势: 出色的负载能力:…...
面向对象高级(1)
文章目录 final认识final关键字修饰类:修饰方法:修饰变量final修饰变量的注意事项 常量 单例类什么是设计模式?单例怎么写?饿汉式单例的特点是什么?单例有啥应用场景,有啥好处?懒汉式单例类。 枚举类认识枚…...
Vim 编辑器的常用快捷键介绍
以下是 Vim 编辑器的常用快捷键分类介绍,帮助你快速掌握高效编辑技巧: 一、基础模式切换 Vim 的核心是 模式化操作,常用模式包括: 普通模式(默认):导航、命令输入。插入模式:输入/…...
如何使用AI辅助开发R语言
R语言是一种用于统计计算和图形生成的编程语言和软件环境,很多学术研究和数据分析的科学家和统计学家更青睐于它。但对与没有编程基础的初学者而言,R语言也是有一定使用难度的。不过现在有了通义灵码辅助编写R语言代码,我们完全可以用自然语言…...
docker 运行自定义化的服务-后端
docker 运行自定义化的服务-前端-CSDN博客 运行自定义化的后端服务 具体如下: ①打包后端项目,形成jar包 ②编写dockerfile文件,文件内容如下: # 使用官方 OpenJDK 镜像 FROM jdk8:1.8LABEL maintainer"ATB" version&…...
【Grok 大模型深度解析】第二期:架构探秘与训练哲学
在上一期的内容中,我们对 Grok 大模型从技术溯源的角度,了解了它从 Transformer 架构局限性出发,迈向混合架构创新的历程,同时也梳理了从 Grok - 1 到 Grok - 3 的版本迭代所带来的技术跃迁以及其独特的差异化优势。这一期,我们将深入到 Grok 大模型的架构内部,探究其精妙…...
oracle update 原理
Oracle 11g 中的 UPDATE 操作是数据库修改数据的关键机制,其核心原理涉及事务管理、多版本并发控制(MVCC)、Undo/Redo 日志、锁机制等 1. 执行前的准备 SQL 解析与执行计划: Oracle 解析 UPDATE 语句,生成执行计划&…...
优化项目缓慢卡顿
大家好,好久不见,因为最近在搞几个老项目,没怎么跟大家见面。在做老项目的时候发现了一些小问题拿出来跟大家分享分享。 因为这个问题是生产环境下面出现的,所以在开发环境的时候很难发现,而且网速快的话也很难发现&a…...
【黑客帝国连接虚拟与现实:数据采集系统(DAQ)硬核技术深度解析】
1. DAQ系统核心架构:从物理世界到数字域的精密映射 1.1 传感器与信号调理:物理量到电信号的精准转换 传感器的物理原理与非线性补偿 热电偶(Thermocouple):基于塞贝克效应,其输出电压与温度差的非线性关系…...
解决unity设置鼠标图标发布以后没有效果的问题
public Texture2D dragCursor; Cursor.SetCursor(dragCursor, Vector2.zero, CursorMode.Auto); 首先设置一个Texture2D的变量,用来保存自己想要设置的图,然后将鼠标设置为自己定义的图片。原本是很简单的功能,而且在编辑器里面运行也正常。…...
CExercise_10_1动态数组Vector
题目: 动手自己实现动态数组Vector,基于以下结构体定义和函数声明: typedef int ElementType; typedef struct { ElementType *data; // 指向堆空间的数组 int size; // 元素的个数 int capacity; // 数组的容量 } Vector; // 请实现下面方法…...
Nextra + TypeScript + MDX 项目的完整目录结构
典型的 Nextra TypeScript MDX 博客项目的完整目录结构。 Pages 架构 my-blog/ ├── components/ # React 组件 │ ├── HelloWorld.tsx # 示例组件 │ └── ... # 其他组件 ├── pages/ # 页面…...
MDM功能演示:远程锁定与数据擦除,保障企业移动设备安全
在当今高度互联的商业环境中,企业数据伴随着员工穿梭于不同城市、时区和设备之间。智能手机、平板电脑和笔记本电脑赋予员工随时随地办公的能力,但也带来了新的安全挑战:设备一旦遗失或落入不当之手,企业数据就面临泄露风险。 无…...
快速idea本地和推送到远程仓库
在你需要推送的那个文件夹打开 #创建本地仓库 git init#添加文件并首次提交 git add . git commit -m "Initial commit"#添加远程仓库地址 git remote add origin https://gitee.com/你的用户名/你的仓库名.git#查看远程仓库是否设置chengg git remote -v#原来远程仓…...
django数据迁移操作受阻
错误信息: django.db.utils.OperationalError: (1227, Access denied; you need (at least one of) the SYSTEM_VARIABLES_ADMIN or SESSION_VARIABLES_ADMIN privilege(s) for this operation)根据错误信息分析,该问题是由于MySQL用户 缺乏SYSTEM_VARI…...
使用Lombok的@Slf4j和idea构建:找不到log符号-解决
问题:在使用Lombok的Slf4j构建项目时提示如下内容: MvcConfiguration.java:26:9 java: cannot find symbol symbol: variable log location: class cn.edu.wynu.mrcinerec.mrserver.config.WebMvcConfiguration查了网上的方法都是改配置 但是使用Googl…...
物联网传感器技术架构与功能解析
物联网传感器作为物联网体系的关键组成部分,主要承担环境或物体状态信息的捕获与传输功能。其通过检测物理、化学或生物参数,将模拟信号转化为数字格式,并利用多种通信协议实现数据交互,最终服务于各类智能化应用。 核心功能模块分…...
wx213基于php+vue+uniapp的新闻资讯小程序
开发语言:PHP框架:phpuniapp数据库:mysql 5.7(一定要5.7版本)数据库工具:Navicat11开发软件:PhpStorm 系统展示 管理员登录界面 管理员功能界面 新闻类别管理 新闻信息管理 用户管理 管理员管…...
SOEM编译Ubuntu 22.04
下载SOEM源码 $ git clone https://github.com/OpenEtherCATsociety/SOEM.git编译源码 进入SOEM源码目录 $ mkdir build && cd build $ cmake .. $ make测试 eth1 位网卡名 $ cd test/linux/slaveinfo/ $ sudo ./slaveinfo eth1SOEM (Simple Open EtherCAT Master) …...
栈和队列(Stack和Queue)
栈和队列(Stack和Queue) 1:栈的概念 示意图: 2:创建一个类Stack,给定一个整形数组elem,数组已使用长度usedSize,默认长度default_size为10,再给定一个构造方法࿰…...
Django的定制以及admin
Django是一个全面的Python Web开发框架,具有丰富的功能,和众多开箱即用的接口。 简单使用 我们使用Django的django-admin工具创建项目: django-admin startproject project1 cd project1 django-admin startapp app1以后,一个简…...
LLM架构解析:编码器-解码器架构(Encoder-Decoder Architecture)(第四部分)—— 从基础原理到实践应用的深度探索
本专栏深入探究从循环神经网络(RNN)到Transformer等自然语言处理(NLP)模型的架构,以及基于这些模型构建的应用程序。 本系列文章内容: NLP自然语言处理基础词嵌入(Word Embeddings)…...
Unity VideoPlayer 播放无声音
增加一个videoPlayer下挂,audiorSource脚本 this.videoPlayer.EnableAudioTrack(0, true); this.videoPlayer.audioOutputMode VideoAudioOutputMode.AudioSource; this.videoPlayer.SetTargetAudioSource(0, this.videoPlayer.GetComponent<AudioSource>()…...
【Kafka基础】监控与维护:动态配置管理,灵活调整集群行为
1 基础配置操作 1.1 修改主题保留时间 /export/home/kafka_zk/kafka_2.13-2.7.1/bin/kafka-configs.sh --alter \--bootstrap-server 192.168.10.33:9092 \--entity-type topics \--entity-name yourtopic \--add-config retention.ms86400000 参数说明: retention…...
AutoGen深度解析:从核心架构到多智能体协作的完整指南
AutoGen是微软推出的一个革命性多智能体(Multi-Agent)框架,它通过模块化设计和灵活的对话机制,极大地简化了基于大型语言模型(LLM)的智能体系统开发。本文将深入剖析AutoGen的两个核心模块——core基础架构和agentchat多智能体对话系统,带您全…...
接口请求控制工具
接口请求控制工具 功能说明代理转发安全控制访问控制错误处理配置管理日志管理 技术栈快速开始环境要求配置说明启动服务 工具源码 功能说明 代理转发 支持多路由配置支持静态资源代理灵活的路由规则配置支持请求转发和响应处理支持负载均衡 支持多目标服务器配置提供多种负载…...
Git 实践笔记
这里写自定义目录标题 一、将当前改动追加到某次commit上二、git 强制修改分支位置 一、将当前改动追加到某次commit上 stash工作区中的当前改动 git stash假设需要修改的commit是 f744c32,将HEAD移动到需要改动的commit的父提交上 git rebase f744c32^ --interact…...
记一个Unity中Humanoid中骨骼与武器脱离的问题
在Untiy中,有时人物的Humanoid的骨骼对应上了,但是套用动画的时候武器等节点有时会脱离,这是因为Humanoid只包含了人物骨骼,不包括其他额外的骨骼,因此如果想要武器节点也跟随,需要在Humanoid中也绑定骨骼设…...
Python asyncio
一些Pre关键概念 asyncio 本质上还是单进程单线程的Python程序; 建立event_loop 概念,上面event_loop 可以理解为大脑,下面是若干个可执行的Task; Task 没有控制权,没有办法控制event_loop 执行某个Task,只…...
【前端分享】JavaScript异步编程详解!
JavaScript 的异步编程是其核心特性之一,主要用于处理非阻塞操作(如网络请求、文件读写、定时任务等)。由于 JavaScript 是单线程的,异步机制可以避免代码阻塞,提高性能和用户体验。以下是 JavaScript 异步编程的核心概…...
深度学习基础--CNN经典网络之InceptionV1研究与复现(pytorch)
🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊 前言 InceptionV1是提出并行卷积结构,是CNN的经典网络之一;本次任务是探究InceptionV1结构并进行复现实验;欢迎收藏 关注…...
用 Vue 3 + D3.js 实现动态数据流图
文章目录 一、项目背景与功能概览二、项目准备与依赖安装2.1 安装 Vue 3 项目2.2 安装 D3.js2.3 项目结构 三、实现动态数据流图3.1 创建 DataFlowChart 组件3.2 动态更新数据流3.2.1 动态更新边和节点位置3.2.2 动画效果 四、节点拖拽与编辑功能实现4.1 添加节点拖拽功能4.2 编…...
46、Spring Boot 详细讲义(三)
五、Spring Boot 与 Web 开发 1. 简介 Spring Boot 是基于 Spring Framework 开发的一个框架,旨在简化配置,快速构建应用。它内嵌 Tomcat 等 servlet 容器,支持 RESTful API 开发,处理静态资源,以及集成视图层技术如 Thymeleaf 和 Freemarker。 2. Spring MVC 集成 Sp…...
热门面试题第15天|最大二叉树 合并二叉树 验证二叉搜索树 二叉搜索树中的搜索
654.最大二叉树 力扣题目地址(opens new window) 给定一个不含重复元素的整数数组。一个以此数组构建的最大二叉树定义如下: 二叉树的根是数组中的最大元素。左子树是通过数组中最大值左边部分构造出的最大二叉树。右子树是通过数组中最大值右边部分构造出的最大…...
为了避免unboundLocalError和为什么X的值一直不变呢?
## 1.为了避免unboundLocalError 发生unboundLocalError! def generate_integer(level):if level 1:X randint(1,9)return X这里出错的原因在于,一旦if 后面的条件没有成立,然后X根本没出生,然后你去使用它,这是有…...
Express中间件(Middleware)详解:从零开始掌握(1)
1. 中间件是什么? 想象中间件就像一个"加工流水线",请求(Request)从进入服务器到返回响应(Response)的过程中,会经过一个个"工作站"进行处理。 简单定义:中间件是能够访问请求对象(req)、响应对象(res)和下…...
Linux升级gcc版本
目录 1.安装 scl 工具集 2.安装新版本gcc 3.启用新版本 gcc 4.将启动新版本gcc指令写入配置文件 本文主要讲述如何去升级 linux 操作系统下的 gcc 编译器版本。 1.安装 scl 工具集 sudo yum install centos-release-scl scl-utils-build 由于作者已经安装过,…...
【概念】什么是UI(User interface)什么是UX(User experience)?
1. 软件生命周期管理 (Software Life Cycle Management) 解释: 中文: 软件生命周期管理是指从软件规划、设计、开发、测试、部署到后续维护甚至退役的整个过程。English: Software Life Cycle Management refers to the systematic process of plannin…...
【GIT】git pull --rebase 功能解析
1. git pull 命令基础 git pull 是一个常用的 Git 命令,用于从远程仓库获取最新的更改,并尝试将这些更改合并到当前分支中。这通常涉及两个步骤:首先,git fetch 命令从远程仓库下载最新的更改;然后,git me…...
难度偏低,25西电人工智能学院821、833、834考研录取情况
1、人工智能学院各个方向 2、人工智能学院近三年复试分数线对比 学长、学姐分析 由表可看出: 1、智能院25年院线相对于24年院线 全部专业下降比较多,其中控制科学与工程下降20分,计算机科学与技术下降20分,计算机技术[专硕]下降…...
L2-051 满树的遍历
L2-051 满树的遍历 - 团体程序设计天梯赛-练习集 (pintia.cn) 题解 数据结构选择 为了表示树的结构,我们可以使用邻接表。邻接表是一种常用的图和树的表示方法,它能够高效地存储每个节点的子节点信息。在本题中,我们可以使用一个数组 g&am…...
2025年电子电气与新材料国际学术会议
重要信息 官网:www.iceenm.org(点击了解详情) 时间:2025年4月25-27日 地点:中国-杭州 部分介绍 征稿主题 电子电气 新材料 电力电子器件和系统设计 可再生能源与电网集成技术 下一代半导体…...
数字人:打破次元壁,从娱乐舞台迈向教育新课堂(4/10)
摘要:数字人正从娱乐领域的璀璨明星跨界到教育领域的智慧导师,展现出无限潜力。从虚拟偶像、影视游戏到直播短视频,数字人在娱乐产业中大放异彩,创造巨大商业价值。在教育领域,数字人助力个性化学习、互动课堂和虚拟实…...
【Hyperlane 】轻松实现大文件分块上传!
【Hyperlane 】轻松实现大文件分块上传! 痛点直击:大文件上传不再是难题 在云存储、音视频处理、文件协作等场景中,大文件上传常面临中断重试成本高、内存占用大、网络不稳定等挑战。传统方案要么复杂笨重,要么性能瓶颈明显。 现…...