java编程:⼀个⽂件中存储了本站点下各路径被访问的次数,请编程找出被访问次数最多的10个路径

news2024/11/28 4:30:26

题目
编程题:⼀个⽂件(url_path_statistics.txt)中存储了本站点下各路径被访问的次数

  1. 请编程找出被访问次数最多的10个路径
  2. 时间复杂是多少,是否可以优化(假设路径数量为n)
  3. 如果路径访问次数⽂件很⼤(GB级别),如何优化内存?
  4. 【可选】如何从Nginx原始⽇志⽇志(access.log,TB级别)中⽣成路径访问⽂件
    (url_path_statistics.txt,GB级别),需要考虑优化内存(可以只写思路)
    ⽂件样本示例:url_path_statistics.txt
    在这里插入图片描述

第一题答案

1.1 文件内容

/url/path1:185
/url/path2:198
/url/path3:704
/url/path4:137
/url/path5:909
/url/path6:68
/url/path7:51
/url/path8:450
/url/path9:275
/url/path10:605
/url/path11:782
/url/path11:182
/url/path11:82
/url/path11:999
/url/path11:55
/url/path11:1042

1.2 编码实现

public static void main(String[] args) {
    //文件路径
    String fileName="D:\\test\\url_path_statistics.txt";
    try (BufferedReader reader = new BufferedReader(new FileReader(fileName))) {
        String line;
        //字典存储文件中的路径和访问次数信息
        TreeMap<Integer,Map<String,Integer>> resultMap=new TreeMap<>();
        while ((line = reader.readLine()) != null) {
            if(StringUtils.isNotBlank(line)){
                String[] split = line.split(":");
                if(split!=null){
                    int key = Integer.parseInt(split[1]);
                    Map<String,Integer> tempMap=new HashMap<>();
                    tempMap.put(split[0],key);
                    resultMap.put(key,tempMap);
                }
            }
        }
        //map倒叙
        NavigableMap<Integer, Map<String, Integer>> sortedMap = resultMap.descendingMap();
        AtomicInteger i= new AtomicInteger();
        //取前10个
        sortedMap.forEach((k,v)->{
            if(i.get() <10){
                System.out.println(v);
                i.set(i.get() + 1);
            }
        });
    } catch (Exception e) {
        e.printStackTrace();
    }
}

运行结果:
在这里插入图片描述

第二题答案

读取文件并将数据存储到字典中的时间复杂度为O(n),其中n为路径数量。 对字典进行排序的时间复杂度为O(nlogn)。 总的时间复杂度为O(nlogn)。是否可以优化取决于具体的情况,如果数据规模很大,可以考虑优化排序算法或者采用其他数据结构。

第三题答案

如果路径访问次数文件很大(GB级别),可采用缓冲池的形式进行数据的读取,可以避免内存飙高,以及OOM的问题。
还可以进行分块读取:将文件分成多个小块,逐块读取并处理,减少同时加载大文件带来的内存压力。
还可以采用基于磁盘的外部排序:将文件划分为多个较小的临时文件,对每个临时文件进行排序,然后合并排序结果。

第四题答案

逐行读取Nginx原始日志文件。 解析每一行日志,提取出路径信息。 统计每个路径被访问的次数,可以使用字典结构存储路径和对应的访问次数。 将统计结果写入文件中。为了优化内存,可以使用分块写入,避免一次性将所有数据存储在内存中。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1259343.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

深度学习中小知识点系列(二) 解读仿射变换和透视变换

综述 所有复杂的东西&#xff0c;都是由基本的组成的。所以我们需要先了解一下基础的变换有哪些&#xff1a; 平移 我们对矩形&#xff08;图像&#xff09;平移&#xff0c;需要怎么做&#xff1f; 对每一个像素点坐标平移。可以让每一个像素点的x,y坐标都加一个变量。 矩…

我叫:归并排序【JAVA】

1.认识我一下 1.归并排序(MERGE-SORT)利用归并的思想实现的排序方法,该算法采用经典的分治策略2.分治法将问题分成一些小的问题然后递归求解,而治的阶段则将分的阶段得到的各答案"修补"在一起&#xff0c;即分而治之。 2.分合思想 3 分久必合 /*** 合并** param arr …

好用的6个AI写作工具推荐,热门AI写作软件有哪些?

人工智能的快速发展催生了许多创新的应用&#xff0c;其中之一就是AI写作软件。这些免费的AI写作软件通过借助先进的自然语言处理技术&#xff0c;可以帮助写作者和创作者提升创作效率。本文将为大家介绍七款免费的AI写作软件&#xff0c;它们功能强大且易于使用。 我们来看看O…

基于Springboot的墙绘产品展示交易平台(有报告),Javaee项目,springboot项目。

演示视频&#xff1a; 基于Springboot的墙绘产品展示交易平台&#xff08;有报告&#xff09;&#xff0c;Javaee项目&#xff0c;springboot项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff0…

YOLOv8优化策略:自适应改变核大小卷积AKConv,效果优于标准卷积核和DSConv |2023.11月最新成果

🚀🚀🚀本文改进: AKConv 中,通过新的坐标生成算法定义任意大小的卷积核的初始位置。 为了适应目标的变化,引入了偏移量来调整每个位置的样本形状。 此外,我们通过使用具有相同大小和不同初始采样形状的 AKConv 来探索神经网络的效果。 AKConv 通过不规则卷积运算完成…

pinyin4j 汉字转拼音包括——多音字

一、Maven 依赖 <dependency><groupId>com.belerweb</groupId><artifactId>pinyin4j</artifactId><version>2.5.1</version> </dependency> 二、通过多音字字典匹配 2.1&#xff0c;先看效果效果 输入&#xff1a;我在重庆…

入侵redis之准备---VMware上面安装部署centos7镜像系统【详细含云盘镜像】

入侵redis之准备—VMware上面安装部署centos7镜像系统【详细含云盘镜像 废话不多说直接开始 下载centos7镜像 网上有好多&#xff0c;但是我相信来看小编文章的基本上应该都有centos7的镜像了吧&#xff0c;毕竟咱们都是同一类人&#xff0c;哈哈不卖关子了&#xff0c;小编直…

nginx三种虚拟主机的配置(IP,端口,域名)

准备工作&#xff1a; [rootbogon ~]# mkdir -p /data/nginx{1..3} #-p是用于递归创建使用 [rootbogon ~]# echo "hello nginx1" > /data/nginx1/index.html [rootbogon ~]# echo "hello nginx2" > /data/nginx2/index.html [rootbogon ~]# echo &q…

注解方式优雅的实现Redisson分布式锁

1.前言 随着微服务的快速推进&#xff0c;分布式架构也得到蓬勃的发展&#xff0c;那么如何保证多进程之间的并发则成为需要考虑的问题。因为服务是分布式部署模式&#xff0c;本地锁Reentrantlock和Synchnorized就无法使用了&#xff0c;当然很多同学脱口而出的基于Redis的se…

大连大学2023年11月程序设计竞赛(同步赛)

B、爆wa种子!&#xff08;数学&#xff09; 一、题目要求 链接&#xff1a;登录—专业IT笔试面试备考平台_牛客网 来源&#xff1a;牛客网 爆wa种子发现了上次玩游戏时你和妙wa种子的py交易&#xff0c;所以他要求这次玩游戏你来当爆wa种子的枪手&#xff0c;为他写个程序…

Selenium 连接到现有的 Google Chrome 示例

python 3.7 selenium 3.14.1 urllib3 1.26.8 Google Chrome 119.0.6045.160 (64位) chromedriver.exe 119.0.6045.105(win32) 1 Google Chrome 添加参数 "--remote-debugging-port9222" 2 测试效果(chromedriver.exe 要和 Google Chrome 版本…

day65

今日回顾内容 web应用 HTTP协议 web应用 一、什么是web应用程序 Web应用程序是一种可以通过Web访问的应用程序&#xff0c;程序的最大好处是用户很容易访问应用程序&#xff0c;用户只需要有浏览器即可&#xff0c;不需要再安装其他软件 对于传统的应用软件来说&#xff0c;…

【备忘录】软件记录

Anaconda 虚拟环境 创建Python环境 Spyder Python程序编辑 Jupyter Notebook 交互式开发环境

【虹科干货】ntopng如何将漏洞扫描与流量监控相结合,以提高网络安全性

ntopng为人所知的“身份”是被动流量监控。然而&#xff0c;如今的ntopng6.0也进化出主动监控功能来&#xff0c;漏洞扫描功能便是其中一个。那么漏洞扫描功能是什么&#xff1f;其独特之处是什么&#xff1f;用户该如何使用&#xff1f; 新的漏洞扫描和CVE支持&#xff0c;可…

TUP通信

一&#xff0c;概括 二&#xff0c;常用方法 三&#xff0c; 实现步骤&#xff08;一发一收&#xff09; 四&#xff0c;案例&#xff08;一接一收&#xff09; &#xff08;1&#xff09;&#xff0c;客户端 &#xff08;2&#xff09;&#xff0c;服务端 &#xff08;3&…

老板说我能力不行,怎么办?

大家好&#xff0c;我是鱼皮&#xff0c;今天分享一个很现实的职场问题 —— 如果老板说你的能力不行&#xff0c;怎么办&#xff1f; 该问题源于 编程导航星球 内的鱼友提问&#xff0c;原问题如下&#xff1a; 鱼友提问 &#x1f41f;&#xff0c;我是 23 届毕业生&#x…

探究Kafka原理-6.CAP理论实践

&#x1f44f;作者简介&#xff1a;大家好&#xff0c;我是爱吃芝士的土豆倪&#xff0c;24届校招生Java选手&#xff0c;很高兴认识大家&#x1f4d5;系列专栏&#xff1a;Spring源码、JUC源码、Kafka原理&#x1f525;如果感觉博主的文章还不错的话&#xff0c;请&#x1f44…

华为智能手表独立导航,一呼即应轻松畅行

PetalMaps 手表独立导航&#xff0c;一声令下唤醒导航&#xff0c;打造了智慧的语音交互唤醒体验功能。导航时&#xff0c;语音播报、变道震动提醒功能&#xff0c;让您尽情体验腕上导航乐趣&#xff0c;同时又能安全抵达目的地。

如何在外远程访问本地NAS威联通QNAP?

&#x1f308;个人主页&#xff1a;聆风吟 &#x1f525;系列专栏&#xff1a;数据结构、Cpolar杂谈 &#x1f516;少年有梦不应止于心动&#xff0c;更要付诸行动。 文章目录 &#x1f4cb;前言一. 威联通安装cpolar内网穿透二. 内网穿透2.1 创建隧道2.2 测试公网远程访问 三.…

51单片机的智能窗帘系统【含proteus仿真+程序+报告+原理图】

1、主要功能 该系统由AT89C51单片机LCD1602显示模块DS18B20温度模块DS1302时间模块光敏传感器步进电机蓝牙等模块构成。适用于智能窗帘、智能门窗家具等相似项目。 可实现基本功能: 版本一&#xff1a; 1、LCD1602实时显示北京时间、环境温度、光照强度、手动/自动控制等信息…