请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

7-11 作业回答

作业1:索引数据的存储与操作使用的是ConcurrentHashMap、ConcurrentSkipListSet,能否使用 HashMap、HashSet 替换呢 ?为什么 ?

答: 不能, 用HashMap和HashSet在高并发的情况下会有线程安全问题,相比之下ConcurrentHashMap和ConcurrentSkipListSet是线程安全的类

作业2:你可以对推广单元限制维度(关键词、地域、兴趣)的索引进行改造吗 ?怎么改造 (考虑其他的数据结构)?

答: 感觉目前索引的建立方式就挺好的…

作业3:DataTable.java 的功能是什么 ?

答: 主要是在使用bean的时候,不需要繁琐的注入吧,正常情况下,都需要Autowired或者Resource注入。如果使用到的bean太多的话,也是个苦力活。所以说DataTable.java通过获取spring上下文,里面的of方法实现了往dataTableMap中存放相应的bean,再加上条件判断也不需要频繁的getBean(),这样方便我们使用,只需要注入dataTable,调用of方法就可以取到相应的bean.

作业4:如果广告数据太多,内存中放不下,你会怎么做 ?

答: 那就存缓存中吧,redis和memcached都行,这两个缓存好像也是基于内存的,速度应该挺快的。广告数据一般变化的情况不多,检索较多,感觉存在缓存中还挺合适的。不知道理解的对不对 .

正在回答

1回答

张勤一 2019-02-17 22:36:04

同学你好:

    首先来说,非常感谢你的回答!给出的答案也非常的精彩,非常好!下面,我来说说我的一些想法:

    问题一:由于存在线程安全的问题,所以,不可以使用 HashMap、HashSet 替换。你给出的答案是正确的。

    问题二:关于索引的改造,其实是有优化的地方的。例如,当前的地域索引,只能支持省市都提供的情况,但是,对于单独提供省,或单独提供市是不可以的。

    问题三:对的,DataTable 的目的就是为了避免多次注入带来的麻烦!

    问题四:对的,广告数据如果在 JVM 中放不下了,可以考虑基于内存的存储工具,例如 Redis 等。


    欢迎来 QQ 群随时交流、讨论,也非常感谢同学的支持! 

9 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信