JavaWeb开发(十五)实战-生鲜后台管理系统(二)注册、登录、记住密码

1. 生鲜后台管理系统-注册功能

1.1. 注册功能

  (1)创建注册RegisterServlet,接收form表单中的参数。
  (2)service创建一个userService处理业务逻辑。
  (3)RegisterServlet将参数传递给servie层。
  (4)Dao层创建一个userDao操作数据库。
  (5)userService调用dao层userDao将用户注册信息加入到数据库中。
  (6)注册成功后RegisterServlet调用请求转发到login、jsp界面。

1.2. 步骤

在这里插入图片描述

  (1)创建RegisterServlet

package com.zzs.szsd.web;
import com.zzs.szsd.bean.User;
import com.zzs.szsd.service.UserService;
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 java.io.IOException;
@WebServlet(name = "RegisterServlet",urlPatterns = "/register")
public class RegisterServlet extends HttpServlet {protected void doPost(HttpServletRequest request,HttpServletResponse response)throws ServletException, IOException {String id = request.getParameter("id");String name = request.getParameter("name");String password = request.getParameter("password");String email = request.getParameter("email");User user=new User();user.setName(name);user.setPassword(password);user.setEmail(email);UserService userService=new UserService();boolean register = userService.register(user);if (register) {response.sendRedirect(request.getContextPath()+"/login.jsp");}else {response.setContentType("text/html;charset=utf-8");response.getWriter().write("注册失败");}}protected void doGet(HttpServletRequest request,HttpServletResponse response)throws ServletException, IOException {}
}

  (2)创建UserService

package com.zzs.szsd.service;
import com.zzs.szsd.bean.User;
import com.zzs.szsd.dao.UserDao;
import java.sql.SQLException;
public class UserService {/*** @method:register 用户注册* @params:[name, password, email]* @return: boolean*///1. 判断注册用户是否存在public boolean register(User user) {boolean register=false;UserDao userDao = new UserDao();boolean checkUser = userDao.checkUser(user.getName());//2. 如果不存在就将用户信息添加到数据库if (checkUser) {register = userDao.register(user);}return register;}/*** @method:login 用户登录* @params:[name, password]* @return: void*/public User login(String name, String password) throws SQLException {UserDao userDao=new UserDao();User user = userDao.login(name, password);return  user;}
}

  (3)创建UserDao

package com.zzs.szsd.dao;
import com.mchange.v2.c3p0.ComboPooledDataSource;
import com.zzs.szsd.bean.User;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanHandler;
import java.sql.SQLException;
public class UserDao {/*** @method:checkUser 检查用户是否存在* @params:[name]* @return: boolean*/public boolean checkUser(String name){try {ComboPooledDataSource dataSource=new ComboPooledDataSource();QueryRunner queryRunner=new QueryRunner(dataSource);String sql="select name from user where name=?";User user = queryRunner.query(sql, new BeanHandler<User>(User.class),name);//如果没有查询到数据 说明这个用户名没有注册过if (user==null) {return  true;}else {return  false;}} catch (SQLException e) {e.printStackTrace();return  false;}}/*** @method:register 用户注册* @params:[name, password, email]* @return: boolean*/public boolean register(User user) {try {ComboPooledDataSource dataSource=new ComboPooledDataSource();QueryRunner queryRunner=new QueryRunner(dataSource);String sql="insert into user values(null,?,?,?)";int row = queryRunner.update(sql, user.getName(), user.getPassword(), user.getEmail());//行数大于零说明注册成功if (row>0) {return  true;}else {return  false;}} catch (SQLException e) {e.printStackTrace();return  false;}}/*** @method:login 查询数据库* @params:[name, password]* @return: void*/public User login(String name, String password) throws SQLException {ComboPooledDataSource dataSource=new ComboPooledDataSource();QueryRunner queryRunner=new QueryRunner(dataSource);String sql="select * from user where name=? and password=?";User user = queryRunner.query(sql, new BeanHandler<User>(User.class),name,password);return  user;}
}

  (4)创建User实体类

package com.zzs.szsd.bean;public class User {private int id;private String name;private String password;private String email;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 String getPassword() {return password;}public void setPassword(String password) {this.password = password;}public String getEmail() {return email;}public void setEmail(String email) {this.email = email;}
}

  (5)修改c3p0-config.xml
在这里插入图片描述

<?xml version="1.0" encoding="utf-8" ?>
<c3p0-config><!-- 默认配置,如果没有指定则使用这个配置 --><default-config><property name="driverClass">com.mysql.jdbc.Driver</property><property name="jdbcUrl">jdbc:mysql://localhost:3306/fresh?useSSL=false</property><property name="user">root</property><property name="password">admin123</property><!-- 初始化池大小 --><property name="initialPoolSize">10</property><!-- 最大空闲时间 --><property name="maxIdleTime">30</property><!-- 最多有多少个连接 --><property name="maxPoolSize">15</property><!-- 最少几个连接 --><property name="minPoolSize">5</property><!-- 每次最多可以执行多少个批处理语句 --><property name="maxStatements">50</property></default-config><!-- 命名的配置 --><named-config name="51zixue"><!--这里是设置配置文件的名字--><property name="driverClass">com.mysql.jdbc.Driver</property><property name="jdbcUrl">jdbc:mysql://localhost:3306/fresh?useSSL=false</property><property name="user">root</property><!--mysql的登陆名--><property name="password">admin123</property><!--如果没密码就可以设置成<property name="password"></property>--><property name="acquireIncrement">5</property><!-- 如果池中数据连接不够时一次增长多少个 --><property name="initialPoolSize">10</property><property name="minPoolSize">5</property><property name="maxPoolSize">15</property><property name="maxStatements">0</property><property name="maxStatementsPerConnection">5</property> <!-- he's important, but there's only one of him --></named-config>
</c3p0-config>

  (6)login.jsp

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html lang="en">
<head><meta charset="UTF-8"/><title>Document</title><script type="text/javascript" src="static/js/jquery-1.9.0.min.js"></script><script type="text/javascript" src="static/js/login.js"></script><link href="static/css/login2.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<h1>生鲜管理系统<sup>V2017</sup>
</h1><div class="login" style="margin-top: 50px;"><div class="header"><div class="switch" id="switch"><a class="switch_btn_focus" id="switch_qlogin"href="javascript:void(0);" tabindex="7">快速登录</a> <aclass="switch_btn" id="switch_login" href="javascript:void(0);"tabindex="8">快速注册</a><div class="switch_bottom" id="switch_bottom"style="position: absolute; width: 64px; left: 0px;"></div></div></div><div class="web_qr_login" id="web_qr_login"style="display: block; height: 235px;"><!--登录--><div class="web_login" id="web_login"><div class="login-box"><div class="login_form"><form action="user"accept-charset="utf-8" id="login_form" class="loginForm"method="post"><input type="hidden" name="method" value="login"/><input type="hidden" name="did" value="0"/> <input type="hidden"name="to" value="log"/><div class="uinArea" id="uinArea"><label class="input-tips" for="u">帐号:</label><div class="inputOuter" id="uArea"><input type="text" id="u" name="name" value="${cookie.name.value}" class="inputstyle"/></div></div><div class="pwdArea" id="pwdArea"><label class="input-tips" for="p">密码:</label><div class="inputOuter" id="pArea"><input type="password" id="p" name="password" value="${cookie.password.value}" class="inputstyle"/></div></div><div style="margin-left: 45px;margin-top: 10px"><input style="vertical-align: middle;" type="checkbox" value="yes" name="remember">记住密码<br/></div><div style="padding-left: 50px; margin-top: 20px;"><input type="submit" value="登 录" style="width: 150px;"class="button_blue"/></div></form></div></div></div><!--登录end--></div><!--注册--><div class="qlogin" id="qlogin" style="display: none;"><div class="web_login"><form name="form2" id="regUser" accept-charset="utf-8"action="register" method="post"><input type="hidden" name="to" value="reg"/> <input type="hidden"name="did" value="0"/><ul class="reg_form" id="reg-ul"><div id="userCue" class="cue">快速注册请注意格式</div><li><label for="user" class="input-tips2">用户名:</label><div class="inputOuter2"><input type="text" id="user" name="name" maxlength="16"class="inputstyle2"/></div></li><li><label for="passwd" class="input-tips2">密码:</label><div class="inputOuter2"><input type="password" id="passwd" name="password" maxlength="16"class="inputstyle2"/></div></li><li><label for="passwd2" class="input-tips2">确认密码:</label><div class="inputOuter2"><input type="password" id="passwd2" name="password2" maxlength="16"class="inputstyle2"/></div></li><li><label for="email" class="input-tips2">邮箱:</label><div class="inputOuter2"><input type="email" id="email" name="email" class="inputstyle2"/></div></li><li><div class="inputArea"><input type="submit" id="reg"style="margin-top: 10px; margin-left: 85px;"class="button_blue" value="同意协议并注册"/> <a href="#" class="zcxy"target="_blank.">注册协议</a></div></li><div class="cl"></div></ul></form></div></div><!--注册end-->
</div>
</body>
</body>
</html>

1.3. 效果

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

2. 生鲜后台管理系统-登录功能

2.1. 登录功能

  (1)创建注册LoginServlet,接收form表单中的参数。
  (2)LoginServlet将参数传递给servie层。
  (3)userService调用dao层,userDao将用户注册信息加入到数据库中。
  (4)登录成功后跳转到分类界面。

2.2. 步骤

  (1)新建LoginServlet

package com.zzs.szsd.web;
import com.zzs.szsd.bean.User;
import com.zzs.szsd.service.UserService;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.sql.SQLException;
@WebServlet(name = "LoginServlet",urlPatterns = "/login")
public class LoginServlet extends HttpServlet {protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {String name = request.getParameter("name");String password = request.getParameter("password");UserService userService=new UserService();User user=null;try {//调用service中登录方法user = userService.login(name, password);} catch (SQLException e) {e.printStackTrace();}System.out.println("wed=w="+user);if (user!=null){//登录成功跳转生鲜种类列表界面response.sendRedirect(request.getContextPath()+"/category-list.jsp");}else {//登录失败提示response.setContentType("text/html;charset=utf-8");response.getWriter().write("用户登录失败");}}protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {}
}

  (2)新建login.jsp

在这里插入图片描述

// An highlighted block
var foo = 'bar';

  (3)新建category-list.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1"><title>index</title><link rel="stylesheet" href="static/css/bootstrap.min.css"><style type="text/css">body{ font-family: 'Microsoft YaHei';}/*.panel-body{ padding: 0; }*/</style>
</head>
<body>
<div class="jumbotron"><div class="container"><h3>——生鲜管理系统</h3></div>
</div>
<div class="container"><div class="main"><div class="row"><!-- 左侧内容 --><div class="col-md-3"><div class="list-group"><a href="${pageContext.request.contextPath}/category-list.jsp" class="list-group-item text-center active">生鲜列表</a><a href="${pageContext.request.contextPath}/category-add.jsp" class="list-group-item text-center ">新增生鲜</a></div></div><!-- 右侧内容 --><div class="col-md-9"><!-- 成功提示框 --><div class="alert alert-success alert-dismissible" role="alert"><button type="button" class="close" data-dismiss="alert"><span aria-hidden="false">&times;</span><span class="sr-only">Close</span></button><strong>成功!</strong> 操作成功提示</div><!-- 失败提示框 --><div style="display: none" class="alert alert-danger alert-dismissible" role="alert"><button type="button" class="close" data-dismiss="alert"><span aria-hidden="true">&times;</span><span class="sr-only">Close</span></button><strong>失败!</strong> 操作失败提示</div><!-- 自定义内容 --><div class="panel panel-default"><div class="panel-heading">生鲜列表</div><div class="panel-body"><table class="table table-striped table-responsive table-hover"><thead><tr><th>编号</th><th>名称</th><th>添加时间</th><th>类别</th><th>产地</th><th width="120">操作</th></tr></thead><tbody><c:forEach items="${page.list}" var="category"><tr><th>${category.c_id}</th><td>${category.c_name}</td><td>${category.createtime}</td><c:if test="${category.type==0}" ><td>未知</td></c:if><c:if test="${category.type==1}" ><td>猪牛羊肉</td></c:if><c:if test="${category.type==2}" ><td>海鲜水产</td></c:if><td>${category.place}</td><td><%--<a href="">详情</a>--%><a href="${pageContext.request.contextPath}/category?method=deleteCategory&c_id=${category.c_id}">删除</a><a href="${pageContext.request.contextPath}/category-update.jsp?c_id=${category.c_id}&c_name=${category.c_name}&type=${category.type}&place=${category.place}">修改</a></td></tr></c:forEach></tbody></table></div></div><%--<nav>--%><%--<ul class="pagination pull-right">--%><%--<li  class="previous"><a href="#">&laquo;</a></li>--%><%--<c:forEach begin="1" end="${pageBean.totalPage}" var="page">--%><%--<li><a href="#">${page}</a></li>--%><%--<!-- 判断是否是当前页 -->--%><%--&lt;%&ndash;<c:if test="${page==pageBean.currentPage }">&ndash;%&gt;--%><%--&lt;%&ndash;<li class="active"><a href="javascript:void(0);">${page}</a></li>&ndash;%&gt;--%><%--&lt;%&ndash;</c:if>&ndash;%&gt;--%><%--&lt;%&ndash;<c:if test="${page!=pageBean.currentPage }">&ndash;%&gt;--%><%--&lt;%&ndash;<li><a href="${pageContext.request.contextPath}/productListByCid?cid=${cid}&currentPage=${page }">${page }</a></li>&ndash;%&gt;--%><%--&lt;%&ndash;</c:if>&ndash;%&gt;--%><%--</c:forEach>--%><%--<li><a href="#">&raquo;</a></li>--%><%--</ul>--%><%--</nav>--%><!--分页 --><nav><ul class="pagination pull-right"><li  class="previous"><a href="#">&laquo;</a></li><c:forEach begin="1" end="${page.totalPage}" var="Page"><li><a href="${pageContext.request.contextPath}/category?method=getCategoryList&currentPage=${Page}&currentCount=10">${Page}</a></li></c:forEach><li><a href="#">&raquo;</a></li></ul></nav><!-- 分页结束 --><%--<ul class="pagination pull-right">--%><%--<li  class="previous"><a href="#">&laquo;</a></li>--%><%--<c:forEach begin="1" end="${pageBean.totalPage+1}" var="page">--%><%--<li><a href="${pageContext.request.contextPath}/category?method=getCategoryList&currentPage=${page}&currentCount=10">${page}</a></li>--%><%--</c:forEach>--%><%--<li><a href="#">&raquo;</a></li>--%><%--</ul>--%></div></div></div>
</div>
<!-- 尾部 -->
<div class="jumbotron" style=" margin-bottom:0;margin-top:105px;"><div class="container"><span>&copy; 2016 Saitmob</span></div>
</div><script src="static/js/jquery-3.1.0.min.js"></script><script src="static/js/bootstrap.min.js"></script>
</body>
</html>

2.3. 效果

在这里插入图片描述

在这里插入图片描述

3. 生鲜后台管理系统-记住密码功能

3.1. 记住密码

  (1)界面中添加checkbox控件。
  (2)如果用户登录成功,这时候就去获取控件是否被选中。
  (3)如果选中 那么我们需要将用户名和密码。
  (4)保存在cookie中保存到cookie中 同时需要对cookie做持久化,防止浏览器关闭的时候cookie被销毁
  (5)登录界面的jsp中 需要获取cookie中保存的信息,并将获取到的信息填入到form表单中。
  (6)这样就完成了记住密码的功能。

3.2. 步骤

  (1)新建LoginServlet

package com.zzs.szsd.web;
import com.zzs.szsd.bean.User;
import com.zzs.szsd.service.UserService;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.sql.SQLException;
@WebServlet(name = "LoginServlet",urlPatterns = "/login")
public class LoginServlet extends HttpServlet {protected void doPost(HttpServletRequest request,HttpServletResponse response)throws ServletException, IOException {String name = request.getParameter("name");String password = request.getParameter("password");UserService userService=new UserService();User user=null;try {//调用service中登录方法user = userService.login(name, password);} catch (SQLException e) {e.printStackTrace();}if (user!=null){//登录成功后我们再获取是否保存密码的信息,如果失败了保存密码就没有意义了String remember = request.getParameter("remember");if (remember.equals("yes")){// 将用户名和密码加入到cookie中Cookie nameCookie = new Cookie("name", name);Cookie passwordCookie = new Cookie("password", password);//设置cookie的有效期 防止销毁nameCookie.setMaxAge(60*10);passwordCookie.setMaxAge(60*10);//将cookie发送给客户端保存response.addCookie(nameCookie);response.addCookie(passwordCookie);}//登录成功跳转生鲜种类列表界面response.sendRedirect(request.getContextPath()+"/category-list.jsp");}else {//登录失败提示response.setContentType("text/html;charset=utf-8");response.getWriter().write("用户登录失败");}}protected void doGet(HttpServletRequest request,HttpServletResponse response)throws ServletException, IOException {}
}

  (2)新建login.jsp
在这里插入图片描述
在这里插入图片描述

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html lang="en">
<head><meta charset="UTF-8"/><title>Document</title><script type="text/javascript" src="static/js/jquery-1.9.0.min.js"></script><script type="text/javascript" src="static/js/login.js"></script><link href="static/css/login2.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<h1>生鲜管理系统<sup>V2017</sup>
</h1><div class="login" style="margin-top: 50px;"><div class="header"><div class="switch" id="switch"><a class="switch_btn_focus" id="switch_qlogin"href="javascript:void(0);" tabindex="7">快速登录</a> <aclass="switch_btn" id="switch_login" href="javascript:void(0);"tabindex="8">快速注册</a><div class="switch_bottom" id="switch_bottom"style="position: absolute; width: 64px; left: 0px;"></div></div></div><div class="web_qr_login" id="web_qr_login"style="display: block; height: 235px;"><!--登录--><div class="web_login" id="web_login"><div class="login-box"><div class="login_form"><form action="login"accept-charset="utf-8" id="login_form" class="loginForm"method="post"><input type="hidden" name="method" value="login"/><input type="hidden" name="did" value="0"/> <input type="hidden"name="to" value="log"/><div class="uinArea" id="uinArea"><label class="input-tips" for="u">帐号:</label><div class="inputOuter" id="uArea"><input type="text" id="u" name="name" value="${cookie.name.value}" class="inputstyle"/></div></div><div class="pwdArea" id="pwdArea"><label class="input-tips" for="p">密码:</label><div class="inputOuter" id="pArea"><input type="password" id="p" name="password" value="${cookie.password.value}" class="inputstyle"/></div></div><div style="margin-left: 45px;margin-top: 10px"><input style="vertical-align: middle;" type="checkbox" value="yes" name="remember">记住密码<br/></div><div style="padding-left: 50px; margin-top: 20px;"><input type="submit" value="登 录" style="width: 150px;"class="button_blue"/></div></form></div></div></div><!--登录end--></div><!--注册--><div class="qlogin" id="qlogin" style="display: none;"><div class="web_login"><form name="form2" id="regUser" accept-charset="utf-8"action="register" method="post"><input type="hidden" name="to" value="reg"/> <input type="hidden"name="did" value="0"/><ul class="reg_form" id="reg-ul"><div id="userCue" class="cue">快速注册请注意格式</div><li><label for="user" class="input-tips2">用户名:</label><div class="inputOuter2"><input type="text" id="user" name="name" maxlength="16"class="inputstyle2"/></div></li><li><label for="passwd" class="input-tips2">密码:</label><div class="inputOuter2"><input type="password" id="passwd" name="password" maxlength="16"class="inputstyle2"/></div></li><li><label for="passwd2" class="input-tips2">确认密码:</label><div class="inputOuter2"><input type="password" id="passwd2" name="password2" maxlength="16"class="inputstyle2"/></div></li><li><label for="email" class="input-tips2">邮箱:</label><div class="inputOuter2"><input type="email" id="email" name="email" class="inputstyle2"/></div></li><li><div class="inputArea"><input type="submit" id="reg"style="margin-top: 10px; margin-left: 85px;"class="button_blue" value="同意协议并注册"/> <a href="#" class="zcxy"target="_blank.">注册协议</a></div></li><div class="cl"></div></ul></form></div></div><!--注册end-->
</div>
</body>
</body>
</html>

3.3. 效果

在这里插入图片描述
  JavaWeb开发 实战-生鲜后台管理系统 注册、登录、记住密码示例下载

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

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

相关文章

【cuda学习日记】3.1 CUDA执行模型--线程束分化

3.1.1 将同用的function放到header文件里 ./common/common.h #define CHECK(call) \{\const cudaError_t error call; \if (error ! cudaSuccess)\{\printf("Error: %s: %d\n", __FILE__, __LINE__);\printf("code :%d reason :%s\n", error , cudaGetEr…

【STM32-学习笔记-15-】MAX7219点阵屏模块

文章目录 MAX7219点阵模块一、MAX7219Ⅰ、 概述Ⅱ、功能特点Ⅲ、引脚功能Ⅳ、典型应用电路Ⅴ、内部组成结构Ⅵ、时序图Ⅶ、寄存器 二、STM32控制点阵屏Ⅰ、程序框图Ⅱ、程序编写①、MAX7219.c②、MAX7219.h③、MAX7219_Img.h④、main.c MAX7219点阵模块 一、MAX7219 Ⅰ、 概述…

Redis数据库笔记——持久化机制

大家好&#xff0c;这里是Good Note&#xff0c;关注 公主号&#xff1a;Goodnote&#xff0c;专栏文章私信限时Free。本文详细介绍Redis的持久化机制&#xff0c;目标是将内存中的数据持久化到磁盘&#xff0c;以保证数据的可靠性和在重启后的恢复能力。 文章目录 持久化机制A…

K8S 集群搭建和访问 Kubernetes 仪表板(Dashboard)

一、环境准备 服务器要求&#xff1a; 最小硬件配置&#xff1a;2核CPU、4G内存、30G硬盘。 服务器可以访问外网。 软件环境&#xff1a; 操作系统&#xff1a;Anolis OS 7.9 Docker&#xff1a;19.03.9版本 Kubernetes&#xff1a;v1.18.0版本 内核版本&#xff1a;5.4.203-…

vue中echarts-中国地图,世界地图显示(echarts5.6版本本地导入)

地图去掉南海诸岛右下角的框显示&#xff08;因为显示的不是现在的10段线&#xff09; 资源里面主要是有个改好的中国地图json其他的无所谓&#xff0c;用现有的json也行&#xff0c;主要是为了解决10段线的问题 引入需要注意 import * as echarts from “./echarts”; 目录…

数据结构(三) 排序/并查集/图

目录 1. 排序 2.并查集 3.图 1.排序: 1.1 概念: 排序就是将数据按照某种规则进行排列, 具有某种顺序. 分为内排序和外排序. 内排序就是: 将数据放在内存中的排序; 外排序是: 数据太多无法在内存中排序的. 1.2 插入排序: 插入排序包含: 直接插入排序和希尔排序. (1) 直接插入…

算法随笔_13: 有效三角形的个数

上一篇:算法随笔_12:最短无序子数组-CSDN博客 题目描述如下: 给定一个包含非负整数的数组 nums &#xff0c;返回其中可以组成三角形三条边的三元组个数。 示例 1: 输入: nums [2,2,3,4] 输出: 3 解释:有效的组合是: 2,3,4 (使用第一个 2) 2,3,4 (使用第二个 2) 2,2,3 算法…

CSS 网络安全字体

适用于 HTML 和 CSS 的最佳 Web 安全字体 下面列出了适用于 HTM L和 CSS 的最佳 Web 安全字体&#xff1a; Arial (sans-serif)Verdana (sans-serif)Helvetica (sans-serif)Tahoma (sans-serif)Trebuchet MS (sans-serif)Times New Roman (serif)Georgia (serif)Garamond (se…

大模型学习笔记 - 第一期 - Milvus向量数据库

大模型学习笔记 - 向量数据库 目录 大模型学习笔记 - 向量数据库传统文字检索(无嵌入)面临的困境1. 用户和商户表述差异2. 不同语种的表述差异3. 不同背景下的音译表述差异 向量检索向量化服务 参考 传统文字检索(无嵌入)面临的困境 1. 用户和商户表述差异 ​ 如果商户维护了…

详细图文解读Transformer模型:《Attention is All You Need》完整版

目录 前言1、Transformer模型《Attention is All You Need》总结2、Transformer整体结构2.1、工作流程 3、Transformer的输入4、Self-Attention&#xff08;自注意力机制&#xff09;4.1、Self-Attention 结构4.2、Q, K, V计算4.3、Self-Attention 的输出4.4、Multi-Head Atten…

Hadoop•用Web UI查看Hadoop状态词频统计

听说这里是目录哦 通过Web UI查看Hadoop运行状态&#x1f407;一、关闭防火墙二、在物理计算机添加集群的IP映射三、启动集群四、进入HDFS的Web UI 词频统计&#x1f9a9;1、准备文本数据2、在HDFS创建目录3、上传文件4、查看文件是否上传成功5、运行MapReduce程序6、查看MapRe…

Ubuntu、Windows系统网络设置(ping通内外网)

一、 虚拟机VMware和Ubuntu系统的网络配置说明 1、虚拟机的网络适配器的模式有三种&#xff1a; 桥接模式NAT模式主机模式 2、虚拟机VMware的网卡配置(如何进行配置界面(虚拟机->设置)) 注意&#xff1a; 1、以上桥接模式(ubuntu有独立IP)、NAT模式(没有独立IP)都可以联…

将IDLE里面python环境pyqt5配置的vscode

首先安装pyqt5全套&#xff1a;pip install pyqt5-tools 打开Vscode&#xff1a; 安装第三方扩展&#xff1a;PYQT Integration 成功配置designer.exe的路径【个人安装pyqt5的执行路径】&#xff0c;便可直接打开UI文件&#xff0c;进行编辑。 配置pyuic,如果下图填写方法使用…

C# OpenCV机器视觉:特征匹配 “灵魂伴侣”

在一个阳光仿佛被施了魔法&#xff0c;欢快得直蹦跶的早晨&#xff0c;阿强像个即将踏上神秘寻宝之旅的探险家&#xff0c;一屁股墩在实验室那张堆满各种奇奇怪怪小玩意儿的桌前。桌上&#xff0c;零件、线路、半成品设备乱成一团&#xff0c;唯有他那宝贝电脑屏幕散发着清冷又…

简述mysql 主从复制原理及其工作过程,配置一主两从并验证

第一种基于binlog的主从同步 首先对主库进行配置&#xff1a; [rootopenEuler-1 ~]# vim /etc/my.cnf 启动服务 [rootopenEuler-1 ~]# systemctl enable --now mysqld 主库的配置 从库的配置 第一个从库 [rootopenEuler-1 ~]# vim /etc/my.cnf [rootopenEuler-1 ~]# sys…

Spring自定义BeanPostProcessor实现bean的代理Java动态代理知识

上文&#xff1a;https://blog.csdn.net/qq_26437925/article/details/145241149 中大致了解了spring aop的代理的实现&#xff0c;其实就是有个BeanPostProcessor代理了bean对象。顺便复习下java代理相关知识 目录 自定义BeanPostProcessor实现aopJava动态代理知识动态代理的几…

医院挂号就诊系统设计与实现(代码+数据库+LW)

摘 要 传统办法管理信息首先需要花费的时间比较多&#xff0c;其次数据出错率比较高&#xff0c;而且对错误的数据进行更改也比较困难&#xff0c;最后&#xff0c;检索数据费事费力。因此&#xff0c;在计算机上安装医院挂号就诊系统软件来发挥其高效地信息处理的作用&#…

【GORM】初探gorm模型,字段标签与go案例

GORM是什么&#xff1f; GORM 是一个Go 语言 ORM&#xff08;对象关系映射&#xff09;库&#xff0c;它让我们可以使用结构体来操作数据库&#xff0c;而无需编写SQL 语句 GORM 模型与字段标签详解 在 GORM 中&#xff0c;模型是数据库表的抽象表示&#xff0c;字段标签&am…

R 语言科研绘图第 20 期 --- 箱线图-配对

在发表科研论文的过程中&#xff0c;科研绘图是必不可少的&#xff0c;一张好看的图形会是文章很大的加分项。 为了便于使用&#xff0c;本系列文章介绍的所有绘图都已收录到了 sciRplot 项目中&#xff0c;获取方式&#xff1a; R 语言科研绘图模板 --- sciRplothttps://mp.…

【物联网】ARM核介绍

文章目录 一、芯片产业链1. CPU核(1)ARM(2)MIPS(3)PowerPc(4)Intel(5)RISC-V 2. SOC芯片(1)主流厂家(2)产品解决方案 3. 产品 二、ARM核发展1. 不同架构的特点分析(1)VFP(2)Jazelle(3)Thumb(4)TrustZone(5)SIMD(6)NEON 三、ARM核(ARMv7)工作模式1. 权限级别(privilege level)2.…