暑假周总结7
本周主要完成热词项目的数据可视化功能,其中包括词云和热词关系图,同时对前面已经完成的后端接口、数据库以及 Redis 缓存进行了整理和优化。到这一周为止,项目的大部分核心功能已经能够运行,因此工作重点逐渐从“把功能做出来”转变为“让功能连接起来并尽量稳定”。
首先完成了热词词云。系统统计最近一段时间内不同热词出现的次数以及对应文章数量,然后计算一个热度值。前端获得热词名称和热度后,通过词云组件进行展示。出现频率较高的词字号更大,用户可以比较直观地看到近期信息技术领域中讨论较多的内容。
刚开始词云只根据词语出现次数计算热度,但测试后发现一些词在同一篇长文章中反复出现很多次,容易造成热度虚高。因此我修改了计算方式,不再只考虑词频,同时加入“包含该词的文章数量”和“文章发布时间”两个因素。近期文章可以获得稍高的权重,这样得到的热门词更接近“近期热词”。
本周最困难的功能是热词关系图。课程要求使用关系图表示热词之间的紧密程度,因此需要先定义“紧密程度”。我目前采用的方法比较直观:如果两个热词经常同时出现在同一篇文章中,就认为它们之间关系比较紧密。例如“大模型”和“人工智能”经常同时出现,两者之间就建立一条连接;如果共同出现次数很多,则连接权重更高。
后端首先统计热词两两之间的共现次数,过滤掉低于阈值的组合,然后返回节点和边数据。前端使用 ECharts Graph 展示关系网络。刚开始没有限制节点数量,结果几十个词全部显示在一个图中,画面非常混乱。后来只选择热度排名靠前的一部分热词,并设置最低共现次数,关系图的可读性明显提高。
数据库方面,本周重新检查了索引。对文章发布时间、热词名称以及部分关联字段增加了索引,并使用 EXPLAIN 简单观察 SQL 查询执行情况。虽然项目数据量还不大,但这个过程也算把之前学习的 MySQL 索引知识应用到了实际项目。
Redis 本周主要应用在热门词排行榜和热词详情缓存中。热门词使用 ZSet 保存,score 为计算后的热度值。这样获取前十名热词时可以直接使用 Redis 排序结构,而不需要每次重新执行复杂 SQL。
本周总学习时间约 27 小时,其中项目代码编写约 14 小时,ECharts 和数据可视化学习约 4 小时,关系算法设计约 3 小时,MySQL 和 Redis 优化约 3 小时,排查前后端数据和 SQL 问题约 3 小时。
后端就业路线方面,本周学习了 JVM 和 Java 集合相关知识,重点复习 HashMap、ConcurrentHashMap、ArrayList、LinkedList,以及 JVM 内存区域和垃圾回收基本概念。现在越来越感觉到,做项目和准备后端面试其实可以同时进行。项目中用到一个知识点,再去深入学习原理,比单独背面试题效果更好。
下周是暑假计划的最后一周,准备完成 Word 报告自动导出功能,对整个项目进行测试和整理,同时整理项目截图、数据库结构、流程图以及最终实验报告,并回顾八周以来的学习内容。

浙公网安备 33010602011771号