最近的思考与选择
f2790461a6fef943f99cab532869b218d23edfd91720dd2ee5169f698afd7ed5d186964e503f76d362795d40fe77c671041b35f0bff5115c5ff0db73b20465e1d94a04549feac0c6f478df51af62f1ee7500cc69e63906cec5f0e7eddc540c2055c102c123471874885e421cabc26d0465a3a47bdd1662ec3fc6cb4ea7be2f9fba8eb13eec07b5391d1cda8d4e46b2f3bb32c4ca2632c32cd4616b5e2ea66b2dfd628228d0659fcef329f71fb7476a7edbdd943178bb2e5f50cb1e005136acc51737d465f82ee312b1afa79904e6824d0dd4a1fe70163da4de7cea8af9ae052ace85345f7d665c6d10afb5472c56f97380ce44a29dd2e1fbd ...
HDFS Paper Reading
HDFS Paper Reading
我认为HDFS是一个更加通用的开源的GFS, 其架构和设计思路与GFS非常相似, 但是HDFS在实现上更加简单, 更加通用, 所以我会关注常见的问题和显著不同的地方.
HDFS写流程
客户端发送写请求, 通过RPC与NameNode建立通信, NameNode检查该用户是否有写权限, 以及写入的文件是否在HDFS对应的目录下重名, 如果这两者有任意一个不满足, 则直接报错, 如果两者都满足, 则授予客户端一个写入租约(lease)
Client根据文件的大小进行切分, 默认128M一块, 切分完成之后给NameNode发送请求第一个block块写入到哪些服务器上
NameNode收到请求之后, 根据网络拓扑和机架感知以及副本机制进行文件分配, 返回可用的DataNode的地址
客户端收到地址之后与服务器地址列表中的一个节点进行通信, 建立pipeline, Client->DN0->DN1->DN2
Client向DN0以packet(64kb)形式传输数据, 然后沿着pipeline传输, ack响应会沿着pipeline逆序 ...
GFS Paper Reading
GFS Paper Reading
架构(Architecture)
GFS采用单Master架构, 由master和chunkserver这两类服务器组成, master是主控节点, 而chunkserver是存储数据的节点, 其实就是Linux服务器. GFS使用Linux上的文件作为基础存储层, 通过命名空间+文件名来定义一个文件. 文件按每64M划分为一个chunk, 每个chunk都自己的唯一标识(chunk handle). 为了确保数据不会因为某一个chunkserver坏了就丢失了,每个chunk都会有三份副本(replica). 其中一份是主副本(primary), 两份是次副本(secondary), 当三份副本出现不一致的时候, 就以主副本为准. 有了三个副本,不仅可以防止因为各种原因丢数据, 还可以在有很多并发读取的时候, 分摊系统读取的压力
Master会存放三种元数据: 文件和chunk的命名空间信息, 文件名和chunk handle的映射关系(文件被拆分成了哪几个chunk), chunk handle和chunkserver的映射关系(chunk被存 ...
应用密码学与网络安全实验通关指南
应用密码学与网络安全实验通关指南
这是计科网络方向应用密码学与网络安全的随课实验, 占课程分数的20%. 第一次主要是介绍内容, 两周后的第二次实验主要是验收, 实验内容自己线下完成即可.
实验内容如下:
密码学及应用:熟悉云安全实验平台及环境,完成:
实验1(古典密码算法)――>练习一Caesar密码,
实验1(古典密码算法)――>练习二单表置换密码,
实验1(古典密码算法)――>练习三仿射密码
密码学及应用:
实验2(对称密码算法)――>练习一DES,
实验2(对称密码算法)――>练习二AES
密码学及应用:
实验3(非对称密码算法)――>练习一RSA,
实验4( Hash算法) ――>练习一MD5
密码学及应用:
实验5(密码应用)――>练习一文件安全传输
这个实验的目的是为了考察对于各个加密算法的流程的理解和掌握, 并不是要让你真的手搓这些算法(当然能手搓也是一种能力). 最后验收只要将结果展示出来并且能解释清楚(需要完整讲述算法流程, 主要验收DES, AES, RSA, MD5, 以及文件安全传输)
DES
DES 算 ...
初学者眼中的Go语言
初学者眼中的Go语言
最近花了一些时间过了一遍Go编程语言中的Go语言之旅, 也算是入门了, 下面谈谈我认知的Go语言
类型
不像绝大数语言,类型定义在了变量名之前,Go中类型在变量名之后,如下:
1234567func add(x int, y int) int { return x + y}//等效于func add(x, y int) int { return x + y}
官方也在博客Go’s Declaration Syntax中给出了理由, 但可能是由于惯性, 我仍然不是很喜欢这种设计🤥
关于变量初始化:
123var i, j int = 1, 2//等效于var i, j = 1, 2
幸亏变量初始化时类型声明可以忽略, 不然真的看上去很怪, 忽略后一看, 这不是JavaScript吗🥰
Go没有while
绝大多数编程语言都是有while循环的, 虽然while循环的本质还是for循环, Go说: for是Go中的while
1234567func main() { sum := 1 for sum < ...
美赛经验分享
美赛经验分享
前一段时间美赛出成绩了, 侥幸得了个M, 虽然不是什么大奖, 但也有一些浅薄的经验可以分享(主建模和画图)
组队
其实组队是决定你数模成绩的最重要的一步,和认真负责的队友组队会让你的成功几率上升一大截. 首先我推荐找一个靠谱的熟人, 再让他找一个.这样就是比较好的方式, 或者找两个熟人也行, 不太推荐去各种墙上找人,一般找到的都不太靠谱. 组完队之后, 在比赛开始前, 我们学校一般会有训练(其实就是做往年题), 在这个时候你应该能大致判断队友靠不靠谱了, 如果他天天有事不参加模拟训练或者说不积极不干活, 建议和另一个队友商量把他踢出去, 或者说你觉得另外两个队友都不靠谱, 那就退出重新寻找队伍. 熟人组队的一大劣势就是想踢人很难, 我国是个人情社会(bushi), 所以一开始就要认真思考.
准备
首先要确定好1~2个主攻的题型,然后队内三个人的分工要明确, 特别是对于低年级第一次参赛的选手, 分工不明确的话学完很难.
从建模的角度来说,提升最快的就是看优秀论文,O/F的都可以看看,提取应对某一类问题通用的解决方案和他们论文中的闪光点.积累到自己的笔记上, 比赛时可以快速 ...