javaweb实验:JSP+JDBC综合实训_数据库记录的增加、查询

news2024/10/2 22:17:58

目录

  • 前言
  • 实验目的
  • 实验原理
  • 实验内容
  • 实验过程
    • 流程图
    • 建立数据库和用户表
    • 实现用户登录功能
      • 连接数据库
      • 登录
      • 登录检测
      • 登录成功
      • 登录失败
    • 实现用户注册功能
      • 注册表单
      • 注册验证及操作数据库
      • 注册成功
      • 注册失败
    • 新闻管理功能
  • 总结

前言

JSP是一种基于Java的Web编程语言,可以生成动态的网页内容。JDBC是Java数据库连接的缩写,是一种用于访问数据库的标准API。通过使用JSP和JDBC,可以实现在网页上对数据库的操作,如增加、查询、修改和删除数据。本实验的目的是掌握使用JSP和JDBC完成数据库操作的基本方法,包括建立数据库连接、执行SQL语句、处理结果集等。

本文中使用的数据库是MySQL,使用的可视化工具是navicat for MySQL,使用的java编译器是idea

实验目的

  1. 熟悉使用 JDBC 访问数据库的一般流程;
  2. 理解使用JSP的核心知识和JDBC API进行数据库中数据的添加和查询操作
    的原理,学会相关编程方法;
  3. 能够根据贯穿项目案例的实际应用需要,综合运用 JSP+JDBC 相关知识和
    技术,完成数据库的连接、增加、查询。

实验原理

数据库应用是 Web 应用开发的一个重要应用。Web 应用程序访问数据库的
步骤是:①加载数据库驱动程序;②建立连接对象;③创建语句对象;④获得结
果集;⑤关闭有关连接对象。
重要代码如下:
Class.forName(DBDRIVER); //加载驱动 Connection conn=DriverManager.getConnection(DBURL,DBUSER,DBPASS); //建立连接对象 //使用 PreparedStatement 接口运行 SQL 语句 PreparedStatement pstmt=conn.prepareStatement(sql); ResultSet rs=pstmt.executeQuery(); //执行查询,返回结果集 //以下语句关闭记录集等对象,注意顺序。 rs.close(); pstmt.close(); conn.close();

实验内容

(一)编程实现用户的登录与注册功能。
【步骤 1】建立数据库 db_news2019 和用户表 t_user。
【步骤 2】实现用户登录功能。
【步骤 3】实现用户注册功能。
(二)将用户登录与注册功能代码与新闻管理功能代码进行集成在一起。

实验过程

流程图

在这里插入图片描述

建立数据库和用户表

数据库代码

DROP TABLE IF EXISTS `t_user`;
CREATE TABLE `t_user` (
  `uid` varchar(16) NOT NULL,
  `uname` varchar(20) NOT NULL,
  `upassword` varchar(20) NOT NULL,
  `usex` varchar(10) NOT NULL,
  `uemail` varchar(20) NOT NULL,
  `uregdate` date NOT NULL,
  PRIMARY KEY (`uid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
INSERT INTO `t_user` VALUES ('', '', '', '', '', '');#这里填需要的填入的信息

实现用户登录功能

代码如下:
这里是一个java代码,用来实现jdbc连接数据库的功能

连接数据库

import java.awt.*;
import java.sql.*;

public class JDBC {
    private Connection conn = null;
    private String url = "jdbc:mysql://localhost:3306/db_news2019";//数据库名称
    private String user = "root";//用户名
    private String password = "root";//密码

    public Connection getConnection() throws ClassNotFoundException, SQLException {
        Class.forName("com.mysql.jdbc.Driver");
        conn = DriverManager.getConnection(url, user, password);
        return conn;
    }
    }

下面是登录功能

登录

<%@ page contentType="text/html;charset=utf-8" pageEncoding="utf-8"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
<title>登录程序之表单页面</title>
</head>
<body>
<%
	String userId = "";
	String password = "";
	Cookie[] cookies = request.getCookies();
	if(cookies != null){
		for(int i=0; i<cookies.length; i++){
			if (cookies[i].getName().equals("Cookie2019")) {
		           //如果cookie对象的名称为Cookie2019
				userId = cookies[i].getValue().split("#")[0];  //获取用户名
				password = cookies[i].getValue().split("#")[1];  //获取密码
			}
		}
	}
%>

<center>
  <h1>登录操作</h1>
  <hr>
  <form action="login_check.jsp" method="post">
    <table border="1">
      <tr>
        <td colspan="2">用户登录</td>   
      </tr>
      <tr>
        <td>登录ID:</td>
          <td><input type="text" name="id" value="<%=userId%>"></td>
      </tr>
      <tr>
        <td>登录密码:</td>
          <td><input type="password" name="password" value="<%=password%>"></td>
      </tr>
      <tr>
        <td colspan="2">
            <center>
          <input type="submit" value="登录">&nbsp;
          <input type="reset" value="重置">&nbsp;
          <input type="checkbox" name="remenber" checked>记住我
            </center>
        </td>   
      </tr>
    </table>
  </form>
    如果尚未注册,请先点击<a href="register.jsp">这里</a> 进行注册!<br><br>
    如果您是管理员,可点击<a href="mlogin.jsp">这里</a>进入!
</center>
</body>

在这里插入图片描述
下面是登录检测功能,用来检测是否正确登录

登录检测

<%@ page import="java.sql.Connection" %>
<%@ page import="java.sql.PreparedStatement" %>
<%@ page import="java.sql.ResultSet" %>
<%@ page import="MysqlData.JDBC" %>
<%@page contentType="text/html;charset=utf-8" pageEncoding="utf-8"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
<title>登录程序之验证页面</title>
</head>
<body>
<%
    try {
        //获取用户名和密码
        request.setCharacterEncoding("UTF-8");
        String id= request.getParameter("id");
        String password= request.getParameter("password");
        String remenber = request.getParameter("remenber");
        //访问数据库,查询用户名和密码

        Connection conn= new JDBC().getConnection();
        //创建语句容器
        PreparedStatement stmt=conn.prepareStatement("select * from t_user where uid=? and upassword=?");
        stmt.setString(1,id);
        stmt.setString(2,password);
        ResultSet rs=stmt.executeQuery();
        //(rs.next())
        //"admin".equals(name)&&"123456".equals(pwd)
        String name = "";
        Cookie[] cookies;
        if(rs.next()){
            name = rs.getString("uname");
            cookies = request.getCookies();
            int i;
            boolean cookies_flag = false; //表示是否创建Cookie
            if(cookies != null){
                for(i=0; i<cookies.length; i++){
                    if("Cookie2019".equals(cookies[i].getName())){
                        break;
                    }
                }
                if(i<cookies.length){
                    cookies_flag = false;
                }else{
                    cookies_flag = true;
                }
            }else{
                cookies_flag = true;
            }

            Cookie cookie;

            if(remenber != null){
                if(cookies_flag){
                    cookie = new Cookie("Cookie2019", id+"#"+password);
                    cookie.setMaxAge(10);
                    response.addCookie(cookie);
                }
            }else{
                if(!cookies_flag){
                    cookie = new Cookie("Cookie2019", id+"#"+password);
                    cookie.setMaxAge(0);
                    response.addCookie(cookie);
                }
            }
            rs.close();
            stmt.close();
            conn.close();
            session.setAttribute("username", name);
            session.setMaxInactiveInterval(60);
            response.sendRedirect("login_success.jsp");
        }else{
            rs.close();
            stmt.close();
            conn.close();
            response.sendRedirect("login_failure.jsp");
        }
    }catch (Exception e) {
        out.print("错误!");
    }
%>
</body>

下面是登录成功的页面

登录成功

<%@ page import="java.sql.Connection" %>
<%@ page import="java.sql.PreparedStatement" %>
<%@ page import="java.sql.ResultSet" %>
<%@ page import="MysqlData.JDBC" %>
<%@ page import="MysqlData.JDBC" %>
<%@ page contentType="text/html;charset=utf-8" pageEncoding="utf-8"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
<title>登录程序之登录成功页面</title>
</head>
<body>
<center>
    <h2>登录成功!欢迎[<%=session.getAttribute("username")%>]访问新闻管理系统!</h2>
	<hr>
	<a href="Insert.jsp">增加新闻</a>&nbsp;&nbsp;
	<a href="logout.jsp">安全退出</a>
	<%
		request.setCharacterEncoding("UTF-8");
		Connection conn = null;
		PreparedStatement stmt = null;
		ResultSet rs = null;
		String title = request.getParameter("标题");
		String auther = request.getParameter("作者");
		String date = request.getParameter("日期");
		String heat = request.getParameter("热度");
		int result = 0;
		boolean isError = false;

		try {

			conn= new JDBC().getConnection();
			if (title != null) {
				stmt = conn.prepareStatement("insert t_news values (?,?,?,?)");
				stmt.setObject(1, title);
				stmt.setObject(2, auther);
				stmt.setObject(3, date);
				stmt.setObject(4, Integer.parseInt(heat));
				result = stmt.executeUpdate();
			}
			//创建语句容器
			stmt=conn.prepareStatement("select * from t_news");
			rs=stmt.executeQuery();

	%>

	<table align="center" border="1" cellspacing="0">
		<tr>
			<th>标题</th>
			<th>作者</th>
			<th>日期</th>
			<th>热度</th>
			<th>操作</th>
		</tr>
		<%
			while(rs.next()) {
		%>
		<tr>
			<td><%=rs.getObject("标题")%></td>
			<td><%=rs.getObject("作者")%></td>
			<td><%=rs.getObject("日期")%></td>
			<td><%=rs.getObject("热度")%></td>
			<td>
				<a href="">查询详细</a>&nbsp;
				<a href="">修改</a>&nbsp;
				<a href="">删除</a>
			</td>
		</tr>
		<%
			}
				rs.close();
				stmt.close();
				conn.close();
			} catch (Exception e) {
				isError = true;
			}
		%>
	</table>
</center>
</body>
<script>
	<%
	if (isError) {
	%>
		alert("新闻标题为空或该新闻标题已存在!");
		window.location.href = "login_success.jsp";
	<%
	}
	%>
</script>
</html>

在这里插入图片描述

下面是登录失败的页面

登录失败

<%@ page contentType="text/html;charset=utf-8" pageEncoding="utf-8"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
<title>登录程序之登录成功页面</title>
</head>
<body>
<center>
  <h1>登录操作</h1>
  <hr>
  <h2>用户ID或密码错误!请重新<a href="logout.jsp">登录</a></h2>
</center>
</body>

实现用户注册功能

注册表单

<%@ page contentType="text/html;charset=utf-8" pageEncoding="utf-8" %>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html;charset=utf-8">
    <title>注册程序之表单页面</title>
</head>
<body>
<%
    String userId = "";
    String password = "";
    Cookie[] cookies = request.getCookies();
    if (cookies != null) {
        for (int i = 0; i < cookies.length; i++) {
            if (cookies[i].getName().equals("Cookie2019")) {
                //如果cookie对象的名称为Cookie2019
                userId = cookies[i].getValue().split("#")[0];  //获取用户名
                password = cookies[i].getValue().split("#")[1];  //获取密码
            }
        }
    }
%>
<center>
    <h1>注册操作</h1>
    <hr>
    <form action="register_check.jsp" method="post">
        <table border="1">
            <tr>
                <td colspan="2">用户注册</td>
            </tr>
            <tr>
                <td>登录ID:</td>
                <td><input type="text" name="id" value="<%=userId%>"></td>
            </tr>
            <tr>
                <td>真实姓名:</td>
                <td><input type="text" name="name"></td>
            </tr>
            <tr>
                <td>性别:</td>
                <td>
                    <label><input type="radio" name="gender" value="男"></label>
                    <label><input type="radio" name="gender" value="女"></label>
                </td>
            </tr>
            <tr>
                <td>E-Mail:</td>
                <td><input type="email" name="email"></td>
            </tr>
            <tr>
                <td>登录密码:</td>
                <td><input type="password" name="password1" value="<%=password%>"></td>
            </tr>
            <tr>
                <td>确认密码:</td>
                <td><input type="password" name="password2"></td>
            </tr>
            <tr>
                <td colspan="2">
                    <center>
                        <input type="submit" value="注册">&nbsp;
                        <input type="reset" value="重置">&nbsp;
                        <input type="button" value="返回" onclick="window.location.href = 'login.jsp'">
                    </center>
                </td>
            </tr>
        </table>
    </form>
</center>
</body>
</html>

在这里插入图片描述

注册验证及操作数据库

<%@ page import="java.sql.Connection" %>
<%@ page import="java.sql.PreparedStatement" %>
<%@ page import="java.sql.ResultSet" %>
<%@ page import="java.sql.DriverManager" %>
<%@ page import="MysqlData.JDBC" %>
<%@ page contentType="text/html;charset=utf-8" language="java" %>
<html>
<head>
    <title>注册程序之验证页面</title>
</head>
<body>
<%
    try {
        String text = "";
        request.setCharacterEncoding("utf-8");
        String id = request.getParameter("id");
        String password1 = request.getParameter("password1");
        String password2 = request.getParameter("password2");
        String name = request.getParameter("name");
        String sex = request.getParameter("gender");
        String email = request.getParameter("email");

        Connection conn= new JDBC().getConnection();
        //创建语句容器
        String sql1 = "select * from t_user where uid=?";
        PreparedStatement stmt1 = conn.prepareStatement(sql1);
        stmt1.setObject(1,id);
        ResultSet rs = stmt1.executeQuery();

        if ("".equals(password1) || "".equals(password2) || "".equals(id) || "".equals(name)) {
            text = "注册信息不完整!";
            response.sendRedirect("reg_failure.jsp");
        }else if(rs.next()) {
            text = "用户ID已存在!";
            response.sendRedirect("reg_failure.jsp");
        } else if (!password1.equals(password2)) {
            text = "两次输入密码不一致!";
            response.sendRedirect("reg_failure.jsp");
        } else {
            String sql2 = "insert t_user values (?,?,?,?,?,?)";
            PreparedStatement stmt2 = conn.prepareStatement(sql2);
            stmt2.setObject(1,id);
            stmt2.setObject(2,name);
            stmt2.setObject(3,password1);
            stmt2.setObject(4,sex);
            stmt2.setObject(5,email);
            stmt2.setObject(6,new java.util.Date());
            int result = stmt2.executeUpdate();
            response.sendRedirect("reg_success.jsp");
            stmt2.close();
        }
        session.setAttribute("text",text);
        session.setAttribute("name",name);
        rs.close();
        stmt1.close();
        conn.close();
        } catch (Exception e) {
            out.print("数据添加失败!");
        }

%>
</body>
</html>

在这里插入图片描述

注册成功

<%@ page contentType="text/html;charset=utf-8" language="java" %>
<html>
<head>
    <title>注册程序之成功页面</title>
</head>
<body>
<center>
<%! int count = 5; %>
[<%=session.getAttribute("name")%>]&nbsp恭喜您--注册成功!<br>
<%=count%>秒后自动跳转界面
<%
    response.setHeader("refresh","1");
//    response.setHeader("refresh","5;URL=register.jsp");
    if(count == 0) {
        response.sendRedirect("login.jsp");
        session.removeAttribute("text");
        session.removeAttribute("name");
        count = 6;
    }
    count--;
%>
</center>
</body>
</html>

注册失败

<%@ page contentType="text/html;charset=utf-8" language="java" %>
<html>
<head>
    <title>注册程序之失败页面</title>
</head>
<body>
<center>
    <h1>注册操作</h1>
    <hr>
    <h2>
        <%if (session.getAttribute("text").equals("用户ID已存在!")) {%>
        错误:<%=session.getAttribute("text")%><a href="login.jsp">登录</a>
        <%
            }else {
        %>
        错误:<%=session.getAttribute("text")%>请重新<a href="register.jsp">注册</a></h2>
        <%
            }
            session.removeAttribute("text");
            session.removeAttribute("name");
        %>
</center>
</body>
</html>

新闻管理功能

<%@ page contentType="text/html;charset=utf-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<%@ page language="java" contentType="text/html;charset=utf-8"
         pageEncoding="utf-8"%>
<%@ page
        import="java.sql.*"
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  <title>显示所有新闻</title>
</head>
<body>

<table align="center" border="0" width="750px" cellspacing="0">
  <tr>
    <td align="center" style="font-family:'黑体'; font-size:28px;">登录成功!欢迎[<%=session.getAttribute("username")%>]访问新闻管理系统!</td>
  </tr>
  <tr>
    <td><hr></td>
  </tr>
  <tr style="font-family:'宋体'; font-size:24px;">
    <td align="right"><a href="javascript:void(0)"><b>增加新闻</b></a>&nbsp;&nbsp;<a href="logout.jsp">安全退出</a></td>
  </tr>
</table>
<table  align="center" border="1" width="750px" cellspacing="0">
  <tr>
    <th width="320px">标题</th>
    <th width="120px">作者</th>
    <th width="110px">日期</th>
    <th width="50px">热度</th>
    <th width="150px">操作</th>
  </tr>
  <%
    Class.forName("com.mysql.jdbc.Driver");
    String url = "jdbc:mysql://localhost:3306/db_news2019";
    String username = "root";
    String password = "root";
    Connection conn = DriverManager.getConnection(url,username,password);
    Statement stmt = conn.createStatement();
    String sql = "select * from t_news";
    ResultSet rs = stmt.executeQuery(sql);

    while(rs.next()){
  %>
  <tr>
    <td><%=rs.getString("title") %></td>
    <td><%=rs.getString("author") %></td>
    <%-- 					<td><%=rs.getString("content") %></td> --%>
    <td><%=rs.getDate("enterdate") %></td>
    <td><%=rs.getInt("hot") %></td>
    <td>
      <a href="javascript:void(0)">查询详情</a>
      <a href="javascript:void(0)">修改</a>
      <a href="javascript:void(0)">删除</a>
    </td>

  </tr>

  <%
    }

    rs.close();
    stmt.close();
    conn.close();
  %>
</table>
</body>
</html>
</body>
</html>

在这里插入图片描述

还有一些诸如登出的操作已经是老生常谈在此就不多赘述,主要还是功能的实现和数据库的连接比较重要

总结

本 次 实 验 是 使 用 J S P + J D B C 技 术 开 发 一 个 简 单 的 We b 应 用 , 实现 对 数 据 库 中 的 记 录 进 行 增 加 和 查 询 的 功 能 。实 验 过 程 中 ,我学 习 了 如 何 使 用 J S P 页 面 和 J ava B e a n 组 件 进 行 数 据 交 互 ,如 何使 用 J D B C A P I 操 作 数 据 库 ,以 及 如 何 处 理 异 常 和 错 误 。实 验 的结 论 是 , J S P + J D B C 技 术 是 一 种 有 效 的 We b 开 发 方 法 , 可 以 简化 编 程 和 提 高 效 率 。

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

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

相关文章

[stable-diffusion-art] 指北-1

https://stable-diffusion-art.com/beginners-guide/https://stable-diffusion-art.com/beginners-guide/ Stable Diffusion教程目录 - 知乎按&#xff1a; 这个外国教程站中的文章太好了&#xff0c;数量适当&#xff0c;质量很高可惜博文只能按时间浏览&#xff0c;所以整理…

无线网络安全

这里写目录标题 目的数据加密WEPRSN 身份认证EAP802.1X&#xff08;EAPOL&#xff09; RSNA密钥派生密钥派生方法密钥派生流程 密钥缓存密钥缓存流程 目的 1.数据的完整性&#xff08;Integrity&#xff09;&#xff1a;用于检查数据在传输过程中是否被修改。 2.数据的机密性&…

【25】linux进阶——网络文件系统NFS

大家好&#xff0c;这里是天亮之前ict&#xff0c;本人网络工程大三在读小学生&#xff0c;拥有锐捷的ie和红帽的ce认证。每天更新一个linux进阶的小知识&#xff0c;希望能提高自己的技术的同时&#xff0c;也可以帮助到大家 另外其它专栏请关注&#xff1a; 锐捷数通实验&…

STC15W1048脚单片机,开漏和推挽输出比较(点亮LED)

增强型 8051 CPU&#xff0c;1T单时钟/机器周期&#xff0c;指令代码完全兼容传统8051 工作电压&#xff1a;2.5V - 5.5V 1K/2K/3K/4K/5K/7K字字节片内Flash程序存储器&#xff0c;擦写次数10万次以上 片内128字节的SRAM XRAM (xdata) 有片内EEPROM功能&#xff0c;擦写次数1…

医药之家:国家基本药物目录或于6月迎来更新

国家基本药物目录是医疗机构和保险提供商选择经济实惠且具有良好临床疗效的药物的指南&#xff0c;预计在6月迎来下一次更新。新版目录将聚焦儿科药物、眼科及中药。该目录作为医疗机构和保险公司选药的重要指南&#xff0c;着重选取经济实惠且具备良好临床疗效的药品。专家将从…

PID整定一:响应曲线法

PID整定一&#xff1a;响应曲线法 1参考[完全经验法、等幅振荡法、衰减曲线法、响应曲线法]1.1完全经验法1.2等幅振荡法1.3衰减曲线法1.4响应曲线法 2响应曲线法PID整定示例 1参考[完全经验法、等幅振荡法、衰减曲线法、响应曲线法] 参考 1.1完全经验法 这种方法没有任何定…

ripro主题修改教程-首页搜索框美化教程

先看效果图: 我们来看怎么实现: 1、找到wp-content/themes/ripro/assets/css/diy.css并将下面的内容整体复制进去并保存 /*首页搜索框*/ .bgcolor-fff {background-color: #fff; } .row,.navbar .menu-item-mega>.sub-menu{margin-left:-10px;margin-right:-10px;} .home…

中级软件设计师备考---程序设计语言和法律法规知识

目录 需要掌握的程序语言特点法律法规知识---保护期限法律法规知识---知识产权人确定法律法规知识---侵权判定标准化基础知识 需要掌握的程序语言特点 Fortran语言&#xff1a;科学计算、执行效率高Pascal语言&#xff1a;为教学而开发的、表达能力强&#xff0c;演化出了Delp…

《编码——隐匿在计算机软硬件背后的语言》精炼——第15-16章(十六进制,RAM)

“学习如春起之苗&#xff0c;不见其增&#xff0c;日有所长。” —— 宋代朱熹 文章目录 十六进制十六进制概述十六进制表字节到十六进制 存储器特定的读功能特定的写功能RAM大型RAM阵列 十六进制 十六进制概述 十六进制是一种适用于计算机的进制法。在十进制中&#xff0c;…

PS学习笔记(零基础PS学习教程)

很多新手学习PS不知从何下手&#xff0c;做设计的第一阶段肯定是打牢基础&#xff0c;把工具用熟练&#xff1b;本期特别为大家整理了PS入门的学习笔记&#xff0c;把每个工具的用法整理了下来&#xff0c;在使用过程中有哪里不清楚的可以翻看来看看~ 一、ps的工作界面的介绍 …

腾讯云的cdn怎么配置|腾讯云CDN配置教程

众所周知,WordPress系统不挂加速或者是服务器不好速度贼慢,所以要想办法解决访问速度的问题,经过我不断的研究腾讯云的CDN,因为我用的是zibll子比主题,不懂的就挂会导致无法使用第三方登录,因为有缓存导致一直不回调一直卡在那个登录界面和支付没反应要么出现二维码,要么…

【C++实现】从0简单理解muduo网络库

文章目录 TODO前言前置知识IO 异步同步还是异步举例muduo为什么用LT模式vscode 的一些编译方法 底层数据结构分析noncopyableLogger设置宏来方便打印日志 Timestamp 时间类InetAddressInetAddress 是对sockaddr_in结构体的一层封装 ChannelPoller.h EpollPoller &#xff08;调…

c++ 11标准模板(STL) std::vector (四)

定义于头文件 <vector> template< class T, class Allocator std::allocator<T> > class vector;(1)namespace pmr { template <class T> using vector std::vector<T, std::pmr::polymorphic_allocator<T>>; }(2)(C17…

庖丁解牛函数知识---C语言《1》

目录 前言&#xff1a; 1.程序中的函数 2.库函数的学习和使用 3.自定义函数 4.传值调用与传址调用 5.形参与实参 6.练习---二分查找函数 ❤博主CSDN:啊苏要学习 ▶专栏分类&#xff1a;C语言◀ C语言的学习&#xff0c;是为我们今后学习其它语言打好基础&#xff0c;C生…

Apache POI,springboot中导出excel报表

2. Apache POI 2.1 介绍 Apache POI 是一个处理Miscrosoft Office各种文件格式的开源项目。简单来说就是&#xff0c;我们可以使用 POI 在 Java 程序中对Miscrosoft Office各种文件进行读写操作。 一般情况下&#xff0c;POI 都是用于操作 Excel 文件。 Apache POI 的应用场景…

【SQL】窗口函数及行转列等操作总结

1. 窗口函数 窗口函数的应用 排名问题&#xff1a;每个部门按业绩来排名 topN问题&#xff1a;找出每个部门排名前N的员工进行奖励 窗口函数的语法 <窗口函数> over (partition by <用于分组的列名> order by <用于排序的列名>) <窗口函数>的位置&…

Java基础--->JVM(1)

文章目录 为什么学习JVM&#xff1f;什么是虚拟机&#xff1f;JVM的作用JVM组成部分类加载器类什么时候会被加载&#xff08;初始化&#xff09;有哪些类加载器什么是双亲委派机制如何打破双亲委派机制 为什么学习JVM&#xff1f; ​ 学习JVM是为了能更深入的理解Java这门语言&…

推荐算法实战项目:PNN 原理以及案例实战(附完整 Python 代码)

本文要介绍的是由上海交通大学的研究人员提出的PNN&#xff08;Product-based Neural Networks&#xff09;模型&#xff0c;该模型包含一个embedding层来学习类别数据的分布式表示&#xff0c;此外还包含product层来捕获字段之间的特征交互模式&#xff0c;最后包含一个全连接…

一个实例讲讲 ChatGPT 推理

吴恩达与 OpenAI 官方联合推出了 1.5 小时的免费视频课&#xff1a;地址&#xff1a; https://learn.deeplearning.ai/chatgpt-prompt-eng/lesson/2/guidelines 今天我学了第四讲&#xff0c;ChatGPT Inferring&#xff0c;即推理 教学中&#xff0c;给的例子是情绪判断。 我很…

手写数字识别基本思路

问题 什么是MNIST?如何使用Pytorch实现手写数字识别&#xff1f;如何进行手写数字对模型进行检验&#xff1f; 方法 mnist数据集 MNIST数据集是美国国家标准与技术研究院收集整理的大型手写数字数据集&#xff0c;包含了60,000个样本的训练集以及10,000个样本的测试集。 使用P…