当前位置: 首页 > news >正文

简易图书管理系统

 javaweb+jsp+servlet

实体类

package com.ghx.entity;/*** @author :guo* @date :Created in 2024/12/6 10:13* @description:* @modified By:* @version:*/
public class Book {private int id;private String name;private double price;private String publisher;public Book() {}public Book(int id, String name, double price, String publisher) {this.id = id;this.name = name;this.price = price;this.publisher = publisher;}public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public double getPrice() {return price;}public void setPrice(double price) {this.price = price;}public String getPublisher() {return publisher;}public void setPublisher(String publisher) {this.publisher = publisher;}
}
package com.ghx.entity;/*** @author :guo* @date :Created in 2024/12/3 16:48* @description:* @modified By:* @version:*/
public class User {private int id;private String username;private String password;private String realname;private int age;public User() {}public User(int id, String username, String password, String realname, int age) {this.id = id;this.username = username;this.password = password;this.realname = realname;this.age = age;}public int getId() {return id;}public void setId(int id) {this.id = id;}public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}public String getRealname() {return realname;}public void setRealname(String realname) {this.realname = realname;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}
}

dao

package com.ghx.dao;import java.sql.*;/*** @author :guo* @date :Created in 2024/12/2 14:08* @description:* @modified By:* @version:*/
public class BaseDao {Connection conn=null;PreparedStatement ps=null;ResultSet rs=null;String url = "jdbc:mysql://localhost:3306/day06";String username = "root";String password = "123456";String driverName="com.mysql.cj.jdbc.Driver";public int edit(String sql,Object... obj){try {getConn();ps = conn.prepareStatement(sql);for(int i=0;i<obj.length;i++){ps.setObject(i+1,obj[i]);}int i=ps.executeUpdate();return i;} catch (Exception e) {return 0;} finally {closeAll();}}//连接数据库public void getConn() throws Exception{Class.forName(driverName);conn = DriverManager.getConnection(url, username, password);}//关闭资源public void closeAll(){try {if(rs!=null){rs.close();}if(ps!=null){ps.close();}if(conn!=null){conn.close();}} catch (SQLException e) {throw new RuntimeException(e);}}
}
package com.ghx.dao;import com.ghx.entity.Book;
import com.ghx.entity.User;import java.util.ArrayList;
import java.util.List;
/*** @author :guo* @date :Created in 2024/12/6 10:13* @description:* @modified By:* @version:*/
public class BookDao extends BaseDao{public List<Book> findAll() {List<Book> list=new ArrayList<Book>();try {getConn();String sql="select id,name,price,publisher from tbl_book ";ps=conn.prepareStatement(sql);rs=ps.executeQuery();while (rs.next()){Book book=new Book();book.setId(rs.getInt("id"));book.setName(rs.getString("name"));book.setPrice(rs.getDouble("price"));book.setPublisher(rs.getString("publisher"));list.add(book);}} catch (Exception e) {throw new RuntimeException(e);} finally {closeAll();}return list;}//插入public int insert(String name,double price,String publisher){String sql="insert into tbl_book(name,price,publisher) values (?,?,?)";return edit(sql,name,price,publisher);}//回显数据public Book findById(int id){Book book=null;try {getConn();String sql="select id,name,price,publisher from tbl_book where id=?";ps=conn.prepareStatement(sql);ps.setObject(1,id);rs=ps.executeQuery();while (rs.next()){book=new Book();book.setId(rs.getInt("id"));book.setName(rs.getString("name"));book.setPrice(rs.getDouble("price"));book.setPublisher(rs.getString("publisher"));}} catch (Exception e) {throw new RuntimeException(e);} finally {closeAll();}return book;}//修改public int updateBook(String name,double price,String publisher,int id){String sql= "update tbl_book set name=?,price=?,publisher=? where id=?";return edit(sql,name,price,publisher,id);}//删除public int deleteBook(int id){String sql="delete from tbl_book where id=?";return edit(sql,id);}
}
package com.ghx.dao;import com.ghx.entity.User;import java.util.ArrayList;/*** @author :guo* @date :Created in 2024/12/3 16:48* @description:* @modified By:* @version:*/
public class UserDao extends BaseDao{//登录判断public User find(String username,String password){User user=null;try {getConn();String sql="select id,username,password,realname,age from tbl_user where username=? and password=?";ps=conn.prepareStatement(sql);ps.setObject(1,username);ps.setObject(2,password);rs=ps.executeQuery();while (rs.next()){user=new User();int id = rs.getInt("id");String name = rs.getString("username");String pwd = rs.getString("password");String realname = rs.getString("realname");int age = rs.getInt("age");user.setId(id);user.setUsername(name);user.setPassword(pwd);user.setRealname(realname);user.setAge(age);}return user;} catch (Exception e) {throw new RuntimeException(e);} finally {closeAll();}}//注册public int add(String name,String pwd,String rname,String age){String sql="insert into tbl_user values(null,?,?,?,?)";return edit(sql,name,pwd,rname,age);}
}

servlet

package com.ghx.servlet;import com.ghx.dao.BookDao;
import com.ghx.entity.Book;import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;
import java.util.List;@WebServlet(name = "BookServlet", value = "/BookServlet")
public class BookServlet extends HttpServlet {private BookDao bookDao=new BookDao();@Overrideprotected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {request.setCharacterEncoding("utf-8");String method = request.getParameter("method");if("insert".equals(method)){insertBook(request,response);}else if("getById".equals(method)){getById(request,response);} else if("update".equals(method)){updateById(request,response);}else if("delete".equals(method)){deleteById(request,response);}else {selectAll(request,response);}}private void deleteById(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{int id = Integer.parseInt(request.getParameter("id"));int i = bookDao.deleteBook(id);if(i>0){response.sendRedirect("/BookServlet");}}//修改private void updateById(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{int id = Integer.parseInt(request.getParameter("id"));String name = request.getParameter("name");double price = Double.parseDouble(request.getParameter("price"));String publisher = request.getParameter("publisher");int i = bookDao.updateBook(name, price, publisher, id);if(i>0){response.sendRedirect("/BookServlet");}}//回显数据private void getById(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{int id = Integer.parseInt(request.getParameter("id"));Book byId = bookDao.findById(id);request.setAttribute("bookid",byId);request.getRequestDispatcher("/update.jsp").forward(request,response);}//添加private void insertBook(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{String name = request.getParameter("name");double price = Double.parseDouble(request.getParameter("price"));String publisher = request.getParameter("publisher");int insert = bookDao.insert(name, price, publisher);if(insert>0){response.sendRedirect("/BookServlet");}}//展示全部private void selectAll(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{List<Book> all = bookDao.findAll();request.setAttribute("book",all);request.getRequestDispatcher("/index.jsp").forward(request,response);}}
package com.ghx.servlet;import com.ghx.dao.UserDao;
import com.ghx.entity.User;import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;@WebServlet(name = "UserServlet", value = "/UserServlet")
public class UserServlet extends HttpServlet {private UserDao userDao=new UserDao();@Overrideprotected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {request.setCharacterEncoding("utf-8");String method = request.getParameter("method");if("login".equals(method)){login(request,response);}else if("register".equals(method)){register(request,response);}else if("logout".equals(method)){logout(request,response);}}//退出系统private void logout(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{HttpSession session = request.getSession();User user = (User) session.getAttribute("userinfo");session.removeAttribute("userinfo");response.sendRedirect("/login.jsp");}//注册private void register(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{String username = request.getParameter("username");String password = request.getParameter("password");String realname = request.getParameter("realname");String age = request.getParameter("age");int add = userDao.add(username, password, realname, age);if(add>0){response.sendRedirect("/login.jsp?success=1");}else {request.setAttribute("error2","<span style=\"color: red \">注册失败,用户名已存在!</span>");request.getRequestDispatcher("/register.jsp?error2").forward(request,response);}}//登录private void login(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{String username = request.getParameter("username");String password = request.getParameter("password");User user = userDao.find(username, password);if(user!=null){request.getSession().setAttribute("userinfo",user);response.sendRedirect("/BookServlet");}else {request.setAttribute("error","<span style=\"color: red \">用户名或密码错误!</span>");request.getRequestDispatcher("/login.jsp?error").forward(request,response);}}}

页面

login.jsp

<%--Created by IntelliJ IDEA.User: lenovoDate: 2024/12/3Time: 16:40To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>登录</title><style>/* 整体页面背景设置 */body {font-family: Arial, sans-serif;/* background-image: url('背景图片路径');*/background-size: cover;background-repeat: no-repeat;background-position: center;display: flex;justify-content: center;align-items: center;height: 100vh;margin: 0;}/* 登录框样式 */.login-box {background-color: rgba(255, 255, 255, 0.8);padding: 40px;border-radius: 10px;box-shadow: 0 0 10px rgba(0, 0, 0, 0.2);}/* 标题样式 */h2 {text-align: center;margin-bottom: 30px;color: #333;}/* 输入框样式 */input[type="text"],input[type="password"] {width: 100%;padding: 15px;margin-bottom: 20px;border: 1px solid #ccc;border-radius: 5px;font-size: 16px;}/* 登录按钮样式 */input[type="submit"] {width: 100%;padding: 15px;background-color: #007BFF;color: white;border: none;border-radius: 5px;font-size: 16px;cursor: pointer;}input[type="submit"]:hover {background-color: #0056b3;}/* 注册链接样式 */.register-link {text-align: center;margin-top: 15px;}a {color: #007BFF;text-decoration: none;}a:hover {text-decoration: underline;}</style>
</head>
<body>
<div class="login-box"><h2>登录</h2><div></div><form action="/UserServlet?method=login" method="post"><input type="text" placeholder="用户名" name="username"><input type="password" placeholder="密码" name="password"><input type="submit" value="登录"></form><div class="register-link"><a href="/register.jsp">还没有账号?注册</a></div><div>${error}</div>
</div>
</body>
</html>

register.jsp

<%--Created by IntelliJ IDEA.User: lenovoDate: 2024/12/3Time: 16:46To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>注册</title><style>/* 整体页面背景设置 */body {font-family: Arial, sans-serif;background-color: #f4f4f4;display: flex;justify-content: center;align-items: center;height: 100vh;margin: 0;}/* 注册框样式 */.register-box {background-color: white;padding: 40px;border-radius: 8px;box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);width: 400px;}/* 标题样式 */h2 {text-align: center;margin-bottom: 30px;color: #333;}/* 输入框通用样式 */input[type="text"],input[type="password"],input[type="email"],input[type="number"]{width: 100%;padding: 15px;margin-bottom: 20px;border: 1px solid #ccc;border-radius: 5px;font-size: 16px;}/* 注册按钮样式 */input[type="submit"] {width: 100%;padding: 15px;background-color: #007BFF;color: white;border: none;border-radius: 5px;font-size: 16px;cursor: pointer;}input[type="submit"]:hover {background-color: #007BFF;}/* 已有账号登录链接样式 */.login-link {text-align: center;margin-top: 20px;}a {color: #007BFF;text-decoration: none;}a:hover {text-decoration: underline;}</style>
</head>
<body><div class="register-box"><h2>注册新账号</h2><form action="/UserServlet?method=register" method="post"><input type="text" placeholder="用户名" name="username"><input type="password" placeholder="设置密码" name="password"><input type="text" placeholder="真实姓名" name="realname"><input type="number" placeholder="年龄" name="age"><input type="submit" value="注册"></form><div class="login-link"><a href="login.jsp">已有账号?点击登录</a></div>${error2}</div>
</body>
</html>

index.jsp

<%@ page import="java.util.ArrayList" %>
<%@ page import="com.ghx.entity.User" %><%--Created by IntelliJ IDEA.User: lenovoDate: 2024/12/4Time: 9:25To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head><title>Title</title><style>/* 全局样式重置与基础设置 */* {margin: 0;padding: 0;box-sizing: border-box;font-family: Arial, sans-serif;}body {background-color: #f4f9ff;color: #333;line-height: 1.6;}/* 页面头部样式 */header {background-color: #007bff;color: white;text-align: center;padding: 20px 0;box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);}header h1 {margin: 0;}/* 导航栏样式 */nav {background-color: #0056b3;padding: 10px 0;}nav ul {list-style-type: none;display: flex;justify-content: center;align-items: center;}nav ul li {margin: 0 15px;color: white;}nav a {color: white;text-decoration: none;padding: 8px 15px;border-radius: 4px;transition: background-color 0.3s ease;}nav a:hover {background-color: #003d80;}/* 主要内容区域样式 */main {padding: 20px;max-width: 1000px;margin: 20px auto;background-color: white;box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);border-radius: 5px;}main h1 {text-align: center;margin-bottom: 20px;color: #007bff;}/* 表格样式 */table {width: 100%;border-collapse: collapse;margin-bottom: 20px;border: 1px solid #ccc;}table th,table td {border: 1px solid #ccc;padding: 12px;text-align: center;}table th {background-color: #e6f7ff;color: #333;font-weight: bold;}table tr:nth-child(even) {background-color: #f9f9f9;}table tr:hover {background-color: #e9f3ff;cursor: pointer;}/* 操作链接样式 */table td a {color: #007bff;text-decoration: none;margin: 0 5px;padding: 5px 10px;border-radius: 3px;transition: background-color 0.3s ease, color 0.3s ease;}table td a:hover {background-color: #007bff;color: white;}/* 退出按钮样式 */.logout {float: right;margin-right: 20px;color: white;text-decoration: none;padding: 8px 15px;border-radius: 4px;background-color: #dc3545;transition: background-color 0.3s ease;display: flex;align-items: center;}.logout:hover {background-color: #c82333;}.logout i {margin-right: 5px;}/* 修改成功提示样式 */.success-message {text-align: center;color: green;margin-bottom: 20px;font-weight: bold;display: none;}</style>
</head>
<body>
<c:if test="${sessionScope.userinfo==null}"><c:redirect url="login.jsp"></c:redirect>
</c:if><header><h1>书籍信息管理系统</h1>
</header>
<nav><ul><li>欢迎${sessionScope.userinfo.realname}登录</li></ul><ul><li><a href="#">首页</a></li><li><a href="/insert.jsp">添加</a></li><a href="/UserServlet?method=logout" class="logout">退出</a></ul></nav>
<main><table><tr><th>书籍id</th><th>书籍名</th><th>价格</th><th>出版社</th><th>操作</th></tr><c:forEach items="${requestScope.book}" var="b"><tr><td>${b.id}</td><td>${b.name}</td><td>${b.price}</td><td>${b.publisher}</td><td><a href="/BookServlet?method=delete&id=${b.id}" onclick="return confirm('确定要删除该条信息吗?');">删除</a><a href="/BookServlet?method=getById&id=${b.id}">修改</a></td></tr></c:forEach></table>
</main>
</body>
</html>

insert.jsp


<%@ page import="com.ghx.entity.User" %><%--Created by IntelliJ IDEA.User: lenovoDate: 2024/12/4Time: 10:31To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>Title</title><style>/* 全局样式重置,去除浏览器默认样式差异 */* {margin: 0;padding: 0;box-sizing: border-box;}body {font-family: 'Roboto', sans-serif; /* 使用更现代的字体 */background-color: #eef2f7; /* 淡蓝色系背景,营造清新氛围 */display: flex;justify-content: center;align-items: center;min-height: 100vh;}/* 主要内容容器样式 */.main-container {width: 500px; /* 设定合适的宽度 */background-color: white;border-radius: 8px; /* 较大的圆角,更显柔和 */box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1); /* 柔和阴影效果 */overflow: hidden; /* 隐藏超出部分,确保圆角效果正常显示 */}/* 标题样式 */h2 {background-color: cornflowerblue; /* 标题栏蓝色背景 */color: white;text-align: center;padding: 15px 0;margin-bottom: 20px;}table {width: 100%;border-collapse: collapse;margin-bottom: 20px;}th, td {border-bottom: 1px solid #e0e0e0; /* 仅底部显示边框,简洁风格 */padding: 12px 20px;text-align: left;}th {font-weight: normal; /* 表头字体不加粗,更显简洁 */color: #777; /* 表头文字灰色,区分数据 */}input[type="text"] {width: 100%;padding: 8px;border: 1px solid #ccc;border-radius: 4px;background-color: #f9f9f9; /* 输入框浅灰色背景,更清晰 */color: #333; /* 输入框文字颜色 */outline: none; /* 去除输入框聚焦时的默认边框 */transition: background-color 0.2s ease; /* 背景色过渡效果 */}input[type="text"]:focus {background-color: white; /* 输入框聚焦时变白,增强交互感 */}input[type="submit"] {display: block;width: 100%;padding: 10px 0;background-color: #2ecc71; /* 绿色提交按钮,更醒目积极 */color: white;border: none;border-radius: 4px;cursor: pointer;font-size: 16px;transition: background-color 0.3s ease; /* 背景色过渡效果 */}input[type="submit"]:hover {background-color: #27ae60; /* 悬停时加深绿色 */}</style>
</head>
<body>
<c:if test="${sessionScope.userinfo==null}"><c:redirect url="login.jsp"></c:redirect>
</c:if><div class="main-container"><h2>书籍信息</h2><form action="/BookServlet?method=insert" method="post"> <!-- 添加表单标签,假设提交到当前页面,实际需修改action属性指向处理逻辑 --><table><tr><th>书籍名:</th><td><input type="text"  name="name"></td></tr><tr><th>书籍价格:</th><td><input type="text" name="price"></td></tr><tr><th>出版社:</th><td><input type="text" name="publisher"></td></tr><tr><td colspan="2"><input type="submit" value="确认添加"></td></tr></table></form>
</div></body>
</html>

update.jsp


<%@ page import="com.ghx.entity.User" %><%--Created by IntelliJ IDEA.User: lenovoDate: 2024/12/4Time: 10:31To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>Title</title><style>/* 全局样式重置,去除浏览器默认样式差异 */* {margin: 0;padding: 0;box-sizing: border-box;}body {font-family: 'Roboto', sans-serif; /* 使用更现代的字体 */background-color: #eef2f7; /* 淡蓝色系背景,营造清新氛围 */display: flex;justify-content: center;align-items: center;min-height: 100vh;}/* 主要内容容器样式 */.main-container {width: 500px; /* 设定合适的宽度 */background-color: white;border-radius: 8px; /* 较大的圆角,更显柔和 */box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1); /* 柔和阴影效果 */overflow: hidden; /* 隐藏超出部分,确保圆角效果正常显示 */}/* 标题样式 */h2 {background-color: cornflowerblue; /* 标题栏蓝色背景 */color: white;text-align: center;padding: 15px 0;margin-bottom: 20px;}table {width: 100%;border-collapse: collapse;margin-bottom: 20px;}th, td {border-bottom: 1px solid #e0e0e0; /* 仅底部显示边框,简洁风格 */padding: 12px 20px;text-align: left;}th {font-weight: normal; /* 表头字体不加粗,更显简洁 */color: #777; /* 表头文字灰色,区分数据 */}input[type="text"] {width: 100%;padding: 8px;border: 1px solid #ccc;border-radius: 4px;background-color: #f9f9f9; /* 输入框浅灰色背景,更清晰 */color: #333; /* 输入框文字颜色 */outline: none; /* 去除输入框聚焦时的默认边框 */transition: background-color 0.2s ease; /* 背景色过渡效果 */}input[type="text"]:focus {background-color: white; /* 输入框聚焦时变白,增强交互感 */}input[type="submit"] {display: block;width: 100%;padding: 10px 0;background-color: #2ecc71; /* 绿色提交按钮,更醒目积极 */color: white;border: none;border-radius: 4px;cursor: pointer;font-size: 16px;transition: background-color 0.3s ease; /* 背景色过渡效果 */}input[type="submit"]:hover {background-color: #27ae60; /* 悬停时加深绿色 */}</style>
</head>
<body>
<c:if test="${sessionScope.userinfo==null}"><c:redirect url="login.jsp"></c:redirect>
</c:if><div class="main-container"><h2>书籍信息</h2><form action="/BookServlet?method=update" method="post"> <!-- 添加表单标签,假设提交到当前页面,实际需修改action属性指向处理逻辑 --><table><tr><th>书籍id:</th><td><input type="text" value="${bookid.id}" name="id" readonly></td></tr><tr><th>书籍名:</th><td><input type="text" value="${bookid.name}" name="name"></td></tr><tr><th>书籍价格:</th><td><input type="text" value="${bookid.price}" name="price"></td></tr><tr><th>出版社:</th><td><input type="text" value="${bookid.publisher}" name="publisher"></td></tr><tr><td colspan="2"><input type="submit" value="确认添加"></td></tr></table></form>
</div></body>
</html>

相关文章:

简易图书管理系统

javawebjspservlet 实体类 package com.ghx.entity;/*** author &#xff1a;guo* date &#xff1a;Created in 2024/12/6 10:13* description&#xff1a;* modified By&#xff1a;* version:*/ public class Book {private int id;private String name;private double pri…...

探索自然语言处理奥秘(NLP)

摘要 自然语言处理&#xff08;NLP&#xff09;是人工智能领域的一个重要分支&#xff0c;它致力于使计算机能够理解、解释和生成人类语言。这项技术让机器能够阅读文本、听懂语音&#xff0c;并与人类进行基本的对话交流。 通俗理解 自然语言处理&#xff08;NLP&#xff09…...

刘铁猛C#入门 030 泛型,partial类,枚举,结构

泛型(generic)无处不在 为什么需要泛型&#xff1a;避免成员膨胀或者类型膨胀 正交性&#xff1a;泛型类型(类/接口/委托/......)泛型成员(属性/方法/字段/....类型方法的参数推断 泛型接口/类的 类型参数不只有一个泛型与委托、lambda表达式实现泛型接口类时 &#xff0c;实现…...

迅雷 11.2.2 | 本地会员版,不限速下载,支持云盘

迅雷 v11.2.2 是一款带网盘功能的绿色版下载工具。双击“!)绿化”文件即可在桌面生成快捷图标。该版本干净简洁&#xff0c;仅保留下载和云盘两项核心功能。点击左上角的【新建】按钮&#xff0c;可新建链接下载任务。即使在网络条件一般的情况下&#xff08;如50M宽带&#xf…...

P3131 [USACO16JAN] Subsequences Summing to Sevens S

题目描述 Farmer Johns NN cows are standing in a row, as they have a tendency to do from time to time. Each cow is labeled with a distinct integer ID number so FJ can tell them apart. FJ would like to take a photo of a contiguous group of cows but, due to a…...

股指期货基差为正数,这是啥意思?

在股指期货的世界里&#xff0c;有个挺重要的概念叫“基差”。说白了&#xff0c;基差就是股指期货的价格和它对应的现货价格之间的差价。今天&#xff0c;咱们就来聊聊当这个基差为正数时&#xff0c;到底意味着啥。 基差是啥&#xff1f; 先复习一下&#xff0c;基差 股指…...

docker自动拉取最新镜像并更新

目录 一、自动检查和更新所有正在运行的容器&#xff08;每24h一次&#xff09; 二、仅仅更新特定的容器&#xff08;每24h一次&#xff09; 三、指定更新间隔&#xff08;300秒&#xff09; 四、Watchtower 不会主动删除旧镜像&#xff0c;使用 --cleanup 参数在更新容器后…...

unicloud微信小程序云端一体项目DEMO

最近应客户需求&#xff0c;做了一个产品展示的云开发小程序&#xff0c;从了解云开发到应用到实际项目的产品demo&#xff0c;希望大家能从中获取到对自己有用的东西。 说下心得体会吧&#xff0c;一般小项目用这种云开发确实会减少很多开发成本&#xff0c;人力成本&#xf…...

Spring+Mybatis 整合所需准备

文章目录 SpringMybatis SpringMybatis 准备pom.xml 项目所需jar文件 <spring.version>4.0.2.RELEASE</spring.version> <!-- spring框架包 --><dependency><groupId>org.springframework</groupId><artifactId>spring-test</a…...

后端工程师成长路线图

‌后端开发工程师是软件开发领域中的一个重要角色&#xff0c;主要负责平台设计、接口设计和功能实现。他们的主要职责包括服务器端业务开发、架构设计、系统性能调优等。‌ 后端开发工程师的工作内容通常涉及服务器开发、数据库管理、业务逻辑实现等方面。他们需要与前端工程…...

java -jar ./target/pay.war ./target/pay.war 中没有主清单属 为什么?

当你尝试使用 java -jar ./target/pay.war 来启动你的 WAR 包时&#xff0c;遇到的错误是因为该 WAR 包没有包含主清单属性&#xff08;Main-Class&#xff09;。这是因为你的项目是一个 Spring Boot 项目&#xff0c;并且默认是作为 WAR 文件部署到外部容器&#xff08;如 Tom…...

封闭式论文写作--全面掌握ChatGPT-4o的写作技能,掌握提示词使用技巧、文献检索与分析方法,帮助您选定研究方向,提炼学术论文题目

在当今学术研究中&#xff0c;科研人员在撰写论文时面临诸多挑战。首先是信息量的剧增&#xff0c;科研人员需要快速消化新知识&#xff0c;筛选相关信息并清晰表达。但论文写作不仅是信息的罗列&#xff0c;还需要条理清晰、逻辑严密、语言精准&#xff0c;特别是在竞争激烈的…...

解决Centos6.9的yum的失效问题

相信大家&#xff0c;如果遇到了yum问题的话&#xff0c;经常会很头疼&#xff0c;因此&#xff0c;这里给出了两条命令&#xff0c;这里的前提是你的wget是能用的 1、mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak 2、wget -O /etc/yum.re…...

【日常记录-Java】查看Maven本地仓库的位置

1. 简介 Maven本地仓库主要用于存储和管理项目所需的依赖项&#xff0c;如jar包、pom文件等。默认情况下&#xff0c;其位于用户家目录下的.m2/repository文件夹内。开发者也可以在Maven的配置文件settings.xml中修改本地仓库路径。 2. 方法 2.1 查看settings.xml文件 Maven本…...

软件测试丨Web自动化测试用例录制与编写全攻略

Web自动化测试的功能简介 Web自动化测试主要是使用特定的工具或框架自动执行对Web应用程序进行的测试。通过模拟用户的操作&#xff0c;自动化测试能够验证应用程序的功能及性能。这一过程的大致流程是&#xff1a; 用例设计&#xff1a;明确测试目标、场景及所需功能。录制测…...

.Net学习

1 什么是.NET Core .NET是开发平台&#xff0c;.NET Framework、.NET Core、Xamaarin/Mono的统称。 .NET Framework是只能在Windows上开发的技术 .NET Core是可以跨平台开发的技术 Xamaarin/Mono是移动端开发的技术 .NET Core&#xff1a;跨平台、免费、开源&#xff0c;可…...

2024年华中杯数学建模A题太阳能路灯光伏板的朝向设计问题解题全过程文档及程序

2024年华中杯数学建模 A题 太阳能路灯光伏板的朝向设计问题 原题再现 太阳能路灯由太阳能电池板组件部分&#xff08;包括支架&#xff09;、LED灯头、控制箱&#xff08;包含控制器、蓄电池&#xff09;、市电辅助器和灯杆几部分构成。太阳能电池板通过支架固定在灯杆上端。…...

Spring Cloud Zookeeper 快速入门demo

1.什么是Spring Cloud Zookeeper &#xff1f; Spring Cloud Zookeeper 是一个用于构建分布式系统的工具&#xff0c;它利用 Apache Zookeeper 提供的服务来实现服务注册与发现、配置管理、负载均衡等功能。具体来说&#xff0c;Spring Cloud Zookeeper 可以做以下几件事情&am…...

防火墙有什么作用

防火墙的作用&#xff1a;1. 提供网络安全防护&#xff1b;2. 实施访问控制和流量过滤&#xff1b;3. 检测和阻止恶意攻击&#xff1b;4. 保护内部网络免受未经授权的访问&#xff1b;5. 监控网络流量和安全事件&#xff1b;6. 支持虚拟专用网络&#xff08;VPN&#xff09;。防…...

使用aspx,完成一个转发http的post请求功能的api接口,url中增加目标地址参数,传递自定义header参数

使用aspx&#xff0c;完成一个转发http的post请求功能的api接口&#xff0c;url中增加目标地址参数&#xff0c;传递自定义header参数 首先&#xff0c;简单实现一下&#xff0c;如何在ASPX页面中实现这个功能实现代码说明&#xff1a;注意事项&#xff1a; 然后进阶&#xff0…...

ES使用script进行复杂排序

es数据字段&#xff0c;关注_source内容&#xff0c;为自定义的es表字段内容 {"clerk_id": 3150036230,"clerk_follow_status": 60,"create_time": 1729156110000,"channel": 1,"mid": 1538020071,"binlog_timestamp&…...

大数据技术Kafka详解 ② | Kafka基础与架构介绍

目录 1、kafka的基本介绍 2、kafka的好处 3、分布式发布与订阅系统 4、kafka的主要应用场景 4.1、指标分析 4.2、日志聚合解决方法 4.3、流式处理 5、kafka架构 6、kafka主要组件 6.1、producer(生产者) 6.2、topic(主题) 6.3、partition(分区) 6.4、consumer(消费…...

观察者模式的理解和实践

引言 在软件开发中&#xff0c;设计模式是开发者们为了解决常见的设计问题而总结出来的一系列最佳实践。观察者模式&#xff08;Observer Pattern&#xff09;是其中一种非常经典且使用率极高的设计模式。它主要用于定义对象之间的一对多关系&#xff0c;使得当一个对象的状态发…...

Web3.0:连接分布式未来的纽带

随着技术的不断进步&#xff0c;Web3.0正逐渐成为人们关注的焦点。作为Web的下一代&#xff0c;Web3.0将引领我们进入一个全新的数字时代&#xff0c;重新定义了我们与互联网的关系 Web3.0&#xff0c;也称为“分布式Web”&#xff0c;是互联网的下一代演进。它不仅是信息的传…...

鸿蒙Next通过oss上传照片到阿里云

前言 最近在写纯血鸿蒙的APP&#xff0c;需要用到oss上传照片&#xff0c;之前的客户端 Android 和 IOS 都已经实现了&#xff0c;获取的阿里云签名的上传地址是服务端实现的&#xff0c;相信大部分公司都是这样的模式&#xff0c;服务端也是调用阿里云的SDK来实现的&#xff…...

微信小程序实现图片拖拽调换位置效果 -- 开箱即用

在编写类似发布朋友圈功能的功能时&#xff0c;需要实现图片的拖拽排序&#xff0c;删除图片等功能。 一、效果展示 **博主的小程序首页也采用了该示例代码&#xff0c;可以在威信中搜索&#xff1a;我的百宝工具箱 二、示例代码 1.1、在自己的小程序中创建组件 1.2、组件…...

Django异步视图adrf解决办法

提问 在Django编写异步视图的时候会出现 AssertionError: Expected a Response, HttpResponse or HttpStreamingResponse to be returned from the view 或者 TypeError: sync_to_async can only be applied to sync functions. 诸如此类的错误的时候一般发生在异步视图中…...

C++:类和对象(2)

1. 类的默认成员函数&#xff1a; 类的默认成员函数就是用户没有显示实现&#xff0c;编译器会自动生成的成员函数称为默认成员函数。一个类&#xff0c;我们不写的情况下编译器会默认生成6个默认成员函数&#xff08;构造函数&#xff0c;析构函数&#xff0c;拷贝构造函数&a…...

.NET用C#导入Excel数据到数据库

将Excel文件中的数据导入到数据库中不仅能够提升数据处理的效率和准确性&#xff0c;还能极大地促进数据分析和决策制定的过程。尤其在企业级应用中&#xff0c;Excel作为数据输入和初步整理的工具非常普遍&#xff0c;但其功能对于复杂查询、大规模数据管理和跨部门的数据共享…...

市场上显卡型号需求分析

两个平台统计&#xff1a;&#xff08;关键词统计&#xff0c;仅做参考&#xff09; GPU型号&#xff5c;平台 github(提交量/万) huggingface&#xff08;模型量/个&#xff09; H100 6.6 210 A100 17.2 483 V100 14.4 484 4090 27.3 31 3090 11.1 92 在git…...

IO模型分类

IO模型分类 简单了解 阻塞I/O 当用户程序执行read&#xff0c;线程被阻塞&#xff0c;等待两个过程&#xff0c;内核数据准备好和数据从内核态拷贝到用户态。read才返回 非阻塞I/O 非阻塞的read请求在还没准备好数据就返回&#xff0c;期间程序不断轮询内核直到数据准备完…...

使用API有效率地管理Dynadot域名,查看域名优惠信息

前言 Dynadot是通过ICANN认证的域名注册商&#xff0c;自2002年成立以来&#xff0c;服务于全球108个国家和地区的客户&#xff0c;为数以万计的客户提供简洁&#xff0c;优惠&#xff0c;安全的域名注册以及管理服务。 Dynadot平台操作教程索引&#xff08;包括域名邮箱&…...

QT 中 QMessageBox 的简单用法

效果 思路 // 创建一个question弹出对话框&#xff0c;添加两个按钮&#xff1a;Yes和NoQMessageBox *box new QMessageBox(QMessageBox::Question, "提示", "确认删除的信息吗&#xff1f;", QMessageBox::Yes | QMessageBox::No, this);box->button(…...

2024-12-6-sklearn学习(4) 支持向量机 吴楚东南坼,乾坤日夜浮。

文章目录 sklearn学习(4) 支持向量机4.1 分类4.1.1 多元分类4.1.2 得分和概率4.1.3 非均衡问题 4.2 回归4.3 密度估计, 异常&#xff08;novelty&#xff09;检测4.4 复杂度4.5 使用诀窍(Tips on Practical Use)4.6 核函数4.6.1 自定义核4.6.1.1 使用 python 函数作为内核4.6.1…...

Linux 正确关机方式详解

在Linux系统中&#xff0c;正确地关机是一个重要的操作&#xff0c;它不仅影响到系统的数据完整性&#xff0c;还可能影响到其他用户的工作。本文将详细介绍Linux系统中的各种关机方式&#xff0c;包括它们的使用场景和具体命令。 为什么需要正确关机 在DOS和Windows系统中&a…...

React Portals 有什么用

React Portals是React提供的一种机制&#xff0c;它允许开发者将组件渲染到DOM树中的不同位置&#xff0c;而不受组件层次结构的限制。React Portals的主要用途和优势包括以下几个方面&#xff1a; 用途和优势 处理全局UI元素 React Portals允许将UI元素渲染到应用的根DOM之外…...

光学偏振的基础知识

前言与目录 XXX 目录 一、 二、 三、 一、总结 光的偏振 光具有三个基本特性&#xff0c;即波长、强度和偏振。光的波长很容易理解&#xff0c;以常见的可见光为例&#xff0c;波长范围为380~780nm。光的强度也很容易理解&#xff0c;一束光的强弱可以通过功率的大小来表征…...

小程序 - 计算器

小程序交互练习 - 计算器小程序 目录 计算器 功能描述 准备工作 创建项目 配置导航栏 创建utils目录 math.js文件内容 calc.js文件内容 页面内容 页面样式内容 页面脚本事件 功能截图 总结 计算器 在日常生活中&#xff0c;计算器是人们广泛使用的工具&#xff0…...

软件架构:从传统单体到现代微服务的技术演变

1.引言 在软件开发中&#xff0c;架构设计不仅仅是程序员的技术任务&#xff0c;它更是一个项目成功的关键。无论是小型应用还是大型分布式系统&#xff0c;软件架构都直接影响着系统的可维护性、可扩展性、性能和稳定性。理解软件架构的必要性&#xff0c;能够帮助开发人员做…...

CTF之密码学(rot密码)

ROT加密算法&#xff0c;也被称为Caesar加密&#xff0c;是一种简单的字母替换加密算法。以下是对ROT加密算法的详细介绍&#xff1a; 一、基本原理 ROT加密算法通过将字母表中的每个字母向后&#xff08;或向前&#xff09;移动固定的位置来加密文本。选择一个固定的偏移量&…...

linux安装nodejs管理器,并配置node、npm 软链接

一&#xff0c;安装nodejs管理器 注意——不同版本&#xff0c;可能有问题 亲测这个版本&#xff0c;安装后&#xff0c;npm正常使用——v20.10.0 二&#xff0c;配置软链接——快速访问——不要多些空格&#xff08;会出现invalid option错误&#xff09; ln -s /www/server…...

Linux 环境下 PostgreSQL 常用命令操作指南

在 Linux 系统中&#xff0c;PostgreSQL 配备了一系列实用命令以进行数据库操作。具体如下&#xff1a; 注意事项&#xff1a;若采用 docker 部署&#xff0c;需预先进入 docker 容器。 进入 docker 容器命令&#xff1a; docker exec -it 容器名 bash 向容器内复制本地文件命…...

Implicit style-content separation using lora

1.Introduction 图像风格化,这个任务涉及根据某些风格参考改编图像的风格,这些参考可以是基于文本或基于图像的,同时保持其内容不变,内容指的是图像的语义信息和结构,而风格通常指的是视觉特征和模式,例如颜色和纹理。这是一个有挑战的任务,因为风格和内容之间的强关联…...

网易博客旧文-----如何在WINDOWS下载安卓(android)源代码并和eclipse做关联

如何在WINDOWS下载安卓&#xff08;android&#xff09;源代码并和eclipse做关联 2013-02-05 17:27:16| 分类&#xff1a; 安卓开发 | 标签&#xff1a; |举报 |字号大中小 订阅 编写安卓程序时&#xff0c;有时想看看安卓某些类的实现&#xff0c;但默认情况下环境是不带的。…...

Qt入门9——绘图

基本概念 虽然Qt已经内置了很多的控件,但是不能保证现有控件就可以应对所有场景. 很多时候我们需要更强的"DIY"能力&#xff1b; Qt 提供了画图相关的API,可以允许我们在窗口上绘制任意的图形形状,来完成更复杂的界面设计。 绘图api核心类&#xff1a; 类说明QPaint…...

漫画之家系统:Spring Boot框架下的漫画版权保护

摘 要 随着信息技术和网络技术的飞速发展&#xff0c;人类已进入全新信息化时代&#xff0c;传统管理技术已无法高效&#xff0c;便捷地管理信息。为了迎合时代需求&#xff0c;优化管理效率&#xff0c;各种各样的管理系统应运而生&#xff0c;各行各业相继进入信息管理时代&a…...

K8S服务突然中断无法访问:报The node had condition: [DiskPressure]异常

一、背景 程序在运行过程中&#xff0c;突然无法访问&#xff0c;发现后台接口也无法访问&#xff1b;查看kuboard&#xff0c;发现报如下异常&#xff1a;The node had condition: [DiskPressure]. 继续查看磁盘使用率&#xff0c;发现系统盘使用率已经高达93%。问题前后呼应…...

5.11【机器学习】

先是对图像进行划分 划分完后&#xff0c; 顺序读取文件夹&#xff0c;在文件夹里顺序读取图片&#xff0c; 卷积层又称为滤波器&#xff0c;通道是说滤波器的个数&#xff0c;黑白通道数为1&#xff0c;RGB通道个数为3 在输入层&#xff0c;对于输入层而言&#xff0c;滤波…...

JavaWeb开发12

登陆拦截 会话技术 会话&#xff1a;用户打开浏览器&#xff0c;访问web服务器的资源&#xff0c;会话建立&#xff0c;直到有一方断开连接&#xff0c;会话结束。在一次会话中可以包含多次请求和响应 会话跟踪&#xff1a;一种维护浏览器状态的方法&#xff0c;服务器需要识…...

《乌合之众》笔记

1.集体会降智&#xff0c;会互相传染 2.群体是无名氏&#xff0c;因此没必要承担责任。约束个人的责任感消失 3.有意识人格的消失&#xff0c;无意识人格的得势&#xff0c;思想和感情因为暗示和互相传染而转向一个共同的方向&#xff0c;以及立刻把暗示的观念转化为行动的倾…...