毕业论文

  • 为什么选择这个题目作为毕业设计?

学校提供了很多的题目让学生自己选择,同时也指派了相应的指导老师。我自己对于获取资源这种技术比较感兴趣,所以在选题的时候,就特别留意这方面的内容。最终选择了基于电影的小程序开发。就是以电影资源作为获取目标,学习小程序在请求资源时的具体过程。更多的是学习小程序的开发流程和它的便捷性,直接使用微信官方提供的MINI框架即可,不必再纠结于使用何种前端框架。降低了编码,调试的难度,只需要专注于业务逻辑的实现。(开发之前,做的准备工作,就是了解一些前端框架,react主要解决跨浏览器兼容的问题,主要通过减少与DOM的交互实现。VUE框架主要使用双向数据绑定来驱动页面,小程序在逻辑层和渲染层就使用数据绑定交互。Augular拓宽了HTML内容,也可以通过表达式绑定数据到HTML)

  • 你的这个论文价值是什么?

论文主要就是记录开发过程,以及各个模块的具体实现,描述小程序实现后的各种展示。当面对电影资源时,很多用户感到无从选择,陷入一种选择困难的情况。即使用户的目标很明确,那也要打开一个又一个体型庞大的应用,在里面找具体的资源。本次开发主要就是解决这两个问题。选择豆瓣这个资源最丰富的平台,将最全面最细致的资源集中到一个小程序中。提供各种资源的展示及搜索入口,让用户快速找到目标。与此同时,用户只需要停留在一个小程序中,无需在多个应用之间来回切换,这就是本次开发的最大价值。

  • 你的论文和开发的理论基础是什么?

使用微信开发者工具这个IDE进行开发,开发语言是WXML,WXSS一种微信提供的页面展示语言和页面排版语言。具体动态交互使用javascript,还有MINI框架。在请求豆瓣资源时,由于豆瓣服务器对小程序有限制,但是豆瓣平台资源比较全面,比较丰富,所以就使用代理服务器来转发小程序的请求。Nginx作为一种具有正向代理,反向代理,负载均衡,动静分离,高可用等多种功能的服务器,广泛应用在网页请求代理中,所以最终选择Nginx转发请求到豆瓣服务器,来获取资源。

  • 你是如何查找文献,形成你的文献综述?

本次开发使用到的技术是微信官方提供的编程工具,编程语言还有框架。所以参考最多的就是微信开发者文档,参考里面的框架介绍,API设计等。做完编程工作后,找到老师汇报了进度,因为之前写的都是实验报告,大作业之类。和毕业论文是完全不一样。所以我对如何写论文没有一点头绪。 老师给出了论文的基本框架,并且推荐了相关书籍让我参考, 老师给出的论文框架是编写一篇论文的基本内容,概要怎么写,应该写什么,怎么描述编程用到的技术栈,要不要附加程序的运行结果。并给我看了一些往年毕业生的论文,让我参考。这样,我对具体的论文内容也有一个大概的了解,剩下的工作就是我根据自己的编码记录开发过程。我自己在图书馆找到Nginx的介绍书籍,再结合网络上的Nginx使用介绍,还有我自己配置Nginx过程中的一些认识,逐渐对Nginx有一个更全面的了解。Nginx配置成功后,开发过程的最大的技术难点也顺利解决。然后,又看了其它研究人员撰写的计算机论文,并找出一些和我使用技术相同的点,并且记录下来,在自己的论文中作为引用。以上就是我写论文的全部过程。

  • 你的毕业论文研究方法是什么?

我写毕业论文主要是基于我自己的开发过程。开发中使用到的研究方法,我觉得就是在编码过程中,找到更适合某个场景的API接口,这个既要从计算机的方面去考虑,比如该接口占用内存空间,处理机资源,能不能支持多线程,能不能提高执行效率这些方面,还要从用户的方面考虑,比如用户体验,流畅度等。综合这些因素,就决定使用哪种API接口比较好。这些过程我都在论文中有所描述,所以我觉得自己的论文研究方法就是综合比较,选择最优的解决方案。

  • 你论文的整体思路是什么?

论文首先确定研究内容以及要解决的问题。再由这些问题,提出可执行的方案。我的开发主要就是把电影资源集中到一个小程序中。有了具体的解决方案后,就描述该方案需要的一些技术,实现过程。参考其他的论文,提炼出本次论文的概要。接着就是描述开发过程中使用的整体框架,详细介绍微信开发者文档的相关内容。再就是论述小程序的几个重要部分的具体实现,如何获取资源,如何把获取到的资源展示在页面上,如何实现搜索。接下来详细介绍Nginx作为反向代理起到的作用,以及相关的配置信息。最后就是把程序的运行结果附加到论文当中,使开发过程更具证明力和说服性。最后再回顾全文,做出总结,记录这个方案有没有很好的解决论文提出的问题,总结开发过程使用的技术亮点,积累开发经验和论文撰写经验。

  • 你认为自己论文的优点和缺点是什么?

本次论文最大优点就是详细的描述了开发的各个过程,小程序的各部分功能,尽可能的把所使用的技术全部记录在里面。详细的描述了一些技术难点,包括使用Nginx作为反向代理,请求豆瓣资源。论文的概要也是阅读了其它论文之后,根据实际开发所总结出的内容。最后在论文的总结阶段,也对本次设计做出客观评估。

本次论文的主要缺点就是,设计内容不丰富,编写论文过程语言表达不够准确,研究相对浅薄,研究方法未能按照科学的流程执行等等。

  • Nginx的几种功能

正向代理,用户访问某个网址时,无法正常访问。使用Nginx服务器作为正向代理,实现正常的访问。如用户访问谷歌,国内情况无法正常到达,使用Nginx作为正向代理,就可以正常访问。

反向代理,客户端只需要访问代理服务器,代理服务器就把请求转发至目标服务器。请求后,把访问结果返回给客户端。对用户来说,代理服务器和目标服务器没有区别,只是暴露的是代理服务器地址,隐藏的是真实服务器IP。

正向代理就是代理客户端,服务器不知道发出请求的客户端。反向代理就是代理服务器,客户端不知道提供服务的服务器。

负载均衡,客户端需要访问资源,发送请求到某个服务器,但由于目标服务器无法响应如此多的请求,就需要一种服务器分散请求,这样就解决负载均衡的问题。

动静分离,客户端请求资源时,请求静态资源时,访问一个服务器。请求动态资源时,再访问一个服务器。这种动静分离的技术可以保证降低单个服务器的压力。

高可用,为了提高Nginx的适用性和容错能力,设置一个Nginx的副本服务器,当主服务器发生故障时,就可以使用副本服务器代替主服务器,于是不影响工作正常进行。

  • SSL协议

SSL协议,安全套接字协议。使用数字证书验证身份,使用密钥交换算法交换密钥,使用密钥来加密数据,使用散列算法来验证数据完整性。

SSL协议的三个特性。保密,即是所有需要传送的消息需要加密。鉴别,可选的客户端认证和强制的客户端认证。完整性验证,传送的数据使用MAC算法检查消息完整性。

SSL协议包括三个部分,握手协议,记录协议,警报协议。

握手协议,第一阶段建立安全连接,客户机向服务器发送client hello消息,等待服务器回复server hello信息。通过这个连接客户机和服务器双方都知道SSL版本,交换密钥算法,加密算法,完整性验证算法,有关密钥生成的两个随机数,数据压缩方法。

握手协议第二阶段,服务器鉴别和密钥交换。服务器把数字证书和整个根CA链都发给客户端,客户端使用服务器的证书来验证服务器身份。服务器密钥交换,视第一阶段的密钥交换算法而定。服务器要求客户端发送证书验证客户端身份。

握手协议的第三阶段,客户机鉴别和密钥交换。客户端发送证书给服务器证明身份,客户端密钥交换,客户端将预备主密钥发送给服务器,使用服务器的公钥进行加密。客户端发送证书验证,证明拥有服务器的数字证书公钥。

握手协议第四阶段,客户端启动完成阶段,有四个消息进行传输,前两个是客户端发送,后两个是服务器发送。

握手阶段生成主密钥,为了保证信息的完整性和机密性。SSL协议需要6个密钥。客户机,基于加密需要一个密钥,保证数据可信性需要一个密钥,基于分组需要一个密钥。服务器也是如此,基于加密需要一个密钥,保证数据可信性需要一个密钥,基于分组需要一个密钥。SSL需要的密钥是单向的,不同于其它方向的密钥,如果一个密钥收到攻击,其它方向不受影响。

记录协议,客户机和服务器在鉴别双方和确定安全交换使用的算法后,进入SSL的记录协议,使用记录协议向SSL提供两个服务。保密性服务由握手协议定义的密钥实现。完整性由握手协议定义的MAC算法实现。

警报协议,客户机和服务器如果发现一个错误时,就向对方发送一个警报信息,如果是一个致命错误,双方立刻关闭SSL连接,并且删除会话号,数据和密钥。

总之,SSL协议就是使用握手协议来协商密钥交换算法交换密钥,协商密钥来加密数据,协商MAC算法检查数据完整性,散列算法验证完整性,以及一些证书来验证客户机和服务器的身份。

  • openSSL可以创建私钥或证书签名请求。可以实现密钥证书管理,对称加密和非对称加密

OpenSSL是一个开源库,包括三个主要的组件。openssl多用途的命令行工具,libcrypto加密算法库,libssl加密算法应用库。

数字证书就是数字证书颁发机构对使用私钥创建的签名请求文件作出的鉴定,表示数字证书机构对证书的认可,数字证书包含与服务器私钥对应的公钥。

由于密码学中的证书X509标准,一个证书包括如下。

  1. key文件,服务器私钥文件,加密发送至客户端的数据,解密来自客户端的信息。
  2. csr文件,证书签名请求文件,发往CA对证书签名。
  3. crt文件,是CA签名后的证书,或是开发者自签名的证书

本次小程序的开发要生成一个自签名证书,认定服务器的身份。所以需要openSSL来生成一个服务器私钥,自签名证书。

首先,创建一个服务器私钥,这个私钥用来服务器的身份认证。

openssl genrsa -out server.key 1024        这条指令来创建服务器私钥。

然后,openssl对私钥创建者的数字签名请求进行自签名。

openssl req -new -key server.key -out server.csr 可发起签名请求

openssl x.509 -req -days 365 in server.csr -signkey server.key -out server.crt  可完成自签名

这样客户机就有了自签名证书,就有了服务器私钥对应的公钥,可对服务器身份进行鉴定。至此,证书生成完毕。

使用Nginx作为反向代理就是访问Nginx时,就会转发到最终要访问的服务器上。由于是个人开发,所以Nginx位于客户机上,即在localhost。会通过Nginx转发到豆瓣服务器,访问localhost相当于访问豆瓣。

原文地址:https://www.cnblogs.com/feng1014/p/12671947.html