Mybatis对数据库数据的查询

2023-11-04

简单类型的映射

返回的是简单基本类型

接口中的定义

    int getAdminCount();//返回数据库总共还几条数据

xml中具体的实现

    <select id="getAdminCount" resultType="int">
        select count(*) from admin
    </select>

这里我选用了测试的一个jar包,就直接用来测试了,没有试用main方法。

    @Test//返回数据港总共还几条数据
    public void find3() {
        SqlSession sqlSession = MybatisUtil.getSqlSession();
        AdminMapper mapper = sqlSession.getMapper(AdminMapper.class);

        int count = mapper.getAdminCount();

        System.out.println(count);
        sqlSession.commit();
        sqlSession.close();
    }

测试结果
在这里插入图片描述

返回多组数据

在数据库当中,查找多组的数据,就需要接受,而接受主要就靠的是集合来接受数据库所返回的数据。

接口中的定义:

    /*多张表*/
    List<Admin> getAdminList();//返回的数据以集合的形式
    //查询的结果是一个集合,这边通过List自动封装为集合

Mybatis中xml的定义:

    <select id="getAdminList" resultType="Admin">
        select * from admin
    </select>

这里我选用了测试的一个jar包,就直接用来测试了,没有试用main方法。

   @Test//传递的是列,返回的是集合
   public void findList() {
       SqlSession sqlSession = MybatisUtil.getSqlSession();
       AdminMapper mapper = sqlSession.getMapper(AdminMapper.class);

       List<Admin> adminList = mapper.getAdminList();
       System.out.println(adminList);
       sqlSession.commit();
       sqlSession.close();
   }

这里我试用了日志来返回查看数据库返回了几条的数据,并具体打印出来
在这里插入图片描述

POJO对象输出映射

POJO (Plain Old Java Objects,普通的 Java 对象)

如果数据库中表的列名和类中的属性名完全相同,则Mybatis会自动的将查询结果封装到这个POJO的对象当中去

如果java中使用了标准的驼峰命名,则数据库中也使用的是标准的下划线连接命名法,这样就可以开始全局的设置实现自动转换。

    <settings>
            <!--开启从经典的数据库名到java驼峰命名之间的转换
        user_name==>userName-->
        <!--驼峰命名自动映射-->
        <setting name="mapUnderscoreToCamelCase" value="true"/>
    </settings>
public User findUserInfoById(int id)
<select id="findAdminInfoById" parameterType="int" resultType="User"> 
	select * from dmin where id=#{id} 
</select>

复杂类型的返回

resultMap

特殊情况下,数据库的列名和属性名就是不一致,就要解决这个映射的问题。
那么这里就是使用resultMap。resultMap就是结果集的映射。就是自定义的一种映射

但是resultMap主要多用于多表关联。

定义 resultMap

resultMap中的的标签主要有个id(映射主键)和result(映射非主键)
column表示的数据库中的数据列名,property表示的是类中定义的属性名

如果类中的属性名和数据库中的列名一致,可以不用将全部的数据写在resultMap当中
只写一些所需要的数据名之间的联系,一样的是不用写的。

    <!--resultMap就是对结果集的映射-->
    <!--column表示的数据库中的数据列名,property表示的是类中定义的属性名-->
    <!--如果类中的属性名和数据库中的列名一致,可以不用将全部的数据写在resultMap当中
    只写一些所需要的数据名之间的联系-->
    <resultMap id="one" type="Admin">
        <id column="id" property="id"></id>
        <result column="account" property="account"></result>
        <result column="password" property="password"></result>
        <result column="sex" property="sex"></result>
    </resultMap>
  1. resutlMap 的 id 属性是 resutlMap 的唯一标识,本例中定义为 “one”。
  2. resutlMap 的 id 属性是映射的 POJO 类。
  3. id 标签映射主键,result 标签映射非主键。
  4. property 设置 POJO 的属性名称,column 映射查询结果的列名称

使用resultMap

    <select id="getAdminById" resultMap="one">
        select * from admin where id = #{id}
    </select>

输出的映射不是resultType,而是resultMap,resultMap的值填写定义好id的resultMap值

再定义一个resultMap值对应的resultMap值

    <resultMap id="one" type="Admin">
        <id column="id" property="id"></id>
        <result column="account" property="account"></result>
        <result column="password" property="password"></result>
        <result column="sex" property="sex"></result>
    </resultMap>

多表关联处理结果集(resultMap)

resultMap主要还是针对于多表之间的查询

resultMap 元素中 association , collection 元素
association , collection 都是对于复杂类型的联合,

association: 之间是一种一对一的关系,比如一个部门的操作针对于一个操作人。
association 是能够引用自身, 或者从其它地方引用。

collection: 是一种一对多或者多对一的关系。比如一个部门针对于多个员工。
collection 是能够能引用自身, 或者从其它地方引用。

association 关联元素处理“有一个”类型的关系,即一对一关联。
它有两种关联方式:

  1. 嵌套查询:通过执行另外一个 SQL 映射语句来返回预期的复杂类型。
  2. 嵌套结果:使用嵌套结果映射来处理重复的联合结果的子集。

Collection 关联元素处理一对多之间的关联。

Mybatis在多表之间的关联无异是异常方便的
在创建储存信息的类的时候,可以每一个表创建一个类,将相邻表的数据关联映射到我们的类当中去。使得在建类,取名等等

先建对应的存储数据的类

Admin(操作人)对应的类

package com.demo.mybatispro.model;

import java.io.Serializable;

public class Admin implements Serializable {

    private int id;
    private String account;
    private String password;
    private String sex;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getAccount() {
        return account;
    }

    public void setAccount(String account) {
        this.account = account;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

    @Override
    public String toString() {
        return "Admin{" +
                "id=" + id +
                ", account='" + account + '\'' +
                ", password='" + password + '\'' +
                ", sex='" + sex + '\'' +
                '}';
    }
}

dept(部门)对应的类

package com.demo.mybatispro.model;

import java.io.Serializable;
import java.util.List;

public class Dept implements Serializable {
    private int id;
    private String name;
    private List<Employer> employers;//员工的集合
    //private List<Employer> employers = new ArrayList<>;
    // 后面的可以不用写,它在创建的时候会自动封装好

    private Admin admin;//将操作人信息直接封装到对象当中去

    public int getId(int i) {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public List<Employer> getEmployers() {
        return employers;
    }

    public void setEmployers(List<Employer> employers) {
        this.employers = employers;
    }

    public Admin getAdmin() {
        return admin;
    }

    public void setAdmin(Admin admin) {
        this.admin = admin;
    }

    @Override
    public String toString() {
        return "Dept{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", employers=" + employers +
                ", admin=" + admin +
                '}';
    }
}

employee(员工)对应的类

package com.demo.mybatispro.model;

import javafx.scene.DepthTest;

import java.io.Serializable;

public class Employer implements Serializable {
//    implements Serializable生成序列号(序列号就是在类中一更新,就要生成行的序列号,
//    这个就规定它现在只能生成一个序列号)

    private int id;
    private String name;
    private int age;
    private Dept dept;
    private Admin admin;

    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 int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public Dept getDept() {
        return dept;
    }

    public void setDept(Dept dept) {
        this.dept = dept;
    }

    public Admin getAdmin() {
        return admin;
    }

    public void setAdmin(Admin admin) {
        this.admin = admin;
    }

    @Override
    public String toString() {
        return "Employer{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", age=" + age +
                ", dept=" + dept +
                ", admin=" + admin +
                '}';
    }
}

将读取Mybatis核心配置,创建SqlSessionFactory这样的一个工厂,创建SqlSession对象的这些封装到一个类当中去

package com.demo.mybatispro.util;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import java.io.IOException;
import java.io.Reader;

public class MybatisUtil {
    static SqlSessionFactory development = null;

    //因为只执行一遍,所以可以将这些都写到static当中去,随着类的加载,只执行一遍
    static {
        Reader resourceAsReader = null;
        try {
            resourceAsReader = Resources.getResourceAsReader("mybtis.xml");
        } catch (IOException e) {
            e.printStackTrace();
        }
        development = new SqlSessionFactoryBuilder().build(resourceAsReader);

    }

    public static SqlSession getSqlSession() {
        return development.openSession();
    }
}


association就是针对于表之间的关系是一对一的

接口定义方法名

public interface EmployerMapper {
    Employer getEmployerById(int id);
}

Mybatis中在xml中采用association具体的实现(一对一的关系)

    <resultMap id="empmap" type="Employer">
    <!-- column对应的是数据库中的名,property对应的是属性中的名-->
        <id column="id" property="id"></id>
        <result column="ename" property="name"></result>
        <result column="age" property="age"></result>
        <!--封装部门的信息-->
        <!--property对应的是属性名字,javaType是属性对应的类型-->
        <association property="dept" javaType="Dept">
            <result column="dname" property="name"></result>
        </association>
        <!--封装操作人的信息-->
        <association property="admin" javaType="Admin">
            <result column="account" property="account"></result>
        </association>
    </resultMap>

    <select id="getEmployerById" resultMap="empmap">
SELECT
emp.id,
emp.name ename,
emp.age,
d.name dname,
a.account
FROM employee emp LEFT JOIN dept d ON emp.deptId = d.id
			   LEFT JOIN admin a ON emp.adminId = a.id
WHERE emp.id = #{id}
    </select>

方法的调用:(我采用了测试的jar包,所以可以不用main方法来使用,就直接启动函数)

 @Test
    public void find(){
        SqlSession sqlSession = MybatisUtil.getSqlSession();
        EmployerMapper mapper = sqlSession.getMapper(EmployerMapper.class);

        Employer employer = mapper.getEmployerById(1);
        System.out.println(employer.getName());
        System.out.println(employer.getDept().getName());
        System.out.println(employer.getAdmin().getAccount());
        System.out.println(employer);
        sqlSession.commit();
        sqlSession.close();
    }

我采用了日志做到整体的一个输出
在这里插入图片描述

在这个关系中一个员工(employee)对应一个部门(dept)和一个操作人(admin) 是一对一之间的关系




collection 就是针对于表之间的关系是一对一的

接口定义要实现的方法。

public interface DeptMapper {
    Dept getDeptById(int id);
}

Mybatis中在xml中具体的实现(一对一的关系)

<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.demo.mybatispro.mapper.DeptMapper">
    <resultMap id="deptmap" type="Dept">
        <id column="id" property="id"></id>
        <result column="dname" property="name"></result>
        <!--疯转操作人的信息,单个信息,一对一-->
        <association property="admin" javaType="Admin">
            <result column="account" property="account"></result>
        </association>
        <!--封装的是员工信息的集合,是多个信息 一对多-->
        <collection property="employers" javaType="list" ofType="Employer">
            <result column="ename" property="name"></result>
        </collection>
    </resultMap>
    <select id="getDeptById" resultMap="deptmap">
SELECT
d.id,
d.name dname,
a.account,
e.name ename
FROM dept d LEFT JOIN admin a ON d.adminId = a.Id
		     LEFT JOIN employee e ON d.id = e.deptId
		     WHERE d.id = #{id}
    </select>
</mapper>

方法的调用:(我采用了测试的一个jar包,所以可以不用main方法来使用,就直接启动函数)

    @Test
    public void find() {
        SqlSession sqlSession = MybatisUtil.getSqlSession();
        DeptMapper mapper = sqlSession.getMapper(DeptMapper.class);
        Dept deptById = mapper.getDeptById(2);
        System.out.println(deptById);
        System.out.println(deptById.getName());
        List<Employer> list = deptById.getEmployers();
        //对一对多关系中的多做一个循环输出
        for (Employer employer : list) {
            System.out.println(employer.getName());
        }
        sqlSession.commit();
        sqlSession.close();
    }

采用了日志做到整体的一个输出
在这里插入图片描述
在这个关系当中一个部门(dept)对应的是一个操作人(admin)和多个员工(employee)。
部门对应操作人时用association,对于员工时就用collection。

嵌套查询

什么是嵌套查询?

嵌套查询其实就是在多表关联处理的结果。

需要查询关联信息时,就可以使用到Mybatis的嵌套查询特性。

Mybatis 一对一关联的 association 和一对多的 collection 可以实现懒加 载。嵌套循环时用到的是resultMap,不是resultType。

嵌套查询的例子

接口中的定义方法名

    Employer getEmlpyeeById1(int id);

具体在xml中的实现

    <resultMap id="emp1" type="Employer">
        <id column="id" property="id"></id>
        <result column="name" property="name"></result>
        <result column="age" property="age"></result>
        <!--property是属性的名字,JavaType是属性的类型 fetchType加载的类型lazy/eager
            select自己起的名字对应关联表的名字   column值数据库中的列-->

        <!--嵌套查询部门的信息-->
        <association property="dept" javaType="Dept" fetchType="lazy"
                     select="findDeptById" column="deptId">
            <result column="name" property="name"></result>
        </association>
        <!--嵌套查询操作人的信息-->
        <association property="admin" javaType="Admin" fetchType="lazy"
                     select="findAdminById" column="adminId">
            <result column="account" property="account"></result>
        </association>
    </resultMap>


    <select id="getEmlpyeeById1" resultMap="emp1">
    SELECT
        id,
        name,
        age,
        deptId,
        adminId
            FROM employee
                WHERE id = #{id}
    </select>
    <select id="findDeptById" resultType="Dept">
        select name from dept where id = #{deptId};
    </select>
    <select id="findAdminById" resultType="Admin">
        select account from admin where id = #{adminId};
    </select>

调用方法

    @Test
    public void find2(){
        SqlSession sqlSession = MybatisUtil.getSqlSession();
        EmployerMapper mapper = sqlSession.getMapper(EmployerMapper.class);

        Employer employer = mapper.getEmlpyeeById1(2);
        System.out.println(employer.getName());
        System.out.println(employer.getDept().getName());
        System.out.println(employer.getAdmin().getAccount());
        System.out.println(employer);
        sqlSession.commit();
        sqlSession.close();
    }

在这里插入图片描述

嵌套查询首次查询时,只查询主表的信息,关联表信息的获取是在用户需求时,再加载得到的。

懒加载(按需加载)

懒加载的使用可以有效的减少数据库的压力。

懒加载就是在嵌套循环上加了一个setting的全局配置。

在标签里也要这个这个赋上lazy值,fetchType="lazy"意为开启延迟加载(需要时,才会触发查询)
懒加载的前提就是首先必须是一个嵌套查询

在核心配置文件中通过 settings 配置 lazyLoadingEnabled 来关闭嵌套查询。

    <settings>
        <setting name="lazyLoadTriggerMethods" value=""/>
    </settings>

以上面的嵌套循环为基础,实现这个懒加载。

打一个断点,使用debug进行一步一步调试。
在这里插入图片描述

  1. 第一个
    在这里插入图片描述
  2. 第二个
    在这里插入图片描述
  3. 第三个
    在这里插入图片描述这就是懒加载的方式与过程。

上一篇:>>> Mybatis对数据的增删改查

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

Mybatis对数据库数据的查询 的相关文章

  • 【计算机毕业设计】出租车管理系统

    现代经济快节奏发展以及不断完善升级的信息化技术 让传统数据信息的管理升级为软件存储 归纳 集中处理数据信息的管理方式 本出租车管理系统就是在这样的大环境下诞生 其可以帮助管理者在短时间内处理完毕庞大的数据信息 使用这种软件工具可以帮助管理人
  • 【计算机毕业设计】航空信息管理系统

    传统信息的管理大部分依赖于管理人员的手工登记与管理 然而 随着近些年信息技术的迅猛发展 让许多比较老套的信息管理模式进行了更新迭代 飞机票信息因为其管理内容繁杂 管理数量繁多导致手工进行处理不能满足广大用户的需求 因此就应运而生出相应的航空
  • 【计算机毕业设计】线上招聘问答系统

    计算机网络发展到现在已经好几十年了 在理论上面已经有了很丰富的基础 并且在现实生活中也到处都在使用 可以说 经过几十年的发展 互联网技术已经把地域信息的隔阂给消除了 让整个世界都可以即时通话和联系 极大的方便了人们的生活 所以说 线上招聘问
  • 【计算机毕业设计】网上拍卖系统

    现代经济快节奏发展以及不断完善升级的信息化技术 让传统数据信息的管理升级为软件存储 归纳 集中处理数据信息的管理方式 本网上拍卖系统就是在这样的大环境下诞生 其可以帮助使用者在短时间内处理完毕庞大的数据信息 使用这种软件工具可以帮助管理人员
  • 【计算机毕业设计】北关村基本办公管理系统

    在如今社会上 关于信息上面的处理 没有任何一个企业或者个人会忽视 如何让信息急速传递 并且归档储存查询 采用之前的纸张记录模式已经不符合当前使用要求了 所以 对北关村基本办公信息管理的提升 也为了对北关村基本办公信息进行更好的维护 北关村基
  • 【计算机毕业设计】精品课程在线学习系统

    如今社会上各行各业 都喜欢用自己行业的专属软件工作 互联网发展到这个时候 人们已经发现离不开了互联网 新技术的产生 往往能解决一些老技术的弊端问题 因为传统精品课程学习信息管理难度大 容错率低 管理人员处理数据费工费时 所以专门为解决这个难
  • 线程安全的集合类

    Java中提供了许多集合类 其中有的是线程安全的 有的是线程不安全的 线程安全的集合类有 1 Vector Vector类实现了一个 动态数组 与ArrayList相似 但Vector是同步访问的 2 Stack Stack是Vector的
  • APP端网络测试与弱网模拟

    当前APP网络环境比较复杂 网络制式有2G 3G 4G网络 还有越来越多的公共Wi Fi 不同的网络环境和网络制式的差异 都会对用户使用app造成一定影响 另外 当前app使用场景多变 如进地铁 上公交 进电梯等 使得弱网测试显得尤为重要
  • 【计算机毕业设计】电影院订票信息管理系统

    当今社会已经步入了科学技术进步和经济社会快速发展的新时期 国际信息和学术交流也不断加强 计算机技术对经济社会发展和人民生活改善的影响也日益突出 人类的生存和思考方式也产生了变化 传统电影院订票采取了人工的管理方法 但这种管理方法存在着许多弊
  • 【计算机毕业设计】微信小程序反诈科普平台

    相比于以前的传统手工管理方式 智能化的管理方式可以大幅降低反诈科普平台的运营人员成本 实现了反诈科普平台的标准化 制度化 程序化的管理 有效地防止了反诈科普平台的随意管理 提高了信息的处理速度和精确度 能够及时 准确地查询和修正反诈科普 一
  • Redis分布式锁--java实现

    文章目录 Redis分布式锁 方案 SETNX EXPIRE 基本原理 比较好的实现 会产生四个问题 几种解决原子性的方案
  • 明显的死锁 为未分配的挂起任务创建紧急线程

    我正在将 mysql 与 mybatis 一起使用 并且在我们的实时服务器上遇到此错误 com mchange v2 async ThreadPoolAsynchronousRunner DeadlockDetector 6538f8f2
  • 温室气体排放更敏感的模型(即更高的平衡气候敏感性(ECS))在数年到数十年时间尺度上也具有更高的温度变化(Python代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Python代码 数据
  • 每日变更的最佳实践

    在优维公司内部 我们采用发布单的方式进行每天的应用变更管理 这里给各位介绍优维的最佳实践 变更是需要多角色合作的 而且他是整体研发流程的一部分 在优维内部 我们坚持每日变更 打通开发环节到最终发布上线的全过程 在保证质量的前提下 尽可能提升
  • Mybatis Generator:如何生成指定模式的所有表

    Mysql数据库总共有4个模式 我只想生成一个名为 booking 的指定模式 但它总是为所有模式生成所有表 所以我需要你的帮助 下面是我的generatorConfig xml
  • MyBatis - jdbcTypeForNull Oracle

    我将 MyBatis 与 Oracle 11g R2 数据库结合使用 我正在使用 MyBatis 3 3 和 ojdbc6 12 1 0 2 我的问题是每当我尝试插入一个空对象时我都会得到以下信息 org springframework j
  • Java MyBatis 存储过程调用带 OUT 参数

    第一个问题 我试图返回一个 OUT 参数 而不是带注释的结果集 首先 这可能吗 如果是的话 人们会怎样做呢 MyBatis 3 0 6 数据库 SQL Server 2008 以下是我在 UserDAO 中调用方法的语法示例 Select
  • 使用 myBatis 从数据库中以 byte[] 的形式获取 blob

    我在一个项目中使用 spring MyBatis 1 2 0 其中有一个查询从 Oracle 11g 数据库中的 BLOB 字段获取数据 我想以字节数组 byte 的形式检索该字段 我的代码是
  • 在 MyBatis 3/Java 上从缓存反序列化对象时出现问题

    所以我正在使用 MySQL MyBatis3 Tomcat 进行一个业余项目 我目前正在致力于在 MyBatis 中打开缓存 当我第一次尝试打开缓存时 由于我的对象没有实现可序列化 所以出现了异常 因此 在使用我试图缓存的对象实现 Seri
  • (如何)我可以在 MyBatis 的 SQL 查询中安全且与数据库无关地使用“LIKE”吗?

    In MyBatis http www mybatis org 您可以标记参数应插入到 SQL 中的位置 如下所示 从人员中选择 其中 id id 此语法会激活正确的转义等 以避免 SQL 注入攻击等 如果您有可信输入并且想要跳过转义 您可

随机推荐

  • 【云原生进阶之PaaS中间件】第一章Redis-1.2数据类型

    1 Redis 数据类型 Redis支持五种数据类型 string 字符串 hash 哈希 list 列表 set 集合 及zset sorted set 有序集合 1 1 String 字符串 string是redis最基本的类型 你可以
  • GridView横向滚动

    GridView和ListView都是android比较重要的控件 但是横滚的控件不是太多 这里介绍怎么把GridView横向滚动起来 看到其他网友也有相应的解决方法 自己只是把这些知识总结一下 供大家参考 首先让GridView横向滚动需
  • MySQL慢查询优化

    目录 优化方式 sql语句优化 索引优化 explain分析执行计划 show profile分析SQL trace分析优化器执行计划 通过慢查询日志定位那些执行效率低的SQL语句 MySQL大分页查询问题 一文详解MySQL各种锁及MVC
  • Android获取assets子目录注意事项

    获取assets子目录方法 span style font size 14px String subList getAssets list subdir span 返回当前目录下的所有文件 夹名 但不包含当前目录下子目录的文件 夹名 如果需
  • react源码中的hooks

    今天 让我们一起深入探究 React Hook 的实现方法 以便更好的理解它 但是 它的各种神奇特性的不足是 一旦出现问题 调试非常困难 这是由于它的背后是由复杂的堆栈追踪 stack trace 支持的 因此 通过深入学习 React 的
  • nacos的使用(借鉴淘宝Diamond配置中心)

    nacos常见的使用方法无非就是将获取到的配置文件放入propertise文件中 再从propertise中获取内容 如果配置过多 每增加一个nacos配置就得加一个propertise文件 文件多了 不便于维护 像一些需要经常改动的配置
  • softmax(二):softmax交叉熵不是真正的目标函数

    最近一直在消化 吸收大神的输出 在这里主要把思路捋顺 试着增加自己的理解和扩展 首先 上链接 还有我的膝盖 拜王峰大神 可以直接看大神的文字 从最优化的角度看待Softmax损失函数 Softmax理解之Smooth程度控制 一 优化的目标
  • 常用的设计模式

    单例模式 简单点说 就是一个应用程序中 某个类的实例对象只有一个 你没有办法去new 因为构造器是被private修饰的 一般通过getInstance 的方法来获取它们的实例 getInstance 的返回值是一个对象的引用 并不是一个新
  • 数据库MySQL-索引(含常见面试题)

    目录 一 什么是索引 二 索引的作用 三 索引优缺点及场景 1 优点 2 缺点 3 使用场景 4 注意事项 四 索引的使用 1 索引分类 2 查看索引 3 创建索引 重点 4 索引和约束的区别 容易混淆 五 索引实现原理 索引失效 2 实现
  • Python——queue

    Queue Queue是python标准库中的线程安全的队列 FIFO 实现 提供了一个适用于多线程编程的先进先出的数据结构 即队列 用来在生产者和消费者线程之间的信息传递 基本FIFO队列 class Queue Queue maxsiz
  • C#设计模式——单例模式(Singleton Pattern)

    目录 一 概述 1 基础 二 实现 1 单线程 2 解决 多线程情况下 解决方案一 Sleep 解决方案二 加锁 三 扩展 一 概述 单例模式 gt 创建型设计模式 定义 保证一个类只有一个实例 并提供一个访问它的全局访问点 在第一个使用者
  • CentOS 6.5开启DHCP服务

    CentOS 6 5开启DHCP服务 安装dhcp yum install dhcp 配置Vmware虚拟网络编辑器 选择VMnet1网卡 选择 仅主机模式 取消使用本地DHCP服务 并设置子网IP与子网掩码 设置完点击 应用 设置Cent
  • 互联网未来30年发展的大趋势,专家:竞争会更激烈!

    未来互联网发展肯定是越来越快 越来越与各行业紧密融合 因此我们必须跟上趋势 顺着风向前行 互联网大佬马云曾说过 在互联网上失败一定是自己造成的 要不是脑子发热 要不就是脑子不热了 太冷了 专家分析互联网未来30年发展的10大趋势 1 政府推
  • Win11 21H2 22000.2124

    Win11 21H2 22000 2124是最新推出的非安全发布预览版更新 主要解决了一个影响桌面虚拟键盘的问题 该问题导致在锁定电脑后无法打开桌面虚拟键盘 改进 这一非安全性更新包括质量改进 当你安装这个kb时 新的 这一更新为微软维护者
  • VMware 下的CentOS6.7 虚拟机与Windows7通信

    在有网络的情况下 VMware 虚拟机使用桥接模式 Bridged 和NAT方式 会自动通信 但是在没有网络的情况下怎么办呢 对 是的 使用host only模式 如何设置呢 注 将Windows上的虚拟网卡改成跟Linux上的网卡在同一网
  • 将本地jar包打包到本地仓库和上传到私服

    1 本地jar打包到本地仓库 mvn install install file DgroupId 自定义的groupID DartifactId 自定义的artifactid Dversion 自定义版本号 Dpackaging jar D
  • 【网络编程】深入理解TCP协议一(三次握手四次挥手、标记位、确认应答机制、超时重传机制)

    TCP协议 1 三次握手四次挥手 2 TCP协议段格式 3 标记位介绍 4 确认应答机制 5 超时重传机制 1 三次握手四次挥手 当客户端发起连接请求时 SYN需要被设置位1 告诉服务器客户端希望建立一个链接 服务器收到响应之后会回复 SY
  • VUE项目中引入JS文件的几种方法

    在开发Vue项目的时候 有时需要使用一些非ES6格式的没有export的js库 可以有如下方法实现 1 在index html页面使用script标签引入 当然也可以使用cdn的地址 这样引入后的内容是全局的 可以在所有地方使用
  • 《区块链助力粤港澳大湾区一体化发展报告(2022)》发布

    7月19日 中国 深圳 综合开发研究院主办的 数 链 大湾区 区块链助力粤港澳大湾区一体化发展报告 2022 发布会在深圳举行 报告提出 以区块链为代表的数字技术在破解粤港澳大湾区制度差异坚冰 支撑实体经济跨越和赋能社会治理创新等方面能够发
  • Mybatis对数据库数据的查询

    简单类型的映射 返回的是简单基本类型 接口中的定义 int getAdminCount 返回数据库总共还几条数据 xml中具体的实现