JSP期末要点复习

news2024/9/23 3:27:34

一、JSP工作原理

    1.客户端请求JSP页面:用户通过浏览器发送一个请求到服务器,请求一个特定的JSP页面。这个请求被服务器上的Web容器(如Apache Tomcat)接收。
    2.JSP转换为Servlet:当JSP页面第一次被请求时,Web容器将JSP文件转换成一个Java Servlet。这个过程涉及到将JSP页面中的标记、脚本和JSP指令转换成Java代码。如果JSP页面已经被转换并编译成Servlet,且自上次修改以来没有变化,Web容器将重用已有的Servlet。
    3.编译Servlet:转换生成的Java Servlet代码被编译成字节码(.class文件)。这使得Web容器可以像处理任何其他Servlet一样来处理JSP页面。
    4.Servlet处理请求:一旦JSP页面对应的Servlet被编译,Web容器就会加载并执行该Servlet。Servlet执行过程中,会执行其中的Java代码,并且根据代码逻辑生成动态内容。这包括从数据库检索数据、执行业务逻辑等。
    5.生成响应:Servlet执行完毕后,将生成的HTML内容(可能还包括CSS、JavaScript等)作为响应返回给客户端。这个响应是通过Servlet的response对象生成的。
    6.客户端显示响应:最后,浏览器接收到从Servlet返回的响应,并渲染HTML内容,用户便可以看到生成的页面。

二、锚点链接实现

目录使用href="#xxx"
跳转目标使用id="xxx"

<!DOCTYPE html>
<html>
<head>
    <title>锚点链接示例</title>
</head>
<body>

<!-- 创建指向锚点的链接 -->
<a href="#section1">跳转到第一节</a> |
<a href="#section2">跳转到第二节</a>

<!-- 页面内容 -->
<h2 id="section1">第一节</h2>
<p>这是第一节的内容。</p>

<h2 id="section2">第二节</h2>
<p>这是第二节的内容。</p>

</body>
</html>

三、JSP注释

1.普通注释

<%   //普通注释   %>
<%   /*普通注释*/   %>

2.隐式注释

<%--  隐式注释  --%>

    普通注释用户可以通过网页源码查看到注释,而隐式注释用户不可查看。当JSP页面被转换和编译成Servlet时,这些隐式注释会被完全忽略,不会出现在生成的HTML中,客户端不可见。

四、 JSP指令元素

1.include指令

    include指令的作用是在一个页面中导入其他JSP页面。

<%@ include file="header.jsp" %>

2.page指令

    page指令用于定义有关JSP页面的各种属性。

    language:声明用于JSP页面的脚本语言。默认值为"java"。
    extends:指定JSP页面应继承的类。通常不需要用到,因为JSP页面默认继承自javax.servlet.jsp.HttpJspPage。
    import:导入JSP页面中使用的Java类或包。多个包或类之间用逗号分隔。
    session:指定JSP页面是否可以访问HTTP会话(session)。默认值为"true"。
    contentType:设置响应的MIME类型和字符编码。默认值为"text/html; charset=ISO-8859-1"。
    ......

<%@ page language="java" contentType="text/html; charset=UTF-8" import="java.util.*,java.io.*" %>

3.taglib指令

    taglib指令用于引入一些特定的标记库以简化JSP页面的开发。

<%@ taglib uri="uri" prefix="prefix" %>

     例如从JSP标准标记库的core库引入前缀为c的标记:

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

综合案例:

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ include file="header.jsp" %> <!-- include指令将header.jsp的内容包含进来 -->
<%@ page import="java.util.*, java.text.*" %> <!-- page指令用于导入Java类 -->
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <!-- taglib指令用于导入JSTL核心标签库 -->

<!DOCTYPE html>
<html>
<head>
    <title>Sample Page with Directives</title>
</head>
<body>

<!-- 使用taglib指令定义的JSTL核心标签库输出当前日期 -->
<p>The current date and time: <c:out value="${now}" /></p>

<!-- include指令包含footer.jsp -->
<%@ include file="footer.jsp" %>

</body>
</html>

五、JSP动作元素

1.<jsp:include>动作

    <jsp:include>动作允许在请求的时间内,在JSP页面中包含静态或动态的资源。

<jsp:include page="relativeURL" />

2.<jsp:forward>动作

    将一个JSP的内容传到page指定的另一个JSP中。

<jsp:forward page="relativeURL" />

3.<jsp:plugin>动作

    在JSP页面中嵌入JavaBean或脚本。

<jsp:plugin type="bean | applet"
            code="..."
            codebase="..."
            archive="..."
            width="..."
            height="..."
            align="..."
            jreversion="...">
    <jsp:params>
        <jsp:param name="..." value="..."/>
        <!-- 更多参数 -->
    </jsp:params>
    <jsp:fallback>
        <!-- 在插件不可用时显示的内容 -->
    </jsp:fallback>
</jsp:plugin>

type:指定插件的类型,可以是applet或bean。
code:applet的类名或bean的对象序列化表示。
codebase:applet类文件或bean对象存放的基本URL。
archive:包含applet或bean的JAR文件名称。
width和height:指定插件在页面上的显示尺寸。
align:插件在页面中的对齐方式。
jreversion:指定运行applet或bean所需的Java插件版本。
<jsp:params>和<jsp:param>:用于传递参数到applet或bean。
<jsp:fallback>:当插件不可用(如浏览器不支持插件或未安装相应的Java插件)时,在页面上显示的备用内容。 

4.<jsp:param>动作

    <jsp:param>元素用于向其他JSP元素(如<jsp:forward>、<jsp:include>和<jsp:plugin>)传递参数,通过这种方法可以将数据从一个JSP页面传递到另一个页面或组件。

<jsp:param name="parameterName" value="parameterValue" />

六、JSP脚本元素

1.变量声明

   <%!
       int count = 0;
       String message = "Hello, World!";
   %>

2.方法声明

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
    <title>Method Declaration in JSP</title>
</head>
<body>
<%! 
    // 方法声明
    public String toUpperCase(String input) {
        if (input != null) {
            return input.toUpperCase();
        }
        return "";
    }
%>

<%
    // 方法调用
    String message = "Hello, World!";
    String upperMessage = toUpperCase(message);
%>

<p>Original Message: <%= message %></p>
<p>Upper Case Message: <%= upperMessage %></p>

</body>
</html>

 3.表达式元素

    JSP表达式元素用于直接在JSP页面中输出Java表达式的值。表达式元素由 <%= 开始,由 %>结束。

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>表达式使用案例</title>
</head>
<body>

<p>Current time: <%= new java.util.Date() %></p>

<p>10 + 20 = <%= 10 + 20 %></p>

</body>
</html>

七、JSP隐含对象和有效范围

request:代表客户端的请求信息。通过这个对象可以获取到客户端的请求参数、头信息等。
response:代表对客户端的响应。可以通过这个对象设置响应头、发送错误等。
pageContext:包含了与JSP页面相关的上下文信息。可以用来获取其他隐含对象、分享数据等。
session:代表用户会话,可以用来在不同的请求之间保持信息。
application:代表整个Web应用的上下文环境,可以用来在整个应用范围内共享信息。
config:代表Servlet配置的信息,可以用来获取初始化参数。
out:代表输出流,用于将内容输出到客户端。
page:代表当前的JSP页面本身,相当于在Servlet中的this关键字。
exception:代表JSP页面在执行过程中抛出的异常对象(仅在错误页面中可用)。

1.隐含对象的有效范围

    页内有效(pageContext):对象创建后只能在当前JSP页面内被访问。所有页内有效对象的引用存储在页面上下文对象(pageContext)中,使用pageContextsetAttribute()getAttribute()方法传递数据。

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>页面有效案例</title>
</head>
<body>
<%
    // 使用pageContext设置一个属性
    pageContext.setAttribute("attribute_name", "attribute_value");

    // 现在,使用 pageContext 得到属性值
    String message = (String) pageContext.getAttribute("attribute_name");
%>
    <!-- 在页面输出属性值 -->
    <p><%= message %></p>
</body>
</html>

    请求有效(request) ,请求有效的对象在同一请求不同JSP页面内都可以访问。如果请求转向到同一运行时的其他资源,这些对象依然有效。请求有效的对象在请求处理结束时就会失效。

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>请求有效案例</title>
</head>
<body>
<%
    // 获取请求参数“用户名”
    String username = request.getParameter("username");
%>
    <p>Welcome, <%= username %></p>
</body>
</html>

    会话有效(session),会话是指客户端和服务器之间持续连接的一段时间。在这段时间内,当需要多次和服务器交互信息时,可以将有关信息存入session对象中,这些信息是会话有效的。在与服务器断线后,就会失效。 

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>会话有效案例</title>
</head>
<body>
<%
    //检查session是否已经具有属性“user”
    if(session.getAttribute("user") == null) {
        // 如果没有,设置一个属性
        session.setAttribute("user", "John Doe");
    }

    // 从会话中得到属性“user”
    String user = (String) session.getAttribute("user");
%>
    <h1>Welcome, <%= user %></h1>
</body>
</html>

    应用有效(application),应用的作用范围是从Web应用服务器一开始执行服务一直到结束服务为止。应用有效范围最大、影响最长。

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>应用有效案例</title>
</head>
<body>
<%
    // 检查应用有效范围是否已经具有属性“counter”
    if(application.getAttribute("counter") == null) {
        // If not, initialize the counter
        application.setAttribute("counter", 0);
    }
    
    // 获取counter的属性值
    Integer counter = (Integer) application.getAttribute("counter");
    
    // counter+1
    counter++;
    
    // 设置+1后的counter属性值为当前属性值
    application.setAttribute("counter", counter);
%>
    <h1>Page visits: <%= counter %></h1>
</body>
</html>

    JSP页面中,作用范围的对象分别为pagerequestsessionapplication它们之间的关系如图所示。

2.response、out隐含对象    

    response对象, response对象和request对象功能恰好相反,request 对象封装的是客户端提交的信息,而response对象封装的是返回客户端的信息。通过 response 对象,你可以控制向客户端发送的响应的各个方面,包括设置响应头、发送错误、重定向到另一个页面等。

    使用 response.setHeader(String name, String value) 方法来设置响应头,设置内容类型为JSON:

<%
    response.setHeader("Content-Type", "application/json");
%>

    使用 response.sendRedirect(String location) 方法可以将用户重定向到另一个URL:

<%
    response.sendRedirect("anotherPage.jsp");
%>

    使用 response.sendError(int sc, String msg) 方法向客户端发送一个错误响应:

<%
    response.sendError(response.SC_NOT_FOUND, "请求资源不可用");
%>

    out对象,用于向客户发送内容的输出,通过out对象可以在在JSP页面中动态生成HTML、文本或其他类型的内容。 

<%@ page contentType="text/html;charset=GBK" %>
<%
	out.println("hello");
	out.newLine();
	out.write("hello");
%>
<%="hello"%>
<%
   out.close();
%>

3.getAttribute()和getParameter()的区别

    getAttribute()是用于从请求(request)或会话(session)等作用域中通过setAttribute()设置的属性获取属性值。 
    getParameter()是获取客户端中由用户提供的,比如用户在表单中输入的数据。

八、JSP使用数据库

1.连接数据库步骤及主要代码

    (1)加载数据库驱动:这是连接数据库的第一步,需要加载相应的JDBC驱动。
    (2)建立连接:使用 DriverManager.getConnection() 方法建立数据库连接。
    (3)创建Statement:通过数据库连接对象创建 Statement 或 PreparedStatement 对象,用于执行SQL语句。
    (4)执行查询:使用 executeQuery() 方法执行SQL查询,或使用 executeUpdate() 方法执行更新(如INSERT、UPDATE或DELETE)操作。
    (5)处理结果:对于查询操作,处理返回的 ResultSet。
    (6)关闭连接:完成所有的数据库操作后,关闭 ResultSet,Statement 和 Connection 对象。

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

<%
    // Step 1: 加载JDBC驱动
    Class.forName("com.mysql.jdbc.Driver");

    // Step 2: 与数据库建立connection
    Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydb", "username", "password");

    try {
        // Step 3: 创建一个 statement
        Statement statement = connection.createStatement();

        // Step 4: 执行查询/更新
        ResultSet resultSet = statement.executeQuery("SELECT * FROM mytable");
        /*
        int result = stmt.executeUpdate("UPDATE 表名 SET 列名 = 值 WHERE 条件");
        System.out.println("影响的行数:" + result);
        */

        // Step 5: 输出查询结果
        while (resultSet.next()) {
            out.println(resultSet.getString("mycolumn") + "<br>");
        }
    } finally {
        // Step 6: 关闭连接
        if (connection != null) {
            connection.close();
        }
    }
%>

 2.PreparedStatement连接数据库并操作

try {
    // 加载JDBC驱动
    Class.forName("com.mysql.jdbc.Driver");
    // 使用 DriverManager 建立连接。
    Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydb", "user", "pass");
    
    // 编写sql语句
    String sql = "INSERT INTO Users (username, password, email) VALUES (?, ?, ?)";
    //创建 PreparedStatement对象
    PreparedStatement pstmt = conn.prepareStatement(sql);
    
    // 执行sql语句
    pstmt.setString(1, "testUser");
    pstmt.setString(2, "password123");
    pstmt.setString(3, "test@example.com");
    
    // 输出结果
    int affectedRows = pstmt.executeUpdate();
    System.out.println("Inserted rows: " + affectedRows);
    
    pstmt.close();
    conn.close();
} catch (Exception e) {
    e.printStackTrace();
}

3. sql标签连接数据库并操作

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

<!DOCTYPE html>
<html>
<head>
    <title>SQL Tag Example</title>
</head>
<body>

<sql:setDataSource var="dataSource" 
                   driver="com.mysql.jdbc.Driver"
                   url="jdbc:mysql://localhost:3306/myDatabase" 
                   user="root" 
                   password="password"/>

<sql:update dataSource="${dataSource}" var="insertCount">
    INSERT INTO users (id, name) VALUES (1, 'John Doe')
</sql:update>

<sql:query dataSource="${dataSource}" var="result">
    SELECT * FROM users
</sql:query>

<c:forEach var="row" items="${result.rows}">
    ID: ${row.id}, Name: ${row.name}<br/>
</c:forEach>

</body>
</html>

九、在JSP中使用JavaBean

public class ManagerForm {
    private int id = 0;  //定义int类型的简单属性id
    private String manager = "";  //定义String类型的简单属性manager
    private String pwd = "";  //定义String类型的简单属性pwd

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getManager() {
        return manager;
    }

    public void setManager(String manager) {
        this.manager = manager;
    }

    public String getPwd() {
        return pwd;
    }

    public void setPwd(String pwd) {
        this.pwd = pwd;
    }
}

编写一个关于图书的JavaBean,假设包名为Books,类名为book,该类含有两个属性bnum和bname,包含一个方法,该方法实现:输出“我是一本图书”。(15分)

import java.io.Serializable;

public class Book implements Serializable {
    // 定义属性
    private String bnum;
    private String bname;

    // 无参构造器
    public Book() {
    }

    // bnum的getter和setter方法
    public String getBnum() {
        return bnum;
    }

    public void setBnum(String bnum) {
        this.bnum = bnum;
    }

    // bname的getter和setter方法
    public String getBname() {
        return bname;
    }

    public void setBname(String bname) {
        this.bname = bname;
    }

    // 一个简单的方法,输出"I am a Book"
    public void showBook() {
        System.out.println("我是一本图书。");
    }

}
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>User Info</title>
</head>
<body>

<jsp:useBean id="user" class="UserBean" scope="request"/>
<jsp:setProperty name="user" property="name" value="John Doe"/>
<jsp:setProperty name="user" property="email" value="john.doe@example.com"/>

<h2>User Information</h2>
<p>Name: <jsp:getProperty name="user" property="name"/></p>
<p>Email: <jsp:getProperty name="user" property="email"/></p>

</body>
</html>

十、Servlet

import java.io.IOException;
import java.io.PrintWriter;
import java.util.Date;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class SimpleServlet extends HttpServlet {
  
  protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    // 设置响应内容类型为 HTML
    response.setContentType("text/html");
    
    // 获取响应的 PrintWriter 对象
    PrintWriter out = response.getWriter();
    
    try {
      // 输出 HTML 页面的头部
      out.println("<!DOCTYPE html>");
      out.println("<html>");
      out.println("<head>");
      out.println("<title>Simple Servlet</title>");
      out.println("</head>");
      out.println("<body>");
      
      // 输出当前日期和时间
      out.println("<h2>The current date and time is: " + new Date() + "</h2>");
      
      // 输出 HTML 页面的尾部
      out.println("</body>");
      out.println("</html>");
    } finally {
      // 关闭 PrintWriter
      out.close();
    }
  }
}
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
                             http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
         version="3.1">

  <servlet>
    <servlet-name>SimpleServlet</servlet-name>
    <servlet-class>SimpleServlet</servlet-class>
  </servlet>

  <servlet-mapping>
    <servlet-name>SimpleServlet</servlet-name>
    <url-pattern>/simple</url-pattern>
  </servlet-mapping>

</web-app>

十一、EL表达式 

    1.JSP的EL(Expression Language)表达式主要用于简化对Java代码的访问,特别是在JSP页面中获取和显示数据时。

    2.基本语法:EL表达式开始与 ${ 并以 } 结束。例如:${expression}

    3.EL表达式可以访问以下范围的对象:

       pageScope:当前页面的属性
       requestScope:与请求相关的属性
       sessionScope:与会话相关的属性
       applicationScope:与整个应用程序相关的属性

例如,要访问存储在请求范围内的属性 user,可以使用:${requestScope.user}、${user}

    4.访问JavaBean的属性:

       如果 user 是一个包含属性 name 的JavaBean,可以使用点操作符来访问这个属性:${user.name}

    5.操作和表达式

       EL提供了一系列的操作符来进行逻辑、关系和算术操作:

       算术操作:+, -, *, / (或 div), % (或 mod)
       逻辑操作:and, &&, or, ||, not, !
       关系操作:==, !=, <, >, <=, >=
       条件操作:? :

例如:
${num1 + num2}
${user.age >= 18}
${flag ? "Yes" : "No"}

下面是一个使用EL表达式的简单JSP页面案例:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Quick Start JSP EL</title>
</head>
<body>
    <%-- 假设在请求范围有一个名为 "user" 的属性 --%>
    <p>Name: ${user.name}</p>
    <p>Age: ${user.age}</p>
    
    <%-- 条件表达式 --%>
    <p>Status: ${user.age >= 18 ? 'Adult' : 'Minor'}</p>
    
    <%-- 遍历列表 --%>
    <ul>
    <%-- 假设在请求范围有一个名为 "users" 的列表 --%>
    <c:forEach var="user" items="${users}">
        <li>${user.name} - ${user.age}</li>
    </c:forEach>
    </ul>
</body>
</html>

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

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

相关文章

JS入门学习

JS JavaScript是一门解释型的脚本语言&#xff0c;其是弱类型的&#xff0c;对变量的数据类型不做严格的要求&#xff0c;变量的类型可以在运行过程中变化 JavaScript能改变HTML内容&#xff0c;属性&#xff0c;样式 大纲 使用方式变量运算符数组JS函数自定义对象事件补充 …

斯洛文尼亚普利雅玛城堡:吉尼斯世界纪录认证的世界最大溶洞城堡

除了著名的波斯托伊纳溶洞&#xff08;Postojna Cave&#xff09;&#xff0c;普利雅玛城堡&#xff08;Predjama Castle&#xff09;也是波斯托伊纳洞穴公园&#xff08;Postojna Cave Park&#xff09;不容错过的景点之一。这座城堡坐落在斯洛文尼亚&#xff08;Slovenia&…

亚马逊,沃尔玛,速卖通卖家必知:如何运用测评提升产品权重

说到 测评&#xff0c;对于绝大部分卖家而言应该都非常熟悉。因为他们知道&#xff0c;通过测评可以快速地为自己的产品增加评论数量&#xff0c;提升排名&#xff0c;甚至打造畅销产品。 测评不是唯一的手段&#xff0c;但是推销量的一把好手。首先测评能让listing快速成长&a…

中医能治疗懒吗?这3种懒病,中医可以治!

“中医能治懒吗&#xff1f;总感觉肢体软弱&#xff0c;自己想做事&#xff0c;但因为力不从心而怕做。”在史仁杰医生门诊上&#xff0c;有个患者这样问到。 我们常听说&#xff0c;某人很懒&#xff0c;甚至还会把“懒”等同于“好逸恶劳”“不劳而获”&#xff1b;说句公道…

5.14.5 不同 CNN 对超声图像乳腺肿瘤分类的比较

VGG-16 和 Inception V3 两种模型 第一个是使用预训练模型作为特征提取器&#xff0c;第二个是微调预训练模型。 1. 介绍 乳腺癌是女性最常见的癌症&#xff0c;癌症筛查是通过乳房超声 (BUS) 成像和乳房 X 光检查进行的。 目前的问题是需要 依赖大型且带注释的BUS数据集进…

【权威出版】2024年城市建设、智慧交通与通信网络国际会议(UCSTCN 2024)

2024年城市建设、智慧交通与通信网络国际会议 2024 International Conference on Urban Construction, Smart Transportation, and Communication Networks 【1】会议简介 2024年城市建设、智慧交通与通信网络国际会议即将盛大召开&#xff0c;这是一次聚焦城市建设、智慧交通与…

[算法] 优先算法(三):滑动窗口(上)

&#x1f338;个人主页:https://blog.csdn.net/2301_80050796?spm1000.2115.3001.5343 &#x1f3f5;️热门专栏:&#x1f355; Collection与数据结构 (92平均质量分)https://blog.csdn.net/2301_80050796/category_12621348.html?spm1001.2014.3001.5482 &#x1f9c0;Java …

Docker安装Oracle11g数据库

操作系统&#xff1a;centOS9使用此方法检查是否安装Docker&#xff1a;docker --help&#xff0c;如果有帮助文件则证明安装成功使用此语句检查Docker是否正在运行&#xff1a;docker images&#xff0c;实际上是查看本地镜像如果发现未运行则开启Docker&#xff1a;systemctl…

Linux 36.3@Jetson Orin Nano之系统安装

Linux 36.3Jetson Orin Nano之系统安装 1. 源由2. 命令行烧录Step 1&#xff1a;下载Linux 36.3安装程序Step 2&#xff1a;下载Linux 36.3根文件系统Step 3&#xff1a;解压Linux 36.3安装程序Step 4&#xff1a;解压Linux 36.3根文件系统Step 5&#xff1a;安装应用程序Step …

突发!某大厂机房掉电,MySQL数据库无法启动,紧急恢复过程...

作者&#xff1a;IT邦德 中国DBA联盟(ACDU)成员&#xff0c;10余年DBA工作经验&#xff0c; Oracle、PostgreSQL ACE CSDN博客专家及B站知名UP主&#xff0c;全网粉丝10万 擅长主流Oracle、MySQL、PG、高斯及Greenplum备份恢复&#xff0c; 安装迁移&#xff0c;性能优化、故障…

类和对象03

六、继承 我们发现&#xff0c;定义这些类时&#xff0c;下级别的成员除了拥有上一级的共性&#xff0c;还有自己的特性。 这个时候我们就可以考虑利用继承的技术&#xff0c;减少重复代码 6.1 继承的基础语法 例如我们看到很多网站中, 都有公共的头部&#xff0c;公共的底…

数据结构—二叉树相关概念【详解】【画图演示】

P. S.&#xff1a;以下代码均在VS2019环境下测试&#xff0c;不代表所有编译器均可通过。 P. S.&#xff1a;测试代码均未展示头文件stdio.h的声明&#xff0c;使用时请自行添加。 目录 1、二叉树的概念及结构1、1 二叉树的概念1、2 二叉树的结构 2、特殊的二叉树3、二叉树的性…

【Hive SQL 每日一题】行列转换

文章目录 行转列列传行 行转列 测试数据&#xff1a; DROP TABLE IF EXISTS student_scores;CREATE TABLE student_scores (student_id INT,subject STRING,score INT );INSERT INTO student_scores (student_id, subject, score) VALUES (1, Math, 85), (1, English, 78), (…

光纤跳线组成结构划分你知道吗

按照组成结构划分 光纤跳线根据组成结构的不同可分为带状光纤跳线和束状光纤跳线。带状光纤跳线使用的是由光纤带组成的带状光缆&#xff0c;大多呈扁平形状&#xff0c;因具有较高的光纤密度&#xff0c;它可以容纳更多的纤芯&#xff0c;因此大大节省布线成本和空间&#xf…

JavaScript 新特性:新增声明命令与解构赋值的强大功能

个人主页&#xff1a;学习前端的小z 个人专栏&#xff1a;JavaScript 精粹 本专栏旨在分享记录每日学习的前端知识和学习笔记的归纳总结&#xff0c;欢迎大家在评论区交流讨论&#xff01; ES5、ES6介绍 文章目录 &#x1f4af;声明命令 let、const&#x1f35f;1 let声明符&a…

VMware虚拟机如何与主机共享文件夹

本机:WIN10 VMware虚拟机:WIN7 因为每次配置都爱忘记操作,目标是为了在WIN7虚拟机中可以访问本机文件 首先本机操作 新建一个共享文件夹,不带中文目录(最好不要) 点击共享 选择everyone,记得权限"读取和写入" 然后到虚拟机里面 添加一个网络位置 点击浏览,选择网…

刷题之从前序遍历与中序遍历序列构造二叉树(leetcode)

从前序遍历与中序遍历序列构造二叉树 前序遍历&#xff1a;中左右 中序遍历&#xff1a;左中右 前序遍历的第一个数必定为根节点&#xff0c;再到中序遍历中找到该数&#xff0c;数的左边是左子树&#xff0c;右边是右子树&#xff0c;进行递归即可。 #include<vector>…

ChatGPT-4o模型功能介绍——还没用过的看过来

1.概述 OpenAI 持续突破人工智能的边界&#xff0c;推出了其最新模型 ChatGPT-4o&#xff0c;作为 ChatGPT-4 的继承者&#xff0c;该模型有望带来显著的提升和创新功能。本文将深入解析 ChatGPT-4 与 ChatGPT-4o 之间的区别&#xff0c;并探讨它们的功能、性能以及潜在的应用…

5.22 R语言-正态性检验

正态性检验 正态性检验的目的是确定一组数据是否符合正态分布&#xff08;也称高斯分布&#xff09;。在统计分析和数据建模中&#xff0c;正态性假设是许多统计方法和模型的基础。了解数据是否符合正态分布有助于选择适当的统计方法和确保分析结果的有效性。 本文主要从概率…

神秘山洞惊现AI绘画至宝Stable Diffusion残卷

最近听到不少大宗门纷纷发声&#xff1a;随着AI神器的现世“程序员职业将不复存在”&#xff0c;“设计师将要失业”。 至此&#xff0c;不少修士开始担忧起来&#xff0c;现出世的AI神器会不会取代掉我辈修士。 其实&#xff0c;至女娲天神创造人类以来&#xff0c;在这漫漫…