08 2013 档案
摘要:1 冒泡排序 冒泡排序算法的运作如下: 分为降序和升序排序 比较相邻的元素。如果第一个比第二个大,就交换他们两个。 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。 针对所有的元素重复以上的步骤,除了最后一个。 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。 升序排序 排序...
阅读全文
摘要:有一个关于排列组合的经典面试题目,拿来分析一下。 题目如下: 1、2、3、4、5这六个数字,用java写一个main函数,打印出所有不同的排列, 如:512234、412345等.要求:"4"不能在第三位,"3"与"5"不能相连. 第一种解决思路。 列出所有的组合,然后看看哪个不符合要求,剔除。 对于计算机来说。这种方是可行的,而且思路清晰。 public class test1 ...
阅读全文
摘要:从这张图上看,动态代理也可以用在真正类外面包裹一层普通处理类来实现, 这样做的坏处是 不能扩展,每一个真正类都需要自己的一个代理类,而动态代理可以用一个Proxy类对所有的有接口实现的真正类进行代理。 public class DPMain { public static PDQueryStatus create(DPQueryStatusImpl dpqs) ...
阅读全文
摘要:拿一个例子说我的理解 public class NIOServer { private static final int TIMEOUT = 300; private static final int PORT = 12112; public static void main(String[] args) { try...
阅读全文
摘要:在hadoop 整体分析中,说过nameNode主要是实现一个 blockID 到对应 dataNode的对应关系映射。 现在分析一下腰实现这个映射,nameNode还需要哪些模块。 1 为了方便用户查找,实现一个目录树是必须的 (因为要完成 目录到文件的映射,称之为一级关系)。 在linux中是用C 和汇编语言来实现这个的,想要看懂代码感觉不容易,现在有一个JAVA版本的实现,让人兴奋。 ...
阅读全文
摘要:public class UploadAndDown { public static void main(String[] args) { UploadAndDown uploadAndDown = new UploadAndDown(); try { //将本地文件local.txt上传为HDFS上cloud.txt文件 ...
阅读全文
摘要:如图所示, 在hadoop中客户端需要和服务端通信 。 首先我们看一下需求是啥。 举一个例子,在客户端想要往hadoop集群中写数据的时候,它需要先和namenode通信,以便获得 诸一个blockID。 这时 ,我们希望在客户端可以做到 诸如 调用一个方法 如 getBlockID() 则就获得了服务端的发过来的ID ,如果调用本地方法一样。 需求搞定,我们看现实有...
阅读全文
摘要:在前面说hadoop整体实现的时候, 说过DataNode的需要完成的首要任务是K-V存储。 第二个功能是 完成和namenode 通信 ,这个通过IPC 心跳连接实现。此外还有和客户端 其它datanode之前的信息交换。 第 三个功能是 完成和客户端还有其它节点的大规模通信,这个需要直接通过s...
阅读全文
摘要:对于HDFS这样一个分布式文件系统,它的目的是为了实现在多台廉价X86服务器上实现大文件存储。 HDFS 是仿造GFS 设计出来的。 如图所示, 这种实现方案是一种采取有一个中心节点, 多个数据节点围绕的方式。 这种设计 优点: 设计简单 缺点: 中心节是瓶颈。 按照这种设计 我们核心要解决的两个是 1 中心节点(Namenode)和数据节点(datanod...
阅读全文