springboot实战(19)(条件分页查询、PageHelper、MYBATIS动态SQL、mapper映射配置文件、自定义类封装分页查询数据集)
引言:
- 该类博客的学习是基于b站黑马视频springboot+vue视频学习!
- 具体围绕项目——"大事件"进行实战学习。
目录
一、功能介绍(需求)。
1、文章列表功能基本介绍。
2、条件分页查询功能与注意。
3、前端页面效果。(后面实现)
二、接口文档。
(1)请求路径、请求方式、接口描述。
(2)请求参数。
(3)queryString请求参数格式。
(4)响应数据。
三、实现思路分析。
(1)自定义类。(封装分页查询的结果)
(2)controller层。
(3)Service层。
(4)Mapper层。
四、具体代码书写。
(1)PageBean类。
(2)ArticleController。
(3)ArticleService接口。
(4)ArticleServiceImpl实现类。
1、mybatis的"PageHelper"开启分页查询。
2、service层实现类具体代码。(重要)
(5)Mapper层。
1、使用mapper映射配置文件。书写动态SQL语句。
2、基本的框架搭建。
3、书写SQL语句。
4、mapper层接口。
5、mapper映射配置文件。
五、后端接口测试。(postman)
(1)数据库添加并存在4条文章数据。
(2)测试条件1。
(3)测试条件2。
(4)测试条件3。
(5)测试条件4。
一、功能介绍(需求)。
1、文章列表功能基本介绍。
- 文章列表查询功能:是用户点击左侧菜单栏的"文章管理"后。需要在当前页面的主区域展示当前用户所创建的文章信息。并且信息是以列表的形式展示。
2、条件分页查询功能与注意。
- 列表的上方有"输入框"。用户可以根据文章的分类或者文章的发布状态去查询文章。
- 列表的底部有"分页条"。展示了文章的总记录数,有"分页条"。用户可以选择每一页所展示的文章条数以及要查询的页码等等。
- 注意:当用户点击了"搜索"、"上一页、下一页"、"显示每页条数"等等都需要访问后台的接口,查询满足当前条件的数据,最终在列表中进行显示文字信息。
3、前端页面效果。(后面实现)
二、接口文档。
(1)请求路径、请求方式、接口描述。
- 路径:article。
- 请求方式:get请求。
(2)请求参数。
- 分页参数:"pageNum(当前页码)"、"pageSize(每页条数)"这两个参数是必须要传递的。
- 搜索条件:"categoryId(文章分类id)"、"state":非必须传递。因为搜索的条件用户可以使用,也可以不使用。
(3)queryString请求参数格式。
键值对:查询字符串由一系列键值对组成,每对键值之间用等号(=)连接。例如key=value。
- 参数分隔:不同的键值对之间用和号(&)分隔。例如:key1=value1&key2=value2。
- 可选性:查询字符串是可选的,不是所有的URL都需要包含查询字符串。
位置:查询字符串通常位于URL的路径部分之后,以问号(?)开始。
- 这里的请求参数示例如下:
- pageNum=1&pageSize=3&categoryId=2&state=草稿
(4)响应数据。
- 格式:JSON格式。
- data:对应的类型是object。其中里面有两个内容。
- "total"对应的是总条数。
- "items"对应的是当前页的数据集合。其中它是一个数组。数组里面有多个对象。且每一个对象都是一个文章详情。
三、实现思路分析。
(1)自定义类。(封装分页查询的结果)
- 通常。实现分页查询的时候,会提供一个自定义类用于封装查询后的结果。
- 里面至少包括两个属性:"tota(总条数)"、"items(List<?..所需数据类..?>)"。
- 到时候后台操作完,将查询后的数据封装到这个类的对象中,再返回回去即可。
(2)controller层。
- list()方法。
- 方法参数:"pageNum"、"pageSize"分别是当前页码与每页条数。
- 而"categoryId"与"state"是非必须传递参数。
- 使用注解@RequestParam(required="false")告诉MVC框架该参数不是必须的!否则前端没有这两个参数,就不允许访问该接口。
(3)Service层。
- 首先在Service层需要定义一个前面创建的类的对象用来封装查询回的数据。
- 这里再开启分页查询——借助于mybatis提供的"PageHelper"即可!
- 然后再调用mapper层方法完成查询。
(4)Mapper层。
- 因为这里的某些参数不一定会传值。
- 所以不能把SQL语句写死!使用MYBATIS的动态SQL才行。
- 所以要去创建mapper映射配置文件(.xml)会比较方便
四、具体代码书写。
(1)PageBean类。
- 封装查询后的数据的实体类。
package com.feisi.pojo;import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor;import java.util.List;//分页返回结果对象 @Data @NoArgsConstructor @AllArgsConstructor public class PageBean <T>{private Long total;//总条数private List<T> items;//当前页数据集合 }
(2)ArticleController。
/*** 获取文章列表(条件分页列表查询)* @param pageNum* @param pageSize* @param categoryId* @param state* @return*/@GetMappingpublic Result<PageBean<Article>> list(Integer pageNum,Integer pageSize,@RequestParam(required = false) Integer categoryId,@RequestParam(required = false) String state){//调用service层PageBean<Article> pageBean = articleService.list(pageNum, pageSize, categoryId, state);return Result.success(pageBean);}
(3)ArticleService接口。
/*** 条件分页列表查询* @param pageNum* @param pageSize* @param categoryId* @param state* @return*/PageBean<Article> list(Integer pageNum, Integer pageSize, Integer categoryId, String state);
(4)ArticleServiceImpl实现类。
1、mybatis的"PageHelper"开启分页查询。
- 导入对应的坐标。回到pom.xml文件。
- 记得刷新Maven。
<!--PageHelper--><dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper-spring-boot-starter</artifactId><version>1.4.6</version></dependency>
使用指定方法PageHelper.startPage(pageNum,pageSize)。
- pageNum:当前页码,从1开始。
- pageSize:每页显示的记录数。
- 调用这个方法后,PageHelper 会将分页参数保存到 ThreadLocal 中,之后执行的第一个 MyBatis 查询将会应用这些分页参数。所以需要在任何 MyBatis 查询方法调用之前调用 startPage()方法。
- PageHelper 会自动处理 SQL 的分页逻辑,不需要再手动编写分页的 SQL 语句。
2、service层实现类具体代码。(重要)
- 调用mapper层的list()方法进行查询时。
- 就不需要传递"pageNum"、"pageSize"两个参数。
- PageHelper的startPage(pageNum,pageSize)方法会自动在执行sql的语句后添加limit进行分页查询。
- 注意还需要传递参数:当前已登录用户的id。(因为用户只能操作自己的)
- userId从ThreadLocal当中获取!
- 再通过"三个参数"的值传回去。用一个List<?>集合接收查询的结果。
- 注意:因为Page对象中提供了方法。可以获取PageHelper分页查询后得到的总记录条数和当前页数据。
- 分页查询最终返回的就是一个Page对象。所以需要将List<?>集合强转成Page对象。Page对象是List的一个实现类。属于向下转型:(Page)List<?>?....
- 再通过把两个响应数据:"total"、"items"设置好,通过page对象.getTotal()、page对象.getResult()。再把对应响应给前端回去。
@Overridepublic PageBean<Article> list(Integer pageNum, Integer pageSize, Integer categoryId, String state) {//1.创建PageBean对象PageBean<Article> pageBean = new PageBean<>();//2.开启分页查询(PageHelper)//mybatis插件PageHelper.startPage(pageNum,pageSize);//3.调用mapper层方法Map<String, Object> map = ThreadLocalUtil.get();Integer userId = (Integer) map.get("id");//返回的是一个List集合。查询的结果。List<Article> items = articleMapper.list(userId,categoryId,state);//Page对象中提供了方法。可以获取PageHelper分页查询后得到的总记录条数和当前页数据Page<Article> p = (Page<Article>) items;//4.设置PageBean对象属性pageBean.setTotal(p.getTotal());pageBean.setItems(p.getResult()); //当前页数据的集合return pageBean; //返回PageBean对象。对象中封装了分页查询后的结果。(总记录数、当前页数据)}
(5)Mapper层。
1、使用mapper映射配置文件。书写动态SQL语句。
- 如果使用注解@Select(....)就会很麻烦。因为参数不一定,使用注解写动态sql很麻烦!
- 所以在resources目录下新建与mapper层相同层级的配置文件。
- 新建mapper映射配置文件。
- 注意每个包是"/"(斜杠)分隔。
2、基本的框架搭建。
- 提供映射配置文件。直接使用模板(可以网上查)
- 映射配置文件必须要和mapper层接口所在同一个目录下!
- 同时映射配置文件名必须与mapper层接口名一致!
- 注意属性:namespace的值必须是对应mapper层接口的全类名!
3、书写SQL语句。
- 注意因为参数条件不定!所以条件查询(参数):使用<where>标签。
- 当然如果没有条件,就不用去加<where>标签。
- 判断条件:<if>标签。
- <if>标签有一个属性"test"。
- 作用就是判断该参数是否为空!不为空就去根据当前参数条件去查询。
- 因为"categoryId(文章分类)"、"state(文章状态)"参数不一定会传过来!所以要非空校验。
- 注意:test里面的参数名要与mapper层接口方法list()对应的参数一致!
4、mapper层接口。
List<Article> list(Integer userId, Integer categoryId, String state);
5、mapper映射配置文件。
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.feisi.mapper.ArticleMapper"><!--动态sql--><!--id:方法名:list--><!--resultType:多条数据对应的实体类类型:Article类对象--><!--userId不要校验:因为没有登录就不能进行这些查询操作--><select id="list" resultType="com.feisi.pojo.Article">select * from article<where><if test="categoryId != null">category_id=#{categoryId}</if><if test="state != null">and state=#{state}</if>and create_user=#{userId}</where></select> </mapper>
五、后端接口测试。(postman)
(1)数据库添加并存在4条文章数据。
- 使用添加文章接口。
- 使用添加文章接口。
- 数据库表数据。
(2)测试条件1。
- 文章类型与状态不传值。
- pageSize=3:每页条数为3。pageNum=1:第一页。
(3)测试条件2。
- 文章类型与状态不传值。
- pageSize=3:每页条数为3。pageNum=2:第二页。
(4)测试条件3。
(5)测试条件4。
相关文章:
springboot实战(19)(条件分页查询、PageHelper、MYBATIS动态SQL、mapper映射配置文件、自定义类封装分页查询数据集)
引言: 该类博客的学习是基于b站黑马视频springbootvue视频学习!具体围绕项目——"大事件"进行实战学习。 目录 一、功能介绍(需求)。 1、文章列表功能基本介绍。 2、条件分页查询功能与注意。 3、前端页面效果。&#x…...
Mongo数据库 --- Mongo Pipeline
Mongo数据库 --- Mongo Pipeline 什么是Mongo PipelineMongo Pipeline常用的几个StageExplanation with example:MongoDB $matchMongoDB $projectMongoDB $groupMongoDB $unwindMongoDB $countMongoDB $addFields Some Query Examples在C#中使用Aggreagtion Pipeline**方法一: …...
Docker部署mysql:8.0.31+dbsyncer
Docker部署mysql8.0.31 创建本地mysql配置文件 mkdir -p /opt/mysql/log mkdir -p /opt/mysql/data mkdir -p /opt/mysql/conf cd /opt/mysql/conf touch my.config [mysql] #设置mysql客户端默认字符集 default-character-setUTF8MB4 [mysqld] #设置3306端口 port33…...
银河麒麟桌面系统——桌面鼠标变成x,窗口无关闭按钮的解决办法
银河麒麟桌面系统——桌面鼠标变成x,窗口无关闭按钮的解决办法 1、支持环境2、详细操作说明步骤1:用root账户登录电脑步骤2:导航到kylin-wm-chooser目录步骤3:编辑default.conf文件步骤4:重启电脑 3、结语 Ὁ…...
【微服务】 Eureka和Ribbon
一、Eureka 服务调用出现的问题:在远程调用另一个服务时,我们采用的解决办法是发送一次http请求,每次环境的变更会产生新的地址,所以采用硬编码会出现很多麻烦,并且为了应对并发问题,采用分布式部署&#…...
C++设计模式(工厂模式)
一、介绍 1.动机 在软件系统中,经常面临着创建对象的工作,这些对象有可能是一系列相互依赖的对象;由于需求的变化,需要创建的对象的具体类型经常变化,同时也可能会有更多系列的对象需要被创建。 如何应对这种变化&a…...
nodejs第三方库sharp对图片的操作生成新图片、压缩、添加文字水印及图片水印等
Sharp是一个基于libvips的高性能Node.js图像处理库,它提供了广泛的功能,包括调整大小、裁剪、旋转、格式转换等。Sharp可以处理多种图像格式,并且能够高效地转换图像格式。 相关说明及用法看:https://sharp.nodejs.cn/ 安装&#…...
uniapp-vue2引用了vue-inset-loader插件编译小程序报错
报错信息 Error: Vue packages version mismatch: - vue3.2.45 (D:\qjy-myApp\admin-app\node_modules\vue\index.js) - vue-template-compiler2.7.16 (D:\qjy-myApp\admin-app\node_modules\vue-template-compiler\package.json) This may cause things to work incorrectly.…...
计算机的错误计算(一百六十七)
摘要 将计算机的错误计算(一百六十六)中算式的分母有理化,然后再在 MATLAB 讨论其计算精度。本节说明,MATLAB 的输出与(一百六十六)的输出几乎一致,有效数字的错误率也相同。 例1. 探讨 …...
交叉编译openSSH
升级原系统中的SSHd服务 由于原系统自带的SSH版本过低存在漏洞风险,所以需要升级新版本的SSH 交叉编译前准备 需要下面三个库,都是开源的,去对应的网站下载即可 openssh-9.6p1.tar.gz openssl-1.1.1w.tar.gz zlib-1.3.1.tar.gz 这里没有…...
从零开始学GeoServer源码(二)添加支持arcgis切片功能
文章目录 参考文章环境背景1、配置打包好的程序1.1、下载GeoServer的war包1.2、下载GeoWebCache1.3、拷贝jar包1.4、修改配置文件1.4.1、拷贝geowebcache-arcgiscache-context.xml1.4.2、修改geowebcache-core-context.xml1.4.3、修改geowebcache-servlet.xml 1.5、配置切片信息…...
Android OTA 更新面试题及参考答案
什么是 OTA 更新? OTA 更新即空中下载技术(Over-the-Air Technology)更新,是一种通过无线网络对移动设备的系统软件或应用程序进行远程更新的技术手段 。 其原理是设备通过移动网络或 Wi-Fi 连接到服务器,服务器检测设…...
搜维尔科技:通过Touch力反馈主手实时通讯机械臂,进行远程操作
通过Touch力反馈主手实时通讯机械臂,进行远程操作 搜维尔科技:通过Touch力反馈主手实时通讯机械臂,进行远程操作...
Java ArrayList 与顺序表:在编程海洋中把握数据结构的关键之锚
我的个人主页 我的专栏:Java-数据结构,希望能帮助到大家!!!点赞❤ 收藏❤ 前言:在 Java编程的广袤世界里,数据结构犹如精巧的建筑蓝图,决定着程序在数据处理与存储时的效率、灵活性以…...
React中事件处理和合成事件:理解与使用
🤍 前端开发工程师、技术日更博主、已过CET6 🍨 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 🕠 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 🍚 蓝桥云课签约作者、上架课程《Vue.js 和 E…...
在Vue3项目中引入省市区联动插件
1. 打开HBuilder X 图1 2. 新建一个空项目 文件->新建->项目->uni-app 填写项目名称:vue3demo 选择项目存放目录:D:/HBuilderProjects 一定要注意vue的版本,当前选择的版本为vue3 图2 点击“创建”之后进入项目界面 图3 其中各文件…...
动态内存管理(c语言)
我们通常开辟空间的方式 int val 20; //大小为4个字节 char arr[10] {0} //开辟出一块连续的空间且大小为10 但是上面开辟空间方式的特点 1.空间开辟大小是固定的 2.数组在声明得时候,必须指定数组得长度,它所需要得内存在编译时分配 但是以上的方式不能…...
SLF4J日志快速上手
tags: SpringBoot 日志 快速上手 SLF4J日志快速上手 第一步:添加日志相关配置 logging:level:root: INFO # 设置全局日志级别为 INFO,只显示重要的日志信息(略过 DEBUG 和 TRACE 级别)# org.hibernate.SQL: DEBUG # 对于 Hiber…...
【PyTorch】(基础三)---- 图像读取和展示
图像读取和展示 pytorch本身并不提供图像的读取和展示功能,利用pytorch执行计算机视觉任务的时候,通常是利用opencv等工具先进行图像处理,然后将结果转化成tensor类型传递给pytorch,在pytorch执行之后,也可以将tensor…...
【纪念365天】我的创作纪念日
过去的一年 没有注意加入csdn已经有一年了。 这几天翻看小猴儿的通知才发现时间来到了一年的纪念日。稍稍思索想要将这一段时间的学习到的知识以及偶然遇到的机遇做一下总结。 上一次写纪念日是来到csdn128天的时候, 200天前我的学习状态是非常疯狂的。 只记得我当时…...
flink学习(7)——window
概述 窗口的长度(大小): 决定了要计算最近多长时间的数据 窗口的间隔: 决定了每隔多久计算一次 举例:每隔10min,计算最近24h的热搜词,24小时是长度,每隔10分钟是间隔。 窗口的分类 1、根据window前是否调用keyBy分为键控窗口和非键控窗口…...
第十六届蓝桥杯模拟赛第二期题解—Java
第十六届蓝桥杯模拟赛/校赛第二期个人题解,有错误的地方欢迎各位大佬指正 问题一(填空题) 【问题描述】 如果一个数 p 是个质数,同时又是整数 a 的约数,则 p 称为 a 的一个质因数。 请问, 2024 的最大的质因数是多少? …...
数据库-MySQL-Dynamic-Datasource源码解析
文章目录 前言一、简介二、整体流程三、核心解析四、总结 前言 多数据源的应用在日常项目中也是很常见的场景。 dynamic-datasource的功能,用起来的确很方便,只需要一个DS注解,加上一些简单的配置即可完成多数据源的切换。究竟是怎么做到的…...
uniapp+vue2+uview2.0导航栏组件二次封装
样式 代码 <template><view class"navBar"><u-navbar :title"title" :titleColor"titleColor" :bgColor"bgColor" :safeAreaInsetTop"safeAreaInsetTop":autoBack"true" leftClick"leftClic…...
【Git 工具】用 IntelliJ IDEA 玩转 Git 分支与版本管理
文章目录 一、使用 IDEA 配置和操作 Git1.1 查看 Idea 中的 Git 配置1.2 克隆 Github 项目到本地 二、版本管理2.1 提交并推送修改2.2 拉取远程仓库2.3 查看历史2.4 版本回退 三、分支管理3.1 新建分支3.2 切换分支3.2 合并分支3.4 Cherry-Pick 参考资料 一、使用 IDEA 配置和操…...
异或-java-leetcode
1486.数组异或操作 给你两个整数,n 和 start 。 数组 nums 定义为:nums[i] start 2*i(下标从 0 开始)且 n nums.length 。 请返回 nums 中所有元素按位异或(XOR)后得到的结果。 示例 1: 输入…...
Jmeter中的测试片段和非测试原件
1)测试片段 1--测试片段 功能特点 重用性:将常用的测试元素组合成一个测试片段,便于在多个线程组中重用。模块化:提高测试计划的模块化程度,使测试计划更易于管理和维护。灵活性:可以通过模块控制器灵活地…...
NeurIPS 2024 有效投稿达 15,671 篇,数据集版块内容丰富
NeurIPS,全称 Neural Information Processing Systems Conference,是神经信息处理系统的年度学术会议。该会议始于 1987 年,当时名为 NIPS。随着人工智能领域的快速发展,其影响力逐渐扩大,被越来越多的研究者和企业关注…...
力扣101. 对称二叉树
给你一个二叉树的根节点 root , 检查它是否轴对称。 提示: 树中节点数目在范围 [1, 1000] 内-100 < Node.val < 100 进阶:你可以运用递归和迭代两种方法解决这个问题吗? 代码: /*** Definition for a binary …...
Ubuntu 环境下的 C/C++ 编译与调试配置
详细教学文档:Ubuntu 环境下的 C/C 编译与调试配置 本文档将手把手引导你完成在 Ubuntu 环境中设置 VS Code 的 tasks.json 和 launch.json,实现以下目标: 统一管理输出文件:将所有编译生成的可执行文件统一存放到项目的 build …...
『VUE』36. Vue的应用概念(分析流程)
目录 创建应用挂载应用可执行文件公共资源总结 欢迎关注 『VUE』 专栏,持续更新中 欢迎关注 『VUE』 专栏,持续更新中 创建应用 首先引入createApp ,然后借助createApp 创造一个app对象 main.js import { createApp } from "vue"; import A…...
《基于FPGA的便携式PWM方波信号发生器》论文分析(三)——数码管稳定显示与系统调试
一、论文概述 基于FPGA的便携式PWM方波信号发生器是一篇由任青颖、庹忠曜、黄洵桢、李智禺和张贤宇 等人发表的一篇期刊论文。该论文主要研究了一种新型的信号发生器,旨在解决传统PWM信号发生器在移动设备信号调控中存在的精准度低和便携性差的问题 。其基于现场可编…...
mac上的建议xftp 工具
mac上的建议xftp 工具 最近使用mac比较频繁了,但是第一次重度使用mac里面有很多的工具都是新的,有的window版本的工具无法使用。 xftp 的平替 Cyberduck 从它的官网上下载是免费的,但是如果使用 Apple store 要花费198呢。这不就剩下一大笔…...
Hive | Hive 表如何查看所有分区
文章目录 概述使用 SHOW PARTITIONS 命令查看特定分区的信息获取详细的分区信息总结 概述 Apache Hive 是一个构建在 Hadoop 之上的数据仓库工具,它提供了 SQL 类似的查询语言(称为 HiveQL),使得用户能够更容易地进行大数据处理和…...
MySQL系列之数据类型(Numeric)
导览 前言一、数值类型综述二、数值类型详解1. NUMERIC1.1 UNSIGNED或SIGNED1.2 数据类型划分 2. Integer类型取值和存储要求3. Fixed-Point类型取值和存储要求4. Floating-Point类型取值和存储要求 结语精彩回放 前言 MySQL系列最近三篇均关注了和我们日常工作或学习密切相关…...
4.6 JMeter HTTP信息头管理器
欢迎大家订阅【软件测试】 专栏,开启你的软件测试学习之旅! 文章目录 前言1 HTTP信息头管理器的位置2 常见的HTTP请求头3 添加 HTTP 信息头管理器4 应用场景 前言 在 JMeter 中,HTTP信息头管理器(HTTP Header Manager)…...
fpga 综合与优化设计
目录 Quartus Prime优化设置 1. 分析与综合设置 2. 物理综合优化 3. 适配设置 描述方法对综合的影响 1. 操作符的应用差异 2. 条件语句和分支语句的应用差异 3. 描述方式对综合电路的影响 优化设计方法 1. FPGA设计的基本原则 2. 常用优化设计方法 优化主要包括 4 个…...
计算机毕业设计Hadoop+Spark音乐推荐系统 音乐预测系统 音乐可视化大屏 音乐爬虫 HDFS hive数据仓库 机器学习 深度学习 大数据毕业设计
温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 作者简介:Java领…...
C嘎嘎探索篇:栈与队列的交响:C++中的结构艺术
C嘎嘎探索篇:栈与队列的交响:C中的结构艺术 前言: 小编在之前刚完成了C中栈和队列(stack和queue)的讲解,忘记的小伙伴可以去我上一篇文章看一眼的,今天小编将会带领大家吹奏栈和队列的交响&am…...
摄像头原始数据读取——opencv(cv::VideoCapture)
摄像头原始数据读取——opencv(cv::VideoCapture) 测试代码test.cpp #include <iostream> #include <string>#include <opencv2/opencv.hpp>std::string pixeformatcodec2string(int codec) {char pixeformat_name[5] { (char)((codec >> 0) & …...
unreal engine5中多个摄像机切换
UE5系列文章目录 文章目录 UE5系列文章目录前言一、思路二、具体实现 前言 unreal engine5中使用蓝图实现多个相机切换 一、思路 在Unreal Engine 5中,如果你想要在控件蓝图(Widget Blueprint)中获取场景摄像机的信息,可以按照…...
ensp静态路由实验
一、实验目的 1、熟练掌握交换机的基本配置命令 2、熟练掌握静态路由的使用方法 3. 熟练掌握交换机端口模式 二、实验内容 需求: 根据要求利用现有实验设备组建小型局域网 实验设备: 交换机S37002台;PC机2台;路由器2台。 …...
【在Linux世界中追寻伟大的One Piece】多线程(二)
目录 1 -> 分离线程 2 -> Linux线程互斥 2.1 -> 进程线程间的互斥相关背景概念 2.2 -> 互斥量mutex 2.3 -> 互斥量的接口 2.4 -> 互斥量实现原理探究 3 -> 可重入VS线程安全 3.1 -> 概念 3.2 -> 常见的线程不安全的情况 3.3 -> 常见的…...
Git中HEAD、工作树和索引的区别
在Git版本控制系统中,HEAD、工作树(Working Tree)和索引(Index)是三个非常重要的概念,它们分别代表了不同的状态或区域,下面我将对这三个概念进行详细的解释。 HEAD 定义:HEAD是一…...
洛谷 P1156 垃圾陷阱(搜索 DFS)
题目传送门https://www.luogu.com.cn/problem/P1156 解题思路 本题数据过水,可以使用 dfs。 对于每个垃圾,吃掉或者堆着。 然后考虑剪枝: 如果已经等不到下一个垃圾的到来,直接 return; 如果当前状态已经搜过&am…...
nodepad配置c/c++ cmd快速打开创建项目文件
前提:下载MinGw,并且配置环境变量 点击阅读次篇文章配置MinGw 无论是哪个编译器,执行c文件都是经历以下步骤: 编译文件生成exe文件执行该exe文件 我们先手动完成这两部 手动编译文件使用指令 gcc {你的c文件} -o {生成文件名}生成exe文件 第二步运行exe直接点击该文…...
Excel与PPT:职场两大软件的应用比拼
在职场环境中,Excel和PPT无疑是两款最为常用的办公软件。它们各自承担着不同的职责,为职场人士提供了强大的数据处理和演示功能。然而,哪款软件应用得更多,却并非一概而论,而是取决于个人的工作性质、岗位需求以及个人…...
春秋云境 CVE 复现
CVE-2022-4230 靶标介绍 WP Statistics WordPress 插件13.2.9之前的版本不会转义参数,这可能允许经过身份验证的用户执行 SQL 注入攻击。默认情况下,具有管理选项功能 (admin) 的用户可以使用受影响的功能,但是该插件有一个设置允许低权限用…...
文件系统的作用
在一个完整的嵌入式系统中,进行一个简单的操作(如读取传感器数据并保存到文件)通常会涉及多个步骤。这些步骤包括硬件初始化、数据采集、处理、存储以及与外部系统交互。以下是一个通用的操作流程及文件系统在其中的作用。 嵌入式系统的操作流…...
mysql低版本中update_time不自动更新问题
在mysql低版本时,update_time只有插入时才会自动插入当前时间,更新不会改变。 MySQL 5.7 及以上版本对于TIMESTAMP类型字段有自动更新功能相关特性在 MySQL 5.7以上版本 中,如果将一个TIMESTAMP类型的列设置为ON UPDATE CURRENT_TIMESTAMP属…...