【JavaEE】文件操作IO之File 、InputStream、OutputStream 用法详解

news2024/11/15 16:58:57

目录

一、文件概念 

(1)文件定义与组成

(2)文件的树形结构组织和目录

(3)文件路径

(4)文件分类

(5)文件操作

二、文件操作File类

(1)File类中的属性

(2)File类的构造方法

(3)File类的方法

1.get系列用法代码实例

2.普通文件的创建

3.普通文件的删除

4.deleteOnExit的现象

5.目录的创建

6.文件重命名

三、文件操作InputStream

(1)InputStream概述

(2)FileInputStream概述

1.FileInputStream 构造方法

2.利用Scanner进行读取

四、文件操作OutputStream 

(1)OutputStream概述

(2)FileOutputStream概述

1.利用 OutputStreamWriter 进行字符写入

2.利用 PrintWriter 找到熟悉的方法


一、文件概念 

(1)文件定义与组成

        狭义上:针对硬盘这种持久化存储的I/O设备,当进行数据保存时,往往不是保存成一个整体,而是独立成一个个的单位进行保存,这个独立的单位就被抽象成文件的概念。

       每个文件都有属于它自己的,不是内容的一些信息。例如文件名、文件类型、文件大小,不作为文件数据。这些信息就称作文件的元信息。

(2)文件的树形结构组织和目录

        文件的系统管理:是按照层级结构进行组织,就是数据结构中所提到的树形结构

        目录:一种专门用来存放管理信息的特殊文件。也称文件夹。

(3)文件路径

        文件的绝对路径(absolute path):从树型结构的角度来看,树中的每个结点都可以被一条从根开始,一直到达的结点的路径所描述,这种描述方式就被称为文件的绝对路径。绝对路径是固定的,不会发生改变。

        例如:以Windows操作系统为例,绝对路径就是以盘符为开头。C盘为根目录,从C盘开始找到存放jdk的文件。C:\Program Files\Java\jdk1.8.0_131。

        文件的相对路径(relative path):从任意结点出发,进行路径的描述,而这种描述方式就被称为相对路径,相对于当前所在结点的一条路径。相对路径一定要有基准路径。.表示当前路径。..表示当前路径的父目录(上级目录)。

        例如:基准路径是C:\Program Files\Java。./表示的路径就代表C:\Program Files\Java。

基准路径是C:\Program Files\Java。../表示的路径就代表C:\Program Files。

/斜杆和\反斜杠小贴士:

        对于大部分操作系统,路径的分隔符都是/斜杠  ,但是对于Windows来说使用的是\反斜杠。Windows最早的系统是基于Dos开发的,Dos系统最早的时候,/斜杆已经有了其他用途,就接着了反斜杠\。

        后期Windows意识到大多数操作系统都是斜杠/,当编程的时候也会出现问题。例如D:\taa.txt,\t会被当成制表符,就得使用\\t。随着逐渐发展,斜杠和反斜杠都能被识别了。一个注意点是当人为输入/时,Windows输出的还是\。

(4)文件分类

        一般简单的划分为文本文件二进制文件,分别指代保存被字符集编码的文本按照标准格式保存的非被字符集编码过的文件。简而言之,能看懂的就是文本文件,一堆乱码的就是二进制文件。

(5)文件操作

        Java中对于文件的操作可以分为两类,一是文件系统相关的操作:包括1)创建目录2)删除目录3)创建文件4)删除文件5)列出目录下的文件6)重命名。二是文件内容相关操作:包括1)读文件内容2)写文件内容。对于文件内容的操作,分为二进制文件和文本文件。

二、文件操作File类

        Java 中通过 java.io.File 类来对一个文件(包括目录)进行抽象的描述。注意:有 File 对象,并不代表真实存在该文件。根据一个路径,创建一个File文件,假如这个路径不存在,这个文件也就不存在,但是File对象是存在的。

(1)File类中的属性

修饰符及类型属性说明
static StringpathSeparator依赖于系统的路径分隔符,String 类型的表示
static charpathSeparator依赖于系统的路径分隔符,char 类型的表示

与系统有关,不同的系统分割符不同。

 

(2)File类的构造方法

签名说明
File(File parent, String
child)
根据父目录 + 孩子文件路径,创建一个新的 File 实例
File(String pathname)根据文件路径创建一个新的 File 实例,路径可以是绝对路径或者
相对路径
File(String parent, String
child)
根据父目录 + 孩子文件路径,创建一个新的 File 实例,父目录用
路径表示

(3)File类的方法

修饰符及返回
值类型
方法签名说明
StringgetParent()返回 File 对象的父目录文件路径
StringgetName()返回 FIle 对象的纯文件名称
StringgetPath()返回 File 对象的文件路径
StringgetAbsolutePath()返回 File 对象的绝对路径
StringgetCanonicalPath()返回 File 对象的修饰过的绝对路径
booleanexists()判断 File 对象描述的文件是否真实存在
booleanisDirectory()判断 File 对象代表的文件是否是一个目录
booleanisFile()判断 File 对象代表的文件是否是一个普通文件
booleancreateNewFile()根据 File 对象,自动创建一个空文件。成功创建后返
回 true
booleandelete()根据 File 对象,删除该文件。成功删除后返回 true
voiddeleteOnExit()根据 File 对象,标注文件将被删除,删除动作会到
JVM 运行结束时才会进行
String[]list()返回 File 对象代表的目录下的所有文件名
File[]listFiles()返回 File 对象代表的目录下的所有文件,以 File 对象
表示
booleanmkdir()创建 File 对象代表的目录
booleanmkdirs()创建 File 对象代表的目录,如果必要,会创建中间目
booleanrenameTo(File
dest)
进行文件改名,也可以视为我们平时的剪切、粘贴操
booleancanRead()判断用户是否对文件有可读权限
booleancanWrite()判断用户是否对文件有可写权限

1.get系列用法代码实例

import java.io.File;
import java.io.IOException;
public class Main {
    public static void main(String[] args) throws IOException {
        File file = new File("..\\hello-world.txt"); // 并不要求该文件真实存在
        System.out.println(file.getParent());
        System.out.println(file.getName());
        System.out.println(file.getPath());
        System.out.println(file.getAbsolutePath());
        System.out.println(file.getCanonicalPath());
    }
}

运行结果:
..
hello-world.txt
..\hello-world.txt
D:\代码练习\文件示例1\..\hello-world.txt
D:\代码练习\hello-world.txt
 

import java.io.File;
import java.io.IOException;
public class Main {
    public static void main(String[] args) throws IOException {
        File file = new File("file.txt"); // 并不要求该文件真实存在
     
        System.out.println(file.getPath());
        System.out.println(file.getAbsolutePath());
        System.out.println(file.getCanonicalPath());
    }
}

运行结果:
file.txt
D:\代码练习\文件示例1\file.txt
D:\代码练习\文件示例1\file.txt

import java.io.File;
import java.io.IOException;
public class Main {
    public static void main(String[] args) throws IOException {
        File file = new File("./file.txt"); // 并不要求该文件真实存在
     
        System.out.println(file.getPath());
        System.out.println(file.getAbsolutePath());
        System.out.println(file.getCanonicalPath());
    }
}

运行结果:
file.txt
D:\代码练习\文件示例1\.\file.txt
D:\代码练习\文件示例1\file.txt

这里的基准路径是D:\代码练习\文件示例1 ,相对路径是.\file.txt。绝对路径就是基准路径+相对路径。

在ideal里面运行,基准路径是项目的工作路径。用不同的方式运行,同样一份的代码,基准路基也是不一样的。

2.普通文件的创建

import java.io.File;
import java.io.IOException;
public class Main {
    public static void main(String[] args) throws IOException {
        File file = new File("hello-world.txt"); // 要求该文件不存在,才能看到相同的现象
        System.out.println(file.exists());
        System.out.println(file.isDirectory());
        System.out.println(file.isFile());
        System.out.println(file.createNewFile());
        System.out.println(file.exists());
        System.out.println(file.isDirectory());
        System.out.println(file.isFile());
        System.out.println(file.createNewFile());
    }
}

运行结果:
false
false
false
true
true
false
true
false

3.普通文件的删除

import java.io.File;
import java.io.IOException;
public class Main {
    public static void main(String[] args) throws IOException {
        File file = new File("some-file.txt"); // 要求该文件不存在,才能看到相同的现象
        System.out.println(file.exists());
        System.out.println(file.createNewFile());
        System.out.println(file.exists());
        System.out.println(file.delete());
        System.out.println(file.exists());
    }
}

运行结果:
false
true
true
true
false

4.deleteOnExit的现象

import java.io.File;
import java.io.IOException;
public class Main {
    public static void main(String[] args) throws IOException {
        File file = new File("some-file.txt"); // 要求该文件不存在,才能看到相同的现象
        System.out.println(file.exists());
        System.out.println(file.createNewFile());
        System.out.println(file.exists());
        file.deleteOnExit();
        System.out.println(file.exists());
    }
}

运行结果:
false
true
true
true

程序运行结束后,文件还是被删除了

5.目录的创建

import java.io.File;
import java.io.IOException;
public class Main {
    public static void main(String[] args) throws IOException {
        File dir = new File("some-dir"); // 要求该目录不存在,才能看到相同的现象
        System.out.println(dir.isDirectory());
        System.out.println(dir.isFile());
        System.out.println(dir.mkdir());
        System.out.println(dir.isDirectory());
        System.out.println(dir.isFile());
    }
}

运行结果:
false
false
true
true
false

import java.io.File;
import java.io.IOException;
public class Main {
    public static void main(String[] args) throws IOException {
        File dir = new File("some-parent\\some-dir"); // some-parent 和 somedir 都不存在
        System.out.println(dir.isDirectory());
        System.out.println(dir.isFile());
        System.out.println(dir.mkdir());
        System.out.println(dir.isDirectory());
        System.out.println(dir.isFile());
    }
}

运行结果:
false
false
false
false
false

mkdir() 的时候,如果中间目录不存在,则无法创建成功; mkdirs() 可以解决这个问题。

import java.io.File;
import java.io.IOException;
public class Main {
    public static void main(String[] args) throws IOException {
        File dir = new File("some-parent\\some-dir"); // some-parent 和 somedir 都不存在
        System.out.println(dir.isDirectory());
        System.out.println(dir.isFile());
        System.out.println(dir.mkdirs());
        System.out.println(dir.isDirectory());
        System.out.println(dir.isFile());
    }
}

运行结果:
false
false
true
true
false

6.文件重命名

import java.io.File;
import java.io.IOException;
public class Main {
    public static void main(String[] args) throws IOException {
        File file = new File("some-file.txt"); // 要求 some-file.txt 得存在,可以是普通文件,可以是目录
        File dest = new File("dest.txt"); // 要求 dest.txt 不存在
        System.out.println(file.exists());
        System.out.println(dest.exists());
        System.out.println(file.renameTo(dest));
        System.out.println(file.exists());
        System.out.println(dest.exists());
    }
}
 

运行结果:

true
false
true
false
true

三、文件操作InputStream

(1)InputStream概述

        InputStream 只是一个抽象类。读:输入流。例如利用水龙头节水。

方法                                                                                                                                                  

修饰符及
返回值类
方法签名说明
intread()读取一个字节的数据,返回 -1 代表已经完全读完了
intread(byte[] b)最多读取 b.length 字节的数据到 b 中,返回实际读到的数
量;-1 代表以及读完了
intread(byte[] b,
int off, int len)
最多读取 len - off 字节的数据到 b 中,放在从 off 开始,返
回实际读到的数量;-1 代表以及读完了
voidclose()关闭字节流

(2)FileInputStream概述

        InputStream 只是一个抽象类,要使用还需要具体的实现类。关于 InputStream 的实现类有很多,基本可以认为不同的输入设备都可以对应一个 InputStream 类,本文只关心从文件中读取,所以使用 FileInputStream。

1.FileInputStream 构造方法

构造方法:

签名说明
FileInputStream(File file)利用 File 构造文件输入流
FileInputStream(String name)利用文件路径构造文件输入流

代码实例一:

将文件完全读完的两种方式。相比较而言,后一种的 IO 次数更少,性能更好

import java.io.*;
// 需要先在项目目录下准备好一个 hello.txt 的文件,里面填充 "Hello" 的内容
public class Main {
    public static void main(String[] args) throws IOException {
        try (InputStream is = new FileInputStream("hello.txt")) {
            while (true) {
                int b = is.read();
                if (b == -1) {
                    // 代表文件已经全部读完
                    break;
                }
                System.out.printf("%c", b);
            }
        }
    }
}
import java.io.*;
// 需要先在项目目录下准备好一个 hello.txt 的文件,里面填充 "Hello" 的内容
public class Main {
    public static void main(String[] args) throws IOException {
        try (InputStream is = new FileInputStream("hello.txt")) {
            byte[] buf = new byte[1024];
            int len;
            while (true) {
                len = is.read(buf);
                if (len == -1) {
                // 代表文件已经全部读完
                    break;
                }
                for (int i = 0; i < len; i++) {
                    System.out.printf("%c", buf[i]);
                }
            }
        }
    }
}

代码实例二:

文件中填写中文。写中文的时候使用 UTF-8 编码。hello.txt 中填写 "你好中国"
“你好中国”这几个中文的 UTF-8 编码后长度刚好是 3 个字节和长度不超过 1024 字节的现状,但这种方式并不是通用的。
 

import java.io.*;
// 需要先在项目目录下准备好一个 hello.txt 的文件,里面填充 "你好中国" 的内容
public class Main {
    public static void main(String[] args) throws IOException {
        try (InputStream is = new FileInputStream("hello.txt")) {
            byte[] buf = new byte[1024];
            int len;
            while (true) {
                len = is.read(buf);
                if (len == -1) {
                    // 代表文件已经全部读完
                    break;
                }
                // 每次使用 3 字节进行 utf-8 解码,得到中文字符
                // 利用 String 中的构造方法完成
                // 这个方法了解下即可,不是通用的解决办法
                for (int i = 0; i < len; i += 3) {
                    String s = new String(buf, i, 3, "UTF-8");
                    System.out.printf("%s", s);
                }
            }
        }
    }
}

2.利用Scanner进行读取

        由代码实例二可知,对字符类型直接使用 InputStream 进行读取是非常麻烦且困难的,所以,我们使用Scanner 类。

构造方法:

构造方法说明
Scanner(InputStream is, String charset)使用 charset 字符集进行 is 的扫描读取

代码示例:

import java.io.*;
import java.util.*;
// 需要先在项目目录下准备好一个 hello.txt 的文件,里面填充 "你好中国" 的内容
public class Main {
    public static void main(String[] args) throws IOException {
        try (InputStream is = new FileInputStream("hello.txt")) {
            try (Scanner scanner = new Scanner(is, "UTF-8")) {
                while (scanner.hasNext()) {
                    String s = scanner.next();
                    System.out.print(s);
                }
            }
        }
    }
}

四、文件操作OutputStream 

(1)OutputStream概述

    OutputStream 只是一个抽象类。写:输出流。例如通过水龙头灌水。

方法 :

修饰
符及
返回
值类
方法签名说明
voidwrite(int b)写入要给字节的数据
voidwrite(byte[]
b)
将 b 这个字符数组中的数据全部写入 os 中
intwrite(byte[]
b, int off,
int len)
将 b 这个字符数组中从 off 开始的数据写入 os 中,一共写 len 个
voidclose()关闭字节流
voidflush()重要:我们知道 I/O 的速度是很慢的,所以,大多的 OutputStream 为
了减少设备操作的次数,在写数据的时候都会将数据先暂时写入内存的
一个指定区域里,直到该区域满了或者其他指定条件时才真正将数据写
入设备中,这个区域一般称为缓冲区。但造成一个结果,就是我们写的
数据,很可能会遗留一部分在缓冲区中。需要在最后或者合适的位置,
调用 flush(刷新)操作,将数据刷到设备中。

(2)FileOutputStream概述

        OutputStream 同样只是一个抽象类,要使用还需要具体的实现类。本文只关心写入文件中,所以使用 FileOutputStream。

1.利用 OutputStreamWriter 进行字符写入

代码实例一:

import java.io.*;
public class Main {
    public static void main(String[] args) throws IOException {
        try (OutputStream os = new FileOutputStream("output.txt")) {
            os.write('H');
            os.write('e');
            os.write('l');
            os.write('l');
            os.write('o');
            // 不要忘记 flush
            os.flush();
        }
    }
}

代码实例二:

import java.io.*;
public class Main {
    public static void main(String[] args) throws IOException {
        try (OutputStream os = new FileOutputStream("output.txt")) {
            byte[] b = new byte[] {
                (byte)'G', (byte)'o', (byte)'o', (byte)'d'
            };
            os.write(b);
            // 不要忘记 flush
            os.flush();
        }
    }
}

代码示例三:

import java.io.*;
public class Main {
    public static void main(String[] args) throws IOException {
        try (OutputStream os = new FileOutputStream("output.txt")) {
            byte[] b = new byte[] {
                (byte)'G', (byte)'o', (byte)'o', (byte)'d', (byte)'B', (byte)'a', (byte)'d'
            };
            os.write(b, 0, 4);
            // 不要忘记 flush
            os.flush();
        }
    }
}

代码实例四:

import java.io.*;
public class Main {
    public static void main(String[] args) throws IOException {
        try (OutputStream os = new FileOutputStream("output.txt")) {
            String s = "Nothing";
            byte[] b = s.getBytes();
            os.write(b);
            // 不要忘记 flush
            os.flush();
        }
    }
}

代码实例五:

import java.io.*;
public class Main {
    public static void main(String[] args) throw
        try (OutputStream os = new FileOutputStr
            String s = "你好中国";
            byte[] b = s.getBytes("utf-8");
            os.write(b);
            // 不要忘记 flush
            os.flush();
        }
    }
}

2.利用 PrintWriter 找到熟悉的方法

        PrintWriter 类中提供了我们熟悉的 print、println、printf 等方法。故而将 OutputStream 处理下,使用PrintWriter 类来完成输出。

第一步:OutputStream os = ...;
第二步:OutputStreamWriter osWriter = new OutputStreamWriter(os, "utf-8");告知的字符集编码的类型是 utf-8 。

第三步:PrintWriter writer = new PrintWriter(osWriter); 使用 writer 提供的各种方法。

例如:
writer.print("Hello");
writer.println("你好");
writer.printf("%d: %s\n", 1, "没什么");

第四步:记得flush。writer.flush();

代码实例:

import java.io.*;
public class Main {
    public static void main(String[] args) throws IOException {
        try (OutputStream os = new FileOutputStream("output.txt")) {
            try (OutputStreamWriter osWriter = new OutputStreamWriter(os, "UTF-8")) {
                try (PrintWriter writer = new PrintWriter(osWriter)) {
                    writer.println("我是第一行");
                    writer.print("我的第二行\r\n");
                    writer.printf("%d: 我的第三行\r\n", 1 + 1);
                    writer.flush();
                }
            }
        }
    }
}

 

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

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

相关文章

20230202在AIO-3568J开发板在原厂Android12下增加ll命令

20230202在AIO-3568J开发板在原厂Android12下增加ll命令 2023/2/2 11:50 1、使用EVB2的DTS&#xff1a;rk3568-evb2-lp4x-v10.dts&#xff0c;ENG模式编译。没有ll命令&#xff01; console:/ $ console:/ $ ll /system/bin/sh: ll: inaccessible or not found 127|console:/ …

ESP-IDF:堆排序测试

堆排序测试 /堆排序测试/ void printheap (int arr[],int length) { for(int i0;i<length;i) { cout<<arr[i]<<" "; } cout<<endl; } void swapheap (int arr[],int a, int b) { int temp arr[a]; arr[a] arr[b]; arr[b] temp; } void he…

【数据库原理与SQL Server应用】Part04——数据库操作

【数据库原理与SQL Server应用】Part04——数据库操作一、数据库基本概念1.1 物理数据库1.1.1 页和区1.1.2 数据库文件1.1.3 文件组1.2 逻辑数据库1.3 SQL Server 的系统数据库和用户数据库1.4 报表服务器和报表数据库二、创建数据库2.1 管理工具界面方式创建数据库2.2 命令行方…

CSS列表与表格

目录 ​编辑 HTML 列表和 CSS 列表属性 不同的列表项目标记 实例 图像作为列表项标记 实例 定位列表项标记 实例 删除默认设置 实例 列表 - 简写属性 实例 设置列表的颜色样式 实例 更多实例 所有 CSS 列表属性 表格边框 实例 全宽表格 实例 双边框 合并…

【数据结构与算法】最小生成树 | 最短路径

&#x1f320;作者&#xff1a;阿亮joy. &#x1f386;专栏&#xff1a;《数据结构与算法要啸着学》 &#x1f387;座右铭&#xff1a;每个优秀的人都有一段沉默的时光&#xff0c;那段时光是付出了很多努力却得不到结果的日子&#xff0c;我们把它叫做扎根 目录&#x1f449;…

【图】邻接表存储图

目录 一、概念 图是什么 各种图的定义 二、图的存储结构 邻接矩阵 邻接表 代码实现邻接表存储图&#xff08;不含权重&#xff09; 一、概念 图是什么 图&#xff08;Graph)是由顶点的有穷非空集合和顶点之间边的集合组成&#xff0c;通常表示为:G(V,E)&#xff0c;其中…

Hystrix断路器执行原理

状态机 Hystrix断路器有三种状态,分别是关闭(Closed)、打开(Open)与半开(Half-Open),三种状态转化关系如下: Closed 断路器关闭:调用下游的请求正常通过Open 断路器打开:阻断对下游服务的调用,直接走 Fallback 逻辑Half-Open 断路器处于半开状态:SleepWindowInMi…

第 14 章python学习知识记录(一)

文章目录前言14.1 numpy的使用14.1.1 数字运算14.1.2 N维数组14.1.3 矩阵运算与广播14.1.4 元素访问14.2 Matplotlib的使用14.2.1 绘制简单图形14.2.2 绘制复杂图形14.2.3 显示图片14.3 os函数14.3.1 获取文件路径14.3.2 路径的基本操作14.4 tqdm的使用14.4.1 tqdm的导入和使用…

docker搭建hadoop和hive集群

一、安装docker并生成相关的镜像&#xff08;1&#xff09;安装docker安装docker教程https://www.runoob.com/docker/centos-docker-install.html只要在终端输入&#xff1a;sudo docker run hello-world后出现如下图的内容就证明安装docker成功了&#xff08;2&#xff09;拉取…

让HTTPS、SSH 共享端口的——工具SSLH

目录 安装 SSLH 配置 Apache 或 Nginx Web 服务器 配置 SSLH 测试 安装 SSLH sudo apt-get install sslh 配置 Apache 或 Nginx Web 服务器 编辑 Web 服务器&#xff08;nginx 或 apache&#xff09;配置文件并找到以下行&#xff1a; listen 443 ssl; 将其修改为&…

Uni-App 如何实现消息推送功能?

原文链接&#xff1a;Uni-App 如何实现消息推送功能&#xff1f; 前言 这里用的是uni-app自带的UniPush1.0&#xff08;个推服务&#xff09;&#xff0c;所以只针对UniPush1.0介绍实现步骤。 建议查阅的文章&#xff1a; UniPush 1.0 使用指南Unipush 常见问题 当然现在已…

Flink day01

Flink简介 Flink起源于Stratosphere项目&#xff0c;Stratosphere是在2010~2014年由3所地处柏林的大学和欧洲的一些其他的大学共同进行的研究项目&#xff0c;2014年4月Stratosphere的代码被复制并捐赠给了Apache软件基金会&#xff0c;参加这个孵化项目的初始成员是Stratosphe…

Flutter项目实战

1.Androidstudio 获取dart支持才会出现 下图&#xff0c;才可以单独运行 2.需要 flutter pub get 3.Android Studio 中使用 FlutterJsonBeanFactory 插件 注意点&#xff1a;需要保证该 Android Studio 窗口下是一个完整的Flutter项目&#xff08;窗口下有且仅有一个Flutter项目…

录音软件哪个好用?推荐3款亲测好用的录音软件

很多小伙伴不知道电脑如何录制声音&#xff1f;其实电脑录制声音很简单&#xff0c;借助一款好用录音软件&#xff0c;就可以轻松录制。那你知道录音软件哪个好用吗&#xff1f;小编平常的工作经常需要使用到录音软件。今天就给大家推荐3款亲测好用的录音软件&#xff0c;感兴趣…

k8s核心资源Service

1、介绍为一组pod&#xff08;一次部署&#xff09;统一暴露一个ip和端口&#xff0c;供外界访问。2、集群内对外统一暴露kubectl expose deploy <部署名> --port<对外暴露端口> --target-port<容器内部端口>kubectl expose deploy mynginx --port8000 --tar…

torch_geometric--Convolutional Layers

torch_geometric–Convolutional Layers 卷积层 MessagePassing 式中口口口表示可微的排列不变函数&#xff0c;例如: sum, mean, min, max 或者 mul 和 γΘ\gamma_{\Theta}γΘ​和ϕΘ\phi_{\Theta}ϕΘ​表示可微函数&#xff0c;例如 MLPs. 请参见这里的附带教程。 参数…

JDBC-BasicDAO

引入 之前的sql语句是固定的只能通过参数传入&#xff0c;要写那么多方法肯定不好弄 这就引出了DAO 这里是整个流程示意图 最下面开始说 就是mysql库的每一张表对应一个JavaBean 右边是我们获取和关闭连接的工具类 上面XXXDAO的意思是 每一个表&#xff0c;都有一个与之对应的D…

高压放大器在镓基液态金属微型马达驱动实验研究中的应用

实验名称&#xff1a;高压放大器在镓基液态金属微型马达驱动实验研究中的应用 研究方向&#xff1a;新型材料 测试目的&#xff1a; 微/纳马达虽然是一种以实际应用为基础的动力装置&#xff0c;但其在科学研究方面的价值也尤为重要。在微/纳米尺度下&#xff0c;它可以接受能量…

【测试如何学代码?】学习代码的最佳实践经验分享

为什么要写这篇&#xff1f; 经常在群里看到大家问&#xff1a;该选择哪门语言&#xff1f;哪门语言有钱途&#xff1f; 其实&#xff0c;不管哪门语言&#xff0c;只要深入学好了都不会差&#xff0c;当然&#xff0c;我们选择语言最好还是要和自己的技术方向及职业发展相匹配…

基于php的高校社团信息管理系统

摘 要社团是由高校用户依据兴趣爱好自愿组成&#xff0c;按照章程自主开展活动的用户组织。高校社团是实施素质教育的重要途径和有效方式&#xff0c;在加强校园文化建设、提高用户综合素质、引导用户适应社会、促进用户交流等方面发挥着重要作用&#xff0c;是新形势下有效凝聚…