3.异常
异常(面试)Java 异常类层次结构图概览 :
Exception 和 Error 有什么区别?在 Java 中,所有的异常都有一个共同的祖先 java.lang 包中的 Throwable 类。Throwable 类有两个重要的子类:
Exception :程序本身可以处理的异常,可以通过 catch 来进行捕获。Exception 又可以分为 Checked Exception (受检查异常,必须处理) 和 Unchecked Exception (不受检查异常,可以不处理)。
Error :Error 属于程序无法处理的错误 ,我们没办法通过 catch 来进行捕获不建议通过catch捕获 。例如 Java 虚拟机运行错误(Virtual MachineError)、虚拟机内存不够错误(OutOfMemoryError)、类定义错误(NoClassDefFoundError)等 。这些异常发生时,Java 虚拟机(JVM)一般会选择线程终止。
Checked Exception 和 Unchecked Exception 有什么区别?Checked Exception 即 ...
面向对象
面向对象基础(面试题)面向对象和面向过程的区别两者的主要区别在于解决问题的方式不同:
面向过程把解决问题的过程拆成一个个方法,通过一个个方法的执行解决问题。
面向对象会先抽象出对象,然后用对象执行方法的方式解决问题。
另外,面向对象开发的程序一般更易维护、易复用、易扩展。
创建一个对象用什么运算符?对象实体与对象引用有何不同?new 运算符,new 创建对象实例(对象实例在堆内存中),对象引用指向对象实例(对象引用存放在栈内存中)。
一个对象引用可以指向 0 个或 1 个对象(一根绳子可以不系气球,也可以系一个气球);一个对象可以有 n 个引用指向它(可以用 n 条绳子系住一个气球)。
对象的相等和引用相等的区别
对象的相等一般比较的是内存中存放的内容是否相等。
引用相等一般比较的是他们指向的内存地址是否相等。
类的构造方法的作用是什么?构造方法是一种特殊的方法,主要作用是完成对象的初始化工作。
如果一个类没有声明构造方法,该程序能正确执行吗?如果一个类没有声明构造方法,也可以执行!因为一个类即使没有声明构造方法也会有默认的不带参数的构造方法。如果我们自己添加了类的构造方法(无论 ...
hadoop安全模式
Hadoop安全模式1.什么是安全模式 安全模式是HDFS所处的一种特殊状态,在这种状态下,文件系统只接受读数据请求,而不接受删除、修改等变更请求。
在NameNode主节点启动时,HDFS首先进入安全模式,DataNode在启动的时候会向namenode汇报可用的block等状态,当整个系统达到安全标准时,HDFS自动离开安全模式。如果HDFS出于安全模式下,则文件block不能进行任何的副本复制操作,因此达到最小的副本数量要求是基于datanode启动时的状态来判定的,启动时不会再做任何复制(从而达到最小副本数量要求)。
如果没有安全模式,Hadoop集群使用的风险较大。集群的安全机制是较大的,Hadoop的开发者就设定了一个安全模式,说明如下:
用户只能访问有权限的的HDFS目录或文件。
用户只能访问或修改自身的Mapreduce任务。
用户使用Hadoop集群的相关服务要进行身份认证。
服务和服务之间也需要相互认证,以防止未经授权的服务。
3 相关命令123456hadoop dfsadmin -safemode <command>- get 查看当前 ...
openstack一键安装脚本
使用Packstack工具一键安装OpenStack1.环境规划
操作系统版本
硬件配置
IP地址规划
主机名
虚拟机软件
OpenStack版本
centos7.9
4vCPUS/15G 30G硬盘
172.17.2.60/24
openstack
VMware WorkStation16
Stein
centos7.9镜像获取地址:http://mirrors.aliyun.com/centos/7.9.2009/isos/x86_64/CentOS-7-x86_64-Minimal-2009.iso
2.准备资料OpenStack官方文档:https://docs.openstack.org/install-guide/
使用Packstack一键部署OpenStack的方式,隐藏了技术细节,如果使用中出来任何问题,我们都无法解决,所以体验完OpenStack的日常界面操作后,后期还是要仔细查看官方文档,然后一步步手工安装OpenStack各组件。
阿里云yum源设置官方文档:https://developer.aliyun.com/mirror ...
1.Spark介绍
Spark简介一、简介Spark 于 2009 年诞生于加州大学伯克利分校 AMPLab,2013 年被捐赠给 Apache 软件基金会,2014 年 2 月成为 Apache 的顶级项目。相对于 MapReduce 的批处理计算,Spark 可以带来上百倍的性能提升,因此它成为继 MapReduce 之后,最为广泛使用的分布式计算框架。
二、特点Apache Spark 具有以下特点:
使用先进的 DAG 调度程序,查询优化器和物理执行引擎,以实现性能上的保证;
多语言支持,目前支持的有 Java,Scala,Python 和 R;
提供了 80 多个高级 API,可以轻松地构建应用程序;
支持批处理,流处理和复杂的业务分析;
丰富的类库支持:包括 SQL,MLlib,GraphX 和 Spark Streaming 等库,并且可以将它们无缝地进行组合;
丰富的部署模式:支持本地模式和自带的集群模式,也支持在 Hadoop,Mesos,Kubernetes 上运行;
多数据源支持:支持访问 HDFS,Alluxio,Cassandra,HBase,Hive 以及数百个其他数据源中的 ...
2.Spark开发环境搭建
Spark开发环境搭建一、安装Spark1.1 下载并解压官方下载地址:http://spark.apache.org/downloads.html ,选择 Spark 版本和对应的 Hadoop 版本后再下载:
解压安装包:
1tar -zxvf spark-2.2.3-bin-hadoop2.6.tgz
1.2 配置环境变量1vim /etc/profile
添加环境变量:
12export SPARK_HOME=/usr/app/spark-2.2.3-bin-hadoop2.6export PATH=${SPARK_HOME}/bin:$PATH
使得配置的环境变量立即生效:
1source /etc/profile
1.3 Local模式Local 模式是最简单的一种运行方式,它采用单节点多线程方式运行,不用部署,开箱即用,适合日常测试开发。
12# 启动spark-shellspark-shell --master local[2]
local:只启动一个工作线程;
**local[k]**:启动 k 个工作线程;
**local[*] ...
3.用户和组
用户和组1.1 用户和组
Linux是一个具有很好的稳定性与安全性的多用户、多任务操作系统,在幕后保障Linux系统安全的则是一系列复杂的配置工作。
Linux系统对用户分配如下:系统管理员(root)、系统用户(不可登录)和普通用户(可登录)。我们登录linux系统时输入的是账号,但是Linux系统并不会直接识别账号,而是通过我们建立账号时系统分配的ID号码,其中,系统管理员(root)ID为0,可登录的普通用户ID为1000~65535。
在建立用户账号时,系统会为用户账号分配至少两个ID,一个用户ID(User ID,UID),一个组ID(Group ID,GID)。UID的知识已经在前面介绍过了,下面了解一下GID,管理员(root)组ID为0,非系统组ID为1000~65535。
对于一个用户而言,只有唯一一个UID,但是可以有多个不同的组,分别为主组群和附属组,主组群名与用户名相同,且只有一个用户(本身),也可以称为私有组。主组群以外的组为附属组。
在Linux系统中,用户账号、用户密码、用户组信息和用户组密码均存放在不同的配置文件中,所创建的用户账号及其相 ...
2.文件和权限
文件和目录权限 文件是操作系统用来存储信息的基本结构,是一组信息的集合。与其他操作系统相比,Linux系统最大的不同点是没有“扩展名”的概念,也就是说文件的名称和该文件的种类并没有直接的关联。例如,1.txt可能是一个运行文件,1.exe也有可能是一个文本文件,甚至可以不使用扩展名。在Linux系统中,如果文件名以“.”开始,表示该文件为隐藏文件,需要使用“ls -a”命令才能显示。
一个Linux目录或者文件都会有一个所属主(user)和所属组(group)。所属主是指文件的拥有者,而所属组是指该文件的所属主所在的一个组。Linux这样设置文件属性的目的是保证文件的安全。例如,1.txt文件的所属主是zs,而2.txt文件的所属主是ls,那么ls是不能查看1.txt文件的,相应的zs也不能查看2.txt文件。有时我们也会有这样的需求,即使一个文件同时让zs和ls来查看,这如何实现呢?
这时,先创建一个群组shares,让zs和ls同属于shares组,然后建立一个文件3.txt,且其所属组为shares,那么zs和ls都可以访问3.txt文件。Linux文件属性不仅规 ...
1.Linux基础
Linux文件系统基础命令1.1 Linux文件系统概念
操作系统中负责管理和存储文件信息的软件机构称为文件管
理系统,简称文件系统:
文件系统的结构通常叫做目录树结构,从斜杠/根目录开始:
Liux号称”万物皆文件”,意味着针对Liux的操作,大多数时间是在针对Linux文件系统操作。
1.2 文件系统的通用性
几乎主流的文件系统都是从/根目录开始的,Liux也不例外,而windows,文件系统会以盘符来区分不同文件系统;
目录树中节点分为两个种类:目录(directory)、文件(file);
从根目录开始,路径具有唯一性:
只有在目录下才可以继续创建下一级目录,换句话说目录树到文件终止蔓延。
1.3 易混概念
当前路径:也叫当前工作目录,当下用户所属的位置:
相对路径:相对当前工作目录开始的路径,会随当前路径变化而变化:
绝对路径:不管工作目录在哪,绝对路径都是从/根目录开始,唯一不重复。
1.4 特殊符号
. 目录或者文件名字以开始表示是隐藏的文件,如果路径以.开始表示当前路径
.. 当前目录的上一级目录
~ 当前用户的home ...
7.Java io流
1. io流1.1 oi流概念 java的io是实现输入和输出的基础,可以方便的实现数据的输入和输出操作。
在java中把对于输入/输入操作是以流的方式进行操作的。java.io 包下提供了大
量的供我们使用的操作【流】的方法和接口,用于进行各类数据的处理和输。
计算机的输入和输出都是通过二进制来完成的。在网络中我们要传递数据就要将数据【流化】,换句话说就是讲文件、复杂的对象转化成能够在网络上传输的一个个的0和1。
1.2 文件操作 在Java中,File类是java.io 包中唯一代表磁盘文件本身的对象。File 类定义了
一些与平台无关的方法来操作文件,File类主要用来获取或处理与磁盘文件相关
的信息,像文件名、文件路径、访问权限和修改日期等,还可以浏览子目录层
次结构。 File类表示处理文件和文件系统的相关信息。也就是说,File类不具有从文件
读取信息和向文件写入信息的功能,它仅描述文件本身的属性。
1.3 文件路径正斜杠,又称左斜杠,符号是”/”;反斜杠,也称右斜杠,符号是””。
在Unix/Linux中,路径的分隔采用正斜杠” ...
6.泛型
1.5.2 泛型1.5.2.1泛型的定义 看表面的意思是,泛型是广泛的,普通的类型,泛型可以帮助我们在【类型明确】的工作延迟到对象或方法的时候。意思就是我定义类不管他是什么类型,new这个对象或调用方法的时候才确定具体的类型。
泛型类就是把泛型定义到类上,这样在用户使用类的时候才可以报类型确定下来。具体的方法就是<> 加一个未知数,通常用KTV大写字母表示,事实上是一个单词就行。
java 中泛型标记符:
E - Element (在集合中使用,因为集合中存放的是元素)
T - Type(Java 类)
K - Key(键)
V - Value(值)
N - Number(数值类型)
? - 表示不确定的 java 类型
泛型方法
1234567891011121314package com.ydl.template;public class Test { public <T> T show(T t){ System.out.println(t); return t; } ...
5.集合
1.1 集合1.1.2 集合的体系结构集合框架被设计成要满足以下几个目标。
该框架必须是高性能的。基本集合(动态数组,链表,树,哈希表)的实现也必须是高效的。
该框架允许不同类型的集合,以类似的方式工作,具有高度的互操作性。
对一个集合的扩展和适应必须是简单的。
list系列集合:添加的元素是有序,可重复,有索引。
set系列集合:添加元素是无序,不重复,无索引
collection是单列集合的祖宗接口,它的功能是全部单列集合都可以继承使用的。
常见的方法
123456789101112131415161718192021222324252627282930313233343536373839404142434445package com.ydl.Coolection;import java.util.ArrayList;import java.util.Collection;/** * public boolean add(E e) 添加 * public void clear() 清空 * public boolean remove(E e) 删 ...
4.面向对象
1.5.1 面向对象1.5.1.1 类与对象 类是一个模板,它描述一类对象的行为和状态。定义类就是定义类的属性与行为(方法)。
1234[ 权限修饰符] [ 修饰符] class 类名{ 成员变量; 类方法;}
1234567public class Employee{ String employeeName; //类的属性 public void name(){ System.out.println(employeeName) } }
对象是类的实例,定义对象和定义变量一样。
123456789101112类名 对象名在使用对象之前必须给他分配内存,必须通过new 关键字来实现Empoyee =new Employee();Student s = new Student();Student 是一个引用数据类型s是一个变量名new Student 是一个学生对象读取数据:引用.变量名s.name修改数据:引用.变量名=值;
1.5.1.2 封装 封装可以被认 ...
3.Java基础语法
1.3 Java基础语法1.1 基础数据类型
整型 int byte short int long
浮点 类型float 单精度 double 双精度
char 字符型
布尔类型boolean
1.2 命名规范编写 Java 程序时,应注意以下几点:
大小写敏感:Java 是大小写敏感的,这就意味着标识符 Hello 与 hello 是不同的。
类名:对于所有的类来说,类名的首字母应该大写。如果类名由若干单词组成,那么每个单词的首字母应该大写,例如 MyFirstJavaClass 。
方法名:所有的方法名都应该以小写字母开头。如果方法名含有若干单词,则后面的每个单词首字母大写。
源文件名:源文件名必须和类名相同。当保存文件的时候,你应该使用类名作为文件名保存(切记 Java 是大小写敏感的),文件名的后缀为 .java。(如果文件名和类名不相同则会导致编译错误)。
1.3Java 标识符Java 所有的组成部分都需要名字。类名、变量名以及方法名都被称为标识符。
关于 Java 标识符,有以下几点需要注意:
所有的标识符都应该以字母(A-Z 或者 a-z),美元符($)、 ...
2.Java简介
1.1 Java 简介Java 是由 Sun Microsystems 公司于 1995 年 5 月推出的 Java 面向对象程序设计语言和 Java 平台的总称。由 James Gosling和同事们共同研发,并在 1995 年正式推出。
后来 Sun 公司被 Oracle (甲骨文)公司收购,Java 也随之成为 Oracle 公司的产品。
Java分为三个体系:
JavaSE(J2SE)(Java2 Platform Standard Edition,java平台标准版)
JavaEE(J2EE)(Java 2 Platform,Enterprise Edition,java平台企业版)
JavaME(J2ME)(Java 2 Platform Micro Edition,java平台微型版)。
1.2主要特性
Java 语言是简单的:
Java 语言的语法与 C 语言和 C++ 语言很接近,使得大多数程序员很容易学习和使用。另一方面,Java 丢弃了 C++ 中很少使用的、很难理解的、令人迷惑的那些特性,如操作符重载、多继承、自动的强制类型转换。特别地,Java 语言不 ...
1.jdk安装教程
JDK的安装
双击运行安装包
修改JDK安装目录
3.根据提示安装完成,这就完成jdk安装了,可以直接点关闭了。
JDK的环境配置4.“我的电脑”右键→属性→高级系统设置→环境变量
5.点击“新建”,新建系统变量JAVA_HOME,值为JDK安装根目录,安装目录是bin目录
复制刚才安装jdk的路径,bin目录下面是可执行环境
安装好了之后点击保存即可
同时按住win + R,输入cmd,回车,进入命令提示符窗口
3.docker基础
1.1 docker服务相关命令启动docker
启动docker
1systemctl start docker //启动docker
查看服务状态
1systemctl status docker //查看服务状态
停止服务
1systemctl stop docker //停止服务
重启docker
1systemctl restart docker //重启docker
开机启动
1systemctl enable docker //开机自启
1.2 docker 镜像相关命令
查看命令
1docker images
搜索镜像
1docker search redist
下载镜像
123docker pull redis docker pull redis:5.0 //指定下载
docker 官网
1http://hub.docker.com
删除镜像
12docker rmi c5da061a611a //加上iddocker rmi 名字:版本号
1.3 容器相关命令
创建容器
12345 ...