计算机毕设答辩提问(小程序/网站)
昨天进行了答辩,没有想象中的那么难,老师们都和蔼可亲,整体还不错。我们学校是上午进行答辩,下午代码检测。
答辩主要是是学生做好PPT,展示,介绍项目,老师提问,时间为5分钟左右。
下午的代码检测部分,主要是老师对代码部分进行检查,提问,考察学生的项目是不是自己做的,是否为独立完成,不是独立完成,个人完成度是否符合毕设的要求等。
下午比上午难度大点,老师啥都问,还要现场删代码,然后学生复原。
ps:也有小组的PPT讲解和代码检测同时进行。
接下来是我总结的老师们的提问。
我的毕设是一个小程序。
答:前端是Uni-app、后端Spring Boot,在Spring Boot的Mapper层嵌入了MyBatis持久层架构,MySQL数据库
前端使用Vue,前后端解耦,前后端分析,代码更加规范。
Spring Boot:简化项目配置,可以独立打包部署,运行更方便不需要在外部导入其他的配置,与服务器。
MySQL:免费的,且开源,轻量级。
1) 案例检索功能模块:该部分主要包括3个子功能。
第一个:文书检索:用户可以选择不同的关键字对法律文书进行搜索,通过关键字类型URL,通过检索关键字的可触发不同的条件对文书进行查询,其中查询是模糊查询。
第二个是文书排序和筛选:检索得到文书列表后,可对文书进行排序和筛选,其中排序选用的冒泡排序和Uni-app框架中的compare比较器实现。案例筛选是通过选择不同的字段对其筛选。
第三个是文书详情页:该页面主要是显示某一具体文书的详细信息,用户可在该页面点击收藏图标,完成对该文书的收藏,实现方法主要是获取文书id,通过该ID调用文书详情数据表,完成对文书的查询。
2)案例分析功能模块:该部分主要使用阿里云Echarts插件对数据进行可视化分析,数据交由后端处理,后端对相关字段通过MapperRequst()方法类聚合,完成对数据的提取。
3)案例收藏功能模块:
实现收藏的前提条件是用户必须登录,用户登录后,获取用户编号,进入案例详情页面,用户点击收藏,触发收藏URL,把案例id和用户id同时请求接口,然后存入数据库,就可以知道是哪个用户收藏的哪个文书,在收藏页面,因为获取了用户id可以找到该用户所收藏的文书。
onPullDownRefresh()方法实现下拉刷新功能。
4)个人信息管理模块:
当用户对该小程序授权后,前端微信官方提供的wx.getUserProfile方法获取用户的ID、用户名、用户所在地,并且对其加密,后端拿到数据后,存储到数据库中。
对用户信息的保存进行加密了,采用的是微信官方的加密方法函数,以url+key方式进行。
数据字典,三段式,主键、外键、自增主键,E-R图。
数据字典:程序设计方法。
三段式:数据表中的字段和主键直接对应不依靠其他中间字段;
主键是唯一标识一条记录,不能有重复,不允许为空,而外键可以重复,可以是空值;2、主键是用来保持数据完整性,外键是用来建立与其他表联系用的;3、主键只有一个,外键可以有多个。
定义主键和外键主要是为了维护关系数据库的完整性。
数据库设计遵循三段式(三范式);
数据表间采用外键关联;
E-R图也称实体-联系图 (Entity Relationship Diagram),提供了表示实体类型、属性和联系的方法,用来描述 现实世界 的 概念模型。它是描述现实世界关系概念模型的有效方法。 是表示概念关系模型的一种方式。
做过,postman测试过。
首先前端DSN解析IP,选择服务器,三次握手,pom.xml,filter
然后前端Uni-app–>Spring Boot–>Mapper–>Controller–>Service–>Dao->MySQL
请求到数据后:Dao->Service->Controller
->前端
前后端框架的搭建,前后数据交互、缓存。
通过查阅相关资料,因选用的框架为当前热门框架,故跟着网上的视频学习过,重点是对每一个接口的封装都要保持一致,尤其是字段名以及字段名的类型,方法类基本相似,前端可以用console灵活打印结果。查看是否一致。
遇到的某一问题:在对文书详情页的案号(case_number)写入后端时,因错写该字段的类型,导致项目出错,无法显示文书详情页面。
解决方法:首先在APIPOST中输入该接口地址,查看前端是否接收到数据。
然后,前端没有接收到数据,表示问题出现了后端或数据库,Spring Boot查看该接口的Dao层,以及编译时的错误原因。最后,找到错误,在Mapper层修改字段类型。
此次设计主要是本地部署,没有实现内网穿透、服务器部署。UI还需要进一步提高。
数据库新建选择UFT-8
后端前端的依赖都选用UTF-8
在底层Service层采用throw将异常向上抛,在controller层选择try catch避免整个系统崩溃。不是每层都异常处理。
各个数据表的ID都为该表的主键,select by id数据库更新需要使用。
主外键的区别:1)主键是唯一标识一条记录,不能有重复,不允许为空,而外键可以重复,可以是空值;2)主键是用来保持数据完整性,外键是用来建立与其他表联系用的;3)主键只有一个,外键可以有多个。
MySQL的索引,原理为B+树,每层查询的数据是固定的,提高查询速度。
运行项目,启动项目Tomcat
不用框架会更加复杂,用框架可以解决常见问题,运用框架使得代码更规范、更优雅。
独立完成。
对项目进行功能测试时,采用黑盒测试。其中对接口测试,接口响应式速度选用APIPOST,压力测试选着postman。
数据结构:主要用来存储数据以及数据的相关操作,例如:线性表(排序选择)、(双端)队列(检索出的文书列表)、栈(数据的写入,例如:检索的关键字记录、意见反馈等)。
软件工程:设计和开发流程,采用自底向上的开发方法、自顶向下的测试流程,测试主要是黑盒测试。
移动终端编程:前后端分离架构,页面间的逻辑,以及编程语言JavaScript。
TCP/IP网络编程:前后端通讯的实现,以及数据缓存和数据交互。
微信小程序不同页面传值方法,用过两种设置缓存和通过url传值。
设置缓存
设置缓存:wx.setStorageSync(‘message缓存名字’,res.data.message缓存值)
获取缓存:wx.getStorageSync(‘message缓存名字’)
通过url传值
在url中传入要发送的值
wx.navigateTo({
url: ‘…/sectionItem/sectionItem?id=’ + that.data.id + ‘&chapter=’ + event.currentTarget.dataset.id,
})
需要加载的page中的onLoad方法中获取值
onLoad:function (options){
console.log(“id:”+options.id)
console.log(“chapter:”+options.chapter)
}
1)传统技术与基于react的技术区别?为什么选择它们。
2)查询的业务需要自己写吗?
3)中后端适配怎么实现?
1)选择怎样的漏洞,有什么特征?
2)数据集是否很大?数据量过小,较小的数据集,是否有使用深度学习的必要性?
1)介绍原理时,算法原理和步骤,为什么量子质数分解可以刚好分解为指数基地;
2)这个平台有什么限制?
3)该平台为什么可以用这两种方法实现近似周期?
1)经典复杂度为多少?量子算法的复杂度为多少?
2)加速器设置为多少?
3)转质怎么实现?什么矩阵?
4)模拟是在哪里实现的?为什么不选择百度?百度不是当下流行的吗?
5)维度太大的计算量为多少?为什么选择二维?
6)建议:量子状态的存储不能直译。
1)硬件方面有要求吗?在什么硬件设备上实现?
2)训练的数据集有多大?
3)基线方法。
1)如果修改,所有地方都修改了吗?
2)与其他的同类型的网站相比较,有什么优点?
3)适应哪些场景?有什么意义?
4)性能问题有考虑吗?架构方面如何?
1)量子算法不是第一个?实践上是吗?也不是?
2)完备性搜索算法?
3)为什么选择Grover算法解决这个问题?
4)是否真机实现过?结果怎么样?找出来了吗?
5)量子计算机的结果数据很大吗?
1)知识图谱是自己做的吗?
2)知识图谱和用户画像结合的有什么优势,其对比是什么?
3)在知识图谱和用户画像的对比中,为什么只和协同过滤算法对比?
1)入侵检测是基于特征还是异常?
2)选择怎样的漏洞,有什么特征?
3)数据量有多大?太小是否有进行深度学习的必要?
答辩最好熟悉项目,不是自己写的也要多看几遍。不仅要熟悉逻辑,更重要的是熟悉代码啊,老师们特别喜欢扣代码细节。还有就是和学科相关的知识点。
我需要在客户计算机上运行Ruby应用程序。通常需要几天才能完成(复制大备份文件)。问题是如果启用sleep,它会中断应用程序。否则,计算机将持续运行数周,直到我下次访问为止。有什么方法可以防止执行期间休眠并让Windows在执行后休眠吗?欢迎任何疯狂的想法;-) 最佳答案 Here建议使用SetThreadExecutionStateWinAPI函数,使应用程序能够通知系统它正在使用中,从而防止系统在应用程序运行时进入休眠状态或关闭显示。像这样的东西:require'Win32API'ES_AWAYMODE_REQUIRED=0x0
Rackup通过Rack的默认处理程序成功运行任何Rack应用程序。例如:classRackAppdefcall(environment)['200',{'Content-Type'=>'text/html'},["Helloworld"]]endendrunRackApp.new但是当最后一行更改为使用Rack的内置CGI处理程序时,rackup给出“NoMethodErrorat/undefinedmethod`call'fornil:NilClass”:Rack::Handler::CGI.runRackApp.newRack的其他内置处理程序也提出了同样的反对意见。例如Rack
我想用ruby编写一个小的命令行实用程序并将其作为gem分发。我知道安装后,Guard、Sass和Thor等某些gem可以从命令行自行运行。为了让gem像二进制文件一样可用,我需要在我的gemspec中指定什么。 最佳答案 Gem::Specification.newdo|s|...s.executable='name_of_executable'...endhttp://docs.rubygems.org/read/chapter/20 关于ruby-在Ruby中编写命令行实用程序
我构建了两个需要相互通信和发送文件的Rails应用程序。例如,一个Rails应用程序会发送请求以查看其他应用程序数据库中的表。然后另一个应用程序将呈现该表的json并将其发回。我还希望一个应用程序将存储在其公共(public)目录中的文本文件发送到另一个应用程序的公共(public)目录。我从来没有做过这样的事情,所以我什至不知道从哪里开始。任何帮助,将不胜感激。谢谢! 最佳答案 无论Rails是什么,几乎所有Web应用程序都有您的要求,大多数现代Web应用程序都需要相互通信。但是有一个小小的理解需要你坚持下去,网站不应直接访问彼此
我尝试运行2.x应用程序。我使用rvm并为此应用程序设置其他版本的ruby:$rvmuseree-1.8.7-head我尝试运行服务器,然后出现很多错误:$script/serverNOTE:Gem.source_indexisdeprecated,useSpecification.Itwillberemovedonorafter2011-11-01.Gem.source_indexcalledfrom/Users/serg/rails_projects_terminal/work_proj/spohelp/config/../vendor/rails/railties/lib/r
刚入门rails,开始慢慢理解。有人可以解释或给我一些关于在application_controller中编码的好处或时间和原因的想法吗?有哪些用例。您如何为Rails应用程序使用应用程序Controller?我不想在那里放太多代码,因为据我了解,每个请求都会调用此Controller。这是真的? 最佳答案 ApplicationController实际上是您应用程序中的每个其他Controller都将从中继承的类(尽管这不是强制性的)。我同意不要用太多代码弄乱它并保持干净整洁的态度,尽管在某些情况下ApplicationContr
这里是Ruby新手。完成一些练习后碰壁了。练习:计算一系列成绩的字母等级创建一个方法get_grade来接受测试分数数组。数组中的每个分数应介于0和100之间,其中100是最大分数。计算平均分并将字母等级作为字符串返回,即“A”、“B”、“C”、“D”、“E”或“F”。我一直返回错误:avg.rb:1:syntaxerror,unexpectedtLBRACK,expecting')'defget_grade([100,90,80])^avg.rb:1:syntaxerror,unexpected')',expecting$end这是我目前所拥有的。我想坚持使用下面的方法或.join,
我是一个Rails初学者,但我想从我的RailsView(html.haml文件)中查看Ruby变量的内容。我试图在ruby中打印出变量(认为它会在终端中出现),但没有得到任何结果。有什么建议吗?我知道Rails调试器,但更喜欢使用inspect来打印我的变量。 最佳答案 您可以在View中使用puts方法将信息输出到服务器控制台。您应该能够在View中的任何位置使用Haml执行以下操作:-puts@my_variable.inspect 关于ruby-on-rails-如何在我的R
在Ruby中可以使用哪些替代方法来ping一个ip地址?标准库“ping”库的功能似乎非常有限。我对在这里滚动我自己的代码不感兴趣。有没有好的gem?我应该接受它并忍受它吗?(我在Linux上使用Ruby1.8.6编写代码) 最佳答案 net-ping值得一看。它允许TCPping(如标准rubyping),但也允许UDP、HTTP和ICMPping。ICMPping需要root权限,但其他则不需要。 关于ruby-Pingruby网站?,我们在StackOverflow上找到一个类
如何检查Ruby文件是否是通过“require”或“load”导入的,而不是简单地从命令行执行的?例如:foo.rb的内容:puts"Hello"bar.rb的内容require'foo'输出:$./foo.rbHello$./bar.rbHello基本上,我想调用bar.rb以不执行puts调用。 最佳答案 将foo.rb改为:if__FILE__==$0puts"Hello"end检查__FILE__-当前ruby文件的名称-与$0-正在运行的脚本的名称。 关于ruby-检查是否