Jsp技術入門指南【十】IDEA 開發環境下實現 MySQL 數據在 JSP 頁面的可視化展示,實現前后端交互

Jsp技術入門指南【十】IDEA 開發環境下實現 MySQL 數據在 JSP 頁面的可視化展示,實現前后端交互

  • 前言
  • 一、JDBC 核心接口和類:數據庫連接的“工具箱”
    • 1. 常用的 2 個“關鍵類”
    • 2. 必須掌握的 5 個“核心接口”
  • 二、創建 JDBC 程序的步驟
    • 1. 第一步:加載數據庫驅動
    • 2. 第二步:定義數據庫連接地址
    • 3. 第三步:建立連接
    • 4. 第四步:創建 Statement
    • 5. 第五步:執行 SQL 查詢
    • 6. 第六步:處理結果集
    • 7. 第七步:關閉資源
    • 完整代碼示例
  • 三、實際操作教程
    • 第一步、導入數據庫maven
    • 第二步、創建并導入web庫
    • 第三步、連接本地數據庫的java代碼
    • 第四步、創建數據庫
    • 第五步、在JSP代碼中獲取session
    • 第六步、編譯運行環境
  • 三、本文所有代碼
    • User類
    • UserListServlet類
    • DBConnection類
    • pom.xml文件
    • user.jsp文件


前言

  • 在前序的 JSP 基礎教程中,我們已經掌握了動態頁面的核心語法、請求響應處理及基礎標簽的使用方法,初步構建了基于 JSP 的 Web 開發認知
  • 但在實際項目中,動態頁面的價值往往需要與數據庫結合才能充分釋放 ——如何讓 JSP 頁面 “活” 起來?關鍵在于讓頁面能夠動態讀取并展示數據庫中的實時數據。

本次實戰教程將聚焦 “數據可視化展示” 這一核心場景,帶領讀者打通 “IDEA 開發環境→MySQL 數據庫→JSP 頁面” 的完整技術鏈路

我的個人主頁,歡迎來閱讀我的其他文章
https://blog.csdn.net/2402_83322742?spm=1011.2415.3001.5343
我的JSP知識文章專欄
歡迎來閱讀指出不足
https://blog.csdn.net/2402_83322742/category_12950980.html?spm=1001.2014.3001.5482


一、JDBC 核心接口和類:數據庫連接的“工具箱”

JDBC(Java Database Connectivity)是一套讓 Java 程序能夠連接和操作數據庫的工具,就像一個“工具箱”。你用它來和數據庫打交道,就像用鑰匙開門一樣。

1. 常用的 2 個“關鍵類”

這兩個類就像是“工具箱”里的“常用工具”:

  • DriverManager:這個類的作用是幫助我們建立數據庫連接。它就像是一個“中介”,幫你找到合適的鑰匙(驅動程序)來打開數據庫的門。
  • Connection:這個類代表了和數據庫的連接。一旦連接建立,你就可以通過它和數據庫進行通信,比如發送指令(SQL 語句)。

2. 必須掌握的 5 個“核心接口”

接口可以理解為一種“規范”,規定了某些功能的實現方式。這 5 個接口是 JDBC 的核心:

  • Driver:定義了數據庫驅動程序需要實現的功能,比如如何連接到數據庫。
  • Connection:表示和數據庫的連接,你可以通過它發送 SQL 語句和接收結果。
  • Statement:用來執行 SQL 語句的接口。你可以通過它發送查詢或更新數據庫的指令。
  • ResultSet:用來接收查詢結果的接口。當你執行查詢操作后,結果會以表格的形式存儲在這個對象里。
  • PreparedStatement:這是一個特殊的 Statement,可以預編譯 SQL 語句,提高執行效率,還可以防止 SQL 注入攻擊。

二、創建 JDBC 程序的步驟

創建一個 JDBC 程序,就像按照步驟組裝一個玩具。以下是詳細的步驟:

1. 第一步:加載數據庫驅動

這一步就像是告訴 Java 程序,你準備用哪種“鑰匙”去開門。你需要加載數據庫驅動程序,讓 Java 知道如何連接到數據庫。
代碼示例:

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

這里 com.mysql.cj.jdbc.Driver 是 MySQL 數據庫驅動的類名。

2. 第二步:定義數據庫連接地址

這一步是告訴 Java 程序,數據庫在哪里。連接地址包括數據庫的類型、服務器地址、數據庫名稱等信息。
例如:

String url = "jdbc:mysql://localhost:3306/mydatabase";

這里 jdbc:mysql:// 表示使用 MySQL 數據庫,localhost:3306 是數據庫服務器的地址和端口,mydatabase 是數據庫名稱。

3. 第三步:建立連接

這一步是用 DriverManager 類,根據前面定義的連接地址和用戶名、密碼,建立和數據庫的連接。
代碼示例:

Connection conn = DriverManager.getConnection(url, "username", "password");

這里 usernamepassword 是登錄數據庫的用戶名和密碼。

4. 第四步:創建 Statement

這一步是創建一個 Statement 對象,用來執行 SQL 語句。
代碼示例:

Statement stmt = conn.createStatement();

5. 第五步:執行 SQL 查詢

這一步是通過 Statement 對象發送 SQL 語句到數據庫。例如,查詢數據庫中的數據:

String sql = "SELECT * FROM mytable";
ResultSet rs = stmt.executeQuery(sql);

這里 mytable 是表名,SELECT * FROM mytable 是 SQL 查詢語句。

6. 第六步:處理結果集

這一步是處理返回的結果集(ResultSet)。你可以通過循環遍歷結果集,獲取每一行的數據。
代碼示例:

while (rs.next()) {String column1 = rs.getString("column1");int column2 = rs.getInt("column2");System.out.println(column1 + ", " + column2);
}

這里 column1column2 是表中的列名。

7. 第七步:關閉資源

這一步非常重要,是為了釋放數據庫連接和資源,避免浪費。
代碼示例:

rs.close();
stmt.close();
conn.close();

完整代碼示例

以下是一個完整的 JDBC 程序示例,結合了上述所有步驟:

import java.sql.*;public class JdbcExample {public static void main(String[] args) {try {// 第一步:加載數據庫驅動Class.forName("com.mysql.cj.jdbc.Driver");// 第二步:定義數據庫連接地址String url = "jdbc:mysql://localhost:3306/mydatabase";String user = "username";String password = "password";// 第三步:建立連接Connection conn = DriverManager.getConnection(url, user, password);// 第四步:創建StatementStatement stmt = conn.createStatement();// 第五步:執行SQL查詢String sql = "SELECT * FROM mytable";ResultSet rs = stmt.executeQuery(sql);// 第六步:處理結果集while (rs.next()) {String column1 = rs.getString("column1");int column2 = rs.getInt("column2");System.out.println(column1 + ", " + column2);}// 第七步:關閉資源rs.close();stmt.close();conn.close();} catch (ClassNotFoundException e) {System.out.println("數據庫驅動未找到!");e.printStackTrace();} catch (SQLException e) {System.out.println("數據庫連接或操作失敗!");e.printStackTrace();}}
}

下面我們來實際操作一下

三、實際操作教程

題目要求

  • 使用 IntelliJ IDEA 開發環境,通過 JDBC 連接關系型數據庫(如 MySQL),查詢指定表中的數據,并將數據以結構化形式(如表格)動態渲染到 JSP 頁面的用戶界面中,實現數據的可視化展示

第一步、導入數據庫maven

  • 首先我們需要配置好自己的maven環境
  • maven環境必須是全英文,不然運行不了

我的jsp環境搭建博客https://blog.csdn.net/2402_83322742/article/details/146980845?spm=1001.2014.3001.5501

在這里插入圖片描述

  • 接著需要在maven的網站里找到數據庫jdbc的依賴項
    這里我直接將jdbc的依賴項放出來
  • maven官方網站https://maven.apache.org/
<dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.33</version>
</dependency>
  • 同時我們還需要導入jsp-api依賴項和javax.servlet-api依賴項
 <dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>3.1.0</version><scope>provided</scope></dependency><dependency><groupId>javax.servlet.jsp</groupId><artifactId>javax.servlet.jsp-api</artifactId><version>2.3.3</version><scope>provided</scope>
</dependency>
  • 最后由于需要用到jstl,我們需要加入jstl和taglibs的依賴項
<!-- jstl表達式依賴--><dependency><groupId>javax.servlet.jsp.jstl</groupId><artifactId>jstl-api</artifactId><version>1.2</version></dependency>
<!-- taglibs 標簽庫依賴--><dependency><groupId>taglibs</groupId><artifactId>standard</artifactId><version>1.1.2</version></dependency>
  • 導入之后的樣子

在這里插入圖片描述

  • 配置好外部庫
    在這里插入圖片描述

  • 然后單擊我們的SE1,新建一個模板
    在這里插入圖片描述

第二步、創建并導入web庫

  • 我們新建了一個MySQLtest的模塊,在里面單擊右鍵,打開模板設置
    在這里插入圖片描述
  • 在MySQLtest里面添加web文件
    在這里插入圖片描述
    在這里插入圖片描述
  • 然后在工件里,找到web應用程序展開型,找到我們剛剛添加的MySQLweb文件
    在這里插入圖片描述
  • 在web-INF文件里創建一個lib文件,并導入我們的庫文件
    在這里插入圖片描述
    在這里插入圖片描述

第三步、連接本地數據庫的java代碼

  • 首先新建三個java類UserListServlet,User,DBConnection
    在這里插入圖片描述
    在這里插入圖片描述
  • 接著在java類里面添加以下代碼

user類

package org.example;// 表示用戶信息的實體類
public class User {private int id; // 用戶IDprivate String username; // 用戶名private String email; // 用戶郵箱private String phone; // 用戶電話private String role; // 用戶角色private String createTime; // 用戶創建時間// 構造函數,參數順序和類型要與查詢結果列對應public User(int id, String username, String email, String phone, String role, String createTime) {this.id = id;this.username = username;this.email = email;this.phone = phone;this.role = role;this.createTime = createTime;}// 獲取用戶IDpublic int getId() { return id; }// 獲取用戶名public String getUsername() { return username; }// 獲取用戶郵箱public String getEmail() { return email; }// 獲取用戶電話public String getPhone() { return phone; }// 獲取用戶角色public String getRole() { return role; }// 獲取用戶創建時間public String getCreateTime() { return createTime; }
}

UserListServlet類

package org.example;import java.io.IOException;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;// 處理用戶列表請求的 Servlet
@WebServlet("/UserListServlet")
public class UserListServlet extends HttpServlet {// 處理 GET 請求protected void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {List<User> userList = new ArrayList<>();String sql = "SELECT id, user_name, email, phone, role, create_time FROM users";// 從數據庫查詢用戶信息try (Connection conn = DBConnection.getConnection();PreparedStatement pstmt = conn.prepareStatement(sql);ResultSet rs = pstmt.executeQuery()) {while (rs.next()) {int id = rs.getInt("id");String userName = rs.getString("user_name");String email = rs.getString("email");String phone = rs.getString("phone");String role = rs.getString("role");String createTime = rs.getString("create_time");User user = new User(id, userName, email, phone, role, createTime);userList.add(user);}} catch (SQLException e) {// 發生數據庫操作異常時,向客戶端發送錯誤響應response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);response.getWriter().println("Database error occurred. Please try again later.");return;}// 將用戶列表存入會話HttpSession requestSession = request.getSession(true);requestSession.setAttribute("userList", userList);// 轉發請求到 JSP 頁面request.getRequestDispatcher("user.jsp").forward(request, response);}
}    

第四步、創建數據庫

  • 完成上面的代碼之后,我們接著創建一個數據庫,點擊數據庫按鈕
    在這里插入圖片描述

  • 然后找到加號,點擊數據源,找到MySQL
    在這里插入圖片描述

  • 在里面輸入我們的密碼和用戶名
    在這里插入圖片描述

  • 找到部署架構,里面就有我們的數據庫文件
    在這里插入圖片描述
    在這里插入圖片描述

  • 連接數據庫的代碼名字要求與我們的數據庫匹配一致,這里我連接了2023se3
    在這里插入圖片描述

  • SQL查詢語句要查詢具體的表文件,這里我查詢了user文件
    在這里插入圖片描述

  • 然后點擊運行按鈕,如果在終端顯示數據庫連接成功,則代表環境搭建成功
    在這里插入圖片描述

  • 然后構建我們的數據庫
    在這里插入圖片描述

第五步、在JSP代碼中獲取session

  • 接下來我們準備好我們的jsp文件
    在這里插入圖片描述
  • 然后在jsp文件添加以下代碼
<tbody><c:forEach items="${sessionScope.userList}" var="user"><tr><td class="center">${user.id}</td><td>${user.username}</td><td>${user.email}</td><td>${user.phone}</td><td class="center">${user.role}</td><td class="center">${user.createTime}</td><td class="center"><a name="remove" onclick="Common.confirm('確認要屏蔽嗎?')"><i class="glyphicon glyphicon-remove"></i>屏蔽</a></td></tr></c:forEach>
</tbody>
  • 然后在jsp文件開頭加入以下文件獲取我們userlistservletsession獲得的數據庫的值
<li><a href="/UserListServlet"><span class="glyphicon glyphicon-user"></span>&nbsp;&nbsp;用戶管理</a></li>

第六步、編譯運行環境

  • 找到最上面的編輯配置
    在這里插入圖片描述
    在里面配置好Tomcat服務器

在這里插入圖片描述
在這里插入圖片描述

  • 啟動環境
    在這里插入圖片描述
  • 然后點擊用戶管理刷新頁面

在這里插入圖片描述

  • 這樣我們的數據庫的信息便打印到屏幕上了

三、本文所有代碼

User類

package org.example;
public class User {private int id;private String username;private String email;private String phone;private String role;private String createTime;// 構造函數參數順序、類型必須與查詢結果列順序、類型一致public User(int id, String username, String email, String phone, String role, String createTime) {this.id = id;this.username = username;this.email = email;this.phone = phone;this.role = role;this.createTime = createTime;}// 確保所有屬性都有對應的 getter 方法public int getId() { return id; }public String getUsername() { return username; }public String getEmail() { return email; }public String getPhone() { return phone; }public String getRole() { return role; }public String getCreateTime() { return createTime; }
}

UserListServlet類

package org.example;import java.io.IOException;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;// 處理用戶列表請求的 Servlet
@WebServlet("/UserListServlet")
public class UserListServlet extends HttpServlet {// 處理 GET 請求protected void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {List<User> userList = new ArrayList<>();String sql = "SELECT id, user_name, email, phone, role, create_time FROM users";// 從數據庫查詢用戶信息try (Connection conn = DBConnection.getConnection();PreparedStatement pstmt = conn.prepareStatement(sql);ResultSet rs = pstmt.executeQuery()) {while (rs.next()) {int id = rs.getInt("id");String userName = rs.getString("user_name");String email = rs.getString("email");String phone = rs.getString("phone");String role = rs.getString("role");String createTime = rs.getString("create_time");User user = new User(id, userName, email, phone, role, createTime);userList.add(user);}} catch (SQLException e) {// 發生數據庫操作異常時,向客戶端發送錯誤響應response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);response.getWriter().println("Database error occurred. Please try again later.");return;}// 將用戶列表存入會話HttpSession requestSession = request.getSession(true);requestSession.setAttribute("userList", userList);// 轉發請求到 JSP 頁面request.getRequestDispatcher("user.jsp").forward(request, response);}
}

DBConnection類

package org.example;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;public class DBConnection {private static final String URL = "jdbc:mysql://localhost:3306/2023se3";private static final String USER = "root";private static final String PASSWORD = "123456";public static Connection getConnection() {try {Class.forName("com.mysql.cj.jdbc.Driver");Connection conn = DriverManager.getConnection(URL, USER, PASSWORD);System.out.println("數據庫連接成功");return conn;} catch (ClassNotFoundException | SQLException e) {throw new RuntimeException("數據庫連接失敗", e);}}public static void main(String[] args) {DBConnection.getConnection();}
}

pom.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>org.example</groupId><artifactId>SE1</artifactId><version>1.0-SNAPSHOT</version><packaging>pom</packaging><modules><module>MySQLtest</module></modules><properties><maven.compiler.source>17</maven.compiler.source><maven.compiler.target>17</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><dependencies><dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>3.1.0</version><scope>provided</scope></dependency><dependency><groupId>javax.servlet.jsp</groupId><artifactId>javax.servlet.jsp-api</artifactId><version>2.3.3</version><scope>provided</scope></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.33</version></dependency><!-- jstl表達式依賴--><dependency><groupId>javax.servlet.jsp.jstl</groupId><artifactId>jstl-api</artifactId><version>1.2</version></dependency><!-- taglibs 標簽庫依賴--><dependency><groupId>taglibs</groupId><artifactId>standard</artifactId><version>1.1.2</version></dependency></dependencies></project>

user.jsp文件

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html>
<html lang="zh-CN">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1 , user-scalable=no"><title>pha-Admin</title><link rel="stylesheet" href="css/bootstrap.min.css"/><link rel="stylesheet" href="css/bootstrap-maizi.css"/><link rel="stylesheet" href="css/content-style.css"/><link rel="stylesheet" href="css/mricode.pagination.css"/><link rel="stylesheet" href="css/jquery.fancybox.css"/><link rel="stylesheet" href="css/sweetalert.css"/>
</head>
<body>
<!--導航-->
<nav class="navbar navbar-inverse navbar-fixed-top"><div class="container"><!--小屏幕導航按鈕和logo--><div class="navbar-header"><button class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse"><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></button><a href="index.jsp" class="navbar-brand"> pha-Admin</a></div><!--小屏幕導航按鈕和logo--><!--導航--><div class="navbar-collapse collapse"><ul class="nav navbar-nav"><li class="active"><a href=""><span class="glyphicon glyphicon-home"></span>&nbsp;&nbsp;后臺首頁</a></li><li><a href="/UserListServlet"><span class="glyphicon glyphicon-user"></span>&nbsp;&nbsp;用戶管理</a></li><li><a href="machine.jsp"><span class="glyphicon glyphicon-expand"></span>&nbsp;&nbsp;機器管理</a></li><li><a href="service.jsp"><span class="glyphicon glyphicon-tasks"></span>&nbsp;&nbsp;服務管理</a></li><li><a href="log.jsp"><span class="glyphicon glyphicon-list-alt"></span>&nbsp;&nbsp;日志管理</a></li><li><a href="wiki.jsp"><span class="glyphicon glyphicon-book"></span>&nbsp;&nbsp;使用文檔</a></li></ul><ul class="nav navbar-nav navbar-right"><li class="dropdown"><a id="dLabel" type="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"><%String username = (String) session.getAttribute("username");if (username != null) {out.print(username);} else {out.print("admin");}%><span class="caret"></span></a><ul class="dropdown-menu" aria-labelledby="dLabel"><li><a href="index.jsp"><span class="glyphicon glyphicon-cog"></span>&nbsp;&nbsp;個人設置</a></li></ul></li><li><a href="#bbs"><span class="glyphicon glyphicon-off"></span>&nbsp;&nbsp;退出</a></li></ul></div><!--導航--></div>
</nav>
<!--導航-->
<div class="container"><div class="row"><div class="col-md-12"><div class="panel-body" style="padding: 15px 0;"><ul class="nav nav-tabs"><li class="active"><a href="user.jsp">用戶列表</a></li><li class=""><a href="user_form.jsp">添加用戶</a></li></ul></div><div class="panel-body"><div class="row"><form><div class="col-md-3 col-lg-offset-9"><div class="input-group"><input class="form-control" type="text" value="" placeholder="用戶名" name="keyword"><span class="input-group-btn"><button type="submit" class="btn btn-primary"><i class="glyphicon glyphicon-search"></i></button></span></div></div></form></div></div><div class="panel panel-default"><div class="table-responsive"><table class="table table-bordered"><thead><tr><th class="w8p">id</th><th class="w18p">用戶名</th><th class="w18p">郵箱</th><th class="w13p">手機</th><th class="w10p">角色</th><th class="w15p">創建時間</th><th class="w15p">操作</th></tr></thead><tbody><c:forEach items="${sessionScope.userList}" var="user"><tr><td class="center">${user.id}</td><td>${user.username}</td><td>${user.email}</td><td>${user.phone}</td><td class="center">${user.role}</td><td class="center">${user.createTime}</td><td class="center"><a name="remove" onclick="Common.confirm('確認要屏蔽嗎?')"><i class="glyphicon glyphicon-remove"></i>屏蔽</a></td></tr></c:forEach></tbody></table></div><div class="panel-footer"><div class="row"><div class="col-md-8 m-pagination" id="paginator"></div></div></div></div></div></div>
</div>
<!--footer-->
<footer><div class="container"><div class="row"><div class="col-md-12"><p class="text-muted center">Copyright&nbsp;?&nbsp;2017-2018&nbsp;&nbsp;phachon@163.com&nbsp;&nbsp;</p></div></div></div>
</footer>
<!--footer-->
<script src="js/plugins/jquery/jquery.js"></script>
<script src="js/bootstrap.min.js"></script>
<script src="js/plugins/pagination/mricode.pagination.js"></script>
<script src="js/plugins/fancybox/jquery.fancybox.js"></script>
<script src="js/plugins/sweetalert/sweetalert.min.js"></script>
<script src="js/common/common.js"></script>
<script src="js/module/account.js"></script>
<script type="text/javascript">var pageData = [];pageData.push({'pageSize': '10', 'total': '1000', 'pageIndex': '2'});Common.paginator("#paginator", pageData);Account.bindFancyBox();
</script>
</body>
</html>

以上就是這篇博客的全部內容,下一篇我們將繼續探索JSP的更多精彩內容。

我的個人主頁,歡迎來閱讀我的其他文章
https://blog.csdn.net/2402_83322742?spm=1011.2415.3001.5343
我的JSP知識文章專欄
歡迎來閱讀指出不足
https://blog.csdn.net/2402_83322742/category_12950980.html?spm=1001.2014.3001.5482

非常感謝您的閱讀,喜歡的話記得三連哦

在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/78304.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/78304.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/78304.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

深入理解HotSpot JVM 基本原理

關于JAVA Java編程語言是一種通用的、并發的、面向對象的語言。它的語法類似于C和C++,但它省略了許多使C和C++復雜、混亂和不安全的特性。 Java 是幾乎所有類型的網絡應用程序的基礎,也是開發和提供嵌入式和移動應用程序、游戲、基于 Web 的內容和企業軟件的全球標準。. 從…

【HTTP/3:互聯網通信的量子飛躍】

HTTP/3&#xff1a;互聯網通信的量子飛躍 如果說HTTP/1.1是鄉村公路&#xff0c;HTTP/2是現代高速公路系統&#xff0c;那么HTTP/3就像是一種革命性的"傳送門"技術&#xff0c;它徹底重寫了數據傳輸的底層規則&#xff0c;讓信息幾乎可以瞬間抵達目的地&#xff0c;…

Apipost免費版、企業版和私有化部署詳解

Apipost是企業級的 API 研發協作一體化平臺&#xff0c;為企業提供 API研發測試管理全鏈路解決方案&#xff0c;不止于API研發場景&#xff0c;增強企業API資產管理。 Apipost 基于同一份數據源&#xff0c;同時提供給后端開發、前端開發、測試人員使用的接口調試、Mock、自動化…

使用若依二次開發商城系統-1:搭建若依運行環境

前言 若依框架有很多版本&#xff0c;這里使用的是springboot3vue3這樣的一個前后端分離的版本。 一.操作步驟 1 下載springboot3版本的后端代碼 后端springboot3的代碼路徑&#xff0c;https://gitee.com/y_project/RuoYi-Vue 需要注意我們要的是springboot3分支。 先用g…

速成GO訪問sql,個人筆記

更多個人筆記&#xff1a;&#xff08;僅供參考&#xff0c;非盈利&#xff09; gitee&#xff1a; https://gitee.com/harryhack/it_note github&#xff1a; https://github.com/ZHLOVEYY/IT_note 本文是基于原生的庫 database/sql進行初步學習 基于ORM等更多操作可以關注我…

【C++指南】告別C字符串陷阱:如何實現封裝string?

&#x1f31f; 各位看官好&#xff0c;我是egoist2023&#xff01; &#x1f30d; 種一棵樹最好是十年前&#xff0c;其次是現在&#xff01; &#x1f4ac; 注意&#xff1a;本章節只詳講string中常用接口及實現&#xff0c;有其他需求查閱文檔介紹。 &#x1f680; 今天通過了…

系統架構師2025年論文《論軟件架構評估2》

論軟件系統架構評估 v2.0 摘要: 某市醫院預約掛號系統建設推廣應用項目是我市衛生健康委員會 2019 年發起的一項醫療衛生行業便民惠民信息化項目,目的是實現轄區內患者在轄區各公立醫療機構就診時,可以通過多種線上渠道進行預約掛號,提升就醫體驗。我作為系統架構師參與此…

BEVDet4D: Exploit Temporal Cues in Multi-camera 3D Object Detection

背景 對于現有的BEVDet方法,它對于速度的預測誤差要高于基于點云的方法,對于像速度這種與時間有關的屬性,僅靠單幀數據很難預測好。因此本文提出了BEVDet4D,旨在獲取時間維度上的豐富信息。它是在BEVDet的基礎上進行拓展,保留了之前幀的BEV特征,并將其進行空間對齊后與當…

el-upload 上傳邏輯和ui解耦,上傳七牛

解耦的作用在于如果后面要我改成從阿里云oss上傳文件&#xff0c;我只需要實現上傳邏輯從七牛改成阿里云即可&#xff0c;其他不用動。實現方式有2部分組成&#xff0c;一部分是上傳邏輯&#xff0c;一部分是ui。 上傳邏輯 大概邏輯就是先去服務端拿上傳token和地址&#xff0…

酒水類目電商代運營公司-品融電商:全域策略驅動品牌長效增長

酒水類目電商代運營公司-品融電商&#xff1a;全域策略驅動品牌長效增長 在競爭日益激烈的酒水市場中&#xff0c;品牌如何快速突圍并實現長效增長&#xff1f;品融電商憑借「效品合一 全域增長」方法論與全鏈路運營能力&#xff0c;成為酒水類目代運營的領跑者。從品牌定位、視…

機器學習特征工程中的數值分箱技術:原理、方法與實例解析

標題&#xff1a;機器學習特征工程中的數值分箱技術&#xff1a;原理、方法與實例解析 摘要&#xff1a; 分箱技術作為機器學習特征工程中的關鍵環節&#xff0c;通過將數值數據劃分為離散區間&#xff0c;能夠有效提升模型對非線性關系的捕捉能力&#xff0c;同時增強模型對異…

【MySQL專欄】MySQL數據庫的復合查詢語句

文章目錄 1、首先練習MySQL基本語句的練習①查詢工資高于500或崗位為MANAGER的雇員&#xff0c;同時還要滿足他們的姓名首字母為大寫的J②按照部門號升序而雇員的工資降序排序③使用年薪進行降序排序④顯示工資最高的員工的名字和工作崗位⑤顯示工資高于平均工資的員工信息⑥顯…

Python爬蟲(5)靜態頁面抓取實戰:requests庫請求頭配置與反反爬策略詳解

目錄 一、背景與需求?二、靜態頁面抓取的核心流程?三、requests庫基礎與請求頭配置?3.1 安裝與基本請求3.2 請求頭核心參數解析?3.3 自定義請求頭實戰 四、實戰案例&#xff1a;抓取豆瓣讀書Top250?1. 目標?2. 代碼實現3. 技術要點? 五、高階技巧與反反爬策略?5.1 動態…

HTML給圖片居中

在不同的布局場景下&#xff0c;讓 <img> 元素居中的方法有所不同。下面為你介紹幾種常見的居中方式 1. 塊級元素下的水平居中 如果 <img> 元素是塊級元素&#xff08;可以通過 display: block 設置&#xff09;&#xff0c;可以使用 margin: 0 auto 來實現水平居…

【高頻考點精講】前端構建工具對比:Webpack、Vite、Rollup和Parcel

前端構建工具大亂斗:Webpack、Vite、Rollup和Parcel誰是你的菜? 【初級】前端開發工程師面試100題(一) 【初級】前端開發工程師面試100題(二) 【初級】前端開發工程師的面試100題(速記版) 最近在后臺收到不少同學提問:“老李啊,現在前端構建工具這么多,我該選哪個?…

趕緊收藏!教您如何用 GitHub 賬號,獲取永久免費的 Docker 容器!!快速搭建我們的網站/應用!

文章目錄 ?? 介紹 ???? 演示環境 ???? 永久免費的 Docker 容器 ???? 注冊與登錄? 創建 Docker 容器?? 部署你的網站?? 注意事項?? 使用場景?? 相關鏈接 ???? 介紹 ?? 還在為搭建個人網站尋找免費方案而煩惱? 今天發現一個寶藏平臺!只需一個 Git…

Java大師成長計劃之第3天:Java中的異常處理機制

&#x1f4e2; 友情提示&#xff1a; 本文由銀河易創AI&#xff08;https://ai.eaigx.com&#xff09;平臺gpt-4o-mini模型輔助創作完成&#xff0c;旨在提供靈感參考與技術分享&#xff0c;文中關鍵數據、代碼與結論建議通過官方渠道驗證。 在 Java 編程中&#xff0c;異常處理…

大數據去重

實驗4 大數據去重 1.實驗目的 通過Hadoop數據去重實驗&#xff0c;學生可以掌握準備數據、偽分布式文件系統配置方法&#xff0c;以及在集成開發環境Eclipse中實現Hadoop數據去重方法。 2.實驗要求 了解基于Hadoop處理平臺的大數據去重過程&#xff0c;理解其主要功能&…

http協議、全站https

一、http協議 1、為何要學http協議? 用戶用瀏覽器訪問網頁,默認走的都是http協議,所以要深入研究web層,必須掌握http協議 2、什么是http協議 1、全稱Hyper Text Transfer Protocol(超文本傳輸協議) ### 一個請求得到一個響應包 普通…

使用 Logstash 遷移 MongoDB 數據到 Easysearch

大家好&#xff01;在前面的文章中&#xff0c;我們已經詳細介紹了如何通過 Logstash 和 Canal 工具實現 MySQL 數據向 Easysearch 的遷移。如果您正在使用 MongoDB 作為數據存儲&#xff0c;并希望將其數據遷移到 Easysearch 中&#xff0c;這篇指南或許能為您提供一些幫助。 …