- GFS的主要思想
- 用 master 来管理 metadata。
- 文件使用 64MB 的 chunks来存储,并且在不同的 server 上保存多个副本
- 自动容错,自动错误恢复
Google 设计 gfs最初的目的是为了存储海量的日志文件以及网页等文本信息,并且对其进行批量处理(例如配合 mapreduce 为文档建立倒排索引,计算网页 PageRank等)。和结构化存储系统相比,虽然分布式文件系统的可扩展性,吞吐率都非常好,但是几乎无法支持随机访问(random access)操作,通常只能进行文件进行追加(append)操作。而这样的限制使得非结构化存储系统很难面对那些低延时,实时性较强的应用。
-
Spring框架
详细说明见 spring核心框架体系结构 - 依赖注入的三种方法
- 构造器注入
- setter注入
- 接口注入
- 依赖注入和控制反转归纳:
- 谁注入于谁:IoC/DI的容器 注入 某个对象
- 到底注入什么:就是注入某个对象所需要的外部资源
- 谁控制谁:IoC/DI的容器来控制对象了
- 控制什么:主要是控制对象实例的创建
- 为何叫反转:反转是相对于正向而言的,那么什么算是正向的呢?考虑一下常规情况下的应用程序,如果要在A里面使用C,你会怎么做呢?当然是直接去创建C的对象,也就是说,是在A类中主动去获取所需要的外部资源C,这种情况被称为正向的。那么什么是反向呢?就是A类不再主动去获取C,而是被动等待,等待IoC/DI的容器获取一个C的实例,然后反向的注入到A类中。
-
依赖注入和控制反转的区别:根据上面的讲述,应该能看出来,依赖注入和控制反转是对同一件事情的不同描述,从某个方面讲,就是它们描述的角度不同。依赖注入是从应用程序的角度在描述,可以把依赖注入描述完整点:应用程序依赖容器创建并注入它所需要的外部资源;而控制反转是从容器的角度在描述,描述完整点:容器控制应用程序,由容器反向的向应用程序注入应用程序所需要的外部资源。
总结:有效地分离了对象和它所需要的外部资源,使得它们松散耦合,有利于功能复用,更重要的是使得程序的整个体系结构变得非常灵活。
-
请解释下Spring框架中的IoC
Spring中的org.springframework.beans 包和 org.springframework.context包构成了Spring框架IoC容器的基础。
org.springframework.beans.factory.BeanFactory 是SpringIoC容器的具体实现,用来包装和管理前面提到的各种bean。BeanFactory接口是Spring IoC 容器的核心接口。 - ApplicationContext实现方式
- ClassPathXmlApplicationContext: 从classpath的XML配置文件中读取上下文,并生成上下文定义.应用程序上下文从程序环境变量中取得
- FileSystemXmlApplicationContext:由文件系统中的XML配置文件读取上下文
- XmlWebApplicationContext:由Web应用的XML文件读取上下文