发表于: 2017-07-05 00:15:24

2 983


今天完成的事情:

1、方案设计(内容管理的 banner 列表、行业大图、首页找职位找精英的、article增删改查)。测了使用金山云的文件上传接口。

在完成找职位的职位搜索页时遇到问题了。


2、职位搜索页的职位搜索方案设计:

需要返回的是,根据多条件筛选到的所有职位,以及它们对应的公司、公司标签。

也就是最终要返回一个json数组对象,封装了“职位信息、公司信息、公司的标签”。


原本的代码逻辑是这样的:

①通过 DynamicUtil 拼装参数map。getIdsByDynamicCondition() 得到职位id列表,通过getObjectByIds查出 职位列表。

②遍历职位列表,在遍历的循环内,取得公司id-->查出公司对象,公司id-->查出公司的标签,并用逗号拼接成String。

③在循环内,将每一次循环到的职位信息、公司信息、公司标签信息 用 键值对 存入 map,将map存入 list。

最终返回给页面,用json标签进行输出。


用postman 测了几回这个接口。

882ms,814ms,864ms, 852ms。总之都超过800毫秒了。明细能感觉到数据是延迟了一下下才返回的,不符合公司的规范吧。


原因是循环内多次有两次访问 DB 的东西 (查公司的,查公司标签的),一般网络情况下,如果一次查询就耗时20ms,那么只需10次就超过200ms了。


一个解决的办法:

通过 Service接口的 getObjectByIds() 方法,查询到职位列表,遍历取出其公司id装入一个list 成为 公司id列表 --> 查询到公司列表

一次性把所有公司标签读出来,依照标签的公司id属性 弄成 一个 

Map<Long, List<CompanyTag>>

这个map装满后遍历它,遍历每个id对应的标签类,用逗号拼接标签。

放进另一个map,Map<Long, String>。


最后遍历职位列表,依次放入公司信息,和根据公司id 取到的标签字符串。




明天计划的事情:

1、后台管理的几个story 的方案设计。


遇到的问题:

1、思路错乱了, 我想通过 companyTagService.getObjectByIds(Ids) 方法去查到所有的公司标签,但入参用的却是 companyIds。还纳闷怎么查到的标签列表是null。

2、听说 DAL 框架自带有记录方法访问耗时的方法,我还没找到。

收获:

1、明白了什么是“循环内不能有访问DB”。


返回列表 返回列表
评论

    分享到