东莞网站设计开发/青岛seo
本小节将会介绍基本输入输出的 Java 标准类,通过本小节的学习,你将了解到什么是输入和输入,什么是流;输入输出流的应用场景,File
类的使用,什么是文件,Java 提供的输入输出流相关 API 等内容。
1. 什么是输入和输出(I / O)
1.1 基本概念
输入/输出这个概念,对于计算机相关专业的同学并不陌生,在计算中,输入/输出(Input / Output
,缩写为 I / O)是信息处理系统(例如计算机))与外界(可能是人类或其他信息处理系统)之间的通信。输入是系统接收的信号或数据,输出是从系统发送的信号或数据。
那么在 Java 中,什么是输入和输出呢?要理解这个概念,可将 Java 平台视作一个系统。Java 平台是一个孤立的系统,系统之外的所有东西都是它的环境。系统与其环境之间的交互是一种双向对话。系统要么从其环境接收消息,要么将其消息传递给环境。当系统接收到消息时,将其称为输入,与之相反的是输出。
本小节将介绍 Java 的基本输入和输出,包括从键盘读取文本输入,将文本输出到屏幕以及从文件系统读取/写入文件。
Java 提供了两个用于 I / O 的包:较旧的java.io
包(不支持符号链接)和较新的java.nio
(“new io”)包,它对java.nio.file
的异常处理进行了改进。
1.2 简单的 Java 输出——打印内容到屏幕
一直以来,我们都在向屏幕输出内容以验证我们编写的代码逻辑。向屏幕输出内容非常简单,可以由以下两种方式来完成:
// 打印 Hello World,不换行
System.out.print("Hello World");
// 打印 Hello Java,并换行
System.out.println("Hello Java");
1.3 简单的 Java 输入——从键盘输入
java.util
包下的Scanner
类可用于获取用户从键盘输入的内容,我们在Java Scanner 类这一小节已经介绍过具体使用,实例如下:
import java.util.Scanner;/*** @author colorful@TaleLin*/
public class ScannerDemo {public static void main(String[] args) {// 创建扫描器对象Scanner scanner = new Scanner(System.in);System.out.println("请输入您的姓名:");// 可以将用户输入的内容扫描为字符串String name = scanner.nextLine();// 打印输出System.out.println("你好 ".concat(name).concat(" ,欢迎来到CSDN!"));// 关闭扫描器scanner.close();}
}
运行结果:
请输入您的姓名:
Colorful
你好 Colorful ,欢迎来到CSDN!
2. 什么是流(Stream)
Java 中最基本的输入/输入是使用流来完成的。
流是代表数据源和数据目标的对象,怎么理解这句话呢?简单来说,可以读取作为数据源的流,也可以写入作为数据目标的流。Java中的流是长度不确定的有序字节序列,它是一连串流动的字符,是以先进先出的方式发送信息的通道。
3. 输入输出流的应用场景
上面我们已经了解了输入输出流的基本概念,那么它具体是做什么用的呢?
在web
产品的开发中,最常开发的功能就是上传文件到服务器了,这个文件的读写过程就要用到输入输出流。对于计算机中文件的读写、复制和删除等操作也都要用到输入输出流。输入输出流可以说是无处不在,下面我们将会介绍 Java 中输入输出流相关的 API
。
4. File 类
在 Java 中,提供了java.io.File
类对文件和目录进行操作。
File 意思为文件,文件在计算机中非常重要,我们编写的 word 文档、PPT 演示文稿、运行游戏的.exe
可执行文件以及我们编写的 Java 源代码等等都是文件。
4.1 实例化
要实例化File
对象,需要传入一个文件或目录的路径。
File 类提供了如下 4 个构造方法:
File(File parent, String child)
:从父抽象路径名和子路径名字符串创建新的文件实例;File(String pathName)
:通过将给定的路径名字符串转换为抽象路径名,创建一个新的文件实例(最常用);File(String parent, String child)
:从父路径名字符串和子路径名字符串创建新的文件实例;File(URI uri)
:通过将给定的文件: URI转换为抽象路径名,创建一个新的文件实例。
以Windows
系统为例,在桌面下有一个mybj
目录,该目录下有一个Hello.java
文件和一个空的images
目录。
我们可以单击Windows
的路径栏,来获取mybj
目录的绝对路径。
有了目录和文件以及路径。我们分别实例化两个File
对象,实例如下:
import java.io.File;public class FileDemo1 {public static void main(String[] args) {// 传入目录绝对路径File dir = new File("C:\\Users\\Colorful\\Desktop\\mybj\\images");// 传入文件绝对路径File file = new File("C:\\Users\\Colorful\\Desktop\\mybj\\Hello.java");// 打印两个File对象System.out.println(dir);System.out.println(file);}
}
我们可以直接打印File
对象,File
类重写了toString()
方法,查看 Java 源码,toString()
方法直接返回了getPath()
实例方法,此方法返回构造方法传入的路径字符串:
运行结果:
C:\Users\Colorful\Desktop\mybj\images
C:\Users\Colorful\Desktop\mybj\Hello.java
上面代码中,使用\\
表示Windows
下的路径分隔符\
,Linux
和MacOS
下使用正斜杠/
作为路径分隔符。假设是同样的目录结构,在MacOS
和Linux
下是这样表示的:
File dir = new File("/Users/Colorful/Desktop/mybj/images");
因为Windows
平台和其他平台路径分隔符不同,使用不同平台的开发者就难以保证路径分隔符的统一。
为了保证代码更好的兼容性,File
类下提供了一个静态变量separator
,用于表示当前平台的系统分隔符:
// 根据当前平台输出 / 获取 \
System.out.println(File.separator);
4.2 绝对路径和相对路径
在实例化File
对象时,既可以传入绝对路径,也可以传入相对路径。
绝对路径是以根目录开头的完整的全路径,上面代码实例中传入的是绝对路径,我们再来看看什么是相对路径,以及如何传入相对路径。
相对路径指的是当前文件所在的路径引起的跟其它文件(或文件夹)的路径关系。听起来有点绕,我们举例来说明一下,在mybj
目录下新建一个FileDemo2.java
文件,此时mybj
目录的文件目录树结构如下:
└── mybj├── FileDemo2.java├── Hello.java└── images
内容如下:
import java.io.File;
import java.io.IOException;public class FileDemo2 {public static void main(String[] args) throws IOException {// 传入目录相对路径File dir = new File(".\\images");File mybjDir = new File("..\\mybj");// 传入文件相对路径File file = new File(".\\Hello.java");}
}
上面代码的File
构造方法中传入的就是相对路径,代码中的.
表示当前目录,..
表示上级目录。
Tips: 我们在实例化 File 对象时,不会产生对磁盘的操作,因此即使传入的文件或目录不存在,代码也不会抛出异常。只有当调用 File 对象下的一些方法时,才会对磁盘进行操作。
File 对象下有 3 个表示路径的实例方法:
String getPath()
:将抽象路径名转换为路径名字符串;String getAbsolute()
:返回此抽象路径名的绝对路径名字符串;String getCanonicalPath()
:返回此抽象路径名的规范路径名字符串。
我们可以调用这 3 个方法并打印结果,实例如下:
import java.io.File;
import java.io.IOException;public class FileDemo2 {public static void main(String[] args) throws IOException {// 传入目录相对路径File imagesDir = new File(".\\images");File mybjDir = new File("..\\mybj");// 传入文件相对路径File file = new File(".\\Hello.java");System.out.println("-- imagesDir ---");System.out.println(imagesDir.getPath());System.out.println(imagesDir.getAbsolutePath());System.out.println(imagesDir.getCanonicalPath());System.out.println("-- mybjDir ---");System.out.println(mybjDir.getPath());System.out.println(mybjDir.getAbsolutePath());System.out.println(mybjDir.getCanonicalPath());System.out.println("-- file ---");System.out.println(file.getPath());System.out.println(file.getAbsolutePath());System.out.println(file.getCanonicalPath());}
}
运行结果:
-- imagesDir ---
.\images
C:\Users\Colorful\Desktop\mybj\.\images
C:\Users\Colorful\Desktop\mybj\images
-- mybjDir ---
..\mybj
C:\Users\Colorful\Desktop\mybj\..\mybj
C:\Users\Colorful\Desktop\mybj
-- file ---
.\Hello.java
C:\Users\Colorful\Desktop\mybj\.\Hello.java
C:\Users\Colorful\Desktop\mybj\Hello.java
通过运行结果可以看出,规范路径名就是把.
和..
转换为标准的绝对路径。
4.3 判断对象是文件还是目录
我们可以通过如下两个方法判断 File 对象是文件还是目录:
boolean isFile()
:测试此抽象路径名表示的文件是否为普通文件;boolean isDirectory()
:测试此抽象路径名表示的文件是否为目录。
实例如下:
import java.io.File;public class FileDemo3 {public static void printResult(File file) {// 调用isFile()方法并接收布尔类型结果boolean isFile = file.isFile();String result1 = isFile ? "是已存在文件" : "不是已存在文件";// 掉用isDirectory()方法并接收布尔类型而己过boolean directory = file.isDirectory();String result2 = directory ? "是已存在目录" : "不是已存在目录";// 打印该file对象是否是已存在文件/目录的字符串结果System.out.print(file);System.out.print('\t' + result1 + '\t');System.out.println(result2);}public static void main(String[] args) {// 传入目录绝对路径File dir = new File("C:\\Users\\Colorful\\Desktop\\mybj\\images");// 传入文件绝对路径File file = new File("C:\\Users\\Colorful\\Desktop\\mybj\\test.java");FileDemo3.printResult(dir);FileDemo3.printResult(file);}
}
运行结果:
C:\Users\Colorful\Desktop\mybj\images 不是已存在文件 是已存在目录
C:\Users\Colorful\Desktop\mybj\test.java 不是已存在文件 不是已存在目录
代码中我们封装了一个静态方法printResult()
,此方法打印 File 对象是否是文件/目录。值得注意的是,我们的磁盘中不存在C:\Users\Colorful\Desktop\mybj\test.java
,因此无论调用isFile()
方法还是isDirectory()
方法,其返回结果都为false
。
4.4 创建和删除目录
4.4.1 创建目录
对于一个不存在的目录,我们可以使用boolean mkdir()
方法创建一个目录。例如,我们想在mybj
目录下创建一个codes
目录,就可以使用该方法编写一段创建目录的代码。
实例如下:
import java.io.File;public class FileDemo4 {public static void main(String[] args) {// 传入目录绝对路径File dir = new File("C:\\Users\\Colorful\\Desktop\\mybj\\codes");if (!dir.exists()) {// 调用 mkdir() 方法boolean result = dir.mkdir();if (result) {System.out.println("目录创建成功");}}}
}
代码中我们调用了File
对象的boolean exists()
方法,此方法用于测试由此抽象路径名表示的文件或目录是否存在。当不存在时,我们才去创建目录。
运行代码前,mybj
文件目录树结构如下:
└── mybj├── FileDemo2.java├── Hello.java└── images
运行结果:
目录创建成功
运行代码后,mybj
目录下多了一个codes
目录,树结构如下:
└── mybj├── FileDemo2.java├── Hello.java├── images└── codes
另外,File 类也提供了一个boolean mkdirs()
方法,用来创建由这个抽象路径名命名的目录,包括任何必要但不存在的父目录。实际上是在递归执行mkdir()
方法。
4.4.2 删除目录
如果我们想要删除刚刚创建的codes
目录,可以调用boolean delete()
方法,实例如下:
import java.io.File;public class FileDemo5 {public static void main(String[] args) {// 传入目录绝对路径File dir = new File("C:\\Users\\Colorful\\Desktop\\mybj\\codes");if (dir.exists()) {// 调用 delete() 方法boolean deleted = dir.delete();if (deleted) {System.out.println("删除目录成功");}}}
}
运行代码前,mybj
文件目录树结构如下:
└── mybj├── FileDemo2.java├── Hello.java├── images└── codes
运行结果:
删除目录成功
运行代码后,树结构如下:
└── mybj├── FileDemo2.java├── Hello.java└── images
4.5 创建和删除文件
对于文件类型的File
对象,可以通过boolean createNewFile()
方法创建一个新文件,使用boolean delete()
方法删除文件。其调用方法和创建/删除目录相同,此处不再赘述。
关于更多File
对象的操作,可翻阅官方文档。
5. InputStream 抽象类
5.1 概述
java.io.InputStream
抽象类是 Java 提供的最基本的输入流,它是所有输入流的父类。其最常用的抽象方法int read()
签名如下:
public abstract int read() throws IOException;
这个方法用于读取输入流的下一个字节,返回的int
如果为-1
,则表示已经读取到文件末尾。
InputStream
与其子类的 UML 图如下所示:
5.2 FileInputStream 实现类
我们将以最常用的FileInputStream
实现类为例进行学习。其他实现类大同小异,如有需要可翻阅官方文档。
FileInputStream
就是从文件流中读取数据,我们在mybj
目录下新建一个文本文档Hello.txt
,并输入如下内容:
Hello mybj!
读取Hello.txt
文件中数据的实例代码如下:
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;public class FileInputStreamDemo1 {public static void main(String[] args) throws IOException {// 实例化文件流FileInputStream fileInputStream = new FileInputStream("C:\\Users\\Colorful\\Desktop\\mybj\\Hello.txt");for (;;) {int n = fileInputStream.read();if (n == -1) {// read() 方法返回-1 则跳出循环break;}// 将n强制转换为 char 类型System.out.print((char) n);}// 关闭文件流fileInputStream.close();}
}
运行结果:
Hello mybj!
如果我们打开了一个文件并进行操作,不要忘记使用close()
方法来及时关闭。这样可以让系统释放资源。
6. OutputStream 抽象类
6.1 概述
OutPutStream
抽象类是与InputStream
对应的最基本的输出流,它是所有输出流的父类。其最常用的抽象方法void write(int b)
签名如下:
public abstract void write(int b) throws IOException;
这个方法用于写入一个字节到输出流。
OutputStream
与其子类的 UML 图如下所示:
6.2 FileOutputStream 实现类
我们同样以最常用的FileOutputStream
实现类为例进行学习。其他实现类大同小异,如有需要可翻阅官方文档。
FileOutputStream
就是向文件流中写入数据,下面我们向mybj
目录下的文本文档Hello.txt
输入一段字符串HHH
。完整实例如下:
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;public class FileOutputStreamDemo1 {public static void main(String[] args) throws IOException {FileOutputStream fileOutputStream = new FileOutputStream("C:\\Users\\Colorful\\Desktop\\mybj\\Hello.txt");// 写入 3 个H字符fileOutputStream.write(72);fileOutputStream.write(72);fileOutputStream.write(72);fileOutputStream.close();}
}
运行代码后,Hello.txt
后面成功写入了 3 个字符H
。
7. 小结
通过本小节的学习,我们知道了什么是输入输出流的概念,输入输出流经常用于上传文件到服务器的场景。想要通过 Java 操作文件和目录,要学会使用java.io.File
类,InputStream
和OutputStream
分别是所有输入流和所有输出流的父类,FileInputStream
实现了文件流的输入,FileOutputStream
实现了文件流的输出。还有很多其它实现类我们没有介绍到,但使用方法大同小异,希望同学可以在用到时自行查阅文档来学习。
相关文章:

36. 【Java教程】输入输出流
本小节将会介绍基本输入输出的 Java 标准类,通过本小节的学习,你将了解到什么是输入和输入,什么是流;输入输出流的应用场景,File类的使用,什么是文件,Java 提供的输入输出流相关 API 等内容。 1…...

Visual C++2010学习版详细安装教程(超详细图文)
Visual C 介绍 Visual C(简称VC)是微软公司推出的一种集成开发环境(IDE),主要用于开发C和C语言的应用程序。它提供了强大的编辑器、编译器、调试器、库和框架支持,以及丰富的工具和选项,使得开…...

matlab图像处理入门
matlab在学校科研,仿真及基于模型开发的工作中有重要作用,在图像处理方面由于省去了复杂的上位机开发流程,因此可以让用户快速开发验证算法,下面简要介绍其在图像处理方面的应用。 matlab开发图像处理算法的流程主要是,…...

关于线程池面试题,使用“豆包”训练答案
我提问: 问题描述 下面是一个有关线程池调度的面试真题,来自于疯狂创客圈社群: 一个线程池的核心线程数为10个,最大线程数为20个,阻塞队列的容量为30。现在提交45个 任务,每个任务的耗时为500毫秒。 请问&…...

【WRF理论第二期】模型目录介绍
WRF理论第二期:模型目录介绍 1 WRF主目录2 WPS主目录3 编译后的可执行文件4 运行目录参考 了解 WRF 模型的目录结构有助于有效地管理和操作模型,从而确保模拟和分析工作的顺利进行。以下分解介绍WRF主目录、WPS主目录等。 Github-wrf-model/WRF 1 WRF…...

从了解到掌握 Spark 计算框架(一)Spark 简介与基础概念
文章目录 什么是 Spark?核心特点 Spark 对比 MapReduceSpark 编程模型RDDDataFrameDataset Spark 运行模式Spark 生态 什么是 Spark? Spark 是一个基于内存的分布式计算框架,最初由加州大学伯克利分校的 AMPLab 开发,后来捐赠给了…...

linux bind函数
bind函数的目的是让把客户端对应的端口(port)地址和ip地址绑定到客户端 [参考](Linux之bind 函数(详细篇)_linux bind函数-CSDN博客)...

Flink系列一:flink光速入门 (^_^)
引入 spark和flink的区别:在上一个spark专栏中我们了解了spark对数据的处理方式,在 Spark 生态体系中,对于批处理和流处理采用了不同的技术框架,批处理由 Spark-core,SparkSQL 实现,流处理由 Spark Streaming 实现&am…...

PySpark特征工程(III)--特征选择
有这么一句话在业界广泛流传:数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限而已。由此可见,特征工程在机器学习中占有相当重要的地位。在实际应用当中,可以说特征工程是机器学习成功的关键。 特征工程是数据分析…...

Mongodb的数据库简介、docker部署、操作语句以及java应用
Mongodb的数据库简介、docker部署、操作语句以及java应用 本文主要介绍了mongodb的基础概念和特点,以及基于docker的mongodb部署方法,最后介绍了mongodb的常用数据库操作语句(增删改查等)以及java下的常用语句。 一、基础概念 …...

七大战略性新兴产业崭露头角:新能源电燃灶或将成为未来厨房新宠
近日,在国家发布的七大战略性新兴产业名单中,新能源产业赫然在列,作为其中的重要组成部分,华火新能源电燃灶凭借其独特的优势,正逐渐走进人们的视野,有望成为未来厨房的新宠。 华火新能源电燃灶作为清洁能源…...

C#进阶-用于Excel处理的程序集
在.NET开发中,处理Excel文件是一项常见的任务,而有一些优秀的Excel处理包可以帮助开发人员轻松地进行Excel文件的读写、操作和生成。本文介绍了NPOI、EPPlus和Spire.XLS这三个常用的.NET Excel处理包,分别详细介绍了它们的特点、示例代码以及…...

持续总结中!2024年面试必问 20 道 Kafka面试题(五)
上一篇地址:持续总结中!2024年面试必问 20 道 Kafka面试题(四)-CSDN博客 九、请解释Kafka中的Zookeeper的作用。 在Kafka中,ZooKeeper扮演着至关重要的角色,主要负责集群管理、协调和状态同步等功能。以下…...

Draw.io 使用详细教程
Draw.io 是一款功能强大的在线绘图工具,适用于创建流程图、网络图、组织结构图、UML 图等。以下是详细的使用教程,包括基本操作、快捷键、常用技巧和进阶技巧。 1. 创建新图 选择存储位置 首次使用时,系统会询问你要将图保存到哪里。你可以…...

人工智能学习笔记(1):了解sklearn
sklearn 简介 Sklearn是一个基于Python语言的开源机器学习库。全称Scikit-Learn,是建立在诸如NumPy、SciPy和matplotlib等其他Python库之上,为用户提供了一系列高质量的机器学习算法,其典型特点有: 简单有效的工具进行预测数据分…...

PromptPort:为大模型定制的创意AI提示词工具库
PromptPort:为大模型定制的创意AI提示词工具库 随着人工智能技术的飞速发展,大模型在各行各业的应用越来越广泛。而在与大模型交互的过程中,如何提供精准、有效的提示词成为了关键。今天,就为大家介绍一款专为大模型定制的创意AI…...

IDEA升级web项目为maven项目乱码
今天将一个java web项目改造为maven项目。 首先,创建一个新的maven项目,将文件拷贝到新项目中。 其次,将旧项目的jar包,在maven的pom.xml做成依赖 接着,把没有maven坐标的jar包在编译的时候也包含进来 <build>…...

存内计算与扩散模型:下一代视觉AIGC能力提升的关键
目录 前言 视觉AIGC的ChatGPT4.0时代 扩散模型的算力“饥渴症” 存内计算解救算力“饥渴症” 结语 前言 在这个AI技术日新月异的时代,我们正见证着前所未有的创新与变革。尤其是在视觉内容生成领域(AIGC,Artificial Intelligence Generate…...

如何上传模型素材创建3D漫游作品?
一、进入3D空间漫游互动工具编辑器 进入720云官网-点击“开始创作”-选择3D空间漫游-进入到作品创建页面。 二、上传模型及素材,创建生成3D空间漫游模型 1.创建3D空间作品:您可以选择新建空白作品或使用720云提供的预设空间模板,本篇主要介绍…...

NFS p.1 服务器的部署以及客户端与服务端的远程挂载
目录 介绍 应用 NFS的工作原理 NFS的使用 步骤 1、两台机子 2、安装 3、配置文件 4、实验 服务端 准备 启动服务: 客户端 准备 步骤 介绍 NFS(Network File System,网络文件系统)是一种古老的用于在UNIX/Linux主…...

性能工具之 JMeter 常用组件介绍(二)
文章目录 一、Thread Group二、断言组件1、Response Assertion:响应断言2、Response Assertion:响应断言3、Duration Assertion:响应时间断言4.、JSON Assertion:json断言 一、Thread Group 线程组也叫用户组,是性能测…...

Bev 车道标注方案及复杂车道线解决
文章目录 1. 数据采集方案1.1 传感器方案1.2 数据同步2. 标注方案2.1 标注注意项2.2 4d 标注(时序)2.2.1 4d标签制作2.2.2 时序融合的作用2.2.2.1 时序融合方式2.2.2.2 时序融合难点2.2.2.2 时序实际应用情况3. 复杂车道线解决3.1 split 和merge车道线的解决3.2 大曲率或U形车道…...

vue 将echart 下载为base64图片
1 echart是页面的子组件, 2 页面有多个echart 3 将多个echart下载为base64图片 // 子组件 echart,要保存echartconst chart this.$echarts.init(this.$refs.chart, light) this.chartData chart; //保存数据,供父组件alarmReport调用(th…...

视频汇聚EasyCVR平台视图库GA/T 1400协议与GB/T 28181协议的区别
在公安和公共安全领域,视频图像信息的应用日益广泛,尤其是在监控、安防和应急指挥等方面。为了实现视频信息的有效传输、接收和处理,GA/T 1400和GB/T 28181这两个协议被广泛应用。虽然两者都服务于视频信息处理的目的,但它们在实际…...

白杨SEO:小红书标题怎么写?小红书怎么推广引流到微信?小红书违规注销不了怎么办?33个小红书运营常见问题解答【干货】
前言:这是白杨SEO公号原创第533篇。为什么想到写这个?因为很多白杨SEO朋友在做小红书遇到这样或那样的问题来问我,所以我把一些问得较多的常见热门问题整理写出来,有需要的可以随时查看,收藏与分享。图片在公众号白杨S…...

Linux压测
目录 CPU压测 内存压测 本文主要是编写了shell脚本,对Linux系统进行CPU和内存的压测。 CPU压测 [rootlocalhost ~]# cat cpu_stress_test.sh #!/bin/bash # 定义压测CPU的函数 function test_cpu() { # 初始化时间变量 local time # 获取参数 while geto…...

Linux如何远程连接服务器?
远程连接服务器是当代计算机技术中一个非常重要的功能,在各种领域都有广泛的应用。本文将重点介绍如何使用Linux系统进行远程连接服务器操作。 SSH协议 远程连接服务器最常用的方式是使用SSH(Secure Shell)协议。SSH是一种网络协议ÿ…...

Java 应用部署与优化:简单介绍Java应用的部署策略,并讲解一些常用的Java应用性能优化技巧
I. Java 应用部署 A. 容器化部署 Docker 的简介及其优势 Docker是一种开源的容器化技术,它可以将应用及其依赖打包在一起作为一个可运行的独立单元进行运行。Docker的主要优势包括以下几点: 便携性:无论在哪种环境下,只要安装了Docker,就可以运行Docker容器。 一致性:…...

cudart link错误自动修复脚本
问题 在conda安装cuda环境时 mamba install pytorch torchvision torchaudio pytorch-cuda12.1 -c pytorch -c nvidia -y mamba install nvidia/label/cuda-12.1.0::cuda安装的envs/xxx/lib/libcudart.so 会link到错的 如果手动修复太复杂,我写了一个脚本自动修复…...

个人笔记-随意记录
常见问题? 1.linux重启服务 端口被占用如何解决? 查看某个端口被占用的进程 netstat -tulnp | grep :23454 强制杀死进程 kill -9 1776 重启服务即可...