Java Web基础面试题整理

news2024/11/26 8:48:57

1、什么是Servlet?

可以从两个方面去看Servlet:

a、API:有一个接口servlet,它是servlet规范中定义的用来处理客户端请求的程序需要实现的顶级接口。

b、组件:服务器端用来处理客户端请求的组件,需要在web.xml文件中进行配置。

2、Servlet的生命周期,并说出Servlet和CGI的区别?

servlet有良好的生存期的定义,包括加载和实例化、初始化、处理请求以及服务结束。

这个生存期由javax.servlet.servlet接口中的init、service、destroy方法表达。

web容器加载servlet,生命周期开始。通过调用servlet的init()方法进行servlet的初始化。通过调用service()方法实现根据请求的不同调用不同的do**()方法。结束服务,web容器调用servlet的destroy()方法。

区别:

Servlet处于服务器进程中,它通过多线程运行service()方法,一个实例可以服务于多个请求,并且实例一般不会被销毁;而CGI对每个请求都产生一个新的进程,服务完成后就销毁,所有效率低于Servlet

3、Servlet接口中有哪些方法?

Servlet接口定义了5个方法:

  1. void init(ServletConfig config) throws ServletException
  2. void service(ServletRequest req, ServletResponse resp) throws ServletException, java.io.IOException
  3. void destory()
  4. java.lang.String getServletInfo()
  5. ServletConfig getServletConfig()

4、get和post请求的区别?

a、get是用来从服务器上获取数据,而post是用来向服务器传递数据;

b、get将表单中数据按照variable=value的形式,添加到action所指向的URL后面,并且两者用"?"连接,变量之间用"&"连接;而post是将表单中的数据放在form的数据体中,按照变量与值对应的方式,传递到action所指定的URL。

c、get是不安全的,因为在传输过程中,数据是被放在请求的URL中;而post的所有操作对用户来说都是不可见的。

d、get传输的数据量小,这主要应为受url长度限制;而post可以传输大量的数据,所有上传文件只能用post提交。

e、get限制form表单的数据集必须为ASCII字符;而post支持整个IS01 0646字符集。

f、get是form表单的默认方法。

5、什么情况下调用doGet()和doPost()?

默认情况是调用doGet()方法,JSP页面中的Form表单的method属性设置为post的时候,调用的为doPost()方法;为get的时候,调用deGet()方法。

6、转发(Forward)和重定向(Redirect)的区别?

转发是服务器行为,重定向是客户端行为。

转发(Forword)

通过RequestDispatcher对象的forward(HttpServletRequest request,HttpServletResponse response)方法实现的。RequestDispatcher可以通过HttpServletRequest 的getRequestDispatcher()方法获得。例如下面的代码就是跳转到login_success.jsp页面。

request.getRequestDispatcher("login_success.jsp").forward(request, response);

复制

重定向(Redirect) 是利用服务器返回的状态吗来实现的。客户端浏览器请求服务器的时候,服务器会返回一个状态码。服务器通过HttpServletRequestResponse的setStatus(int status)方法设置状态码。如果服务器返回301或者302,则浏览器会到新的网址重新请求该资源。

1. 从地址栏显示来说

forward是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器。浏览器根本不知道服务器发送的内容从哪里来的,所以它的地址栏还是原来的地址。 redirect是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址,所以地址栏显示的是新的URL。

2. 从数据共享来说

forward:转发页面和转发到的页面可以共享request里面的数据. redirect:不能共享数据.

3. 从运用地方来说

forward:一般用于用户登陆的时候,根据角色转发到相应的模块. redirect:一般用于用户注销登陆时返回主页面和跳转到其它的网站等

4. 从效率来说

forward:高. redirect:低.

7、自动刷新(Refresh)

自动刷新不仅可以实现一段时间之后自动跳转到另一个页面,还可以实现一段时间之后自动刷新本页面。Servlet中通过HttpServletResponse对象设置Header属性实现自动刷新例如:

Response.setHeader("Refresh","1000;URL=http://localhost:8080/servlet/example.htm");

复制

其中1000为时间,单位为毫秒。URL指定就是要跳转的页面(如果设置自己的路径,就会实现没过一秒自动刷新本页面一次)

8、Servlet与线程安全

Servlet不是线程安全的,多线程并发的读写会导致数据不同步的问题。 解决的办法是尽量不要定义name属性,而是要把name变量分别定义在doGet()和doPost()方法内。虽然使用synchronized(name){}语句块可以解决问题,但是会造成线程的等待,不是很科学的办法。 注意:多线程的并发的读写Servlet类属性会导致数据不同步。但是如果只是并发地读取属性而不写入,则不存在数据不同步的问题。因此Servlet里的只读属性最好定义为final类型的。

9、JSP和Servlet有哪些相同点和不同点,他们之间的联系是什么?

JSP是Servlet的扩展,本质上是Servlet的简易方式,更强调应用的外表表达。JSP编译后是"类Servlet"。Servlet和JSP最主要的不同点在于,Servlet的应用逻辑是在java文件中,并且完全从表示层中的HTML里分离开来。而JSP的情况是java和HTML可以组合成一个扩展名为.jsp的文件。JSP偏重于视图,Servlet偏重于业务逻辑。

10、JSP工作原理:

JSP是一种Servlet,但是与HttpServlet的工作方式不太一样。HttpServlet是先由源代码编译为class文件后部署到服务器下,为先编译后部署。而JSP则是先部署后编译。JSP会在客户端第一次请求JSP文件时被编译为HttpJspPage类(接口Servlet的一个子类)。该类会被服务器临时存放在服务器工作目录里面。下面通过实例给大家介绍。

工程JspLoginDemo下有一个名为login.jsp的Jsp文件,把工程第一次部署到服务器上后访问这个Jsp文件,我们发现这个目录下多了下图这两个东东。 .class文件便是JSP对应的Servlet。编译完毕后再运行class文件来响应客户端请求。以后客户端访问login.jsp的时候,Tomcat将不再重新编译JSP文件,而是直接调用class文件来响应客户端请求。

由于JSP只会在客户端第一次请求的时候被编译 ,因此第一次请求JSP时会感觉比较慢,之后就会感觉快很多。如果把服务器保存的class文件删除,服务器也会重新编译JSP。

开发Web程序时经常需要修改JSP。Tomcat能够自动检测到JSP程序的改动。如果检测到JSP源代码发生了改动。Tomcat会在下次客户端请求JSP时重新编译JSP,而不需要重启Tomcat。这种自动检测功能是默认开启的,检测改动会消耗少量的时间,在部署Web应用的时候可以在web.xml中将它关掉。

11、Request对象的主要方法有哪些?

  • setAttribute(String name,Object):设置名字为name的request 的参数值
  • getAttribute(String name):返回由name指定的属性值
  • getAttributeNames():返回request 对象所有属性的名字集合,结果是一个枚举的实例
  • getCookies():返回客户端的所有 Cookie 对象,结果是一个Cookie 数组
  • getCharacterEncoding() :返回请求中的字符编码方式 = getContentLength() :返回请求的 Body的长度
  • getHeader(String name) :获得HTTP协议定义的文件头信息
  • getHeaders(String name) :返回指定名字的request Header 的所有值,结果是一个枚举的实例
  • getHeaderNames() :返回所以request Header 的名字,结果是一个枚举的实例
  • getInputStream() :返回请求的输入流,用于获得请求中的数据
  • getMethod() :获得客户端向服务器端传送数据的方法
  • getParameter(String name) :获得客户端传送给服务器端的有 name指定的参数值
  • getParameterNames() :获得客户端传送给服务器端的所有参数的名字,结果是一个枚举的实例
  • getParameterValues(String name):获得有name指定的参数的所有值
  • getProtocol():获取客户端向服务器端传送数据所依据的协议名称
  • getQueryString() :获得查询字符串
  • getRequestURI() :获取发出请求字符串的客户端地址
  • getRemoteAddr():获取客户端的 IP 地址
  • getRemoteHost() :获取客户端的名字
  • getSession([Boolean create]) :返回和请求相关 Session
  • getServerName() :获取服务器的名字
  • getServletPath():获取客户端所请求的脚本文件的路径
  • getServerPort():获取服务器的端口号
  • removeAttribute(String name):删除请求中的一个属性

12、request.getAttribute()和 request.getParameter()有何区别?

a、request.getParameter()获取的类型是String;request.getAttribute()获取的类型是Object。

b、request.getPrameter()获取的是POST/GET传递的参数值和URL中的参数;request.getAttribute()获取的是对象容器中的数据值/对象。

c、request.setAttribute()和request.getAttribute()可以发送、接收对象;request.getParamter()只能接收字符串,官方不开放request.setParamter()(也就是没有这个方法)。

setAttribute()和getAttribute()的传参原理:

setAttribute()是应用服务器把这个对象放在该页面所对应的一块内存中去,当你的页面服务器重定向到另外一个页面时,应用服务器会把这块内存拷贝到另一个页面所对应的那块内存中。这个就可以通过getAttribute()获取到相应的参数值或者对象。

13、JSP中动态include和静态include的区别?

a、静态include:语法:<%@ include file="文件名" %>,相当于复制,编辑时将对应的文件包含进来,当内容变化时,不会再一次对其编译,不易维护。

b、动态include:语法:<jsp:include page="文件名">,能够自动检查被包含文件,当客户端对JSP文件进行请求时,会重新将对应的文件包含进来,进行实时的更新。

14、JSP有哪些内置对象?作用分别是什么?

JSP一共有9个内置对象:

  1. request:负责得到客户端请求的信息,对应类型:javax.servlet.http.HttpServletRequest
  2. response:负责向客户端发出响应,对应类型:javax.servlet.http.HttpServletResponse
  3. session:负责保存同一客户端一次会话过程中的一些信息,对应类型:javax.servlet.http.httpsession
  4. out:负责管理对客户端的输出,对应类型:javax.serlvet.jsp.jspwriter
  5. application:表示整个应用环境的信息,对应类型:javax.servlet.servletcontext
  6. config:表示ServletConfig,对应类型:javax.servlet.servletconfig
  7. exception:表示页面中发生的异常,可以通过它获得页面异常信息,对应类型:java.lang.exception
  8. pagecontext:表示这个JSP页面上下文,对应类型:javax.servlet.jsp.pagecontext
  9. page:表示当前JSP页面本身。

15、JSP有哪些动作?作用分别是什么?

JSP一共有以下6中基本动作:

  1. JSP:include (当页面被请求的时候引入一个文件)
  2. JSP:forward (将请求转到另一个页面)
  3. JSP:useBean (获得JavaBean的一个实例)
  4. JSP:setProperty (设置JavaBean的属性)
  5. JSP:getProperty (获得JavaBean的属性)
  6. JSP:plugin (根据浏览器类型为Java插件生成object或者embed两种标记)

16、JSP常用指令有哪些?

page、include、taglib

a、page指令:定义页面的一些属性。

常用属性:

contentType="text/html;charset=utf-8"; 向浏览器端输出数据的编码

pageEncoding="utf-8"; JSP编译成java文件时所用的编码

session="true" 是否自动创建session

b、include指令:引入一个静态的JSP页面

c、taglib指令:引入一个标签库

17、讲解JSP中的四种作用域

JSP中的四种作用域包括page、request、session和application,具体来说:

a、page是代表一个页面相关的对象和属性。一个页面由一个编译好的java servlet类(可以带有include指令,但不可以带有include动作)表示。这既包括servlet又包括编译成servlet的jsp页面。

b、request是代表与web客户机发出的一个请求相关的对象和属性。一个请求可能跨越多个页面,涉及多个web组件(由于forware指令和include动作的关系)

c、session是代表与用于某个web客户机的一个用户体验相关的对象和属性。一个web回话也可以经常跨域多个客户机请求。

d、application是代表与整个web应用程序相关的对象和属性。这实质上是跨域整个web应用程序,包括多个页面、请求和回话的一个全局作用域。

18、如何实现JSP或Servlet的单线程模式?

在JSP中使用page指令进行设置,具体代码如下:

<%@page isThreadSafe="false"%>

复制

对于Servlet,可以让自定义的Servlet实现SingleThreadModel标识接口。

说明:如果将JSP或Servlet设置成单线程工作模式,会导致每个请求创建一个Servlet实例,这种实践将导致严重的性能问题(服务器的内存压力很大,还会导致频繁的垃圾回收),所以通常情况下并不会这么做。

19、JSP乱码如何解决?

a、JSP页面乱码:<%@page contentType="text/html;charset=utf-8" %>

b、表单提交时出现乱码:request.setCharacterEncoding("utf-8");

c、数据库出现乱码:jdbc:mysql://localhost:3306:/user?useSSL=false&useUnicode=true&characterEncoding=utf-8;

其实我一般的处理的方法就是配置一个过滤器对每个JSP页面进行字符集处理。

20、实现会话跟踪的技术有哪些?

1. 使用Cookie

向客户端发送Cookie

Cookie c =new Cookie("name","value"); //创建Cookie 
c.setMaxAge(60*60*24); //设置最大时效,此处设置的最大时效为一天
response.addCookie(c); //把Cookie放入到HTTP响应中

复制

从客户端读取Cookie

String name ="name"; 
Cookie[]cookies =request.getCookies(); 
if(cookies !=null){ 
   for(int i= 0;i<cookies.length;i++){ 
    Cookie cookie =cookies[i]; 
    if(name.equals(cookis.getName())) 
    //something is here. 
    //you can get the value 
    cookie.getValue(); 
       
   }
 }

复制

优点: 数据可以持久保存,不需要服务器资源,简单,基于文本的Key-Value

缺点: 大小受到限制,用户可以禁用Cookie功能,由于保存在本地,有一定的安全风险。

2. URL 重写

在URL中添加用户会话的信息作为请求的参数,或者将唯一的会话ID添加到URL结尾以标识一个会话。

优点: 在Cookie被禁用的时候依然可以使用

缺点: 必须对网站的URL进行编码,所有页面必须动态生成,不能用预先记录下来的URL进行访问。

3. 隐藏的表单域

<input type="hidden" name ="session" value="..."/>

复制

优点: Cookie被禁时可以使用

缺点: 所有页面必须是表单提交之后的结果。

4. HttpSession

在所有会话跟踪技术中,HttpSession对象是最强大也是功能最多的。当一个用户第一次访问某个网站时会自动创建 HttpSession,每个用户可以访问他自己的HttpSession。可以通过HttpServletRequest对象的getSession方 法获得HttpSession,通过HttpSession的setAttribute方法可以将一个值放在HttpSession中,通过调用 HttpSession对象的getAttribute方法,同时传入属性名就可以获取保存在HttpSession中的对象。与上面三种方式不同的 是,HttpSession放在服务器的内存中,因此不要将过大的对象放在里面,即使目前的Servlet容器可以在内存将满时将HttpSession 中的对象移到其他存储设备中,但是这样势必影响性能。添加到HttpSession中的值可以是任意Java对象,这个对象最好实现了 Serializable接口,这样Servlet容器在必要的时候可以将其序列化到文件中,否则在序列化时就会出现异常。

21、Cookie和Session的的区别?

  1. 由于HTTP协议是无状态的协议,所以服务端需要记录用户的状态时,就需要用某种机制来识具体的用户,这个机制就是Session.典型的场景比如购物车,当你点击下单按钮时,由于HTTP协议无状态,所以并不知道是哪个用户操作的,所以服务端要为特定的用户创建了特定的Session,用用于标识这个用户,并且跟踪用户,这样才知道购物车里面有几本书。这个Session是保存在服务端的,有一个唯一标识。在服务端保存Session的方法很多,内存、数据库、文件都有。集群的时候也要考虑Session的转移,在大型的网站,一般会有专门的Session服务器集群,用来保存用户会话,这个时候 Session 信息都是放在内存的,使用一些缓存服务比如Memcached之类的来放 Session。
  2. 思考一下服务端如何识别特定的客户?这个时候Cookie就登场了。每次HTTP请求的时候,客户端都会发送相应的Cookie信息到服务端。实际上大多数的应用都是用 Cookie 来实现Session跟踪的,第一次创建Session的时候,服务端会在HTTP协议中告诉客户端,需要在 Cookie 里面记录一个Session ID,以后每次请求把这个会话ID发送到服务器,我就知道你是谁了。有人问,如果客户端的浏览器禁用了 Cookie 怎么办?一般这种情况下,会使用一种叫做URL重写的技术来进行会话跟踪,即每次HTTP交互,URL后面都会被附加上一个诸如 sid=xxxxx 这样的参数,服务端据此来识别用户。
  3. Cookie其实还可以用在一些方便用户的场景下,设想你某次登陆过一个网站,下次登录的时候不想再次输入账号了,怎么办?这个信息可以写到Cookie里面,访问网站的时候,网站页面的脚本可以读取这个信息,就自动帮你把用户名给填了,能够方便一下用户。这也是Cookie名称的由来,给用户的一点甜头。所以,总结一下:Session是在服务端保存的一个数据结构,用来跟踪用户的状态,这个数据可以保存在集群、数据库、文件中;Cookie是客户端保存用户信息的一种机制,用来记录用户的一些信息,也是实现Session的一种方式。

22、什么是Tomcat?

Tomcat是一种web服务器,java编写的web项目可以部署在上面,用户在客户端请求时,都是将请求发到Tomcat上,Tomcat在将请求发到对应的项目上。

23、 详细描述MVC

基于java的web应用系统采用MVC设计模型,即用Model(模型)、View(视图)和Controller(控制)分离设计,这是目前web应用服务系统的主流设置方向。

Model:处理业务逻辑的模块。

View:负责页面显示,显示Model的处理结果给用户,主要实现数据到页面的转换过程。

Controller:负责每个请求的分发,把Form数据传递给Model进行处理,处理完成后,把处理结果返回给相应的View显示给用户。

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

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

相关文章

【2023,学点儿新Java-12】小结:阶段性复习 | Java学习书籍推荐(小白该读哪类Java书籍?有一定基础后,再去读哪类书籍?)

前情回顾&#xff1a; 【2023&#xff0c;学点儿新Java-11】基础案例练习&#xff1a;输出个人基础信息、输出心形 | Java中 制表符\t 和 换行符\n 的简单练习【2023&#xff0c;学点儿新Java-10】Java17 API文档简介&获取 |详解Java核心机制&#xff1a;JVM |详解Java内存…

【FPGA入门】第六篇、异步串口通信

目录 第一部分、相关知识 1、UART和RS232的区别 2、UART与USART的区别 3、全双工&#xff1f; 4、RS232通信协议 5、波特率 6、如何将外部异步信号变为内部同步信号&#xff1f; 7、什么时间点让FPGA去采集rx线上的数据&#xff1f; 第二部分、串口通信时序图 1、…

OWASP之SSRF服务器伪造请求

文章目录 一、SSRF定义二、形成原因1.提供请求功能2.地址没做限制 三、漏洞危害1.可以对服务器所在内网、本地进行端口扫描&#xff0c;获取一些服务的信息等2.目标网站本地敏感数据的读取3.内外网主机应用程序漏洞的利用4.内外网Web站点漏洞的利用 四、ssrf挖掘1.从WEB功能上寻…

SpringBoot相关知识

SpringBoot知识 1 SpringBoot 介绍及其使用原因 Spring Boot是一个用于创建独立的、基于Java的生产级别的应用程序的框架。它旨在简化Spring应用程序的开发过程&#xff0c;减少开发人员的配置工作&#xff0c;从而提高开发效率。 原因: (1) 简化开发&#xff1a;Spring Boot…

Hadoop(HA)

文章目录 1、HA 概述2、HDFS-HA 集群搭建3、HDFS-HA 核心问题4、HDFS-HA 手动模式4.1 环境准备4.2 规划集群4.3 配置 HDFS-HA 集群4.4 启动 HDFS-HA 集群 5、HDFS-HA 自动模式5.1 HDFS-HA 自动故障转移工作机制5.2 HDFS-HA 自动故障转移的集群规划5.3 配置 HDFS-HA 自动故障转移…

java企业工程项目管理系统平台源码

工程项目管理软件&#xff08;工程项目管理系统&#xff09;对建设工程项目管理组织建设、项目策划决策、规划设计、施工建设到竣工交付、总结评估、运维运营&#xff0c;全过程、全方位的对项目进行综合管理 工程项目各模块及其功能点清单 一、系统管理 1、数据字典&#…

基于pyqt5、mysql、yolov7、chatgpt的小麦病害检测系统的设计与实现(基础版)

基于pyqt5、mysql、yolov7、chatgpt的小麦病害检测系统设计与实现 一、界面设计1.1安装pyqt51.2创建用户子窗体1.3创建管理员主窗体1.4创建管理员子窗体1.5创建系统登陆界面 二、环境搭建2.1pyqt5工具配置2.2mysql5.7安装 三、编程实现3.1初始化数据库3.2创建用户数据库sdk文件…

从零构建后端项目-配置Shiro+JWT

目录 Shiro和JWT技术 一、Shiro简介 什么是认证&#xff1f; 什么是授权&#xff1f; Shiro靠什么做认证与授权的&#xff1f; 二、JWT简介 JWT可以用在单点登录的系统中 JWT兼容更多的客户端 创建JwtUtil工具类 一、导入依赖库 二、定义密钥和过期时间 三、创…

强大的Kotlin也能搞定,测试利器MockK你不能不知道

目录 前言&#xff1a; 为什么需要MockK 关键字 Mock Kotlin的类时报错 静态方法如何Mock Jmockit MockK使用示例 普通使用 mockkObject mockkStatic mock private method Context Mock 遇到的一些小坑 最后 前言&#xff1a; MockK是一个强大且易于使用的Kotli…

爆肝整理,手机App接口测试大全指南,看这篇就够了...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 App和Web请求服务…

用prim和kruskal算法求最小生成树问题

最短网络 题目http://ybt.ssoier.cn:8088/problem_show.php?pid1350 #include<bits/stdc.h> using namespace std; const int N110; int w[N][N]; bool st[N]; int dist[N]; int n,res0; void prim() {memset(dist,0x3f,sizeof dist);dist[1]0;//初始化第一个点到自己…

优化回声消除过程:舒适噪声生成算法的应用与原理

在回声消除中&#xff0c;舒适噪声生成(Comfort Noise Generator&#xff0c;CNG)算法是一种常用的技术&#xff0c;它被用来减轻回声消除过程中产生的不适感和声音失真。舒适噪声生成算法通过添加特定的噪声信号来模拟人耳的听觉特性&#xff0c;以改善声音的自然度和舒适度。…

Cpp面试题:main函数执行以前,还会执行什么代码?

Cpp面试题:main函数执行以前&#xff0c;还会执行什么代码&#xff1f; 在 main() 函数执行之前和之后&#xff0c;C 程序可能会执行以下代码&#xff1a; 静态对象的构造函数&#xff1a;如果程序中有静态对象&#xff08;全局变量或静态成员变量&#xff09;&#xff0c;它们…

深入了解 vcruntime140 文件,从多方面解析vcruntime140

vcruntime140 是一个重要的文件&#xff0c;它在 Windows 系统中扮演着重要的角色。如果不小心缺失了&#xff0c;那么你的电脑就会出现问题&#xff0c;今天我们就来探讨一下vcruntime140这个文件&#xff0c;分别从背景和预防丢失&#xff0c;到如何修复丢失vcruntime140来给…

Elasticsearch(十)搜索---搜索匹配功能①--查询所有文档和term级别查询

一、前言 之前的学习我们已经了解了搜索的辅助功能&#xff0c;从这一章开始就是ES真正核心的功能&#xff0c;搜索。针对不同的数据类型&#xff0c;ES提供了很多搜索匹配功能&#xff1a;既有进行完全匹配的term搜索&#xff0c;也有按照范围匹配的range搜索&#xff1b;既有…

一文让你学会接口自动化测试框架!

目录 前言&#xff1a; 自动化测试 接口自动化测试的价值 接口自动化测试如何开展 接口自动化测试框架 前言&#xff1a; 接口自动化测试是指利用程序自动化地执行API接口测试&#xff0c;可以提高测试效率和准确性。 自动化测试 自动化测试&#xff0c;这几年行业内的…

一个悄然崛起的AI开源项目!

众所周知&#xff0c;最近这半年AI相关的话题实在是火到出圈。尤其是生成式AI的流行&#xff0c;让我们普通人也可以近距离地接触和应用AI。这其中最典型的就是ChatGPT。 那除了ChatGPT&#xff0c;还有一个非常实用的领域&#xff0c;也是我们今天要讨论的话题&#xff0c;那…

​低代码让传统软件开发土掉渣了

正所谓“让机器去做无聊的事情&#xff0c;让人类去创造美好的事物”。 在当今数码化时代&#xff0c;企业如何更快捷、高效的开发应用是众所周知的难题。传统开发方式需要多名开发人员耗费大量时间精力开发&#xff0c;期间还需要经历漫长的测试和上线过程。 要在这个竞争激烈…

AI绘图软件分享:Midjourney 基础教程(二)

大家好&#xff0c;我是权知星球&#xff0c;今天继续给大家介绍AI绘图软件分享&#xff1a;Midjourney 基础教程&#xff08;二&#xff09; ⼀、Midjourney 服务器介绍 1.Discord 软件介绍 Midjourney AI 绘画服务基于 Discord 软件的&#xff0c;它的绘画功能&#xff0c;…

【AUTOSAR】UDS协议的代码分析与解读(十一)----UDS例程控制31h请求下载 34h

8.15 例程控制 RoutineControl (31h) 此服务用于启动程序 、停止程序和请求程 序执行结果。例程由 两字节的例程标识符 (RoutineIdentifier)来确定。 8.15.1 报文格式 表 71 例程控制服务的请求报文 Byte Name Cvt Value (Hex) #1 RequestServiceIdentifier M 31 #2 …