游戏管理系统
目录
Java程序设计课程设计
游戏管理系统
1系统简介
1.1需求分析
1.2 编程环境与工具
2系统总体设计
2.1 系统的功能模块图。
2.2 各功能模块简介。
3主要业务流程
(1)用户及管理员登录流程图
(2)信息添加流程
(3)信息删除流程
4数据库的设计
4.1 概念数据库设计
(1)游戏实体E-R图。
4.2 逻辑数据库设计
5系统功能详细实现及效果图
(1) 首页
(2) 游戏管理
(3)游戏分类界面
(4)用户退出界面
(5)管理员登录成功界面
6功能典型代码
7总结
(1) 收获
(2) 不足及原因
8参考文献
1系统简介
本游戏管理维护系统旨在提供一个统一的平台,对多种游戏进行管理和维护。系统涵盖了游戏信息管理、用户管理、游戏数据统计等功能,方便游戏管理员对游戏进行有效的管理和监控。
1.系统架构:采用 B/S 架构,基于 JavaWeb 技术实现。
2.数据库设计:使用关系型数据库,如 MySQL 或 Oracle 等。
3.技术框架:Spring、Spring Boot、MyBatis 等。
1.2 编程环境与工具
根据本系统体系结构特点和使用本系统的用户特点,编程环境与工具的配置如表1-1所示:
表1-1 开发环境表
Tab. 1-1 Development environment table
类别 | 标准配置 |
开发语言 | Java |
开发工具 | IDEA |
开发环境 | JDK 8.0 |
服务器 | Tomcat 8.0 |
数据库 | MySql 5.6 |
数据库连接池 | C3P0 |
前端框架 | BootStrap |
2系统总体设计
按照系统的分析,本系统采用基于B/S架构的系统,系统分为管理员和普通用户两种身份,其中普通用户可以管理个人用户信息,也可·以对是否携带游戏、体温、手机号、出发地、目的地等进行修改操作;系统的管理员需要先登录,然后才能使用系统的各项功能,会涉及相应的信息。
用户信息管理模块包括用户登录、注册、退出、信息查询和修改功能。系统首页,登录界面的主要功能是让用户输入账号和密码。账号通常是用户在注册时填写的用户名、手机号码或电子邮箱,而密码是用户用于验证身份的秘密字符组合。不同的账号密码对应进入不同的界面,有不同的权限,实现不同的功能。在登录界面中,通常会有两个输入框,分别用于输入账号和密码。 输入框应该具有清晰的标签,以指导用户正确输入信息。
管理员信息管理模块包括管理员登录退出、信息修改及对普通用户的信息进行增删改查,可以实现数据库备份,为保证数据安全本系统采用了数据库备份功能;管理员系统它需要有效地提供疫情数据的收集、汇总、分析和展示等功能,为疫情防控工作提供科学依据和决策支持。
基础信息维护模块包括游戏类别设置、游戏信息添加、以及用户是否携带游戏。
3主要业务流程
对于系统的安全性的第一关,就是用户想要进入系统,必须通过登录窗口,输入自己的登录信息才可以进行登录,用户输入的信息准确无误后才可以进入到操作系统界面,进行功能模块的相对应操作,如果用户输入的信息不正确,则窗口出现提示框,用户登录失败,返回到第一步进行重新输入,如图3-1所示。
图3-1登录流程图
Figure 3-1 Login Flowchart
对于疫情防控管理系统,需要随时添加所需要的数据信息,对于用户添加信息,需要根据添加界面,根据选框的内容进行填写所要添加的数据信息,信息输入完成后判断数据信息是否符合要求,符合要求则添加完成,用户所添加的信息不符合要求,则需要返回到第一步,重新输入数据信息,再进行判断操作,如图3-2所示。
图3-2信息添加流程图
Figure 3-2 Information is added to the Flowchart
不管是哪个用户角色进入到不通的系统操作界面,都可以进行不同的信息内容的操作功能,对用系统数据信息的删除,用户一旦将信息删除,那么该删除的数据信息将无法恢复,所以用户在对数据删除事,一定判断删除的内容是否是确定要删除的,确定无误后选择确定删除操作,如图3-3所示。
Figure 3-3 Information Deletion Flowchart
4数据库的设计
4.1 逻辑数据库设计
用表格列出表的结构及说明表中主要列的作用。
ID | 名称 | 类型 | 是否主键 | 空 | 解释 |
1 | btId | int | 是 | 不能 | 编号 |
2 | btName | varchar | 不是主键 | 不能 | 名称 |
btDescription | varchar | 不是主键 | 不能 | 信息 |
类型信息表用来存放游戏类型信息,用来存放游戏类别,游戏名称。
ID | 名称 | 类型 | 是否主键 | 空 | 解释 |
1 | bId | int | 是 | 不能 | 编号 |
2 | bgameName | varchar | 不是主键 | 不能 | 名称 |
3 | bAuthor | varchar | 不是主键 | 不能 | 作者 |
4 | bSex | varchar | 不是主键 | 不能 | 是否收费 |
5 | bPrice | float | 不是主键 | 不能 | 定价 |
6 | bgameDescription | varchar | 不是主键 | 不能 | 信息 |
7 | btId | int | 不是主键 | 不能 | 类型id |
游戏信息表用来存放游戏信息,包括编号、名称、作者。
5系统功能详细实现及效果图
(3)游戏分类界面
这部分主要展示当前游戏信息详细介绍,让用户对游戏信息获取更加完善;如下图所示。
将我们的信息进行一个输出,输出数据库中的内容可以通过编写查询语句来实现。首先,需要连接到数据库,并构建一个查询语句,以从数据库中检索所需的信息。然后,执行查询,获取结果集,并将结果集中的内容进行输出,可以是在控制台打印、在界面上展示或者写入文件等方式。在输出信息之前,可能需要对结果进行格式化或者加工,以便更好地呈现给用户或者其他系统进行处理。最后,确保输出的信息是准确的、完整的,并且符合预期的要求。
(4)用户退出界面
这一部分是用户退出登录界面。如下图所示:
将登录凭证转为失效状态通常需要在数据库中进行更新操作。首先,需要构建一个更新语句,将特定的登录凭证的状态字段设置为失效状态。然后,执行该更新语句,以确保数据库中的登录凭证状态已经被更新。在执行更新操作之前,可能需要进行一些验证,例如验证用户的身份或者权限,确保只有有权的用户才能进行这个操作。另外,还需要确保更新操作是安全的,不会对数据库中的其他数据产生影响。最后,可以通过查询操作来验证登录凭证的状态是否已经成功地被更新为失效状态。
这是使用管理员的账号和密码进行登录之后的界面,这个界面可以对普通用户进行查询、修改和删除以及添加操作。
通过对dao的操作进行对表的增删改查。
6功能典型代码
根据SQL语句执行数据库的增删改操作
public class gameDao {
public boolean dataChange(String sql) {
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
int num = 0;
try {
//获得数据的连接
conn = JDBCUtils.getConnection();
//获得Statement对象
stmt = conn.createStatement();
//发送SQL语句
num = stmt.executeUpdate(sql);
} catch (Exception e) {
e.printStackTrace();
} finally {
JDBCUtils.release(rs, stmt, conn);
}
// 对受影响行数进行判断
if (num > 0) {
return true;
} else {
return false;
}
}
/**
* 操作结果:根据参数sql获取数据库记录数据
*
* @param sql SQL语句
* @return List 返回包含记录Records对象的集合
*/
public List getRecordsDataBySql(String sql) {
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
List list = new ArrayList();
try {
//获得数据的连接
conn = JDBCUtils.getConnection();
//获得Statement对象
stmt = conn.createStatement();
//发送SQL语句
rs = stmt.executeQuery(sql);
while (rs.next()) {
gameBean gameBean = new gameBean();
// 索引是从1开始的
gameBean.setgameId(rs.getInt(1));
gameBean.setgameName(rs.getString(2));
gameBean.setgameAuthor(rs.getString(3));
gameBean.setgameAuthorSex(rs.getString(4));
gameBean.setgamePrice(rs.getFloat(5));
gameBean.setgameDescription(rs.getString(6));
gameBean.setgameTypeId(rs.getString(7));
list.add(gameBean);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
JDBCUtils.release(rs, stmt, conn);
}
return list;
}
/**
* 操作结果:将集合转换成数组
*
* @param list 集合
* @return String[][] 二维数组
*/
public String[][] ListToArray(List<gameBean> list) {
String[][] array = new String[list.size()][7];
for (int i = 0; i < list.size(); i++) {
gameBean l = list.get(i);
array[i][0] = String.valueOf(l.getgameId());
array[i][1] = l.getgameName();
array[i][2] = l.getgameAuthor();
array[i][3] = l.getgameAuthorSex();
array[i][4] = String.valueOf(l.getgamePrice());
array[i][5] = l.getgameDescription();
array[i][6] = l.getgameTypeId();
}
return array;
}
}
游戏面板
gameAddPanel() {
// 为游戏添加面板添加控件内容
this.add(creategameAddBox());
// 批量为按钮设置图标
componentTools.setIcons(new JButton[]{addButton, resetButton}, new String[]{"src/gameManageSystem/images/add" +
".png", "src/gameManageSystem/images/reset.png"});
// 游戏类别查询SQL
String getgameTypeSQL = "select * from game_type";
// 获取所有的游戏类别数据
List gameTypeList = new gameTypeDao().getRecordsDataBySql(getgameTypeSQL);
// 获取所有的游戏类别名称
String[] typeNames = new String[gameTypeList.size()];
for (int i = 0; i < gameTypeList.size(); i++) {
gameTypeBean gameTypeBean = (gameTypeBean) gameTypeList.get(i);
typeNames[i] = gameTypeBean.getgameTypeName();
}
// 初始化下拉列表框中的选项
componentTools.addComboBoxItems(gameTypeComboBox, typeNames);
// 为按钮注册事件监听器
addButton.addActionListener(this);
resetButton.addActionListener(this);
}
/**
* 游戏添加面板的内容控件
*
* @return 返回一个Box
*/
private Box creategameAddBox() {
totalVBox = Box.createVerticalBox();
funcationHBox = Box.createHorizontalBox();
gameAddFuncationLabel = new JLabel("游戏添加功能");
gameAddFuncationLabel.setFont(new Font("微软雅黑", Font.BOLD, 30));
funcationHBox.add(gameAddFuncationLabel);
totalVBox.add(funcationHBox);
totalVBox.add(Box.createVerticalStrut(30));
nameAndAuthorHBox = Box.createHorizontalBox();
gameNameLabel = new JLabel("游戏名称:");
gameNameTextField = new JTextField(10);
gameAuthorLabel = new JLabel("游戏公司:");
gameAuthorTextField = new JTextField(10);
nameAndAuthorHBox.add(gameNameLabel);
nameAndAuthorHBox.add(Box.createHorizontalStrut(40));
nameAndAuthorHBox.add(gameNameTextField);
nameAndAuthorHBox.add(Box.createHorizontalStrut(40));
nameAndAuthorHBox.add(gameAuthorLabel);
nameAndAuthorHBox.add(Box.createHorizontalStrut(40));
nameAndAuthorHBox.add(gameAuthorTextField);
totalVBox.add(nameAndAuthorHBox);
totalVBox.add(Box.createVerticalStrut(30));
sexAndPriceHBox = Box.createHorizontalBox();
authorSexLabel = new JLabel("游戏类型:");
Box sexHBox = Box.createHorizontalBox();
femaleRadioButton = new JRadioButton("收费");
maleRadioButton = new JRadioButton("免费");
sexHBox.add(femaleRadioButton);
sexHBox.add(maleRadioButton);
radioButtonGroup = new ButtonGroup();
radioButtonGroup.add(femaleRadioButton);
radioButtonGroup.add(maleRadioButton);
gamePriceLabel = new JLabel("游戏库存:");
gamePriceTextField = new JTextField(5);
sexAndPriceHBox.add(authorSexLabel);
nameAndAuthorHBox.add(Box.createHorizontalStrut(50));
sexAndPriceHBox.add(sexHBox);
nameAndAuthorHBox.add(Box.createHorizontalStrut(100));
sexAndPriceHBox.add(gamePriceLabel);
nameAndAuthorHBox.add(Box.createHorizontalStrut(10));
sexAndPriceHBox.add(gamePriceTextField);
totalVBox.add(sexAndPriceHBox);
totalVBox.add(Box.createVerticalStrut(30));
typeHBox = Box.createHorizontalBox();
gameTypeLabel = new JLabel("游戏类别:");
// 实例化下拉列表框控件
gameTypeComboBox = new JComboBox();
typeHBox.add(gameTypeLabel);
typeHBox.add(Box.createHorizontalStrut(40));
typeHBox.add(gameTypeComboBox);
totalVBox.add(typeHBox);
totalVBox.add(Box.createVerticalStrut(30));
descriptionHBox = Box.createHorizontalBox();
descriptionLabel = new JLabel("游戏描述:");
descriptionTextArea = new JTextArea(10, 40);
descriptionHBox.add(descriptionLabel);
descriptionHBox.add(Box.createHorizontalStrut(40));
descriptionHBox.add(descriptionTextArea);
totalVBox.add(descriptionHBox);
totalVBox.add(Box.createVerticalStrut(30));
buttonHBox = Box.createHorizontalBox();
addButton = new JButton("添加");
resetButton = new JButton("重置");
buttonHBox.add(addButton);
buttonHBox.add(Box.createHorizontalStrut(80));
buttonHBox.add(resetButton);
totalVBox.add(buttonHBox);
return totalVBox;
}
@Override
public void actionPerformed(ActionEvent e) {
// “添加”按钮的事件处理
if (e.getSource() == addButton) {
// 获取用户输入的游戏名称
String name = gameNameTextField.getText();
// 获取用户输入的游戏公司名字
String author = gameAuthorTextField.getText();
// 获取用户选择的游戏公司的性别
String sex = "";
if (maleRadioButton.isSelected()) {
sex = maleRadioButton.getText();
} else if (femaleRadioButton.isSelected()) {
sex = femaleRadioButton.getText();
}
// 获取用户输入的游戏库存
String price = gamePriceTextField.getText();
// 获取用户选择的游戏类别
String type = (String) gameTypeComboBox.getModel().getSelectedItem();
// 获取用户输入的游戏描述
String description = descriptionTextArea.getText();
// 组装游戏类别SQL
String gameTypeSQL = "select * from game_type where btName='" + type + "';";
// 根据用户选择的游戏类别进行查询
List gameTypeList = new gameTypeDao().getRecordsDataBySql(gameTypeSQL);
// 获取查询结果
gameTypeBean gameTypeBean = (gameTypeBean) gameTypeList.get(0);
// 获取用户选择的游戏类别的id号
int gameTypeId = gameTypeBean.getgameTypeId();
// 组装新增SQL语句
String sql =
"insert into game(bgameName, bAuthor, bSex, bPrice, bgameDescription, btId) values('" + name + "'," +
"'" + author + "','" + sex + "'," + price + ",'" + description + "'," + gameTypeId + ");";
// 执行SQL并获取操作结果
boolean isOK = new gameDao().dataChange(sql);
// 对添加结果进行判断
if (isOK) {
// 添加成功则重置用户输入,并弹出提示框
componentTools.reset(gameNameTextField, gameAuthorTextField, gamePriceTextField, descriptionTextArea);
componentTools.reset(radioButtonGroup);
componentTools.reset(gameTypeComboBox);
JOptionPane.showMessageDialog(null, "添加成功!");
} else {
// 添加失败也弹出提示框
JOptionPane.showMessageDialog(null, "添加失败!");
}
}
// “重置”按钮的事件处理
if (e.getSource() == resetButton) {
// 重置用户输入和选择
componentTools.reset(gameNameTextField, gameAuthorTextField, gamePriceTextField, descriptionTextArea);
componentTools.reset(radioButtonGroup);
componentTools.reset(gameTypeComboBox);
}
}
}
连接JDBC类
public class JDBCUtils {
/**
* 加载驱动,并建立数据库连接
*
* @return 返回数据库连接
* @throws SQLException 抛出SQLException
* @throws ClassNotFoundException 抛出ClassNotFoundException
*/
public static Connection getConnection() throws SQLException, ClassNotFoundException {
// 设置数据库驱动
Class.forName("com.mysql.jdbc.Driver");
// 数据库链接URL及数据库名称
String url = "jdbc:mysql://localhost:3366/gamesys?useUnicode=true&characterEncoding=utf8&useSSL=false";
// 登录账户名
String username = "root";
// 登录账户密码
String password = "root";
// 创建连接
Connection conn = DriverManager.getConnection(url, username, password);
return conn;
}
/**
* 关闭数据库连接,释放资源
*
* @param stmt Statement对象
* @param conn Connection对象
*/
public static void release(Statement stmt, Connection conn) {
if (stmt != null) {
try {
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
stmt = null;
}
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
conn = null;
}
}
/**
* 关闭数据库连接,释放资源
*
* @param rs ResultSet对象
* @param stmt Statement对象
* @param conn Connection对象
*/
public static void release(ResultSet rs, Statement stmt, Connection conn) {
if (rs != null) {
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
rs = null;
}
release(stmt, conn);
}
}
7总结
本游戏管理维护系统为游戏管理员提供了一个便捷的工具,方便对游戏进行管理和维护。通过本系统,帮助管理员及时发现并解决游戏中出现的问题。系统还支持多种数据分析和报表生成功能,帮助管理员深入了解游戏运营情况,及时调整策略和优化运营方案。同时,系统还提供了用户反馈和投诉处理模块,帮助管理员及时处理用户反馈和投诉,提升用户满意度和游戏口碑。总之,本游戏管理维护系统为游戏管理员提供了全方位的管理工具,帮助他们更好地管理和运营游戏,提升游戏的竞争力和用户体验。
然而,Javaweb游戏系统也存在一些不足之处。首先,系统的安全性有待加强,存在一定的安全漏洞和风险,需要进一步加强系统的安全防护措施。其次,系统的游戏内容和功能还有待丰富和完善,此外,系统的用户体验和界面设计也需要进一步改进,以提升用户的操作便利性和游戏体验。另外,系统的数据备份和恢复功能也需要加强,以防止数据丢失和系统故障。最后,系统的跨平台兼容性和移动端适配性也需要进一步提升,以满足不同用户群体的需求。综上所述,Javaweb游戏系统虽然已经提供了便捷的管理工具,但仍然需要在安全性、功能完善性、性能优化等方面进行进一步改进和提升。
8参考文献
[1]李洋,张华(2018)。基于Java的Web游戏管理系统的设计与实现。2018年第四届国际控制、自动化和机器人技术会议(ICCAR)论文集,368-372页。
[2]王勇,陈瑜(2017)。基于Java EE的Web游戏管理系统的研究与实现。2017年第三届国际控制、自动化和机器人技术会议(ICCAR)论文集,464-468页。
[3]刘敏,王亮(2016)。基于Java的Web游戏管理系统的设计与实现。2016年第三届国际信息科学和控制工程会议(ICISCE)论文集,1080-1083页。
[4]郭军,陈华(2015)。基于Java的Web游戏管理系统的研究与实现。2015年第七届智能人机系统与控制技术国际会议(IHMSC)论文集,233-236页。
[5]梁山(2018)。《Java Web开发技术及实例详解》。清华大学出版社。
[6]王静,吴立(2015)。《Java Web开发技术及实例详解》。清华大学出版社。
完整源码:
相关文章:

游戏管理系统
目录 Java程序设计课程设计 游戏管理系统 1系统简介 1.1需求分析 1.2 编程环境与工具 2系统总体设计 2.1 系统的功能模块图。 2.2 各功能模块简介。 3主要业务流程 (1)用户及管理员登录流程图 (2)信息添加流程 &#x…...

坐牢第二十七天(聊天室)
基于UDP的网络聊天室 一.项目需求: 1.如果有用户登录,其他用户可以收到这个人的登录信息 2.如果有人发送信息,其他用户可以收到这个人的群聊信息 3.如果有人下线,其他用户可以收到这个人的下线信息 4.服务器可以发送系统信息…...
C++自学笔记33(数据类型总结与变量)
数据类型 类型位范围char1 个字节-128 到 127 或者 0 到 255unsigned char1 个字节0 到 255signed char1 个字节-128 到 127int4 个字节-2147483648 到 2147483647unsigned int4 个字节0 到 4294967295signed int4 个字节-2147483648 到 2147483647short int2 个字节-32768 到…...
游戏引擎phaser.js3的使用之玩家和静态物理组碰撞
玩家和静态物理组都加载好了,那就应该开始操作玩家动态和静态之间的碰撞了 下面是通过点击图片按钮来操作碰撞的 sky.on(pointerdown, function () { console.log(图片被点击了!); }) 图片点击后让动态的玩家和静态的物理组碰撞,就可以这…...

springboot整合mybatis以及mybatis-plus 开发
一、springboot整合mybatis 1.注解版 1.1 导入坐标 <dependencies><!--mybatis坐标--><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>2.2.2</…...

大语言模型微调框架Unsloth:简化模型微调流程,提升模型性能
Unsloth 将 Llama-3、Mistral、Phi-3 和 Gemma 等大型语言模型的微调速度提高了 2 倍,内存使用量减少了 70%,而且准确性不会降低! 特点 通过手动派生所有计算繁重的数学步骤和手写 GPU 内核,unsloth 可以在不更改任何硬件的情况…...
IPD-华为研发之道分析与理解
关于西方众多优秀的管理模式、理论我们学习过,也借鉴以及实践过,拿到《IPD-华为研发之道》通读研习后,正如书中所述,IPD是一套产品开发的模式、理念与方法,IPD思想,流程和方法是诸多成功企业优秀实践的经验…...
时空序列顶会文章
ICLR 2024 时间序列(Time Series)高分论文 - 知乎 (zhihu.com) ICML2024全部论文 icml.cc/virtual/2024/papers.html...
C语言-使用指针数组作为函数参数,实现对10个字符串进行排序
使用指针数组作为函数参数,实现对10个字符串进行排序 1.输入 lisi hahaha hehehe helloa leihoua lisi nihaoa wangwu ajax bureau2.输出 ajax bureau hahaha hehehe helloa leihoua lisi lisi nihaoa wangwu3.程序: #define _CRT_SECURE_NO_WARNING…...
???ABC366:F - Maximum Composition(dp,无序:贪心排序)
问题陈述 给你 NN 个线性函数 f1,f2,…,fNf1,f2,…,fN ,其中 fi(x)AixBifi(x)AixBi . 求由 KK 组成的序列 p(p1,p2,…,pK)p(p1,p2,…,pK) 中 fp1(fp2(…fpK(1)…))fp1(fp2(…fpK(1)…)) 的最大可能值。介于 11 和 NN (含)之间的个不…...

unity项目打包为webgl后应用于vue项目中(iframe模式)的数据交互
参考文章: 1.Unity打包WebGL: 导入Vue 2.unity文档-WebGL:与浏览器脚本交互 3.unity与vue交互(无第三方插件) 目录 一、前期工作1.新建.jslib文件2.新建.cs脚本3. 新建一个Text对象和button按钮对象4.添加脚本空对象UIEvent5.导出unity为w…...

【数据结构与算法 | 图篇】Bellman-Ford算法(单源最短路径算法)
1. 前言 前文的迪杰斯特拉算法不能求解有负边的图的最短路径的问题。而此文的Bellman-Ford可以处理含负权边的图算法,并且能检测出图中是否存在负环(权重和为负数的环). 2. 基本思想 1. 初始化: 对于所有顶点 v ∈ V \ {s}&am…...

Python | Leetcode Python题解之第336题回文对
题目: 题解: class Solution:def palindromePairs1(self, words: List[str]) -> List[List[int]]:# 核心思想--枚举前缀和后缀# 如果两个字符串k1,k2组成一个回文字符串会出现三种情况# len(k1) len(k2),则需要比较k1 k2[::-1]# len(k1…...

C语言家教记录(六)
导语 本次授课的内容如下:指针,指针和数组 辅助教材为 《C语言程序设计现代方法(第2版)》 指针 指针变量 计算机按字节划分地址,每个地址访问一个字节 指针变量指向变量的地址,指的是变量第一个字节的…...

C++竞赛初阶L1-11-第五单元-for循环(25~26课)519: T454430 人口增长问题
题目内容 假设目前的世界人口有 x 亿,按照每年 0.1% 的增长速度,n 年后将有多少人? 输入格式 一行两个正整数 x 和 n,之间有一个空格。其中,1≤x≤100,1≤n≤100。 输出格式 一行一个数,表示答案。以亿…...

demo测试
目录 接口commonCodeGenerator entityuser mapperUserMapper controllerUserController serviceUserServiceimplUserServiceImpl mapper.xmlpom.xmlapplication.yml 接口 common CodeGenerator package com.llz.demo.common;import com.baomidou.mybatisplus.core.exceptions…...

TinTinLand Web3 + DePIN 共学月|深入探索 DePIN 项目,全景分析去中心化网络未来
「TinTinLand Web3 主题共学月」是由 TinTinLand 每月发起的主题学习活动,携手知名项目共同打造一个系统化、互动性强的学习平台,帮助开发者不断提升技能,紧跟 Web3 技术的前沿发展。活动通过演示视频、学习打卡、模拟环境、实际操作等多种方…...
Java并发编程(六)
1、java 中有几种方法可以实现一个线程 继承 Thread 类实现 Runnable 接口实现 Callable 接口,需要实现的是 call() 方法 2、如何停止一个正在运行的线程 使用共享变量的方式 在这种方式中,之所以引入共享变量,是因为该变量可以被多个执行…...
k8s对外服务之Ingress
目录 1.Ingress 简介 2.Ingress 组成 3.Ingress-Nginx 工作原理 4.部署 nginx-ingress-controller 5.总结 1.Ingress 简介 service的作用体现在两个方面,对集群内部,它不断跟踪pod的变化,更新endpoint中对应pod的对象,提供了…...
使用Python+moviepy在视频画面上绘制边框
一、 使用VideoFileClip对象的的fx函数设置vfx.margin,在视频画面上绘制边框 from moviepy.editor import * mvVideoFileClip(/home/Download/leaves.mp4) mv2mv.fx(vfx.margin,mar3,color(0,0,255),opacity0.5) # 绘制边框# mar3 :边框宽度3像素&#…...

日语AI面试高效通关秘籍:专业解读与青柚面试智能助攻
在如今就业市场竞争日益激烈的背景下,越来越多的求职者将目光投向了日本及中日双语岗位。但是,一场日语面试往往让许多人感到步履维艰。你是否也曾因为面试官抛出的“刁钻问题”而心生畏惧?面对生疏的日语交流环境,即便提前恶补了…...

P3 QT项目----记事本(3.8)
3.8 记事本项目总结 项目源码 1.main.cpp #include "widget.h" #include <QApplication> int main(int argc, char *argv[]) {QApplication a(argc, argv);Widget w;w.show();return a.exec(); } 2.widget.cpp #include "widget.h" #include &q…...

c#开发AI模型对话
AI模型 前面已经介绍了一般AI模型本地部署,直接调用现成的模型数据。这里主要讲述讲接口集成到我们自己的程序中使用方式。 微软提供了ML.NET来开发和使用AI模型,但是目前国内可能使用不多,至少实践例子很少看见。开发训练模型就不介绍了&am…...
Angular微前端架构:Module Federation + ngx-build-plus (Webpack)
以下是一个完整的 Angular 微前端示例,其中使用的是 Module Federation 和 npx-build-plus 实现了主应用(Shell)与子应用(Remote)的集成。 🛠️ 项目结构 angular-mf/ ├── shell-app/ # 主应用&…...
A2A JS SDK 完整教程:快速入门指南
目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库ÿ…...

从“安全密码”到测试体系:Gitee Test 赋能关键领域软件质量保障
关键领域软件测试的"安全密码":Gitee Test如何破解行业痛点 在数字化浪潮席卷全球的今天,软件系统已成为国家关键领域的"神经中枢"。从国防军工到能源电力,从金融交易到交通管控,这些关乎国计民生的关键领域…...
前端中slice和splic的区别
1. slice slice 用于从数组中提取一部分元素,返回一个新的数组。 特点: 不修改原数组:slice 不会改变原数组,而是返回一个新的数组。提取数组的部分:slice 会根据指定的开始索引和结束索引提取数组的一部分。不包含…...
Vue 模板语句的数据来源
🧩 Vue 模板语句的数据来源:全方位解析 Vue 模板(<template> 部分)中的表达式、指令绑定(如 v-bind, v-on)和插值({{ }})都在一个特定的作用域内求值。这个作用域由当前 组件…...

阿里云Ubuntu 22.04 64位搭建Flask流程(亲测)
cd /home 进入home盘 安装虚拟环境: 1、安装virtualenv pip install virtualenv 2.创建新的虚拟环境: virtualenv myenv 3、激活虚拟环境(激活环境可以在当前环境下安装包) source myenv/bin/activate 此时,终端…...

负载均衡器》》LVS、Nginx、HAproxy 区别
虚拟主机 先4,后7...