家居网购项目(手写分页)
文章目录
- 1.后台管理—分页显示
- 1.程序框架图
- 2.编写数据模型
- Page.java
- 3.编写dao层
- 1.修改FurnDao
- 增加方法
- 2.修改FurnDaoImpl
- 增加方法
- 3.单元测试
- FurnDaoTest
- 4.编写service层
- 1.修改FurnService
- 增加方法
- 2.修改FurnServiceImpl
- 增加方法
- 3.单元测试
- FurnServiceTest
- 5.编写DataUtils
- 增加方法
- 6.编写FurnServlet
- 增加方法
- 7.修改manage_menu.jsp
- 8.修改furn_manage.jsp
- 9.结果展示
- 1.点击家居管理
- 2.只展示当前页的三个数据
- 2.后台分页导航
- 1.需求分析
- 2.完成底部分页
- 1.修改furn_manage.jsp
- 2.结果展示
- 1.限制显示5页
- 2.末页只显示前面两页
- 3.首页只显示后面两页
- 3.完成修改家居后跳转原页面
- 1.修改furn_manage.jsp
- 2.修改furn_update.jsp
- 3.修改FurnServlet
- 更新updateFurn方法
- 4.结果展示
- 1.修改前是第4页
- 2.点击修改
- 3.回到第4页
- 4.完成删除家居后跳转原页面
- 1.修改furn_manage.jsp
- 2.修改FurnServlet
- 更新del方法
- 3.结果展示
- 1.删除前是第四页
- 2.删除后还是第四页
- 5.完成添加家居后跳转原页面
- 1.修改furn_manage.jsp
- 2.修改furn_add.jsp
- 3.修改FurnServlet
- 更新add方法
- 4.结果展示
- 1.添加家居前是第3页
- 2.添加家居后还是3页
- 3.首页分页
- 1.需求分析
- 2.分页显示家居
- 1.编写CustomerFurnServlet
- CustomerFurnServlet.java
- 2.修改index.jsp
- 3.index.html修改为index.jsp
- 1.修改头部
- 2.遍历显示家居
- 3.分页导航条设置
- 修改index.jsp
- 4.单元测试
- 图片重复问题
- 原因
- 5.结果展示
- 1.首页显示
- 2.分页导航条设置
1.后台管理—分页显示
1.程序框架图
2.编写数据模型
Page.java
package com.sxs.furns.entity;import java.util.List;/*** @author 孙显圣* @version 1.0*/
public class Page<T> {public static final Integer PAGE_SIZE = 3; //每页显示几条记录private Integer pageNo; //表示当前页private Integer pageSize = PAGE_SIZE; //表示每页显示几条记录private Integer pageTotalCount; //表示共有几页private Integer totalRow; //表示共有多少条记录private List<T> items; //表示当前页显示的数据private String url; //分页导航的字符串public Integer getPageNo() {return pageNo;}public void setPageNo(Integer pageNo) {this.pageNo = pageNo;}public Integer getPageSize() {return pageSize;}public void setPageSize(Integer pageSize) {this.pageSize = pageSize;}public Integer getPageTotalCount() {return pageTotalCount;}public void setPageTotalCount(Integer pageTotalCount) {this.pageTotalCount = pageTotalCount;}public Integer getTotalRow() {return totalRow;}public void setTotalRow(Integer totalRow) {this.totalRow = totalRow;}public List<T> getItems() {return items;}public void setItems(List<T> items) {this.items = items;}public String getUrl() {return url;}public void setUrl(String url) {this.url = url;}
}
3.编写dao层
1.修改FurnDao
增加方法
//获取记录总数public int getTotalRow();//获取当前页要显示的数据public List<Furn> getPageItems(int begin, int pageSize);
2.修改FurnDaoImpl
增加方法
/*** 获取总的记录条数** @return 返回总的记录条数*/@Overridepublic int getTotalRow() {String sql = "SELECT COUNT(*) FROM furn";//注意这里的类型转换return ((Number) queryScalar(sql)).intValue();}/*** 获取当页要显示的数据** @param begin 从第几条记录开始获取* @param pageSize 每页的大小* @return*/@Overridepublic List<Furn> getPageItems(int begin, int pageSize) {String sql ="select * from furn limit ?, ?";return queryMulti(sql, Furn.class, begin, pageSize);}
3.单元测试
FurnDaoTest
@Testpublic void getTotalRow() {System.out.println("记录总数为:" + furnDao.getTotalRow());}@Testpublic void getPageItems() {List<Furn> pageItems = furnDao.getPageItems(3, 3);if (pageItems != null) {for (Furn pageItem : pageItems) {System.out.println(pageItem);}}}
4.编写service层
1.修改FurnService
增加方法
//6.根据传入的begin和pageSize返回对应的page对象public Page<Furn> page(int pageNo, int pageSize);
2.修改FurnServiceImpl
增加方法
/*** 根据传入的页号和每页的大小,返回page** @param pageNo* @param pageSize* @return 返回page*/@Overridepublic Page<Furn> page(int pageNo, int pageSize) {Page<Furn> page = new Page<>();page.setPageNo(pageNo);page.setPageSize(pageSize);int totalRow = furnDao.getTotalRow();page.setTotalRow(totalRow);//计算总页数int pageTotalCount = totalRow / pageSize;if (totalRow % pageSize > 0) {pageTotalCount += 1;}page.setPageTotalCount(pageTotalCount);//计算当前页显示的记录int begin = pageSize * (pageNo - 1);List<Furn> pageItems = furnDao.getPageItems(begin, pageSize);page.setItems(pageItems);return page;}
3.单元测试
FurnServiceTest
5.编写DataUtils
增加方法
/*** 字符串转换为Integer** @param str 传入的字符串* @param def 默认值* @return*/public static Integer parseInt(String str, Integer def) {if (null == str || "".equals(str)) {return def;} else {return Integer.parseInt(str);}}
6.编写FurnServlet
增加方法
/*** 处理分页请求* @param req* @param resp*/public void page(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//获取pageNo和pageSizeInteger pageNo = DataUtils.parseInt(req.getParameter("pageNo"), 1);Integer pageSize = DataUtils.parseInt(req.getParameter("pageSize"), Page.PAGE_SIZE);//调用方法获取page对象Page<Furn> page = furnService.page(pageNo, pageSize);//将page放入request域请求转发到前端req.setAttribute("page", page);req.getRequestDispatcher("/views/manage/furn_manage.jsp").forward(req, resp);}
7.修改manage_menu.jsp
8.修改furn_manage.jsp
9.结果展示
1.点击家居管理
2.只展示当前页的三个数据
2.后台分页导航
1.需求分析
2.完成底部分页
1.修改furn_manage.jsp
<!-- Pagination Area Start 分页导航条 --><div class="pro-pagination-style text-center mb-md-30px mb-lm-30px mt-6" data-aos="fade-up"><ul><li><a href="manage/furnServlet?action=page&pageNo=1">首页</a></li><%--有上一页再显示--%><c:if test="${requestScope.page.pageNo-1 > 0}"><li><a href="manage/furnServlet?action=page&pageNo=${requestScope.page.pageNo-1}">上页</a></li></c:if><%--最多显示5页--%><c:forEach begin="${requestScope.page.pageNo - 2 > 0 ? requestScope.page.pageNo - 2 : 1}" end="${requestScope.page.pageNo+2}" var="pageNo"><%--页数在范围内才显示--%><c:if test="${pageNo >= 1 && pageNo <= requestScope.page.pageTotalCount}"><li><%-- 如果是当前页号则显示被选中--%><a class="<c:if test="${requestScope.page.pageNo == pageNo}">active</c:if>"href="manage/furnServlet?action=page&pageNo=${pageNo}#">${pageNo}</a></li></c:if></c:forEach><%--有下一页再显示--%><c:if test="${requestScope.page.pageNo+1 <= requestScope.page.pageTotalCount}"><li><a href="manage/furnServlet?action=page&pageNo=${requestScope.page.pageNo+1}">下页</a></li></c:if><li><a href="manage/furnServlet?action=page&pageNo=${requestScope.page.pageTotalCount}">末页</a></li><li><a>共${requestScope.page.pageTotalCount}页</a></li><li><a>共${requestScope.page.totalRow}记录</a></li></ul></div><!-- Pagination Area End -->
2.结果展示
1.限制显示5页
2.末页只显示前面两页
3.首页只显示后面两页
3.完成修改家居后跳转原页面
1.修改furn_manage.jsp
2.修改furn_update.jsp
3.修改FurnServlet
更新updateFurn方法
/*** 读取表单信息,进行修改** @param req* @param resp*/public void updateFurn(HttpServletRequest req, HttpServletResponse resp) throws IOException {//获取pageNoString pageNo = req.getParameter("pageNo");//使用工具类将表单信息封装到bean中Furn furn = DataUtils.copyParamToBean(req.getParameterMap(), new Furn());//执行更新操作if (furnService.updateFurn(furn)) {//更新成功则重定向到展示页面resp.sendRedirect(super.getServletContext().getContextPath() + "/manage/furnServlet?action=page&pageNo=" + pageNo);} else {System.out.println("更新失败");}}
4.结果展示
1.修改前是第4页
2.点击修改
3.回到第4页
4.完成删除家居后跳转原页面
1.修改furn_manage.jsp
2.修改FurnServlet
更新del方法
/*** 根据获取的id删除家居,获取家居信息并重定向到furn_manage.jsp** @param req* @param resp*/public void del(HttpServletRequest req, HttpServletResponse resp) throws IOException {//获取idString id = req.getParameter("id");//获取pageNoString pageNo = req.getParameter("pageNo");//根据id删除if (furnService.deleteFurnById(Integer.parseInt(id))) {resp.sendRedirect(super.getServletContext().getContextPath() + "/manage/furnServlet?action=page&pageNo=" + pageNo);} else {System.out.println("删除失败");}}
3.结果展示
1.删除前是第四页
2.删除后还是第四页
5.完成添加家居后跳转原页面
1.修改furn_manage.jsp
2.修改furn_add.jsp
3.修改FurnServlet
更新add方法
/*** 添加家居并重新获取家居信息,重定向到furn_manage.jsp** @param req* @param resp*/public void add(HttpServletRequest req, HttpServletResponse resp) throws IOException, ServletException, InvocationTargetException, IllegalAccessException {//使用工具类封装并处理异常Furn furn = DataUtils.copyParamToBean(req.getParameterMap(), new Furn());//获取pageNoString pageNo = req.getParameter("pageNo");//插入到数据库if (furnService.add(furn)) {//插入成功则重定向到家居显示的servletresp.sendRedirect(super.getServletContext().getContextPath() + "/manage/furnServlet?action=page&pageNo=" + pageNo);} else {System.out.println("插入失败");}}
4.结果展示
1.添加家居前是第3页
2.添加家居后还是3页
3.首页分页
1.需求分析
2.分页显示家居
1.编写CustomerFurnServlet
CustomerFurnServlet.java
package com.sxs.furns.web;import com.sxs.furns.entity.Furn;
import com.sxs.furns.entity.Page;
import com.sxs.furns.service.FurnService;
import com.sxs.furns.service.impl.FurnServiceImpl;
import com.sxs.furns.utils.DataUtils;import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;/*** @author 孙显圣* @version 1.0*/
@WebServlet(urlPatterns = "/customerFurnServlet")
public class CustomerFurnServlet extends BasicServlet{FurnService furnService = new FurnServiceImpl();/*** 根据pageNo和pageSize,将page对象请求转发到index.jsp*/public void page(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//获取pageNo和pageSizeInteger pageNo = DataUtils.parseInt(req.getParameter("pageNo"), 1);Integer pageSize = DataUtils.parseInt(req.getParameter("pageSize"), 8);//调用service层,获取page对象Page<Furn> page = furnService.page(pageNo, pageSize);//请求转发到index.jspreq.setAttribute("page", page);req.getRequestDispatcher("/views/customer/index.jsp").forward(req, resp);}
}
2.修改index.jsp
<%--Date: 2024/2/4Time: 18:42User: 孙显圣Version:1.0
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>$Title$</title>
</head>
<body>
<%-- 网站入口,请求转发到/customerFurnServlet--%><jsp:forward page="/customerFurnServlet?action=page"></jsp:forward>
</body>
</html>
3.index.html修改为index.jsp
1.修改头部
2.遍历显示家居
3.分页导航条设置
修改index.jsp
4.单元测试
图片重复问题
原因
- 查询的时候直接查的所有数据,select *
- 但是javabean中的字段和imgPath 和 表中的字段img_Path不符,所以无法封装进去,就使用了之前设置的默认值
- 在查找的时候设置一个别名即可
5.结果展示
1.首页显示
2.分页导航条设置
相关文章:
家居网购项目(手写分页)
文章目录 1.后台管理—分页显示1.程序框架图2.编写数据模型Page.java 3.编写dao层1.修改FurnDao增加方法 2.修改FurnDaoImpl增加方法 3.单元测试FurnDaoTest 4.编写service层1.修改FurnService增加方法 2.修改FurnServiceImpl增加方法3.单元测试FurnServiceTest 5.编写DataUtil…...
goland2024安装包(亲测可用)
目录 一、软件简介 二、软件下载 一、软件简介 Goland 是一款由 JetBrains 公司开发的集成开发环境(IDE),专门用于 Go 语言的开发。它提供了丰富的功能和工具,帮助开发者更高效地编写、调试和管理 Go 语言项目。 功能特点&#x…...
35、链表-LRU缓存
思路: 首先要了解LRU缓存的原理,首先定下容量,每次get请求和put请求都会把当前元素放最前/后面,如果超过容量那么头部/尾部元素就被移除,所以最近最少使用的元素会被优先移除,保证热点数据持续存在。 不管放…...
数据结构速成--栈
由于是速成专题,因此内容不会十分全面,只会涵盖考试重点,各学校课程要求不同 ,大家可以按照考纲复习,不全面的内容,可以看一下小编主页数据结构初阶的内容,找到对应专题详细学习一下。 目录 一…...
算法练习第15天|226.翻转二叉树
226.翻转二叉树 力扣链接https://leetcode.cn/problems/invert-binary-tree/description/ 题目描述: 给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点。 示例 1: 输入:root [4,2,7,1,3,6,9] 输出&am…...
C#面向对象——封装、封装案例示例
C#面向对象——封装 什么是封装? (1)封装是将数据和操作数据的方法(行为)封装在一起。 (2)程序中封装的体现:属性,方法,类,接口,命名空间&#…...
【InternLM 实战营第二期-笔记3】茴香豆:搭建你的 RAG 智能助理
书生浦语是上海人工智能实验室和商汤科技联合研发的一款大模型,很高兴能参与本次第二期训练营,我也将会通过笔记博客的方式记录学习的过程与遇到的问题,并为代码添加注释,希望可以帮助到你们。 记得点赞哟(๑ゝω╹๑) 茴香豆:搭建…...
Advanced RAG 03:运用 RAGAs 与 LlamaIndex 评估 RAG 应用
编者按:目前,检索增强生成(Retrieval Augmented Generation,RAG)技术已经广泛使用于各种大模型应用场景。然而,如何准确评估 RAG 系统的性能和效果,一直是业界和学界共同关注的重点问题。若无法…...
leetcode
找到字符串中所有字母异位词 给定两个字符串 s 和 p,找到 s 中所有 p 的 异位词 的子串,返回这些子串的起始索引。不考虑答案输出的顺序。 异位词 指由相同字母重排列形成的字符串(包括相同的字符串) 示例 1: 输入: s "…...
Unity DOTS《群体战斗弹幕游戏》核心技术分析之3D角色动画
最近DOTS发布了正式的版本, 我们来分享现在流行基于群体战斗的弹幕类游戏,实现的核心原理。今天给大家介绍大规模战斗群体3D角色的动画如何来实现。 DOTS 对角色动画支持的局限性 截止到Unity DOTS发布的版本1.0.16,目前还是无法很好的支持3D角色动画。在DOTS 的ba…...
react异步组件如何定义使用 标准使用方法
目录 默认导出和命名导出的格式 默认导出的组件 使用方式 命名导出的组件 使用方式 默认导出和命名导出的格式 默认导出: // person.js const person {name: Alice,age: 30 };export default person;命名导出: // math.js export const add (a, b) > a b; exp…...
React + Ts + Vite + Antd 项目搭建
1、创建项目 npm create vite 项目名称 选择 react 选择 typescript 关闭严格模式 建议关闭严格模式,因为不能自动检测副作用,有意双重调用。将严格模式注释即可。 2、配置sass npm install sass 更换所有后缀css为sass vite.config.ts中注册全局样式 /…...
js爬虫puppeteer库 解决网页动态渲染无法爬取
我们爬取这个网址上面的股票实时部分宇通客车(600066)_股票价格_行情_走势图—东方财富网 我们用正常的方法爬取会发现爬取不下来,是因为这个网页这里是实时渲染的,我们直接通过网址接口访问这里还没有渲染出来 于是我们可以通过下面的代码来进行爬取: …...
代码随想录:二叉树5
目录 102.二叉树的层序遍历 题目 代码(队列实现) 107.二叉树的层序遍历II 题目 代码 199.二叉树的右视图 题目 代码 637.二叉树的层平均值 题目 代码 102.二叉树的层序遍历 题目 给你二叉树的根节点 root ,返回其节点值的 层序遍…...
Tomcat 获取客户端真实IP X-Forwarded-For
Tomcat 获取客户端真实IP X-Forwarded-For 代码实现: 在Host标签下面添加代码: <Valve className"org.apache.catalina.valves.RemoteIpValve" remoteIpHeader"x-forwarded-for" remoteIpProxiesHeader"x-forwarded-by&q…...
记录PS学习查漏补缺
PS学习 PS学习理论快捷键抠图PS专属多软件通用快捷键 PS学习 理论 JPEG (不带透明通道) PNG (带透明通道) 快捷键 抠图 抠图方式 魔棒工具 反选选中区域 CtrlShiftI(反选) 钢笔抠图注意事项 按着Ctrl单击节点 会出现当前节…...
Kafka 架构深入探索
目录 一、Kafka 工作流程及文件存储机制 二、数据可靠性保证 三 、数据一致性问题 3.1follower 故障 3.2leader 故障 四、ack 应答机制 五、部署FilebeatKafkaELK 5.1环境准备 5.2部署ELK 5.2.1部署 Elasticsearch 软件 5.2.1.1修改elasticsearch主配置文件 5.2…...
k-means聚类算法的MATLAB实现及可视化
K-means算法是一种无监督学习算法,主要用于数据聚类。其工作原理基于迭代优化,将数据点划分为K个集群,使得每个数据点都属于最近的集群,并且每个集群的中心(质心)是所有属于该集群的数据点的平均值。以下是…...
Excel文件转Asc文件
单个转换 import os import pandas as pdfilename (10)result01-1.xlsx df pd.read_excel(filename) # 读取Excel文件# 将数据保存为ASC格式 asc_filename os.path.splitext(filename)[0] .asc # 获取文件名并替换扩展名 with open(asc_filename, w) as file:# 写入文件…...
【题目】【信息安全管理与评估】2022年国赛高职组“信息安全管理与评估”赛项样题7
【题目】【信息安全管理与评估】2022年国赛高职组“信息安全管理与评估”赛项样题7 信息安全管理与评估 网络系统管理 网络搭建与应用 云计算 软件测试 移动应用开发 任务书,赛题,解析等资料,知识点培训服务 添加博主wx:liuliu548…...
Webrtc 信令服务器实现
webrtc建联流程图 由上图可知,所谓的信令服务器其实就是将peer的offer/candidate/answer传给对端而已。这样的话实现方式就有很多种了,目前普遍的方式HTTP/HTTPS,WS/WSS。像webrtc-demo-peerconnection就是实现HTTP这种方式。本文使用WS&…...
【Blockchain】连接智能合约与现实世界的桥梁Chainlink
去中心化预言机试图实现依赖因果关系而不是个人关系的去信任和确定性结果。它以与区块链网络相同的方式实现这些结果,即在许多网络参与者之间分配信任。通过利用许多不同的数据源并实施不受单个实体控制的预言机系统,去中心化的预言机网络有可能为智能合…...
解决EasyPoi导入Excel获取不到第一列的问题
文章目录 1. 复现错误2. 分析错误2.1 导入的代码2.2 DictExcel实体类2.2 表头和标题3. 解决问题1. 复现错误 使用EasyPoi导入数据时,Excel表格如下图: 但在导入时,出现如下错误: name为英文名称,在第一列,Excel表格有值,但导入的代码中为null,就很奇怪? 2. 分析错误 …...
Vue 阶段练习:记事本
将 Vue快速入门 和 Vue 指令的学习成果应用到实际场景中(如该练习 记事本),我们能够解决实际问题并提升对 Vue 的技能掌握。 目录 功能展示 需求分析 我的代码 案例代码 知识点总结 功能展示 需求分析 列表渲染删除功能添加功能底部统计…...
JavaScript判断受访域名,调用不同的js文件
比如:我有三个域名: ① dengoo.net ② jfzm.cc ③ ceeha.com 如果当前访问的是 dengoo.net 域名及域名下页面,则调用 a.js 如果当前访问的是 jfzm.cc 域名及域名下页面,则调用 b.js 如果当前访问的是 ceeha.com 域名及域名下…...
下载软件时的Ubuntu x86_64-v2、skylake、aarch64版本分别代表什么?
Ubuntu-x86_64-v2、Ubuntu-x86_64-skylake和Ubuntu-aarch64都是Ubuntu的不同版本或变种,它们之间的主要区别在于所支持的硬件架构和针对特定硬件的优化。 Ubuntu-x86_64-v2: 这是基于x86_64(也称为AMD64或Intel 64)架构的Ubuntu版…...
数字化社交的引擎:解析Facebook的影响力
Facebook,作为全球最大的社交媒体平台,已经深深地融入了我们的日常生活和文化中。它不仅仅是一个简单的社交工具,更是一个复杂的数字生态系统,影响着我们的社交模式、文化认同以及信息获取方式。在这篇文章中,我们将深…...
淘宝API商品详情数据在数据分析行业中具有不可忽视的重要性
淘宝商品详情数据在数据分析行业中具有不可忽视的重要性。这些数据为商家、市场分析师以及数据科学家提供了丰富的信息,有助于他们更深入地理解市场动态、消费者行为以及商品竞争态势。以下是淘宝商品详情数据在数据分析行业中的重要性体现: 请求示例&a…...
【产品】ANET智能通信管理机 物联网网关 电力监控/能耗监测/能源管理系统
产品概述 本系列智能通信管理机是一款采用嵌入式硬件计算机平台,具有多个下行通信接口及一个或者多个上行网络接口,用于将一个目标区域内所有的智能监控/保护装置的通信数据整理汇总后,实时上传主站系统,完成遥信、遥测等能源数据…...
R语言数据分析案例
在R语言中进行数据分析通常涉及数据的导入、清洗、探索、建模和可视化等步骤。以下是一个简化的案例,展示了如何使用R语言进行数据分析: 1. 数据导入 首先,你需要将数据导入R环境中。这可以通过多种方式完成,例如使用read.csv()…...
vscode debug 配置:launch.json
打开新项目左边的“运行和调试” 点击蓝色字体“创建 launch.json 文件” 选择上方“python” 选择“Python 文件 调试当前正在运行的Python文件” 配置launch.json文件内容: {// 使用 IntelliSense 了解相关属性// 悬停以查看现有属性的描述。// 欲了解更多信息&a…...
idea工具使用Tomcat创建jsp 部署servlet到服务器
使用tomcat创建jsp 在tomcat官网中下载对应windows版本的tomcat文件 Apache Tomcat - Welcome! 解压到系统目录中,记得不要有中文路径 新建一个java项目 点击右上角 点击加号 找到Tomcat Service的 Local 点击右下角的Fix一下,然后ok关闭 再重新打开一…...
MyBatisPlus自定义SQL
✅作者简介:大家好,我是Leo,热爱Java后端开发者,一个想要与大家共同进步的男人😉😉🍎个人主页:Leo的博客💞当前专栏: 循序渐进学SpringBoot ✨特色专栏: MySQL学习 🥭本文内容:MyBatisPlus自定义SQL 📚个人知识库: Leo知识库,欢迎大家访问 目录 1.前言☕…...
使用formio和react实现在线表单设计
formiojs 是一个开源的在线表单设计工具,今天看看怎样在 react js 中使用 formiojs。 首先创建一个react工程 npx create-react-app my-react-formio-app安装依赖 cd my-react-formio-app npm install formio/react npm install formio/js另外,考虑样…...
MySQL 基础使用
文章目录 一、Navicat 工具链接 Mysql二、数据库的使用1.常用数据类型2. 建表 create3. 删表 drop4. insert 插入数据5. select 查询数据6. update 修改数据7. delete 删除记录truncate table 删除数据 三、字段约束字段1. 主键 自增delete和truncate自增长字段的影响 2. 非空…...
✌粤嵌—2024/4/3—合并K个升序链表✌
代码实现: /*** Definition for singly-linked list.* struct ListNode {* int val;* struct ListNode *next;* };*/ struct ListNode* merge(struct ListNode *l1, struct ListNode *l2) {if (l1 NULL) {return l2;}if (l2 NULL) {return l1;}struct Lis…...
企业微信主体的修改方法
企业微信变更主体有什么作用?当我们的企业因为各种原因需要注销或已经注销,或者运营变更等情况,企业微信无法继续使用原主体继续使用时,可以申请企业主体变更,变更为新的主体。企业微信变更主体的条件有哪些࿱…...
C++的封装(十):数据和代码分离
封装的好处当然是非常多的。就不一一例举了。但封装也制造了访问壁垒。如果你是初学者,当你面对一堆封装好的C类一筹莫展,不知道从哪里下手时… 可以试试这个方法,数据和代码分离。 就是说,class只写方法,数据都放到…...
第十五届蓝桥杯大赛软件赛省赛 C/C++ 大学 B 组(基础题)
试题 C: 好数 时间限制 : 1.0s 内存限制: 256.0MB 本题总分:10 分 【问题描述】 一个整数如果按从低位到高位的顺序,奇数位(个位、百位、万位 )上 的数字是奇数,偶数位(十位、千位、十万位 &…...
模板的进阶
目录 非类型模板参数 C11的静态数组容器-array 按需实例化 模板的特化 函数模板特化 类模板特化 全特化与偏特化 模板的分离编译 总结 非类型模板参数 基本概念:模板参数类型分为类类型模板参数和非类类型模板参数 类类型模板参数:跟在class…...
微服务中Dubbo通俗易懂讲解及代码实现
当你在微服务架构中需要不同服务之间进行远程通信时,Dubbo是一个优秀的选择。Dubbo是一个高性能的Java RPC框架,它提供了服务注册、发现、调用、负载均衡等功能,使得微服务之间的通信变得简单而高效。 让我们来看一下Dubbo的通俗易懂的解释和…...
Unity HDRP Release-Notes
🌈HDRP Release-Notes 收集的最近几年 Unity各个版本中 HDRP的更新内容 信息收集来自自动搜集工具👈 💡HDRP Release-Notes 2023 💡HDRP Release-Notes 2022 💡HDRP Release-Notes 2021...
Chrome将网页保存为PDF的实战教程
大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…...
zotero7+Chat GPT实现ai自动阅读论文
关于这一部分的内容我在哔哩哔哩上发布了视频教程 视频链接见: zotero7GPT AI快速阅读文献_哔哩哔哩_bilibili 相关下载的官方链接如下: 1、zotero7 测试版官方下载链接: https://www.zotero.org/support/beta_builds 2、 InfiniCLOUD 云…...
STM32外设配置以及一些小bug总结
USART RX的DMA配置 这里以UART串口1为例,首先点ADD添加RX和TX配置DMA,然后模式一般会选择是normal,这个模式是当DMA的计数器减到0的时候就不做任何动作了,还有一种循环模式,是计数器减到0之后,计数器自动重…...
【数据结构与算法】:10道链表经典OJ
目录 1. 移除链表元素2. 反转链表2.1反转指针法2.2 头插法 3. 合并两个有序链表4. 分隔链表5. 环形链表6. 链表的中间节点7. 链表中倒数第K个节点8. 相交链表9. 环形链表的约瑟夫问题10. 链表的回文结构 1. 移除链表元素 思路1:遍历原链表,将 val 所在的…...
Python SQL解析和转换库之sqlglot使用详解
概要 Python SQLGlot是一个基于Python的SQL解析和转换库,可以帮助开发者更加灵活地处理和操作SQL语句。本文将介绍SQLGlot库的安装、特性、基本功能、高级功能、实际应用场景等方面。 安装 安装SQLGlot库非常简单,可以使用pip命令进行安装: pip install sqlglot安装完成后…...
NULL—0—nullptr 三者关系
1.概述 NULL,0,nullptr值都是0,但是类型不同,但是由于C头文件中NULL定义宏混乱,可能是int 0,也可能是(void*)0; 所以在C11及以后的标准中引入新的空指针nullptr,nullptr就是(void*)0ÿ…...
Nginx 请求的 匹配规则 与 转发规则
博文目录 文章目录 URL 与 URI匹配规则案例说明 转发规则响应静态资源案例说明 转发动态代理案例说明案例说明 URL 与 URI 通常, 一个 URL 由以下部分组成 scheme://host:port/path?query#fragment scheme: 协议, 如 http, https, ftp 等host; 主机名或 IP 地址post: 端口…...
OWASP发布10大开源软件风险清单
3月20日,xz-utils 项目被爆植入后门震惊了整个开源社区,2021 年 Apache Log4j 漏洞事件依旧历历在目。倘若该后门未被及时发现,那么将很有可能成为影响最大的软件供应链漏洞之一。近几年爆发的一系列供应链漏洞和风险,使得“加强开…...