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

家居网购项目(手写分页)

文章目录

    • 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.程序框架图

image-20240206202839584

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);}}}

image-20240207100046487

image-20240207100112517

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

image-20240207103549032

image-20240207103532536

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

image-20240207111103569

8.修改furn_manage.jsp

image-20240207111156195

9.结果展示
1.点击家居管理

image-20240207111235946

2.只展示当前页的三个数据

image-20240207111313379

2.后台分页导航

1.需求分析

image-20240207134728570

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页

image-20240207152021069

2.末页只显示前面两页

image-20240207152054029

3.首页只显示后面两页

image-20240207152121839

3.完成修改家居后跳转原页面
1.修改furn_manage.jsp

image-20240207152253434

2.修改furn_update.jsp

image-20240207153728660

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页

image-20240207153922790

2.点击修改

image-20240207154006389

3.回到第4页

image-20240207154024060

4.完成删除家居后跳转原页面
1.修改furn_manage.jsp

image-20240207154333820

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.删除前是第四页

image-20240207155205032

2.删除后还是第四页

image-20240207155222549

5.完成添加家居后跳转原页面
1.修改furn_manage.jsp

image-20240207155501087

2.修改furn_add.jsp

image-20240207155716232

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页

image-20240207160247023

2.添加家居后还是3页

image-20240207160315181

image-20240207160322398

3.首页分页

1.需求分析

image-20240207160723026

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

image-20240207182359821

1.修改头部

image-20240207182126242

2.遍历显示家居

image-20240207182603758

3.分页导航条设置
修改index.jsp

image-20240207182725483

4.单元测试
图片重复问题

image-20240207181229256

原因
  1. 查询的时候直接查的所有数据,select *
  2. 但是javabean中的字段和imgPath 和 表中的字段img_Path不符,所以无法封装进去,就使用了之前设置的默认值
  3. 在查找的时候设置一个别名即可

image-20240207181255274

image-20240207181527877

5.结果展示
1.首页显示

image-20240207183354539

2.分页导航条设置

image-20240207183413734

相关文章:

家居网购项目(手写分页)

文章目录 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 公司开发的集成开发环境&#xff08;IDE&#xff09;&#xff0c;专门用于 Go 语言的开发。它提供了丰富的功能和工具&#xff0c;帮助开发者更高效地编写、调试和管理 Go 语言项目。 功能特点&#x…...

35、链表-LRU缓存

思路&#xff1a; 首先要了解LRU缓存的原理&#xff0c;首先定下容量&#xff0c;每次get请求和put请求都会把当前元素放最前/后面&#xff0c;如果超过容量那么头部/尾部元素就被移除&#xff0c;所以最近最少使用的元素会被优先移除&#xff0c;保证热点数据持续存在。 不管放…...

数据结构速成--栈

由于是速成专题&#xff0c;因此内容不会十分全面&#xff0c;只会涵盖考试重点&#xff0c;各学校课程要求不同 &#xff0c;大家可以按照考纲复习&#xff0c;不全面的内容&#xff0c;可以看一下小编主页数据结构初阶的内容&#xff0c;找到对应专题详细学习一下。 目录 一…...

算法练习第15天|226.翻转二叉树

226.翻转二叉树 力扣链接https://leetcode.cn/problems/invert-binary-tree/description/ 题目描述&#xff1a; 给你一棵二叉树的根节点 root &#xff0c;翻转这棵二叉树&#xff0c;并返回其根节点。 示例 1&#xff1a; 输入&#xff1a;root [4,2,7,1,3,6,9] 输出&am…...

C#面向对象——封装、封装案例示例

C#面向对象——封装 什么是封装? &#xff08;1&#xff09;封装是将数据和操作数据的方法&#xff08;行为&#xff09;封装在一起。 &#xff08;2&#xff09;程序中封装的体现&#xff1a;属性&#xff0c;方法&#xff0c;类&#xff0c;接口&#xff0c;命名空间&#…...

【InternLM 实战营第二期-笔记3】茴香豆:搭建你的 RAG 智能助理

书生浦语是上海人工智能实验室和商汤科技联合研发的一款大模型,很高兴能参与本次第二期训练营&#xff0c;我也将会通过笔记博客的方式记录学习的过程与遇到的问题&#xff0c;并为代码添加注释&#xff0c;希望可以帮助到你们。 记得点赞哟(๑ゝω╹๑) 茴香豆&#xff1a;搭建…...

Advanced RAG 03:运用 RAGAs 与 LlamaIndex 评估 RAG 应用

编者按&#xff1a;目前&#xff0c;检索增强生成&#xff08;Retrieval Augmented Generation&#xff0c;RAG&#xff09;技术已经广泛使用于各种大模型应用场景。然而&#xff0c;如何准确评估 RAG 系统的性能和效果&#xff0c;一直是业界和学界共同关注的重点问题。若无法…...

leetcode

找到字符串中所有字母异位词 给定两个字符串 s 和 p&#xff0c;找到 s 中所有 p 的 异位词 的子串&#xff0c;返回这些子串的起始索引。不考虑答案输出的顺序。 异位词 指由相同字母重排列形成的字符串&#xff08;包括相同的字符串&#xff09; 示例 1: 输入: s "…...

Unity DOTS《群体战斗弹幕游戏》核心技术分析之3D角色动画

最近DOTS发布了正式的版本, 我们来分享现在流行基于群体战斗的弹幕类游戏&#xff0c;实现的核心原理。今天给大家介绍大规模战斗群体3D角色的动画如何来实现。 DOTS 对角色动画支持的局限性 截止到Unity DOTS发布的版本1.0.16,目前还是无法很好的支持3D角色动画。在DOTS 的ba…...

react异步组件如何定义使用 标准使用方法

目录 默认导出和命名导出的格式 默认导出的组件 使用方式 命名导出的组件 使用方式 默认导出和命名导出的格式 默认导出: // person.js const person {name: Alice,age: 30 };export default person;命名导出&#xff1a; // math.js export const add (a, b) > a b; exp…...

React + Ts + Vite + Antd 项目搭建

1、创建项目 npm create vite 项目名称 选择 react 选择 typescript 关闭严格模式 建议关闭严格模式&#xff0c;因为不能自动检测副作用&#xff0c;有意双重调用。将严格模式注释即可。 2、配置sass npm install sass 更换所有后缀css为sass vite.config.ts中注册全局样式 /…...

js爬虫puppeteer库 解决网页动态渲染无法爬取

我们爬取这个网址上面的股票实时部分宇通客车(600066)_股票价格_行情_走势图—东方财富网 我们用正常的方法爬取会发现爬取不下来&#xff0c;是因为这个网页这里是实时渲染的&#xff0c;我们直接通过网址接口访问这里还没有渲染出来 于是我们可以通过下面的代码来进行爬取: …...

代码随想录:二叉树5

目录 102.二叉树的层序遍历 题目 代码&#xff08;队列实现&#xff09; 107.二叉树的层序遍历II 题目 代码 199.二叉树的右视图 题目 代码 637.二叉树的层平均值 题目 代码 102.二叉树的层序遍历 题目 给你二叉树的根节点 root &#xff0c;返回其节点值的 层序遍…...

Tomcat 获取客户端真实IP X-Forwarded-For

Tomcat 获取客户端真实IP X-Forwarded-For 代码实现&#xff1a; 在Host标签下面添加代码&#xff1a; <Valve className"org.apache.catalina.valves.RemoteIpValve" remoteIpHeader"x-forwarded-for" remoteIpProxiesHeader"x-forwarded-by&q…...

记录PS学习查漏补缺

PS学习 PS学习理论快捷键抠图PS专属多软件通用快捷键 PS学习 理论 JPEG &#xff08;不带透明通道&#xff09; PNG (带透明通道) 快捷键 抠图 抠图方式 魔棒工具 反选选中区域 CtrlShiftI&#xff08;反选&#xff09; 钢笔抠图注意事项 按着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算法是一种无监督学习算法&#xff0c;主要用于数据聚类。其工作原理基于迭代优化&#xff0c;将数据点划分为K个集群&#xff0c;使得每个数据点都属于最近的集群&#xff0c;并且每个集群的中心&#xff08;质心&#xff09;是所有属于该集群的数据点的平均值。以下是…...

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 信息安全管理与评估 网络系统管理 网络搭建与应用 云计算 软件测试 移动应用开发 任务书&#xff0c;赛题&#xff0c;解析等资料&#xff0c;知识点培训服务 添加博主wx&#xff1a;liuliu548…...

KubeSphere 容器平台高可用:环境搭建与可视化操作指南

Linux_k8s篇 欢迎来到Linux的世界&#xff0c;看笔记好好学多敲多打&#xff0c;每个人都是大神&#xff01; 题目&#xff1a;KubeSphere 容器平台高可用&#xff1a;环境搭建与可视化操作指南 版本号: 1.0,0 作者: 老王要学习 日期: 2025.06.05 适用环境: Ubuntu22 文档说…...

uniapp 对接腾讯云IM群组成员管理(增删改查)

UniApp 实战&#xff1a;腾讯云IM群组成员管理&#xff08;增删改查&#xff09; 一、前言 在社交类App开发中&#xff0c;群组成员管理是核心功能之一。本文将基于UniApp框架&#xff0c;结合腾讯云IM SDK&#xff0c;详细讲解如何实现群组成员的增删改查全流程。 权限校验…...

[2025CVPR]DeepVideo-R1:基于难度感知回归GRPO的视频强化微调框架详解

突破视频大语言模型推理瓶颈,在多个视频基准上实现SOTA性能 一、核心问题与创新亮点 1.1 GRPO在视频任务中的两大挑战 ​安全措施依赖问题​ GRPO使用min和clip函数限制策略更新幅度,导致: 梯度抑制:当新旧策略差异过大时梯度消失收敛困难:策略无法充分优化# 传统GRPO的梯…...

深入浅出Asp.Net Core MVC应用开发系列-AspNetCore中的日志记录

ASP.NET Core 是一个跨平台的开源框架&#xff0c;用于在 Windows、macOS 或 Linux 上生成基于云的新式 Web 应用。 ASP.NET Core 中的日志记录 .NET 通过 ILogger API 支持高性能结构化日志记录&#xff0c;以帮助监视应用程序行为和诊断问题。 可以通过配置不同的记录提供程…...

iOS 26 携众系统重磅更新,但“苹果智能”仍与国行无缘

美国西海岸的夏天&#xff0c;再次被苹果点燃。一年一度的全球开发者大会 WWDC25 如期而至&#xff0c;这不仅是开发者的盛宴&#xff0c;更是全球数亿苹果用户翘首以盼的科技春晚。今年&#xff0c;苹果依旧为我们带来了全家桶式的系统更新&#xff0c;包括 iOS 26、iPadOS 26…...

python打卡day49

知识点回顾&#xff1a; 通道注意力模块复习空间注意力模块CBAM的定义 作业&#xff1a;尝试对今天的模型检查参数数目&#xff0c;并用tensorboard查看训练过程 import torch import torch.nn as nn# 定义通道注意力 class ChannelAttention(nn.Module):def __init__(self,…...

Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以?

Golang 面试经典题&#xff1a;map 的 key 可以是什么类型&#xff1f;哪些不可以&#xff1f; 在 Golang 的面试中&#xff0c;map 类型的使用是一个常见的考点&#xff0c;其中对 key 类型的合法性 是一道常被提及的基础却很容易被忽视的问题。本文将带你深入理解 Golang 中…...

AtCoder 第409​场初级竞赛 A~E题解

A Conflict 【题目链接】 原题链接&#xff1a;A - Conflict 【考点】 枚举 【题目大意】 找到是否有两人都想要的物品。 【解析】 遍历两端字符串&#xff0c;只有在同时为 o 时输出 Yes 并结束程序&#xff0c;否则输出 No。 【难度】 GESP三级 【代码参考】 #i…...

Frozen-Flask :将 Flask 应用“冻结”为静态文件

Frozen-Flask 是一个用于将 Flask 应用“冻结”为静态文件的 Python 扩展。它的核心用途是&#xff1a;将一个 Flask Web 应用生成成纯静态 HTML 文件&#xff0c;从而可以部署到静态网站托管服务上&#xff0c;如 GitHub Pages、Netlify 或任何支持静态文件的网站服务器。 &am…...

Neo4j 集群管理:原理、技术与最佳实践深度解析

Neo4j 的集群技术是其企业级高可用性、可扩展性和容错能力的核心。通过深入分析官方文档,本文将系统阐述其集群管理的核心原理、关键技术、实用技巧和行业最佳实践。 Neo4j 的 Causal Clustering 架构提供了一个强大而灵活的基石,用于构建高可用、可扩展且一致的图数据库服务…...