201903-3 损坏的RAID5 100分 171ms

点击前往试题目录:https://blog.csdn.net/best335/article/details/99550556
在这里插入图片描述
这道题说难不难,说简单也不简单,这个逻辑算是初中的吧,几个关系推算。
要非常非常有耐心,只要这几个关系找准了,绝对满分。
如果你学过操作系统这道题会更简单。

#include<iostream>
#include<unordered_map>
#include<sstream>
#include<iomanip>
using namespace std;
unsigned int n,s,l,m,N,M;
string S[1000]{};
stringstream ss;
unordered_map<unsigned int,unsigned int> V;
const unsigned int& getNum(const unsigned int& b, const unsigned int& d, const unsigned int& k){
//将绝对块号为b的在d号磁盘的k深度的16进制字符串数字转换为10进制无符号数字  每8个字符为一个深度
	if(V.find(b)!=V.end()) return V.find(b)->second;
	string s=S[d].substr(k*8,8);
	ss.str(""),ss.clear();
	ss<<hex<<"0x"<<s;
	unsigned int l;
	ss>>l;
	return V[b]=l;
}
void procBlock(const int& bp){查找块号为bp的磁盘内容
	if(bp<M){//如果在读取范围
		int b=bp/N/s;//之前总共的'单位'条带数
		int P=N-b%n;//校验位所在的磁盘号 
		int k=bp%s;//校验位及该块所在磁盘的相对块号
		int d=(bp%(N*s)/s+P+1)%n;//该块所在的磁盘号
		int _k=b*s+k;//该条带的深度 
		int _b=b*n*s+k*n;//该深度前的块数
		int _P=_b+P;//校验位所在的绝对块号
		int _d=_b+d;//该块所在的绝对块号 
//		cout<<setw(3)<<dec<<bp<<" "<<setw(3)<<b<<" "<<P<<" "<<k<<" "<<d<<" "<<setw(3)<<_P<<" "<<setw(3)<<_d<<" "<<setw(3)<<_k<<" ";//测试
		if(S[d].empty()){//如果该块所在的磁盘缺失
			if(l<N) cout<<"-"<<endl;//不能推导出来
			else{
				unsigned int l=getNum(_P,P,_k);
				for(int i=0;i<n;++i) if(i!=P&&i!=d) l^=getNum(i+_b,i,_k);
				cout<<setiosflags(ios::uppercase)<<hex<<setw(8)<<l<<endl;
			}
		}
		else{//输出该块内容
			for(int i=_k*8,ni=i+8;i<ni;++i) cout<<S[d][i]; cout<<endl;
		}
	}
	else
		cout<<"-"<<endl;
}
//#include<fstream> 
int main(){
//	ifstream cin("out.txt");//测试
	std::ios_base::sync_with_stdio(false),cin.tie(NULL);//加速输入
	cin>>n>>s>>l,N=n-1,cout.fill('0');
	for(int i=0;i<l;++i)cin>>M,cin>>S[M];
	cin>>m,M=(S[M].size()/8)*N;//M是可以读取的最大块号+1
//	cout<<dec<<M<<endl; cout<<" i "<<"  b  "<<"P "<<"k "<<"d "<<"_P "<<" _d "<<" _k "<<endl;for(int i=0,a;i<m;++i) procBlock(i);//测试
	for(int i=0,a;i<m;++i) cin>>a,procBlock(a);//处理
	return 0;
}
/*
2 1 2
0 0001020304050607010111213141516172021222324252627
1 0001020304050607010111213141516172021222324252627
2
0
1

3 2 2
0 000102030405060710111213141516172021222324252627000102030405060710111213141516172021222324252627000102030405060710111213141516172021222324252627000102030405060710111213141516172021222324252627000102030405060710111213141516172021222324252627000102030405060710111213141516172021222324252627000102030405060710111213141516172021222324252627000102030405060710111213141516172021222324252627000102030405060710111213141516172021222324252627000102030405060710111213141516172021222324252627
1 A0A1A2A3A4A5A6A7B0B1B2B3B4B5B6B7C0C1C2C3C4C5C6C7A0A1A2A3A4A5A6A7B0B1B2B3B4B5B6B7C0C1C2C3C4C5C6C7A0A1A2A3A4A5A6A7B0B1B2B3B4B5B6B7C0C1C2C3C4C5C6C7A0A1A2A3A4A5A6A7B0B1B2B3B4B5B6B7C0C1C2C3C4C5C6C7A0A1A2A3A4A5A6A7B0B1B2B3B4B5B6B7C0C1C2C3C4C5C6C7A0A1A2A3A4A5A6A7B0B1B2B3B4B5B6B7C0C1C2C3C4C5C6C7A0A1A2A3A4A5A6A7B0B1B2B3B4B5B6B7C0C1C2C3C4C5C6C7A0A1A2A3A4A5A6A7B0B1B2B3B4B5B6B7C0C1C2C3C4C5C6C7A0A1A2A3A4A5A6A7B0B1B2B3B4B5B6B7C0C1C2C3C4C5C6C7A0A1A2A3A4A5A6A7B0B1B2B3B4B5B6B7C0C1C2C3C4C5C6C7
2
2
5
*/
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
CSP(Content Security Policy)是HTML5中的一个安全机制,用于防止跨站脚本攻击(XSS)等安全威胁。它通过指定允许加载的资源和执行的脚本,来限制页面中的内容来源,从而减少潜在的安全风险。CSP 的基本原理是通过服务器端发送一个 HTTP 头部,其中包含了一个策略指令集,浏览器在接收到这个 HTTP 头部后,会根据指令集来限制页面的行为。 关于RAID5,它是一种磁盘阵列冗余独立磁盘(RAID)级别,它采用条带化(striping)和布式奇偶校验(distributed parity)的方式,提供了数据冗余和性能提升。在一个RAID5阵列中,每个条带中包含了数据块和一个校验块,校验块是其他数据块的异或和。RAID5可以容忍一块硬盘的故障而不会丢失数据。 如果CSP的指令集损坏,可能会导致浏览器无法正确执行安全策略,从而增加网页受到XSS攻击的风险。而RAID5的故障指的是其中一块硬盘出现问题,导致整个阵列的数据完整性受到威胁。当一块硬盘损坏时,RAID5可以通过奇偶校验来恢复数据并保持完整性。但是,如果多于一块硬盘同时损坏RAID5将无法恢复数据。因此,当RAID5中多块硬盘损坏时,数据可能会丢失或无法访问。 综上所述,CSP的损坏可能会增加网页受到XSS攻击的风险,而RAID5中多块硬盘的损坏会导致数据可能丢失或无法访问。因此,我们需要定期备份重要数据,并确保CSP的指令集正确配置,以提高网络安全性和数据的保护。<span class="em">1</span><span class="em">2</span> #### 引用[.reference_title] - *1* [HTML5安全介绍之内容安全策略(CSP)简介](https://download.csdn.net/download/weixin_38673235/12892668)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [CSP 201903-3 损坏RAID5](https://blog.csdn.net/euzmin/article/details/98610359)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值