当前位置: 首页 > news >正文

淄博怎么做网站千图主站的功能介绍

淄博怎么做网站,千图主站的功能介绍,动漫设计与制作专科学校,最新网页游戏开服时间表一、前言 只要是干过后台系统的同学应该都做过分页查询吧#xff0c;前端发送带有页码#xff08;pageNum#xff09;和每页显示数量#xff08;pageSize#xff09;的请求#xff0c;后端根据这些参数来提取并返回相应的数据集。在SpringBoot框架中#xff0c;经常会使…一、前言 只要是干过后台系统的同学应该都做过分页查询吧前端发送带有页码pageNum和每页显示数量pageSize的请求后端根据这些参数来提取并返回相应的数据集。在SpringBoot框架中经常会使用MybatisPageHelper的方式实现这个功能。 但大家可能对分页合理化这个词有点儿陌生不过应该都遇到过因为它产生的问题。这些问题不会触发明显的错误所以大家一般都忽视了这个问题。那么啥是分页合理化我来举几个例子 它的定义分页合理化通常是指后端在处理分页请求时会自动校正不合理的分页参数以确保用户始终收到有效的数据响应。 1. 请求页码超出范围 假设数据库中有100条记录每页展示10条那么就应该只有10页数据。如果用户请求第11页不合理化处理可能会返回一个空的数据集告诉用户没有更多数据。开启分页合理化后系统可能会返回第10页的数据即最后一页的数据而不是一个空集。 2. 请求页码小于1 用户请求的页码如果是0或负数这在分页上下文中是没有意义的。开启分页合理化后系统会将这种请求的页码调整为1返回第一页的数据。 3. 请求的数据大小小于1 如果用户请求的数据大小为0或负数这也是无效的因为它意味着用户不希望获取任何数据。开启分页合理化后系统可能会设置一个默认的页面大小比如每页显示10条数据。 4. 请求的数据大小不合理 如果用户请求的数据大小非常大比如一次请求1000条数据这可能会给服务器带来不必要的压力。开启分页合理化后系统可能会限制页面大小的上限比如最多只允许每页显示100条数据。 二、为啥要设置分页合理化 其实上面那些问题对于后端来讲很合理页码和页大小设置不正确查询不出来值难道不合理吗唯一的问题就是如果一次性查询太多条数据服务器压力确实大但如果是产品要求的那也没办法呀真正让我不得不解决这个问题的原因是前端的一个BUG这个BUG是啥样的呢我来给大家描述一下。 1. BUG复现 我们先看看前端的分页组件 前端的这个分页组件大家应该很常见它需要两个参数总行数、每页行数。比如说现在总条数是6条每页展示5条那么会有2页没啥问题对吧。 那么现在我问一个问题我们切换到第二页把第二页仅剩的一条数据给删除掉会出现什么情况 理想情况页码自动切换到第1页并查询第一页的数据真实情况页码切换到了第1页但是查询不到数据这明显就是一个BUG 2. BUG分析 1. 用户切换到第二页前端发起了请求如http://localhost:8080/user/pageQuery?pageNum2pageSize5 此时第2页有一条数据 2. 用户删除第2页的唯一数据后前端发起查询请求但还是第2页的查询因为总数据的变化前端只能通过下一次的查询才能知道但此时数据查询为空 3. 虽然第二次查询的数据集为空但是总条数已经变化了只剩下5条前端分页组件根据计算得出只剩下一页所以自动切换到第1页 可以看出这个BUG是分页查询的一个临界状态产生的必现、中低频属于必须修复的那一类。不过这个BUG想甩给前端估计不行因为总条数的变化只有后端知道必须得后端修了。 三、设置分页合理化 咋一听这个BUG有点儿复杂但如果你使用的是PageHelper框架那么修复它非常简单只需要两行配置。在application.yml或application.properties中添加 pagehelper.helper-dialectmysql pagehelper.reasonabletrue 只要加了这两行配置这个BUG就能解决。因为配置是全局的如果你只想对单个查询场景生效那就在设置分页参数的时候加一个参数如下 PageHelper.startPage(pageNumber, pageSize, true); 四、分页合理化配置的原理说明 这个BUG如果要自己解决的话是不是感觉有点头痛了但是人家PageHelper早就想到这个问题了就像游戏开挂一样一个配置就解决了这个麻烦的问题。用的时候确实很爽但是我却有点担心这个配置现在解决了这个BUG会不会导致新的BUG呢如果真的出现了新BUG我应该怎么做呢所以我决定研究一下它的基础原理。 在com.github.pagehelper.Page类下找到了这段核心源码这段应该就是分页合理化的实现逻辑 // 省略其他代码 public PageE setReasonable(Boolean reasonable) {if (reasonable null) {return this;}this.reasonable reasonable;//分页合理化针对不合理的页码自动处理if (this.reasonable this.pageNum 0) {this.pageNum 1;calculateStartAndEndRow();}return this; } // 省略其他代码// 省略其他代码 /*** 计算起止行号 */ private void calculateStartAndEndRow() {this.startRow this.pageNum 0 ? (this.pageNum - 1) * this.pageSize : 0;this.endRow this.startRow this.pageSize * (this.pageNum 0 ? 1 : 0); } // 省略其他代码 还有一些代码我没贴比如PageInterceptor#intercept方法这里我整理了一下它的执行流程图如下 看了图解这套配置还挺清晰的懂了怎么回事儿用起来也就放心了。记得刚开始写代码时啥都希望有人给弄好了最好是拿来即用。但时间一长自己修过一堆BUG才发现只有自己弄明白的代码才靠谱什么都想亲手来。等真正搞懂了一些底层的东西才意识到要想造出好东西得先学会站在巨人的肩膀上。学习嘛没个头儿 文章转载自sum墨 原文链接https://www.cnblogs.com/wlovet/p/17926629.html 体验地址引迈 - JNPF快速开发平台_低代码开发平台_零代码开发平台_流程设计器_表单引擎_工作流引擎_软件架构
http://www.pierceye.com/news/78068/

相关文章:

  • 警告欺骗网站模板桂林人才网
  • 做的网站 为什么百度搜不到浙江公司网站建设推广
  • 网站建设html5作品企业网站建设解决方案 成都
  • 广西省河池建设局网站免费自适应网站模板
  • 长沙模板网站长沙网站建设wordpress更新一直下载失败
  • 万网x3主机l系统放两个网站学销售去哪个学校好
  • 网站频道规划上海网站优化案例
  • 临沧网站建设临沧网络品牌营销策划的概念
  • lol视频网站源码南京网站官网建设
  • 公司网站恶意评价免费域名注册 ddns
  • h5响应式网站是什么平面设计常用网站
  • 老榕树智能建站系统f1意大利站最新排名
  • 网站建设工具在北京找工作有哪些招聘网站
  • 大学个人网站期末作业富阳网站制作
  • 株洲市建设局网站心悦免做卡领取网站
  • 音乐播放网站开发pc端vs2013网站建设
  • 专门做软陶的网站wordpress显示最后更新时间
  • 做网站大约需要多少钱wordpress域名后缀
  • 建网站麻烦拍照备案审核多久找个做网站的 优帮云
  • 电气建设网站环保局网站建设
  • 1企业网站案例个人简历ppt模板免费下载可编辑
  • 网站域名去哪里备案wordpress音乐插件百度云
  • 快速收录网站中国制造网外贸平台
  • 烟台建设企业网站镇江网页设计工作室
  • 人和动物做的网站龙岩建设局网站罗小波
  • 网站分析报告投资公司成立条件
  • 阿里云网站建设流程教案宽屏网站欣赏
  • 合肥建设学校网站首页wordpress手机app编辑文章
  • 织梦安装网站后图片PHP 网站搜索怎么做
  • 辽宁城建设计院有限公司网站电子商务网站建设 市场分析