项目学习 —— 登录与注册(完整)

2023-05-16

一. 创建动态Web工程

      参考:Tomcat学习_Archer__13的博客-CSDN博客 

      

①web目录存放web工程的资源文件,例如:html页面、css文件、js文件等,将写好的web页面放到该目录下(首页、用户登录页面、用户注册页面);

②web目录下的WEB-INF目录是受服务器保护的目录,浏览器无法直接访问此目录的内容; 

③在WEB-INF目录下创建一个lib目录用来存放所需要的第三方jar包;

④scr目录存放自己编写的java代码,并在src下创建以下目录;

       ​     

二. 编写登录和注册页面

 1. index.jsp页面

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core_1_1" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>首页</title>
    <%    //获取当前工程的路径
        String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+request.getContextPath()+"/";
    %>
    <base href="<%=basePath%>">
</head>
<body>
    <%-- 如果用户还没有登录,显示登录和注册菜单--%>
    <c:if test="${empty sessionScope.user}">
        <a href="pages/user/login.jsp"><input type = "button" value = "登录"/></a>
        <a href="pages/user/regist.jsp"><input type = "button" value = "注册"/></a>
    </c:if>
    <%-- 如果用户已经登录,显示欢迎用户和注销--%>
    <c:if test="${not empty sessionScope.user}">
        欢迎${sessionScope.user.username}
        <a href="userServlet?action=logout"><input type = "button" value = "注销"/></a>
    </c:if>
</body>
</html>

2.login.jsp页面

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>登录</title>
    <base href="http://localhost:8080/StudyProject_war_exploded/">
</head>
<body>
    <form action=" " method="post">
        用户名:<input type="text" name="username"> <br/>
        密码:<input type="password" name="password"> <br/>
        <input type="submit" value="登录">
    </form>
</body>
</html>

3.regist.html页面

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>注册</title>
    <base href="http://localhost:8080/StudyProject_war_exploded/">
</head>
<body>
    <form action=" " method="post">
        用户名:<input type="text" name="username"> <br/>
        用户密码:<input type="password" name="password"> <br/>
        确认密码:<input type="password" name="password"> <br/>
        电子邮箱:<input type="text" name="email"> <br/>
        验证码:<input type="text" name="code" style="width: 60px"/> <img src="kaptcha.jpg" onclick="this.src='kaptcha.jpg?d='+new Date()" style="width: 80px; height: 25px;"/> <br/>
        <input type="submit" value="注册">
    </form>
</body>
</html>

三. 创建数据库和表

  创建一个数据库studyproject,在该数据库下创建一个user表

create table user{
    id int primary key auto_increment,
    username varchar(20) not null unique,
    password varchar(32) not null,
    email varchar(200)
};

insert into user(username,password,email) values('admin','admin','admain@163.com');

四. 编写数据库表对应的JavaBean对象

      在pojo包下创建User类

package server.pojo;

public class User {
    private Integer id;
    private String username;
    private String password;
    private String email;

    public Integer getId() {
        return id;
    }

    public void setId(Integer 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 getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", username='" + username + '\'' +
                ", password='" + password + '\'' +
                ", email='" + email + '\'' +
                '}';
    }

    public User() {
    }

    public User(Integer id, String username, String password, String email) {
        this.id = id;
        this.username = username;
        this.password = password;
        this.email = email;
    }
}

五. 连接数据库(utils)

1. 创建jdbc.properties文件,将其放在src下(必须是src目录下第一级),文件内容为:

url=jdbc:mysql://localhost:3306/studyproject   
username=root
password=123456
driverClassName=com.mysql.jdbc.Driver

initialSize=10
maxActive=10

2. 在utils包下创建一个工具类JdbcUtils.java文件,用来连接数据库

package server.utils;

import com.alibaba.druid.pool.DruidDataSourceFactory;

import javax.sql.DataSource;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.Properties;

public class JdbcUtils {
    private static DataSource source;
    static{
        try {
            Properties properties = new Properties();
            //读取jdbc.properties属性
            InputStream is = JdbcUtils.class.getClassLoader().getResourceAsStream("jdbc.properties");
            //从流中加载数据
            properties.load(is);
            //创建数据库连接池
            source = DruidDataSourceFactory.createDataSource(properties);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    //获取连接
    public static Connection getConnection() {
        Connection conn = null;
        try {
            conn = source.getConnection();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return conn;
    }

    //关闭连接
    public static void closeResource(Connection conn){
        try {
            if(conn != null){
                conn.close();
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

六. Dao持久层 —— 操作数据库

1. 在dao.impl包下编写BaseDao类,用来操作数据库(更新、查询)

package server.dao.impl;

import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanHandler;
import org.apache.commons.dbutils.handlers.BeanListHandler;
import org.apache.commons.dbutils.handlers.ScalarHandler;
import server.utils.JdbcUtils;

import java.sql.Connection;
import java.util.List;

public abstract class BaseDao {
    //使用dbutils操作数据库
    private QueryRunner queryRunner = new QueryRunner();

    //更新数据
    public int updateData(String sql, Object ... args) {
        Connection conn = JdbcUtils.getConnection();
        try {
            return queryRunner.update(conn, sql, args);
        } catch (Exception e) {
            e.printStackTrace();
        }finally {
            JdbcUtils.closeResource(conn);
        }
        return -1;
    }

    //返回一条数据
    public <T> T queryOneData(Class<T> type,String sql, Object ... args){
        Connection conn = JdbcUtils.getConnection();
        try {
            return queryRunner.query(conn,sql,new BeanHandler<T>(type),args);
        } catch (Exception e) {
            e.printStackTrace();
        }finally {
            JdbcUtils.closeResource(conn);
        }
        return null;
    }

    //返回多条数据
    public <T> List<T> queryList(Class<T> type, String sql, Object ... args){
        Connection conn = JdbcUtils.getConnection();
        try {
            return queryRunner.query(conn,sql,new BeanListHandler<T>(type),args);
        } catch (Exception e) {
            e.printStackTrace();
        }finally {
            JdbcUtils.closeResource(conn);
        }
        return null;
    }

    //返回一个值(一行或一列)
    public Object querySingleValues(String sql, Object ... args){
        Connection conn = JdbcUtils.getConnection();
        try {
            return queryRunner.query(conn,sql,new ScalarHandler(),args);
        } catch (Exception e) {
            e.printStackTrace();
        }finally {
            JdbcUtils.closeResource(conn);
        }
        return null;
    }
}

2. 在dao包下编写UserDao接口,用来查询数据库中的用户信息和将用户信息保存到数据库中

package server.dao;

import server.pojo.User;

public interface UserDao {
    //根据用户名查询用户信息,如果返回null说明没有这个用户
    public User queryUserByUsername(String username);

    //根据用户名和密码查询用户信息,如果返回null说明用户名或密码错误
    public User queryUserByUsernameAndPassword(String username,String password);

    //保存用户信息
    public int saveUser(User user);
}

 3. 在dao.impl包下编写一个UserDaoImpl类,继承BaseDao类并实现UserDao接口

package server.dao.impl;

import server.dao.UserDao;
import server.pojo.User;

public class UserDaoImpl extends BaseDao implements UserDao {
    @Override
    public User queryUserByUsername(String username) {
        String sql = "select id, username, password, email from user where username = ?";
        return queryOneData(User.class,sql,username);
    }

    @Override
    public User queryUserByUsernameAndPassword(String username, String password) {
        String sql = "select id, username, password, email from user where username = ? and password = ?";
        return queryOneData(User.class,sql,username,password);
    }

    @Override
    public int saveUser(User user) {
        String sql = "insert into user(username,password,email) values(?,?,?)";
        return updateData(sql,user.getUsername(),user.getPassword(),user.getEmail());
    }

}

七. Service业务层 —— 注册和登录

1. 在Service包下编写UserService接口,实现用户注册和登录 

package server.service;

import server.pojo.User;

public interface UserService {
    //用户注册,如果用户名已存在,则需要重新注册一个新的用户名(用户名不可以重复)
    public void registUser(User user);

    //用户登录,如果登录失败会返回null
    public User login(User user);

    //判断用户名是否存在,返回true表示用户名存在,返回flase表示用户名可用
    public boolean existUsername(String username);
}

2. 在service.impl包下编写UserServiceImpl类来实现UserService接口。

package server.service.impl;

import server.dao.UserDao;
import server.dao.impl.UserDaoImpl;
import server.pojo.User;
import server.service.UserService;

public class UserServiceImpl implements UserService {
    private UserDao userDao = new UserDaoImpl();
    @Override
    public void registUser(User user) {
        userDao.saveUser(user);
    }

    @Override
    public User login(User user) {
        return userDao.queryUserByUsernameAndPassword(user.getUsername(),user.getPassword());
    }

    @Override
    public boolean existUsername(String username) {
        if(userDao.queryUserByUsername(username) == null){
            return false;
        }else {
            return true;
        }
    }
}

八. Web层 —— 实现Servlet程序

Servlet程序用于接收客户端请求然后调用Service层的服务来执行

1. 编写BaseServlet类,用于获取隐藏域中的值来执行相应的方法

package server.web;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.lang.reflect.Method;

public abstract class BaseServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doPost(req, resp);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        req.setCharacterEncoding("UTF-8");                 // 解决post请求中文乱码问题
        resp.setContentType("text/html; charset=UTF-8");   // 解决响应中文乱码问题

        String action = req.getParameter("action");
        try {
            //获取action业务鉴别字符串,得到相应的业务方法
            Method method = this.getClass().getDeclaredMethod(action, HttpServletRequest.class, HttpServletResponse.class);
            //调用目标业务方法
            method.invoke(this, req, resp);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

2. 编写WebServlet工具类,一次性把所有请求的参数注入到JavaBean中 

package server.utils;

import org.apache.commons.beanutils.BeanUtils;

import java.util.Map;

public class WebUtils {
    public static <T> T copyParamToBean(Map value, T bean){
        try {
            BeanUtils.populate(bean, value);   //把所有请求注入到JavaBean中
        } catch (Exception e) {
            e.printStackTrace();
        }
        return bean;
    }
}

2. 编写UserServlet类,并继承BaseServlet类,执行相应的请求

package server.web;

import server.pojo.User;
import server.service.UserService;
import server.service.impl.UserServiceImpl;
import server.utils.WebUtils;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

import static com.google.code.kaptcha.Constants.KAPTCHA_SESSION_KEY;

@WebServlet("/userServlet")
public class UserServlet extends BaseServlet {
    private UserService userService = new UserServiceImpl();

    protected void login(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //1.获取客户端的请求
        User user = WebUtils.copyParamToBean(req.getParameterMap(),new User());

        //2.用户登录
        User loginUser = userService.login(user);
        if(loginUser == null){
            //登录失败,跳回登录页面
            req.setAttribute("msg","用户名或密码错误!");
            req.setAttribute("username",user.getUsername());
            req.getRequestDispatcher("pages/user/login.jsp").forward(req,resp);
        }else{
            //登录成功,跳到首页index.jsp
            req.getSession().setAttribute("user",loginUser);
            req.getRequestDispatcher("index.jsp").forward(req,resp);
        }
    }

    protected void regist(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //获取Session中的验证码
        String token = (String) req.getSession().getAttribute(KAPTCHA_SESSION_KEY);
        //删除Session中的验证码
        req.getSession().removeAttribute(KAPTCHA_SESSION_KEY);

        String code = req.getParameter("code");

        //1.获取客户端的请求
        User user = WebUtils.copyParamToBean(req.getParameterMap(),new User());

        //2.用户注册
        if(token != null && token.equalsIgnoreCase(code)){   //检查验证码是否正确
            if(userService.existUsername(user.getUsername())){   //注册不成功
                req.setAttribute("msg","用户名已存在");
                req.setAttribute("username",user.getUsername());
                req.setAttribute("email",user.getEmail());
                req.getRequestDispatcher("/pages/user/regist.jsp").forward(req,resp);  //跳转到注册页面
            }else{
                userService.registUser(user);    //注册成功
                req.getRequestDispatcher("index.jsp").forward(req,resp);  //跳转到首页
            }
        }else {
            // 把回显信息,保存到Request域中
            req.setAttribute("msg", "验证码错误!");
            req.setAttribute("username", user.getUsername());
            req.setAttribute("email", user.getEmail());
            req.getRequestDispatcher("/pages/user/regist.jsp").forward(req, resp);
        }
    }

    protected void logout(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //销毁Session
        req.getSession().invalidate();
        //重定向到首页
        resp.sendRedirect("index.jsp");
    }
}

4. 将loginin.jsp和regist.jsp修改如下,用于接收服务器回传的信息

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>登录</title>
    <base href="http://localhost:8080/StudyProject_war_exploded/">
</head>
<body>
    <form action="userServlet" method="post">
        <input type="hidden" name="action" value="login">
        用户名:<input type="text" name="username" value="${empty requestScope.username ? "" : requestScope.username}"> <br/>
        密码:<input type="password" name="password"> <br/>
        <input type="submit" value="登录"> <br/>
        <div>
            ${empty requestScope.msg ? "请输入用户名和密码" : requestScope.msg}
        </div>
    </form>
</body>
</html>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>注册</title>
    <%    //获取当前工程的路径
        String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+request.getContextPath()+"/";
    %>
    <base href="<%=basePath%>">
</head>
<body>
    <form action="userServlet" method="post">
        <input type="hidden" name="action" value="regist">
        用户名:<input type="text" name="username" value="${empty requestScope.username ? "" : requestScope.username}"> <br/>
        用户密码:<input type="password" name="password"> <br/>
        确认密码:<input type="password" name="password"> <br/>
        电子邮箱:<input type="text" name="email" value="${empty requestScope.email ? "" : requestScope.email}"> <br/>
        验证码:<input type="text" name="code" style="width: 60px"/> <img src="kaptcha.jpg" onclick="this.src='kaptcha.jpg?d='+new Date()" style="width: 80px; height: 25px;"/> <br/>
        <input type="submit" value="注册"> <br/>
        <div>
            ${empty requestScope.msg ? "" : requestScope.msg}
        </div>
    </form>
</body>
</html>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

项目学习 —— 登录与注册(完整) 的相关文章

  • 强化学习:Q-learning与DQN(Deep Q Network)

    文章目录 Q learning一些名词epsilon greedy算法流程 DQN记忆库 Experience replay 固定Q 目标 Fixed Q target 算法流程 Q learning是一种很常用很传统的强化学习方法 xff
  • 解决windows FTP共享、局域网共享文件等解决方案。

    nbsp nbsp nbsp 最近单位在局域网共享了一个电脑 有自己的IP地址 直接在运行输入 192 168 nbsp 按理说就能访问 nbsp nbsp nbsp 但是别人的机器都可以 只有我的不行 研究了半天终于找到原因 这个原因还真
  • mariaDB安装与配置

    cd到 etc yum repos d 目录下 xff0c 使用touch MariaDB repo创建MariaDB repoMariaDB repo文件 vim MariaDB repo 进入配置文件 在官网找到配置信息 选择阿里云镜像
  • archlinux安装

    转载地址 https wiki archlinux org index php Beginners 27 Guide 28 E7 AE 80 E4 BD 93 E4 B8 AD E6 96 87 29 欢迎 xff0c 本文档将指导您安装
  • 2030年的人工智能与生活(AI and Life in 2030)

    作者 xff1a Anqi 链接 xff1a https zhuanlan zhihu com p 22308870 来源 xff1a 知乎 著作权归作者所有 商业转载请联系作者获得授权 xff0c 非商业转载请注明出处 第一部分 xff1
  • 如何将origin pro的界面切换变成中文显示?

    origin其实自带中文界面 xff0c 很多朋友反馈不知道如何设置 xff0c 软件里面也没看到有改变语言的选项 xff0c 它设置需要更改注册表 xff0c 相对复杂一点 那么今天就手把手的教大家如何将origin的语言改为中文吧 wi
  • Java高并发秒杀平台(Redis + RabbitMQ)

    Seconds Kill 本项目是一个模拟高并发环境下基于 SpringBoot 的秒杀购物平台 为了减少对数据库的直接访问 xff0c 通过 Redis 实现了缓存优化 xff1b 并通过 RabbitMQ 消息中间件来接收大量的并发请求
  • Ubuntu 配置

    配置源 如果是网通或者教育网建议选择上海交大的源 sudo cp etc apt sources list etc apt sources list backup sudo gedit etc apt sources list 用以下内容替
  • vncserver: Failed command ‘/etc/X11/Xvnc-session‘: 256!

    安装vncserver启动时出现如下报错 xff1a Starting applications specified span class token keyword in span etc X11 Xvnc session Log spa
  • Windows Media Player SDK 简介

    Windows Media Player SDK 简介 2002年9月 适用于 xff1a Microsoft Windows Media Player 摘要 xff1a 了解如何更改 Windows Media Player 的外观和行为
  • Linux glibc幽灵(GHOST)漏洞检测及修复方案

    安全研究人员近日曝出一个名为幽灵 xff08 GHOST xff09 的严重安全漏洞 xff0c 这个漏洞可以允许攻击者远程获取操作系统的最高控制权限 xff0c 影响市面上大量Linux操作系统及其发行版 该漏洞CVE编号为CVE 201
  • Byte Buddy 入门教程

    为什么需要运行时代码生成 我们知道 xff0c Java 是一种强类型的编程语言 xff0c 即要求所有变量和对象都有一个确定的类型 xff0c 如果在赋值操作中出现类型不兼容的情况 xff0c 就会抛出异常 强类型检查在大多数情况下是可行
  • android graphic(14)—EGL和OpenGL ES之间的关系

    OpenGL ES EGL 例子 EGL加载OpenGL ES库 涉及的库 库的加载 小结 OpenGL ES 什么是OpenGL xff1f Open Graphics Library OpenGL is a cross language
  • 删除多余的Linux图标

    一 空间杀手 使用Docker一段时间后 xff0c 发现C盘剩余空间显著减少 究其原因 xff0c 首先 xff0c 多了Linux子系统 接着 xff0c 看看其占用的空间 xff0c 打开 AppData local 目录下的Dock
  • Web项目停止在Not binding factory to JNDI, no JNDI name configured

    三月 03 2017 9 24 50 下午 org hibernate impl SessionFactoryObjectFactory addInstance 信息 Not binding factory to JNDI no JNDI
  • if-else语句省略{}时不可以定义变量,否则报错

    public void test 带 时可以定义变量和赋值运算等语句 if true int a 61 0 else int b 61 0 不带 时 xff0c 不能定义变量 if true int a 61 0 else int b 61
  • JDK常用API

    本篇介绍Java基础中常用API使用 xff0c 当然只是简单介绍 xff0c 围绕重要知识点引入 xff0c 巩固开发知识 xff0c 深入了解每个API的使用 xff0c 查看Java API文档是必不可少的 一 java lang包下
  • Android butterknife click事件全部失效问题

    问题 xff1a APP突然所有使用butterknife的 64 onClick方式实现的按钮点击事件均失效 解决 xff1a 查看butterknife源代码的DebouncingOnClickListener类 public abst
  • SSH用getHibernateTemplate()更新需要更新的字段

    转 上一篇文章说了hibernate中可以设置dynamic update 来实现跟新某些字段 但是使用了HibernateTemplate xff0c 调用HibernateTemplate saveOrUpdate 方法却还是全部字段更
  • Cannot create PoolableConnectionFactory (Access denied for user 'root'@'localhost' (using password:

    新下载的项目 xff0c 测试时出现Cannot create PoolableConnectionFactory Access denied for user 39 root 39 64 39 localhost 39 using pas

随机推荐

  • 阿里云部署nginx服务器存储图片

    最近想将本地的代码部署到阿里云上 xff0c 1 首先遇到的一个问题就是nginx服务器上传图片连接失败的问题 因为阿里云使用的不是iptables防火墙 xff0c 而是firewalld防火墙 可以在阿里云中选择自己的实例 xff0c
  • windows系统mysql解压版安装教程

    目录 xff1a 1 下载mysql 5 7 18 winx64 zip压缩包 xff1b 2 解压压缩包 xff1b 3 配置mysql环境变量 xff1b 4 新建my ini文件 xff1b 5 安装mydsql xff1b 6 初始
  • 去哪儿2017校园招聘笔试题

    span class hljs keyword import span java util Scanner span class hljs javadoc filename extension 时间限制 xff1a C C 43 43 语言
  • 刷机镜像

    android设备从硬件到系统的结构 xff1a Bootloader是一个叫uboot的程序 xff0c 其支持非常多的体系结构 uboot编译后会生成uboot bin镜像 xff0c 可以作为bootloader使用 Bootload
  • 日志文件xml

    lt xml version 61 34 1 0 34 encoding 61 34 UTF 8 34 gt lt ConsoleAppender 控制台输出日志 gt lt appender name 61 34 STDOUT 34 cl
  • 软件测试之SDK开发(ios)——Cpp Exception捕获

    ios虽然是用OC语言或Swift语言进行编程 xff0c 但是它同时也支持c 43 43 语法 xff0c 底层的动态库也基本上都是C 43 43 编写的 所以ios在运行的时候 xff0c 可能会抛出C 43 43 异常 xff0c 如
  • SmartChat技术服务支持

    ChatGPT是一项革命性的技术 xff0c 本应用利用该先进的人工智能技术为用户进行聊天和创作 xff0c 帮助用户轻松愉快的解决生活或者工作中的问题 xff0c 为用户带来全新不一样的人工智能体验 主要功能 智能机器人聊天 智能创作 技
  • noVNC安装与使用

    参考文章 https blog csdn net qq 41865652 article details 121766828 参考文章 http www zhumeng org thread 292491 1 1 html https ww
  • ubuntu系统下,下载安装Python程序的方法汇总(wget;apt-get;easy_install;pip)

    1 源码安装 xff1a 已知源码的地址 xff0c 例如 xff1a https www python org ftp python 3 6 1 Python 3 6 1 tgz 这是Python3 6 1的源码地址 xff0c 则可以使
  • iOS获取当前项目的所有类

    获取当前工程下自己创建的所有类 xff08 不包含系统类 xff0c CocosPods类 xff09 import lt objc runtime h gt import lt dlfcn h gt import lt mach o ld
  • android编译排查指南

    1 Can t determine type for tag macro name 参考https blog csdn net weixin 44440669 article details 127753568 进行降级 implement
  • Matlab的autocorr自相关函数

    今天看了一下时间序列模型ARIMA模型 xff0c 在对数据处理的时候 xff0c 需要对其进行平稳性检验 对序列的平稳性的检验有两种检验方法 xff1a 一种是根据时序图和自相关图的特征作出判断的图检验 xff0c 该方法操作简单 xff
  • 模型选择准则之AIC和BIC

    参考文章http blog csdn net lynnucas article details 47947943 转自 xff1a http blog csdn net jteng article details 40823675 此处模型
  • 最小二乘法曲线拟合原理与实现

    参考文章http blog csdn net jairuschan article details 7517773 最小二乘学习法是对模型的输出和训练集输出的平方误差为最小时的参数进行学习 xff0c 式中之所以加上系数1 2 是为了约去对
  • 浅谈决策树算法以及matlab实现ID3算法

    决策树方法在分类 预测 规则提取等领域有着广泛的应用 在20世纪70年代后期和80年代初期 xff0c 机器学习研究者J Ross Quinilan提出了ID3算法以后 xff0c 决策树在机器学习 数据挖掘领域得到极大的发展 Quinil
  • 关联规则浅谈以及Apriori算法matlab实现

    关联规则分析也叫做购物篮分析 xff0c 最早是为发现超市销售数据库中不同商品之间的关联关系 例如一个超市的经理想要更多的了解顾客的购物习惯 xff0c 比如 哪组商品可能会在一次购物中同时被购买 xff1f 或者 某顾客购买了个人电脑 x
  • Expression #1 of ORDER BY clause is not in SELECT list,references column ‘xxxxxxx‘(亲测有效,网上很多是有问题的)

    亲测有效 xff01 网上很多帖子有BUG xff0c 一直失败 xff0c 最后终于弄好了 所以必须分享下 xff0c 以免大家按照错误的帖子浪费时间 xff01 报错信息 xff1a Expression 1 of ORDER BY c
  • 解决 DataBinding Unresolved reference: BR 问题

    问题 最近使用了databinding xff0c 在使用BaseObservable的时候出现了Unresolved reference BR 问题 xff0c 上网搜了一下 xff0c 都是抄来抄去的 xff0c 没解决我的问题 spa
  • Spring框架介绍

    开篇提问 什么是Spring为什么要使用Spring xff1f 1 什么是Spring xff1f 摘自百度百科 Spring是一个开源框架 xff0c 它由Rod Johnson创建 它是为了解决企业应用开发的复杂性而创建的 Sprin
  • 项目学习 —— 登录与注册(完整)

    一 创建动态Web工程 参考 xff1a Tomcat学习 Archer 13的博客 CSDN博客 web目录存放web工程的资源文件 xff0c 例如 xff1a html页面 css文件 js文件等 xff0c 将写好的web页面放到该