JSP入门基础

JSP入门基础

软件开发环境这门课程的复习资料

Web开发技术概述

URL的组成部分

协议、主机DNS名或IP地址和文件名

Tomcat服务器

Tomcat服务器的默认端口号是8080

概念

软件开发环境是围绕着软件开发的一定目标而组织在一起的一组相关软件工具的有机集合

JSP和HTML的区别

  • HTML页面是静态页面,也就是事先由用户写好放在服务器上,固定内容,不会变,由web服务器向客户端发送,平时上网看的网页都是大部分都是基于html语言的。
  • JSP页面是有JSP容器执行该页面的Java代码部分然后实时生成动态页面,可动态更新页面上的内容。

HTML部分

当前版本的HTML不区分大小写

标题标记
<title>标题</title>

标记之间的内容将显示到浏览器的标题上

<.meta>辅助性标记

下面的语句的功能是设置HTML文档的编码格式

<meta charset="utf-8">
超链接标记
<a href="URL">链接文本或图像</a>

在新窗口打开超链接

<a href="url" target="_blank">
<.input>输入标记

正确产生复选框:

<input type="checkbox">

把表单数据发送到服务器

<input type="submit">
常用属性

name:控制标识

<.img>图像标记

src:必选项,指定图像文件的url。

标题标记

下面语句的功能是以二级标题显示“图书信息列表”

<h2>图书馆信息列表</h2>
表格标记

下面语句的功能是创建表格,边框等于一个像素

<table border="1">

1.<.table>标记用于建立表格

2.<.table>与<./table>之间为表格标题、表头及单元格的内容

border属性:表格边框宽度,以像素为单位

3.<.caption>与<./caption>:定义表格标题

4.<.tr>与<./tr>:定义表格中的一行

5.<.td>与<./td>:定义单元格内容

表单标记

格式

<form method="post/get" action="URL" enctype="application/x-www-form-urlencoded"></form>

其常用属性如下。

action:完成表单信息处理任务程序的完整URL

method:表单中输入数据的传输方法,默认值为get

enctype:指定表单中输入数据的编码方法

列表框

1.<.select>标记

定义下拉式列表框和滚动式列表框,其常用属性如下。

name:列表框名字

size:列表框大小

multiple:允许用户进行多项选择

2.<.option>标记

<.select>标记所定义的列表框中的各个选项,其常用属性如下

selectd:表示该项预先选定

value:指定控件的初始值

页面修饰标签
<p>

分段标记:表示新一段开始,段落间有一空行。

<br>

换行标记:另起一行,中间不插入空行。

<hr>

水平线标记:在页面上画出一条水平线

<pre>....</pre>

预格式标记:使HTML文档中的空格、Tab符、回车、换行符起作用

<font>...</font>

字体标签:标记中默认的中文字体是宋体

<B>字体</B>

粗体

<l>字体</l>

斜体

考试题程序
<!DOCTYPE html>
<html><head><meta charset="utf-8"></head><body><h2>图书信息列表</h2><table border="1"><tr><td>书名</td><td>出版时间</td><td>作者</td></tr><tr><td>软件开发环境</td><td>2022-12-08</td><td>小王</td></tr><tr><td>Java程序设计</td><td>2021-08-06</td><td>小李</td></tr></table></body>
</html>

在这里插入图片描述

动态网页和静态网页的区别

静态网页服务器端返回的HTMl文件是事先存储好的,且静态网页文件里只有HTML标记,没有程序代码

动态网页服务器端返回的HTML文件是程序生成的

CSS部分

定义样式
body{color:black}
1)内联式样式表
2)嵌入式样式表
3)外部样式表

在HTML文档的文件头中加入语句,可建立与外部样式文件的链接。即放置在。

Internet主要技术

DNS域名解析系统

DNS(域名解析系统)在因特网上作为域名IP地址相互映射的一个分布式数据库。

应用层协议

在字符串“http://www.sample.com:8080/login.html”中使用的访问协议是http

Web工作原理描述

1.HTTP协议用于在服务器和浏览器之间传送网页数据。

2.浏览器负责网页数据的请求和显示。

3.服务器负责浏览器的请求

软件开发模式

浏览器/服务器(B/S)模式

优点

1.用户可以在任何地点使用系统,方便、快捷、高效

2.用户可以跨平台以相同的浏览器界面访问系统

3.客户端只需要安装浏览器,升级维护简单

缺点

1.应用服务器运行数据负荷高

2.出现服务器崩溃问题则后果严重

JSP简介

JSP运行必须需要的:操作系统,JavaJDK,支持JSP的Web服务器

JSP运行原理

当服务器上的一个JSP页面被第一次请求执行时,服务器上的JSP引擎首先将JSP页面文件转译成一个Java文件,并编译这个Java文件生成字节码文件(class文件),然后字节码文件响应客户的请求。

多个用户请求一个JSP页面

当多个用户请求一个JSP页面时,Tomcat服务器为每个客户启动一个线程,该线程负责执行常驻内存的字节码文件来响应相应客户的请求。

概念

安装Tomcat服务器,首先要安装JDK,并需要设置JAVA_HOME环境变量

JSP基本语法

JSP注释

1.HTML注释格式:

<!-- 注释内容 -->

2.JSP注释格式:

<% --注释内容-- %>

JSP注释写在JSP程序中,但不发送给客户,即为隐藏型注释

3.Scriptlets的注释

由于Scriptlets包含的是Java代码,所以Java中的注释规则在Scriptlets中也适用,常用Java注释使用//表示单行注释,使用//表示多行注释

字节码文件

字节码文件的任务如下:

1.JSP页面中普通的HTML标记符号,交给客户的浏览器执行显示

2.JSP标记、变量和方法声明、Java程序片段由Tomcat服务器负责执行,将需要显示的结果发送给客户的浏览器

3.Java表达式由Tomcat服务器负责计算,将结果转换为字符串,交给客户的浏览器。

执行字节码文件的结果是发送一个HTML页面到客户端

JSP的编译指令标记

JSP的编译指令标记通常是指page指令、include指令和taglib指令

声明

<%!预定义%>

“<%!”和“%>”之间声明的变量在整个JSP界面内都有效,与“<%!” “%>”标记在JSP页面中所在的书写位置无关。

一次可声明多个变量和方法,只要以“;”结尾就行

一个声明仅在一个页面有效

在预定义中声明的变量将在JSP页面初始化时初始化

page指令标记

<%@page%>作用于整个JSP页面

可以在一个页面中使用多个<%@page%>指令

page标记

page指令与书写的位置无关,习惯上把page指令写在JSP页面的最前面

可以用一个page指令指定多个属性值,也可以使用多个page指令分别为每一个属性指定值

Java程序片段

在“<%”和“%>”之间插入Java程序片段

Java表达式

在“<%=”和“%>”之间插入一个表达式,这个表示必须能求值。表达式的值由服务器负责计算,并将计算结果用字符串形式发送到客户端显示。

其中需要注意“<%=”是一个完整的符号,“<%”和“=”之间不要有空格

变量和方法的声明

在“<%!”和“%>”标记符之间声明变量,变量的类型可以是Java语言允许的任何数据结构类型,这些变量称为JSP页面的成员变量。

“<%!”和“%>”之间声明的变量在整个JSP页面内部都有效,与“<%!” “%>”标记符在JSP页面所在的书写位置无关。

当多个用户同时请求一个JSP页面时,JSP引擎为每个用户启动一个线程,这些线程由JSP引擎来管理。这些线程共享JSP页面的成员变量,因此任何一个用户对JSP页面成员变量操作的结果,都会影响到其他用户。

JSP的基本组成

JSP以HTML为基础,将处理动态页面的部分嵌入到HTML标记中间,嵌入的部分以“<%”开始,以“%>”结束。

JSP页面元素

普通HTML标记(客户端浏览器执行)、JSP标记、成员变量和方法声明、Java脚本程序、JSP表达式、Java表达式(JSP引擎处理并将)

JSP中可以包含注释,它们是为了对程序进行必要的说明。

synchronized关键字

synchronized关键字保证一次只有一个线程执行

指令标记

page指令标记
include指令标记

include指令的作用是在JSP页面出现该指令的位置处静态插入一个文件,实现代码的复用,必须保证插入后形成的文件是一个完整的JSP文件

动作标记

1.include动作标记

2.param动作标记

param标记不能独立使用,需作为jsp:include、jsp:forward、jsp:plugin标记的子标记来使用,并为它们提供参数

3.forward动作标记

4.useBean动作标记

5.setProperty动作标记

6.getProperty动作标记

JSP内置对象

内置对象作用域从小到大是:request、session、application

JSP内置对象是指不用声明就可以在JSP页面的脚本部分使用对象。

response

在某些情况下,当响应用户时,需要将用户重新引导至另一个页面,可以使用response的sendRedirect()的方法实现重定向。

HTTP头

在HTTP响应消息中,第一行为响应状态行,紧接着的是若干响应消息头,服务器端通过响应消息头向客户端传递附件信息

状态行代码为404表示用户资源不可用

一个典型的HTTP请求消息包括请求行、多个请求头和信息体

方法

1)取得请求参数的方法getParameter()

2)取得请求HTTP头的方法getCookies()getHeader()

3)存储和取得属性的方法getAttribute()setAttribute()

4)用于获得主机名、主机端口号等的其他方法

request

request对象可以得到请求中的参数

通过getParameter()方法获取radio(单选按钮)

通过getParameterValues()获取checkbox(复选框)的值

处理中文乱码
request.setCharacterEncodingg("UTF-8")
如果getParameter()的参数不存在将返回什么

用request.getParameter(“parameter_name“) 来取得参数时,如果不存在 parameter_name 这个参数,request.getParameter ()将返回 null

session

session对象驻留在服务器端,该对象调用某些方法保存用户在访问某个Web服务目录期间的有关数据

session对象可以保存用户信息

session对象提供了访问和放置页面中共享数据的方式

application

服务器启动后,新建一个对应Web服务目录的application对象,一直保持到服务器关闭。所以application的生命对象比session的生命周期长。

application对象可以被多个客户端共享(注意,不是应用,应用是服务器端)

out

JSP和JavaBean

使用getProperty或者setProperty动作标记之前,必须使用useBean动作标记获得相应的Bean

Bean是通过JSP动作标记——useBean加载成功,格式如下:

<jsp:useBean>

JavaBean的类必须是具体的、公开的,并且具有无参数构造器

JavaBean的属性要通过公共方法进行访问(即类中声明的方法的访问属性都必须是public的)

JavaBean属性和表单控件名称能很好地耦合,得到表单提交的数据

编写JavaBean

类中必须提供获取和修改方法用来获取或修改成员变量XXX的属性。

getXxx()用来获取属性xxx

setXxx()用来修改属性xxx,属性名首字母必须大写

Bean的生命周期

使用JSP动作标记useBean来加载使用Bean。useBean中的scope给出了Bean的生命周期,即scope取值决定了JSP引擎分配给用户的存活时间。

scope可以有四种取值,分别是page、request、session、application

获取和修改Bean的属性

getProperty动作标记

使用getProperty动作标记可以获得Bean的属性值,并将这个值用串的形式发送给用户的浏览器。使用getProperty动作标记之前,必须使用useBean动作标记获得相应的Bean。

getProperty动作标记的格式如下:

<jsp:getProperty name="Bean的名字"propertu="Bean的属性"/>
setProperty动作标记

通过HTTP表单的参数的值来设置Bean的响应属性的值

property=“*

<jsp:setProperty="Bean的名字"property="*"/>

Servlet

在JSP应用开发中,Servlet程序可以在web.xml文件中配置

用于保持会话的技术:

1.Cookie

2.HTTPsession

3.HTML隐藏表单域

Servlet获得初始化参数的对象是:Servlet Config

基本功能

1.获取客户端HTML的FORM表单提交的数据和URL后面的参数信息

2.创建和客户端响应消息内容

3.访问服务器端的文件系统

4.连接数据库并开发基于数据库的应用

5.调用其他Java类

工作原理

Servlet存在于Web服务器中,并且由Servlet引擎负责分配和管理,在Servlet的声明周期中,由init、service和destroy三个方法构成。整个生命周期中Servlet只被初始化一次,destroy一次,但service()方法可能被调用多次

Servlet引擎访问Servlet

第一次访问的时候,Servlet引擎首先创建Servlet实例,然后调用Servlet的init()函数初始化Servlet,再调用Servlet的service()函数响应用户请求。

之后的访问Servlet的时候Servlet引擎会自动检测Servlet是否已经存在,如果存在就直接调用service()函数响应用户请求,不用再实例化和初始化Servlet。

翻译

Tomcat在将JSP页面翻译成Servlet程序时,会忽略JSP注释的内容,不会将JSP注释发送到客户端

主要作用

Servlet文件在Java Web开发中的主要作用是作为控制器

创建Servlet对象的类

当Tomcat初始化一个Servlet时,会将该Servlet的配置信息封装到一个ServletConfig对象

共享变量

当多个客户请求一个Servlet时,服务器为每个客户启动一个线程

Web.xml文件规则

匹配规则:同一个Servlet指定多个不同的URL,四种不同的URL形式匹配如下:

优先级URL形式关联类型
1/开始/字符串结束精确匹配关系
2/开始/**结束按纯目录形式关联
3*.jsp形式按具体文件类型关联
4单个/缺省Servlet

运行Servlet

在运行Servlet文件的过程可能会遇到中文乱码的问题,需要在运行Servlet文件之前在指定的Servlet类文件中设置编码格式。

针对response请求的中文乱码或者是浏览器显示内容的乱码可以按照下面的设置方式设置编码格式和请求头文件的编码格式。

response.setHeader("content-type","text/html;charset=UTF-8");
response.setCharacterEncoding("UTF-8");

请求转发

通过请求转发来实现目标资源的访问是服务器内部的行为,对于客户端来说是一次请求的过程

请求转发和重定向对的方式

实现请求转发的方式如下:

1.得到RequestDispatcher对象:

RequestDispatcher dispatcher=request.getRequestDispatcher("a.jsp");

2.转发

dispatcher.forward(request,response);

实现重定向的方式如下:

response.sendRedirect("a.jsp");

RequestDispatcher.forwad()方法只能在同一个Web应用程序内的资源之间转发请求。

sendRedirect()方法还可以重定向到同一个站点上的其他应用程序中的资源,甚至是使用绝对的URL重定向到其他站点的资源。

请求转发和重定向的不同

1.资源使用范围不同

请求转发:同一服务器中的资源

重定向:任意服务器资源

2.请求响应的次数不一样

请求转发:一次请求

重定向:两次请求

3.地址栏

请求转发:URL地址栏不变

重定向:URL地址栏变化

4.请求响应对象

请求转发:两个Servlet实例共用请求响应对象

重定向:需要创建两次请求与响应对象

MVC模式

模型 Model:用于存储数据的对象

视图 View:向控制器提交所需数据以及显示模型中的数据

控制器 Controller:进行具体的业务逻辑操作

MVC模式工作原理

1.用户发出请求

2.View视图接受用户请求

3.Controller控制器处理用户请求

4.Model模型存储处理好的数据

5.View视图显示模型的数据

6.用户获得响应

基于JSP的MVC模式

1)基于JSP的Web开发中,JSP、Servlet、JavaBean就是通过MVC有机结合到了一起

2)JSP作为视图(View),负责提供页面为用户展示数据

3)Servlet作为控制器(Controller),用来接受用户提交的请求,进行数据处理

4)JavaBean作为模型(Model),用来存储用户提交的数据以及数据处理的结果

在JSP中使用数据库

JSP使用JDBC提供的API和数据库进行交换信息。使用JDBC的应用程序一旦和数据库建立连接,就可以使用JDBC提供的API操作数据库

当查询ResultSet对象中的数据时,不可以关闭和数据库的连接。

使用PreparedStatement对象可以提高操作数据库的效率

数据库类型

1.关系型数据库

2.树型数据库

3.网状数据库

4.对象数据库

在JDBC语句访问数据库,正确导入SQL类库的语句是:

<%@page import="java.sql.*">

在对SQL进行预处理时可以使用通配符“?”来代替字段值

数据库管理系统

DBMS是(Data Base Management System)的缩写,是管理数据库软件的集合。

DBMS包含面向用户接口功能和面向系统维护功能。

1.面向用户接口功能是提供用户访问数据库的一些必要手段

2.面向系统维护功能是为数据库管理者提供数据库的维护工具

加载JDBC-数据库驱动程序

用Java语言编写的数据库驱动程序称为JDBC数据库驱动程序。

使用JDBC-数据库驱动方式和数据库建立连接需要经过两个步骤:

1.加载JDBC-数据库驱动程序

2.指定的数据库建立连接

驱动数据库

使用纯Java数据库驱动加载MySQL驱动程序代码如下:

Class.forName("com.mysql.jdbc.Driver");

建立起一个JDBC-ODBC桥接器“

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver")

结果集与查询

让连接对象con调用方法createStatement()创建执行SQL语句的Statement对象:

Statement sql=con.createStatement()

sql对象就可以调用相应的方法,实现对数据库中表的查询和修改,并将查询结果存放在一个ResultSet类声明的对象中:

Result rs=sql.execute("SELECT*FROM product");

预处理语句

对于JDBC,如果使用Connection和某个数据库建立连接对象con,那么con就可以调用prepareSatement(String sql)方法,方法对参数sql指定的SQL语句进行预编译处理,生成该数据库底层的内部命令,并将该命令封装子啊PreparedStatement对象中。

PreparedStatement pre=prepareStatement(String sql)

预处理语句设置通配符“?”的值的常用方法有:

void setDate(int parameterIndex,Date x)
void setDouble(int parameterIndex,double x) void setFloat(int parameterIndex,float x)   

事务

事务是保证数据库中数据完整性与一致性的重要机制。

1.连接对象使用setAutoCommit(boolean autoCommit)方法,将参数autoCommit取值为false来关闭自动提交模式:

con.setAutoCommit(false)

2.commit()方法

con调用commit()方法就是让事务中的SQL语句全部生效

3.rollback()方法

只要事务中任何一个SQL语句没有生效,就抛出SQLException异常。在处理SQLException异常时,必须让con调用rollback()方法。

关闭数据库

关闭数据库操作的顺序与打开数据库操作的顺序相反

1.先关闭结果集(ResulrSet)

2.再关闭操作(Statement)

3.最后关闭连接(Connection)

数据接口操作实例

try {// 加载MySQL数据库驱动程序Class.forName("com.mysql.cj.jdbc.Driver");
} catch (Exception e) {// 打印加载驱动程序过程中的异常信息e.printStackTrace();
}// MySQL数据库连接URL,指定本地主机地址、端口和数据库时区及字符编码
String url = "jdbc:mysql://127.0.0.1:3306/BookStore?serverTimezone=Asia/Shanghai&characterEncoding=utf8";// 准备SQL语句,向BookInfo表插入书籍信息
String sql = "insert into BookInfo(bookName, publisher, author) values(?, ?, ?)";try (// 获取数据库连接对象,使用完毕后自动关闭连接Connection conn = DriverManager.getConnection(url, "root", "lj123$%^");// 创建PreparedStatement对象,用于执行带参数的SQL语句PreparedStatement ps = conn.prepareStatement(sql)
) {// 设置SQL语句中的参数值ps.setString(1, book.getBookName());ps.setString(2, book.getPublisher());ps.setString(3, book.getAuthor());// 执行更新操作并获取影响的行数int ret = ps.executeUpdate();
} catch (Exception e) {// 捕获执行SQL操作过程中的异常,并打印异常信息e.printStackTrace();
}

JSP文件操作

File类的创建

创建File类,指向当前路径下bookstory.xml

File inputFile=new File("bookstroy.xml");

字节流

字节输入流:InputStream

字节输出流:OutputStream

在JSP中使用XML

XML文件是由标记构成的文本文件。标记的名称可以由字母、数字、下划线“_”、点号“.”或连字符“-”组成,但必须以字母或下划线开头,而且标记名称区分大小写,例如:Graren与Graren是完全不同的标记。

XML

空元素

XML空元没有内容,可以有属性

数据结构

XML采用树状结构

XML实例

<servlet><!-- 定义一个名为 AddBook 的Servlet --><servlet-name>AddBook</servlet-name><!-- 指定 Servlet 类的完整路径 --><servlet-class>lj.test.AddBookServlet</servlet-class>
</servlet>
<servlet-mapping><!-- 将 Servlet 名称 AddBook 映射到 URL 模式 /addBook --><servlet-name>AddBook</servlet-name><!-- 定义 Servlet 的 URL 映射模式 --><url-pattern>/addBook</url-pattern>
</servlet-mapping>

SAX

和DOM解析器不同的是,SAX解析器不在内存中建立和XML文件相对应的树形结构数据,SAX解析器的核心是事件处理机制(即SAX是事件驱动型XML解析器)。和DOM解析器相比,SAX解析器占有的内存少,对于许多应用程序,用SAX解析器来获取XML“数据效率具有较高的效率。

使用SAX解析器的基本步骤

1.使用java.xml.parsers包中的SAXParerFactory类调用其方法newInstance()实例化一个SAXParserFactory对象。

SAXParserFactory factory=SAXParserFactory.newInstance();

2.SAXParserFactory对象调用newSAXParser()方法返回一个SAXParser对象,称为SAX解析器。

SAXParser saxParser=factory.newSAXParser();

3.saxParser对象调用public void parse(File f,DefaultHandler dh)方法解析参数f指定的XML文件。

saxParser.parse(new File("tour.xml"),handler);

servlet-class>lj.test.AddBookServlet



AddBook

/addBook


### SAX和DOM解析器不同的是,SAX解析器不在内存中建立和XML文件相对应的树形结构数据,SAX解析器的核心是事件处理机制(<font color="red">即SAX是**事件驱动型XML解析器**</font>)。和DOM解析器相比,SAX解析器占有的内存少,对于许多应用程序,用SAX解析器来获取XML“数据效率具有较高的效率。#### 使用SAX解析器的基本步骤1.使用java.xml.parsers包中的SAXParerFactory类调用其方法newInstance()实例化一个SAXParserFactory对象。```java
SAXParserFactory factory=SAXParserFactory.newInstance();

2.SAXParserFactory对象调用newSAXParser()方法返回一个SAXParser对象,称为SAX解析器。

SAXParser saxParser=factory.newSAXParser();

3.saxParser对象调用public void parse(File f,DefaultHandler dh)方法解析参数f指定的XML文件。

saxParser.parse(new File("tour.xml"),handler);

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

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

相关文章

SPE连接器技术革新汽车制造业

概述 新的SPE标准在汽车制造业中的应用正日益受到重视&#xff0c;它不仅推动了汽车通信技术的革新&#xff0c;还对汽车性能测试方法产生了深远影响。本文将详细探讨SPE标准在汽车制造业中的应用案例分析&#xff0c;以及它对供应链的挑战与机遇。 SPE标准在汽车制造业中的应…

[leetcode]subarray-product-less-than-k 乘积小于K的子数组

. - 力扣&#xff08;LeetCode&#xff09; class Solution { public:int numSubarrayProductLessThanK(vector<int>& nums, int k) {if (k 0) {return 0;}int n nums.size();vector<double> logPrefix(n 1);for (int i 0; i < n; i) {logPrefix[i 1] …

揭秘!chatGPT核心技术应用

2022年11月30日&#xff0c;可能将成为一个改变人类历史的日子——美国人工智能开发机构OpenAI推出了聊天机器人ChatGPT-3.5&#xff0c;将人工智能的发展推向了一个新的高度。2023年11月7日&#xff0c;OpenAI首届开发者大会被称为“科技界的春晚”&#xff0c;吸引了全球广大…

prometheus回顾(2)--如何使用Grafana对接Prometheus数据源的详细过程,清晰易懂。

文章目录 Grafana简介什么是GrafanaGrafana 能做什么&#xff1f;什么时候我们会用到Grafana?Prometheus有图形化展示&#xff0c;为什么我们还要用Grafana? 环境操作步骤一、Grafana安装二、Grafana数据源Prometheus添加三、Grafana添加数据仪表盘补充、如何查找仪表盘 Graf…

在Linux下直接修改磁盘镜像文件的内容

背景 嵌入式Linux系统通常在调试稳定后&#xff0c;会对磁盘&#xff08;SSD、NVME、SD卡、TF卡&#xff09;做个镜像&#xff0c;通常是.img后缀的文件&#xff0c;以后组装新设备时&#xff0c;就将镜像文件烧录到新磁盘即可&#xff0c;非常简单。 这种方法有个不便之处&a…

Oracle学习笔记

Oracle 一、简介&#xff1a; 特点&#xff1a; 多用户、大事务量的事务处理 数据安全性和完整性控制 支持分布式数据处理 可以移植性 Oracle 19c 安装 登录甲骨文&#xff0c;安装Oracle 解压压缩包 安装 完毕 此处账户&#xff1a;qfedu 密码&#xff1a;wang8218.…

染色法判定二分图

什么是二分图&#xff1f; 二分图&#xff0c;也称作二部图&#xff0c;是图论中的一种特殊模型。在一个无向图G(V,E) 中&#xff0c;如果顶点集合 V 可以被分割成两个互不相交的子集 A 和 B&#xff0c;并且图中的每条边 (i,j) 关联的两个顶点 i 和 j 分别属于这两个不同的顶…

LeetCode(2)合并链表、环形链表的约瑟夫问题、链表分割

一、合并链表 . - 力扣&#xff08;LeetCode&#xff09; 题目描述&#xff1a; /*** Definition for singly-linked list.* struct ListNode {* int val;* struct ListNode *next;* };*/ typedef struct ListNode ListNode; struct ListNode* mergeTwoLists(struct …

C++入门基础篇(下)

目录 6.引用 6.1 引用的特性 6.2 const引用 7.指针和引用的关系 8.内联函数 9.nullptr 6.引用 引⽤不是新定义⼀个变量&#xff0c;⽽是给已存在变量取了⼀个别名&#xff0c;编译器不会为引⽤变量开辟内存空间&#xff0c; 它和它引⽤的变量共⽤同⼀块内存空间。比如&a…

【Vue3】使用vite创建vue项目

一、安装Nodejs 参考文章https://blog.csdn.net/DX390609/article/details/140305585?spm1001.2014.3001.5502 二、创建项目 在要创建的目录下打开命令行输入&#xff1a; npm create vuelatestvue项目创建成功&#xff1a; 三、安装vue插件 vscode打开项目文件夹&…

谷歌个人开发者账号14天封测审核通过技巧,你还不知道吗?

众所周知&#xff0c;目前在Google play应用商店上架应用已经不是那么容易了&#xff0c;谷歌各种政策的更新以及审核系统的升级&#xff0c;给开发者们带来了不少挑战。 尤其针对个人开发者账号需要20人连续14天的封测的要求&#xff0c;周期长&#xff0c;且随着政策执行力度…

31_JQuery一文读懂,JS的升级版

今日内容 零、 复习昨日 一、JQuery 零、 复习昨日 1 js数组的特点(长度,类型,方法) - js数组的长度不限 - 类型不限 - 提供很多方法2 js中和的区别 - 判断数值相等 - 判断数值和数据类型同时相等3 js表单事件的事件名(事件属性单词) - 获得焦点 onfocus - 失去焦点 onblur …

Qt开发 | Qt模型视图代理(Model-View-Delegate)

文章目录 一、Qt MVD概念讲解二、Qt模型视图代理之&#xff1a;QTableView的使用三、Qt模型视图代理之&#xff1a;QListView的使用 一、Qt MVD概念讲解 Qt MVD&#xff08;Model-View-Delegate&#xff09;是Qt框架中的一种设计模式&#xff0c;是Qt中用界面组件显示与编辑数据…

深入解析C++11:现代特性和应用

目录 一.c11.简介二.列表初始化和initializer_list1.列表初始化2.initializer_list 三.简化声明1.auto2.decltype 四.新增容器1.array2.forward_list3.unordered_map/set 五.右值引用与移动语义1.左值和右值2.左值引用3.右值引用4.移动构造和移动赋值5.万能引用和引用折叠6.完美…

git-工作场景

1. 远程分支为准 强制切换到远程分支并忽略本地未提交的修改 git fetch origin # 获取最新的远程分支信息 git reset --hard origin/feature_server_env_debug_20240604 # 强制切换到远程分支&#xff0c;并忽略本地修改 2. 切换分支 1. **查看所有分支&#xff1a;**…

mount卡住(失败)解决方案

mount -a卡主 第一步确保两边都打开了NFS服务&#xff01;&#xff01;&#xff01;&#xff01; 客户端执行mount -av 查看信息是拒绝服务 查看服务端&#xff1a;showmount -e 192.168.25.168 看提示信息处理&#xff0c;关闭两端的防火钱 遇到这个错误就是服务端不让客户端…

JAVA--SpringCloud

SpringCloud基础 为什么需要spring cloud 单体结构--Monolith 首先请回想一下我们所开发的服务是什么样子的。通常情况下&#xff0c;这个服务所对应的代码由多个项目&#xff08;模块&#xff09;所组成&#xff0c;各个项目会根据自身所提供功能的不同具有一个明确的边界。…

C++类与对象-基础篇

目录 一、什么是类 1.1 语法定义 1.2 访问限定符 1.3 类域 二、类的实例化 2.1 什么是实例化 2.2 类的大小 三、this指针 3.1 引入 3.2 this指针的使用 一、什么是类 1.1 语法定义 class 类名 {}; 说明 类似于C语言中的结构体&#xff0c;括号后分号不能丢类内成员可…

算术运算符用途解析及应用案例

文章目录 常用的算术运算符及其用途&#xff1a;运算符优先级类型转换高级用法 应用案例1. 计算器程序2. 平方根计算3. 计算平均数和标准差4. 货币兑换5. 计算几何6. 动力学模拟7. 数字图像处理8. 金融计算&#xff1a;复利计算 常用的算术运算符及其用途&#xff1a; 算术运算…

前端面试题40(浅谈MVVM双向数据绑定)

MVVM&#xff08;Model-View-ViewModel&#xff09;架构模式是一种用于简化用户界面&#xff08;UI&#xff09;开发的软件架构设计模式&#xff0c;尤其在现代前端开发中非常流行&#xff0c;例如在使用Angular、React、Vue.js等框架时。MVVM模式源于经典的MVC&#xff08;Mod…