Spring Boot集成Mybatis Plus通过Pagehelper实现分页查询

文章目录

  • 0 简要说明Pagehelper
  • 1 搭建环境
    • 1.1 项目目录
    • 1.2 项目搭建需要的依赖
    • 1.3 配置分页插件拦截器
    • 1.4 源代码
      • 启动类
      • 实体类
      • 数据层
      • xml映射文件
      • 业务层
      • 业务层实现类
      • 控制层
      • 接口配置swagger
      • 请求体
  • 2 可能出现的疑问或者问题
    • 2.1 关于total属性疑问
    • 2.2 分页不生效问题
  • 3 案例说明
    • 3.1 配置信息
    • 3.2 请求体
    • 3.3 控制层
    • 3.5 业务层
    • 4.6 业务层实现类
  • 4 关键问题:查询和录入操作使用一个dto出现强制分页情况【待定,问题未能复现,请稍等】

解决 PageInfo 返回的 total 不正确
关于PageInfo的total属性得到的值等于当前页记录数
Pagehelper官网
Pagehelper使用入门

0 简要说明Pagehelper

在这里插入图片描述

1 搭建环境

1.1 项目目录

在这里插入图片描述

1.2 项目搭建需要的依赖

		 <!-- SpringBoot的依赖配置--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version>2.5.10</version><type>pom</type><scope>import</scope></dependency><!--Mybatis Plus 核心依赖--><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.5.1</version></dependency><!--MySQL驱动包--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.28</version></dependency><!--Mybatis Plus 扩展依赖--><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-extension</artifactId><version>3.5.1</version></dependency><!--pagehelper分页插件--><dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper-spring-boot-starter</artifactId><version>1.4.0</version></dependency>

1.3 配置分页插件拦截器

在properties或者yml配置拦截器信息,使其生效。
Spring Boot 引入 starter 后自动生效,对分页插件进行配置时,在 Spring Boot 对应的配置文件 application.[properties|yaml] 中配置

# DataSource Config
spring:datasource:username: rootpassword: rooturl: jdbc:mysql://localhost:3306/school?useUnicode=true&characterEncoding=utf8&autoReconnect=true&rewriteBatchedStatements=true&serverTimezone=UTC&useSSL=false&allowMultiQueries=truedriver-class-name: com.mysql.cj.jdbc.Drivermvc:pathmatch:matching-strategy: ANT_PATH_MATCHER#配置日志
mybatis-plus:configuration:log-impl: org.apache.ibatis.logging.stdout.StdOutImplmapper-locations: classpath:mapper/*.xmlserver:port: 8089pagehelper:reasonable: truesupport-methods-arguments: trueparams: countSqlhelperDialect: mysql

reasonable:分页合理化参数,默认值为false。当该参数设置为 true 时,pageNum<=0 时会查询第一页, pageNum>pages(超过总数时),会查询最后一页。默认false 时,直接根据参数进行查询。

supportMethodsArguments:支持通过 Mapper 接口参数来传递分页参数,默认值false,分页插件会从查询方法的参数值中,自动根据上面 params 配置的字段中取值,查找到合适的值时就会自动分页。 使用方法可以参考测试代码中的 com.github.pagehelper.test.basic 包下的 ArgumentsMapTestArgumentsObjTest

helperDialect:分页插件会自动检测当前的数据库链接,自动选择合适的分页方式。

params:为了支持startPage(Object params)方法,增加了该参数来配置参数映射,用于从对象中根据属性名取值, 可以配置 pageNum,pageSize,count,pageSizeZero,reasonable,不配置映射的用默认值, 默认值为pageNum=pageNum;pageSize=pageSize;count=countSql;reasonable=reasonable;pageSizeZero=pageSizeZero

更加详细的参数说明,可以参考官网说明

1.4 源代码

启动类

package com.geekmice.sbpagehelper;import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;/*** @BelongsProject: spring-boot-scaffold* @BelongsPackage: PACKAGE_NAME* @Author: pingmingbo* @CreateTime: 2023-08-05  15:14* @Description: TODO* @Version: 1.0*/
@MapperScan(value = "com.geekmice.sbpagehelper.dao")
@SpringBootApplication
public class SbPageHelperApplication {public static void main(String[] args) {SpringApplication.run(SbPageHelperApplication.class, args);}
}

实体类

package com.geekmice.sbpagehelper.domain;import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;import java.io.Serializable;/*** (Teacher)实体类** @author pingmingbo* @since 2023-08-05 15:19:26*/
@TableName("teacher")
@Data
public class Teacher implements Serializable {private static final long serialVersionUID = -82982716139385175L;/*** 教师号*/@TableId@TableField(value = "teacher_no")private String teacherNo;/*** 教师名称*/@TableField(value = "teacher_name")private String teacherName;/*** 部门编号*/@TableField(value = "category_id")private Integer categoryId;}

数据层

package com.geekmice.sbpagehelper.dao;import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.geekmice.sbpagehelper.domain.Teacher;
import org.apache.ibatis.annotations.Param;
import java.util.List;/*** (Teacher)表数据库访问层** @author pingmingbo* @since 2023-08-05 15:19:26*/
public interface TeacherDao extends BaseMapper<Teacher> {}

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.geekmice.sbpagehelper.dao.TeacherDao"><resultMap type="com.geekmice.sbpagehelper.domain.Teacher" id="TeacherMap"><result property="teacherNo" column="teacher_no" jdbcType="VARCHAR"/><result property="teacherName" column="teacher_name" jdbcType="VARCHAR"/><result property="categoryId" column="category_id" jdbcType="INTEGER"/></resultMap></mapper>

业务层

package com.geekmice.sbpagehelper.service;import com.baomidou.mybatisplus.extension.service.IService;
import com.geekmice.sbpagehelper.domain.Teacher;
import com.geekmice.sbpagehelper.dto.QueryDTO;
import com.github.pagehelper.PageInfo;import java.util.List;/*** (Teacher)表服务接口** @author pingmingbo* @since 2023-08-05 15:19:26*/
public interface TeacherService extends IService<Teacher> {/*** @return 响应信息* @description 初次使用分页查询*/List<Teacher> queryPage();/*** @param pageSize 当前页数* @param pageNum  每页条数* @return 返回信息* @description 分页参数查询*/PageInfo<Teacher> queryPage(int pageNum, int pageSize);/*** @param queryDTO 请求体* @return 响应信息* @description 多参数分页查询*/PageInfo<Teacher> queryPage(QueryDTO queryDTO);
}

业务层实现类

在这里插入图片描述

package com.geekmice.sbpagehelper.service.impl;import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.geekmice.sbpagehelper.dao.TeacherDao;
import com.geekmice.sbpagehelper.domain.Teacher;
import com.geekmice.sbpagehelper.dto.QueryDTO;
import com.geekmice.sbpagehelper.service.TeacherService;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;import javax.annotation.Resource;
import java.util.List;/*** (Teacher)表服务实现类** @author pingmingbo* @since 2023-08-05 15:19:26*/
@Service("teacherService")
@Slf4j
public class TeacherServiceImpl extends ServiceImpl<TeacherDao, Teacher> implements TeacherService {@Resourceprivate TeacherDao teacherDao;/*** @return 响应信息* @description 初次使用分页查询*/@Overridepublic List<Teacher> queryPage() {PageHelper.startPage(1, 10);List<Teacher> result = teacherDao.selectList(null);return result;}/*** @param pageSize 当前页数* @param pageNum  每页条数* @return 返回信息* @description 分页参数查询*/@Overridepublic PageInfo<Teacher> queryPage(int pageNum, int pageSize) {PageHelper.startPage(pageNum, pageSize);QueryWrapper<Teacher> teacherQueryWrapper = new QueryWrapper<>();teacherQueryWrapper.likeRight("teacher_name", "小");List<Teacher> teachers = teacherDao.selectList(teacherQueryWrapper);PageInfo<Teacher> teacherPageInfo = new PageInfo<>(teachers);return teacherPageInfo;}/*** @param queryDTO 请求体* @return 响应信息* @description 多参数分页查询*/@Overridepublic PageInfo<Teacher> queryPage(QueryDTO queryDTO) {int pageNum = queryDTO.getPageNum();int pageSize = queryDTO.getPageSize();PageHelper.startPage(pageNum,pageSize);QueryWrapper<Teacher> teacherQueryWrapper = new QueryWrapper<>();teacherQueryWrapper.eq("teacher_name", queryDTO.getTeacherName());List<Teacher> teacherList = teacherDao.selectList(teacherQueryWrapper);PageInfo<Teacher> result = new PageInfo<>(teacherList);return result;}
}

控制层

在这里插入图片描述

package com.geekmice.sbpagehelper.controller;import com.geekmice.common.utils.AjaxResult;
import com.geekmice.sbpagehelper.domain.Teacher;
import com.geekmice.sbpagehelper.dto.QueryDTO;
import com.geekmice.sbpagehelper.service.TeacherService;
import com.github.pagehelper.PageInfo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.*;import javax.annotation.Resource;
import java.util.List;/*** (Teacher)表控制层** @author pingmingbo* @since 2023-08-05 15:19:26*/
@RestController
@RequestMapping("teacher")
@Api(tags = "0.分页查询模块")
public class TeacherController {/*** 服务对象*/@Resourceprivate TeacherService teacherService;/*** 通过主键查询单条数据** @param id 主键* @return 单条数据*/@ApiOperation(value = "查询单条数据")@GetMapping("selectOne")public Teacher selectOne(String id) {return null;}/*** @return 响应信息* @description 初次使用分页查询*/@GetMapping(value = "queryPage")@ApiOperation(value = "分页查询")public List<Teacher> queryPage() {List<Teacher> result = teacherService.queryPage();return result;}/*** @param pageSize 当前页数* @param pageNum  每页条数* @return 返回信息* @description 分页参数查询*/@GetMapping(value = "queryPageHavingParams")@ApiOperation(value = "分页查询带有参数")public AjaxResult queryPageHavingParams(int pageSize, int pageNum) {PageInfo<Teacher> result = teacherService.queryPage(pageNum, pageSize);return AjaxResult.success(result);}/*** @param queryDTO 请求体* @return 响应信息* @description 多参数分页查询*/@GetMapping(value = "queryPageByDTO")@ApiOperation(value = "多参数分页查询")public AjaxResult queryPageByDTO(QueryDTO queryDTO) {PageInfo<Teacher> result = teacherService.queryPage(queryDTO);return AjaxResult.success(result);}}

接口配置swagger

package com.geekmice.sbpagehelper.config;import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.Contact;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;/*** @BelongsProject: spring-boot-scaffold* @BelongsPackage: com.geekmice.sbhelloworld.com.geekmice.sbpagehelper.config* @Author: pingmingbo* @CreateTime: 2023-07-30  15:45* @Description: TODO* @Version: 1.0*/
@Configuration
public class Knife4jConfig {@Bean(value = "defaultApi2")public Docket customDocket() {return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo()).select().apis(RequestHandlerSelectors.basePackage("com.geekmice.sbpagehelper.controller")).build();}/*** 构建 api文档的详细信息函数* @return*/private ApiInfo apiInfo() {return new ApiInfoBuilder().title("现货交易").version("1.0.0").description("现货交易详情").contact(new Contact("geekmice","http://geekmice.cn","2437690868@qq.com")).build();}
}

请求体

package com.geekmice.sbpagehelper.dto;import com.github.pagehelper.PageInfo;
import lombok.Data;/*** @BelongsProject: spring-boot-scaffold* @BelongsPackage: com.geekmice.sbpagehelper.dto* @Author: pingmingbo* @CreateTime: 2023-08-05  16:00* @Description: TODO* @Version: 1.0*/
@Data
public class QueryDTO extends PageInfo {private String teacherName;
}

2 可能出现的疑问或者问题

2.1 关于total属性疑问

2.2 分页不生效问题

  1. 当我们调用pagehelper.startPage()方法后下一条语句必须是你要调用的查询语句;
  2. 我们的PageInfo传入的结果集,必须是我们调用查询语句返回的结果集;

提前说明:入参是 pageNum:1 pageSize:2 userName:张 模糊查询
正常情况,没有分页是有以张开头有三条数据,有分页的情况下 张1,张2

第一种问题复现如下:
List userDomainList = userDao.selectList(userDomainQueryWrapper); // 位置1
PageHelper.startPage(pageNum, pageSize); // 位置2

        int pageNum = userVO.getPageNum();int pageSize = userVO.getPageSize();String userName = userVO.getUserName();QueryWrapper<UserDomain> userDomainQueryWrapper = new QueryWrapper<>();userDomainQueryWrapper.likeRight("user_name", userName);List<UserDomain> userDomainList = userDao.selectList(userDomainQueryWrapper); // 位置1PageInfo<UserDomain> userDomainPageInfo = new PageInfo<>(userDomainList);PageHelper.startPage(pageNum, pageSize); // 位置2return userDomainPageInfo;

返回结果有疑问:返回的是没有分页,只要是张开头的数据都返回了。

{"msg": "操作成功","code": 200,"data": {"total": 3,"list": [{"id": 1,"userName": "张1","birthday": "2023-08-09T16:00:00.000+00:00","sex": "男","address": "123@163.com"},{"id": 3,"userName": "张2","birthday": "2023-08-09T16:00:00.000+00:00","sex": "女","address": "999@163.com"},{"id": 4,"userName": "张3","birthday": "2023-08-09T16:00:00.000+00:00","sex": "男","address": "9994@qq.com"}],"pageNum": 1,"pageSize": 4,"size": 3,"startRow": 1,"endRow": 3,"pages": 1,"prePage": 0,"nextPage": 0,"isFirstPage": true,"isLastPage": true,"hasPreviousPage": false,"hasNextPage": false,"navigatePages": 8,"navigatepageNums": [1],"navigateFirstPage": 1,"navigateLastPage": 1}
}

3 案例说明

3.1 配置信息

添加依赖

        <dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper-spring-boot-starter</artifactId><version>1.4.0</version></dependency>

yml配置信息

pagehelper:reasonable: truesupport-methods-arguments: trueparams: countSqlhelperDialect: mysql

3.2 请求体

PageInfo这个api是Pagehelper原生的对象,涵盖基本分页信息
在这里插入图片描述
在这里插入图片描述

package com.geekmice.sbpagehelper.dto;import com.github.pagehelper.PageInfo;
import lombok.Data;/*** @BelongsProject: spring-boot-scaffold* @BelongsPackage: com.geekmice.sbpagehelper.dto* @Author: pingmingbo* @CreateTime: 2023-08-05  16:00* @Description: TODO* @Version: 1.0*/
@Data
public class QueryDTO extends PageInfo {private String teacherName;
}

3.3 控制层

/*** (Teacher)表控制层** @author pingmingbo* @since 2023-08-05 15:19:26*/
@RestController
@RequestMapping("teacher")
@Api(tags = "0.分页查询模块")
public class TeacherController {/*** 服务对象*/@Resourceprivate TeacherService teacherService;/*** @param queryDTO 请求体* @return 响应信息* @description 多参数分页查询*/@GetMapping(value = "queryPageByDTO")@ApiOperation(value = "多参数分页查询")public AjaxResult queryPageByDTO(QueryDTO queryDTO) {PageInfo<Teacher> result = teacherService.queryPage(queryDTO);return AjaxResult.success(result);}
}

3.5 业务层

package com.geekmice.sbpagehelper.service;import com.baomidou.mybatisplus.extension.service.IService;
import com.geekmice.sbpagehelper.domain.Teacher;
import com.geekmice.sbpagehelper.dto.QueryDTO;
import com.github.pagehelper.PageInfo;import java.util.List;/*** (Teacher)表服务接口** @author pingmingbo* @since 2023-08-05 15:19:26*/
public interface TeacherService extends IService<Teacher> {/*** @param queryDTO 请求体* @return 响应信息* @description 多参数分页查询*/PageInfo<Teacher> queryPage(QueryDTO queryDTO);
}

4.6 业务层实现类

package com.geekmice.sbpagehelper.service.impl;import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.geekmice.sbpagehelper.dao.TeacherDao;
import com.geekmice.sbpagehelper.domain.Teacher;
import com.geekmice.sbpagehelper.dto.QueryDTO;
import com.geekmice.sbpagehelper.service.TeacherService;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;import javax.annotation.Resource;
import java.util.List;
import java.util.stream.Collectors;/*** (Teacher)表服务实现类** @author pingmingbo* @since 2023-08-05 15:19:26*/
@Service("teacherService")
@Slf4j
public class TeacherServiceImpl extends ServiceImpl<TeacherDao, Teacher> implements TeacherService {@Resourceprivate TeacherDao teacherDao;/*** @param queryDTO 请求体* @return 响应信息* @description 多参数分页查询*/@Overridepublic PageInfo<Teacher> queryPage(QueryDTO queryDTO) {int pageNum = queryDTO.getPageNum();int pageSize = queryDTO.getPageSize();QueryWrapper<Teacher> teacherQueryWrapper = new QueryWrapper<>();teacherQueryWrapper.eq("teacher_name", queryDTO.getTeacherName());PageHelper.startPage(pageNum,pageSize);List<Teacher> teacherList = teacherDao.selectList(teacherQueryWrapper);PageInfo<Teacher> result = new PageInfo<>(teacherList );return result;}
}

再次说明 PageHelper.startPage(pageNum,pageSize);使用顺序

4 关键问题:查询和录入操作使用一个dto出现强制分页情况【待定,问题未能复现,请稍等】

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

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

相关文章

解决Centos/Linux操作系统安装 uWSGI项目报错

解决linux 操作系统编译uWSGI源码报错 最近在学习在Linux操作系统中使用uWSGI项目部署django项目,在使用源码安装uWSGI项目的时候报错。 报错如下&#xff1a; In file included from plugins/python/python_plugin.c:1:0: plugins/python/uwsgi_python.h:4:20: 致命错误&…

7款轻量级平面图设计软件推荐

平面图设计的痕迹体现在日常生活的方方面面&#xff0c;如路边传单、杂志、产品包装袋或手机开屏海报等&#xff0c;平面设计软件层出不穷。Photoshop是大多数平面图设计初学者的入门软件&#xff0c;但随着设计师需求的不断提高&#xff0c;平面图设计软件Photoshop逐渐显示出…

2023 java web面试秘籍

目录 第一章&#xff1a;Java Web基础知识1.介绍3.Java Web基本概念 4.常见面试问题第二章&#xff1a;Java Web核心概念和技术1.介绍3.Servlet和JSP4.Web安全5.常见面试问题 第三章&#xff1a;Java Web高级概念和技术1.介绍3.Spring框架4.安全性5.常见面试问题 第四章&#x…

React Native连接Zebra斑马打印机通过发送CPCL指令打印(Android 和 iOS通用)

自 2015 年发布以来&#xff0c;React Native 已成为用于构建数千个移动应用程序的流行跨平台移动开发框架之一。通常&#xff0c;我们有开发人员询问如何将 Link-OS SDK 与 React Native 应用程序集成&#xff0c;以便在 Zebra 打印机上打印标签。在本教程中&#xff0c;我们将…

【刷题笔记8.10】LeetCode题目:有效括号

LeetCode题目&#xff1a;有效括号 1、题目描述&#xff1a; 给定一个只包括 ‘(’&#xff0c;‘)’&#xff0c;‘{’&#xff0c;‘}’&#xff0c;‘[’&#xff0c;‘]’ 的字符串 s &#xff0c;判断字符串是否有效。 有效字符串需满足&#xff1a; 左括号必须用相同…

CI/CD—Docker中深入学习

1 容器数据卷 什么是容器数据卷&#xff1a; 将应用和环境打包成一个镜像&#xff01;数据&#xff1f;如果数据都在容器中&#xff0c;那么我们容器删除&#xff0c;数据就会丢失&#xff01;需求&#xff1a;数据可以持久 化。MySQL容器删除了&#xff0c;删容器跑路&#…

使用gitee创建远程maven仓库

1. 创建一个项目作为远程仓库 2. 打包项目发布到远程仓库 id随意&#xff0c;url是打包到哪个文件夹里面 在需要打包的项目的pom中添加 <distributionManagement><repository><id>handsomehuang-maven</id><url>file:D:/workspace/java/2023/re…

【什么是应变波齿轮又名谐波驱动?机器人应用的完美齿轮组!?】

什么是应变波齿轮又名谐波驱动&#xff1f;机器人应用的完美齿轮组&#xff01;&#xff1f; 1. 什么是应变波齿轮&#xff1f;2. 工作原理3. 应变波齿轮 – 谐波驱动 3D 模型4. 3D 打印应变波齿轮 – 谐波驱动5. 总结 在本教程中&#xff0c;我们将学习什么是应变波齿轮&#…

2023软件测试岗必问的100个面试题【含答案】

一、测试理论 1.什么是软件测试&#xff1f; 答&#xff1a;软件测试是通过执行预定的步骤和使用指定的数据&#xff0c;以确定软件系统在特定条件下是否满足预期的行为。 2.测试驱动开发&#xff08;TDD&#xff09;是什么&#xff1f; 答&#xff1a;测试驱动开发是一种开…

C语言刷题------(2)

C语言刷题——————&#xff08;2&#xff09; 刷题网站&#xff1a;题库 - 蓝桥云课 (lanqiao.cn) First Question&#xff1a;时间显示 题目描述 小蓝要和朋友合作开发一个时间显示的网站。 在服务器上&#xff0c;朋友已经获取了当前的时间&#xff0c;用一个整数表…

虚拟机安装国产操作系统的方法

1.这里以银河麒麟为例&#xff0c;其他以liunx为基础的国产操作系统都是一样的方法。 2.下载操作系统如下&#xff08;选第一个就行&#xff09;&#xff1a; 任选其一下载&#xff1a; 3.安装虚拟机软件(这里以virtualbox为例&#xff0c;vmare也是一样都可以) 4.打开虚拟机…

(十)人工智能应用--深度学习原理与实战--模型的保存与加载使用

目的:将训练好的模型保存为文件,下次使用时直接加载即可,不必重复建模训练。 神经网络模型训练好之后,可以保存为文件以持久存储,这样下次使用时就不重新建模训练,直接加载就可以。TensorfLow提供了灵活的模型保存方案,既可以同时保存网络结构和权重(即保存全模型),也可…

LLM - Transformer LLaMA2 结构分析与 LoRA 详解

目录 一.引言 二.图说 LLM 1.Transformer 结构 ◆ Input、Output Embedding ◆ PositionEmbedding ◆ Multi-Head-Attention ◆ ADD & Norm ◆ Feed Forward ◆ Linear & Softmax 2.不同 LLM 结构 ◆ Encoder-Only ◆ Encoder-Decoder ◆ Decoder-Only …

写给 Android 应用工程师的 Binder 原理剖析

一. 前言 这篇文章我酝酿了很久&#xff0c;参考了很多学习文档&#xff0c;读了很多源码&#xff0c;却依旧不敢下笔。生怕自己理解上还有偏差&#xff0c;对大家造成误解&#xff0c;贻笑大方。又怕自己理解不够透彻&#xff0c;无法用清晰直白的文字准确的表达出 Binder 的…

机器学习——卷积神经网络基础

卷积神经网络&#xff08;Convolutional Neural Network&#xff1a;CNN&#xff09; 卷积神经网络是人工神经网络的一种&#xff0c;是一种前馈神经网络。最早提出时的灵感来源于人类的神经元。 通俗来讲&#xff0c;其主要的操作就是&#xff1a;接受输入层的输入信息&…

【论文阅读】Deep Instance Segmentation With Automotive Radar Detection Points

基于汽车雷达检测点的深度实例分割 一个区别&#xff1a; automotive radar 汽车雷达 &#xff1a; 分辨率低&#xff0c;点云稀疏&#xff0c;语义上模糊&#xff0c;不适合直接使用用于密集LiDAR点开发的方法 &#xff1b; 返回的物体图像不如LIDAR精确&#xff0c;可以…

Kuebernetes资源控制管理

第四阶段 时 间&#xff1a;2023年8月11日 参加人&#xff1a;全班人员 内 容&#xff1a; Kuebernetes资源控制管理 目录 Kubectl命令工具 一、kubectl 命令行的语法 二、kubectl命令列表 三、使用 Kubectl 工具容器资源 &#xff08;一&#xff09;创建Pod &…

第十六次CCF计算机软件能力认证

第一题&#xff1a;小中大 在数据分析中&#xff0c;最小值最大值以及中位数是常用的统计信息。 老师给了你 n 个整数组成的测量数据&#xff0c;保证有序&#xff08;可能为升序或降序)&#xff0c;可能存在重复的数据。 请统计出这组测量数据中的最大值、中位数以及最小值&am…

Mysql SUBSTRING_INDEX - 按分隔符截取字符串

作用&#xff1a; 按分隔符截取字符串 语法&#xff1a; SUBSTRING_INDEX(str, delimiter, count) 属性&#xff1a; 参数说明str必需的。一个字符串。delimiter必需的。分隔符定义&#xff0c;是大小写敏感&#xff0c;且是多字节安全的count必须的。大于0或者小于0的数值…

最强的表格组件—AG Grid使用以及License Key Crack

PS: 想要官方 License Key翻到最后面 Ag Grid简介 Ag-Grid 是一个高级数据网格&#xff0c;适用于JavaScript/TypeScript应用程序&#xff0c;可以使用React、Angular和Vue等流行框架进行集成。它是一种功能强大、灵活且具有高度可定制性的表格解决方案&#xff0c;提供了丰富…