首页 博客

【Hadoop篇01】Hadoop本地模式环境搭建

0

生命中真正重要的不是你遭遇了什么,而是你记住了哪些事,又是如何铭记的

Hadoop本地模式环境搭建

一.准备虚拟机环境

(1)克隆虚拟机

使用VMware克隆三台虚拟机

(2)修改主机名

vim /etc/hosts

(3)配置IP为静态IP

ifconfig

在这里插入图片描述

在这里插入图片描述在这里插入图片描述

(4)配置ip和域名之间的映射

在这里插入图片描述在这里插入图片描述

(5)创建用户, 并设置密码

useradd zhutiansama
passwd 123456

(6)给用户配置具有root权限

在这里插入图片描述

root	ALL=(ALL)	ALL
zhutiansama	ALL=(ALL)	ALL

(7)关闭防火墙

sudo chkconfig iptables off

(8)在/opt目录下创建文件夹

mkdir /opt/module

二.安装jdk

(1)使用ftp工具将jdk安装包导入到/opt/software目录下

在这里插入图片描述在这里插入图片描述

(2)解压jdk到/opt/module目录下

在这里插入图片描述

(3)配置jdk环境变量

打开etc/profile文件, 在文件末尾加入如下两行:
在这里插入图片描述修改后的文件生效
在这里插入图片描述测试JDK是否安装成功
在这里插入图片描述

三. 安装Hadoop

(1)把Hadoop安装包传递到/opt/software

(2)解压到module下

在这里插入图片描述

(3)配置Hadoop环境变量

打开/etc/profile文件, 末尾添加两行代码:在这里插入图片描述使用文件生效:
在这里插入图片描述测试是否配置成功
在这里插入图片描述

相关资料

image-20200624111507710

本文配套GitHub:https://github.com/zhutiansama/FocusBigData

本文配套公众号:FocusBigData

回复【大数据面经】【大数据面试经验】【大数据学习路线图】会有惊喜哦

文章来源:查看

Spring11——Quartz

0

Quartz:定时异步任务
任务:做什么事情;
触发器:定义时间;
调度器:将任务、触发器一一对应。
实现步骤(独立使用):
1.jar
2.任务(service):Job
3.测试方法:job、触发器、调度器

scheduler.shutdown(); 立刻关闭
scheduler.shutdown(false); 立刻关闭
scheduler.shutdown(true); 将当前任务执行完毕后再关闭

触发器:CronScheduleBuilder
依赖于Core表达式。

举例:

Spring整合Quartz框架:
1.jar :Spring+Quartz
2.调度器–>触发器(job):触发器整合任务,调度器整合触发器。
(1)将job信息封装到一个实体类中;
(2)spring配置文件;

文章来源:查看

java课程设计阶段一 个人设计

0

目 录

1 选题………………………………………………………………………………………………………….. 1

2 系统需求分析……………………………………………………………………………………………… 2

2.1 系统可行性分析…………………………………………………………………………………………2

2.2 系统需求分析……………………………………………………………………………………………. 2

2.3 项目进度安排……………………………………………………………………………………………. 3

3 系统设计…………………………………………………………………………………………………….. 4

3.1 系统设计………………………………………………………………………………………………….. 4

4 系统实现…………………………………………………………………………………………………….. 8

4.1 算术运算测试……………………………………………………………………………………………. 8

4.2 猜数游戏…………………………………………………………………………………………………… 9

5 结论和心得………………………………………………………………………………………………….. 11

1 选题

选题一

算术运算测试

题目要求

实现十道100以内加减法数学题,能根据题目计算出答案,

与输入答案对比,判断做题是否正确,最后计算分数。

添加排行榜功能存放到文件或数据库中。

使用Java知识

Java基本输入输出

运算符

循环

选择分支

GUI

选题二

猜数游戏

题目要求

计算机产生随机数,猜中即胜,

猜不中,提示是大了还是小了,继续猜,

直至猜到,给出所用时间和评语。

保留用户测试成绩,做出成绩排行榜。排行榜存放到文件或数据库中。

使用Java知识

循环

分支

变量

常用类

文件

等.

2 系统需求分析

2.1 系统可行性分析

    技术可行性:

      算术运算测试:(1)GUI图形用户界面

         (2)生成随机数,进行加减法运算

      猜数游戏:(1)产生0–100的随机数

           (2)获取开始和结束时间

         (3)用for循环来控制猜数,直到猜对为止

           (4)文件管理

    操作可行性:

      只需要用户有一台计算机即可,因此在操作上是可行的。

2.2 系统需求分析

算术运算测试:

实现十道100以内加减法数学题,能根据题目计算出答案,

与输入答案对比,判断做题是否正确,最后计算分数。

猜数游戏:

计算机产生随机数,猜中即胜,猜不中,提示是大了还是小了,继续猜,

直至猜到,给出所用时间和评语。保留用户测试成绩,做出成绩排行榜。排行榜存放到文件中

图1-1 算术运算测试

图1-2 猜数游戏

2.3 进度安排

阶段一进度安排如表3-1所示。

表3-1 进度安排表

阶段

持续时间

阶段描述

输出

构思阶段

1小时

需求分析

需求说明,功能模块图

设计阶段

1小时

系统设计

设计说明-可以画流程图;数据库设计

实现阶段

1天半

编写代码

项目工程源代码

1小时

系统测试

进行黑盒测试(功能测试)-测试说明

运行阶段

1小时

部署、运行

系统使用说明、运维报告、录制视频

3 系统设计

3.1 系统设计

项目一:算术运算测试:

(1)图形界面化设计:

   JFrame jf = new JFrame();//创建窗口

JPanel jp = new JPanel();//创建面板

JLabel jl = new JLabel();//创建标签 显示题目

JLabel jl2 = new JLabel();//创建标签 显示结果正确与否

JButton jb = new JButton(“提交”);//创建“提交”按钮

JButton jb2 = new JButton(“下一题”);//创建“下一题”按钮

  JTextField jtf = new JTextField();//创建文本框 输入答案

  jf.setSize(500, 500);//调整窗口大小 宽,长

jf.add(jp);//往窗口中添加面板

jp.setLayout(null);//设置布局管理器为空

jp.add(jl);//添加标签 此标签显示题目

jl.setBounds(18, 18, 100, 30);//调整标签位置 大小 x,y,宽,高

jp.add(jl2);//添加标签 此标签显示结果正确与否

jl2.setBounds(60, 100, 250, 70);

jp.add(jtf);//添加文本框用户输入答案

jtf.setBounds(120, 18, 40, 30);

jp.add(jb);//添加“提交”按钮

jb.setBounds(10, 60, 80, 40);

jp.add(jb2);//添加“下一题”按钮

jb2.setBounds(100, 60, 80, 40);

jf.setVisible(true);//true使Window可见,否则隐藏Window

  jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);//设置用户在此框架上启动“关闭”时默认执行的操作。退出应用程序默认窗口关闭操作 在窗口被关闭时退出JVM

(2)随机生成两个0—100的数:

Random ran = new Random();

num1 = (int)(Math.random()*100);

num2 = (int)(Math.random()*100);

(3)响应用户点击“提交”按钮:

jb.addActionListener(new ActionListener() {

@Override

public void actionPerformed(ActionEvent e) {

int s=Integer.parseInt(jtf.getText());//将用户输入的答案字符串转化成十进制数

if(s==sum) {

jl2.setText(“恭喜您,回答正确!”);

score+=10;

}else {

jl2.setText(“很遗憾,回答错误。 正确答案:”+sum);

}

}

});

(4)响应用户点击“下一题”按钮:

  jb2.addActionListener(new ActionListener() {

@Overrid

public void actionPerformed(ActionEvent e) {

Random ran = new Random();

num1 = (int)(Math.random()*100);

num2 = (int)(Math.random()*100);

sum=0;

temp=(int)(Math.random()*10)%2;//若temp为0则加法 1为减法

if(temp==0) {

count++;

jl.setText(“第”+count+”题:”+num1+”+”+num2+”=”);

sum=num1+num2;

}else {

count++;

jl.setText(“第”+count+”题:”+num1+”-“+num2+”=”);

sum=num1-num2;

}

if(count==11) {

JOptionPane j = new JOptionPane();//提示框

j.showMessageDialog(jf, “您的得分是:”+score);

jf.setVisible(false);//关闭窗口

}

}

});

(5)主函数:

public static void main(String[] args) {

Arithmetic a = new Arithmetic();

a.produce();

}

项目二猜数游戏:

(1)录入玩家人数并输入名字:

Scanner p=new Scanner(System.in);

System.out.println(“请输入玩家人数:”); //游戏人数

int person=p.nextInt();

  System.out.println(“请输入您的代号:”);

String name = p.next();

(2)生成随机数:

Random ran=new Random();

number=ran.nextInt(100); //产生0–100的随机数

(3)猜数过程:

int guessNumber=-1;

for(int j=0;guessNumber!=number;j++) { //用for循环来控制猜数,直到猜对为止

guessNumber=p.nextInt(); //录入用户猜的数

count++; //猜一次,加一次

if(guessNumber>number) {//将用户猜的数与随机数进行比较

System.out.println(“您猜的太大了,请往小一点猜”);

continue;

}

else if(guessNumber<number) {

System.out.println(“您猜的太小了,请往大一点猜”);

continue;

}else if(number==guessNumber) {

end=System.currentTimeMillis(); //猜对了 记录结束时间

time=(end-start)/1000;

if(count<7)

System.out.println(“真厉害,恭喜你,猜对了!”);

else if(count>7) {

System.out.println(“你终于猜对了。”);

}

}

(4)时间:

double start=0.0; //开始时间

double end=0.0; //结束时间

double time=0.0;//计算所用时间

start = System.currentTimeMillis(); //获取开始时刻

end=System.currentTimeMillis(); //猜对了 记录结束时间

time=(end-start)/1000;

(5)信息录入:

try {

w=new FileWriter(“info.txt”,true);

w.write(“代号:”);

w.write(name);

w.write(“\r\n”);

w.write(“猜数所用次数:”);

String count1= Integer.toString(count);

w.write(count1);

w.write(” 次 \r\n”);

w.write(“花费时间:”);

String time1=Double.toString(time);

w.write(time1);

w.write(” 秒 \r\n\n”);

System.out.println(“玩家信息已读入”);

} catch (IOException e) {

e.printStackTrace();

}finally {

try {

w.close();

} catch (IOException e) {

e.printStackTrace();

}

}

(6)排名:

try {

fw = new FileWriter(“rank.txt”,true);

fw.write(“排名(倒序):\n”);

for(double s1:s) {

String s2= Double.toString(s1);

fw.write(s2);

fw.write(“\n”);

}

} catch (IOException e) {

e.printStackTrace();

}finally {

try {

fw.close();

} catch (IOException e) {

e.printStackTrace();

}

}

4 系统实现

4.1 算术运算测试

4.2 猜数游戏

5 结论和心得

项目一算术运算测试:第一次使用到GUI图形界面设计,通过跟着老师视频学习和网上资料慢慢学会点这部分的内容,窗口、面板、标签、按钮、文本框,组合到了一起变成一个带有一点功能的小窗口。特别的是点击一个按钮之后的响应,这方面是我觉得这次实训收获最大的地方,因为原来都不懂,觉得很神奇,这次的实训则帮我揭开了这层神秘的面纱。通过一个ActionListenr按钮(类似一个监听器)来响应用户点击按钮,而ActionListenr其实是一个接口,里面有一个actionPerformed(ActionEvent e)方法,来具体实现。

项目二猜数游戏:这个项目巩固了前面大部分所学的知识 变量、循环、数组、条件判断、常用类、异常处理、文件读写等,更加提高了我的编程能力。让我发现了我在数组和文件处理方面还是要加强的,基础没有太牢固。

以后要多动手,提高自己的编程能力。基础是最重要的,只有基础牢固才能写对代码。学习Java要脚踏实地,要更有信心和耐心。多向老师、同学请教讨论。

文章来源:查看

【Hadoop篇02】Hadoop完全分布式环境搭建

0

优于别人,并不高贵,真正的高贵应该是优于过去的自己

Hadoop完全分布式环境搭建

编写分发文件脚本

应用场景如下:比如有三台主机master1,slave1,slave2

如果简历完全分布式的集群就需要将文件从master1拷贝到slave从机上

那么可以使用rsync命令分发单个文件,也可以使用如下脚本分发文件夹或者文件

#!/bin/bash

#1 获取输入参数个数,如果没有参数,直接退出
# $#代表获得命令行参数个数
pcount=$#
if((pcount==0)); then
echo no args;
exit;
fi

#2 获取文件名称
# $1代表获得命令行第一个参数
p1=$1
fname=`basename $p1`
echo fname=$fname

#3 获取上级目录到绝对路径
pdir=`cd -P $(dirname $p1); pwd`
echo pdir=$pdir

#4 获取当前用户名称
user=`whoami`

#5 rsync命令可以分发文件到指定主机
# 这里slave就是从机的机名
for((host=1; host<3; host++))
do
        echo ------------------- slave$host --------------
        rsync -rvl $pdir/$fname $user@slave$host:$pdir
done

集群规划

hadoop102 hadoop103 hadoop104

HDFS
NameNodeDataNode
DataNode
SecondaryNameNode
DataNode

YARN
NodeManager
ResourceManager
NodeManager
NodeManager

配置集群

配置文件都在hadoop2.7.2/etc/hadoop下

配置core-site.xml

<!-- 指定HDFS中NameNode的地址 -->
<property>
		<name>fs.defaultFS</name>
      <value>hdfs://hadoop102:9000</value>
</property>

<!-- 指定Hadoop运行时产生文件的存储目录 -->
<property>
		<name>hadoop.tmp.dir</name>
		<value>/opt/module/hadoop-2.7.2/data/tmp</value>
</property>

配置hadoop-env.sh

export JAVA_HOME=/opt/module/jdk1.8.0_144

配置hdfs-site.xml

<!-- 指定副本数量 -->
<property>
		<name>dfs.replication</name>
		<value>3</value>
</property>

<!-- 指定SecondaryNamenode主机配置 -->
<property>
      <name>dfs.namenode.secondary.http-address</name>
      <value>hadoop104:50090</value>
</property>

配置yarn-env.sh

export JAVA_HOME=/opt/module/jdk1.8.0_144

配置yarn-site.xml

<!-- reducer获取数据的方式 -->
<property>
		<name>yarn.nodemanager.aux-services</name>
		<value>mapreduce_shuffle</value>
</property>

<!-- 指定YARN的ResourceManager的地址 -->
<property>
		<name>yarn.resourcemanager.hostname</name>
		<value>hadoop103</value>
</property>

配置mapred-env.sh

export JAVA_HOME=/opt/module/jdk1.8.0_144

配置mapred-site.xml

【需要拷贝mapred-site.xml.template 然后重命名即可】

<!-- 指定mr运行在yarn上 -->
<property>
		<name>mapreduce.framework.name</name>
		<value>yarn</value>
</property>

分发配置到集群中

# xsync就是刚刚编写的分发脚本
xsync /opt/module/hadoop-2.7.2/

集群格式化

# 这部分必须没有报错才行,不然就重来一篇,必须在hadoop根目录下执行
hadoop namenode -format

集群启动测试

在主机hadooop102在sbin目录下,运行start-dfs.sh启动HDFS
在主机hadooop103在sbin目录下,运行start-yarn.sh启动yarn
然后使用jps查看进程即可

image-20200513145208176

相关资料

image-20200624111507710

本文配套GitHub:https://github.com/zhutiansama/FocusBigData

本文配套公众号:FocusBigData

回复【大数据面经】【大数据面试经验】【大数据学习路线图】会有惊喜哦

文章来源:查看

Java–MVC开发模式

0

Java–MVC开发模式

博客说明

文章所涉及的资料来自互联网整理和个人总结,意在于个人学习和经验汇总,如有什么地方侵权,请联系本人删除,谢谢!

Jsp演变历史

  1. 早期只有servlet,只能使用response输出标签数据,非常麻烦
  2. 后来又jsp,简化了Servlet的开发,如果过度使用jsp,在jsp中即写大量的java代码,有写html表,造成难于维护,难于分工协作
  3. 再后来,java的web开发,借鉴mvc开发模式,使得程序的设计更加合理性

MVC开发模式

示意图

image-20200628111127740

再来一张

image-20200628111826407

M:Model–模型–JavaBean

Model层:Model指模型部分,一般在应用中Model层包括业务处理层Service和数据访问层Dao。数据访问层主要是对数据库的一些操作的封装。业务处理层主要是用作将从Controller层获取的数据和数据库的数据进行桥接。除此以外,对复杂业务逻辑进行处理,比如事务处理

  • 完成具体的业务操作,如:查询数据库,封装对象
V:View–视图–JSP

View层:View指视图部分,这一部分的内容是展示给用户实际进行交互的,通常使用JSP和HTML进行构建

  • 展示数据
C:Controller–控制器–Servlet

Controller层:Controller指控制部分,一般是对View层提交的请求为其设置对应的Servlet进行特定功能的处理,这里的进行特定功能的处理一般是编写在Model中的业务处理层中的。Controller一般只是在Web应用中充当一个中介者的作用

  • 获取用户的输入
  • 调用模型
  • 将数据交给视图进行展示

优缺点

  1. 优点:

    • 耦合性低,方便维护,可以利于分工协作

    • 重用性高

  2. 缺点:

    • 使得项目架构变得复杂,对开发人员要求高

感谢

黑马程序员

万能的网络

以及勤劳的自己
关注公众号: 归子莫,获取更多的资料,还有更长的学习计划

文章来源:查看

Springboot自定义打包

0

学习记录1–Springboot的Maven自定义打包

在以往的开发中,Springboot应用默认打成一个jar,虽然方便但是会有很多问题,比如不方便修改配置文件,修改一个处代码就要更新整包等等,而maven中也有这样的插件可以给我们提供帮助

  • 复制引用依赖插件
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-dependency-plugin</artifactId>
    <executions>
        <execution>
            <id>copy-dependencies</id>
            <phase>prepare-package</phase>
            <goals>
                <goal>copy-dependencies</goal>
            </goals>
        </execution>
    </executions>
    <configuration>
        <!-- 指定输出依赖的位置 -->
        <outputDirectory>lib</outputDirectory>
        <overWriteReleases>false</overWriteReleases>
        <overWriteSnapshots>false</overWriteSnapshots>
        <overWriteIfNewer>true</overWriteIfNewer>
    </configuration>
</plugin>
  • 使用jar插件打成jar包
 <plugin>
  <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-jar-plugin</artifactId>
    <configuration>
        <archive>
            <manifest>
                <addClasspath>true</addClasspath>
                 <!-- 指定依赖加载路径 -->
                <classpathPrefix>lib/</classpathPrefix>
                 <!-- 指定主类 -->
                <mainClass>club.menglinking.wx.WxApplication</mainClass>
            </manifest>
        </archive>
        <excludes>
            <!-- 排除配置文件和静态文件 -->
            <exclude>**/*.properties</exclude>
            <exclude>**/*.yml</exclude>
            <exclude>static/**</exclude>
            <exclude>templates/**</exclude>
        </excludes>
    </configuration>
</plugin>                    
  • 使用assembly自定义打包
<plugin>
  <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-assembly-plugin</artifactId>
    <configuration>
        <descriptors>
             <!-- 打包配置文件的路径 -->
            <descriptor>bin/package.xml</descriptor>
        </descriptors>
    </configuration>
    <executions>
        <execution>
            <!-- 绑定插件到生命周期 -->
            <id>make-assembly</id>
            <phase>package</phase>
            <goals>
                <goal>single</goal>
            </goals>
        </execution>
    </executions>
</plugin>
  • 打包示例配置文件
<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.3"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.3 http://maven.apache.org/xsd/assembly-1.1.3.xsd">
    <!-- 保证唯一 -->
    <id>weChat</id>
    <!-- 打成的分发包格式,推荐windows和linux双平台包 -->
    <formats>
        <format>zip</format>
        <format>tar.gz</format>
    </formats>

    <includeBaseDirectory>true</includeBaseDirectory>
    <fileSets>
        <fileSet>
            <directory>bin</directory>
            <outputDirectory>/</outputDirectory>
            <includes>
                <include>*.bat</include>
                <include>*.sh</include>
                <include>*.xml</include>
            </includes>
        </fileSet>
        <fileSet>
            <directory>target</directory>
            <outputDirectory>/</outputDirectory>
            <includes>
                <include>*.jar</include>
            </includes>
        </fileSet>
        <fileSet>
            <directory>lib</directory>
            <outputDirectory>lib/</outputDirectory>
            <includes>
                <include>*.jar</include>
            </includes>
        </fileSet>
        <fileSet>
            <directory>src/main/resources</directory>
            <outputDirectory>/config</outputDirectory>
            <includes>
                <include>*.properties</include>
            </includes>
        </fileSet>
        <fileSet>
            <directory>src/main/resources/static</directory>
            <outputDirectory>/static</outputDirectory>
            <includes>
                <include>**/*</include>
            </includes>
        </fileSet>
    </fileSets>
    <files>
        <file>
            <source>README.md</source>
            <outputDirectory>/</outputDirectory>
        </file>
    </files>
</assembly>

打包完成之后,配置文件,静态文件,依赖和代码分离,修改代码后只需要把打成的jar覆盖即可完成增量更新(在没有新引入依赖的情况下),生成的jar会远远小于springboot打的全量包

文章来源:查看

JSP–EL表达式

0

JSP–EL表达式

博客说明

文章所涉及的资料来自互联网整理和个人总结,意在于个人学习和经验汇总,如有什么地方侵权,请联系本人删除,谢谢!

概念

Expression Language 表达式语言

JSP表达式语言(EL)使得访问存储在JavaBean中的数据变得非常简单。JSP EL既可以用来创建算术表达式也可以用来创建逻辑表达式。在JSP EL表达式内可以使用整型数,浮点数,字符串,常量true、false,还有null

作用

替换和简化jsp页面中java代码的编写

语法

${表达式}

注意

  • jsp默认支持el表达式的。如果要忽略el表达式

    设置jsp中page指令中

    isELIgnored="true" 忽略当前jsp页面中所有的el表达式
    
  • 忽略当前这个el表达式

    \${表达式} 
    

使用

运算
  • 运算符:
    1. 算数运算符: + – * /(div) %(mod)
    2. 比较运算符: > < >= <= == !=
    3. 逻辑运算符: &&(and) ||(or) !(not)
    4. 空运算符: empty
      • 功能:用于判断字符串、集合、数组对象是否为null或者长度是否为0
      • ${empty list}:判断字符串、集合、数组对象是否为null或者长度为0
      • ${not empty str}:表示判断字符串、集合、数组对象是否不为null 并且 长度>0
获取值
  1. el表达式只能从域对象中获取值

  2. 语法:

    1. ${域名称.键名}:从指定域中获取指定键的值

      • 域名称:
        1. pageScope –> pageContext
        2. requestScope –> request
        3. sessionScope –> session
        4. applicationScope –> application(ServletContext)
      • 举例:在request域中存储了name=张三
      • 获取:${requestScope.name}
    2. ${键名}:表示依次从最小的域中查找是否有该键对应的值,直到找到为止。

    3. 获取对象、List集合、Map集合的值

      1. 对象:${域名称.键名.属性名}

        • 本质上会去调用对象的getter方法
      2. List集合:${域名称.键名[索引]}

      3. Map集合:

        • ${域名称.键名.key名称}

        • ${域名称.键名["key名称"]}

感谢

黑马程序员

万能的网络

以及勤劳的自己
关注公众号: 归子莫,获取更多的资料,还有更长的学习计划

文章来源:查看

编程基础之Java中继承和多态的理解

0

JAVA中继承和多态的理解

继承的概念

继承是java面向对象编程技术的一块基石,因为它允许创建分等级层次的类。

继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。

类的继承格式

在Java中通过extends关键字可以申明一个类是从另外一个类继承而来的,一般形式如下:

类的继承格式

class父类{}class子类extends父类{}

首先我们探讨下为什么需要继承呢????

首先继承通俗的白话文呢就是就是把共有的是特征给提炼到出来

继承的特性

1.子类拥有父类非private的属性,方法

2.子类可以拥有自己的属性和方法,即子类可以对父类进行扩展

3.子类可以用自己的方式实现父类的方法

4.一个子类只能有一个父类一个父类能有多个继承

继承关键字

继承可以使用extends和implements这俩个关键字来实现继承而且所有的类都多是继承于java。lang.Object当一个类没有继承得到俩个关键字,则默认继承object(这个类java.lang包中,所以不需要import)

final关键字

不让其类再有子类

多态

就是普通方法普通类有一个方法名相同参数形式相同就能构成多态

铛铛铛!!!前方高能!

这是我已经建立了5年的Java经验分享群926452303,里面有大量关于Java的资源,有需要可以去下载。更重要的是,群文件资料是免费提供给大家提供很多关于学习Java的建议,承诺全部免费不收任何费用,就是想把这个圈子最好,积累人气。

文章来源:查看

【JAVA SE基础篇】38.异常机制和运行时异常

0

1.初识异常

异常(Exception):软件程序在运行的过程中可能遇到的问题叫做异常。

JAVA中面对异常提供了方便的处理方式,java的异常机制

本质:程序出现错误后,程序可以安全的退出。

java是采用面向对象的方式来处理异常。处理过程:

1.抛出异常:在执行一个方法时,如果发生异常,则这个方法生成代表该异常的一个对象,停止当前执行路径,并把异常对象提交给JRE.。

2.捕获异常:JRE得到该异常后,寻找相应的代码来处理该异常。JRE在方法的调用栈中查找,从生成异常的方法开始回溯,直到找到相应的异常处理代码为止。

例:

2.异常的分类

Throwabel是java.lang包下的异常类,Error(错误)和Excepiton(异常)都是其分支,error发生时直接重启虚拟机即可。

Throwable

-Error(错误)

–UncheckedException

-Exception(异常)

–CheckedException(编译时异常)

–RuntimeException(运行时异常)

Exception是程序本身可以处理的异常,如:空指针,数组下标越界,类转型,算数。

Exception是所有异常类的父类,其子类对了各种的异常事件。

3.RuntimeException

运行时异常多数时候都是逻辑错误,需要逻辑处理来避免这些异常。

例:

空指针异常(NullPointerException)为最常见的运行时异常

对象为空再去调用其属性和方法

例:

强制转型异常(ClassCastException):

数组越界异常(ArrayIndexOutOfBoundsException):

注:运行时异常是需要程序去检查的,并在逻辑上判断并进行修改。

文章来源:查看

Java自学课程视频教程,从入门到精通

0

最近也有很多人来向小编”请教”,他们大都是一些刚入门的新手,还不了解这个行业,也不知道从何学起,开始的时候非常迷茫,实在是每天回复很多人也很麻烦,所以在这里小编总结一些基础课程:

基础阶段

首先是基础阶段,在基础阶段,我们必须掌握Java基础,Mysql数据库,Oracle数据库,JDBC,Linux基础,Java8新特性,数据结构和算法,设计模式。

对于基础阶段,我们所要掌握的就是基础,虽然是基础,但学起来也够呛。因为是初学者,所以基础阶段会有一点难度,但只要肯坚持,这些也没什么难的。对于Linux、数据结构、算法和设计模式我们掌握一些基础就行了,也没必要学得非常透彻。

Web基础

基础阶段过后,我们还必须要掌握一些Web方面的知识,Html,JavaScript,JQuery和AJax,同样的,对于这些知识,我们只需掌握基础,而不需要深究,否则,你将耗费大量的时间。

JavaWeb

Web阶段过后,当然就是JavaWeb了,对于JavaWeb,我们需要掌握的知识有:Servlet,JSP,MVC设计模式,Cookie,Session,JavBean组件技术,EL表达式,JSTL表达式,过滤器Filter,监听器Listener,文件的上传下载,国际化。

JavaEE

最后是JavaEE阶段,当你学到这个阶段,你对Java的程序开发已经了如指掌。然而,自己开发的过程是艰难而复杂的,所以JavaEE阶段我们需要去学习一些非常优秀的框架,来帮助我们进行程序开发。

对于框架,我们需要学习Struts2,Hibernate,Spring,SpringMVC,JPA,SpringData,MyBatis,Spring Boot,Spring Cloud,Dubbo。要学习的框架其实非常多,有些框架也十分有难度,我们在学习阶段只要能够熟练使用它们即可,有能力的话可以研究一下源码,看看框架的底层实现。当然,除了框架,我们还需要学习Maven,Git,Github,ActiveMQ,Jenkins等。

在JavaEE阶段学习的东西是最多的,但如果你经历了JavaEE阶段的学习,你的编程水平将会有质的飞跃。

2020年最新Java基础精讲视频教程(Java 0基础&&深入学习,Java初学入门 第一章)

如果你也正在学习Java或者想要了解Java,渴望成为一名合格的Java开发工程师,你可以申请加入我的Java自学资料学习交流群:926452303 知识体系整理好(源码,笔记,PDF教程,学习视频)免费领取

版权所属:归原作者所有

java交流学习资源大全文件下载地址:https://jq.qq.com/?_wv=1027&k=jx7ERZrp学习手册,面试题,开发工具,PDF文档书籍教程

声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!

文章来源:查看