HDFS编程 - 使用HDFS Java API进行文件操作

文章目录

  • 前言
  • 一、创建hdfs-demo项目
    • 1. 在idea上创建maven项目
    • 2. 导入hadoop相关依赖
  • 二、常用 HDFS Java API
    • 1. 简介
    • 2. 获取文件系统实例
    • 3. 创建目录
    • 4. 创建文件
      • 4.1 创建文件并写入数据
      • 4.2 创建新空白文件
    • 5. 查看文件内容
    • 6. 查看目录下的文件或目录信息
      • 6.1 查看指定目录下的文件或目录信息
      • 6.2 递归查看指定目录下的所有文件信息
      • 6.3 查看指定路径信息
    • 7. 文件上传
    • 8. 向文件追加内容
    • 9. 文件下载
    • 10. 移动或重命名
    • 11. 复制或重命名文件
    • 12. 删除文件或目录
      • 12.1 删除文件
      • 12.1 删除目录
    • 13. 检查路径是否存在


前言

本文将详细介绍如何使用Java编程语言与HDFS进行交互。我们将通过创建一个简单的Maven项目,逐步演示HDFS的常用Java API,包括创建目录、上传和下载文件、查看文件内容、删除文件等操作。通过这些示例,读者将能够掌握基本的HDFS操作,并为后续的大数据处理打下坚实的基础。


一、创建hdfs-demo项目

1. 在idea上创建maven项目

打开idea新建项目,如下图。

在这里插入图片描述

选择Java项目,输入项目名称,选择构建系统为Maven,选择JDK为1.8,然后点击创建。

在这里插入图片描述

2. 导入hadoop相关依赖

如下图所示,在pom.xml文件中添加Hadoop相关依赖。

在这里插入图片描述


二、常用 HDFS Java API

1. 简介

Hadoop分布式文件系统(HDFS)是Apache Hadoop的核心组件之一,设计用于存储大量的数据,并提供高吞吐量的数据访问。HDFS Java API为开发者提供了直接与HDFS交互的能力,允许执行诸如创建目录、上传和下载文件、读取和写入文件等操作。

2. 获取文件系统实例

编写一个getFs方法,用于返回一个文件系统实例。

public static FileSystem getFs() throws IOException, InterruptedException {// 1. 创建Hadoop配置对象,并设置配置信息Configuration conf = new Configuration();conf.set("fs.defaultFS", "hdfs://192.168.121.100:9000");conf.set("fs.hdfs.impl", "org.apache.hadoop.hdfs.DistributedFileSystem");// 2. 获取文件系统实例,设置文件路径return FileSystem.get(URI.create(""), conf, "root");
}

在这里插入图片描述

3. 创建目录

可以使用mkdirs()方法来创建新的目录。

package org.example;import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.fs.permission.FsPermission;import java.io.IOException;
import java.net.URI;public class Main {public static void main(String[] args) throws IOException, InterruptedException {FileSystem fs = getFs();// 创建目录/test/demoboolean mkdirs = fs.mkdirs(new Path("/test/demo"));if (mkdirs) {System.out.println("===============创建目录成功===============");} else {System.out.println("===============创建目录失败===============");}// 创建目录/test/demo2,并设置权限为777boolean mkdirs2 = fs.mkdirs(new Path("/test/demo2"), new FsPermission("777"));if (mkdirs2) {System.out.println("===============创建目录并设置权限成功===============");} else {System.out.println("===============创建目录并设置权限失败===============");}// 关闭文件系统fs.close();}public static FileSystem getFs() throws IOException, InterruptedException {// 1. 创建Hadoop配置对象,并设置配置信息Configuration conf = new Configuration();conf.set("fs.defaultFS", "hdfs://192.168.121.100:9000");conf.set("fs.hdfs.impl", "org.apache.hadoop.hdfs.DistributedFileSystem");// 2. 获取文件系统实例,设置文件路径return FileSystem.get(URI.create(""), conf, "root");}}

执行结果如下图所示:

在这里插入图片描述

4. 创建文件

4.1 创建文件并写入数据

可以使用create()方法来创建文件并写入数据。

package org.example;import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FSDataOutputStream;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;import java.io.IOException;
import java.net.URI;public class Main {public static void main(String[] args) throws IOException, InterruptedException {FileSystem fs = getFs();// 创建文件/test/demo/text.txt,并向文件中写入数据FSDataOutputStream fsDataOutputStream = fs.create(new Path("/test/demo/text.txt"));String dataStr = "这是写入文件/test/demo/text.txt的示例数据\n";fsDataOutputStream.write(dataStr.getBytes());System.out.println("===============创建文件并写入数据成功===============");// 关闭文件系统fs.close();}public static FileSystem getFs() throws IOException, InterruptedException {// 1. 创建Hadoop配置对象,并设置配置信息Configuration conf = new Configuration();conf.set("fs.defaultFS", "hdfs://192.168.121.100:9000");conf.set("fs.hdfs.impl", "org.apache.hadoop.hdfs.DistributedFileSystem");// 2. 获取文件系统实例,设置文件路径return FileSystem.get(URI.create(""), conf, "root");}}

4.2 创建新空白文件

可以使用createNewFile()方法来创建新空白文件。

package org.example;import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;import java.io.IOException;
import java.net.URI;public class Main {public static void main(String[] args) throws IOException, InterruptedException {FileSystem fs = getFs();// 创建新空白文件/test/demo/text01.txtboolean newFile = fs.createNewFile(new Path("/test/demo/text01.txt"));if (newFile) {System.out.println("===============创建新空白文件成功===============");} else {System.out.println("===============创建新空白文件失败===============");}// 关闭文件系统fs.close();}public static FileSystem getFs() throws IOException, InterruptedException {// 1. 创建Hadoop配置对象,并设置配置信息Configuration conf = new Configuration();conf.set("fs.defaultFS", "hdfs://192.168.121.100:9000");conf.set("fs.hdfs.impl", "org.apache.hadoop.hdfs.DistributedFileSystem");// 2. 获取文件系统实例,设置文件路径return FileSystem.get(URI.create(""), conf, "root");}}

5. 查看文件内容

可以使用open()方法来打开文件并读取文件内容。

package org.example;import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FSDataInputStream;
import org.apache.hadoop.fs.FSDataOutputStream;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URI;public class Main {public static void main(String[] args) throws IOException, InterruptedException {FileSystem fs = getFs();// 打开文件/test/demo/text.txt,并读取文件内容FSDataInputStream open = fs.open(new Path("/test/demo/text.txt"));BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(open));System.out.println("===============文件内容如下:===============");String line;while ((line = bufferedReader.readLine()) != null) {System.out.println(line);}// 关闭文件系统fs.close();}public static FileSystem getFs() throws IOException, InterruptedException {// 1. 创建Hadoop配置对象,并设置配置信息Configuration conf = new Configuration();conf.set("fs.defaultFS", "hdfs://192.168.121.100:9000");conf.set("fs.hdfs.impl", "org.apache.hadoop.hdfs.DistributedFileSystem");// 2. 获取文件系统实例,设置文件路径return FileSystem.get(URI.create(""), conf, "root");}}

执行结果如下图所示:

在这里插入图片描述

6. 查看目录下的文件或目录信息

6.1 查看指定目录下的文件或目录信息

可以使用listStatus()方法来查看目录下的文件或目录信息。

package org.example;import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileStatus;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.fs.permission.FsPermission;import java.io.IOException;
import java.net.URI;
import java.time.Instant;
import java.time.LocalDateTime;
import java.time.ZoneOffset;
import java.time.format.DateTimeFormatter;public class Main {public static void main(String[] args) throws IOException, InterruptedException {FileSystem fs = getFs();// 查看目录/test下的文件或目录信息FileStatus[] fileStatuses = fs.listStatus(new Path("/test"));for (FileStatus fileStatus : fileStatuses) {System.out.println("===============文件或目录信息如下:===============");FsPermission permission = fileStatus.getPermission();short replication = fileStatus.getReplication();String owner = fileStatus.getOwner();String group = fileStatus.getGroup();long size = fileStatus.getLen();long blockSize = fileStatus.getBlockSize();LocalDateTime localDateTime = Instant.ofEpochMilli(fileStatus.getAccessTime()).atZone(ZoneOffset.systemDefault()).toLocalDateTime();String accessTime = localDateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));Path path = fileStatus.getPath();System.out.println("权限:" + permission + "\t" + "副本数:" + replication + "\t" + "所有者:" + owner + "\t" + "群组:" + group);System.out.println("大小:" + size + "\t" + "块大小:" + blockSize + "\t" + "访问时间:" + accessTime + "\t" + "路径:" + path);}// 关闭文件系统fs.close();}public static FileSystem getFs() throws IOException, InterruptedException {// 1. 创建Hadoop配置对象,并设置配置信息Configuration conf = new Configuration();conf.set("fs.defaultFS", "hdfs://192.168.121.100:9000");conf.set("fs.hdfs.impl", "org.apache.hadoop.hdfs.DistributedFileSystem");// 2. 获取文件系统实例,设置文件路径return FileSystem.get(URI.create(""), conf, "root");}}

执行结果如下图所示:

在这里插入图片描述

6.2 递归查看指定目录下的所有文件信息

可以使用listFiles()方法来递归查看指定目录下的所有文件信息。

package org.example;import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.*;
import org.apache.hadoop.fs.permission.FsPermission;import java.io.IOException;
import java.net.URI;
import java.time.Instant;
import java.time.LocalDateTime;
import java.time.ZoneOffset;
import java.time.format.DateTimeFormatter;public class Main {public static void main(String[] args) throws IOException, InterruptedException {FileSystem fs = getFs();// 递归查看目录/test下的所有文件信息RemoteIterator<LocatedFileStatus> listFiles = fs.listFiles(new Path("/test"), true);while (listFiles.hasNext()) {FileStatus fileStatus = listFiles.next();System.out.println("===============文件或目录信息如下:===============");FsPermission permission = fileStatus.getPermission();short replication = fileStatus.getReplication();String owner = fileStatus.getOwner();String group = fileStatus.getGroup();long size = fileStatus.getLen();long blockSize = fileStatus.getBlockSize();LocalDateTime localDateTime = Instant.ofEpochMilli(fileStatus.getAccessTime()).atZone(ZoneOffset.systemDefault()).toLocalDateTime();String accessTime = localDateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));Path path = fileStatus.getPath();System.out.println("权限:" + permission + "\t" + "副本数:" + replication + "\t" + "所有者:" + owner + "\t" + "群组:" + group);System.out.println("大小:" + size + "\t" + "块大小:" + blockSize + "\t" + "访问时间:" + accessTime + "\t" + "路径:" + path);}// 关闭文件系统fs.close();}public static FileSystem getFs() throws IOException, InterruptedException {// 1. 创建Hadoop配置对象,并设置配置信息Configuration conf = new Configuration();conf.set("fs.defaultFS", "hdfs://192.168.121.100:9000");conf.set("fs.hdfs.impl", "org.apache.hadoop.hdfs.DistributedFileSystem");// 2. 获取文件系统实例,设置文件路径return FileSystem.get(URI.create(""), conf, "root");}}

执行结果如下图所示:

在这里插入图片描述

6.3 查看指定路径信息

可以使用getFileStatus()方法来查看指定路径信息。

package org.example;import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileStatus;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.fs.permission.FsPermission;import java.io.IOException;
import java.net.URI;
import java.time.Instant;
import java.time.LocalDateTime;
import java.time.ZoneOffset;
import java.time.format.DateTimeFormatter;public class Main {public static void main(String[] args) throws IOException, InterruptedException {FileSystem fs = getFs();// 查看目录/test的信息FileStatus fileStatus = fs.getFileStatus(new Path("/test"));System.out.println("===============路径信息如下:===============");FsPermission permission = fileStatus.getPermission();short replication = fileStatus.getReplication();String owner = fileStatus.getOwner();String group = fileStatus.getGroup();long size = fileStatus.getLen();long blockSize = fileStatus.getBlockSize();LocalDateTime localDateTime = Instant.ofEpochMilli(fileStatus.getAccessTime()).atZone(ZoneOffset.systemDefault()).toLocalDateTime();String accessTime = localDateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));Path path = fileStatus.getPath();System.out.println("权限:" + permission + "\t" + "副本数:" + replication + "\t" + "所有者:" + owner + "\t" + "群组:" + group);System.out.println("大小:" + size + "\t" + "块大小:" + blockSize + "\t" + "访问时间:" + accessTime + "\t" + "路径:" + path);// 关闭文件系统fs.close();}public static FileSystem getFs() throws IOException, InterruptedException {// 1. 创建Hadoop配置对象,并设置配置信息Configuration conf = new Configuration();conf.set("fs.defaultFS", "hdfs://192.168.121.100:9000");conf.set("fs.hdfs.impl", "org.apache.hadoop.hdfs.DistributedFileSystem");// 2. 获取文件系统实例,设置文件路径return FileSystem.get(URI.create(""), conf, "root");}}

执行结果如下图所示:

在这里插入图片描述

7. 文件上传

可以使用copyFromLocalFile()方法从本地上传文件到hdfs。

package org.example;import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;import java.io.IOException;
import java.net.URI;public class Main {public static void main(String[] args) throws IOException, InterruptedException {FileSystem fs = getFs();// 把本地文件D:\shiyan.csv上传到hdfs的/test/demo目录,上传后不删除本地文件D:\shiyan.csvfs.copyFromLocalFile(new Path("D:\\shiyan.csv"), new Path("/test/demo"));// 把本地文件D:\shiyan.csv上传到hdfs的/test/demo目录,上传后不删除本地文件D:\shiyan.csv,且如果hdfs上存在相同的文件则覆盖// fs.copyFromLocalFile(false, true, new Path("D:\\shiyan.csv"), new Path("/test/demo"));System.out.println("===============文件上传成功===============");// 关闭文件系统fs.close();}public static FileSystem getFs() throws IOException, InterruptedException {// 1. 创建Hadoop配置对象,并设置配置信息Configuration conf = new Configuration();conf.set("fs.defaultFS", "hdfs://192.168.121.100:9000");conf.set("fs.hdfs.impl", "org.apache.hadoop.hdfs.DistributedFileSystem");// 2. 获取文件系统实例,设置文件路径return FileSystem.get(URI.create(""), conf, "root");}}

8. 向文件追加内容

可以使用append()方法追加内容到hdfs上的指定文件。

package org.example;import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FSDataOutputStream;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;import java.io.IOException;
import java.net.URI;public class Main {public static void main(String[] args) throws IOException, InterruptedException {FileSystem fs = getFs();// 向hdfs上文件/test/demo/text01.txt写入数据FSDataOutputStream fsDataOutputStream = fs.append(new Path("/test/demo/text01.txt"));// 把9,7,6,7,9写入文件/test/demo/text01.txt并换行fsDataOutputStream.write("9,7,6,7,9\n".getBytes());// 把缓冲区数据刷入文件fsDataOutputStream.flush();// 关闭资源fsDataOutputStream.close();System.out.println("===============追加数据到文件成功===============");// 关闭文件系统fs.close();}public static FileSystem getFs() throws IOException, InterruptedException {// 1. 创建Hadoop配置对象,并设置配置信息Configuration conf = new Configuration();conf.set("fs.defaultFS", "hdfs://192.168.121.100:9000");conf.set("fs.hdfs.impl", "org.apache.hadoop.hdfs.DistributedFileSystem");// 2. 获取文件系统实例,设置文件路径return FileSystem.get(URI.create(""), conf, "root");}}

9. 文件下载

可以使用copyToLocalFile()方法从hdfs下载文件到本地。

package org.example;import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;import java.io.IOException;
import java.net.URI;public class Main {public static void main(String[] args) throws IOException, InterruptedException {FileSystem fs = getFs();// 把hdfs上文件/test/demo/text01.txt下载到本地D:\目录fs.copyToLocalFile(new Path("/test/demo/text01.txt"), new Path("D:\\"));System.out.println("===============文件下载成功===============");// 关闭文件系统fs.close();}public static FileSystem getFs() throws IOException, InterruptedException {// 1. 创建Hadoop配置对象,并设置配置信息Configuration conf = new Configuration();conf.set("fs.defaultFS", "hdfs://192.168.121.100:9000");conf.set("fs.hdfs.impl", "org.apache.hadoop.hdfs.DistributedFileSystem");// 2. 获取文件系统实例,设置文件路径return FileSystem.get(URI.create(""), conf, "root");}}

10. 移动或重命名

可以使用rename()方法来移动或重命名文件。

package org.example;import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;import java.io.IOException;
import java.net.URI;public class Main {public static void main(String[] args) throws IOException, InterruptedException {FileSystem fs = getFs();// 把hdfs上文件/test/demo/text.txt重命名为/test/demo/text02.txtboolean rename = fs.rename(new Path("/test/demo/text.txt"), new Path("/test/demo/text02.txt"));if (rename) {System.out.println("===============文件重命名成功===============");} else {System.out.println("===============文件重命名失败===============");}// 把hdfs上文件/test/demo/text01.txt移动到/test/demo2目录boolean rename2 = fs.rename(new Path("/test/demo/text02.txt"), new Path("/test/demo2"));if (rename2) {System.out.println("===============文件移动成功===============");} else {System.out.println("===============文件移动失败===============");}// 关闭文件系统fs.close();}public static FileSystem getFs() throws IOException, InterruptedException {// 1. 创建Hadoop配置对象,并设置配置信息Configuration conf = new Configuration();conf.set("fs.defaultFS", "hdfs://192.168.121.100:9000");conf.set("fs.hdfs.impl", "org.apache.hadoop.hdfs.DistributedFileSystem");// 2. 获取文件系统实例,设置文件路径return FileSystem.get(URI.create(""), conf, "root");}}

执行结果如下图所示:

在这里插入图片描述

11. 复制或重命名文件

可以使用FileUtil.copy()方法来复制或重命名文件。

package org.example;import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.FileUtil;
import org.apache.hadoop.fs.Path;import java.io.IOException;
import java.net.URI;public class Main {public static void main(String[] args) throws IOException, InterruptedException {FileSystem fs = getFs();// 把hdfs上文件/test/demo/text01.txt复制到/test/demo2目录boolean copy = FileUtil.copy(fs, new Path("/test/demo/text01.txt"), fs, new Path("/test/demo2"), false, true, fs.getConf());if (copy) {System.out.println("===============复制文件成功===============");} else {System.out.println("===============复制文件失败===============");}// 把hdfs上文件/test/demo/text01.txt复制并重命名为/test/demo2/text03.txtboolean copy2 = FileUtil.copy(fs, new Path("/test/demo/text01.txt"), fs, new Path("/test/demo2/text03.txt"), false, true, fs.getConf());if (copy2) {System.out.println("===============复制文件并重命名成功===============");} else {System.out.println("===============复制文件并重命名失败===============");}// 关闭文件系统fs.close();}public static FileSystem getFs() throws IOException, InterruptedException {// 1. 创建Hadoop配置对象,并设置配置信息Configuration conf = new Configuration();conf.set("fs.defaultFS", "hdfs://192.168.121.100:9000");conf.set("fs.hdfs.impl", "org.apache.hadoop.hdfs.DistributedFileSystem");// 2. 获取文件系统实例,设置文件路径return FileSystem.get(URI.create(""), conf, "root");}}

执行结果如下图所示:

在这里插入图片描述

12. 删除文件或目录

12.1 删除文件

可以使用delete()方法来删除文件。

package org.example;import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;import java.io.IOException;
import java.net.URI;public class Main {public static void main(String[] args) throws IOException, InterruptedException {FileSystem fs = getFs();// 删除hdfs上文件/test/demo2/text03.txtboolean delete = fs.delete(new Path("/test/demo2/text03.txt"), false);if (delete) {System.out.println("===============删除文件成功===============");} else {System.out.println("===============删除文件失败===============");}// 关闭文件系统fs.close();}public static FileSystem getFs() throws IOException, InterruptedException {// 1. 创建Hadoop配置对象,并设置配置信息Configuration conf = new Configuration();conf.set("fs.defaultFS", "hdfs://192.168.121.100:9000");conf.set("fs.hdfs.impl", "org.apache.hadoop.hdfs.DistributedFileSystem");// 2. 获取文件系统实例,设置文件路径return FileSystem.get(URI.create(""), conf, "root");}}

12.1 删除目录

可以使用delete()方法来删除目录。

package org.example;import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;import java.io.IOException;
import java.net.URI;public class Main {public static void main(String[] args) throws IOException, InterruptedException {FileSystem fs = getFs();// 递归删除hdfs上目录/test/demo2boolean delete = fs.delete(new Path("/test/demo2"), true);if (delete) {System.out.println("===============删除目录成功===============");} else {System.out.println("===============删除目录失败===============");}// 关闭文件系统fs.close();}public static FileSystem getFs() throws IOException, InterruptedException {// 1. 创建Hadoop配置对象,并设置配置信息Configuration conf = new Configuration();conf.set("fs.defaultFS", "hdfs://192.168.121.100:9000");conf.set("fs.hdfs.impl", "org.apache.hadoop.hdfs.DistributedFileSystem");// 2. 获取文件系统实例,设置文件路径return FileSystem.get(URI.create(""), conf, "root");}}

13. 检查路径是否存在

可以使用exists()方法来检查路径是否存在。

package org.example;import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;import java.io.IOException;
import java.net.URI;public class Main {public static void main(String[] args) throws IOException, InterruptedException {FileSystem fs = getFs();// 检查路径/test/demo是否存在boolean exists = fs.exists(new Path("/test/demo"));if (exists) {System.out.println("===============路径存在===============");} else {System.out.println("===============路径不存在===============");}// 关闭文件系统fs.close();}public static FileSystem getFs() throws IOException, InterruptedException {// 1. 创建Hadoop配置对象,并设置配置信息Configuration conf = new Configuration();conf.set("fs.defaultFS", "hdfs://192.168.121.100:9000");conf.set("fs.hdfs.impl", "org.apache.hadoop.hdfs.DistributedFileSystem");// 2. 获取文件系统实例,设置文件路径return FileSystem.get(URI.create(""), conf, "root");}}

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

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

相关文章

高德地图调用geoserver提供WMTS服务报错Unknown TILEMATRIX问题

1. 高德地图JSAPI要求WMTS必须是EPSG:3857坐标系 2. 高德调用WMTS服务时参数 TileMatrix中未带有坐标系字段&#xff0c;需要修改geoserver源码兼容一下&#xff0c;修改JSAPI也可以&#xff0c;如你用都用离线的话 leaflet加载geoserver的WMTS服务时TILEMATRIX字段 TILEMATR…

C语言——文件IO 【文件IO和标准IO区别,操作文件IO】open,write,read,dup2,access,stat

1.思维导图 2.练习 1&#xff1a;使用C语言编写一个简易的界面&#xff0c;界面如下 1&#xff1a;标准输出流 2&#xff1a;标准错误流 3&#xff1a;文件流 要求&#xff1a;按1的时候&#xff0c;通过printf输出数据&#xff0c;按2的时候&#xff0c;通过p…

C++实现图书管理系统(Qt C++ GUI界面版)

前瞻 本项目基于【C】图书管理系统(完整版) 图书管理系统功能概览&#xff1a; 登录&#xff0c;注册学生,老师借书&#xff0c;查看自己当前借书情况&#xff0c;还书。管理员增加书&#xff0c;查看当前借阅情况&#xff0c;查看当前所有借阅人&#xff0c;图书信息。 效果…

使用 NestJS 构建高效且模块化的 Node.js 应用程序,从安装到第一个 API 端点:一步一步指南

一、安装 NestJS 要开始构建一个基于 NestJS 的应用&#xff0c;首先需要安装一系列依赖包。以下是必要的安装命令&#xff1a; npm i --save nestjs/core nestjs/common rxjs reflect-metadata nestjs/platform-express npm install -g ts-node包名介绍nestjs/coreNestJS 框…

鸿蒙面试 2025-01-09

鸿蒙分布式理念&#xff1f;&#xff08;个人认为理解就好&#xff09; 鸿蒙操作系统的分布式理念主要体现在其独特的“流转”能力和相关的分布式操作上。在鸿蒙系统中&#xff0c;“流转”是指涉多端的分布式操作&#xff0c;它打破了设备之间的界限&#xff0c;实现了多设备…

Mysql--基础篇--SQL(DDL,DML,窗口函数,CET,视图,存储过程,触发器等)

SQL&#xff08;Structured Query Language&#xff0c;结构化查询语言&#xff09;是用于管理和操作关系型数据库的标准语言。它允许用户定义、查询、更新和管理数据库中的数据。SQL是一种声明性语言&#xff0c;用户只需要指定想要执行的操作&#xff0c;而不需要详细说明如何…

SQL 幂运算 — POW() and POWER()函数用法详解

POW() and POWER()函数用法详解 POW() 和 POWER() —计算幂运算&#xff08;即一个数的指定次方&#xff09;的函数。 这两个函数是等价的&#xff0c;功能完全相同&#xff0c;只是名字不同。 POW(base, exponent); POWER(base, exponent); base&#xff1a;底数。exponen…

Elasticsearch:聚合操作

这里写目录标题 一、聚合的概述二、聚合的分类1、指标聚合&#xff08;Metric Aggregation&#xff09;2、桶聚合&#xff08;Bucket Aggregation&#xff09;3、管道聚合&#xff08;Pipeline Aggregation&#xff09; 三、ES聚合分析不精准原因分析四、聚合性能优化1、ES聚合…

Ubuntu 磁盘修复

Ubuntu 磁盘修复 在 ubuntu 文件系统变成只读模式&#xff0c;该处理呢&#xff1f; 文件系统内部的错误&#xff0c;如索引错误、元数据损坏等&#xff0c;也可能导致系统进入只读状态。磁盘坏道或硬件故障也可能引发文件系统只读的问题。/etc/fstab配置错误&#xff0c;可能…

重新整理机器学习和神经网络框架

本篇重新梳理了人工智能&#xff08;AI&#xff09;、机器学习&#xff08;ML&#xff09;、神经网络&#xff08;NN&#xff09;和深度学习&#xff08;DL&#xff09;之间存在一定的包含关系&#xff0c;以下是它们的关系及各自内容,以及人工智能领域中深度学习分支对比整理。…

LabVIEW瞬变电磁接收系统

利用LabVIEW软件与USB4432采集卡开发瞬变电磁接收系统。系统通过改进硬件配置与软件编程&#xff0c;解决了传统仪器在信噪比低和抗干扰能力差的问题&#xff0c;实现了高精度的数据采集和处理&#xff0c;特别适用于地质勘探等领域。 ​ 项目背景&#xff1a; 瞬变电磁法是探…

Redis 优化秒杀(异步秒杀)

目录 为什么需要异步秒杀 异步优化的核心逻辑是什么&#xff1f; 阻塞队列的特点是什么&#xff1f; Lua脚本在这里的作用是什么&#xff1f; 异步调用创建订单的具体逻辑是什么&#xff1f; 为什么要用代理对象proxy调用createVoucherOrder方法&#xff1f; 对于代码的详细…

C++笔记之`size_t`辨析

C++笔记之size_t辨析 code review! 文章目录 C++笔记之`size_t`辨析一.什么是 `size_t`?二.`size_t` 的来源和设计目的三.`size_t` 的应用场景四.`size_t` 的优点五.`size_t` 的缺点和注意事项六.`size_t` 和其他类型的比较七.总结与建议在 C/C++ 中,size_t 是一个非常重要的…

MySQL表的增删查改(下)——Update(更新),Delete(删除)

文章目录 Update将孙悟空同学的数学成绩修改为80分将曹孟德同学的数学成绩变更为 60 分&#xff0c;语文成绩变更为 70 分将总成绩倒数前三的 3 位同学的数学成绩加上 30 分将所有同学的语文成绩更新为原来的 2 倍 Delete删除数据删除孙悟空同学的考试成绩删除整张表数据 截断表…

大语言模型训练的数据集从哪里来?

继续上篇文章的内容说说大语言模型预训练的数据集从哪里来以及为什么互联网上的数据已经被耗尽这个说法并不专业&#xff0c;再谈谈大语言模型预训练数据集的优化思路。 1. GPT2使用的数据集是WebText&#xff0c;该数据集大概40GB&#xff0c;由OpenAI创建&#xff0c;主要内…

【hadoop学习遇见的小问题】clone克隆完之后网络连接不上问题解决

vi /etc/udev/rules.d/70-persistent-net.rules注释掉第一行 第二行的eth1 改为eth0 由上图也可以看到物理地址 记录下来在网卡中修改物理地址 vi /etc/sysconfig/network-scripts/ifcfg-eth0修改完之后 重启reboot 即可

PDFMathTranslate: Star13.8k,一款基于AI的PDF文档全文双语翻译PDF文档全文双语翻译,保留格式神器,你应该需要它

嗨&#xff0c;大家好&#xff0c;我是小华同学&#xff0c;关注我们获得“最新、最全、最优质”开源项目和高效工作学习方法 PDFMathTranslate是一个开源项目&#xff0c;旨在为用户提供便捷的PDF科学论文翻译解决方案。它不仅能够翻译文本&#xff0c;还能保留公式、图表、目…

对话|全年HUD前装将超330万台,疆程技术瞄准人机交互“第一屏”

2024年&#xff0c;在高阶智驾进入快速上车的同时&#xff0c;座舱人机交互也在迎来新的增长点。Chat GPT、AR-HUD、车载投影等新配置都在带来新增量机会。 高工智能汽车研究院监测数据显示&#xff0c;2024年1-10月&#xff0c;中国市场&#xff08;不含进出口&#xff09;乘用…

【机器学习案列】学生抑郁可视化及预测分析

&#x1f9d1; 博主简介&#xff1a;曾任某智慧城市类企业算法总监&#xff0c;目前在美国市场的物流公司从事高级算法工程师一职&#xff0c;深耕人工智能领域&#xff0c;精通python数据挖掘、可视化、机器学习等&#xff0c;发表过AI相关的专利并多次在AI类比赛中获奖。CSDN…

微服务保护——Sentinel

什么是微服务保护&#xff1f; 微服务保护是一系列用于保障微服务架构稳定、可靠运行的策略与技术手段&#xff0c;在复杂的分布式微服务系统里&#xff0c;它能避免局部故障引发连锁反应&#xff0c;从而维持整个系统的可用性&#xff0c;主要涵盖以下几个关键部分&#xff1a…