作者:泥泥的春天_565_576 | 来源:互联网 | 2023-10-12 08:10
这学期上了一门云计算与大数据的课程,课程设计是要求做一个基于大数据的人工智能象棋出来。整体来说还是比较有难度的,平常都是在Win10环境下进行开发部署,现在要求部署到服务器上面,就会遇到各种各样的问题。
文章目录 基于大数据的人工智能象棋 项目简介 实现方案 数据库 爬虫+数据处理 部署+整合 购买服务器 安装xftp6和xshell 在服务器上安装java、mysql、tomcat 在阿里云的管理控制台打开防火墙8080的端口 在解压好的tomcat/bin下启动tomcat,./startup.sh,就可以访问服务器了 sql脚本导入 用Maven将项目打包成war包,发送到服务器tomcat/webapps下 查看日志文件,tomcat/logs下的catalina.out可以查看tomcat的日志报告。 通过互联即可进行访问 数据库连接问题
基于大数据的人工智能象棋 项目简介 实现一个能够通过互联网访问的,基于大数据的简单的人工智能象棋。
实现方案 前端 前端方面是老师直接给了代码,http://avatarsys.org:8007/chess.html,整个页面是用canvas实现的,代替了用图片表示象棋棋子的传统方式。但是只提供了点击下象棋,限制象棋走法等基本的功能,对于后边提及到的功能均要求自己实现。 图1 是整个页面的布局,横轴为0-8和纵轴为0-9,图二上的坐标(x,y)标记了每个棋子,它们是独一无二的。这样,通过一段64位的字符串即可代表整个棋盘的即时布局状态,比如,棋盘的初始状态为( - 是让大家方便看清楚,实际上是不存在的): 00102030405060708012720323436383 - 89796959493929190977178666462606
这样页面发生任何变动都可能通过64位的字符串来了解到是如何变化的。上面就是整个页面布局的介绍。所以,用户(默认是红方)每走一步,前端都会发送一个请求, 将当前页面的棋局状态(64位的字符串)发送给后端,使得后端能够根据这段字符串进行处理。后端会响应回来一个四位的字符串 (后端部分会在下面介绍),这四位字符串代表黑方(即机器人)要怎么走,比如返回 “0001”,即黑方的左上角的车要向下挪一格。那么前端接受到这四位字符串,要更新页面,然后切换控制权给用户,让用户继续下棋。
在下棋的过程中,可能会遇到机器不会走的情况,那是因为我们爬取的数据不够多,不能够覆盖所有情况,所以我们要让机器自己学习。我们小组的想法是这样的。遇到机器不会走的情况,将黑方控制权给用户,让用户帮我们下,学习用户的下法,不同的用户遇到这样的棋局是如何下的,统计该棋局下每个用户的走法,遇到新的走法则记录,遇到同样的走法则其数据库字段的频率+1,后端查询时即根据最高频率进行选择(即选择最多人走的走法)。由于时间关系,我们小组没有做用户登录的功能,所以无法根据用户来学习,只实现了很简单是不懂就学习,学完之后它的频率是一直都是1,不会进行优化学习的。
在这个学习的过程中,前端要做的就是记录红方走前的棋局状态,称为chessStatus1,记录用户控制黑方走之后的棋局状态,称为chessStatus2,将两个棋局状态发送给后端,保存到数据库中。然后再讲控制权切换回给红方。
上面就是前端大概功能和做法了,其实最难的还是生成棋盘状态部分。这部分不是我负责的,所以也不好写。嘿嘿,这里就懒得去理解解释了。狗头保命。
后端 我负责的是后端的部分,用Maven搭建的骨架,语言选择的是JAVA,编译器是IDEA,框架使用了SSM,数据库是MYSQL。后端部分的代码比较少。老师要求用REST风格来写,这里只写了两个API,GET是下棋接口,POST是学习接口。
下棋接口 前端发送过来的是chessStatus,调用Service到数据库进行查询,如果没有就返回"null",如果找到了最优棋盘status,则要进行处理。其实就是要将两个棋局进行比较,就是一个寻找两个字符串中不同字符的算法(不同的字符最多有两个,最少有一个),因为我们要返回的是某个棋子的变化动作,棋子走一步可能它的(x,y)坐标只有一个变化了,也可能是 x 和 y 都变了,所以有些特殊情况进行处理,代码如下。
学习接口 这就非常简单了,直接插入数据就行了
数据库 数据库表(就一张表)及字段
爬虫+数据处理 嘿嘿,这两部分也是其他人负责的,整个项目就这两部分最重要了。这里就简单贴一下他们写的思路吧。
部署+整合 部署是部署在阿里云的服务器上边,这个过程还是比较复杂的,有很多坑。
购买服务器 阿里云的地址:https://www.aliyun.com,我买的是轻量级服务器,系统选的是ubuntu18.04,学生认证,一个月10块钱,相当于白嫖,购买完进去之后,设置用户名和密码就可以使用了。
安装xftp6和xshell 想要通过本地直接访问远程服务器可以使用xshell,想要向服务器传输文件可以使用xftp6,这两款软件都挺好用的,隶属于NetSarang的软件。然后在两款软件上配置一下主机地址即公网ip、用户名和密码就可以访问到我们的服务器了。
在服务器上安装java、mysql、tomcat 这部分大家上网搜一下教程就可以了。要提醒的一点就是,mysql安装完之后一定要记得取消无密访问的设置,然后配置好用户名和密码,不然后面连接会出问题。
在阿里云的管理控制台打开防火墙8080的端口
在解压好的tomcat/bin下启动tomcat,./startup.sh,就可以访问服务器了
sql脚本导入 mysql -u root -p xxx; 进入数据库 use bigdata_aichess;使用该数据库 source ./chessdata.sql 运行脚本文件
用Maven将项目打包成war包,发送到服务器tomcat/webapps下
查看日志文件,tomcat/logs下的catalina.out可以查看tomcat的日志报告。 通过互联即可进行访问
数据库连接问题 前端发送请求的路径,要改换成公网的ip,SSM连接数据库的配置文件,例如db.properties要下的jdbc.url还是localhost,不用换,这个看你是访问服务器上的数据库还是本地的数据库,如果远程访问,需要开放权限,以及这个可能涉及到跨域问题,前端发送的请求路径也不能够写成绝对路径了。