- 浏览: 30475 次
- 性别:
- 来自: 南昌
-
最新评论
文章列表
今天看书的时候突然想到了一个关于虚拟机的问题,jvm到底是如何屏蔽掉底层的操作系统而到达跨平台的。我们知道java的虚拟机一般都是这么解释的“Java虚拟机(JVM)是Java Virtual Machine的缩写,它是一个虚构出来的计算机,是通 ...
其实应该用一个问号结尾,今天同学问了一句java书如何具体的连接一个数据库的,也许你会这么说,用jdbc,然后呢?jdbc是如何连接数据库的呢?比如我向程序注册了一个驱动叫mysqlDriver,那么驱动是如何连接数据库呢?不管怎样,数据库驱动就是用java写的,那么是如何实现与不是用java写的数据库比如mysql进行通信的呢?
源码什么的看了个大概,发现一个叫“socket”的东西,还有“io”,我想了想,当数据库被部署在服务器上面的时候我们可以视它为一种app,提供一个外界访问的接口,比如就像是一个网站提供一个ip,我们通过getConnection方法获取连接的时候其实就是获取一 ...
其实对于耦合这个概念没有太多的实际经验,只是觉得耦合就是代码之间产生了依赖,比如需要对于一个数据库连接,需要对其事务管理,不同的数据库的事务不同,具体的实现也会不同,比如:
MySQLConnection conn = new MySQLConnection();
MySQLTransaction tran = conn.getMySQLTransaction();
tran.commit();
如果这个时候不是用mysql数据库,而是用oracle,代码就全部必须更改,这样,客户端的代码完全依赖于服务器端;
OracleConnection conn = ne ...
java中反射机制用于动态的获取运行时类型识别,也就是所谓的RTTI,当你从网络上获取一段字节码的时候,告知你这是一个对象的实例,比如hibernat中的你需要对以一个对象进行持久化,你如何获取到它的字段,setter,getter,如何将它存入到对应的表中。或者将配置文件中的各种不同属性值加载到运行时对象属性中的,这些将通过反射机制来获取;
比如下例将一个customer对象通过hibernate保存到数据库中;
这是Customer的代码:
public class Customer{
private int id;
private String nam ...
今天关于String看到一个测试:
String a = "abc";
String b = "abc";
String ab = "ab";
String c = ab+"c";
String d = "ab"+"c";
System.out.println(a == b);
System.out ...
public class testThread extends Thread {
public testThread() {
}
/** *//**
* 线程的run方法,它将和其他线程同时运行
*/
public void run(){
for(int i = 1; i <= 100; i++){
try{
Thread.sleep(100);
} catch (Int ...
这是改的一个例子(关于深复制:连同该对象的引用一起复制):
class Professor implements Cloneable
{
String name;
int age;
Professor(String name,int age)
{
this.name=name;
this.age=age;
}
public Object clone()
{
Professor o=null;
try
{
...
使用的两种情况:
当你想为某些特定数据创建一份内存空间,并且所有该类的对象共享一个域,而不去管该类的对象是否创建;
当你创建某个方法不想和它包含的类的对象想关联;
代码:
public class StaticFun{
static int i = 0;//static关键字声明的变量让该变量和该类的诸多对象无关;
public static void main(String ar[]){
StaticFun f1 = new StaticFun();
System.out.println(f1.i++);
StaticFun f2 ...
现在来总结一下hadoop从命令输入到map接收指定输入split的整个代码分析,下面是转自http://forfuture1978.iteye.com/blog/811119#comments的一张图片,介绍了hadoop的数据运行流程:
我这里用的hadoop-0.20.2的代码实例,先从命令行输入开始bin/hadoop jar *** ,当hadoop的二进制文件(bin/hadoop)接收并在它的第229行:
elif [ "$COMMAND" = "jar" ] ; then
CLASS=org.apache.hadoop.util ...
好了,大概了解了一下从输入到mapper的数据的处理过程,其实我在刚刚接触hadoop的时候很好奇,当你你在命令行输入hadoop jar ******的时候系统到底如何启动job的,诸如mapper是如何获取输入的K/V对的呢?一般的hadoop程序中的map,reduce方法是被谁而调用的呢?现在就来看看咯:
当一个作业开始被提交,job.waitForCompletion(true),系统开始等待作业的完成,在waitForCompletion方法中,调用了submit方法以提交作业的conf,在job类中,该方法被描述为如下:
public void submit() ...
下面是关于LineRecoedReader的NextKeyValue代码:
public boolean nextKeyValue() throws IOException {
if (key == null) {
key = new LongWritable();
}
key.set(pos);
if (value == null) {
value = new Text();
}
int newSize = 0;
while (pos < end) {
newSi ...
Inputormat:describes the input-specification for a Map-Reduce job
它是一个用于处理指定输入的接口:
1.用于验证输入的有效性;
2.将指定输入切割成许多逻辑上的split供mapper函数处理;
3.提供一个RecodeReader让mapper一点点的处理split中的数据;
Inputformat其中有两个方法createRecodeReader(),getplits(),先看看getsplit(),将指定的输入切割成不同的split,有一个split基类叫做FIleInputFormat,所有的InputFo ...
本来是要复习考试的,但是看得那个什么编译原理的书就头大。。最近搜了一下hadoop的源码分析,在javaeye上面有一个blog写的不错:http://caibinbupt.iteye.com/blog/262412,毕竟是别人的,自己原来是看过hadoop源码但是没有自己总结过,现在再重新从头整理一下。
hadoop是apache就google提出来的map/reduce分布式计算框架的开源实现,hadoop包括以下子项目:
hdfs:分布式文件系统的具体实现,本来是基于一个名为bigtable的论文而开源实现的;
map/reduce:分布式计算框架;
hbase:一个支持结 ...