论文答辩问题准备(学生水平,自己准备用的,不喜勿喷)

       论文答辩问题准备(学生水平,自己准备用的,不喜勿喷)
 

委婉回答不会的问题
1、您指出的错误确实存在,因能力所限,未能及时发现与改正,在今后的工作中将加以改正,感谢您的提醒。
2、不好意思,这个问题回去会好好研究,技术暂时还没实现。



1、选择这个课题,遇到最大的难点是什么,怎么克服实现的。
       期间遇到过的一大难点是采用solr的搜索功能,学习solr的原理,配置好solr的环境,将Solr技术合并到框架中。
另外,对支付功能的实现也踩了不少的坑。实现支付宝的支付和接口回调,读支付相关文档,掌握支付的流程,配置连接沙箱的环境,实现接口数据的签名,实现接口回调验证参数。


2、项目功能的突出之处是什么?(没突出也得扯出出突出啊)
 1)本系统将礼物与学生的兴趣爱好、节日等特点结合起来,致力于为学生提供多种类的礼物和多种送礼场景,使得学生能够更加轻松且快速地找到自己满意的礼物;
 2)采用Solr框架,实现准确而又高效快速的商品搜索功能;
 3)采用商品属性SPU+SKU的设计,能够根据同种商品的不同属性制定不同的价格,不同的商品数目,使得学生礼物商城系统可以保存不同门类的商品信息;
 4)系统采用当前流行的扫码支付方式。系统支持支付宝扫码支付,主要实现的功能有与支付宝的对接,支付宝的回调,查询支付状态以及根据支付宝的返回的url生成二维码图片,供用户扫码支付。


3、通过问卷调查得出什么结果?
本次答题人数有上百人。
超过80%的同学有送礼物的经历。
有百分之95%
的同学有过想要送礼物却不知道送什么的时候。
里面的对象基本都是亲人,朋友,恋人和老师,同学。
大部分人都是在生日时赠送的,也有父亲节和母亲节,情人节送
送的东西:精品摆设等工艺品、抱枕、围巾等实用型”
百分之90的人选择通过网购的。
少部分人通过线下实体店来获得礼物的


4、如何设计超卖和超买?
1)后期可以使用缓存,将需要商品放入缓存中,并使用锁来处理其并发情况。当接到用户提交订单的情况下,先将商品数量递减(加锁/解锁)后再进行其他方面的处理,处理失败在将数据递增1(加锁/解锁),否则表示交易成功。
2)当商品数量递减到0时,表示商品库存量为0,拒绝其他用户的请求。
使用主从库实现读写分析,缓解数据库的压力。


5、商品属性SPU+SKU的设计详解
        在电商平台中,一件商品的属性有很多项,有些是商品的基本属性,而有些是出于库存和促销的考虑所必须的,这就涉用到商品的SPU+SKU的设计。SPU(Standard Product Unit,标准化产品单元),又叫关键属性,描述了一个产品的特性,不会影响到库存和价格的属性;SKU(stock keeping unit,库存量单位),买家购买、商家进货、供应商备货、工厂生产都是依据SKU进行的,SKU通常表示:规格、颜色、款式,它是非关键属性,但又影响库存和销售的属性。本系统采用SPU+SKU的设计,将商品的关键属性和商品的非关键属性分开,能够各自独立进行维护。这样我们能够根据同种商品的不同属性制定不同的价格,不同的商品数目,使得学生礼物商城系统可以保存不同门类的商品信息。对于商品的分类,在后台设计好一级分类和二级分类的内容,该分类是根据不同场合、不同情景、不同对象进行划分,内容更加丰富,场景偏向学生作为用户群体。具体如下图:

论文答辩问题准备(学生水平,自己准备用的,不喜勿喷)


6、支付的流程

论文答辩问题准备(学生水平,自己准备用的,不喜勿喷)

7、支付涉及到的技术
1)启动定时任务轮询,3-5s一次查询交易状态,调用alipay.trade.query查询订单状态,返回结果。可能遇到的状态(流程结束、等待用户付款、系统异常、网络超时、指定时间内未完成支付执行交易关闭)
2 ) 支付宝回调时需要进行sign的验证:
       待签名串的生成:对数组里的每一个值从a到z的顺序排序,若遇到相同首字母,则看第二个字母,以此类推。排序完成之后,再把所有数组值以“&”字符连接起来。
       当获得到通知返回时的待签名字符串后,把待签名字符串、支付宝提供的公钥、支付宝通知返回参数中的参数sign的值三者一同放入DSA或RSA的签名函数中进行非对称的签名运算,来判断签名是否验证通过。

8、为啥没有实现商家功能
       因为个人能力问题和时间有限,暂时还没能开发好这个商家入驻功能,其实已经开始在了解和开发这个功能了。整个系统太庞大了,不得不做出选择暂时放弃一些功能的实现,后续进行补充。不可能说我这个功能明明没实现,随便写个界面显示来糊弄过去。商家功能包括可满足卖家对商品、交易、促销、店铺、物流、客服、售后、结算等全面功能需求。

9、Solr的技术

1)Solr是一个独立的搜索应用服务器, solr搜索项目加载数据并生成索引后,可以提供数据的全文检索服务;
2)将数据导入到Solr的过程: 从数据库中获取数据,将数据经过加工、分析、建立索引、存入索引库;
3)获取数据:通过关键字从Solr的索引库获取数据。

商品搜索采用solr框架,能够根据商品名称、属性和分类进行全文索引搜索,还配置组合字段实现精准搜索,非常高效。系统将商品基本信息和商品的属性信息存入Solr,作为数据源,然后进行加工、分析、建立索引、存入索引库,从而提供搜索。系统配置了中文分词包,使其支持中文分词。此外,还实现了定时增量导入数据,避免全量导入大量数据。

论文答辩问题准备(学生水平,自己准备用的,不喜勿喷)


10、Solr的工作方式
 文档通过Http利用XML 加到一个搜索集合中。
Solr查询该集合也是通过http收到一个XML/JSON响应来实现。它的主要特性包括:高效、灵活的缓存功能,垂直搜索功能,高亮显示搜索结果,通过索引复制来提高可用性,提供一套强大Data Schema来定义字段,类型和设置文本分析,提供基于Web的管理界面等。


11、Solr的特点
Solr是一个高性能,采用Java5开发,基于Lucene的全文搜索服务器。同时对其进行了扩展,提供了比Lucene更为丰富的查询语言,同时实现了可配置、可扩展并对查询性能进行了优化,并且提供了一个完善的功能管理界面,是一款非常优秀的全文搜索引擎
 

12、配置

建立数据项目
1)在example目录下创建nmall文件夹,增加配置文件solr.xml

2)在nmall创建sku文件夹,并且在sku下建立conf和data目录,增加core.properties
3)在conf目录配置schema.xml文件,配置好不同的字段
配置分词器
导入数据到Solr

配置Solr搜索项目的集合字段,调用Solr服务,导入数据
创建httpSolrServer对象,添加数据的方法addBeans(),提交添加数据的方法commit()
项目进行搜索获取结果
用xml配置SolrServer的bean,创建搜索条件SolrQuery类,提交搜索条件获取结果solrServer.query(solrQuery).


13、Solr + zookeeper 集群管理

在一台机上建立伪分布式的集群(solr-cloud)
准备三个zookeeper和三个Solr
配置zookeeper
加入Data目录,加入myid,配置好server编号,Zoo.cfg中配置dataDir和clientPort
配置节点列表

有太多数据或者有许多查询,以至于单个 Solr 服务器无法处理您的整个工作负载。在这种情况下,您可以使用 SolrCloud 扩展应用程序的功能,以便在多个服务器之间更好地分发数据和处理请求。
群集由一个或多个Solr节点组成,Solr节点正在运行Solr服务器进程的实例。
每个节点可以承载多个内核。
扩展搜索请求的并行量。
每个副本都使用为其集合指定的相同配置。
集合中内置的冗余级别以及在某些节点变得不可用的情况下集群可以容错的程度。可以在重负载下处理的并发搜索请求数量的理论限制。
SolrCloud在读取和写入中具有高度的可用性和容错性。
写侧容错:通过版本进行控制
恢复:为每个节点创建一个事务日志,以便记录每个对内容或组织的更改。