带你Java入门(Java系列1)

news2025/1/16 17:44:04

目录

前言:

1.什么是Java

2.Java的语言特点

3.初识Java的main方法

4.注释

5.标识符

6.关键字

7.1基本数据类型

7.2引用数据类型

8.变量

8.1.整形变量

8.2.长整形变量

8.3浮点型变量

8.3.1单精度浮点型

8.3.2双精度浮点型 

8.4字符型变量

8.5布尔型变量

9.类型转换

9.1自动转换

9.2强制转换

10.类型提升

10.1int与long之间

10.2byte与byte的运算

11.字符串类型

12.运算符

12.1什么是运算符

12.2算数运算符

12.3增量运算符

12.4自增自减运算符

12.5关系运算符

12.6逻辑运算符

12.7短路求值

12.8位运算符

12.9移位运算符

12.10条件运算符

13.逻辑控制

13.1顺序结构

13.2分支结构

13.3循环结构

结束语:


前言:

        之前小编一直和大家分享C语言方面的知识,如果有需要的同学可以转战小编的其他博客,接下来就让小编带你一起来走进Java吧!在这节中小编主要是讲解一些Java的基础知识,以及Java与C语言不同的地方,带你一起入门Java。带你一起体验詹姆斯·高斯林说的:“Write once,Run anywhere!”。

1.什么是Java

        Java是一种优秀的程序设计语言,它还是一个有一系列计算机软件和规范形成的技术体系。这个技术体系提供了完整的用于软件开发和跨平台部署的支持环境 ,并广泛用于嵌入式系统、移动中都阿奴、企业服务器、大型的等各种场合。

2.Java的语言特点

简单性、面向对象、分布式(微服务)、健壮性、安全性、体系结构中立、可移植性、解释性、高性能、多线程、动态性。

3.初识Java的main方法

示例:

类与方法的关系图:

解释: 

源文件(扩展名为*.java):源文件带有类的定义。类用来表示程序的一个组件,小程序或许只会有一个类。类的内容必须包含在花括号里面。

:类中带有一个或多个方法。方法必须在类的内部声明。

方法:在方法的花括号中编写方法应该执行的语句。

总结:类存在于源文件里面,方法存在于类中,语句存在于方法中。

注意:

在一个源文件中只能有一个public修饰的类,而且源文件名字必须与public修饰的类名字相同。

Java的运行环境:
JVM:是Java的运行环境。

程序运行的过程:

我们知道在下载Java时我们先要下载JDK,这个是Java的开发工具,那么在JDK下面还有JRE,JRE下来才是JVM。下面给大家解释一下它们三个的关系和概念:

JDK:(Java Development Kit)Java开发工具包,提供给Java程序员使用,包含了JRE,同时还包含了编译器,javac与自带的调试工具Jconsole、istack等。

JRE:(Java Runtime Environment):Java运行时环境,包含了JVMJava基础类库,是使用Java语言编写程序运行的所需的环境。

JVM:Java虚拟机,运行Java代码。


4.注释

注释是为了让代码更容易被读懂而附加的描述信息,不参与编译运行,但是却非常重要。

块注释:

/*
  这是块注释
*/

行注释:

//这是行注释

 文档注释:

/**

这是文档注释

*/

注释规范:

  1. 内容准确:注释内容要和代码一致,匹配,并在代码修改时及时更新。
  2. 篇幅合理:注释既不应该太精简,也不应该长篇大论。
  3. 使用中文:一般中国公司都要求使用中文写注释,外企另当别论。
  4. 积极向上:注释中不要包含负能量。

注意:

  • 多行注释不能嵌套使用 。
  • 不论是单行还是多行注释,都不参与编译,即编译后产生的class文件不包含注释。 

5.标识符

在程序中由用户给类名、方法名或者变量名所取的名字。

规则:

标识符中可以包含:字母、数字以及下划线和$符号等等。

一般情况下:

  • 类名:每个单词的首字母大写,即以大驼峰的形式写。
  • 方法名:首字母小写,后面每个单词的首字母大写(小驼峰)。
  • 变量名:与方法名规则相同。

注意:

标识符不能以数字开头,也不能是关键字,且严格区分大小写。

6.关键字

关键字是由Java语言提前定义好的,有特殊含义的标识符,或者保留字。

注意:用户不能使用关键字定义标识符!!!

基本数据类型有四类八种:

7.数据类型

用于定义访问权限修饰符的关键字
privateprotectedpubilc
用于定义类,函数,变量修饰的关键字
abstractfinalstaticsynchronize
用于定义建立实例及引用实例,判断实例的关键字
extendsimplements
用于异常处理的关键字
trycatchfinallythrowthrows
用于包的关键字
packageimport
其他修饰关键字
nativestrictfptransientvolatileassert

在数据类型中分为两大类:

  • 基本数据类型
  • 引用数据类型

那么下面我们就分别给大家介绍一下,但是这里着重讲基本数据类型。 

7.1基本数据类型

四类:整型、浮点型、字符型、布尔型。

八种:

数据类型关键字内存占用范围
字节型byte1字节-128~127
短整型short2字节-32768~32767
整型int4字节-2^31 ~ 2^31 - 1
长整型long8字节-2^63 ~ 2^63 - 1
单精度浮点型float4字节有范围,一般不关注
双精度浮点型double8字节有范围,一般不关注
字符型char2字节0 ~ 65535
布尔型boolean没有明确规定true 和 false

注意:

  • 在Java中,直接赋值不能超过数据类型所能够表达的最大范围。
  • boolean数据类型只有2个值,要么是true要么就是false,与C语言不同,不会存在0是假非0是真。
  • 不论是在16位系统还是在32位系统下,int都占用4个字节,long都占8个字节。
  • 整形和浮点型都是带有符号的。
  • 整形的默认为int型,浮点型的默认为double型。
  • 字符串属于引用数据类型。

8种基本数据类型所对应的包装类分别是:

byte

Byte

shortShort
intInteger
longLong
floatFloat
doubleDouble
booleanBoolean
char Character

注意:其中要特别注意int和char两个类型所对应的包装类。

其中包装类的概念我们在后期进行介绍,这里就简单理解为包装类就是各个类所对应的类类型是各个类的加大版,功能比原本的类更加强大。

7.2引用数据类型

前期我们就只接触两种StringByte,后期我们再对它们进行讨论,这次我们主要对基本数据类型进行讨论。

8.变量

在程序中,除了有始终不变的常量外,有些内容可能会经常改变,比如:人的年龄、身高、成绩等等,对于这些经常改变的内容,在Java程序中,称为变量,而数据类型就是用来定义不同变量的。

语法格式:

数据类型 变量名 = 初始值;

8.1.整形变量

int:

注意:

  • int无论在何种系统下都是4个字节。
  • 在定义时给定初始值,如果没有合适的,可以设置为0。
  • 在给定变量设置初始值时,值不能超过int的表示范围,否则会导致溢出。
  • 变量在使用之间必须要赋初始值,否则编译器就会报错。

8.2.长整形变量

long:
注意:

  • 长整形变量的初始值后面得加上。
  • 长整形无论在哪个系统下都占8个字节。

8.3浮点型变量

8.3.1单精度浮点型

float:

代码如下所示:

public class Test3 {
    public static void main(String[] args) {
        //数字后面加f
        float f1 = 1.2f;
        System.out.println(f1);
        //数字后面加F
        float f2 = 1.2F;
        System.out.println(f2);
    }
}

结果如下所示:

由于float所表示的范围比较小所以一般在工程中用到的是double类型的。 

8.3.2双精度浮点型 

double:

代码如下所示:

public class Test4 {
    public static void main(String[] args) {
        //当两个整数相除时会使得小数部分丢失
        int a = 1;
        int b = 2;
        System.out.println(a / b);
        //转换成浮点型后就不会丢失了
        double d1 = 1.0;
        double d2 = 2.0;
        System.out.println(d1 / d2);
    }
}

结果如下所示:

注意:

  • double在任何系统下都占8个字节。
  • 浮点数与整数在内存中存储方式不同,不能单纯的使用2^n来计算
  • double类型的内存布局遵守IEEE754标准,尝试 使用有限的内存空间表示可能无限的小数,势必会存在一定的精度误差,因此浮点数是一个近似值,并不是精确值。

8.4字符型变量

char:

代码如下所示:

public class Test1 {
    public static void main(String[] args) {
        char ch1 = '和';
        char ch2 = 'A';
        System.out.println(ch1);
        System.out.println(ch2);
    }
}

结果如下所示:

注意:

  • 在Java中使用单引号+单个字母的形式表示字符字面值。
  • 计算机中的字符本质上是一个整数,在C语言中使用ASCII码值来表示字符,而在Java中我们使用Unicode来表示字符,因此一个字符占用两个字节,表示的字符种类更多,包括中文。

8.5布尔型变量

boolean:

代码如下所示:

public class Test2 {
    public static void main(String[] args) {
        boolean b1 = true;
        boolean b2 = false;
        System.out.println(b1);
        System.out.println(b2);
    }
}

结果如下所示:

注意:

  • boolean类型的变量只有两种情况的取值,true表示真,false表示假。
  • Java中boolean类型和int类型不能相互转换,不存在1表示真,0表示假。
  • Java虚拟机规范中并没有明确规定boolean占几个字节,也没有专门用来处理boolean的字节码指令,在Oracle公司的虚拟机实现中,boolean占1个字节。

9.类型转换

类型的转换分为两种:

  • 自动类型转换(隐式)
  • 强制类型转换(显示)

9.1自动转换

自动类型转换又称为隐式转换,即代码不需要任何处理,在代码编译时,编译器会自动进行处理。

特点:

数据范围小的转换为数据范围大时会自动进行 。

代码如下所示:

public class Test5 {
    public static void main(String[] args) {
        int a = 100;
        long b = 10L;
        //数据范围小的往数据范围大的转换的时候是自动进行的
        b = a;
        System.out.println(b);
        //如果数据范围大的往数据范围小的转换时,如果不加任何处理编译器就会报错
        //a = b;
    }
}

结果如下所示:

9.2强制转换

当进行操作时代码需要进行一定的格式处理,不能自动完成。

代码如下所示:

public class Test6 {
    public static void main(String[] args) {
        int a = 10;
        float b = 1.0F;
        //如果按照下面的直接赋值的话可能会造成数据丢失,所以编译器就会报错
        //a = b;
        //经过强制类型转换后就不会报错了
        a = (int)b;
        System.out.println(a);
    }
}

结果如下所示:

注意:

  • 不同数字类型的变量之间赋值,表示范围更小的类型能隐式转换成范围较大的类型。
  • 如果需要吧范围大的类型赋值给范围小的,需要强制类型转换,但是可能精度丢失。
  • 将一个字面值常量进行赋值的时候,Java会自动针对数字范围进行检查。
  • 强制类型转换不一定能成功,不相干的类型不能互相转换。

10.类型提升

10.1int与long之间

int与long之间,int就会被提升为long。

代码如下所示:

public class Test7 {
    public static void main(String[] args) {
        int a = 10;
        long b = 20L;
        System.out.println(b / a);
    }
}


结果如下所示:

 

10.2byte与byte的运算

我们先来看一下面的这一段代码为什么会报错?

由于是byte和byte都是相同的类型,但是会出现编译报错,原因是虽然a和b都是byte,但是计算a+b时会将a和b先都提升成int型,再进行计算,得到结果也就是int型的故而会出现错误。

正确代码如下所示:

public class Test8 {
    public static void main(String[] args) {
        byte a = 10;
        byte b = 10;
        byte c = (byte)(a + b);
        System.out.println(c);
    }
}

结果如下所示:

 

11.字符串类型

在C语言中是没有String类型的,但是在Java中我们可以定义一个字符串(String)类型的变量。

代码如下所示:

public class Test9 {
    public static void main(String[] args) {
        String s1 = "hello ";
        String s2 = "world";
        //通过+可以对字符串进行拼接
        System.out.println(s1 + s2);
    }
}

结果如下所示:

有些情况下我们需要将字符串和整形数字之间进行转换:

方法一:

通过加“ ”来进行转换。

方法二:

通过String.valueOf()来进行转换。

代码如下所示:

public class Test10 {
    public static void main(String[] args) {
        int num = 10;
        //方法一:
        String str1 = num + " ";
        System.out.println(str1);
        //方法二:
        String str2 = String.valueOf(num);
        System.out.println(str2);
    }
}

结果如下所示:

 

上述是将一个int类型的值转换成String类型的值,那么如何将一个String类型的值转换成一个int类型的值呢?

我们可以通过Integer.parseInt()来进行转换。

代码如下所示:

public class Test11 {
    public static void main(String[] args) {
        String str1 = "100";
        int num = Integer.parseInt(str1);
        System.out.println(num);
    }
}

结果如下所示:

12.运算符

12.1什么是运算符

简单来说就是对操作数进行操作时的符号,不同运算符操作的含义不同,下面我们就来一一讲解一下,但是与C语言的操作符也没有太大的区别。

12.2算数运算符

基本的s四则运算符:+、-、*、/、%。

下面着重讲解一下取模(%)运算符。

我们直接拿下面的代码来讲解。

代码如下所示:

public class Test12 {
    public static void main(String[] args) {
        System.out.println(10 % 3);//1
        System.out.println(10 % -3);//1
        System.out.println(-10 % 3);//-1
        System.out.println(-10 % -3);//-1
    }
}

结果如下所示:

12.3增量运算符

增量运算符有:+=、-=、*=、%=

注意:只有变量才可以使用该运算符,常量不可以使用。 

12.4自增自减运算符

  • 自增:++
  • 自减:--

注意:

  • 如果单独使用,[前置++]和[后置++]没有任何的区别。
  • 如果混合使用,[前置++]先+1,然后使用变量加1之后的值,[后置++]先使用变量原来的值,表达式结束时给变量加1.
  • 只有变量才能使用自增/自减运算符,常量不能使用,因为常量不允许修改。 

12.5关系运算符

关系运算符有六个:==、!=、<、>、<=、>=,他们的计算结果是true或者是false。

12.6逻辑运算符

逻辑运算符必须与布尔表达式进行搭配使用。

逻辑与&&:
语法规定:

表达式1 && 表达式2,左右表达式的结果必须都是boolean类型的。

代码如下所示:

public class Test13 {
    public static void main(String[] args) {
        int a = 10;
        int b = 20;
        System.out.println(a > 2 && b < 30);
        System.out.println(a > 2 && b > 30);
        System.out.println(a < 2 && b > 30);
        System.out.println(a < 2 && b < 30);
    }
}

结果如下所示:

 特点:

  • 有假则假,同真则真。
  • 如果表达式1为真,那么就会执行表达式2,如果表达式2也为真,那么整体就为真。
  • 如果表达式1为假,那么就不会执行表达式2。

逻辑或 || :

代码如下所示:

public class Test14 {
    public static void main(String[] args) {
        int a = 10;
        int b = 20;
        System.out.println(a > 2 || b < 30);
        System.out.println(a > 2 || b > 30);
        System.out.println(a < 2 || b < 30);
        System.out.println(a < 2 || b > 30);
    }
}

结果如下所示:

特点:

  • 有真则真,同假则假。
  • 如果表达式1为假,则判断表达式2,如果表达式2为真则整体就为真。
  • 如果表达式1为真,就不会执行表达式2,整体就已经为真了。

12.7短路求值

&&和|||都遵循短路求值的规则。

我们都知道10/0是一个有问题的计算,在运行的时候编译器就会报错。

那么我们就可以以此来清楚短路求值是怎么求值的。

对于&&运算来说:

1.当前者为真时:

代码如下所示:

public class Test15 {
    public static void main(String[] args) {
        System.out.println(10 > 20 && 10 / 0 == 0);
    }
}

结果如下所示:

此时就会发生短路求值。

2.当前者为假时

代码如下所示:

public class Test16 {
    public static void main(String[] args) {
        System.out.println(10 < 20 && 10 / 0 == 0);
    }
}

结果如下所示:

 

对于||来说:

1.当前者为假时

代码如下所示:

public class Test18 {
    public static void main(String[] args) {
        System.out.println(10 > 20 || 10 / 0 == 0);
    }
}

结果如下所示:

2.当前者为真时

代码如下所示:

public class Test17 {
    public static void main(String[] args) {
        System.out.println(10 < 20 || 10 / 0 == 0);
    }
}

结果如下所示:

12.8位运算符

表示按二进制位进行运算。

  • 按位与&:同1为1,有0则0.
  • 按位或|:同0为0,有1则1.
  • 按位取反~:0变1,1变0。
  • 按位异或^:相同为0,不同为1。

12.9移位运算符

  • 左移<<:最左侧的一位就不要了,在最右侧补0。
  • 右移>>:最右侧位就不要了,在最左侧补符号位(正数补0,负数补1)。
  • 无符右移>>>:最右侧位就不要了,最左侧补0。

注意:没有无符号左移!!!

12.10条件运算符

条件运算符又叫三目运算符。

格式:表达式1 ?表达式2 : 表达式3

如果表达式1的结果为真则返回值就是表达式2的值,如果为假则返回表达式3 值。

代码如下所示:

public class Test19 {
    public static void main(String[] args) {
        int a = 10;
        int b = 20;
        int max = 0;
        max = a > b ? a : b;
        System.out.println(max);
    }
}

 

结果如下所示:

练习题:

说出下面代码输出的结果:

代码如下所示:

public class Test20 {
    public static void main(String[] args) {
        System.out.println((true == true) ? (true == true) ? false : true : true);
    }
}

结果如下所示:

 

解析:

13.逻辑控制

逻辑控制分为三大结构:

  • 顺序结构
  • 分支结构
  • 循环结构

13.1顺序结构

就是按照代码的顺序来执行。

代码如下所示:

public class Test21 {
    public static void main(String[] args) {
        System.out.println("aaa");
        System.out.println("bbb");
        System.out.println("ccc");
    }
}

结果如下所示:

13.2分支结构

我们一般见到的分支结构的语句有if-else和switch。

if-else:

注意:括号中的结果必须是布尔表达式!!!

代码如下所示:

public class Test22 {
    public static void main(String[] args) {
        int a = 10;
        int b = 20;
        if(a > b) {
            System.out.println("a > b");
        } else if(a == b){
            System.out.println("a == b");
        } else {
            System.out.println("a < b");
        }
    }
}

结果如下所示:

switch:

代码如下所示:

import java.util.Scanner;

public class Test23 {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int input = scan.nextInt();
        switch (input) {
            case 1:
            case 2:
            case 3:
            case 4:
            case 5:
                System.out.println("周内");
                break;
            case 6:
            case 7:
                System.out.println("周末");
                break;
            default:
                System.out.println("输入错误");
                break;
        }
    }
}

结果如下所示:

注意:

  • 在switch的括号中的变量不能是long、float、double、boolean!!!
  • case后面的常量值不可以重复。

13.3循环结构

循环结构我们知道的有三种:

  • while循环
  • do-while循环
  • for循环

以循环打印1~10数字为例:

while:

代码如下所示:

public class Test24 {
    public static void main(String[] args) {
        int i = 1;
        while(i <= 10) {
            System.out.print(i + " ");
            i++;
        }
    }
}


结果如下所示: 

do-while:

代码如下所示:

public class Test25 {
    public static void main(String[] args) {
        int i = 1;
        do {
            System.out.print(i + " ");
            i++;
        }while (i <= 10);
    }
}


结果如下所示:


for

代码如下所示:

public class Test26 {
    public static void main(String[] args) {
        for (int i = 1; i <= 10; i++) {
            System.out.print(i + " ");
        }
    }
}


结果如下所示: 

 

结束语:

这节小编就分享到这里啦!如果想要继续学习Java的同学们及得给小编点赞收藏加关注哦,小编会持续出有关Java方面的知识的,如果文章中有任何错误也欢迎各位大佬及时为小编指点迷津(在此小编先谢过各位大佬啦!)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/18930.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【计算机网络:自顶向下方法】(二)应用层

tm 【计算机网络&#xff1a;自顶向下方法】(二)应用层 文章目录应用层如何创建一个新的网络应用?2.1 应用层原理网络应用的体系结构对等模式(P2P:Peer To Peer)混合体&#xff1a;客户-服务器和对等体系结构进程通信分布式进程通信需要解决的问题问题1&#xff1a;进程…

CorelDRAW2023全新版功能及下载安装教程

CorelDraw2023是一款优秀的图形工具。有了它&#xff0c;不太专业的客户也可以做直观和简短的组成&#xff0c;由于其平滑和简单的用户界面。你可以一起做很多编辑工作。有了这个巨大的工具&#xff0c;你可以对你的图像、网站、商标和其他许多东西产生美丽而令人印象深刻的效果…

DJYOS驱动开发系列一:基于DJYOS的UART驱动编写指导手册

1.概述 DJYOS设计通用的串口驱动模型&#xff0c;在此模型的基础上&#xff0c;移植到不同硬件平台时&#xff0c;只需提供若干硬件操作函数&#xff0c;即可完成串口驱动开发&#xff0c;使开发工作变得简单而快速执行效率高。 DJYOS源代码都有特定的存放位置&#xff0c; 建…

DJYGUI系列文章五:GK显示器接口

1 GK显示器接口概述 显示器是图形显示的终端&#xff0c;图形的所有操作都会直接或间接的体现在显示器上面。DJYGUI支持多显示器、虚显示器和镜像显示器的功能。应用程序在调用API函数绘图前&#xff0c;需安装显示器&#xff0c;按照GK显示器标接口实现驱动函数。 GK的底层硬件…

DCS系统组态设计实验

太原理工大学控制仪表实验之DCS系统组态设计实验 DCS系统组态设计一.实验内容1.根据自己的理解&#xff0c;复述实验整体流程&#xff0c;并画出实验整体流程图。2.根据视频&#xff0c;写出DCS 信号通道接线关系表。即主控站DCS模块名称&#xff0c;模块型号&#xff0c;I/O模…

跟艾文学编程《Python基础》(5)Python的文件操作

作者&#xff1a; 艾文&#xff0c;计算机硕士学位&#xff0c;企业内训讲师和金牌面试官&#xff0c;公司资深算法专家&#xff0c;现就职BAT一线大厂。邮箱&#xff1a; 1121025745qq.com博客&#xff1a;https://wenjie.blog.csdn.net/内容&#xff1a;跟艾文学编程《Python…

linux网络编程epoll内核实现代码分析

1、linux内核epoll相关数据结构 1.1、epoll相关数据结构类图 1.2、关键数据结构说明 socket_wq结构体包含一个__wait_queue_head成员&#xff0c;__wait_queue_head用于连接wait_queue_t链表&#xff0c;对于epoll而言就是连接eppoll_entry&#xff1b; eppoll_entry包含一个e…

第七届信息类研究生学术论坛参赛有感

因为疫情不仅感叹时光飞逝&#xff0c;上了大半年的网课再次回到校园已经有师弟师妹了。今年的研究生学术论坛更卷了&#xff0c;入围了88项作品。这次科研作品征集研究生在学期间信息类相关研究成果&#xff0c;鼓励实物参展&#xff0c;包括软件系统、硬件系统等&#xff0c;…

Kubernetes(k8s)CNI(Calico)网络模型原理

文章目录一、概述二、Calico 架构和核心组件三、什么是BGP&#xff1f;三、Calico 两种网络模式1&#xff09;IPIP 模式2&#xff09;BGP 模式四、安装Calico插件1&#xff09;通过helm安装Calico2&#xff09;通过yaml文件安装3&#xff09;k8s flannel网络切换calico1、卸载f…

适配不同场景的RestTemplate

一个基本实现 如果项目里可能只是偶尔通过一个url&#xff0c;发起一个http请求&#xff0c;一个基本实现如下&#xff1a; Configuration public class RestTemplateConfiguration {Beanpublic RestTemplate restTemplate() {RestTemplate restTemplate new RestTemplate()…

项目常遇到的问题

这里写自定义目录标题1&#xff1a;uniapp生成二维码2&#xff1a;uniapp onShow接收参数3&#xff1a;javascript如何获取对象的key和value4&#xff1a;uni-app&#xff1a;页面直接传递复杂参数5&#xff1a;js对于数组元素相同的分类方法1&#xff1a;uniapp生成二维码 选择…

关联式容器(Associative Container)

1:什么是关联式容器&#xff1f; 关联式容器依照特定的排序准则 自动为元素排序 元素可以是任何类型的value 也可以是 key/value pair key可以是任何类型 映射至一个相关value 而value也可以是任意类型 通常是所有容器默认以<进行比较 也可以通过自己的比较函数 定义出不同的…

Dubbo基础

目录 什么是 RPC 那为什么要有 RPC&#xff0c;HTTP 不好么&#xff1f; RPC 的原理是什么? 如何设计一个 RPC 框架 从底向上的思路 服务消费者 服务提供者 注册中心 监控运维 小结一下 简单实现一个 RPC 框架 Dubbo 简介 Dubbo的历史 Dubbo的功能 为什么要用 …

Java语法之继承

上次给大家分享了Java的封装&#xff0c;今天小编给大家分享面向对象三大特性的第二大特性&#xff0c;也就是继承&#xff0c;fighting~~ 目录 &#x1f384;一.继承的概念 &#x1f384;1.1为什么需要继承 &#x1f384;1.2继承的概念 &#x1f384;1.3继承的语法 &#…

Android App开发中补间动画的讲解以及实现钟摆动画效果实战(附源码 简单易懂 可直接使用)

需要图片集和源码请点赞关注收藏后评论区留言~~~ 一、补间动画的种类 Android提供了补间动画&#xff0c;它允许开发者实现某个视图的动态变换&#xff0c;具体包括四种动画效果&#xff0c;分别是灰度动画&#xff0c;平移动画&#xff0c;缩放动画和旋转动画。因为开发者提供…

缓存穿透、缓存击穿、缓存雪崩区别和解决方案

生命无罪&#xff0c;健康万岁&#xff0c;我是laity。 我曾七次鄙视自己的灵魂&#xff1a; 第一次&#xff0c;当它本可进取时&#xff0c;却故作谦卑&#xff1b; 第二次&#xff0c;当它在空虚时&#xff0c;用爱欲来填充&#xff1b; 第三次&#xff0c;在困难和容易之…

【c++】类和对象

目录 1.面向过程和面向对象初步认识 2.类的引入 3.类的定义 3.1类的两种定义方式&#xff1a; 4.类的访问限定符及封装 4.1访问限定符 5.类的作用域 6.类的实例化 7.类对象模型 7.1 如何计算类对象的大小 8.this指针 8.1 this指针的引出 8.2 this指针的特性 9.类的6个默认成员函…

深度学习简介及反向传播

Datawhale开源学习&#xff0c;机器学习课程&#xff0c;项目地址&#xff1a;https://github.com/datawhalechina/leeml-notes 之前学习机器学习的时候&#xff0c;总结了三步&#xff1a; define a set of functiongoodness of functionpick the best function 这三步所做的…

机器学习之决策树【西瓜书】

当一个有经验的老农看一个瓜是不是好瓜时&#xff0c;他可能会先看下瓜的颜色&#xff0c;一看是青绿的&#xff0c;心想有可能是好瓜&#xff1b;接着他又看了下根蒂&#xff0c;发现是蜷缩着的&#xff0c;老农微微点头&#xff0c;寻思着五成以上是好瓜&#xff1b;最后他又…

基于51单片机的客车辆超载报警Proteus仿真

资料编号&#xff1a;111 下面是相关功能视频演示&#xff1a; 111-基于51单片机的客车辆超载报警Proteus仿真&#xff08;源码仿真原理图全套资料&#xff09;功能如下&#xff1a; 利用单片机设计一个超载检测控制电路。 通过 2 组红外对管(类似电路模拟)检测上车人数和下车…