如何把数据库中的数据显示到页面

主要内容:使用JDBC访问数据库中数据(Java Web数据可视化案例)

文章目录

  • 前期准备:
  • 案例:
    • 第一步:创建数据库及数据
    • 第二步:编写实体类
    • 第三步:编写Dao类
    • 第四步:编写Servlet代码
    • 第五步:画页面
    • 页面运行效果
  • 练习:
    • 第一步:创建数据库及数据
    • 第二步:编写实体类
    • 第三步:编写Dao类
    • 第四步:编写Servlet代码
    • 第五步:画页面
    • 页面运行效果
  • 扩展:
    • Dao类代码中JDBC代码
    • JDBC使用
    • 完整代码
  • 总结:


前期准备:

安装 JDK、MySQL、Tomcat 和 Eclipse的 Java Web 版本;

①、Eclipse需要Web版本JAVA环境变量配置步骤及测试(JDK的下载 & 安装 & 环境配置教程)(右上角其实也可以更改)
确认Eclipse的版本:
在这里插入图片描述

②、此内容涉及数据库,如果没有数据库点此链接下载

③、Tomcat是必须安装并配置的,否则不能运行,Tomcat下载安装以及配置(详细教程)

案例:

要求:使用Java Web技术把数据库中数据分析的结果展示到网页上,分析结果是关于购买图书的记录,具体包括购买年份、图书名称、作者、价格等信息,具体要求如下:

①、写出创建数据库表 book 并插入模拟数据的SOL语句
②、编写表示信息的实体类 BookBean,应该包括成员变量、访问器方法和构造方法。
③、编写 BookDao类,连接到数据库,执行查询,封装查询结果
④、编写 BookServlet类,关联到请求/list 上,调用 BookDao得到数据并存储到reguest 对象中,然后转向 list.isp.
⑤、编写listisp,使用JSTL 把查询的结果显示在网页上

第一步:创建数据库及数据

首先需要创建数据库和表使用MySQL创建数据库和表更多学习,也可以看下面的语句

用命令行方式创建数据库

首先【Win+R】打开cmd,或者在MySQL安装的位置,打开 bin 文件夹输入cmd回车
然后输入:mysql -u root -p,再输入密码即可

①、创建数据库:create database practice2020;
②、使用数据库:use practice2020
③、创建表:

create table book(
id int primary key auto_increment,
year int,
bookname int,
author varchar(255),
price varchar(255)
);

④、为了方便在界面上展示效果在这插入语句:

insert into book values(1,2002,'Web前端','张三','25.5'); 
insert into book values(2,2012,'JAVA','李四','52.1');

最后test02这个数据库里的book表的数据:
在这里插入图片描述

接下来我们要编写代码来表示数据库里的数据

第二步:编写实体类

(1)、类名
(2)、成员变量,和表中的列对应
(3)、访问器方法,setter方法和getter方法
(4)、无参数构造方法
(5)、有参数的构造方法,有多少个成员,就给多少个参数

通常与数据库中的表结构一致。

package Bean;

public class BookBean {
	private int id;
	private String year;
	private String bookname;
	private String author;
	private String price;
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getYear() {
		return year;
	}
	public void setYear(String year) {
		this.year = year;
	}
	public String getBookname() {
		return bookname;
	}
	public void setBookname(String bookname) {
		this.bookname = bookname;
	}
	public String getAuthor() {
		return author;
	}
	public void setAuthor(String author) {
		this.author = author;
	}
	public String getPrice() {
		return price;
	}
	public void setPrice(String price) {
		this.price = price;
	}
	public BookBean(int id, String year, String bookname, String author, String price) {
		super();
		this.id = id;
		this.year = year;
		this.bookname = bookname;
		this.author = author;
		this.price = price;
	}
}

第三步:编写Dao类

访问数据库,取出数据库数据

// 得到所有数据
public List<BookBean> list() {
		// (1)定义存储数据的容器
		List<BookBean> datas = new ArrayList<>();
		// (2)把相关对象定义成成员变量
		// (3)try...catch...finally
		try {
			// (6)写sql语句
			String sqlString = "select * from book order by id";
			// (7)连接到数据库
			Class.forName(driverName);
			con = DriverManager.getConnection(url, username, password);
			// (8)执行sql语句,会得到结果集
			pstmt = con.prepareStatement(sqlString);
			ResultSet rSet = pstmt.executeQuery(sqlString);
			// (9)遍历结果集,next指向下一行,并返回true,
			// 如果没有下一行了,返回false,循环结束
			while (rSet.next()) {
				// (10)取出当前行的各个列
				int id = rSet.getInt(1);
				String year = rSet.getString(2);
				String bookname = rSet.getString(3);
				String author = rSet.getString(4);
				String price = rSet.getString(5);

				// (11)转换成对象(封装成),调用多个参数的构造方法
				BookBean bookBean = new BookBean(id, year, bookname, author, price);
				// (12)把当前对象添加到集合中(容器中)
				datas.add(bookBean);
			}
		} catch (Exception e) {
			// (4)处理异常
			// System.out.println(e.getMessage());
			e.printStackTrace();
		} finally {
			// (5)释放资源
			if (rs != null) {
				try {
					rs.close();
				} catch (Exception e2) {

				}
			}
			if (pstmt != null) {
				try {
					pstmt.close();
				} catch (Exception e2) {

				}
			}
			if (con != null) {
				try {
					con.close();
				} catch (Exception e2) {

				}
			}
		}
		// (13)把表示所有对象的数据返回
		return datas;
	}

这里如果说你换了个项目,那么有些参数你是需要改的:

// (1)定义存储数据的容器
List<BookBean> datas = new ArrayList<>();
// (6)写sql语句
String sqlString = "select * from book order by id";
// (10)取出当前行的各个列
	int id = rSet.getInt(1);
	String year = rSet.getString(2);
	String bookname = rSet.getString(3);
	String author = rSet.getString(4);
	String price = rSet.getString(5);
// (11)转换成对象(封装成),调用多个参数的构造方法
BookBean bookBean = new BookBean(id, year, bookname, author, price);

第四步:编写Servlet代码

进行业务处理,如果没有业务,只是把Dao里面的数据直接返回给Controller

package servlet;

import java.io.IOException;
//.....import信息在此省略
import java.util.List;

// (1)关联到FindAll地址
@WebServlet("/FindAll")
public class FindAllServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
	    // (2)前两行调用servcie或者DAO得到数据
            BookDao dao = new BookDao();
	    List<BookBean> datas = dao.list();

	    // (3)传值到界面,第一个参数是名字,第二个参数是具体值
	    request.setAttribute("datas", datas);
	    
	    // (4)跳转到界面,list.jsp是显示数据的界面,list.jsp可以继续访问request
	    RequestDispatcher rd = request.getRequestDispatcher("list.jsp");
	    rd.forward(request, response);    
	    
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		doGet(request, response);
	}

}

第五步:画页面

编写HTML文件或JSP、Vue文件都可以,只要是前端的
这里用的是JSP

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>数据列表</title>
</head>
<body>
	<table>
		<tr>
			<th>ID</th>
			<th>购买年份</th>
			<th>图书名称</th>
			<th>作者</th>
			<th>价格</th>
		</tr>
		<!-- request.setAttribute("datas",datas); -->
		<!-- datas表示所有数据,data表示其中的一个数据 -->
		<c:forEach var="data" items="${datas}">
			<tr>
				<td>${data.id}</td>
				<td>${data.year}</td>
				<td>${data.bookname}</td>
				<td>${data.author}</td>
				<td>${data.price}</td>
			</tr>
		</c:forEach>
	</table>
</body>
</html>

页面运行效果

在这里插入图片描述

练习:

要求:使用Java Web技术把数据库中数据分析的结果展示到网页上,分析结果是关于全国学历教育入学数education,具体包括年份、本科入学人数、高中入学人数和初中入学人数。具体要求如下:

①、写出创建数据库表education并插入模拟数据的SQL语句。
②、编写表示信息的实体类 EducationBean,应该包括成员变量、访问器方法和构造方法。
③、编写 EducationDao类,连接到数据库,执行查询,封装查询结果。
④、编写EducationServlet类,关联到请求/list 上,调用EducationDao得到数据并存储到request对象中,然后转向 list.jsp
⑤、编写 list.jsp,使用JSTL把查询的结果显示在网页上。

第一步:创建数据库及数据

①、写出创建数据库test,表education并插入模拟数据的SQL语句

首先创建数据库:create database test;
然后使用数据库:use test
然后创建表:

create table education(
year int primary key,
benke int,
gaozhong int,
chuzhong int
);

在这里插入图片描述

然后插入一些模拟数据并查看:

插入数据:

insert into education values(2018,3000,4000,5000);
insert into education values(2019,3300,4400,5200);
insert into education values(2020,3400,4500,5300);
insert into education values(2021,3500,4600,5500);

查看数据: select * from education;
在这里插入图片描述

第二步:编写实体类

②、编写表示信息的实体类 EducationBean,应该包括成员变量、访问器方法(set、get)和构造方法

打开Java编译工具,这里用的是Eclipse
选择【File】→【new】→【Project】
在这里插入图片描述
接着选择【web】→【Dynamic Web Project】
在这里插入图片描述
然后起个名字直接点完成
在这里插入图片描述
接下来创建实体类bean
在src上点击右键,new→package
在这里插入图片描述
输入名字bean
在这里插入图片描述
然后创建类EducationBean
在bean上点右键,new→class
在这里插入图片描述
输入名字EducationBean
在这里插入图片描述
接下来编写代码(跟数据库对应):

package bean;

public class EducationBean {
//成员变量
	private int year;
	private int benke;
	private int gaozhong;
	private int chuzhong;

}

然后生成访问器方法(set、get)和构造方法
生成set、get方法动图演示:
请添加图片描述
生成构造方法动图演示:

请添加图片描述
最后EducationBean 里面完整代码:

package bean;

public class EducationBean {
	//成员变量
	private int year;
	private int benke;
	private int gaozhong;
	private int chuzhong;
	//生成set、get方法
	public int getYear() {
		return year;
	}
	public void setYear(int year) {
		this.year = year;
	}
	public int getBenke() {
		return benke;
	}
	public void setBenke(int benke) {
		this.benke = benke;
	}
	public int getGaozhong() {
		return gaozhong;
	}
	public void setGaozhong(int gaozhong) {
		this.gaozhong = gaozhong;
	}
	public int getChuzhong() {
		return chuzhong;
	}
	public void setChuzhong(int chuzhong) {
		this.chuzhong = chuzhong;
	}
	//生成构造方法
	public EducationBean(int year, int benke, int gaozhong, int chuzhong) {
		super();
		this.year = year;
		this.benke = benke;
		this.gaozhong = gaozhong;
		this.chuzhong = chuzhong;
	}
	
}

第三步:编写Dao类

③、编写 EducationDao类,连接到数据库,执行查询,封装查询结果

把驱动程序放到工程里面的lib文件夹,跟着自己的mysql版本走(百度自行搜索jar包下载)
在这里插入图片描述
要在上方加上mysql连接的代码

	private String url = "jdbc:mysql://localhost:3306/test?useSSL=false";  
    // 数据库信息,旧版本中不用useSSL=false
	private String username = "root";
	private String password = "123456";
	private String driverName = "com.mysql.jdbc.Driver";
	
	private Connection con=null;  //连接对象
	private PreparedStatement pstmt = null; //语句对象 
	private ResultSet rs = null; //结果集对象

接下来跟着上方案例的第三步来写,中间的一些参数要改
要改的地方:
数据库名字、数据库字段、表名、用户名、密码、实体类名字、当前行的各个列、构造方法中的参数

package dao;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;

import bean.EducationBean;

public class EducationDao {
	private String url = "jdbc:mysql://localhost:3306/test?useSSL=false";  
    // 数据库信息,旧版本中不用useSSL=false
	private String username = "root";
	private String password = "123456";
	private String driverName = "com.mysql.jdbc.Driver";
	
	private Connection con=null;  //连接对象
	private PreparedStatement pstmt = null; //语句对象 
	private ResultSet rs = null; //结果集对象
	// 得到所有数据
	public List<EducationBean> list(){
		// (1)定义存储数据的容器
		List<EducationBean> datas = new ArrayList<>();
		// (2)把相关对象定义成成员变量
		// (3)try...catch...finally
		try {
			// (6)写sql语句
			String sqlString = "select * from education order by year";
			// (7)连接到数据库
			Class.forName(driverName);
			con = DriverManager.getConnection(url,username,password);
			// (8)执行sql语句,会得到结果集
			pstmt = con.prepareStatement(sqlString);
			ResultSet rSet = pstmt.executeQuery(sqlString);
			// (9)遍历结果集,next指向下一行,并返回true,
			// 如果没有下一行了,返回false,循环结束
			while(rSet.next()) {
				// (10)取出当前行的各个列
				int year = rSet.getInt(1);
				int benke = rSet.getInt(2);
				int gaozhong = rSet.getInt(3);
				int chuzhong = rSet.getInt(4);

				// (11)转换成对象(封装成),调用多个参数的构造方法
				EducationBean educationBean = new EducationBean(year, benke,gaozhong,chuzhong);
				// (12)把当前对象添加到集合中(容器中)
				datas.add(educationBean);
			}
		} catch (Exception e) {
			// (4)处理异常
			//System.out.println(e.getMessage());
			e.printStackTrace();
		} finally {
			// (5)释放资源
			if(rs!=null) {
				try {
					rs.close();
				} catch (Exception e2) {
					
				}
			}
			if(pstmt!=null) {
				try {
					pstmt.close();
				} catch (Exception e2) {
					
				}
			}
			if(con!=null) {
				try {
					con.close();
				} catch (Exception e2) {
					
				}
			}
		}
		// (13)把表示所有对象的数据返回
		return datas;
	}

}

解释:
con:连接对象
pstmt:语句对象
ResultSet:结果集对象

第四步:编写Servlet代码

④、编写 EducationServlet类,关联到请求/list上,调用EducationDao得到数据并存储到request对象中,然后转向 list.jsp

首先新建servlet这样一个包
在这里插入图片描述
然后在包上右键新建Servlet
在这里插入图片描述
起名:EducationServlet
在这里插入图片描述

点下一步后,因为关联到请求/list 上,所以:
请添加图片描述

当然不在这一步改也可以,创建好后在代码内改也行

在这里插入图片描述

新建好后直接找到doGet方法,把上方案例中的2、3、4步复制过来,改下实体类、Dao包名字即可:

	protected void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		// TODO Auto-generated method stub
		EducationDao dao = new EducationDao();
		List<EducationBean> datas = dao.list();

		// (3)传值到界面,第一个参数是名字,第二个参数是具体值
		request.setAttribute("datas", datas);

		// (4)跳转到界面,list.jsp是显示数据的界面,list.jsp可以继续访问request
		RequestDispatcher rd = request.getRequestDispatcher("list.jsp");
		rd.forward(request, response);

	}

第五步:画页面

⑤、编写 list.jsp,使用JSTL把查询的结果显示在网页上

需要把JSTL的库放在lib文件夹内(百度自行搜索jar包下载)
在这里插入图片描述
接下来新建JSP页面
在这里插入图片描述
取名为:list.jsp
在这里插入图片描述
这里的页面内容也可以跟着上面的案例来改:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>数据列表</title>
</head>
<body>
	<table>
		<tr>
			<th></th>
			<th>本科人数</th>
			<th>高中人数</th>
			<th>初中人数</th>
		</tr>
		<!-- request.setAttribute("datas",datas); -->
		<!-- datas表示所有数据,data表示其中的一个数据 -->
		<c:forEach var="data" items="${datas}">
			<tr>
				<td>${data.year}</td>
				<td>${data.benke}</td>
				<td>${data.gaozhong}</td>
				<td>${data.chuzhong}</td>
			</tr>
		</c:forEach>
	</table>
</body>
</html>

在这里插入图片描述

到此代码全部写完

页面运行效果

运行Servlet:
在这里插入图片描述

至此项目包目录:
在这里插入图片描述

扩展:

Dao类代码中JDBC代码

①、 JDBC是Java访问各种数据库管理系统的标准的API,用户编写数据库访问代码的时候不需要关注数据库管理系统的实现细节。

②、使用JDBC的准备工作:
不同的数据库管理系统需要对应的驱动程序,驱动程序是一个压缩包jar包。

要访问的数据库的基本信息:数据库位置(IP+端口+数据库名),认证信息(用户名和口令)

SQL语句:要完成的功能对应的SQL语句

③、 JDBC相关的接口和类:

Driver表示连接数据库的驱动程序,通过驱动程序与数据库交互;
Connection表示应用程序与数据库之间的连接,不管进行什么操作都要先连接到数据库;
Statement、PreparedStatement、CallableStatement执行SQL语句
ResultSet表示执行查询时候的结果集

JDBC使用

①、加载驱动程序:
格式:Class.forName(驱动程序名字)
例如:Class.forName("com.mysql.jdbc.Driver");

②、创建连接:
格式:Connection con = DriverManager.getConnection(constr,user,pass);

constr表示连接字符串,user表示用户名,pass表示密码
例如:Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/bookstore" ,"root" ,"root");

③、创建语句对象:
格式:Statement stmt = con.createStatement();

④、执行增删改:
格式:int n = stmt.executeUpdate(sql)n表示执行成功的记录数

例如:

String sql = "insert into student values('000004,wangfei',20)";
int n = stmt.executeUpdate(sql);

正常插入返回1,插入失败返回0

⑤、执行查询:
格式:ResultSet rs = stmt.executeQuery(sql)n表示执行成功的记录数,sql表示要执行的sql语句

例如:

String sql ="select * from student";
ResultSet rs = stmt.executeQuery(sql);

⑥、结果集处理:

结果集就像一个有表头的表格

通过next方法指向下一行,如果没有下一行返回false

使用getInt(n),或者getInt(列名)得到当前行的第一列,返回值是int类型

使用getString(n),或getString(列名),返回值是String类型

查询单个值(例如某个表的记录数):

rs.next();
int n = rs.getInt(1);

查询一条记录(例如根据主键查询学生):

if(rs.next())
	String sname = rs.getString(2)

查询多条记录(例如查询所有学生):

while(rs.next))
	String sname = rs.getString(2);

⑦、关闭相关对象:

需要关闭的对象:连接对象Connection、语句对象Statement、结果集对象ResultSet

关闭顺序:结果集对象、语句对象、连接对象

通常关闭的时候,需要异常处理:

//加载驱动程序,驱动程序不存在
//执行的SQL语句出错了
//连接的数据库不存在,数据库没有启动也会出错
if(rs!=null) try{rs.close()}catch(Exception e);  
if(stmt!=null) try{stmt.close()}catch(Exception e); 
if(con!=null) try{con.close()}catch(Exception e);

⑧、异常处理
在访问数据库的过程中可能发生各种异常,所以需要进行异常处理。

完整代码

package util;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;

public class DBBean {
	//数据库信息,旧版本中不用useSSL=false
	private String url = "jdbc:mysql://localhost:3306/practice2020?useSSL=false";
	private String username = "root";
	private String password = "root";
	private String driverName = "com.mysql.jdbc.Driver";
	
	private Connection con=null; //连接对象
	private PreparedStatement pstmt = null; //语句对象
	private ResultSet rs = null; //结果集对象
	
//连接、执行、关闭
public DBBean() throws ClassNotFoundException, SQLException {
	//加载驱动程序,创建连接
	Class.forName(driverName);
	con = DriverManager.getConnection(url,username,password);
}
//增删改(区别在SQL语句和SQL语句里面需要的变量)
public int executeUpdate(String sql,List<Object> params) throws SQLException{
	//创建语句对象
	pstmt = con.prepareStatement(sql);
	//如果有参数,表示提供的参数在SQL语句里面需要变量。如果变量和参数不一致,报错
	if(params!=null && params.size()>0){
	 	//有多少变量循环多少次
		for(int i=0;i<params.size();i++){ 
			//对变量赋值
			pstmt.setObject(i+1,params.get(i));  
		}
	}
	return pstmt.executeUpdate();
}

//查询
public ResultSet executeQuery(String sql,List<Object> params) throws SQLException{
	pstmt = con.prepareStatement(sql);
	if(params!=null && params.size()>0){
		for(int i=0;i<params.size();i++){
			pstmt.setObject(i+1,params.get(i));
		} 
	}
	return pstmt.executeQuery();
}
//关闭
public void close(){
	if(rs!=null){
		try {rs.close();
		}catch(Exception ee){}
	}
	if(pstmt!=null){
		try {pstmt.close();
		}catch(Exception ee){} 
	}
	if(con!=null){
		try {con.close();
		}catch(Exception ee){}
		}
	} 
}

总结:

实现自己数据的展示

基本过程:
(1)创建 Web 工程;
(2)创建表示信息的实体类;
(3)添加两个类库:json 和 mysql 驱动程序;
(4)复制 DBBean,修改数据库信息;
(5)创建 DAO,从数据库中获取信息;
(6)创建 Service,调用 DAO 得到数据;
(7)创建 Servlet,调用 Service,对用户返回 JSON 数据;
(8)创建页面文件,获取 Servlet 的数据并显示。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

springboot集成hadoop3.2.4HDFS

前言 记录springboot集成hadoop3.2.4版本&#xff0c;并且调用HDFS的相关接口&#xff0c;这里就不展示springboot工程的建立了&#xff0c;这个你们自己去建工程很多教程。 一、springboot配置文件修改 1.1 pom文件修改 <!-- hadoop依赖 --><dependency><gro…

Stable Diffusion - API和微服务开发

Stable Diffusion 是一种尖端的开源工具&#xff0c;用于从文本生成图像。 Stable Diffusion Web UI 通过 API 和交互式 UI 打开了许多这些功能。 我们将首先介绍如何使用此 API&#xff0c;然后设置一个示例&#xff0c;将其用作隐私保护微服务以从图像中删除人物。 推荐&…

一种轻量的“虚拟机”——Windows 沙盒模式

Windows 沙盒模式Windows沙盒的好处操作步骤Windows沙盒的好处 相比虚拟机和第三方的沙盒软件&#xff0c;Windows Sandbox启用后仅占用100MB硬盘空间&#xff0c;还能与物理机安全地共享部分内存空间。简单来说就是易用、免费、不卡机&#xff01; 由于要保证沙盒内的数据不…

(九)【软件设计师】计算机系统-浮点数习题

文章目录一、2009年下半年第3、4题二、2011年上半年第5题三、2012年下半年第3题四、2015年上半年第1题五、2015年下半年第3题六、2016年下半年第3题七、2018年上半年第1题八、2020年下半年第3题知识点回顾 &#xff08;八&#xff09;【软件设计师】计算机系统—浮点数一、2009…

Android13 PMS是如何启动的?

作者&#xff1a;Arthas0v0 平常使用安卓实际就是在使用各种app&#xff0c;而下载的app实际是一个apk文件。这个apk文件的安装就交给了PackageManagerService来实现。PackageManagerService的启动也是在SystemServer中。这个过程比较长需要长一点的时间来理。 SystemServer.s…

ORACLE EBS 系统架构与应用实践(一)

一、从ERP到EBS 从上世纪70年代晚期的物料需求计划MRP&#xff08;Material Requirements Planning&#xff09;到80年代的MRP II&#xff0c;再到90年代的企业资源计划ERP&#xff08;Enterprise Resource Planning&#xff09;&#xff0c;企业管理软件&#xff08;或曰应用…

u盘里的文件被自动删除了怎么办?五种数据恢复方案

u盘是我们日常生活中常常用到的一种便携式存储设备&#xff0c;可以帮助我们存储和携带大量的文件信息。但是&#xff0c;使用过程中难免会遇到一些问题&#xff0c;例如u盘会自己删除文件的情况&#xff0c;如果你遇到了这种情况&#xff0c;该怎样找回u盘自己删除的文件呢&am…

AI 芯片的简要发展历史

随着人工智能领域不断取得突破性进展。作为实现人工智能技术的重要基石&#xff0c;AI芯片拥有巨大的产业价值和战略地位。作为人工智能产业链的关键环节和硬件基础&#xff0c;AI芯片有着极高的技术研发和创新的壁垒。从芯片发展的趋势来看&#xff0c;现在仍处于AI芯片发展的…

FFMPEG: [ API ] >打开/关闭一个输入文件

它们是成对出现的. ffmpeg 把输入文件--转换成--->AVFormatContext实例 ◆ avformat_open_input() int avformat_open_input(AVFormatContext ** ps,const char * url,ff_const59 AVInputFormat * fmt,AVDictionary ** options )Open an input stream and read the header.…

分子生物学 第二章 遗传物质

文章目录第二章 遗传物质第一节 遗传物质的分子本质大多数生物体的遗传物质是DNA有些生物体的遗传物质是RNA蛋白质能否充当遗传物质第二节 核酸的结构1 DNA双螺旋结构的特征2 影响DNA双螺旋结构稳定性的因素3 DNA结构的多态性4 DNA多链结构5 DNA的超螺旋结构6 RNA的二级结构第三…

归并排序(非递归实现) 计数排序

上一期我们说了归并排序的递归是如何实现的&#xff0c;但是递归如果层次太多的话容易栈溢出&#xff0c;所以我们还需要掌握非递归的实现&#xff0c;但是我们非递归需要如何实现&#xff1f; 下面我们就来看一下非递归的实现 归并排序的非递归实现他并不需要栈队列这些东西…

day10_oop

今日内容 零、 复习昨日 一、面向对象的概念 二、面向对象编程 三、内存图 零、 复习昨日 晨考复习… 一、作业 package com.qf.homework;import java.util.Arrays;/*** --- 天道酬勤 ---** author QiuShiju* desc* ----------------* 引用数据类型的默认初始值null*/ public …

Redis数据备份与恢复

Redis数据备份与恢复 文章目录Redis数据备份与恢复1. Redis备份的方式2. RDB持久化2.1 什么是RDB&#xff1f;2.2 Fork操作2.3 save VS bgsave2.4 关于RDB备份的一些配置项2.5 RDB的备份与恢复2.6 RDB的自动触发2.7 RDB的优势与劣势3. AOF持久化3.1 什么是AOF&#xff1f;3.2 A…

ASP一个简单的网上教务系统模型的设计与实现

对于一个学校来说&#xff0c;大量教师信息&#xff0c;学生信息管理&#xff0c;学生成绩管理&#xff0c;基本数据的维护都难于通过传统的方法进行管理&#xff1a;这就迫切需要利用计算机技术来帮助学校管理者处理这些日常管理。本系统正是为了简化教学任务的管理&#xff0…

Python爬虫之多线程加快爬取速度

之前我们学习了动态翻页我们实现了网页的动态的分页&#xff0c;此时我们可以爬取所有的公开信息了&#xff0c;经过几十个小时的不懈努力&#xff0c;一共获取了 16万 条数据&#xff0c;但是软件的效率实在是有点低了&#xff0c;看了下获取 10 万条数据的时间超过了 56 个小…

Vue——组件基础

目录 定义一个组件​ 使用组件​ 传递 props​ 监听事件​ 通过插槽来分配内容​ 动态组件​ DOM 模板解析注意事项​ 大小写区分​ 闭合标签​ 元素位置限制​ 组件允许我们将 UI 划分为独立的、可重用的部分&#xff0c;并且可以对每个部分进行单独的思考。在实际应…

如何用 YonBuilder 构建线索管理应用

加速企业数智营销&#xff1a;如何用 YonBuilder 构建线索管理应用 如何用 YonBuilder 低代码开发线索管理应用&#xff1f; 线索管理是指通过各种渠道收集、筛选、打分、分配、跟进和培育潜在客户的信息&#xff0c;以便将其转化为成交客户的过程。 通过数智化手段实现良好…

00后整顿职场,我直呼太卷了....

内卷的来源 内卷最早的“出处”是几张名校学霸的图片。 大学生们刷爆朋友圈的几张“内卷”图片是这样的&#xff1a;有的人骑在自行车上看书&#xff0c;有的人宿舍床上铺满了一摞摞的书&#xff0c;有的人甚至边骑车边端着电脑写论文。这些图片最早在清华北大的学霸之间流传。…

C++学习从基础到高阶(基于黑马程序员教程)

视频链接&#xff1a;黑马程序员匠心之作|C教程从0到1入门编程,学习编程不再难&#xff08;52个小时&#xff09; C语言中文网&#xff1a;http://c.biancheng.net/cplus/ Visual Studio 2022 下载地址&#xff1a;https://visualstudio.microsoft.com/zh-hans/downloads/ Visu…

JavaWeb - Web网站的组成,工作流程以及开发模式

一. Web Web&#xff1a;全球广域网&#xff0c;也称玩万维网(www Wrold Wide Web)&#xff0c;就是能够通过浏览器访问的网站学习Web开发&#xff0c;其实就是要使用Java这门语言来开发这样的Web网站&#xff0c;这也是现在Java语言最主流的企业级应用方式。使用Java语言开发…