Java开发从入门到精通(一):Java的基础语法进阶

Java大数据开发和安全开发

  • (一)Java注释符
    • [1.1 单行注释 //](#1.1 单行注释 //)
    • [1.2 多行注释 /* */](#1.2 多行注释 /* */)
    • [1.3 文档注释 /** */](#1.3 文档注释 /** */)
    • [1.4 各种注释区别](#1.4 各种注释区别)
    • [1.5 注释的特点](#1.5 注释的特点)
    • [1.5 注释的快捷键](#1.5 注释的快捷键)
  • (二)Java的字面量
  • (三)Java的变量
    • [3.1 认识变量](#3.1 认识变量)
    • [3.2 为什么要用变量?](#3.2 为什么要用变量?)
    • [3.3 变量在计算机中的执行原理](#3.3 变量在计算机中的执行原理)
    • [3.4 变量的特点](#3.4 变量的特点)
    • [3.5 变量的应用](#3.5 变量的应用)
    • [3.6 变量的总结](#3.6 变量的总结)
    • [3.7 变量的注意事项](#3.7 变量的注意事项)
  • (四)Java关键字和标识符
    • [4.1 关键字](#4.1 关键字)
    • [4.2 标识符](#4.2 标识符)
  • (五)变量的详解
    • [5.1 二进制](#5.1 二进制)
    • [5.2 十进制转二进制的算法](#5.2 十进制转二进制的算法)
    • [5.3 计算机中表示数据的最小单元](#5.3 计算机中表示数据的最小单元)
    • [5.4 其他数据形式是如何存储的](#5.4 其他数据形式是如何存储的)
      • [5.4.1 字符在计算机中是如何存储的](#5.4.1 字符在计算机中是如何存储的)
      • [5.4.2 图片在计算机中是如何存储的](#5.4.2 图片在计算机中是如何存储的)
    • [5.5 二进制转十进制](#5.5 二进制转十进制)
    • [5.6 八进制和十六进制](#5.6 八进制和十六进制)
    • [5.7 计算机的数据单位](#5.7 计算机的数据单位)
  • (六)Java的数据类型
    • [6.1 **`数据类型的分类`**](#6.1 数据类型的分类)
    • [6.2 基本数据类型](#6.2 基本数据类型)
    • [6.2 引用数据类型](#6.2 引用数据类型)
    • [6.3 类型转换](#6.3 类型转换)
      • [6.3.1 自动类型转换](#6.3.1 自动类型转换)
      • [6.3.2 表达式的自动类型转换](#6.3.2 表达式的自动类型转换)
      • [6.3.3 强制类型转换](#6.3.3 强制类型转换)
  • (七)运算符
    • [7.1 算数运算符](#7.1 算数运算符)
    • [7.2 自增自减运算符](#7.2 自增自减运算符)
    • [7.3 赋值运算符](#7.3 赋值运算符)
    • [7.4 关系运算符](#7.4 关系运算符)
    • [7.5 逻辑运算符](#7.5 逻辑运算符)
    • [7.6 三元运算符](#7.6 三元运算符)
    • [7.7 运算符的优先级](#7.7 运算符的优先级)
  • (八)键入数据

(一)Java注释符

注释是写在程序中对代码进行解释说明的文字,方便自己和其他人查看,以便理解程序的。

1.1 单行注释 //

java 复制代码
public class NoteDemo {
    public static void main(String[] args) {
        // 以下是一个打印语句,是往控制台输出内容的
        System.out.println("hello world");
        
    }
}

1.2 多行注释 /* */

java 复制代码
public class NoteDemo {
    public static void main(String[] args) {
        System.out.println("hello world");
        /*
        System.out.println("hello world");
        System.out.println("hello world");
        System.out.println("hello world");
         */

    }
}

1.3 文档注释 /** */

java 复制代码
/**
 目标:学会使用注释
 这个程序就是讲解注释的
 */
public class NoteDemo {
    public static void main(String[] args) {
        System.out.println("hello world");
    }
}

1.4 各种注释区别

1.5 注释的特点

注释不影响程序的执行

1.5 注释的快捷键

(二)Java的字面量

计算机是用来处理数据的,字面量就是告诉程序员:数据在程序中的书写格式,也就是各种数据在java中怎么表达,比如数字,字符,字符串怎么表达

java 复制代码
public class LiteralDemo {
    public static void main(String[] args) {
        // 目标:需要同学们掌握常见数据在程序中的书写格式吧。
        // 1、整数
        System.out.println(666);

        // 2、小数
        System.out.println(99.5);

        //3、字符:必须要用单引号围起来,有且只能有一个字符
        System.out.println('a');
        System.out.println('0');
        System.out.println('中');
        // System.out.println('中国');  两个字符
        System.out.println(' ');  //空字符
        // System.out.println(''); 不能不写
        // 特殊的字符:\n 代表的是换行的意思  \t代表的是一个tab
        System.out.println('中');
        System.out.println('\n');
        System.out.println('国');
        System.out.println('\t');

        // 4、字符串:必须用双引号围起来,里面的内容其实可以随意
        System.out.println("我爱你中国abc");
        System.out.println(" ");
        System.out.println("");
        System.out.println("我");
        // 5、布尔值:只有2个值 truefalse
        System.out.println(true);
        System.out.println(false);
    }
}

(三)Java的变量

变量的学习路径

3.1 认识变量

什么是变量 ?

  • 变量是用来记住程序要处理的数据的。

变量的定义格式

java 复制代码
int age = 23;

3.2 为什么要用变量?

  • 使用变量记要处理的数据,编写的代码更灵活,管理代码更方便。
java 复制代码
public class VariableDemo {
    public static void main(String[] args) {
        // 目标:认识变量,掌握使用变量的好处,变量的特点,应用场景。
        // 1、定义一个整型变量记住一个整数
        // 数据类型 变量名= 数据;
        // 注意:=在Java中是赋值的意思,从右往左看
        int age = 23;
        System.out.println(age);
        // 2、记住一个人的成绩
        double score = 99.5;
        System.out.println(score);
        System.out.println("----");
        //3、使用变量的好处:便于扩展和维护。
        System.out.println(666);  //想把666改成888 需要每个都改
        System.out.println(666);
        System.out.println(666);
        int number = 888;
        System.out.println(number); //想把888改成666 只需要改变量即可,这就是便于维护
        System.out.println(number);
        System.out.println(number);
        System.out.println(number);
    }
}

3.3 变量在计算机中的执行原理

  • 变量就是内存中的一块区域,可以理解成一个盒子,用来装一个数据的!

3.4 变量的特点

变量中装的数据是可以被替换的

java 复制代码
		// 4、变量的特点:里面装的数据可以被替换
        int age2 = 18;
        System.out.println(age2);
        age2 = 19;//赋值:从右边往左边执行
        System.out.println(age2);
        age2= age2 + 1;// 赋值:从右边往左边执行
        System.out.println(age2);

3.5 变量的应用

写程序对数据进行处理就很方便

java 复制代码
		// 5、需求:钱包有9.5元,收到了10元红包,又发出去了5元红包,请输出各阶段钱包的情况
        double money=9.5;// 钱包
        System.out.println(money);

        // 收红包10元。
        money = money + 10;
        System.out.println(money);

        // 发出去5元。
        money = money - 5;
        System.out.println(money);

3.6 变量的总结

3.7 变量的注意事项

(四)Java关键字和标识符

4.1 关键字

  • Java语言自己用到的一些词,有特殊作用的,我们称之为关键字,如:public、class、int、double...

  • 注意:关键字是java用了的,我们就不能用来为做为:类名、变量名,否则会报错!

4.2 标识符

标志符就是名字,我们写程序时会起一些名字,如类名变量名等等都是标识符。

标识符的要求

  • 基本组成:由数字、字母、下划线()和美元符($)等组成
  • 强制要求:不能以数字开头、不能用关键字做为名字、且是区分大小写的。

标识符的建议规范

  • 变量名称:满足标识符规则,同时建议用英文、有意义、首字母小写,满足"驼峰模式"例如:int studyNumber = 59;
  • 类名称:满足标识符规则,建议全英文、有意义、首字母大写,满足"驼峰模式",例如: HelloWorld, Student

(五)变量的详解

数字是以二进制的形式存储的

5.1 二进制

  • 只有0、1,按照逢2进1的方式表示数据

5.2 十进制转二进制的算法

5.3 计算机中表示数据的最小单元

  • 计算机中表示数据的最小单元:一个字节(bvte,简称B,是使用8个二进制位组成的)
  • 字节中的每个二进制位就称为位(bit,简称b),1B=8b

5.4 其他数据形式是如何存储的

5.4.1 字符在计算机中是如何存储的

java 复制代码
public class ASCIIDemo {
    public static void main(String[] args) {
        // 目标:掌握ASCII编码表的编码特点。
        System.out.println('a'+10);//97 + 10 = 107   a的值对应的是编码表里的值97
        System.out.println('A'+10);//65 + 10 = 75
        System.out.println('0'+10);//48 + 10 = 58
    }
}

5.4.2 图片在计算机中是如何存储的

  • 图片就是无数个像素点组成的
  • 每个像素点的数据:用0~255255255表示其颜色

先存储每个像素点的数值 ,每个像素点由三位数 255 0 255 ,计算机挨个保存每个像素点的值就可以存储一张图片

5.5 二进制转十进制

5.6 八进制和十六进制

  • 为了便于观察和表示二进制,推出了八进制和十六进制。
  • 每3位二进制作为一个单元,最小数是0,最大数是7,共8个数字,这就是八进制。
  • 每4位二进制作为一个单元,最小数是0,最大数是15,共16个数字,依次用:0~9ABCDEF 代表就是十六进制。

java 复制代码
        //二进制 八进制 十六进制在程序中的写法。
        int a1 =0B01100001;
        System.out.println(a1);

        int a2 = 0141; // 0开头的数据当成八进制看待!
        System.out.println(a2);
        
        int a3= 0XFA; // 0X开头的数据是十六进制
        System.out.println(a3);

5.7 计算机的数据单位

  • 计算机表示数据的最小组成单元是:字节,1B=8b。
  • 在B的基础上,计算机发展出了KB、MB、GB、TB、...... 这些数据单位!

(六)Java的数据类型

6.1 数据类型的分类

6.2 基本数据类型

基本数据类型:4大类8种

java 复制代码
public class VariableDemo2 {
    public static void main(String[] args) {
        // 目标:掌握基本数据类型的使用。
        // 1、byte short int long
        byte a=127; // -128-127
        // byte a2=128;// 越界了

        short s= 13244;
        //short s1=93244;//越界了

        int i = 422424;// 默认

        //|注意:随便写一个整型字面量默认是int类型的,424242244444虽然没有超过long的范围,但是超过了本身int类型的范围
        // 如果希望随便写一个整型字面量默认是long类型的,需要在后面加上L/l
        long lg = 424242244444L;

        // 2、float double// 注意:随便写小数字面量,默认是double,如果希望小数是float,后面加上F/f
        float f = 3.14F;
        
        double d = 56.45;
        
        
        //3、char 字符型
        char ch='a';
        char ch2='中';
        
        
        // 4、boolean
        boolean flag =true;
        boolean flag2 = false;
        
        //5、String
        // 拓展一种引用数据类型,后面要用
        // String 称之为字符串类型,定义的变量可以用于记住一个字符串数据
        String name ="张三";
        System.out.println(name);
    }
}

6.2 引用数据类型

java 复制代码
		//5、String
        // 拓展一种引用数据类型,后面要用
        // String 称之为字符串类型,定义的变量可以用于记住一个字符串数据
        String name ="张三";
        System.out.println(name);

6.3 类型转换

  • 1、存在某种类型的变量赋值给另一种类型的变量
  • 2、存在不同类型的数据一起运算

6.3.1 自动类型转换

类型范围小的变量,可以直接赋值给类型范围大的变量

java 复制代码
public class TypeConversionDemo {
    public static void main(String[] args) {
        // 目标:理解自动类型转换机制。
        byte a= 12;
        int b = a;//发生自动类型转换
        System.out.println(a);
        System.out.println(b);
    }
}

自动类型转换原理:

	byte   占1个字节
	int    占4个字节
	类型范围小的变量,可以直接赋值给类型范围大的变量

自动类型转换的其他形式

java 复制代码
public class TypeConversionDemo {
    public static void main(String[] args) {
        // 目标:理解自动类型转换机制。
        int c= 100;//4字节
        double d=c;//8字节 发生了自动类型转换了
        System.out.println(d);
        
        char ch='a';// 2字节 'a'97 =>00000000 01100001
        int i=ch;// 4字节 发生了自动类型转换了=> 00000000 00000000 00000000 01100001
        System.out.println(i);
    }
}

6.3.2 表达式的自动类型转换

  • 不同类型的变量或者数据一起远算,最终运算出的数据的类型是什么??

  • 在表达式中,小范围类型的变量,会自动转换成表达式中较大范围的类型,再参与运算

注意事项:

  • 表达式的最终结果类型由表达式中的**最高类型决定**
  • 在表达式中,byte、short、char 是直接转换成int类型参与运算的。
java 复制代码
public class TypeConversionDemo2 {
    public static void main(String[] args) {
        // 目标:掌握表达式的自动类型转换机制。
        byte a = 10;   
        int  b = 20;
        long c = 30;
        long rs = a + b + c;   //表达式的最终结果类型由表达式中的**`最高类型决定`** 
        System.out.println(rs);

        double rs2 = a + b + 1.0;    //表达式的最终结果类型由表达式中的**`最高类型决定`** 
        System.out.println(rs2);

        byte i = 10;
        short j= 30;
        int rs3 = i + j;   //在表达式中,byte、short、char 是直接转换成int类型参与运算的
        System.out.println(rs3);

        // 面试笔试题:
        byte b1 = 110;   //byte的范围是-128-127 110+80=190 超过了byte的范围 为了防止运算错误程序自动转换成了int
        byte b2 = 80;
        int b3 = b1 + b2;  //在表达式中,byte、short、char 是直接转换成int类型参与运算的
        System.out.println(b3);
    }
}

6.3.3 强制类型转换

  • 类型范围大的数据或者变量,直接赋值给类型范围小的变量,会报错
  • 可以强行将类型范围大的变量、数据赋值给类型范围小的变量

     byte b =(byte)a;
    
java 复制代码
public class TypeConversionDemo3 {
    public static void main(String[] args) {
        // 目标:掌握强制类型转换。
        int a= 20;
        byte b =(byte)a; // ALT + ENTER 强制类型转换。
        System.out.println(a);
        System.out.println(b);
    }
}

强制类型转换在计算机中的执行原理

java 复制代码
public class TypeConversionDemo3 {
    public static void main(String[] args) {
        // 目标:掌握强制类型转换。
        int i = 1500;
        byte j=(byte) i;
        System.out.println(j);
    }
}
java 复制代码
		double d = 99.5;
        int m =(int)d;// 强制类型转换
        System.out.println(m);//丢掉小数部分,保留整数部分
        
  		>>>99

注意事项

  • 强制类型转换可能造成数据(丢失)溢出
  • 浮点型强转成整型,直接丢掉小数部分,保留整数部分返回

(七)运算符

7.1 算数运算符

java 复制代码
public class OperatorDemo {
    public static void main(String[] args) {
        // 目标:掌握基本的算术运算符的使用。
        int a = 10;
        int b = 2;
        System.out.println(a + b);
        System.out.println(a - b);
        System.out.println(a * b);//20
        System.out.println(a / b);//5
        System.out.println(5 / 2);//2.5 ==> 2
        System.out.println(5.0 / 2);//2.5 想要的到小数
        int i = 5;
        int j = 2;
        System.out.println(1.0 * i / j);// 2.5
        System.out.println(a % b);//0
        System.out.println(3 % 2);//1
    }
}

+符号可以做连接符的

  • +符号与字符串运算的时候是用作连接符的,其结果依然是一个字符

  • 怎么判断是连接符还是运算符

    独门秘籍
    能算则算,不能算就在一起。(计算机很聪明)

java 复制代码
public class OperatorDemo {
    public static void main(String[] args) {
        // 目标2:掌握使用+符号做连接符的情况。
        int a2 = 5;
        System.out.println("abc"+ a2);//"abc5"
        System.out.println(a2+5);//10
        System.out.println("itheima" + a2 +'a'); // "itheima5a"
        System.out.println(a2+'a'+ "itheima"); // 102itheima
    }
}

7.2 自增自减运算符

注意:

  • ++、-- 只能操作变量,不能操作字面量的
java 复制代码
public class OperatorDemo2 {
    public static void main(String[] args) {
        // 目标:掌握自增自减运算符的使用。
        int a= 10;
        a++; // a = a + 1
        ++a;
        System.out.println(a);
        
        a--;//a = a - 1
        --a;
        System.out.println(a);
        
        // System.out.println(2++);// 自增减只能操作变量不能操作字面量的,会报错!
    }
}
  • ++、-- 如果不是单独使用(如在表达式中、或者同时有其它操作),放在变量前后会存在明显区别
  • 如果单独使用放前放后是没有区别的,
  • 非单独使用:在变量前,先进行变量自增/自减,再使用变量。
  • 非单独使用:在变量后,先使用变量,再进行变量自增/自减。
java 复制代码
public class OperatorDemo2 {
    public static void main(String[] args) {
        // 目标:掌握自增自减运算符的使用。
        int i= 10;
        int rs=++i;// 先加后用
        System.out.println(rs);
        System.out.println(i);

        int j= 10;
        int rs2 =j++;// 先用后加
        System.out.println(rs2);
        System.out.println(j);
    }
}

自增、自减拓展案例

java 复制代码
        int m=5;
        int n = 3;
        //m 5 6 5 4
        //n 3 4 3
        //            6  -  5  + 5   - 4   + 4   + 
        int result = ++m - --m + m-- - ++n + n-- + 3;
        System.out.println(result);//9
        System.out.println(m);//4
        System.out.println(n);//3

7.3 赋值运算符

基本赋值运算符

  • 就是"=",从右边往左看

扩展赋值运算符

注意:扩展的赋值运算符隐含了强制类型转换

java 复制代码
public class OperatorDemo3 {
    public static void main(String[] args) {
        // 目标:掌握扩展赋值运算符的使用。
        // +=
        // 需求:收红包
        double a=9.5;
        double b=520;
        a += b;// a = (double)(a + b); //赋值运算符隐含了强制类型转换
        System.out.println(a);
        
        //-= 需求:发红包
        double i= 600;
        double j= 520;
        i-=j;//i = (double)(i-j);
        System.out.println(i);
        
        int m= 10;
        int n=5;
        m *= n;//等价形式:m = (int)(m * n)
        m /= n;//等价形式:m = (int)(m / n)
        m %= n;//等价形式:m = (int)(m % n)
        System.out.println(m);
    }
}

练习题:

java 复制代码
public class OperatorDemo3 {
    public static void main(String[] args) {
        // 目标:掌握扩展赋值运算符的使用。
        byte x=10;
        byte y= 30;
        // x = x + y;// 编译报错    byte = int + int 不成立了
        // x = (byte)(x + y);  //赋值运算符隐含了强制类型转换 byte = byte(int + int)
        // x += y; //等价形式:x = (byte)(x + y);
        System.out.println(x);
    }
}

7.4 关系运算符

  • 判断数据是否满足条件,最终会返回一个判断的结果,这个结果是布尔类型的值:true或者false。


java 复制代码
public class OperatorDemo4 {
    public static void main(String[] args) {
        int a = 10;
        int b = 5;
        boolean rs = a > b;
        System.out.println(rs);
        System.out.println(a >= b);//要么a大于b,或者a等于b
        System.out.println(2 >= 2);// true
        System.out.println(a < b);
        System.out.println(a <= b);// false
        System.out.println(2 <= 2);// true
        System.out.println(a == b); // false
        System.out.println(5 ==5);// true
        //System.out.println(a = b);// 注意了:判断是否相等一定是用 == ,=是用来赋值的。
        System.out.println(a != b);//true
        System.out.println(10 != 10);// false
    }
}

7.5 逻辑运算符

  • 把多个条件放在一起运算,最终返回布尔类型的值:true、false
java 复制代码
public class OperatorDemo5 {
    public static void main(String[] args) {
        // 目标:掌握逻辑运算符的使用。
        // 需求:要求手机必须满足尺寸大于等于6.95,且内存必须大于等于8
        double size =6.8;
        int storage = 16;
        //1、&前后的条件的结果必须都是true,结果才是true.
        boolean rs = size >= 6.95 & storage >= 8;
        System.out.println(rs);

        // 需求2:要求手机要么满足尺寸大于等于6.95,要么内存必须大于等于8
        // 2、|只要多个条件中有一个是true,结果就是true.
        boolean rs2 = size >= 6.95 | storage >= 8;
        System.out.println(rs2);


        // 3、!取反的意思
        System.out.println(!true);// false
        System.out.println(!false);//true
        System.out.println(!(2 > 1));// false

        // 4、^前后条件的结果相同时返回false,不同时返回true.
        System.out.println(true ^ true);// false
        System.out.println(false ^ false);// false
        System.out.println(true ^ false);// true
        System.out.println(false ^ true);// true
    }
}

注意:

  • 在java中,"&","|" 无论左边是 false还是 true,右边都要执行
  • 由于&&、|| 运算效率更高、在开发中用的更多
java 复制代码
public class OperatorDemo5 {
    public static void main(String[] args) {
        //5、&& 左边为false,右边不执行。
        int i = 10;
        int j= 20;
        System.out.println(i>100 && ++j>99);
        System.out.println(i>100 & ++j > 99);
        System.out.println(j);

        //6、||左边是true ,右边就不执行。
        int m = 10;
        int n= 30;
        System.out.println(m > 3 || ++n > 40);
        System.out.println(m > 3 | ++n > 40);
        System.out.println(n);
    }
}

7.6 三元运算符

三元运算符介绍:

  • 执行流程:首先计算关系表达式的值,如果值为true,返回值1,如果为false,返回值2.
java 复制代码
public class OperatorDemo6 {
    public static void main(String[] args) {
        // 目标:掌握三元运算符的基本使用。
        double score = 58.5;
        String rs = score >= 60 ? "成绩及格" : "成绩不及格";
        System.out.println(rs);

        // 需求2:找出2个整数中的较大值,并输出。
        int a = 99;
        int b = 69;
        int max = a > b ? a : b;
        System.out.println(max);

        // 需求3:找3个整数中的较大值。
        int i = 10;
        int j = 45;
        int k = 34;

        // 找出2个整数中的较大值。
        int temp = i > j ? i :j;
        // 找出temp与k中的较大值
        int max2 = temp > k ? temp : k;
        System.out.println(max2);
    }
}

7.7 运算符的优先级

  • 在表达式中,哪个运算符先执行后执行是要看优先级的,例如"*、/"的优先级高于"+.

(八)键入数据

需求:

  • 请在程序中,提示用户通过键盘输入自己的姓名、年龄,并能在程序中收到这些数据,怎么解决?.
  • 需要自己研发技术来实现吗? 不需要!Java已经写好了实现程序,我们调用即可!

怎么调用程序

  • 翻看上一篇笔记JDK的组成,编写好的程序需要开发工具javac进行编译,开发工具java进行运行,输送到JVM执行代码
    JVM调用核心类库的程序System.out.println()才能使用打印输出程序输出hello world,

核心类库也叫API,APl(Application Programming Interface:应用程序编程接口)

  • Java写好的程序,咱们程序员可以直接拿来调用。

  • Java为自己写好的程序提供了相应的 程序使用说明书(API文档)。


java 复制代码
import java.util.Scanner;

public class ScannerDemo {
    public static void main(String[] args) {
        // 1、导包:一般不需要我们自己做,idea工具会自动帮助我们 导包的。
        // 2、抄写代码:得到一个键盘扫描器对象(东西)
        Scanner sc=new Scanner(System.in);
        //3、开始 调用sc的功能,来接收用户键盘输入的数据。
        System.out.println("请您输入您的年龄:");
        int age = sc.nextInt();// 执行到这儿,会开始等待用户输入一个整数,直到用户按了回车键,才会拿到数据。
        System.out.println("您的年龄是:" + age);
        System.out.println("请您输入您的名字:");
        String name = sc.next();// 执行到这儿,会开始等待用户输入一个字符串,直到用户按了回车键,才会拿到数据。
        System.out.println(name + "欢迎您进入系统~~");
    }
}
相关推荐
路在脚下@41 分钟前
spring boot的配置文件属性注入到类的静态属性
java·spring boot·sql
森屿Serien44 分钟前
Spring Boot常用注解
java·spring boot·后端
苹果醋32 小时前
React源码02 - 基础知识 React API 一览
java·运维·spring boot·mysql·nginx
Hello.Reader2 小时前
深入解析 Apache APISIX
java·apache
菠萝蚊鸭3 小时前
Dhatim FastExcel 读写 Excel 文件
java·excel·fastexcel
旭东怪3 小时前
EasyPoi 使用$fe:模板语法生成Word动态行
java·前端·word
007php0073 小时前
Go语言zero项目部署后启动失败问题分析与解决
java·服务器·网络·python·golang·php·ai编程
∝请叫*我简单先生3 小时前
java如何使用poi-tl在word模板里渲染多张图片
java·后端·poi-tl
ssr——ssss3 小时前
SSM-期末项目 - 基于SSM的宠物信息管理系统
java·ssm
一棵星3 小时前
Java模拟Mqtt客户端连接Mqtt Broker
java·开发语言