分类
Note

Hadoop学习之内容概览

Background:第一次接触hadoop,之前总听说,也早早的列了学习计划,中途间间断断的看了官网文档,买了本书,太厚了,只看了封皮。终于今天有时间和兴趣,初窥门径,赶紧记下来。

Hadoop是什么?就是Apache Hadoop,一个大数据技术框架,Big Data一般指就是它了。

解决什么问题?这个也许是我最关系的问题了,其实官方文档里面没有讲太多,都是技术细节,这个就要搜索了。大概比较满意的答案是说,非结构化的数据,比如网页搜索引擎的检索结果,数据量很大的时候,用传统的数据库存储和处理就不太合适了,需要换个思路,就是Hadoop的思路,解决这类问题的。所以有时被贴上NoSQL的标签,其实和SQL没什么对立。参考:https://www.oreilly.com/ideas/what-is-hadoop

工作原理是啥?这个就是要研读官方文档了,也是最需要花时间的地方,这边就简单归纳一下吧。

大概分两块,基础软件包和开发接口。基础软件包是讲运行环境的搭建、安装、部署,是一个分布式文件系统,即HDFS,工作原理比较复杂,但技术核心也在这里。开发接口是讲怎么用的,Hadoop其实是面向技术人员的,是一个技术框架,所以落地是怎么用,就是MapReduce,这个接口需要运行在HDFS之上的,必须配套使用。

HDFS工作原理

HDFS Architecture

看上去比较复杂,的确复杂,不过和SAP NW思路有类似的地方,Datanodes可以理解为真正存数据的地方,类似于NW的servernode,Namenode可以理解为控制怎么存数的地方,类似于NW的message server和enqueue server。里面的Datanode里面绿色的block应该是划分的物理空间大小,比如128MB一个块。Client就是用户了,写操作是写多个地方的,读操作是读一个地方的。HDFS有冗余机制判断写多个地方成功几个算成功,好处就是不怕单点故障,这就是分布式的好处。并且HDFS有数据复制机制,增加数据存储的可靠性。

MapReduce工作原理

其实MapReduce即使一个Hadoop Job工作的2个阶段,第一个阶段是定义问题,就是Map,把Text中要关心的数据的Key定义出来。第二个阶段就归纳问题,就是Reduce,Job跑完Map接口后会跑Reduce,会基于Map阶段定义的Key Value,对相同的Key进行合并,所以合并完,结果集里面Key基本唯一了,复杂的场景可能要跑多轮,比如多个Reducer同时Reduce,第一轮每一个Reducer拿到的Map都是不全的,Reduce一遍之后,再集中Reduce一遍,得到最终的结果集,这是后Key就唯一了,任务就完成了,数据就可以被使用或消费了。

结尾,底层很多复杂的细节不再深究了。比如为了管理这套东西,提供的专门的一套命令行工具,就是Common。还有YARN,实现了资源和应用的全局管理。

 

 

分类
Note

JavaFx学习

JavaFx也采用的舞台、场景和时间轴的模型,支持有Fx自己的CSS,并且还支持XML定义界面,我想说,这些模型和概念是和Flash出乎我意料一致的!不得不说Flash是一个完美的RIA技术,当然也说明好的模型是很重要的〜

分类
Note

密钥管理科普篇

之前对密钥管理没有概念,经过1个月的自学,有了一定的理解,下面说说。

密钥管理用于需要加密的网络传输,我所从事的金融软件业领域对这点要求更严格,所有经过局域网,vpn等网络传输的数据都需要加密。

密钥

钥匙的意思,一般是一段二进制数据 (byte[]),为什么叫做密钥,其实是一种对现实问题的抽象。网络传输需要对数据加密,加密只是一种运算,加密并不能解决数据安全问题,只是为了让数据不可读,如果要保证安全性,就需要定义更复杂的规则,比如规定解密方必须要用到另外一段数据一起参与运算,这段数据就好比钥匙,要解密传输内容,就只能唯一的用这段数据,就像是一把锁和它的钥匙,一个锁只能用一种钥匙开。钥匙一般是秘密的,所以一般叫做密钥。

管理

就是钥匙管理,钥匙怎么配,配几把,给谁,怎么给。因为软件密钥有别于传统,就是一段二进制数据,具有电子特性,看不见,摸不着,易复制,传输快,所以它有自己的一套管理方法。

总的来说

所以密钥管理包含需要解决一下3类问题:1.加解密算法,2.密钥如何参与和密钥如何产生的加解密算法,3.密钥如何存储,如何给接收方。

1.加解密算法

比如位运算、md5、sha等,就是常见的加解密算法。好的算法,应该具有运算速度快,效率高,混乱程度高,加密内容不同,混乱后结果应该不同,加密后的内容,再加密,不会再出现原文,即不可逆等特点。这样才能又快又安全。

其实,md的全称是消息摘要算法,意思是对很长很长的数据进行概括,总结一段较短的数据,作为原文的标志,这个过程就像摘要一样,所以md5主要用于消息摘要(sha和md5作用一样)。

现在应用广泛的是只对敏感数据进行加密,比如密码和mac(消息认证码算mac一般是对原文整体做消息摘要,形成码,接收方也用同样的算法算mac,两次mac是否一致,来验证接接收到的消息和原文是否一致。

2.密钥的产生和参与算法

主要有两种模型:DES(对称加密算法),AES(非对称加密算法)。对称是指发送方和接收方使用相同的密钥,对数据进行加解密,非对称是说双方密钥不一样。这个听起来很玄乎,感觉不可能,其实真的不可能,呵呵,因为非对称里面的密钥,已经不是直接参与运行的密钥了。

这里引入了公钥和私钥的概念,公钥就是能通过网络传输告诉对方的钥匙,私钥就是不能传给对方,只有自己知道的钥匙。

非对称是在对称的基础上,又做了一层工作,让发送方有两把钥匙,公钥和私钥,接受方也有两把钥匙,公钥和私钥,这4把钥匙各不相同,但是用发送方的私钥和接收方的公钥可以产生出真正的密钥,用接收方的私钥和发送方的公钥,也能产生出真正的密钥,(真正的密钥只有一个),所以它非对称了。

接受方的私钥怎么来?当时我问了这个问题,他是通过发送方的公钥运算的来的,其实接受方的公钥也是这样产生的,在非对称加密算法里,一个输入,会有公私两个密钥输出。接收方公钥算出来后,需要再发送给发送方,这样发送方才有接收方的公钥。最后双方用对方的公钥和自己的私钥分别产生真正的密钥,然后在对数据进行加解密。(其实这个地方有点绕,呵呵,需要多想想)

3.密钥如何存储和分发

为了提高安全系数,密钥需要定期的更新,变化。所以需要设定有效期。

在互联网领域,公钥被广泛应用,来做简单的服务端的单项身份验证。比如一个网站,会用自己的密钥对数据加密,访问用户想要接受数据,必须知道密钥,网站会颁发自己的公钥,访问用户需要先获取公钥,来解密数据,或者验证数据。此时,访问用户还需要额外注意服务端身份是否正确,所以还需要一个权威的第三方认证机构,相用户担保,证明服务端身份。

有时,服务端还想公布自己的公司名称,简介等信息,所以,就有这样的需求,要把公钥,加密算法,公司信息,公钥有效期等信息储存在一个文件里,作为一个整体的需求,即证书。

证书只能有发送方制作,谁都不能伪造,修改。所以证书的制作,又是单独的一门技术,制作过证书就有体会,有一步需要输入密码,就是防止证书的伪造,只有知道密码,才是证书的制作人,对自己的证书进行修改。

入门完毕

我看了这本书《Java加密与解密的艺术》,以及用百度搜索的相关资料。

分类
Note

问:算法的计算量的大小称为计算的?

这是一道题

算法的计算量的大小称为计算的()

A.效率          B. 复杂性       C. 现实性           D. 难度

答案是B

如果我在考试,或者我在做题,或者更具体来讲在做选择题,我想我会选择B。

思路是这样的:

首先,我会看四个答案,分别说的啥。

A 效率,算法的计算量的大小称为计算的效率。前后简直说的不是一个东西,效率是效率,怎么是种度量呢?算法的度量不是看时间复杂度和空间复杂度的吗!?不是

B 复杂性,算法的计算量的大小称为计算的复杂性。怪怪的,“大小称为复杂性”,好像语句不通似的,不是

C 现实性,算法的计算量的大小称为计算的现实性。太现实了吧?这句话更抽象了,不是

D 难度,算法的计算量的大小称为计算的难度。好像有点意思,至少语句是通顺了,但是,又和心里的答案:“复杂度”差了2个字,很纠结,再看看前面的吧~

A、C扯的太远,B 虽然语句不通,但是和“复杂度”之差了1个字,D 虽然语句通顺,但是没有B 的匹配度高。

最后,心里很纠结……的选个B

====总结====

考试和解决实际问题,最大的区别就在于:考试,不能用正常的思维(生活、实践、经验、常识)来思考,而解决实际问题需要

考试,你就要遵守考试的游戏规则。考试的时候,你不能有自己的观点,仔细观察,用于规范的选择题,从来都是说,请选择一个最佳答案。如果4个答案都沾边,你就要选择一个匹配度最高的(就像上面这道题)。最有趣(最没意义)的情况是,题出错了,你还必须猜测出题人的意图,选一个他认为,或者他本来想考你的答案,呵呵

总之,考试这种东西,对我来说太复杂,以书此文,表达我对学霸无限的仰慕之情,以及抒发希望和考试这种事情井水不犯河水的小小情怀

分类
Note

CachetianBlog 安卓版 – 纯属自恋恶搞

========朴实的分割线========

截屏1

截屏2

截屏3

========朴实的分割线========

使用Flex mobile开发