Mac下Hadoop2.7.x配置伪分布环境(wordcount运行)

关于Hadoop的安装与配置其实挺多了,不过大多是1.x.x系列的.将自己的安装配置做个笔记记录.

前言

操作系统:Mac OS X 10.10
Hadoop版本: 2.7.2

安装JDK并配置环境变量

配置Mac OS自身ssh环境

配置ssh环境,在终端中输入

1
ssh localhost

Mac设置环境变量

在mac,linux中配置环境变量对于新手来说,是一个有点头痛的问题.因为经常看到不同的方式配置环境变量.到底应该怎么配置,配置在什么地方(全局/用户级).做个简要的笔记.

Shell类型

首先需要判断下使用的Mac OS X是什么样的Shell,使用命令echo $SHELL
如果输出的是:csh或者tcsh.那么就是C Shell.
如果输出的事:bash,sh,zsh,那么就是Bourne Shell的一个变种.
Max OS X 10.2之前默认的是C Shell.
Mac os X 10.3之后默认的是Bourne Shell.

Mac实用小技巧

使用Mac已经很长一段时间了,从最开始的生疏到慢慢熟悉,掌握了一些实用的小技巧,这里略作整理,不定期更新.

终端忽略大小写补全

打开终端,输入:

Oracle-数据库实例、表空间、用户、表之间的关系(转)

完整的Oracle数据库通常由两部分组成:Oracle数据库数据库实例

1)数据库是一系列物理文件的集合(数据文件,控制文件,联机日志,参数文件等);
2)Oracle数据库实例则是一组Oracle后台进程/线程以及在服务器分配的共享内存区;

在启动数据库服务时,实际上实在服务器内存中创建一个Oracle实例(即在服务器内存中分配共享内存的后台内存),然后由这个oracle数据库实例来访问和控制磁盘中的数据文件。Oracle有一个很大的内存块,称为全局区(SGA)

面向过程、面向对象的本质思考

前言

不久前有人在面试的时候被问及面向对象和面向过程的本质区别是什么?对于这个问题以前也没有做过多的思考,今天在此做一个总结,探求一些面向对象和面向过程本质的区别在哪里。

简单对比

面向过程就像是一个细心的管家,事无具细的都要考虑到。而面向对象就像是个家用电器,你只需要知道他的功能,不需要知道它的工作原理。

“面向过程”是一种是事件为中心的编程思想。就是分析出解决问题所需的步骤,然后用函数把这写步骤实现,并按顺序调用。面向对象是以“对象”为中心的编程思想。

简单的举个例子:汽车发动、汽车到站。这对于“面向过程”来说,是两个事件,汽车启动是一个事件,汽车到站是另一个事件,面向
过程编程的过程中我们关心的是事件,而不是汽车本身。针对上述两个事件,形成两个函数,之后依次调用。

然而这对于面向对象来说,我们关心的是汽车这类对象,两个事件只是这类对象所具有的行为。而且对于这两个行为的顺序没有强制要求。

两种思想的对比

面向过程其实最为实际的一种思考方式,因为我们总是一贯一步一步的解决问题。(举个简单的事情,在初学面向对象的语言例如Java时,我们也总是不经意的面向过程了!)。其实笔者觉得就算是面向对象思想也是包含有面向过程思想的,面向过程需形成事件、也就是函数,面向对象需抽象出类,并且也会定义出这类对象的“行为”及方法。但是不论是面向过程的函数,还是面向对象的方法,两者所完成目的都是一致的。

可以说面向过程是一种基础的方法,它考虑的是实际的实现,一般情况下,面向过程是自顶向下逐步求精,其最重要的是模块化的思想方法。面向对象的方法主要是把事物给对象化,包括其属性和行为。这里在程序较小的时候,面向过程就会体现出一种优势,其程序流程十分清楚。

如同上述汽车发动、到站这一过程,面向过程可以很清晰的将这一过程体现出来。而面向对像仅仅是抽象出一个Bus类,包括发动、到站之两个行为,具体的执行顺序不能体现出来。

面向过程和面向对象的本质理解

面向过程就是分析出解决问题所需的步骤,面向对象则是把构成问题的事物分解成对象,抽象出对象的目的并不在于完成某个步骤,而是描述其再整个解决问题的步骤中的行为。
面向过程的思维方式是分析综合,面向对象的思维方式是构造
例如c语言解决问题时,一般是先定义数据结构,然后在构造算法。而是用Java面向对象求解时则是先抽象出对象,构造一个“封闭”的环境,这个环境中有定义的数据和解决问题的算法。面向过程的设计更具挑战性,技巧性,面向对象主要在于对象抽象的技术性,一旦完成抽象,任何人都可以做后面的工作了。从代码层结构上来说的话,面向对象和面向过程的主要区别就是数据是单独存数还是与操作存储在一起。面向对象提供了数据的封装后,是的对某一操作而言,数据的访问变得可靠了。面向过程就是将coding当做一件事,一步一步完成,面向对象就是将coding当做一件事物,需要做什么的时候由事物(对象)本身的行为去完成。

总结

总的来说:

面向对象是将事物高度抽象化。
面向过程是一种自顶向下的编程
面向对象必须先建立抽象模型,之后直接使用模型就行了。


本文链接: http://kiritor.github.io/2015/12/15/面向过程,面向对象的本质思考/

-- EOF --

Spring MVC + Velocity实现国际化配置

web开发中,国际化是需要考虑的一个问题,而且这个问题一般是越早敲定越好(不然等到系统大了,翻译是个问题).下面是结合实际项目(Spring MVC+Velocity)对实现国际化的一些总结,项目地址:https://github.com/kiritor/hr
需要说明的是,该项目使用的是基于Cookie的国际化配置,其他方式参考本文.

Spring国际化

I18N:作为”国际化”的简称,其来源是英文单词internationalization的首末字符i和n,18为中间的字符数.

Oracle导出、导入、备份

Oracle数据库导入、导出imp/exp

       imp/exp命令可以实现oracle数据库的还原、备份、迁移.
       实际的开发中,由于测试和开发”并行”,会有开发库、测试库的数据迁移,切换,以及数据库升级等。这些操作都伴随着数据库的导入、导出操作.对于Oracle通过导出、导入来进行数据库的迁移(逻辑)是非常方便的,只要安装了oracle客户端,并建立了连接(通过Net configuration Assistant添加正确的服务命名),你就可以把远端的数据库导出到本地,同样你也可以把dmp文件从本地导入到远端数据库服务器中.利用这个功能,可以构建两个相同的数据库:开发库、测试库,并且快速的实现两个库之间数据的迁移.

Oracle dblink实践

前言

    项目开发中,涉及到不同模块之间的数据流转,但是模块间的底层数据又不在同一个数据库中,要实现不同模块间的数据交互方法其实很多。比较常见的两种方式便是webService和dblink。

    webService方式即是模块之间各自提供数据流入接口和流出接口,这种方式需要开发,而且由于业务变化很容易造成接口的调整,好处是各业务模块的底层数据库是完全耦合的。在大型系统(模块多且之间交互复杂)不利。

    dblink的方式是通过创建dblink到远程数据库,执行远程程序,这样一来,模块间的数据流转就会变得非常简单,各自模块无需提供数据接口。但是有一个问题是,模块底层数据库之间不是耦合的,在系统实际上线之前我们要规范好各个模块数据库之间的link关系,之后按照规范,部署数据库实例,前期的准备工作比较麻烦。