黑马程序员技术交流社区

标题: 【武汉校区】面试的时候如何进行项目讲解? [打印本页]

作者: 武汉分校-小舞    时间: 2017-7-19 15:31
标题: 【武汉校区】面试的时候如何进行项目讲解?
面试的时候如何进行项目讲解?

(本文稿由就业部陈老师提供)

我们这个项目是基于SOA的架构来实现的。采用的是dubbo中间件来实现表现层跟服务层之间的通信。我们项目分为前台后台,前台提供内容展示,商品展示,商品搜索,购物车,订单等模块,支付,客服中心等模块,后台提供管理商品,内容管理,订单管理,采购财务管理等模块。

下面我给您具体介绍一下。

首先进入我们的网站首页:最上面是我们的网站的logo,搜索框,下面左边是测分类栏对商品进行分类,轮中间是轮播图广告位,跟着下面是新闻公告栏,再下面是一些热门商品的展示。这上面内容都是动态的展示出来的,所以我们要有一个后台来管理这些内容。

我介绍下我参与的两个模块:

[hide=d1000]比如说广告位的展示吧,我们后台要管理这些内容,在后台页面最左边就会有一个网站内容管理模块,内容模块包含内容分类管理,内容管理。当我们点击内容分类,在右边就会显示所有商品的一个分类,在点击子节点,比如说我们这里的广告位,就会异步加载数据的显示查出广告内容。我们再在这个基础上对广告进行增删改查。考虑高并发量,为了避免频繁的与数据库交互,我们将数据存在了redis中,当在首页中点击广告时,我们将不再直接去数据库中查找数据,而是先判断缓存中是否有数据,如果有直接返回数据,如果没有就去查数据库并将数据缓存在radis中,另外我们修改内容后,会将原来的缓存删除掉,来同步数据库。
后台模块还有商品管理模块,这一块是对商品的列表展示,以及增删改查操作,分页采用的是pagehelp插件,将商品信息查询出来的信息放到pageinfo对象里面,设置分页信息,返回数据给datagrid;新增商品的话,在商品添加界面录入商品信息,商品的id,商品标题,商品卖点,商品价格,库存数量,商品条形码,商品图片,商品类别,商品状态(1-正常,2-下架,3-删除'),创建时间,更新时间,商品的描述。其中图片存储考虑到数量比较多,采用的是分布式文件存储系统(fastdfs),图片多了可以搭建集群。商品的描述采用的是富文本编辑器,将录入的商品信息分别插入对应的不同的表.[/hide]

然后我们再来说下首页的其他部分,最上面有个搜索框,当用户在首页没有看到想要的商品时,可以有针对性的进行搜索,使用了solr技术,根据IK分词器,对查询的条件进行查询,首先创建一个SolrQuery对象作为商品搜索的查询条件,设置分页条件,指定默认的搜索域,设置高亮,执行查询,计算出总页数和总条数,返回一个QueryResponse结果集,在将结果集循环遍历添加到自己定义的集合里面,返回给页面,一个商品的图片有多个地址,需要将图片的地址分切转化成数组,页面显示的时候取数组的下标为0,取出一张图片就可以了,这样我们就搜索到我们想要的一些商品。

这里有一个问题就是索引库要同步,当我们添加商品的时候,我们使用了一个消息中间件ActiveMQ来同步索引库,添加商品时,发送消息。在搜索模块中,创建MessageListener接口的实现类接收消息,取商品id,根据商品id查询数据库,创建一SolrInputDocument对象,使用SolrServer对象写入索引库。

当用户搜索到自己想要的商品时,就会去点击那个商品图片或者名称进入商品详情页面。商品详情展示要查两个表,一个是商品表,一个是商品描述表,当访问量很大时,如热门商品,就会频繁的跟数据库交互,为了减轻数据库的压力,考虑使用缓存。热门商品访问量比较大,需要做缓存,普通商品却需求不大。要区别对待,我们考虑到使用记录访问量来记录访问次数,来区别热门商品,针对的做缓存,但这样操作麻烦。最终我们采用设置redis过期时间来处理这个问题, 热门商品访问比较深多,过期了又会存进去。

不过我们为了进一步减少数据库的压力,商品详情页采用了FreeMarker模板引擎技术,生成一个静态化页面。这样能减轻服务器的压力。当我们添加商品的时候,我们使用了一个消息中间件ActiveMQ发送消息。再创建MessageListener接口的实现类接收消息,取商品id。

根据商品id查询数据库,过得商品基本信息和商品描述,创建商品详情模板,指定下商品输出文件路径,生成静态文件,用nginx作为http服务器来访问静态页面。如果一台服务器不够,可以采用分布式扩容,我们还可以使用nginx来反向代理,负载均衡。

[hide=d1000]我再讲下购物车模块,当客户查看商品详情后,想购买了,就会加入购物车。为了减少用户流失量,在不登陆的情况下,可以把购物车信息写入cookie,这样用户体验好。读写cookie我们封装了CookieUtils工具类来实现。加入时先判断商品id在商品列表中是否存在。如果存在,商品数量相加。不存在,根据商品id查询商品信息,把商品添加到购车列表,把购车商品列表写入cookie。购物车列表转换成json数据。需要对数据进行编码。Cookie的有效期:保存7天。展示购物车列表时,从cookie中取商品列表把,商品列表传递给页面。修改商品数量时,页面发送一个异步请求,后台接收两个参数商品id和数量,再从cookie中取商品列表,遍历商品列表找到对应商品,更新商品数量,把商品列表写入cookie。这里有个问题时,数量有上线,当库存不足时,我们是在提交订单时,去查询数据库,当库存不足时,给用户提醒。[/hide]

最后我讲一下订单模块,购物车完成后要生成订单,订单中有配送信息,因此我们必须要求用户登录。我们使用的是单点登录,使用redis模拟Session,实现Session的统一管理,这样用户只需要登录一次就可以访问所有相互信任的应用。用户登录成功后,生成token,相当key, 把用户对象转换成json当value存入redis,模拟Session的过期时间。一般半个小时。最后把token写入cookie中(Cookie需要跨域)。

当点击生成订单时,先配置一个springmvc的拦截器,实现接口HandlerInterceptor,从cookie中取token,没有token,需要跳转到登录页面;有token,调用sso系统的服务,根据token查询用户信息,如果查不到用户信息,说明用户登录已经过期。需要跳转到登录页面,查询到用户信息,放行。

放行后,提交购物车OrderInfo,接收表单的数据,不全一些数据,生成订单id,向订单表插入数据。向订单明细表插入数据,向订单物流表插入数据。返回逻辑视图展示订单生成成功。在调用第三方接口,完成订单支付。


作者: silenceandxh    时间: 2017-7-21 14:44
谢谢老师分享哦
作者: silenceandxh    时间: 2017-7-21 14:45
谢谢老师分享,很实用
作者: 1234567890.    时间: 2017-7-21 17:42
....
121212312
作者: 1234567890.    时间: 2017-7-21 20:00
32132132132132132
作者: bingningfl    时间: 2017-7-23 15:43
常得到v
作者: 黑马^123    时间: 2017-7-24 17:00
gfnddftdtdtjjt
作者: →_→←_←    时间: 2017-7-24 17:03
干货,学习ing......
作者: tj973418456    时间: 2017-7-24 17:43
正在找工作中,急需学习学习
作者: ewwqe    时间: 2017-7-27 18:02
谢谢分享
作者: sammytsm    时间: 2017-7-27 21:46
感谢分享!
作者: sammytsm    时间: 2017-7-27 21:47
感谢分享!最近刚好在面试
作者: 白色焰火    时间: 2017-7-27 22:12
aaaaaaaaaaaaaaaaaaa
作者: 風中雨来    时间: 2017-7-27 23:10
hhhh
作者: 张科举    时间: 2017-7-29 17:35
好人一生平安!!!!
作者: KazuGin    时间: 2017-7-31 14:06
66666666666
作者: a151605    时间: 2017-7-31 19:59
歇息分享
作者: 王某人    时间: 2017-8-10 17:48
没事就来看看论坛
作者: wangyupeng123    时间: 2017-8-11 18:06
路过         
作者: 炼狱影杀阵    时间: 2017-8-11 22:54
我来看一看
作者: iamego    时间: 2017-8-18 21:49
66666666666666666

作者: blue@sky    时间: 2017-8-20 11:43
如何讲项目
作者: cwfyxr20110202    时间: 2017-8-20 15:18
jhsdbjhbjd
作者: zjc11    时间: 2017-8-20 18:54
感谢分享
作者: 黑马程序员.    时间: 2017-8-21 20:08
哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈
作者: 970617703    时间: 2017-8-22 00:34
111111111111
作者: IT路上的老男孩    时间: 2017-8-22 09:48
好人一生平安
作者: zouyoukai    时间: 2017-8-22 17:56
感谢老师分享!!
作者: zhongqiuoo    时间: 2017-8-23 13:57
   谢谢分享
作者: chr906    时间: 2017-8-23 16:19
谢谢分享....
作者: Daniel92    时间: 2017-8-26 19:50
很好,收藏
作者: sherlockLI    时间: 2017-8-26 19:51
哇哇哇太多好东西了收了,谢谢帮主
作者: Coollaughing    时间: 2017-8-26 19:57
dddddvdvdv
作者: fzlman    时间: 2017-8-26 22:05
武汉校区】面试的时候如何进行项目讲解?
作者: abcd106    时间: 2017-8-28 22:43
如果用户一直向购物车添加商品怎么办?并且他添加一次你查询一次数据库?
作者: 柠檬de微笑    时间: 2017-8-30 18:29
111111111111111
作者: 榕树长枫叶    时间: 2017-8-31 14:26
学习 唯有学习
作者: dfkew3422q    时间: 2017-9-4 12:44
ojuioooooooooooooooooo
作者: j_3_20    时间: 2017-9-4 13:53
很好,学习一个

作者: 大博主    时间: 2017-9-4 15:36
学习下经验
作者: 安易King    时间: 2017-9-4 19:06
感觉自己做的项目不入流,介绍会很难
作者: SinceMayday    时间: 2017-9-4 21:06
谢谢楼主,现在正处于找工作的时期。
作者: 约脑之惑    时间: 2017-9-6 12:55
我想学习java。。。。
作者: future。    时间: 2017-9-6 22:02
很好的 东西
作者: zbr878458173    时间: 2017-9-7 17:14
很好 收藏了。。。。
作者: 1007490567    时间: 2017-9-8 23:51
学习学习学习学学
作者: 鱼掌和熊    时间: 2017-9-9 14:50

干货,学习 ing......
作者: weekplus    时间: 2017-9-9 15:17

谢谢老师分享,很实用
作者: w1550124    时间: 2017-9-10 12:10
1234561234567
作者: 糖做的老虎    时间: 2017-9-10 12:22
   学习Java,想要高薪就业,有此贴,够了!!!
作者: 玄夜无双    时间: 2017-9-10 14:05
厉害学习学习 搞了好久项目还是不会
作者: jerry2017    时间: 2017-9-10 23:35
好老师,不错
作者: wyangwo    时间: 2017-9-14 17:34
看看,学习。。。
作者: Dylans    时间: 2017-9-15 14:49
感谢分享
作者: andy118    时间: 2017-9-15 18:50
谢谢分享。。。
作者: zhoulan    时间: 2017-9-18 18:46
6666666666666666666666666
作者: 皮皮丶    时间: 2017-9-18 20:27
跟我大学网站建模课的结业介绍一样
作者: shiter2013    时间: 2017-9-18 20:43
把做过的项目说出来,good!
作者: tb7962745    时间: 2017-9-19 01:01
非常不错
作者: zhangqujiang    时间: 2017-9-22 10:16
很有用呀
作者: 根号8    时间: 2017-9-22 13:10
hhhhhhhhhhhhhh
作者: xiong945    时间: 2017-9-24 21:58
感谢分享
作者: jaryjun    时间: 2017-9-25 10:45
谢谢老师分享
作者: qq986945193    时间: 2017-9-25 11:51
66666666666666
作者: 踏歌    时间: 2017-10-2 08:19
谢谢 膜拜膜拜
作者: mdm20083143    时间: 2017-10-2 14:34
666666666666666666666
作者: tbfla    时间: 2017-10-3 13:02
很不错,哈哈
作者: 834171510    时间: 2017-10-3 14:36
很给力呵呵
作者: 晴天。    时间: 2017-10-9 19:09
芙丽芳丝的快捷方式积分可视对讲付了款
作者: xgwhsgws    时间: 2017-10-9 21:27
很有用,值得学习,感谢楼主分享
作者: Mr.da    时间: 2017-10-9 23:17
6666666666666
作者: 20129827    时间: 2017-10-10 18:37
感谢分享
作者: 萧萧兮    时间: 2017-10-12 00:44
我来看一看
作者: 技术男    时间: 2017-10-17 10:26
双击666666666666666666
作者: zgb296    时间: 2017-10-17 10:53

谢谢分享
作者: 自然醒199010    时间: 2017-10-17 11:54
看看这是什么内容啊!
作者: solarwind    时间: 2017-10-17 14:45
看看学习学习

作者: 呆槑呆!!    时间: 2017-10-17 18:47
谢谢老师的分享,很实用
作者: 初学者0104    时间: 2017-10-20 20:05
这个也可以
作者: hhhhhhhhhhhh    时间: 2017-10-20 22:16
555555555555555555555555555
作者: zhs966877    时间: 2017-10-20 22:50
llllllllllllllllllllllllll
作者: 徐磊    时间: 2017-10-21 15:16
ttttttfdsfdsfdsf
作者: iyi    时间: 2017-10-21 16:23
谢谢 总结的很好的 思考的问题
作者: 不败娜美    时间: 2017-10-23 11:38
6666666666666666666666
作者: zhaojiaxing    时间: 2017-10-23 14:32
sssssssssssssssssssssssssssssssssssssss
作者: jccccc    时间: 2017-10-24 15:42
我问他我去跳舞
作者: YourName    时间: 2017-10-24 18:44
666666666666

作者: 彭豆豆    时间: 2017-10-24 20:54
1111111111
作者: 易先森    时间: 2017-10-26 17:12
呼呼哈哈或或或或
作者: FamilyGlory    时间: 2017-10-26 20:45
啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊
作者: 周志鹏是神吧    时间: 2017-10-27 23:29
66666666666666
作者: LIUDEHUA    时间: 2017-10-28 14:47
棒!棒棒!棒棒棒!棒棒棒棒!
作者: nyx    时间: 2017-11-1 00:39
干货满满
作者: zgb296    时间: 2017-11-1 08:20

感谢分享
作者: shadow16    时间: 2017-11-1 14:00
看看...........
作者: chc2525775    时间: 2017-11-8 04:07
看看 好奇有些什么 学习学习
作者: level    时间: 2017-11-8 06:43
非常好,讲得非常不错,学习到了
作者: 浮生光影    时间: 2017-11-8 19:55
啊啊啊啊
作者: haohan345    时间: 2017-11-9 13:56
1111111111
作者: 米修P    时间: 2017-11-9 18:37
^ω^^ω^^ω^^ω^




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2