当前位置: 首页 > news >正文

Linux文件编程——读写结构体、链表等其他类型的数据

在 Linux 文件编程中, openreadwriteclose等函数,本质上的读写内容是一个无类型的指针,所以其也可以读写整型、数组、结构体、链表等不同类型的数据。

SYNOPSIS
#include <unistd.h>ssize_t write(int fd, const void *buf, size_t count);
SYNOPSIS
#include <unistd.h>ssize_t read(int fd, void *buf, size_t count);

我们可以看到读写的buf的类型都是void *,即他只是一个无类型的指针,本质上就是一个地址,和数据类型没关系,因此我们可以读写其他类型的数据。

1. 整型数据

写入整型数据

在 Linux 文件编程中,使用低级文件 I/O 函数写入整型数据时,需要先打开文件,然后将整型变量的地址和大小传递给 write 函数。write 函数会将整型数据以二进制形式写入文件。

#include <unistd.h>
#include <fcntl.h>
#include <stdio.h>int main() {int fd = open("data.bin", O_WRONLY | O_CREAT | O_TRUNC, 0644); // 打开文件用于写入if (fd == -1) {perror("Error opening file");return 1;}int num = 42;if (write(fd, &num, sizeof(num)) != sizeof(num)) { // 写入整型数据perror("Error writing to file");}close(fd); // 关闭文件return 0;
}
  • open 函数用于打开文件,O_WRONLY 表示以写入模式打开文件,O_CREAT 表示如果文件不存在则创建文件,O_TRUNC 表示如果文件已存在则清空文件内容。

  • write 函数的第一个参数是文件描述符,第二个参数是指向要写入的数据的指针(这里是整型变量 num 的地址),第三个参数是要写入的字节数(这里是 sizeof(num))。

  • 如果 write 函数返回的值不等于要写入的字节数,说明写入操作失败。

读取整型数据

读取整型数据时,同样需要先打开文件,然后使用 read 函数将数据读取到一个整型变量中。

#include <unistd.h>
#include <fcntl.h>
#include <stdio.h>int main() {int fd = open("data.bin", O_RDONLY); // 打开文件用于读取if (fd == -1) {perror("Error opening file");return 1;}int num;if (read(fd, &num, sizeof(num)) != sizeof(num)) { // 读取整型数据perror("Error reading from file");} else {printf("Read number: %d\n", num); // 输出读取的整型数据}close(fd); // 关闭文件return 0;
}
  • open 函数使用 O_RDONLY 参数以只读模式打开文件。

  • read 函数的第一个参数是文件描述符,第二个参数是指向存储读取数据的缓冲区的指针(这里是整型变量 num 的地址),第三个参数是要读取的字节数(这里是 sizeof(num))。

  • 如果 read 函数返回的值不等于要读取的字节数,说明读取操作失败。

2. 数组数据

写入数组数据

写入数组数据时,需要将整个数组的内存地址和大小传递给 write 函数。

#include <unistd.h>
#include <fcntl.h>
#include <stdio.h>int main() {int fd = open("array.bin", O_WRONLY | O_CREAT | O_TRUNC, 0644); // 打开文件用于写入if (fd == -1) {perror("Error opening file");return 1;}int arr[] = {1, 2, 3, 4, 5}; // 定义一个整型数组size_t size = sizeof(arr) / sizeof(arr[0]); // 计算数组大小if (write(fd, arr, sizeof(arr)) != sizeof(arr)) { // 写入数组perror("Error writing to file");}close(fd); // 关闭文件return 0;
}
  • sizeof(arr) 计算整个数组的大小(以字节为单位)。

  • write 函数将整个数组的内容写入文件。如果返回值不等于数组的大小,说明写入操作失败。

读取数组数据

读取数组数据时,需要将文件中的数据读取到一个数组中。

#include <unistd.h>
#include <fcntl.h>
#include <stdio.h>int main() {int fd = open("array.bin", O_RDONLY); // 打开文件用于读取if (fd == -1) {perror("Error opening file");return 1;}int arr[5]; // 定义一个足够大的数组来存储读取的数据if (read(fd, arr, sizeof(arr)) != sizeof(arr)) { // 读取数组perror("Error reading from file");} else {for (int i = 0; i < 5; i++) {printf("arr[%d] = %d\n", i, arr[i]); // 输出读取的数组元素}}close(fd); // 关闭文件return 0;
}
  • read 函数将文件中的数据读取到数组 arr 中。如果返回值不等于数组的大小,说明读取操作失败。

  • 使用循环输出数组中的每个元素。

3. 结构体数据

定义结构体
typedef struct {int id;char name[50];float score;
} Student;
写入结构体数据

写入结构体数据时,需要将结构体变量的地址和大小传递给 write 函数。

#include <unistd.h>
#include <fcntl.h>
#include <stdio.h>int main() {int fd = open("students.bin", O_WRONLY | O_CREAT | O_TRUNC, 0644); // 打开文件用于写入if (fd == -1) {perror("Error opening file");return 1;}Student s = {1, "Alice", 95.5}; // 定义一个结构体变量if (write(fd, &s, sizeof(Student)) != sizeof(Student)) { // 写入结构体perror("Error writing to file");}close(fd); // 关闭文件return 0;
}
  • sizeof(Student) 计算结构体的大小。

  • write 函数将整个结构体的内容写入文件。如果返回值不等于结构体的大小,说明写入操作失败。

读取结构体数据

读取结构体数据时,需要将文件中的数据读取到一个结构体变量中。

#include <unistd.h>
#include <fcntl.h>
#include <stdio.h>int main() {int fd = open("students.bin", O_RDONLY); // 打开文件用于读取if (fd == -1) {perror("Error opening file");return 1;}Student s;if (read(fd, &s, sizeof(Student)) != sizeof(Student)) { // 读取结构体perror("Error reading from file");} else {printf("ID: %d, Name: %s, Score: %.2f\n", s.id, s.name, s.score); // 输出读取的结构体内容}close(fd); // 关闭文件return 0;
}
  • read 函数将文件中的数据读取到结构体变量 s 中。如果返回值不等于结构体的大小,说明读取操作失败。

  • 使用 printf 输出结构体的各个字段。

4. 链表数据

定义链表节点
typedef struct Node {int data;struct Node *next;
} Node;
写入链表数据

写入链表数据时,需要逐个节点将数据写入文件。

#include <unistd.h>
#include <fcntl.h>
#include <stdio.h>
#include <stdlib.h>void writeLinkedList(Node *head, const char *filename) {int fd = open(filename, O_WRONLY | O_CREAT | O_TRUNC, 0644);if (fd == -1) {perror("Error opening file");return;}Node *current = head;while (current != NULL) {if (write(fd, &current->data, sizeof(int)) != sizeof(int)) { // 写入节点数据perror("Error writing to file");break;}current = current->next;}close(fd);
}
  • 使用 open 打开文件,O_WRONLY 表示以写入模式打开文件,O_CREAT 表示如果文件不存在则创建文件,O_TRUNC 表示如果文件已存在则清空文件内容。

  • 遍历链表,逐个节点将数据写入文件。每次写入一个 int 类型的数据。

  • 如果 write 函数返回的值不等于 sizeof(int),说明写入操作失败。

读取链表数据

读取链表数据时,需要逐个节点从文件中读取数据,并动态分配内存来构建链表。

#include <unistd.h>
#include <fcntl.h>
#include <stdio.h>
#include <stdlib.h>Node* readLinkedList(const char *filename) {int fd = open(filename, O_RDONLY);if (fd == -1) {perror("Error opening file");return NULL;}Node *head = NULL, *tail = NULL;int data;while (read(fd, &data, sizeof(int)) == sizeof(int)) { // 读取节点数据Node *newNode = (Node *)malloc(sizeof(Node));newNode->data = data;newNode->next = NULL;if (head == NULL) {head = newNode;tail = newNode;} else {tail->next = newNode;tail = newNode;}}close(fd);return head;
}
  • 使用 open 打开文件,O_RDONLY 表示以只读模式打开文件。

  • 使用循环逐个读取文件中的数据。每次读取一个 int 类型的数据。

  • 每次读取到一个数据后,动态分配一个新节点,并将其添加到链表中。

  • 如果 read 函数返回的值不等于 sizeof(int),说明读取操作失败,循环结束。

注意事项

  1. 文件描述符的管理

    使用低级文件 I/O 函数时,需要手动管理文件描述符的打开和关闭,确保不会出现资源泄漏。在程序结束时,务必调用 close 函数关闭文件描述符。
  2. 错误处理

    低级文件 I/O 函数的错误处理通常依赖于 errno。在读写操作后,可以通过检查返回值是否为预期值来判断操作是否成功。如果返回值为 -1,可以通过 perrorstrerror(errno) 获取错误信息。
  3. 链表的动态内存管理

    在读取链表时,需要动态分配内存来构建链表,并在使用完毕后释放内存,以避免内存泄漏。

相关文章:

Linux文件编程——读写结构体、链表等其他类型的数据

在 Linux 文件编程中&#xff0c; open、read、write、close等函数&#xff0c;本质上的读写内容是一个无类型的指针&#xff0c;所以其也可以读写整型、数组、结构体、链表等不同类型的数据。 SYNOPSIS #include <unistd.h>ssize_t write(int fd, const void *buf, siz…...

离散制造企业WMS+MES+QMS+条码管理系统高保真原型全解析

在离散型制造企业的生产过程中&#xff0c;库存管理混乱、生产进度不透明、质检流程繁琐等问题常常成为制约企业发展的瓶颈。为了帮助企业实现全流程数字化管控&#xff0c;我们精心打造了一款基于离散型制造企业&#xff08;涵盖单件生产、批量生产、混合生产模式&#xff09;…...

Datawhale PyPOTS时间序列5月第1次笔记

课程原地址&#xff1a; https://github.com/WenjieDu/PyPOTS&#xff08;Package地址&#xff09; https://github.com/WenjieDu/BrewPOTS/tree/datawhale/202505_datawhale&#xff08;Tutorial地址&#xff09; 2.1 PyPOTS简介 PyPOTS 是一个专为处理部分观测时间序列&a…...

linux 抓包工具tcpdump使用小记(使用时注意权限和系统资源)

tcpdump 是一款强大的网络数据包捕获和分析工具&#xff0c;常用于网络故障排查、协议分析、安全审计等场景。以下是其核心功能、使用方法及常见场景的详细介绍&#xff1a; 1. 基本功能 数据包捕获&#xff1a;监听网络接口&#xff0c;实时捕获传输的数据包。过滤规则&#…...

HTTP和HTTPS模块

一、HTTP 模块 1. 创建 HTTP 服务器 基本服务器示例 const http require(http);const server http.createServer((req, res) > {res.statusCode 200;res.setHeader(Content-Type, text/plain);res.end(Hello World\n); });server.listen(3000, 127.0.0.1, () > {co…...

操作系统导论——第29章 基于锁的并发数据结构

通过锁可以使数据结构线程安全&#xff08;thread safe&#xff09;。当然&#xff0c;具体如何加锁决定了该数据结构的正确性和效率&#xff1f;挑战是&#xff1a; 关键问题&#xff1a;如何给数据结构加锁&#xff1f; 对于特定数据结构&#xff0c;如何加锁才能让该结构功能…...

TensorFlow之微分求导

目录 前言示例手动微分实现两个未知数, 求偏导tf.GradientTape常量求导tf.GradientTape二阶导数tf.GradientTape实现梯度下降结合optimizer实现梯度下降 前言 在TensorFlow中&#xff0c;微分是个非常重要的概念。它们分别用于自动求导&#xff08;计算梯度&#xff09;和高效…...

电池自动点焊机:多领域电池制造的核心设备

电池自动点焊机作为电池制造领域的关键设备&#xff0c;通过电阻热焊接技术实现金属连接片与电池极片的精确焊接&#xff0c;广泛应用于数码电池、工具电池、储能电池、电动车电池及动力电池的生产环节。其核心技术基于微电脑控制与多脉冲焊接模式&#xff0c;能够针对不同电池…...

第五部分:第一节 - Node.js 简介与环境:让 JavaScript 走进厨房

我们之前学习的 JavaScript 主要运行在浏览器中&#xff0c;由浏览器内置的 JavaScript 引擎&#xff08;如 Chrome 的 V8 引擎&#xff09;来解释执行。Node.js 则是一个JavaScript 运行时环境&#xff0c;它也使用了 Chrome 的 V8 引擎&#xff0c;但它不是在浏览器里&#x…...

MQTT 协议详解:物联网通信的利器

在当今物联网&#xff08;IoT&#xff09;迅猛发展的背景下&#xff0c;设备之间的高效、可靠通信变得尤为重要。MQTT&#xff08;Message Queuing Telemetry Transport&#xff09;作为一种轻量级的消息传输协议&#xff0c;因其低带宽占用和高可靠性&#xff0c;成为物联网领…...

CST软件对OPERACST软件联合仿真汽车无线充电站对人体的影响

上海又收紧了新能源车的免费上牌政策。所以年前一些伙伴和我探讨过买新能源汽车的问题&#xff0c;小伙伴们基本纠结的点是买插电还是纯电&#xff1f;我个人是很抗拒新能源车的&#xff0c;也开过坐过。个人有几个观点&#xff1a; 溢价过高&#xff0c;不保值。实际并不环保…...

C++STL——map和set的使用

目录 1.容器 1.1 序列容器 1.2 容器适配器 1.3 关联容器 1.4 无序关联容器 1.5 键值对到底是个什么东西&#xff1f; 2.set系列的使用 2.1 set类的介绍 2.2 set的构造以及迭代器 2.3 set的增&#xff0c;删&#xff0c;查 2.3.1 插入 2.3.2 删除 2.3.3 查找 2.3.4…...

Ensemble Alignment Subspace Adaptation Method for Cross-Scene Classification

用于跨场景分类的集成对齐子空间自适应方法 摘要&#xff1a;本文提出了一种用于跨场景分类的集成对齐子空间自适应&#xff08;EASA&#xff09;方法&#xff0c;它可以解决同谱异物和异谱同物的问题。该算法将集成学习的思想与域自适应&#xff08;DA&#xff09;算法相结合…...

AFFS2 的 `yaffs_ext_tags` 数据结构详解

YAFFS2 的 yaffs_ext_tags 数据结构详解 yaffs_ext_tags 是 YAFFS2 文件系统中用于 管理 NAND 闪存页的元数据 的核心结构体&#xff0c;存储在 NAND 的 OOB&#xff08;Out-Of-Band&#xff09;区域。它记录了数据块的归属、状态、校验信息等关键元数据&#xff0c;是 YAFFS2…...

CSS经典布局之圣杯布局和双飞翼布局

目标&#xff1a; 中间自适应&#xff0c;两边定宽&#xff0c;并且三栏布局在一行展示。 圣杯布局 实现方法&#xff1a; 通过float搭建布局margin使三列布局到一行上relative相对定位调整位置&#xff1b; 给外部容器添加padding&#xff0c;通过相对定位调整左右两列的…...

超声波传感器模块

欢迎来到 破晓的历程的 博客 ⛺️不负时光&#xff0c;不负己✈️ 文章目录 1.HC-SR04介绍2.HC-SR04原理介绍2.1原理概述3.2原理详解 4驱动代码编写4.1写前思考4.2硬件连线 5.总结hcsr04.hhcsr04.c 1.HC-SR04介绍 超声波传感器有很多种类的型号&#xff1a;HC-SR04、UC-025、…...

使用scp命令拷贝hadoop100中文件到其他虚拟机中

以下是使用 scp 命令将 hadoop100 主机中的文件拷贝到其他虚拟机的操作步骤&#xff08;假设其他主机名为 hadoop101 、 hadoop102 &#xff0c;系统为 Linux&#xff09;&#xff1a; 1. 基本语法 bash scp [选项] 源文件路径 目标主机用户名目标主机IP:目标路径 - 选…...

Linux基础 -- 用户态Generic Netlink库高性能接收与回调框架

用户态Generic Netlink库高性能接收与回调框架 一、概述 在 Linux 系统中&#xff0c;Netlink 是用户态与内核态通信的强大机制。libnl 是一个专为简化 Netlink 编程而设计的库&#xff0c;提供了接收和处理 Netlink 消息的高级接口。libnl-genl 是其通用 Netlink (Generic N…...

java中的Optional

在 Java 8 中&#xff0c;Optional 是一个用于处理可能为 null 的值的容器类&#xff0c;旨在减少空指针异常&#xff08;NullPointerException&#xff09;并提升代码的可读性。以下是 Optional 的核心用法和最佳实践&#xff1a; 1. 创建 Optional 对象 1.1 常规创建方式 Op…...

原型和原型链

原型&#xff08;Prototype&#xff09; 和 原型链&#xff08;Prototype Chain&#xff09; 是 JavaScript 中非常重要的概念&#xff0c;它们是 JavaScript 实现继承和共享属性和方法的核心机制。理解原型和原型链可以帮助你更好地掌握 JavaScript 的面向对象编程&#xff08…...

解锁Python TDD:从理论到实战的高效编程之道(9/10)

引言 在 Python 开发的广袤天地中&#xff0c;确保代码质量与稳定性是每位开发者的核心追求。测试驱动开发&#xff08;TDD&#xff0c;Test-Driven Development&#xff09;作为一种强大的开发理念与实践方法&#xff0c;正逐渐成为 Python 开发者不可或缺的工具。TDD 强调在…...

OpenMCU(七):STM32F103开发环境搭建

概述 本文主要讲述了使用Keil软件搭建STM32F103嵌入式开发环境的步骤&#xff0c;主要面向想从事嵌入式行业的入门同学&#xff0c;如果下面的讲述过程中有不对的地方&#xff0c;欢迎大家给我留言。 本文主要讲述了Keil 5.43的安装教程&#xff0c;主要用于学习交流&#xf…...

六、Hive 分桶

作者&#xff1a;IvanCodes 日期&#xff1a;2025年5月13日 专栏&#xff1a;Hive教程 在 Hive 中&#xff0c;除了常见的分区&#xff08;Partitioning&#xff09;&#xff0c;分桶&#xff08;Bucketing&#xff09;是另一种重要且有效的数据组织和性能优化手段。它允许我们…...

INFINI Console 纳管 Elasticsearch 9(一):指标监控、数据管理、DSL 语句执行

Elasticsearch v9.0 版本最近已发布&#xff0c;而 INFINI Console 作为一款开源的非常轻量级的多集群、跨版本的搜索基础设施统一管控平台&#xff0c;是否支持最新的 Elasticsearch v9.0 集群管理呢&#xff1f;本文以 INFINI Console v1.29.2 为例&#xff0c;从指标监控、数…...

ansible进阶版01

ansible进阶版01 欢迎使用Markdown编辑器最佳实践保持简单 保持井然有序&#xff08;有组织的&#xff09;经常测试 git工作原理 chapter 2编写ymal格式的主机清单 欢迎使用Markdown编辑器 最佳实践 保持简单 使用yaml的原生语法使用自带模块尽量使用专用模块&#xff0c;不…...

python文件打包成exe文件

✅ 一、安装 PyInstaller 打开cmd&#xff0c;输入以下代码 pip install pyinstaller✅ 二、打包指令 比如说你有如下的文件需要打包。 首先复制你的文件所在目录&#xff0c;比如我的是C:\Users\Administrator\Desktop\BearingSearchSystem 在cmd中切换到该目录来&#xf…...

人脸识别系统中的隐私与数据权利保障

首席数据官高鹏律师创作 如今人脸识别技术以其高效、便捷的特性广泛应用于各个领域&#xff0c;从安防监控到移动支付&#xff0c;从门禁系统到社交媒体。然而&#xff0c;这项技术在为我们的生活带来诸多便利的同时&#xff0c;也引发了一系列关于隐私与数据权利的深刻担忧。…...

电脑关机再开机会换IP吗?深入解析分配机制

在日常使用电脑时&#xff0c;许多用户可能会好奇&#xff1a;‌关机后再开机&#xff0c;IP地址会不会变化&#xff1f;‌ 这个问题看似简单&#xff0c;但实际上涉及多个因素。本文将详细解析电脑IP地址的变化机制&#xff0c;帮助大家理解其中的原理&#xff0c;并提供相关的…...

经典中的经典-比特币白皮书中文版

AI是一切假的集合&#xff0c;如果任凭AI如此聪明下去&#xff0c;所有的人都将被AI愚弄与股掌之间&#xff0c;那么能限制AI的只有区块链这个让一切数据都无处遁形的真神&#xff0c;而比特币作为区块链的鼻祖&#xff0c;开创了公开账本的先河&#xff0c;当互联网上所有的信…...

Spring事务失效的全面剖析

文章目录 1. Spring事务基础1.1 什么是Spring事务1.2 Spring事务的实现原理1.3 `@Transactional`注解的主要属性1.4 使用Spring事务的简单示例2. Spring事务失效的常见场景及解决方案2.1 方法不是public的问题描述问题示例解决方案技术原理解释2.2 自调用问题(同一个类中的方法…...

本地的ip实现https访问-OpenSSL安装+ssl正式的生成(Windows 系统)

1.下载OpenSSL软件 网站地址&#xff1a;Win32/Win64 OpenSSL Installer for Windows - Shining Light Productions 安装: 一直点击下一步就可以了 2.设置环境变量 在开始菜单右键「此电脑」→「属性」→「高级系统设置」→「环境变量」 在Path 中添加一个: xxxx\OpenSSL-…...

【go】binary包,大小端理解,read,write使用,自实现TCP封包拆包案例

binary.LittleEndian 是 Go 语言 encoding/binary 包中的一个常量&#xff0c;用于指定字节序&#xff08;Byte Order&#xff09;。字节序是指多字节数据在内存中存储的顺序&#xff0c;有两种主要方式&#xff1a; 小端序&#xff08;Little Endian&#xff09;&#xff1a;…...

[万字]qqbot开发记录,部署真寻bot+自编插件

这是我成功部署真寻bot以及实现一个自己编写的插件&#xff08;连接deepseek回复内容&#xff09;的详细记录&#xff0c;几乎每一步都有截图。 正文&#xff1a; 我想玩玩qqbot。为了避免重复造轮子&#xff0c;首先选一个github的高星项目作为基础吧。 看了一眼感觉真寻bot不…...

国内USB IP商业解决方案新选择:硬件USB Server

在数字化办公日益普及的今天&#xff0c;USB OVER NETWORK技术&#xff0c;即USB IP技术&#xff0c;为企业带来了前所未有的便捷与高效。作为这一领域的佼佼者&#xff0c;朝天椒USB Server以其卓越的性能和贴心的设计&#xff0c;正逐步成为众多中国企业的首选USB IP商业解决…...

百度导航广告“焊死”东鹏特饮:商业底线失守,用户安全成隐忧

近日&#xff0c;百度地图因导航时植入“广告”的问题登上社交媒体热搜&#xff0c;并引发广泛争议。 截图自微博 导航途中出现“焊死”在路面的广告 安全隐患引争议 多位网友发帖称&#xff0c;在使用百度地图导航时&#xff0c;导航界面中的公路路面上出现了“累了困了喝东…...

yolo11n-obb训练rknn模型

必备&#xff1a; 准备一台ubuntu22的服务器或者虚拟机&#xff08;x86_64&#xff09; 1、数据集标注&#xff1a; 1&#xff09;推荐使用X-AnyLabeling标注工具 2&#xff09;标注选【旋转框】 3&#xff09;可选AI标注&#xff0c;再手动补充&#xff0c;提高标注速度 …...

GNU Screen 曝多漏洞:本地提权与终端劫持风险浮现

SUSE安全团队全面审计发现&#xff0c;广泛使用的终端复用工具GNU Screen存在一系列严重漏洞&#xff0c;包括可导致本地提权至root权限的缺陷。这些问题同时影响最新的Screen 5.0.0版本和更普遍部署的Screen 4.9.x版本&#xff0c;具体影响范围取决于发行版配置。 尽管GNU Sc…...

无人机避障——如何利用MinumSnap进行对速度、加速度进行优化的轨迹生成(附C++python代码)

&#x1f525;轨迹规划领域的 “YYDS”——minimum snap&#xff01;作为基于优化的二次规划经典&#xff0c;它是无人机、自动驾驶轨迹规划论文必引的 “开山之作”。从优化目标函数到变量曲线表达&#xff0c;各路大神疯狂 “魔改”&#xff0c;衍生出无数创新方案。 &#…...

2025 3D工业相机选型及推荐

3D工业相机是专门为工业应用设计的三维视觉采集设备&#xff0c;能够获取物体的三维空间信息&#xff0c;在智能制造、质量检测、机器人引导等领域有广泛应用。 一、主要类型 1.结构光3D相机 通过投射特定光斑或条纹图案并分析变形来重建三维形状 典型代表&#xff1a;双目结构…...

芋道(yudao-cloud)项目,后端接口报401-账号未登录解决方案

一、需求 最近公司有新的业务需求&#xff0c;调研了一下&#xff0c;决定使用芋道&#xff08;yudao-cloud&#xff09;框架,于是从github&#xff08;https://github.com/YunaiV/yudao-cloud&#xff09;上克隆项目&#xff0c;选用的是jdk17版本的。根据项目启动手册&#…...

动态域名服务ddns怎么设置?如何使用路由器动态域名解析让外网访问内网?

设置路由器的动态域名解析&#xff08;DDNS&#xff09;&#xff0c;通常需先选择支持 DDNS 的路由器和提供 DDNS 服务的平台&#xff0c;然后在路由器管理界面中找到 DDNS 相关设置选项&#xff0c;填入在服务平台注册的账号信息&#xff0c;完成配置后保存设置并等待生效。 …...

论文《Collaboration-Aware Graph Convolutional Network for Recommender Systems》阅读

论文《Collaboration-Aware Graph Convolutional Network for Recommender Systems》阅读 论文概况Introduction and MotivationMethodologyLightGCN 传播形式CIRCAGCNImplementation Experiments 论文概况 论文《Collaboration-Aware Graph Convolutional Network for Recomm…...

Codis集群搭建和集成使用的详细步骤示例

以下是Codis集群搭建和集成使用的详细步骤示例&#xff1a; 环境准备 安装Go语言环境 下载并安装适配操作系统的Go语言版本。配置环境变量GOROOT和GOPATH。 安装ZooKeeper 下载ZooKeeper压缩包&#xff0c;解压并进入目录。复制conf/zoo_sample.cfg为conf/zoo.cfg。启动ZooKe…...

利用比较预言机处理模糊的偏好数据

论文标题 ComPO:Preference Alignment via Comparison Oracles 论文地址 https://arxiv.org/pdf/2505.05465 模型地址 https://huggingface.co/ComparisonPO 作者背景 哥伦比亚大学&#xff0c;纽约大学&#xff0c;达摩院 动机 DPO算法直接利用标注好的数据来做偏好对…...

《数据库原理》部分习题解析

《数据库原理》部分习题解析 1. 课本pg196.第1题。 &#xff08;1&#xff09;函数依赖 若对关系模式 R(U) 的任何可能的关系 r&#xff0c;对于任意两个元组 t₁ 和 t₂&#xff0c;若 t₁[X] t₂[X]&#xff0c;则必须有 t₁[Y] t₂[Y]&#xff0c;则称属性集 Y 函数依赖…...

【HCIA】浮动路由

前言 我们通常会在出口路由器配置静态路由去规定流量进入互联网默认应该去往哪里。那么&#xff0c;如果有两个运营商的路由器都能为我们提供上网服务&#xff0c;我们应该如何配置默认路由呢&#xff1f;浮动路由又是怎么一回事呢&#xff1f; 文章目录 前言1. 网络拓扑图2. …...

基于机器学习的卫星钟差预测方法研究HPSO-BP

摘要 本文研究了三种机器学习方法&#xff08;BP神经网络、随机森林和支持向量机&#xff09;在卫星钟差预测中的应用。通过处理GPS和GRACE卫星的钟差数据&#xff0c;构建了时间序列预测模型&#xff0c;并比较了不同方法的预测性能。实验结果表明&#xff0c;优化后的BP神经…...

机器学习中分类模型的常用评价指标

评价指标是针对模型性能优劣的一个定量指标。 一种评价指标只能反映模型一部分性能&#xff0c;如果选择的评价指标不合理&#xff0c;那么可能会得出错误的结论&#xff0c;故而应该针对具体的数据、模型选取不同的的评价指标。 本文将详细介绍机器学习分类任务的常用评价指…...

AI 检测原创论文:技术迷思与教育本质的悖论思考

当高校将 AI 写作检测工具作为学术诚信的 "电子判官"&#xff0c;一场由技术理性引发的教育异化正在悄然上演。GPT-4 检测工具将人类创作的论文误判为 AI 生成的概率高达 23%&#xff08;斯坦福大学 2024 年研究数据&#xff09;&#xff0c;这种 "以 AI 制 AI&…...

langchain学习

无门槛免费申请OpenAI ChatGPT API搭建自己的ChatGPT聊天工具 https://nuowa.net/872 基本概念 LangChain 能解决大模型的两个痛点&#xff0c;包括模型接口复杂、输入长度受限离不开自己精心设计的模块。根据LangChain 的最新文档&#xff0c;目前在 LangChain 中一共有六大…...