7-11 作业回答
来源:7-11 【总结与作业】关于广告数据索引的设计与实现的介绍及作业

mapper
2019-02-17
作业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回答
-
同学你好:
首先来说,非常感谢你的回答!给出的答案也非常的精彩,非常好!下面,我来说说我的一些想法:
问题一:由于存在线程安全的问题,所以,不可以使用 HashMap、HashSet 替换。你给出的答案是正确的。
问题二:关于索引的改造,其实是有优化的地方的。例如,当前的地域索引,只能支持省市都提供的情况,但是,对于单独提供省,或单独提供市是不可以的。
问题三:对的,DataTable 的目的就是为了避免多次注入带来的麻烦!
问题四:对的,广告数据如果在 JVM 中放不下了,可以考虑基于内存的存储工具,例如 Redis 等。
欢迎来 QQ 群随时交流、讨论,也非常感谢同学的支持!
90
相似问题