JavaWeb技术之多表操作

2023-11-06

目录

 

1.多表关系

2.多表操作之一对多

2.1 数据表

2.2 创建实体类

2.3 建立两表之间的属性关系

2.4 创建Dao层接口代码和实现类,操作数据库

2.5 测试类

3.多表操作之多对一

3.1 在上一步的基础上,完成多对一。

3.2 在Dao层添加接口方法:

3.3 添加实现类:实现类中主要考虑如何建立两者关联

3.4 测试类:

运行结果

4.多表操作之一对一

4.1 创建数据表

4.2 创建实体类

4.3 添加Dao和实现类

4.4 测试类

5.多表操作之多对多

5.1 创建数据表

5.2 定义实体类:中间表不需要生成实体类

5.3 定义接口和实现类

5.4 测试类


1.多表关系

我们在学习数据库的时候,了解到数据库中多表之前是存在关系的,而这种关系也是固定的,分为:一对多,多对 一,一对一和多对多。那么学习完JDBC,JSP,Servlet后。如何在WEB项目中操作数据库呢?这就是我们今天研究的重点:如何使用JAVA代码实现多表关系操作。

2.多表操作之一对多

2.1 数据表

比较经典的一对多的关系就是学生表与年级表,两张表中,学生是多方,年级是一方。因为:一个年级可以有多名学生,但反过来一名学生只属于一个年级。先创建数据表

create table student2 ( 
​
    stuid int primary key, 
​
    stuname varchar(5), 
​
    stuage int, 
​
    gid int 
​
);
​
create table grade( 
​
gradeid int primary key , 
​
gname varchar(5) 
​
);
​
insert into grade values(1,'一年级'); 
​
insert into grade values(2,'二年级'); 
​
insert into grade values(3,'三年级'); 
​
insert into student2 values(1,'张三',18,1); 
​
insert into student2 values(2,'李四',14,2); 
​
insert into student2 values(3,'富贵',13,3); 
​
insert into student2 values(4,'王芳',17,1); 
​
insert into student2 values(5,'甜甜',15,2); 

2.2 创建实体类

要求:类名=表名,列名=属性名(外键列也添加属性)

Student:

/
 * @Author: 李梓豪
 * @Description:
 * @Date Created in 2020-11-15 13:24
 */
public class Student {
    private  int stuId;
    private String stuName;
    private int stuAge;
    private int gid;
​
    public Student() {
    }
​
    public Student(int studentId, String stuName, int stuAge, int gid) {
        this.stuId = studentId;
        this.stuName = stuName;
        this.stuAge = stuAge;
        this.gid = gid;
    }
​
    public int getStudentId() {
        return stuId;
    }
​
    public void setStudentId(int studentId) {
        this.stuId = studentId;
    }
​
    public String getStuName() {
        return stuName;
    }
​
    public void setStuName(String stuName) {
        this.stuName = stuName;
    }
​
    public int getStuAge() {
        return stuAge;
    }
​
    public void setStuAge(int stuAge) {
        this.stuAge = stuAge;
    }
​
    public int getGid() {
        return gid;
    }
​
    public void setGid(int gid) {
        this.gid = gid;
    }
​
    @Override
    public String toString() {
        return "Student{" +
                "stuId=" + stuId +
                ", stuName='" + stuName + '\'' +
                ", stuAge=" + stuAge +
                ", gid=" + gid +
                '}';
    }
}

grade

package bean;
​
/
 * @Author: 李梓豪
 * @Description:
 * @Date Created in 2020-11-15 13:41
 */
public class Grade {
    private int gradeId;
    private String gname;
​
    public Grade() {
    }
​
    public Grade(int gradeId, String gname) {
        this.gradeId = gradeId;
        this.gname = gname;
    }
​
    public int getGradeId() {
        return gradeId;
    }
​
    public void setGradeId(int gradeId) {
        this.gradeId = gradeId;
    }
​
    public String getGname() {
        return gname;
    }
​
    public void setGname(String gname) {
        this.gname = gname;
    }
}

2.3 建立两表之间的属性关系

数据表是通过外键列来维系两表关系。实体类是通过属性来维系两表关系。在建立一对多关系时,我们分析到年级是一方,学生是多方。一对多,是以一方为主,所以我们在一方添加多方的一个属性。那这个属性是对象还是集合呢?这里记住一句话:一方存多方的集合,多方存一方的对象。所以需要在年级表中添加下列属性:

Grade新增代码:

private List<Student> studentList; 
​
public List<Student> getStudentList() { 
​
return studentList; 
​
}
​
public void setStudentList(List<Student> studentList) { 
​
this.studentList = studentList; 
​
} 

2.4 创建Dao层接口代码和实现类,操作数据库

Dao层

public interface GradeDao { 
​
    //查询某个年级信息(要求:展示年级名称和学生列表) 
​
    public Grade getGradeById(int id); 
​
}

实现类:在实现类中需要连接数据库,并且查询结果来自于多张表。此时如何存储数据呢?给大家一个思路:1.在不考虑两表的情况下,先存储各自表中的数据 2.结合上面步骤中添加属性的问题,考虑应该把哪个类添加到另外一个类的属性中。代码如下:

package dao.impl;
​
import bean.Grade;
import bean.Student2;
import dao.GradeDao;
import util.DruidUtil;
​
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
​
/
 * @Author: 李梓豪
 * @Description:
 * @Date Created in 2020-11-15 14:01
 */
public class GradeDaoImpl extends DruidUtil implements GradeDao {
​
    @Override
    public Grade findById(int gid) {
        Grade grade = new Grade();
        List<Student2> list = new ArrayList();
        Connection connection = null;
        PreparedStatement preparedStatement = null;
        ResultSet resultSet = null;
​
        try {
            connection = getConnection();
            preparedStatement = connection.prepareStatement("select * from student2 s,grade g where s.gid=g.gradeid and g.gradeid=?");
            preparedStatement.setInt(1,gid);
            resultSet = preparedStatement.executeQuery();
            while (resultSet.next()){
                //1.将各自的数据信息进行存储
                grade.setGradeId(resultSet.getInt("gradeid"));
                grade.setGname(resultSet.getString("gname"));
                Student2 student2 = new Student2();
                student2.setStuName(resultSet.getString("stuname"));
                student2.setStuAge(resultSet.getInt("stuage"));
​
                //2.将学生信息和年级中的属性进行关联
​
                //将学生放到一个集合中
                list.add(student2);
            }
            //3.建立两者关系
            grade.setStudent2List(list);
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        } finally {
            close(connection,preparedStatement,resultSet);
        }
        return grade;
    }
}

说明:这里比较难理解的是关于对象的创建以及属性赋值

2.5 测试类

package test;
​
import bean.Grade;
import bean.Student2;
import dao.impl.GradeDaoImpl;
​
import java.util.List;
​
/
 * @Author: 李梓豪
 * @Description:
 * @Date Created in 2020-11-15 14:23
 */
public class Demo1 {
    public static void main(String[] args) {
        GradeDaoImpl gradeDao = new GradeDaoImpl();
        Grade grade = gradeDao.findById(1);
        System.out.println(grade.getGname());
        List<Student2> student2List = grade.getStudent2List();
        for (Student2 student:student2List){
            System.out.println("\t"+student.getStuName());
        }
    }
}

运行结果:

因为我们每次都是查询某一个班级的学生,所以创建班级对象的时候,应该在循环的外部。而学生信息每条都是不同的,索引创建学生对象的时候,应该在循环的内部。

3.多表操作之多对一

3.1 在上一步的基础上,完成多对一。

学生是多方,秉持着“一方存多方的集合,多方存一方的对象”,那么我们就 需要在多的一方,添加一方的一个对象。此时学生类中需要添加下列代码。

private Grade grade; 
​
public Grade getGrade() { 
​
    return grade; 
​
}
​
public void setGrade(Grade grade) { 
​
    this.grade = grade; 
​
}

3.2 在Dao层添加接口方法:

public interface StudentDao { 
​
    //查询所有学生的信息(要求包含年级信息) 
​
    public List<Student> getAllStudent(); 
​
}

3.3 添加实现类:实现类中主要考虑如何建立两者关联

public class StudentDaoImpl extends DruidUtil implements StudentDao {
@Override
    public List<Student2> findAll() {
        ArrayList<Student2> studentList  = new ArrayList<>();
        Connection connection = null;
        PreparedStatement preparedStatement = null;
        ResultSet resultSet = null;
​
        try {
            connection = getConnection();
            preparedStatement = connection.prepareStatement("select * from student2 s,grade g where s.gid=g.gradeid ");
            resultSet = preparedStatement.executeQuery();
            while (resultSet.next()){
                //1.各自存各自的数据
                Grade grade = new Grade();
                grade.setGradeId(resultSet.getInt("gradeid"));
                grade.setGname(resultSet.getString("gname"));
​
                Student2 student2 = new Student2();
                student2.setStuName(resultSet.getString("stuname"));
                student2.setStuAge(resultSet.getInt("stuage"));
​
                //2.关联信息(在年级放在学生中,再将学生放在集合中)
                student2.setGrade(grade);
                studentList.add(student2);
            }
        } catch (SQLException throwable) {
            throwable.printStackTrace();
        } finally {
        }
        return studentList;
    }
}

3.4 测试类:

public class Demo2 {
    public static void main(String[] args) {
        GradeDaoImpl gradeDao = new GradeDaoImpl();
        List<Student2> student2List = gradeDao.findAll();
        for (Student2 student:student2List){
            System.out.println(student.getStuName()+"\t"+student.getGrade().getGname());
        }
    }
}

运行结果

同理,因为我们每次都是查询所有学生的信息(带班级),每条学生信息中的班级都可能是不同的。所以创建班级对象的时候,应该在循环的外部。而学生信息每条都是不同的,索引创建学生对象的时候,应该在循环的内部。

4.多表操作之一对一

一对一在多表关系中存在场景不是很多,现在以妻子和丈夫的关系,模拟一对一的实现过程。

4.1 创建数据表

create table wife( 
​
    wifeid int PRIMARY key, 
​
    wifename varchar(5) 
​
);
​
create table husband( 
​
    husid int PRIMARY KEY, 
​
    husname varchar(5), 
​
    wid int 
​
);
​
insert into wife values(1,'黄晓明'); 
​
insert into wife values(2,'邓超'); 
​
insert into husband values(1,'baby',1); 
​
insert into husband values(2,'孙俪',2); 

4.2 创建实体类

public class Husband { 
​
private int husId; 
​
private String husName; 
​
private int wid; 
​
//setter and getter 
​
}
public class Wife { 
​
    private int wifeId; 
​
    private String wifeName; 
​
//setter and getter 
}

建立实体类之间的一对一关系,还是依据“一方存多方的集合,多方存一方的对象”的原则,但是现在的问题是双方都是一方数据,此时记住原则“一方存另一方的对象”。所以代码改成:

妻子一方添加丈夫的对象

public class Wife { 
​
    private int wifeId; 
​
    private String wifeName; 
​
    private Husband husband; 
​
//setter and getter 
​
}

丈夫一方添加妻子的对象

public class Husband { 
​
    private int husId; 
​
    private String husName; 
​
    private int wid; 
​
    private Wife wife; 
​
    //setter and getter 
​
}

4.3 添加Dao和实现类

Dao:

public interface WifeDao {
    //查询某位妻子(包含丈夫的信息)
    public Wife findByWifeId(int wid);
​
    //查询某位丈夫(包含妻子的信息)
    public Husband findByHid(int hid);
}

实现类:

public class WifeDaoImpl extends DruidUtil implements WifeDao {
​
    @Override
    public Wife findByWifeId(int wid) {
        Wife wife = new Wife();
        Connection connection = null;
        PreparedStatement preparedStatement = null;
        ResultSet resultSet = null;
        try {
            connection = getConnection();
            preparedStatement = connection.prepareStatement("SELECT * FROM wife w,husband h WHERE w.wifeid = h.wid AND w.wifeid=?");
            preparedStatement.setInt(1, wid);
            resultSet = preparedStatement.executeQuery();
            while (resultSet.next()) {
                //1.存各自的信息
                wife.setWifeName(resultSet.getString("wifename"));
​
                Husband husband = new Husband();
                husband.setHusName(resultSet.getString("husname"));
​
                //2.建立两者关系(将丈夫封装到妻子的对象中)
                wife.setHusband(husband);
            }
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }finally {
            close(connection,preparedStatement,resultSet);
        }
        return wife;
    }
​
    @Override
    public Husband findByHid(int hid) {
        Husband husband = new Husband();
        Connection connection = null;
        PreparedStatement preparedStatement = null;
        ResultSet resultSet = null;
        try {
            connection = getConnection();
            preparedStatement = connection.prepareStatement("SELECT * FROM wife w,husband h WHERE w.wifeid = h.wid AND h.husid=?");
            preparedStatement.setInt(1, hid);
            resultSet = preparedStatement.executeQuery();
            while (resultSet.next()) {
                //1.存各自的信息
                Wife wife = new Wife();
                wife.setWifeName(resultSet.getString("wifename"));
​
​
                husband.setHusName(resultSet.getString("husname"));
​
                //2.建立两者关系(将妻子封装到丈夫的对象中)
                husband.setWife(wife);            }
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }finally {
            close(connection,preparedStatement,resultSet);
        }
        return husband;
    }
}

4.4 测试类

public class Demo3 {
    public static void main(String[] args) {
        WifeDaoImpl wifeDao  = new WifeDaoImpl();
        Wife wife = wifeDao.findByWifeId(1);
        System.out.println(wife.getWifeName()+"\t"+wife.getHusband().getHusName());
​
        Husband husband = wifeDao.findByHid(2);
        System.out.println(husband.getHusName()+"\t"+husband.getWife().getWifeName());
    }
}

运行结果

5.多表操作之多对多

多对多在现实场景中也是不很多,比较特殊的就是权限列表的三表关系。菜单表和角色表之间属于多对多。某个功能菜单可以分配给多个角色,某个角色也可以拥有多个菜单,在这个分配过程中就是典型的多对多。在多对多中, 表的创建也比较有特点,必须是基于三张表来实现。

5.1 创建数据表

create table menu( 
​
    menuid int primary key, 
​
    menuname varchar(10) 
​
);
​
create table role( 
​
    roleid int primary key, 
​
    rolename varchar(10) 
​
);
​
create table middle( 
​
    middleid int primary key, 
​
    mid int, 
​
    rid int 
​
);
​
insert into menu values(1,'用户管理'); 
​
insert into menu values(2,'菜单管理'); 
​
insert into menu values(3,'角色管理'); 
​
insert into role values(1,'超级管理员'); 
​
insert into role values(2,'管理员'); 
​
insert into role values(3,'总经理'); 
​
insert into middle values(1,1,1); 
​
insert into middle values(2,2,1); 
​
insert into middle values(3,3,1); 
​
insert into middle values(4,1,2);
​
insert into middle values(5,2,2); 
​
insert into middle values(6,1,3); 

5.2 定义实体类:中间表不需要生成实体类

Menu: 
​
public class Menu { 
​
    private int menuId; 
​
    private String menuName; 
​
    //getter and setter 
​
} 

Role:

public class Role { 
​
    private int roleId; 
​
    private String roleName; 
​
    //getter and setter 
​
} 

建立实体类之间的多对多关系,还是依据“一方存多方的集合,多方存一方的对象”的原则,但是现在的问题是双方都是多方数据,此时记住原则“多方存另一方的集合”。代码如下:

Menu:

public class Menu { 
​
private int menuId; 
​
private String menuName; 
​
private List<Role> roleList; 
​
//getter and setter 
​
} 

5.3 定义接口和实现类

Dao:

public interface RoleDao {
    //查询某个菜单信息(包含角色)
    public Menu findByMenuId(int mid);
​
    //c查询某个角色信息(包含菜单)
    public Role findByRoleId(int roleid);
}

实现类:

public class RoleDaoImpl extends DruidUtil implements RoleDao {
    @Override
    public Menu findByMenuId(int mid) {
        Menu menu = new Menu();
        List<Role> roleList = new ArrayList<>();
        Connection connection = null;
        PreparedStatement preparedStatement = null;
        ResultSet resultSet = null;
​
        try {
            connection = getConnection();
            preparedStatement = connection.prepareStatement("SELECT * FROM menu m,role r,middle WHERE m.menuid=middle.mid AND r.roleid = middle.rid AND m.menuid=?");
            preparedStatement.setInt(1, mid);
            resultSet = preparedStatement.executeQuery();
            while (resultSet.next()) {
                //1.先各自存数据
                menu.setMenuName(resultSet.getString("menuname"));
​
                Role role = new Role();
                role.setRoleName(resultSet.getString("rolename"));
​
                //2.建立二者关系
                roleList.add(role);
            }
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        } finally {
            close(connection,preparedStatement,resultSet);
        }
        menu.setRoleList(roleList);
​
        return menu;
    }
​
    @Override
    public Role findByRoleId(int roleid) {
        Role role = new Role();
        List<Menu> menuList = new ArrayList<>();
        Connection connection = null;
        PreparedStatement preparedStatement = null;
        ResultSet resultSet = null;
​
        try {
            connection = getConnection();
            preparedStatement = connection.prepareStatement("SELECT * FROM menu m,role r,middle WHERE m.menuid=middle.mid AND r.roleid = middle.rid AND r.roleid=?");
            preparedStatement.setInt(1, roleid);
            resultSet = preparedStatement.executeQuery();
            while (resultSet.next()) {
                //1.先各自存数据
                Menu menu = new Menu();
                menu.setMenuName(resultSet.getString("menuname"));
​
​
                role.setRoleName(resultSet.getString("rolename"));
​
                //2.建立二者关系
                menuList.add(menu);
            }
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        } finally {
            close(connection,preparedStatement,resultSet);
        }
        role.setMenuList(menuList);
​
        return role;
    }
}

5.4 测试类

public class Demo4 {
    public static void main(String[] args) {
        RoleDaoImpl roleDao = new RoleDaoImpl();
        Menu menu =roleDao.findByMenuId(2);
        System.out.println(menu.getMenuName()+"的权限管理人员:");
​
        List<Role> roleList = menu.getRoleList();
        for(Role role:roleList){
            System.out.println(role.getRoleName());
        }
​
        Role role =  roleDao.findByRoleId(2);
        System.out.println(role.getRoleName()+"的菜单权限:");
        List<Menu> menuList = role.getMenuList();
        for (Menu menu1:menuList){
            System.out.println(menu1.getMenuName());
        }
    }
}

运行结果:

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JavaWeb技术之多表操作 的相关文章

  • JSP和JavaBean

    8 JSP 8 1 什么是JSP Java Servlet Pages java服务器端页面 也和Servlet一样 用于实现动态Web技术 最大特点 写JSP就像是写HTML 区别 HTML只给用户提供静态的数据 JSP页面中可以嵌入Ja
  • jsp&servlet&jdbc&mysql实现简单的增删查改(一)

    1 关于JDBC JDBC Java DataBase Connectivity 是一种用于执行SQL语句的Java API 是Java和数据库之间的一个桥梁 它由一组用Java语言编写的类和接口组成 各种不同类型的数据库都有相应的实现类
  • 实现serializable序列化接口

    1 什么是序列化和反序列化 Serialization 序列化 是一种将对象以一连串的字节描述的过程 反序列化deserialization是一种将这些字节重建成一个对象的过程 2 什么情况下需要序列化 a 当你想把的内存中的对象保存到一个
  • Java的反射技术(Class类,Constructor类,Method类, Field类)

    Java编码时知道类和对象的具体信息 此时直接对类和对象进行操作即可 无需反射 如果编码时不知道类或者对象的具体信息 此时应该使用反射来实现 为什么要使用反射 反射就是把Java类中的各种成分映射成一个个的java对象 例如 一个类有 成员
  • MySQL数据库入门超级详细教程

    文章目录 MySQL 1 数据库软件安装 2 为什么要用数据库 3 什么是数据库 4 数据库管理系统 DBMS 5 MySQL 介绍 6 SQL 6 1 SQL 语句概述 6 2 SQL 基本操作 7 表结构操作 7 1 创建数据表 7 2
  • JavaWeb——JavaWeb核心之Servlet

    一 Servlet简介 1 什么是Servlet Servlet 运行在服务端的Java小程序 是sun公司提供一套规范 接口 用来处理客户端请求 响应给浏览器的动态资源 但servlet的实质就是java代码 通过java的API 动态的
  • 设计模式之六大原则

    设计模式之六大原则 转载 关于设计模式的六大设计原则的资料网上很多 但是很多地方解释地都太过于笼统化 我也找了很多资料来看 发现CSDN上有几篇关于设计模式的六大原则讲述的比较通俗易懂 因此转载过来 原作者博客链接 http blog cs
  • IDEA(最新版)导入Myeclipse/eclipse的web项目并运行(全) Windows或者Mac系统

    一 前言 最近在做毕业设计 没想到现在的大学中还是使用的Myeclipse比较多 这个工具逐渐被IDEA工具所代替 因为IDEA的性能和使用更加优秀 或者我们在工作中遇到Myeclipse项目导入IDEA中的情形 怎么将Myeclipse开
  • brew install mysql

    Mac安装MySQL Brew 以及修改默认密码 折腾了一大圈之后 得知需要安装MacOS的包管理器 HomeBrew 百度搜索macos安装homebrew 进入第一个CSDN大佬文章开始撸 安装HomeBrew教程 跟着教程把brew安
  • javax.validation.UnexpectedTypeException: HV000030: No validator could be found for constraint

    java 验证出现如下错误 javax validation UnexpectedTypeException HV000030 No validator could be found for constraint 错误原因 Java实体类中
  • 如何访问WEB-INF文件夹下的jsp文件

    我们都知道不能直接访问WEB INF文件夹下的jsp文件 那应该怎样访问呢 首先 WEB INF目录是Java WEB应用的安全目录 客户端无法访问 只有服务端可以访问 然后 为什么要这么设计 这样做的初衷是在WEB INF文件夹下放一些不
  • 理解Servlet和Servlet容器、Web服务器等概念

    转载自http blog csdn net iAm333 之前在开源中国看到一篇文章 初学 Java Web 开发 请远离各种框架 从 Servlet 开发 觉得很不错 想到自己之前一直对各种框架执迷不悟 顿感惭愧 于是 看了孙鑫的 Ser
  • IntelliJ Idea 常用快捷键 列表(实战终极总结!!!!)

    自动代码 常用的有fori sout psvm Tab即可生成循环 System out main方法等boilerplate样板代码 例如要输入for User user users 只需输入user for Tab 再比如 要输入Dat
  • idea中Java Web项目的访问路径问题

    说明 这里只以 servlet 为例 没有涉及到框架 但其实路径的基本原理和框架的关系不大 所以学了框架的同学如果对路径有疑惑的也可以阅读此文 项目结构 在 idea 中新建一个 Java Web 项目 项目的初始结构如下 不同版本的 id
  • java_web:基于三层架构实现学生信息管理1.0(对学生信息的增删改查)

    学生信息管理1 0 涉及的知识点 三层架构理论 简单理解三层架构就是 上层调用下层 下层为上层提供服务 最上层 视图层 由jsp servlet组成 中间层 服务层 组装数据访问层所实现的功能 最下层 数据访问层 实现单一得某项功能 为服务
  • javaweb前后台交互传递数据的几种方法

    前端传后台 form表单传递
  • Java的内省技术

    什么是内省 在计算机科学中 内省是指计算机程序在运行时 Run time 检查对象 Object 类型的一种能力 通常也可以称作运行时类型检查 不应该将内省和反射混淆 相对于内省 反射更进一步 是指计算机程序在运行时 Run time 可以
  • Sping之自动注入-1

    最近终于能静下心来 一步步的学习Java Web开发 在学习的过程中 遇到太多的问题 一开始好些问题真是不知道怎么解决 在这里要非常感谢 Sping In Action 一书的作者 感谢他能写出此书 让我受益匪浅 您辛苦了 本着 相互学习
  • 解决Jenkins插件不能下载安装的问题

    安装到这一步 显示无法下载Jenkins插件 安装中升级站点 如果你还在安装过程中 遇见这个问题 你可以打开一个新的网页 输入网址http localhost 8080 pluginManager advanced 在最下面的升级站点 把其
  • 浏览器发器POST请求

    浏览器按F12或打开开发者工具 在console 控制台 标签页下输入 fetch new Request http localhost 8080 power font getToken method POST headers Conten

随机推荐

  • office365 无法登录_office365、office2019微软账号无法登录如何解决?

    我相信很多人肯定被这个问题折磨得头大 因为微软服务器在国外的原因 所以部分设备很难登入 但是OneNote Office365 Ofice等软件如果是绑定了微软账号的 需要登入微软账号才可以激活和保存数据 日常帮助很多订阅客户处理过这个问题
  • 【数据结构】循环队列的实现(附带详细注释)

    前言 数据结构系列首页 是数据结构系列文章的首页 其中会逐步更新各种数据结构的实现 有兴趣的选手可以一看 首页中不仅有各种数据结构的实现 还有学习数据结构必备的基础知识 如果有选手觉得自己的基础不太牢固 可以先将搞定基础知识 之后再攻克数据
  • 剑指 Offer 68 - I. 二叉搜索树的最近公共祖先 -- 递归

    0 题目描述 leetcode原题链接 剑指 Offer 68 I 二叉搜索树的最近公共祖先 1 递归解法 终止条件 当 root 为空时 返回 None 当 p q 都在 root 的右子树中 则开启递归 root right 并返回 否
  • 企业大数据CDH集群安全----sentry

    Sentry安装 1 cm中选择添加服务 选择sentry 2 选择要安装sentry的主机 3 配置数据库 HDFS配置 开启启动访问控制列表 选中打勾 开启检查HDFS权限服务 开启sentry服务 hive配置 修改hive配置参数
  • 获取IronSource的广告源Pod和Maven版本

    接入IronSource库后 现在可以选择Maven或者Pod的形式导入相关广告源 Ironsource官网上有一个入口 可以方便的获取接入广告源的Maven和Pod Android https developers ironsrc com
  • Object.keys()、Object.values()、Object.entries()的用法

    一 Object keys obj 参数 要返回其枚举自身属性的对象 返回值 一个表示给定对象的所有可枚举属性的字符串数组 处理对象 返回可枚举的属性数组 let person name 张三 age 25 address 深圳 getNa
  • java参数校验常见注解介绍

    一 NotEmpty NotBlank NotNull区别介绍 NotEmpty 常用于集合 字符串等 不能为空 且长度必须大于0 NotBlank 用于字符串上 不能为空 且长度必须大于0 NotNull 字面意思 一般用于基本类型 不为
  • 聊聊编程是什么

    前言 前言不看没关系 不影响 半夜睡不着 想写点啥 浅聊下我理解的编程的 我认为编程就是解决问题 就像互联网是依附于实体业 是处理解决实际问题的 刚学编程的时候总是很恐慌的 天赋不够 我这么认为的原因 一是当时流行一种说法叫不是热爱编程的是
  • Mongodb数据库的安装部署及基本使用

    Mongodb数据库的安装部署及基本使用 一 Mongodb数据库介绍 1 Mongodb简介 2 Mongodb适用场景 3 MongoDB特性 二 检查本地系统环境 1 检查系统版本 2 检查yum仓库 三 Mongodb的安装 1 配
  • 【python开发】1. __init__.py与导包

    python开发 开始拿着github上的python代码狂啃时 发现很多知道干嘛又不知道为啥这样的代码 开始疯狂补漏 package 导包 用处1 导入包 比如这样的架构 package1 subPack1 init py module
  • 爬虫豆瓣top250

    爬虫豆瓣top250 前言 一 爬虫是什么 二 爬取豆瓣的原因 三 爬虫项目步骤 1 准备工具 2 学习python的相关知识 3 爬虫过程讲析 四 成果展示 五 代码展示 前言 随着网络的迅速发展 万维网成为大量信息的载体 如何有效地提取
  • 深度学习理论_卷积神经网络

    1 要点 激活函数一般用于卷积层和全连接层之后 激活函数是深度网络非线性的主要来源 常见的激活函数Sigmoid 双曲正切 ReLU 生物启发 克服了梯度消失问题 PReLU alpha可学习 ELU和maxout 其中PReLU和ELU都
  • MQClientException: CODE: 208  DESC: query message by key finished, but no message.

    2019 05 15 10 19 31 401 INFO closeChannel close the connection to remote address 127 0 0 1 10911 result true 2019 05 15
  • lua的for循环

    lua的三种for循环介绍 本文的lua代码编辑于luaforwindows 1 数值for循环 如图 举例如下 2 ipairs迭代器 举例如下 说明 ipairs按照索引值顺序 打印出了table中有索引值的数据 没有索引值的不管 3
  • 自定义mvc原理和框架实现

    目录 1 什么是MVC 2 自定义MVC工作原理图 3 自定义mvc的简单实现 1 中央控制器 2 Action接口定义 3 实现子控制器 4 完善中央控制器 1 请求分发功能 2 使用配置文件配置action 3 请求参数处理 4 完善A
  • vector中emplace_back和push_back详解,源码解读

    C 11之前 通常使用push back 向容器中加入一个右值元素 临时对象 的时候 首先会调用构造函数构造这个临时对象 然后需要调用拷贝构造函数将这个临时对象放入容器中 原来的临时变量释放 这样造成的问题是临时变量申请的资源就浪费 C 1
  • 关系型数据库与非关系型数据库Nosql区别汇总

    目录 关系型数据库与非关系型数据库详细比较 关系型数据库与非关系型数据库优缺点对比 关于Nosql 1 Nosql 2 Nosql特点 3 Nosql主要主流产品 4 Nosql数据库四大分类 关系型数据库与非关系型数据库详细比较 1 关系
  • MATLAB 在向量后面加一个元素

    1 向量后面加元素 gt gt x 1 2 3 4 5 gt gt y 6 gt gt x x y x 1 2 3 4 5 62 构建矩阵
  • OpenLayers的点击事件

    OpenLayers的点击事件是附加在整个ol Map对象上的 var selectSingleClick new ol interaction Select map addInteraction selectSingleClick sel
  • JavaWeb技术之多表操作

    目录 1 多表关系 2 多表操作之一对多 2 1 数据表 2 2 创建实体类 2 3 建立两表之间的属性关系 2 4 创建Dao层接口代码和实现类 操作数据库 2 5 测试类 3 多表操作之多对一 3 1 在上一步的基础上 完成多对一 3