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

数据结构课程设计(java实现)---九宫格游戏,也称幻方

【问题描述】
九宫格,一款数字游戏,起源于河图洛书,与洛书是中国古代流传下来的两幅神秘图案,历来被认为是河洛文化的滥觞,中华文明的源头,被誉为"宇宙魔方"。九宫格游戏对人们的思维锻炼有着极大的作用,从古时起人们便意识到九宫的教育意义。千百年来影响巨大,在文学、影视中都曾出现过。九宫格最早叫“洛书”,现在叫“幻方” 。
【基本要求】
游戏包括界面,基本的控件,有文本框、选择框、按钮等。
用户信息:用户登录需要的账号和密码,新用户注册用到的信息;对玩家信息的记录、保存、读取。
界面信息:图片,九宫格规格;
交互信息:控制游戏的移动;
【问题分析】
本游戏主要完成:整幅图的现实,切换整幅图片、随机打乱图片、开始游戏,结束游戏。
【功能分析】
        游戏界面设计:用户登录,进入游戏界面,有良好的功能可视化界面,有游戏规则介绍。例如有计时和分数的显示,游戏图片替换和打乱图片的按键,显示游戏界面的图像画面,游戏玩家开始游戏、悔一步,重新开始的按键。
        原始图像的选择:游戏开始时,从准备好的图片中,选择想要拼的图片,要有不同难度的图片(可从相似度考虑);可选择重新开始;随机打乱图像:选择难度(1,2,3),根据难度将图片分成 3*3, 5*5,6*6 的规格,设计算法,随机打乱生成肯定有成功结果的初始化状态九宫格,要求有动态的打乱图片的显示过程(若产生的初始化九宫格无法到达最终状态,应该有提示 3 秒后自动刷新,重新生成);
        计时器的设计:动态显示玩家本局的时间,可选择限时挑战;移动:用户可以拖动模块进行交换,直到拼出原图像。
1)通过 w, s, a, d(或者上,下,左,右)进行平移操作,动态的展示每一步移动的结果。如果操作违法,应不做该操作;
2)能够刷新界面;
3)游戏过程中,允许选择悔一步(不可后退多步,若用户悔步>1,给出提示且不执行多次后退操作)或者终止游戏(正常),继续下一步;系统能自动检查到用户拼合出原图。
结束游戏:可以提前结束游戏,若成功结束游戏,总分=时间分数+移动正确率(正确数/移动正确率)*100,将本场的游戏时间加入到游戏记录中,并按照排序显示之前游戏的时间和该用户信息。上传分数以及获取排名,可以选择删除之前的成功记录,但是不可以用户随意增加记录。

《数据结构课程设计》

报告一.课程设计目的

通过课程设计,了解并初步掌握设计、实现较大系统的完整过程,包括系统分析、编码设计、系统集成、以及调试分析,熟练掌握数据结构的选择、设计、实现以及操作方法,为进一步的应用开发打好基础。

二.问题描述

九宫格,一款数字游戏,起源于河图洛书,与洛书是中国古代流传下来的两幅神秘图案,历来被认为是河洛文化的滥觞,中华文明的源头,被誉为"宇宙魔方"。九宫格游戏对人们的思维锻炼有着极大的作用,从古时起人们便意识到九宫的教育意义。千百年来影响巨大,在文学、影视中都曾出现过。九宫格最早叫“洛书”,现在叫“幻方”

三.需求分析

(1)游戏包括界面,基本的控件,有文本框、选择框、按钮等。

(2)用户信息:用户登录需要的账号和密码,新用户注册用到的信息;对玩家信息的记录、保存、读取。

(3)界面信息:图片,九宫格规格

(4)交互信息:控制游戏的移动

(5)本游戏主要完成:整幅图的现实,切换整幅图片、随机打乱图片、开始游戏,结束游戏。

四.概要设计

4.1系统用到的抽象数据类型定义:

1.ADT LoginFrame{

   用途用户登录的一些按钮

   基本操作:

  1. public LoginFrame(String title);
  2. private void addComponent();
  3. private void addListener();
  4. public boolean test()

}

  1. ADT PreviewPanel{

  用途:图片预览区设计

    基本操作:

  1. public void paint(Graphics g)

}

  1. ADT GameFrame{

用途:游戏所有功能界面的实现

基本操作:

  1. public GameFrame(String user);
  2. public void gameOptions() ;
  3. private void addListener();
  4. public void top();
  5. public void limit()

}

  1. ADT EasyGame{

      用途:实现九宫格游戏的主要代码

基本操作:

  1. public EasyGame(String user_name,boolean limit);
  2. public void addComponentNorth();
  3. public void addComponentCenter();
  4. public void addActionListener();
  5. public void start();
  6. public GamePanel(String picture_path);
  7. public void splitImage(String picture_path);
  8. public void createGame();
  9. public void actionPerformed(ActionEvent e);
  10. public void swap(String direction);
  11. public TopPanel();
  12. public boolean isFinish()

}

  1. ADT GameTimer{

   用途:游戏计时

   基本操作:

  1. public GameTimer(boolean limit);
  2. public void run() ;
  3. public void stopRunning()

}

4.2系统中子程序及功能要求:

  1. public void top():用于显示排行榜窗口并从文件中读取排行榜数据进行显示。
  2. public void start():初始化游戏的一些参数,创建游戏界面,为游戏按钮添加事件监听器,并启动游戏计时器。

3.public void splitImage(String picture_path):对一张图片进行分割,并创建按钮来打乱图像的顺序,以初始化一个拼图游戏的初始状态。

4.public void createGame():是根据打乱后的图像按钮的顺序,将这些按钮放置在界面上,并创建一个空白的按钮作为拼图的空位。这样就完成了拼图游戏界面的初始化。5.public void actionPerformed(ActionEvent e):处理了拼图游戏中按钮被点击的事件,并根据按钮的移动情况来更新游戏状态,计算得分,显示提示信息,并将玩家的成绩记录写入文件。

6.public void swap(String direction):实现了按钮位置的交换,用于在拼图游戏中实现按钮的移动。

7public TopPanel()实现了一个菜单面板,包括"开始"按钮和用于显示步数、计时器和分数的标签。

8.public boolean isFinish():用于判断游戏是否结束。它通过检查游戏面板上的按钮的位置是否符合特定的条件来确定游戏是否结束。

8.public void run():实现了一个游戏计时器线程,用于在游戏中计时并根据需要终止计时器。

五.详细设计

5.1 创建拼图游戏的界面的伪码描述如下:

public void createGame(){

    this.setLayout(null);  //将布局设置为null,表示不使用任何布局管理器,而是手动设置组件的位置和大小。

for(int i = 0; i < rank*rank -1; i++) {

然后,通过一个循环,将打乱顺序后的图像按钮按照一定的规则放置在界面上。具体来说,它通过计算每个按钮的位置,使用`setLocation`方法将按钮放置在指定的位置,并通过`add`方法将按钮添加到界面上。

            }

    buttons[rank*rank-1] = new JButton();  //创建一个新的按钮`buttons[rank*rank-1]`

    buttons[rank*rank-1].setBackground(new Color(0xd9d9d9))    //并设置其背景颜色为灰色(`new Color(0xd9d9d9)`)

buttons[rank*rank-1].setSize(image_width,image_height);    //然后,设置该按钮的大小和位置                                        buttons[rank*rank-1].setLocation(20+image_width*(rank-1),20+image_height*(rank-1));this.add(buttons[rank*rank-1]);      //并将其添加到界面上。

}

5.2 交换两个按钮实现拼图的移动伪码描述如下:

     public void swap(方法接受一个字符串参数`direction`,用于指示按钮的移动方向) {        

//根据`direction`的取值,分别处理上、下、左、右四个方向的移动。

        // 在每个分支中,通过调用`setLocation`方法,改变`clicked_button`和`gray_button`的位置,从而实现按钮的移动。

        //具体来说,当`direction`为"up"时,表示向上移动,

        // 交换了`clicked_button`和`gray_button`的位置;

        // 当`direction`为"down"时,表示向下移动;

        // 当`direction`为"right"时,表示向右移动

        // 当`direction`为"left"时,表示向左移动。

        }

5.3实现拼图游戏的初始化过程的伪码描述如下:  

     public void splitImage(String picture_path) {

            try {

                /*首先通过`ImageIO.read`方法读取指定路径的图片,并将其存储在`BufferedImage`对象中。*/

                this.split_images = new Image[rank*rank];

                this.image_width = bufferedImage.getWidth()/rank;    //分割单元图像宽度

                this.image_height = bufferedImage.getHeight()/rank;   //分割单元图像高度

                  // 然后计算出每个分割后的图像单元的宽度和高度,并将这些分割后的图像通过两个for循环嵌套保存到一个一维数组`split_images`中。

                    }

                }

                /*接下来创建了`rank*rank`个按钮,并为每个按钮设置对应的图像。然后将这些按钮存储在一个集合`images_list`中,并通过`Collections.shuffle`方法来打乱这些按钮的顺序。*/

                }

                //将按钮写入集合,用集合的方式打乱分割后的图像

                }

                /*在打乱按钮顺序后,代码使用一个while循环来检查打乱后的顺序是否是可解的。它通过比较按钮的顺序来计算逆序数的个数,然后判断逆序数的奇偶性来确定图像是否可以被正确还原。如果逆序数为偶数,则拼图可以被正确还原;如果逆序数为奇数,则需要重新打乱按钮的顺序,直到找到一个可解的顺序。*/

} catch (IOException e) {

 最后,通过异常处理来捕获可能发生的`IOException`异常。

}

六.测试分析

1. 用户登录功能:

  1. 当我们从键盘输入已经记录的账号和密码时,可以弹出游戏开始界面,并且会在界面上显示登录成功,若输入没有经过注册的账号密码则会出现登录失败
  2. 当我们注册的时候可以自己输入账号和密码,密码要确认两次,注册成功的账号密码会保存在user_message.txt里面

2. 游戏功能:

(1)  当我们登录成功之后,可以看到简单模式(3X3),普通模式(5X5),困难模式(6X6),限时模式,历史记录,游戏规则,点击可以正常进入相应界面。

(2)  通过鼠标操作,动态的展示每一步移动的结果。

(3)  能够刷新界面;

(4)   结束游戏:可以提前结束游戏,若成功结束游戏,总分=时间分数+移动正确率(正确数/移动正确率)*100,将本场的游戏时间加入到游戏记录中,并按照排序显示之前游戏的时间和该用户信息。上传分数以及获取排名,不可以用户随意增加记录。

七.使用说明

1.运行程序,首先出现主界面。主界面为用户登录界面,需要用户输入账号和密码才能登录进入游戏,没有设立账号或者想设立多个账号可以点击注册。

2.游戏预选界面包括6个选项:”简单模式(3X3),普通模式(5X5),困难模式(6X6),限时模式,历史记录,游戏规则,可以自行选择哪个难度,

3.进入游戏界面,左边是拼图区,右边是预览区,通过鼠标移动灰色方块,使得拼图区的其他八个小块恢复成右边预览区的样子即为游戏胜利,上面有步数,时间,分数的信息。

4.  限时模式游戏规则一样,但是在固定时间之内没完成会显示游戏失败

5   历史记录只能查看前十次的游戏记录

八.测试数据

游戏登录成功界面截图:

简单模式(3X3)游戏成功界面截图:

限时模式失败的界面截图:

历史记录的界面截图:

九.源代码实现

具体源代码可以到我资源区下载,压缩包里包括《数据结构课程设计报告》,《课程设计报告PPT》,《程序说明文件》和源代码文件夹

相关文章:

数据结构课程设计(java实现)---九宫格游戏,也称幻方

【问题描述】 九宫格&#xff0c;一款数字游戏&#xff0c;起源于河图洛书&#xff0c;与洛书是中国古代流传下来的两幅神秘图案&#xff0c;历来被认为是河洛文化的滥觞&#xff0c;中华文明的源头&#xff0c;被誉为"宇宙魔方"。九宫格游戏对人们的思维锻炼有着极大…...

一文掌握Charles抓包工具的详细使用

Charles是一款强大的HTTP代理/HTTP监视器/反向代理工具,广泛用于开发和测试网络应用程序。在爬虫开发中,Charles可以帮助开发者拦截、查看和修改HTTP/HTTPS请求和响应,从而更好地理解网络通信过程,分析和调试爬虫程序。本文将详细介绍Charles的安装、配置、基本使用方法以及…...

Ollama下载安装+本地部署DeepSeek+UI可视化+搭建个人知识库——详解!(Windows版本)

目录 1️⃣下载和安装Ollama 1. &#x1f947;官网下载安装包 2. &#x1f948;安装Ollama 3.&#x1f949;配置Ollama环境变量 4、&#x1f389;验证Ollama 2️⃣本地部署DeepSeek 1. 选择模型并下载 2. 验证和使用DeepSeek 3️⃣使用可视化工具 1. Chrome插件-Page …...

Rk3568驱动开发_点亮led灯(手动挡)_5

1.MMU简介 完成虚拟空间到物理空间的映射 内存保护设立存储器的访问权限&#xff0c;设置虚拟存储空间的缓冲特性 stm32点灯可以直接操作寄存器&#xff0c;但是linux点灯不能直接访问寄存器&#xff0c;linux会使能mmu linux中操作的都是虚拟地址&#xff0c;要想访问物理地…...

【服务治理中间件】consul介绍和基本原理

目录 一、CAP定理 二、服务注册中心产品比较 三、Consul概述 3.1 什么是Consul 3.2 Consul架构 3.3 Consul的使用场景 3.4 Consul健康检查 四、部署consul集群 4.1 服务器部署规划 4.2 下载解压 4.3 启动consul 五、服务注册到consul 一、CAP定理 CAP定理&#xff…...

Docker下ARM64架构的源码编译Qt5.15.1,并移植到开发板上

Docker下ARM64架构的源码编译Qt5.15.1,并移植到开发板上 1、环境介绍 QT版本&#xff1a;5.15.1 待移植环境&#xff1a; jetson nano 系列开发板 aarch64架构&#xff08;arm64&#xff09; 编译环境&#xff1a; 虚拟机Ubuntu18.04&#xff08;x86_64&#xff09; 2、…...

对话Stack Overflow,OceanBase CTO 杨传辉谈分布式数据库的“前世今生”

近日&#xff0c; OceanBase CTO 杨传辉受邀出席全球知名开发者论坛 Stack Overflow 的最新一期播客节目&#xff0c;与 Stack Overflow 高级内容创作官 Ryan Donovan 展开对话。双方围绕分布式数据库的可靠性、一致性保障、HTAP 架构以及 AI 时代分布式数据库的发展趋势等热点…...

ds回答-开源llm应用开发平台

以下是几个著名的开源 LLM 应用开发平台&#xff0c;涵盖不同场景和技术特点&#xff1a; 1. Dify 特点&#xff1a;低代码 / 无代码开发、支持 RAG 检索、Agent 智能体、模型管理、LLMOps 全流程优化。核心功能&#xff1a;可视化工作流编排、数百种模型兼容&#xff08;如 GP…...

C++ Qt常见面试题(4):Qt事件过滤器

在 Qt 中,事件过滤器(Event Filter)提供了一种机制,可以拦截并处理对象的事件(如鼠标事件、键盘事件等),在事件到达目标对象之前对其进行预处理。事件过滤器通常用于以下场景: 捕获和处理特定的事件(如鼠标点击、按键等);对事件进行筛选或修改;实现全局的事件监听功…...

CF 109A.Lucky Sum of Digits(Java实现)

题目分析 给定一个值&#xff0c;判断这个值能否被4和7组成&#xff0c;如果能就输出最小的组合。不能就输出-1。 思路分析 由于是最小组合&#xff0c;即判断4能最多有多少个。但是如果一个值能完全被7整除&#xff0c;那就不需要4了&#xff0c;只用7组合的话位数会更短。(例…...

计算机毕业设计Python+DeepSeek-R1大模型游戏推荐系统 Steam游戏推荐系统 游戏可视化 游戏数据分析(源码+文档+PPT+讲解)

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 作者简介&#xff1a;Java领…...

生鲜行业智能化供应链解决方案技术白皮书

行业痛点与技术挑战 损耗控制难题 行业平均损耗率达18%-25%&#xff0c;需构建动态定价模型与智能分拣系统 冷链管理复杂度 全程温控数据采集点超过23个/车次&#xff0c;异常响应延迟需压缩至90秒内 供需预测偏差 传统模式预测准确率不足65%&#xff0c;亟需AI驱动需求预测体…...

《每天搞懂一道Hard》之数独终结者(LeetCode 37)

&#x1f4cc;《每天搞懂一道Hard》之数独终结者&#xff08;LeetCode 37&#xff09; &#x1f517;原题链接&#xff1a;https://leetcode.com/problems/sudoku-solver/ 今天我们来解剖一个经典回溯算法问题——数独求解器&#xff01;这道题在算法面试中出现频率高达35%&a…...

论文笔记-NeurIPS2017-DropoutNet

论文笔记-NeurIPS2017-DropoutNet: Addressing Cold Start in Recommender Systems DropoutNet&#xff1a;解决推荐系统中的冷启动问题摘要1.引言2.前言3.方法3.1模型架构3.2冷启动训练3.3推荐 4.实验4.1实验设置4.2在CiteULike上的实验结果4.2.1 Dropout率的影响4.2.2 实验结…...

【后端开发面试题】每日 3 题(四)

✍个人博客&#xff1a;Pandaconda-CSDN博客 &#x1f4e3;专栏地址&#xff1a;https://blog.csdn.net/newin2020/category_12903849.html &#x1f4da;专栏简介&#xff1a;在这个专栏中&#xff0c;我将会分享后端开发面试中常见的面试题给大家~ ❤️如果有收获的话&#x…...

使用AoT让.NetFramework4.7.2程序调用.Net8编写的库

1、创建.Net8的库&#xff0c;双击解决方案中的项目&#xff0c;修改如下&#xff0c;启用AoT&#xff1a; <Project Sdk"Microsoft.NET.Sdk"><PropertyGroup><OutputType>Library</OutputType><PublishAot>true</PublishAot>&…...

c++中的静态多态和动态多态简介

在 C 中&#xff0c;多态性&#xff08;Polymorphism&#xff09; 分为 静态多态&#xff08;Static Polymorphism&#xff09; 和 动态多态&#xff08;Dynamic Polymorphism&#xff09;&#xff0c;二者通过不同的机制实现代码的灵活性。以下是详细对比和核心要点&#xff1…...

FastExcel与Reactor响应式编程深度集成技术解析

一、技术融合背景与核心价值 在2025年企业级应用开发中&#xff0c;大规模异步Excel处理与响应式系统架构的结合已成为技术刚需。FastExcel与Reactor的整合方案&#xff0c;通过以下技术协同实现突破性性能&#xff1a; 内存效率革命&#xff1a;FastExcel的流式字节操作与Re…...

【MySQL篇】数据类型

目录 前言&#xff1a; 1&#xff0c;数据类型的分类 ​编辑 2 &#xff0c;数值类型 2.1 tinyint类型 2.2 bit类型 2.3 小数类型 2.3.1 float类型 2.3.2 decimal类型 3&#xff0c;字符串类型 3.1 char 3.2 varchar 3.3 char与varchar的比较 3.4日期和时间类型 3.5 …...

haclon固定相机位标定

什么是标定&#xff1f; 工业应用中相机拍到一个mark点的坐标为C1&#xff08;Cx,Cy&#xff09;&#xff0c;C1点对应的龙门架/机械手等执行端对应的坐标是多少&#xff1f; 标定就是解决这个问题&#xff0c;如相机拍到一个点坐标C1&#xff08;Cx,Cy&#xff09;&#xff0c…...

Token相关设计

文章目录 1. 双Token 机制概述1.1 访问令牌&#xff08;Access Token&#xff09;1.2 刷新令牌&#xff08;Refresh Token&#xff09; 2. 双Token 认证流程3. Spring Boot 具体实现3.1 生成 Token&#xff08;使用 JWT&#xff09;3.2 解析 Token3.3 登录接口&#xff08;返回…...

vue3:四嵌套路由的实现

一、前言 1、嵌套路由的含义 嵌套路由的核心思想是&#xff1a;在某个路由的组件内部&#xff0c;可以定义子路由&#xff0c;这些子路由会渲染在父路由组件的特定位置&#xff08;通常是 <router-view> 标签所在的位置&#xff09;。通过嵌套路由&#xff0c;你可以实…...

在 Element Plus 的 <el-select> 组件中,如果需要将 <el-option> 的默认值设置为 null。 用于枚举传值

文章目录 引言轻松实现 `<el-option>` 的默认值为 `null`I 实现方式监听清空事件 【推荐】使用 v-model 绑定 null添加一个值为 null 的选项处理 null 值的显示引言 背景:接口签名规则要求空串参与,空对象不参与签名计算 // 空字符串“” 参与签名组串,null不参与签…...

List(3)

前言 上一节我们讲解了list主要接口的模拟实现&#xff0c;本节也是list的最后一节&#xff0c;我们会对list的模拟实现进行收尾&#xff0c;并且讲解list中的迭代器失效的情况&#xff0c;那么废话不多说&#xff0c;我们正式进入今天的学习 list的迭代器失效 之前在讲解vec…...

算法-二叉树篇23-二叉搜索树中的插入操作

二叉搜索树中的插入操作 力扣题目链接 题目描述 给定二叉搜索树&#xff08;BST&#xff09;的根节点 root 和要插入树中的值 value &#xff0c;将值插入二叉搜索树。 返回插入后二叉搜索树的根节点。 输入数据 保证 &#xff0c;新值和原始二叉搜索树中的任意节点值都不同…...

React底层常见的设计模式

在React中&#xff0c;常见的设计模式为开发者提供了结构化和可重用的解决方案&#xff0c;有助于提高代码的可维护性和可扩展性。以下是对React中几种常见设计模式的详细解析&#xff0c;并附上示例代码和注释&#xff1a; 1. 容器组件与展示组件模式&#xff08;Container/P…...

【PHP脚本语言详解】为什么直接访问PHP文件会显示空白?从错误示例到正确执行!

前言 作为一名开发者&#xff0c;你是否曾经遇到过这样的问题&#xff1a;写了一个PHP脚本&#xff0c;放到服务器根目录后&#xff0c;直接通过file:///路径访问却显示空白页面&#xff1f;而换成http://localhost却能正常显示&#xff1f;这篇文章将带你深入理解PHP脚本语言…...

小程序性能优化-预加载

在微信小程序中&#xff0c;数据预加载是提升用户体验的重要优化手段。以下是处理数据预加载的完整方案&#xff1a; 一、预加载的适用场景 跳转页面前的数据准备 如从列表页进入详情页前&#xff0c;提前加载详情数据首屏加载后的空闲时间 在首页加载完成后&#xff0c;预加载…...

Docker 数据卷管理及优化

Docker 数据卷是一个可供容器使用的特殊目录&#xff0c;它绕过了容器的文件系统&#xff0c;直接将数据存储在宿主机上。通过数据卷&#xff0c;可以实现数据的持久化、共享以及独立于容器生命周期的管理。 1.1 为什么要用数据卷 Docker 分层文件系统的特点 性能差&#xff…...

MySQL实现文档全文搜索,分词匹配多段落重排展示,知识库搜索原理分享

一、背景 在文档搜索场景中&#xff0c;高效精准的搜索功能至关重要&#xff0c;能提升检索效率&#xff0c;为用户提供精准、快速的信息获取体验&#xff0c;提高工作效率。在文档管理系统里&#xff0c;全文搜索是非常重要的功能之一。随着文档数量增长&#xff0c;如何快速…...

C#内置委托(Action)(Func)

概述 在 C# 中&#xff0c;委托是一种类型&#xff0c;它表示对具有特定参数列表和返回类型的方法的引用。C# 提供了一些内置委托&#xff0c;使得开发者可以更方便地使用委托功能&#xff0c;无需手动定义委托类型。本文将详细介绍 Action 和 Func 这两个常用的内置委托。 A…...

OpenCV计算摄影学(3)CUDA 图像去噪函数fastNlMeansDenoising()

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 使用非局部均值去噪算法&#xff08;Non-local Means Denoising algorithm&#xff09;执行图像去噪&#xff0c;该算法来源于 http://www.ipol.…...

Kafka生产者相关

windows中kafka集群部署示例-CSDN博客 先启动集群或者单机也OK 引入依赖 <dependency><groupId>org.apache.kafka</groupId><artifactId>kafka-clients</artifactId><version>3.9.0</version></dependency>关于主题创建 理论…...

【容器化】低版本docker拉取ubuntn 22.04镜像启动容器执行apt update提示 NO_PUBKEY 871920D1991BC93C

前置信息 宿主机信息 [root@localhost ~]# cat /etc/os-release NAME="CentOS Linux" VERSION="7 (Core)" ID="centos" ID_LIKE="rhel fedora" VERSION_ID="7" PRETTY_NAME="CentOS Linux 7 (Core)" ANSI_COLOR…...

如何流畅访问github

1.传输数据原理 本地计算机通过本地网接入运营骨干网&#xff0c;经过DNS域名解析&#xff0c;将输入的字符解析为要连接的真实IP地址&#xff0c;服务器返还一个数据包(github)给计算机 2.原因 DNS域名污染-DNS解析出现问题&#xff0c;导致访问一个不存在的服务器 3.解决…...

vue3:三项目增加404页面

一、路由添加 1、官网地址 带参数的动态路由匹配 | Vue Routerhttps://router.vuejs.org/zh/guide/essentials/dynamic-matching.html 2、复制核心语句 { path: /:pathMatch(.*)*, name: NotFound, component: NotFound } 3、粘贴到路由index.js中 4、建立页面 在view文件夹…...

纯c#字体处理库(FontParser) -- 轻量、极速、跨平台、具有字体子集化功能

关于字体库与 FontParser 的开发历程   字体库是用于处理和渲染字体的软件工具&#xff0c;其功能通常涵盖字体文件的加载、解析、字形渲染和文本布局等核心模块。在众多字体库中&#xff0c;FreeType 是被广泛应用且极具影响力的开源项目&#xff0c;已成为事实上的行业标准…...

云和恩墨亮相PolarDB开发者大会,与阿里云深化数据库服务合作

2025年2月26日&#xff0c;备受瞩目的阿里云PolarDB开发者大会于北京嘉瑞文化中心盛大举行&#xff0c;众多行业精英齐聚一堂&#xff0c;共襄技术盛会。云和恩墨作为阿里云重要的生态合作伙伴受邀参会。云和恩墨联合创始人兼技术研究院总经理杨廷琨与阿里云智能数据库产品事业…...

【通俗讲解电子电路】——从零开始理解生活中的电路(二)

电路分析&#xff1a;看懂简单的“电路图” ——从“路线图”到“工具箱”&#xff0c;掌握电路的底层逻辑 1. 欧姆定律&#xff1a;电的“交通规则” 公式解析&#xff1a;V I R 电压&#xff08;V&#xff09;&#xff1a;推动电流的动力&#xff08;如电池电压&#xff…...

Spring DIIoC

一.IoC 1.简介 什么是IoC&#xff1f;IoC&#xff0c;全称 Inversion of Control&#xff0c;控制反转。IoC是Spring的核心思想&#xff0c;Spring是⼀个“控制反转”的容器。 如果我们需要一个对象&#xff0c;正常来说我们是通过new一个对象&#xff0c;这个时候我们依赖的…...

基于javaweb的SSM+Maven幼儿园管理系统设计和实现(源码+文档+部署讲解)

技术范围&#xff1a;SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容&#xff1a;免费功能设计、开题报告、任务书、中期检查PPT、系统功能实现、代码编写、论文编写和辅导、论…...

C++22——哈希

目录 1.unordered_map的文档介绍 2.unordered_set的文档介绍 3.底层结构 3.1哈希的概念 3.2哈希冲突 3.3哈希函数 3.4哈希冲突解决 3.4.1闭散列 3.4.2开散列 1.unordered_map的文档介绍 unordered_map在线文档说明 unordered_map是存储<key&#xff0c;value>键值…...

使用Spring Boot与达梦数据库(DM)进行多数据源配置及MyBatis Plus集成

使用Spring Boot与达梦数据库(DM)进行多数据源配置及MyBatis Plus集成 在现代企业级应用开发中&#xff0c;处理多个数据源是一个常见的需求。本文将详细介绍如何使用Spring Boot结合达梦数据库&#xff08;DM&#xff09;&#xff0c;并通过MyBatis Plus来简化数据库操作&…...

Servlet简介

Servlet是sun公司提供的一门用于开发动态web资源的技术。 Sun公司在其API中提供了一个servlet接口&#xff0c;用户若想用发一个动态web资源(即开发一个Java程序向浏览器输出数据)&#xff0c;需要完成以下2个步骤&#xff1a; 编写一个Java类&#xff0c;实现servlet接口。 …...

智能合约安全 | 合约无效化攻击

目录&#xff1a; 智能合约安全 合约无效化攻击 合约自毁函数 selfdestruct 攻击实现 漏洞防御 总结 智能合约安全 合约无效化攻击 合约无效化攻击类同于web安全中的逻辑漏洞中的一种 我们这里拿一个典型的例子来讲解 有这样一份智能合约, 每个人可以向其中发送1 eth 第七个…...

20250226-代码笔记05-class CVRP_Decoder

文章目录 前言一、class CVRP_Decoder(nn.Module):__init__(self, **model_params)函数功能函数代码 二、class CVRP_Decoder(nn.Module):set_kv(self, encoded_nodes)函数功能函数代码 三、class CVRP_Decoder(nn.Module):set_q1(self, encoded_q1)函数功能函数代码 四、class…...

【开源免费】基于SpringBoot+Vue.JS网络海鲜市场系统(JAVA毕业设计)

本文项目编号 T 222 &#xff0c;文末自助获取源码 \color{red}{T222&#xff0c;文末自助获取源码} T222&#xff0c;文末自助获取源码 目录 一、系统介绍二、数据库设计三、配套教程3.1 启动教程3.2 讲解视频3.3 二次开发教程 四、功能截图五、文案资料5.1 选题背景5.2 国内…...

【LeetCode: SQL专题 : SQL132 每个题目和每份试卷被作答的人数和次数 + 合并查询】

&#x1f680; 算法题 &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;…...

【软考-架构】1.2、指令系统-存储系统-cache

GitHub地址&#xff1a;https://github.com/tyronczt/system_architect ✨资料&文章更新✨ 指令系统 计算机指令执行过程&#xff1a;取指令一一分析指令一一执行指令三个步骤&#xff0c;首先将程序计数器PC中的指令地址取出&#xff0c;送入地址总线&#xff0c;CPU依据…...

Uniapp开发微信小程序插件的一些心得

一、uniapp 开发微信小程序框架搭建 1. 通过 vue-cli 创建 uni-ap // nodejs使用18以上的版本 nvm use 18.14.1 // 安装vue-cli npm install -g vue/cli4 // 选择默认模版 vue create -p dcloudio/uni-preset-vue plugindemo // 运行 uniapp2wxpack-cli npx uniapp2wxpack --…...