沈阳工业大学项目实践之一

  1. 个人负责的任务库

小组仅有自己一人,所以负责项目过程中的全部工作,包括程序设计、编写代码、PPT制作和讲解等。

完成的项目要求有:统计访问记录总数,统计每天的访问量,统计访问高峰时间段,统计访问量前100的url(由于数据集中日志的访问日期在同一天,无法完成统计访问量最大的3天功能)。

  1. 遇到的问题及解决思路

(1)将.gz格式压缩包解压为.txt文件功能的实现。

解决思路:使用GZIPInputStream类的read()方法和FileOutputStream类的write()方法。
  1. 从数据中提取出目标字段。
解决思路:首先使用BufferedReader类中的readLine()方法,按行读取文本文档。再使用String类中的spilt()和substring()方法截取字符串。
(3)将时间戳转化为日期格式。
解决思路:使用SimpleDateFormat类中的format(Object obj)方法。
(4)统计各个日期、URL等字段在整体数据中出现的次数。
解决思路:
统计过程中使用了HashMap类中的方法:getOrDefault()和put()。
核心代码:HashMap<> map = new HashMap();
          map.put(target, getOrDefault(target, 0) + 1);
通过此过程,可将目标字符串(key)和出现次数(value)存储在HashMa中。具体工作过程为:统计各字符在字符串中出现次数时,对字符串从头到尾每个字符都执行一次上述代码。执行代码时首先执行getOrDefault()方法,当每个字符在字符串中首次出现时,HashMap中没有以该字符作为键的键值对,方法将返回default值即0。但由于方法执行后进行了+1操作,实际通过put()方法存入的键值对的值是1,该字符下次出现时getOrDefault()方法的返回值为1,实际存入的键值对的值是2(重复存入某键的键值对值将被覆盖),以次类推。
(5)对存入HashMap中的键值对根据值进行从大到小的排序。
解决思路:使用Map.entrySet()方法,返回的是一个Set<Map.Entry<K,V>>,Map.Entry是Map中的一个接口,他的用途是表示一个映射项(里面有Key和Value),Map.Entry里有相应的getKey和getValue方法。通过重写List中sort()方法的形参Comparator函数式接口中的唯一抽象方法compare(T o1, T o2),实现根据值的大小对每个键值对进行排序。
  1. 项目感受

通过这次项目,使我对大数据技术有了初步的认识,学习到了大数据技术的思想、目的、实现原理和重要性。

团队精神和协作能力是程序员应该具备的基本素质,在项目进行过程中也让我深深体会到了这一点。由于某些原因在分组时没有选择和其他同学组成一个小组,导致项目相关的全部工作都要由自己一个人来进行,但是个人力量始终是有限的,最后有部分任务没有能够很好的完成。这使我深深的体会到:一个成功软件的开发必须有一个拥有强大凝聚力的团队,团队精神和良好的协作会使我们做出优秀的软件。

刚开始进行项目开发工作的时候我面临很多问题,在开发过程中也遇到了一些棘手的问题,通过不断请教其他同学和查阅相关资料,我发现我所遇到棘手问题越来越少,从简单的功能开始逐渐完成了项目要求。在未来的几个月里我应该多锻炼自己的表达能力和交流能力,其次,对于一些技术了解的不够全面和广泛,还处于一个熟悉、认知的阶段。在未来的日子里我会给自己拟定一些目标和学习、提升路线,让自己的技术水平以及各方面不断的提高。在项目进行过程中我也体会到了坚持就是胜利,程序员必须有较强的适应能力和承受能力,需要不断的进行学习补充新的知识,只有不断的扩充、更新自己的知识才能较好应对技术的更新与发展。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

吴超沉思录

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值