《大数据平台之Linux、Java、Scala》 扫二维码继续学习 二维码时效为半小时

(0评价)
价格: 899.00元

 

package cn.chinahadoop.test;
import java.io.IOException;
import java.util.SitSet;

public class Test{
    public static void main(String[]args)throws IOException{
        BitSet bits1=new BitSet(8);

        for (int i=0;i<8;i++){
            if((i%2)==0)
                bits1.set(i);
        }
        System.out.println("Inital pattern in bits1: ");
        System.out.println(bits1);
    }
}      

 

 

package cn.chinahadoop.test;
import java.io.IOException
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

public class Test{
    pulic static void main(String[] args) throws IOException{
        List<String>list=new ArrayList<String>();
        list.add("a");
        list.add("b");
        list.add("c");

        Iterator<String>iter=list.iterator();
        while(iter.hasNext)(){
            String ele=iter.next();
            if ("a".equals(ele)){
                iter.remove();
            }
        }
    }
}

 

 

 

package cn.chinahadoop.test;
import java.io.IOException
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

public class Test{
    pulic static void main(String[] args) throws IOException{
        List<String>list=new ArrayList<String>();
        Iterator iter=list.iterator();
        iter.hasPrevious;//会报错,原因是父类中没有hasPrevious方法

    }
}

键值对也可以遍历,但是map没有iterator属性

[展开全文]

启动网卡

ifup eth0

clear

service httpd start

netstat -tulnp

 

[展开全文]

vim  /etc/resolv.conf

ping www.baidu.com -c 2

修改nameserver后就ping不通了

vim /etc/hosts 将ip翻译成地址

主机名 当前机器名称

hostname

/etc/services

网络服务别名

 

[展开全文]

netstat -antp vs netstat -atp

l =listen状态

 

[展开全文]

sysctl | fgrep swap

sysctl -a | fgrep swap

free

 

[展开全文]

#cd /usr/lib/jvm

#cd jre/lib

#jar -tf rt.jar | fgrep String

java test <=>java -cp ./test

cp=>classpath

system的类加载器。

java anti-patterns

JNI=java native interface,用c/c++写的动态链接库,

-so文件

heap占用内存最大

[展开全文]

序列化以IO为继承,首先IO。

package cn.chinahadoop.test;
import java.io.BufferReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutpotStream;
import java.io.InptStreamReader;

public class Test{
    public static void main(String[]args) throws IOException{
        FileOutputStream stream=new FileOutputStream(new File("testoutput"));
        stream.write("你好".getByte());//将char[]数组转换为byte[]数组
        //改为stream.write("你好".getByte(UTF-8));后会出现乱码
        BufferedReader bin = new BufferedReader(new InputStreamReader(new FileInputStream("testoutput")));
        //编解码要指定类型统一,在解码中说明解码格式则不会报错 BufferedReader bin = new BufferedReader(new InputStreamReader(new FileInputStream("testoutput"),"UTF-8"));
        String s=null;
        while((s=bin.readLine())!=null){
            System.out.println(s);
        }
        bin.close();
    }
}

 

在linux下#vim Test.java,#javac Test.java

#java Test 对于win7报错的UTF-8会正常显示,在win7下汉字用gbk默认编码,而在linux下为utf-8。

socket 网络中不同实体不同进程之间交互,

很多服务会有默认端口,web服务80,ssh服务 22端口,一个网络服务就是一个上层应用。

对于同一个端口只能有同一个监听的进程。

##netstat -antp | fgrep 18824

##telnet 127.0.0.1 18824

现在可以是客户端,发起请求,输入hellp server,则对应在eclipse输出hello server,在控制台输入hello client,在ssh里面收到结果并输出。

import java.io.InputStreamReader
import java.io.PrintWriter
import java.net.IntetSocketAddress;
import java.net.ServerSocket;
import java.net.Socket;

public class App {
    public static void main(String[] args) throws IOException {
        ServerSocket server = new ServerSocket();
        InetSocketAddress address = new InetSocketAddress("localhost", 18824);
        server.bind(address);
        Socket socket = server.accept();

        BufferedReader reader = new BufferedReader(new InputStreamReader(
            socket.getInputStream()));
        PrintWriter writer = new PrintWriter(socket.getOutputStream(), true);
        BufferedReader keyword = new BufferedReader(new InputStreamReader(
            System.in));
        while (true) {
            if (reader.ready()) {
                String info = reader.readLine();
                System.out.println("Client:" + info);
            }
            if (keyword.ready()) {
                String test = keyword.readLine();
                writer.println(test);
                System.out.println("Server:" + test);
            }
        }
    }
}
//Socket——数据传输(前一页文本代码)

 

1:52

 

 

 

 

 

[展开全文]

Error & Exception 给调用的人看

RunTimeException 不需要提前说明

子类不能比父类抛出更多的异常

try是用来捕获异常的

要想之后throw,之前必须先“说一下”

(new Exception()).printStackTrace(); 虽不正统,但是可以用来帮助理解程序的函数调用。

注意:抛异常的代价是很大的,不要用于正常的程序逻辑

Hadoop中的一些Java应用:

复习一些已经学过的内容,工业级的例子也有说服力。

1、Hadoop背景:主流的分布式计算和存储平台。分布式系统的资源一般有cpu,mem,disk(hdfs分布式文件系统,有点像百度云)

2、NameNode.java是hdfs的一个管理实体(DataNode)。每一个disk有一个java进程来管理,DataNode就是每一个disk实体。NameNode就是主控实体。

main为什么一定是static的?

3、一般情况下,异常不会被吞掉,而是处理之后,再抛出去。

spark在计算上,要比Hadoop更加快捷一些。

深入面向对象

对象(状态、行为)是类的一个实例。

构造函数通过new调用,构造函数至少一个(若没有定义,就是无参构造函数)。

但是,一旦申请了一个有参构造函数,无参构造函数需要显式声明。

注意:一个类中的static属性,是所有它的对象共享的!!!!这个属性是可以不new对象的,直接用 类名.属性名 访问。

由于非static方法或者属性是要基于对象而产生的,所以static方法不能调用非static方法。

return要覆盖所有可能的逻辑执行分支。

封装就像是管理上的调整:你就是君主,对象不能总是由你直接指挥。

Java里不支持多继承。基本的继承就是继承部分和个性部分。(implements和接口有关,以后讲。接口里面的方法是没有实现的)

先调用父类的构造函数,再调用自己的构造函数。

如果子父类的构造函数参数个数不同呢?怎么办?

Java中所有的类都是Object的继承类。

[展开全文]

第一本参考书类似字典,第二本重点看,快速上手,第三本有难度。


source /etc/profile
echo $SCALA_HOME
echo $PATH
$SCALA_home/bin

mkdir code
cd code
ls
touch Test.scala
vim Test.scala
scalac Test.scala  ##编译文件,scalac可以对应javac
ll    ###出现class文件
scala Test  ###输出结果

先编译,再执行

IDE  eclipse内置scala支持

string并非基本类型

没有必要使用return语句,最后一行为返回值

 

 

val x=1
var y=2
1.to(10)
1 to 10
val x=1
if(x>0)1 else -1
val a=if(x>0) 1 else -1
1 to 10
1 until 10
0 until 10
Range(1,10)
Range(1,10,2)  ##指定步长
Range(1,15,2)
Range(1,15,3)

 

for(i<-1 until 20) println(i)

for(i<-1 until 20 if i%2 ==0) println(i)
lazy val x=2

 

 

[展开全文]

复习:

类,对象,方法

javac *.java

java * (a b c)

Java中可以存在多个包含main方法的类,此时需要定义主入口类(Eclipse - Run Configuration)。main之间是可以相互调用的。

命令行中,java 主类名 即可

循环控制与C一样(for, while, do-while, break, continue),for多了一种:

int[] array = {1, 2, 3};

for (int  a : array){System.out.print(a);}

String一旦创建,不可更改!

String a = "abc"; a = a + "ef";

这两句话一共产生了两个String 对象

!!!String 相等问题!!!

尽可能节省空间。

常量是在编译过程中生成的(好似符号表,所以分配在内存中),在运行过程中,不会被回收。

Autoboxing:当需要使用基本类型相对应的引用类型时,在使用恰当时,会自动进行。

StringBuffer在申请内存时,好似C++中的vector。

StringBuffer线程安全,但性能可能受影响。所以有StringBuilder,性能会好一些。

System.exit(int status); 就像return status;

数组和C基本上一样,不过,[]更像是*,而不是分配空间。

ArrayList更像是StringBuffer,后面再讲。

基本类型是值传递,引用类型是引用传递。

 

[展开全文]

Java虚拟机是对机器作比操作系统更高的抽象

JAVA JRE运行 + JAVA JDK开发

[展开全文]

mkfifo命名管道 进程间通信(terminal)

[展开全文]

1.hda5之后均为扩展分区

2.fdisk 查看磁盘状况

3.df 不同分区挂载目录查询

[展开全文]

一 IDE:

1scala-ide

2idea

[展开全文]

fdisk -l

parted -l

df -h

 

parted   /dev/xvdc

help  看帮助

mklabel

gpt

 

mkpart

part1

1

10G

print

mkfd ext4 /dev/xvdc1

 

mkdir /data1

mount /dev/xvdc1  /data1

 

 

 

 

 

[展开全文]

安装centos步骤:

1. 搜索、下载、安装virtualBox

--进入virtualBox,虚拟机命名、类型、版本选择,分配内存,分配硬盘大小;

2. 下载centos安装包(操作系统 www.centos.org/download)下载

在虚拟机中找一个虚拟光驱,将iso文件装入

3. 执行安装过程

先进行诸多设置,之后启动安装。

[展开全文]

/bin用户可以执行及开机执行命令

/boot核心文件及grub程序

/dev设备文件

/etc 系统及软件服务程序的配置文件

/home各用户主目录,每个用户有自己目录

/lib系统库文件

/media媒体文件

/mnt挂载外部设备

/opt第三方软件安装目录

/proc程序运行时的文件

/root系统管理员主目录

/sbin操作系统可执行文件

/srv一些网服务启动后,这些服务所需要取用的数据目录

/sys跟/proc非常类似,也是一个虚拟的文件 系统,主要也是记录与核心相关的信息

/tmp一般用户或正在执行的程序暂时放置档案的地方

/var 经常变化文件位置,如log文件

/usr 系统默认软件存在位置

[root@chinahadoop ~]#系统权限

[hadoop@chinahadoop ~]$普通权限

[fish@chinahadoop demo]$普通权限

 

$command [-options] parameter1 parameter2...

$ls -a

$ls -al

#man ls 查看ls命令的帮助文档 打开vi

linux关机命令

shutdown -h now 立刻关机

shutdown -h 20:00 今天20:00关机

shutdown -h +10 十分钟后自动关机

shutdown -r now 系统立刻重新启动

shutdown -r now 系统立刻重新启动

shutdown -r +30 ‘The system will reboot’再过30分钟系统重新启动,后面信息显示给其他用户

相对路径

. 当前目录

.. 上一级目录

~代表用户的home目录

cd ./demo/

pwd 看绝对路径

ll 等同于ls -l

 

 

 

 

 

 

[展开全文]

Linux的磁盘分区

-云主机、远程服务器,下载访问工具:

putty、secureCRT

若是MAC机器,则不需下载工具

-PC安装虚拟机

VMWare workstation、Oracle VM VirtualBox

-小象实验室

磁盘分区格式

- hdx:IDE硬盘  /dev/hda(逻辑分区:/dev/hda1 /dev/hda2 /dev/hda3 /dev/hda4,主分区最多4个;从 /dev/hda4可分出扩展分区/dev/hda5 /dev/hda6 /dev/hda7)

-sdx:SCSI,SATA,USB硬盘

-xvdx: Xen虚拟机硬盘  /dev/xvda  /dev/xvdb

$fdisk 查看磁盘状况

磁盘的挂载与目录

$df -h 查看磁盘的挂载与目录

$parted -l 查看磁盘状况

/boot 200M 存放启动Linux的核心文件

/  5G 系统根目录

/home 5G 各用户主目录

swap 1G 虚拟内存分区

#parted /dev/xvdc

mk label

mkpart

start?1

end?10GB

print

#mkfs.ext4 /dev/xvdc1

#mkdir /part1

#mkdir /part2

#ls

#mount /dev/xvdc1 /part1

#cd part1

#ls

#unmount /part1

 

 

 

 

[展开全文]