Java计算FIFO的缓存未命中数
来源:互联网 发布:xin域名是什么意思 编辑:程序博客网 时间:2024/05/16 10:58
题目:在操作系统中,有一种虚拟内存管理技术是先进先出(FIFO)缓存,当所请求的存储页面不在缓存中或者缓存已满,应该从缓存中移除持续时间最长的页面,以腾出空间给更多请求的页面。如果缓存未满,那么可以简单的将请求的页面添加到缓存。给定的页面应在缓存中最多出现一次。当请求某个页面而在缓存中未找到此页面时发生缓存未命中。
给定缓存的最大尺寸和页面请求列表,计算缓存未命中数。
输入:
方法的输入包含两个参数 max_cache_size表示最大缓存尺寸的整数。数据在1-50之间。
paga_requests,表示len个页面的页面请求的整数列表。
输出:
返回一个表示缓存未命中的正整数。
测试用例:
输入:2 , [1,2,1,3,1,2]
输出:5
输入:3, [7.0.1.2.0.3.0.4.2.3.0.3.2.1.2.0]
输出:12
输入:2, [2,3,1,3,2,1,4,3,2]
输出:7
最开始的想法是用一个ArrayList做,但是通过率只有80%,也不知道是哪儿错了。
后来决定用队列做,其实应该用队列的,毕竟都是FIFO的机制。但是队列做的时候开始也只通过了90%,后来想到应该判断一下边界条件,所以就AC了。
public class ZTE_FIFO {public static void main(String[] args) {int a=2;int []arr={1,2,1,3,1,2};System.out.println(countCacheMiss(a,arr));}public static int countCacheMiss(int max_cache_size,int [] page_requests){Queue<Integer> queue=new LinkedList<Integer>();int num=0;for(int i=0;i<page_requests.length;i++){int key=page_requests[i];if(!queue.contains(key)){if(queue.size()<max_cache_size){queue.offer(key);}else{queue.poll();queue.offer(key);}num++;}}return num;}}
阅读全文
0 0
- Java计算FIFO的缓存未命中数
- 7.2 缓存的命中与未命中
- (读书笔记)Mysql 缓存命中计算
- 缓存命中
- .NET : 监控ASP.NET应用程序的缓存使用内存数变化和命中情况
- Java实现缓存(LRU,FIFO)
- Java实现缓存(LRU,FIFO)
- 简单的java缓存实现(LRU,LFU,FIFO)
- 关于cache命中与缺失的计算
- SAP最大命中数的修改
- 关于缓存调度算法FIFO、LRU、OPT这三种置换算法的缺页次数
- L1缓存命中
- 两种缓存数据的写法 fifo
- axi stream FIFO缓存的问题
- redis命中计算
- 关于FIFO深度的计算的讨论
- FPGA中对FIFO深度的计算
- java动态缓存成长小纪(二)——缓存算法的实现:LRU、LFU、FIFO
- python-十分钟入门
- C语言实现数制转换
- NPM简单设置
- 【Effection C++】读书笔记 条款07~条款08
- 第一天笔记 微营销实战技巧之微信、微博、微电商
- Java计算FIFO的缓存未命中数
- Qt5使用QPdfWriter方式写pdf文档
- python2.7 在windows 7 64bit上 桌面右下角弹出气泡
- 技术就是一个积累的过程
- 利用hibernate实现多条件组合查询的两种方式(2017年5月18日22:45:09)
- c++第五次上机实验
- 效率篇-定时任务管理系统,替代crontab
- C++作业6
- 最大子列和问题