一:操作系统之系统调用
系统调用:用户程序与操作系统交互的桥梁
在计算机的世界里,应用程序是我们日常接触最多的部分,比如浏览器、文本编辑器、游戏等等。然而,这些应用程序并不能直接控制硬件资源,比如读写硬盘、创建新进程、发送网络数据包。它们需要一个“管家”来代劳,这个管家就是操作系统(Operating System)。
那么,用户程序是如何向操作系统这个“管家”提出服务请求的呢?答案就是通过系统调用(System Call)。
1. 系统调用:概念与必要性
概念: 系统调用是用户程序向操作系统请求服务的一种接口。可以理解为应用程序向操作系统发出的特殊函数调用请求。
为什么需要系统调用?
- 保护硬件资源: 操作系统运行在更高的权限级别(通常称为内核模式或特权模式),可以直接访问和管理所有硬件资源。用户程序运行在较低的权限级别(用户模式),受到操作系统的限制,不能随意访问硬件,这防止了恶意或错误的程序破坏系统。
- 提供抽象和便利: 操作系统将复杂的硬件操作封装成简单的、高级的服务。用户程序无需了解底层硬件细节(例如硬盘控制器如何工作),只需调用一个简单的系统调用(如
read
或write
)即可完成文件读写。 - 系统安全与稳定: 通过系统调用,操作系统可以对用户程序的请求进行检查和验证(例如,检查是否有权限访问某个文件),防止非法操作,从而保证系统的安全和稳定运行。
简单来说,系统调用就像是用户程序进入操作系统内核的唯一合法通道。用户程序在用户模式下运行,当需要操作系统提供的服务时,就通过系统调用“陷入”到内核模式,由操作系统内核处理请求,完成后再返回用户模式。
2. 系统调用的实现机制:陷入 (Trap) / 中断 (Interrupt)
用户程序并不能直接调用内核代码中的函数,因为它没有足够的权限。当用户程序执行到一条请求系统服务的指令时,会触发一个特殊的事件,这个事件被称为陷入 (Trap) 或软件中断 (Software Interrupt)。
实现流程:
- 参数准备: 用户程序在发起系统调用前,会将所需的参数(比如要打开的文件名、要写入的数据、文件描述符等)放置在特定的寄存器中或者压入栈中。
- 系统调用指令: 用户程序执行一条特殊的机器指令(例如,x86 架构上的
syscall
或int 0x80
),这条指令就是陷入指令。 - 模式切换: CPU 检测到这条陷入指令后,会立即执行以下动作:
- 硬件自动切换CPU的运行模式从用户模式切换到内核模式(提升权限)。
- 硬件保存当前用户程序的上下文信息,包括寄存器的值、程序计数器 (PC) 等,以便系统调用完成后能够正确返回。
- 硬件跳转到一个预设的内核入口点。这个入口点的地址通常是固定的,存储在一个称为中断向量表或系统调用向量表的结构中。
- 内核处理:
- 内核入口点代码会检查是哪种系统调用(通常通过检查某个寄存器中的系统调用号来确定)。
- 根据系统调用号,内核找到对应的系统调用处理函数。
- 内核会验证用户程序传递的参数是否合法(例如,指针是否有效、权限是否足够)。
- 内核执行请求的服务(例如,查找文件、分配内存、调度进程等)。
- 结果返回:
- 服务完成后,内核将结果(例如,文件描述符、成功/失败状态码等)放置在用户程序可以访问的地方(通常是寄存器)。
- 内核恢复之前保存的用户程序上下文信息。
- 内核切换CPU的运行模式从内核模式切换回用户模式(降低权限)。
- 内核跳转回用户程序,继续执行系统调用指令的下一条指令。
整个过程看起来像是用户程序主动“跳入”内核,请求服务,然后内核处理完再“跳回”用户程序。这个过程是原子性的,保证了系统调用的完整执行。
3. 常见系统调用分类与实例
为了方便管理和理解,操作系统通常会将系统调用按功能进行分类。以下是一些常见的分类及其详细例子:
3.1 进程控制 (Process Control)
这类系统调用用于创建、终止、加载、等待进程,以及获取进程信息。
fork()
/clone()
(Unix/Linux)- 功能: 创建一个新进程,它是当前进程的副本(子进程)。子进程继承父进程的大部分资源。
- 例子: 当你在命令行中输入
ls
并回车时,Shell 程序(本身也是一个进程)不会直接执行ls
的代码。它会调用fork()
创建一个子进程,然后在子进程中调用exec()
类系统调用加载并运行ls
程序。 - C语言伪代码:
pid_t pid = fork(); if (pid == 0) { // 子进程// 在这里调用 exec() 执行其他程序execlp("ls", "ls", "-l", NULL);// 如果execlp失败,子进程会继续执行下面的代码,通常会调用 exit() 退出perror("execl error");exit(EXIT_FAILURE); } else if (pid > 0) { // 父进程// 父进程通常会调用 wait() 等待子进程结束waitpid(pid, NULL, 0);printf("Child process finished.\n"); } else { // fork 失败perror("fork error"); }
exec()
系列 (Unix/Linux) /CreateProcess()
(Windows)- 功能: 用一个新的程序替换当前进程的映像。进程ID不会改变,但代码、数据和堆栈会被新程序的内容覆盖。
- 例子: 接上面的
fork()
例子,子进程在创建后会立即调用exec()
类系统调用加载并运行ls
程序。 - C语言伪代码: (在
fork()
后的子进程中使用)// 当前进程会被 /bin/ls 替换 execl("/bin/ls", "ls", "-l", "/home", NULL); // 如果走到这里,说明 exec 失败了 perror("exec failed"); exit(EXIT_FAILURE);
exit()
/_exit()
(Unix/Linux) /ExitProcess()
(Windows)- 功能: 终止当前进程的执行。可以带一个状态码,表示进程是正常结束还是异常结束。
- 例子: 当一个程序完成其任务后,它会调用
exit()
来退出,释放资源并将控制权交还给操作系统(或父进程)。 - C语言伪代码:
// 程序完成,正常退出 exit(EXIT_SUCCESS); // 或者发生错误,异常退出 exit(EXIT_FAILURE);
wait()
/waitpid()
(Unix/Linux)- 功能: 父进程挂起执行,直到其某个子进程终止。可以获取子进程的终止状态。
- 例子: Shell 在执行一个命令后,会
wait
其子进程(执行该命令的进程)完成,然后才会显示下一个命令提示符。 - C语言伪代码:
// 等待任意一个子进程结束 wait(NULL); // 等待特定PID的子进程结束 waitpid(child_pid, &status, 0);
brk()
/sbrk()
(Unix/Linux)- 功能: 用于调整进程数据段的大小,通常是增加堆内存的分配。
- 例子: C语言标准库中的
malloc()
函数在底层需要更多堆内存时,可能会调用brk()
或sbrk()
系统调用向操作系统请求。
3.2 文件管理 (File Management)
这类系统调用用于文件的创建、删除、打开、关闭、读写、定位等操作。
open()
(Unix/Linux) /CreateFile()
(Windows)- 功能: 打开一个文件,并返回一个文件描述符(一个整数,代表这个打开的文件)。
- 例子: 用户程序需要读取或写入某个文件时,首先需要调用
open()
。 - C语言伪代码:
int fd = open("mydata.txt", O_RDWR | O_CREAT, 0666); // 打开或创建文件,可读写,权限0666 if (fd == -1) {perror("open error"); }
read()
(Unix/Linux) /ReadFile()
(Windows)- 功能: 从一个文件描述符中读取指定数量的数据到缓冲区。
- 例子: 读取配置文件内容,或者从标准输入读取用户输入。
- C语言伪代码:
char buffer[100]; ssize_t bytes_read = read(fd, buffer, sizeof(buffer) - 1); // 从fd读取最多99字节到buffer if (bytes_read > 0) {buffer[bytes_read] = '\0'; // 确保字符串以null结尾printf("Read: %s\n", buffer); } else if (bytes_read == -1) {perror("read error"); }
write()
(Unix/Linux) /WriteFile()
(Windows)- 功能: 将缓冲区中的数据写入到一个文件描述符。
- 例子: 将数据写入日志文件,或者向标准输出打印信息(
printf
函数底层会调用write
)。 - C语言伪代码:
const char *data = "Hello, System Calls!\n"; write(fd, data, strlen(data)); // 将data写入到fd
close()
(Unix/Linux) /CloseHandle()
(Windows)- 功能: 关闭一个文件描述符,释放与之相关的资源。
- 例子: 当一个程序不再需要访问某个文件时,应该调用
close()
来释放该文件描述符,避免资源泄露。 - C语言伪代码:
close(fd); // 关闭文件
lseek()
(Unix/Linux) /SetFilePointer()
(Windows)- 功能: 改变文件描述符当前的读写位置。
- 例子: 在文件中跳过头部数据,直接从某个偏移量开始读取;或者实现文件的随机读写。
- C语言伪代码:
lseek(fd, 100, SEEK_SET); // 将文件指针移动到文件开头后的第100个字节
unlink()
(Unix/Linux) /DeleteFile()
(Windows)- 功能: 删除一个文件。
- 例子: 程序创建了一个临时文件用于处理数据,完成后需要将其删除。
- C语言伪代码:
unlink("tempfile.txt"); // 删除文件
3.3 设备管理 (Device Management)
这类系统调用用于请求/释放设备、读写设备等。在许多现代操作系统(尤其是类Unix系统)中,设备也被抽象成文件,可以通过文件管理相关的系统调用(如 open
, read
, write
, close
)来访问。
ioctl()
(Input/Output Control) (Unix/Linux)- 功能: 一个通用的设备控制接口,用于执行设备特定的输入/输出操作,这些操作不适合标准的
read
/write
模型。 - 例子: 控制终端属性(如设置波特率)、控制磁带机、弹出光驱、配置网络接口等。
- C语言伪代码:
int fd = open("/dev/tty", O_RDWR); // 打开终端设备 struct termios term; ioctl(fd, TCGETS, &term); // 获取终端属性 // 修改属性... ioctl(fd, TCSETS, &term); // 设置终端属性 close(fd);
- 功能: 一个通用的设备控制接口,用于执行设备特定的输入/输出操作,这些操作不适合标准的
read()
/write()
用于设备:- 功能: 通过文件描述符与设备进行数据交换。
- 例子: 从键盘设备
/dev/tty
读取输入,向显示设备/dev/fb0
写入图像数据,通过网络套接字发送/接收数据。
3.4 信息维护 (Information Maintenance)
这类系统调用用于获取或设置系统信息、进程信息、文件状态等。
getpid()
/getppid()
(Unix/Linux)- 功能: 获取当前进程的进程ID (PID) 或其父进程的PID (PPID)。
- 例子: 日志记录时标记是哪个进程产生的日志;父进程通过子进程的PID进行管理。
- C语言伪代码:
pid_t my_pid = getpid(); pid_t parent_pid = getppid(); printf("My PID: %d, Parent PID: %d\n", my_pid, parent_pid);
getuid()
/geteuid()
(Unix/Linux)- 功能: 获取当前进程的真实用户ID (UID) 或有效用户ID (EUID)。用于权限检查。
- 例子: 程序判断当前用户是否有执行某个操作的权限。
time()
/gettimeofday()
(Unix/Linux)- 功能: 获取当前的系统时间或精确到微秒的时间。
- 例子: 程序需要记录事件发生的时间戳,或者计算代码执行的时间。
- C语言伪代码:
time_t current_time = time(NULL); // 获取当前时间戳 printf("Current time: %ld\n", current_time);struct timeval tv; gettimeofday(&tv, NULL); // 获取微秒级别时间 printf("Microsecond time: %ld.%06ld\n", tv.tv_sec, tv.tv_usec);
stat()
/fstat()
(Unix/Linux) /GetFileAttributes()
(Windows)- 功能: 获取文件或文件描述符的状态信息,包括文件大小、权限、所有者、创建/修改时间等。
- 例子: 文件浏览器程序需要显示文件的详细信息时会调用
stat
。 - C语言伪代码:
struct stat file_stat; if (stat("mydata.txt", &file_stat) == 0) {printf("File size: %lld bytes\n", (long long)file_stat.st_size);printf("Permissions: %o\n", file_stat.st_mode & 0777); // 打印文件权限 } else {perror("stat error"); }
uname()
(Unix/Linux)- 功能: 获取系统信息,如操作系统名称、版本、硬件架构等。
- 例子: 程序需要检查运行环境的兼容性时使用。
3.5 通信 (Communication)
这类系统调用用于实现进程间通信 (IPC) 和网络通信。
pipe()
(Unix/Linux)- 功能: 创建一个无名管道,用于父子进程或兄弟进程之间的单向通信。
- 例子: Shell 命令
ls | grep keyword
中,ls
命令的输出通过管道传递给grep
命令作为输入。 - C语言伪代码:
int pipefd[2]; // pipefd[0] for read, pipefd[1] for write if (pipe(pipefd) == -1) {perror("pipe error"); } // 在 fork() 创建子进程后,父子进程分别关闭不需要的端点,然后通过管道进行读写
socket()
(Unix/Linux) /socket()
(Windows Sockets)- 功能: 创建一个网络套接字,它是网络通信的端点。
- 例子: 任何网络应用程序(浏览器、服务器、聊天软件)在进行网络通信前都需要创建套接字。
相关文章:
一:操作系统之系统调用
系统调用:用户程序与操作系统交互的桥梁 在计算机的世界里,应用程序是我们日常接触最多的部分,比如浏览器、文本编辑器、游戏等等。然而,这些应用程序并不能直接控制硬件资源,比如读写硬盘、创建新进程、发送网络数据…...
【ROS2】 核心概念6——通信接口语法(Interfaces)
古月21讲/2.6_通信接口 官方文档:Interfaces — ROS 2 Documentation: Humble documentation 官方接口代码实战:https://docs.ros.org/en/humble/Tutorials/Beginner-Client-Libraries/Single-Package-Define-And-Use-Interface.html ROS 2使用简化的描…...
SmartETL函数式组件的设计与应用
SmartETL框架主要采用了面向对象的设计思想,将ETL过程中的处理逻辑抽象为Loader和Processor(对应loader模块和iterator模块),所有流程组件需要继承或实现DataProvider(iter方法)或JsonIterator(…...
Spring Security与SaToken的对比与优缺点分析
Spring Security与SaToken对比分析 一、框架定位 Spring Security 企业级安全解决方案,深度集成Spring生态提供完整的安全控制链(认证、授权、会话管理、攻击防护)适合中大型分布式系统 SaToken 轻量级权限认证框架,专注Token会…...
|从零开始的Pyside2界面编程| 环境搭建以及第一个ui界面
🐑 |从零开始的Pyside2界面编程| 环境搭建以及第一个ui界面🐑 文章目录 🐑 |从零开始的Pyside2界面编程| 环境搭建以及第一个ui界面🐑♈前言♈♈Pyside2环境搭建♈♈做个简单的UI界面♈♒代码实现♒♒QTdesigner设计UI界面♒ ♒总…...
【爬虫】DrissionPage-7
官方文档: https://www.drissionpage.cn/browser_control/get_page_info/ 1. 页面信息 📌 html 描述:返回当前页面的 HTML 文本。注意:不包含 <iframe> 元素的内容。返回类型:str 示例: html_co…...
系统架构设计(十二):统一过程模型(RUP)
简介 RUP 是由 IBM Rational 公司提出的一种 面向对象的软件工程过程模型,以 UML 为建模语言,是一种 以用例为驱动、以架构为中心、迭代式、增量开发的过程模型。 三大特征 特征说明以用例为驱动(Use Case Driven)需求分析和测…...
深入解析Java事件监听机制与应用
Java事件监听机制详解 一、事件监听模型组成 事件源(Event Source) 产生事件的对象(如按钮、文本框等组件) 事件对象(Event Object) 封装事件信息的对象(如ActionEvent包含事件源信息…...
QT聊天项目DAY11
1. 验证码服务 1.1 用npm安装redis npm install redis 1.2 修改config.json配置文件 1.3 新建redis.js const config_module require(./config) const Redis require("ioredis");// 创建Redis客户端实例 const RedisCli new Redis({host: config_module.redis_…...
Python训练营---Day29
知识点回顾 类的装饰器装饰器思想的进一步理解:外部修改、动态类方法的定义:内部定义和外部定义 作业:复习类和函数的知识点,写下自己过去29天的学习心得,如对函数和类的理解,对python这门工具的理解等&…...
Flask-SQLAlchemy_数据库配置
1、基本概念(SQLAlchemy与Flask-SQLAlchemy) SQLAlchemy 是 Python 生态中最具影响力的 ORM(对象关系映射)库,其设计理念强调 “框架无关性”,支持在各类 Python 项目中独立使用,包括 Flask、D…...
世界银行数字经济指标(1990-2022年)-社科数据
世界银行数字经济指标(1990-2022年)-社科数据https://download.csdn.net/download/paofuluolijiang/90623839 https://download.csdn.net/download/paofuluolijiang/90623839 此数据集涵盖了1990年至2022年间全球各国的数字经济核心指标,数据…...
Redis进阶知识
Redis 1.事务2. 主从复制2.1 如何启动多个Redis服务器2.2 监控主从节点的状态2.3 断开主从复制关系2.4 额外注意2.5拓扑结构2.6 复制过程2.6.1 数据同步 3.哨兵选举原理注意事项 4.集群4.1 数据分片算法4.2 故障检测 5. 缓存5.1 缓存问题 6. 分布式锁 1.事务 Redis的事务只能保…...
NY337NY340美光固态颗粒NC010NC012
NY337NY340美光固态颗粒NC010NC012 在存储技术的浩瀚星空中,美光的NY337、NY340、NC010、NC012等固态颗粒宛如璀璨星辰,闪耀着独特的光芒。它们承载着先进技术与无限潜力,正深刻影响着存储行业的格局与发展。 一、技术架构与核心优势 美光…...
DAY26 函数定义与参数
浙大疏锦行-CSDN博客 知识点回顾: 1.函数的定义 2.变量作用域:局部变量和全局变量 3.函数的参数类型:位置参数、默认参数、不定参数 4.传递参数的手段:关键词参数 5.传递参数的顺序:同时出现三种参数类型时 函数的定义…...
系统安全及应用
目录 一、账号安全控制 1.基本安全措施 (1)系统账号清理 (2)密码安全控制 (3)历史命令,自动注销 2.用户提权和切换命令 2.1 su命令用法 2.2 sudo命令提权 2.3通过是sudo执行特权命令 二、系统引导和登录控制…...
微信小程序 地图 使用 射线法 判断目标点是否在多边形内部(可用于判断当前位置是否在某个区域内部)
目录 射线法原理简要逻辑代码 小程序代码调试基础库小程序配置地图数据地图多边形点与多边形关系 射线法 原理 使用射线法来判断,目标点是否在多边形内部 这里简单说下,具体细节可以看这篇文章 平面几何:判断点是否在多边形内(…...
第三十七节:视频处理-视频读取与处理
引言:解码视觉世界的动态密码 在数字化浪潮席卷全球的今天,视频已成为信息传递的主要载体。从短视频平台的爆火到自动驾驶的视觉感知,视频处理技术正在重塑人类与数字世界的交互方式。本指南将深入探讨视频处理的核心技术,通过Python与OpenCV的实战演示,为您揭开动态影像…...
什么是 Flink Pattern
在 Apache Flink 中,Pattern 是 Flink CEP(Complex Event Processing)模块 的核心概念之一。它用于定义你希望从数据流中检测出的 事件序列模式(Event Sequence Pattern)。 🎯 一、什么是 Flink Pattern&am…...
ADB基本操作和命令
1.ADB的含义 adb 命令是 Android 官方提供,调试 Android 系统的工具。 adb 全称为 Android Debug Bridge(Android 调试桥),是 Android SDK 中提供的用于管理 Android 模拟器或真机的工具。 adb 是一种功能强大的命令行工具&#x…...
NSString的三种实现方式
oc里的NSString有三种实现方式,为_ _NSCFConstantString、__NSCFString、NSTaggedPointerString 1._ _NSCFConstantString(字面量字符串) 从字面意思上可以看出,_ _NSCFContantString可以理解为常量字符串,这种类型的字符串在编译期就确定了…...
2025年PMP 学习二十 第13章 项目相关方管理
第13章 项目相关方管理 序号过程过程组过程组1识别相关方启动2规划相关方管理规划3管理相关方参与与执行4监控相关方参与与监控 相关方管理,针对于团队之外的相关方的,核心目标是让对方为了支持项目,以达到项目目标。 文章目录 第13章 项目相…...
学习黑客Kerberos深入浅出:安全王国的门票系统
Kerberos深入浅出:安全王国的门票系统 🎫 作者: 海尔辛 | 发布时间: 2025-05-18 🔑 理解Kerberos:为什么它如此重要? Kerberos是现代网络环境中最广泛使用的身份验证协议之一,尤其在Windows Active Dire…...
蓝桥杯19681 01背包
问题描述 有 N 件物品和一个体积为 M 的背包。第 i 个物品的体积为 vi,价值为 wi。每件物品只能使用一次。 请问可以通过什么样的方式选择物品,使得物品总体积不超过 M 的情况下总价值最大,输出这个最大价值即可。 输入格式 第一行输…...
使用 Auto-Keras 进行自动化机器学习
使用 Auto-Keras 进行自动化机器学习 了解自动化机器学习以及如何使用 auto-keras 完成它。如今,机器学习并不是一个非常罕见的术语,因为像 DataCamp、Coursera、Udacity 等组织一直在努力提高他们的效率和灵活性,以便将机器学习的教育带给普…...
算法刷题Day9 5.18:leetcode定长滑动窗口3道题,结束定长滑动窗口,用时1h
12. 1852.每个子数组的数字种类数 1852. 每个子数组的数字种类数 - 力扣(LeetCode) 思想 找到nums 所有 长度为 k 的子数组中 不同 元素的数量。 返回一个数组 ans,其中 ans[i] 是对于每个索引 0 < i < n - k,nums[i..(i …...
Protect Your Digital Privacy: Obfuscate, Don’t Hide
Protect Your Digital Privacy: Obfuscate, Don’t Hide In today’s digital world, hiding completely online is nearly impossible. But you can protect yourself by deliberately obfuscating your personal information — making it harder for others to track, pro…...
Spark 的运行模式(--master) 和 部署方式(--deploy-mode)
Spark 的 运行模式(--master) 和 部署方式(--deploy-mode),两者的核心区别在于 资源调度范围 和 Driver 进程的位置。 一、核心概念对比 维度--master(运行模式)--deploy-mode(部署…...
从零开始实现大语言模型(十五):并行计算与分布式机器学习
1. 前言 并行计算与分布式机器学习是一种使用多机多卡加速大规模深度神经网络训练过程,以减少训练时间的方法。在工业界的训练大语言模型实践中,通常会使用并行计算与分布式机器学习方法来减少训练大语言模型所需的钟表时间。 本文介绍PyTorch中的一种…...
生产模式下react项目报错minified react error #130的问题
这天,线上突然出现了一个bug,某个页面打开空白,看控制台报错minified react error #130,在本地看却是正常的,百思不得其解。 后来发现是由于线上项目它的包更新过了,而我本地的包没有更新,所以我…...
本地无损放大软件-realesrgan-gui
—————【下 载 地 址】——————— 【本章下载一】:https://drive.uc.cn/s/84516041df174 【本章下载二】:https://pan.xunlei.com/s/VOQDybD4ruF0-m8UJrCF-HtLA1?pwdxz9e# 【百款黑科技】:https://ucnygalh6wle.feishu.cn/wiki/…...
Java面试深度解析:微服务与云原生技术应用场景详解
Java面试深度解析:微服务与云原生技术应用场景详解 面试场景 面试官:我们今天的面试会围绕微服务与云原生技术展开,结合一个在线教育平台的业务场景进行提问。希望你放松心态,正常发挥。 码农明哥:好的好的…...
短剧小程序系统开发源码上架,短剧项目市场分析
引言 随着短视频内容消费的爆发式增长,短剧小程序凭借其碎片化、强互动、低成本的特点,成为内容创业与资本布局的新风口。2024年以来,行业规模突破500亿元,预计2027年将超千亿17。本文将深度解析短剧小程序系统开发的技术优势、市…...
常见的请求头(Request Header)参数
1. Accept 作用:告知服务器客户端支持的响应数据格式(如 JSON、XML、HTML)。示例:Accept: application/json(优先接收 JSON 格式数据)。 2. Content-Type 作用:说明请求体的数据格式(…...
渗透测试核心技术:内网渗透与横向移动
内网渗透是红队行动的关键阶段,攻击者通过突破边界进入内网后,需快速定位域控、横向移动并维持权限。本节从内网环境搭建、信息收集、横向移动技巧到权限维持工具,系统讲解如何在内网中隐蔽行动并扩大战果。 1. 内网环境搭建与基础配置 目标: 模拟真实企业网络,构建包含…...
2025/5/18
继续研究一下大佬的RAG项目。开始我的碎碎念。 RAG可以分成两部分:一个是问答,一个是数据处理。 问答是人提问,然后查数据库,把查的东西用大模型组织成人话,回答人的提问。 数据处理是把当下知识库里的东西…...
使用国内源加速Qt在线安装
简介: 在线安装Qt时,会发现下载非常缓慢,可以用过使用国内镜像源来加速安装过程。 在线安装包的下载过程: 1,打开下载页面 https://www.qt.io/download-open-source 2,点击 Download the Qt online ins…...
【图像生成大模型】HunyuanVideo:大规模视频生成模型的系统性框架
HunyuanVideo:大规模视频生成模型的系统性框架 引言HunyuanVideo 项目概述核心技术1. 统一的图像和视频生成架构2. 多模态大语言模型(MLLM)文本编码器3. 3D VAE4. 提示重写(Prompt Rewrite) 项目运行方式与执行步骤1. …...
Java IO流(超详细!!!)
Java IO流 文章目录 Java IO流1.文件相关基础普及1.1 常用文件操作1.3 目录的操作和文件删除 2.IO流原理及流的分类2.1 字节流2.1.1 InputStream:字节输入流2.1.2 OutputStream 2.2 字符流2.2.1 Reader2.2.1 Writer 2.3 节点流和处理流2.3.1节点流2.3.2 处理流2.3.2…...
规则联动引擎GoRules初探
背景说明 嵌入式设备随着物联网在生活和生产中不断渗透而渐渐多起来,数据的采集、处理、分析在设备侧的自定义配置越来越重要。一个可通过图形化配置的数据处理过程,对于加速嵌入式设备的功能开发愈发重要。作为一个嵌入式软件从业者,笔者一…...
Android开发-翻页类视图
在Android应用中,翻页类视图(Paging Views) 是一种非常直观且用户友好的方式来展示内容。无论是用于展示图片轮播、引导页还是分页加载数据列表,翻页效果都能极大地提升用户体验。本文将介绍几种实现翻页效果的常见组件和方法&…...
高能数造闪耀 CIBF 2025,以创新技术引领新能源智造新征程
在全球新能源产业加速发展的关键节点,CIBF 2025 展会成为行业技术与成果交流的重要平台。高能数造(西安)技术有限公司深度参与此次盛会,凭借在新能源电池智能制造领域的深厚积累与创新突破,为行业发展注入强劲动力&…...
数据结构与算法——栈和队列
栈和队列 栈概念与结构栈的实现栈的初始化栈的销毁判断栈是否为空入栈出栈取栈顶元素栈中有效元素个数 队列概念与结构队列的实现队列结点结构队列结构初始化队列队列判空销毁队列入队列,队尾出队列,队头取队头数据取队尾数据队列有效数据个数 栈 概念与…...
新电脑软件配置三 pycharm
快捷键放大和缩小字体 按住ctrl鼠标滚轮向上 缩小同理...
浅入ES5、ES6(ES2015)、ES2023(ES14)版本对比,及使用建议---ES6就够用(个人觉得)
JavaScript(ECMAScript)的发展经历了多个版本,每个版本都引入了新特性和改进。以下仅是对三个常用版本(ES5、ES6(ES2015) 和 ES2023)的基本对比及使用建议: 目前常见项目中还是用ES6…...
【Odoo】Pycharm导入运行Odoo15
【Odoo】Pycharm导入运行Odoo15 前置准备1. Odoo-15项目下载解压2. PsrtgreSQL数据库 项目导入运行1. 项目导入2. 设置项目内虚拟环境3. 下载项目中依赖4. 修改配置文件odoo.conf 运行Pycharm快捷运行 前置准备 1. Odoo-15项目下载解压 将下载好的项目解压到开发目录下 2. …...
【运营商查询】批量手机号码归属地和手机运营商高速查询分类,按省份城市,按运营商移动联通电信快速分类导出Excel表格,基于WPF的实现方案
WPF手机号码归属地批量查询与分类导出方案 应用场景 市场营销:企业根据手机号码归属地进行精准营销,按城市或省份分类制定针对性推广策略客户管理:快速对客户手机号码进行归属地分类,便于后续客户关系管理数…...
中级统计师-统计学基础知识-第四章 假设检验
一、假设检验的基本原理 1. 基本思想 反证法:假设原假设成立,通过样本矛盾性进行反驳小概率原理:设定显著性水平 α \alpha α(通常取 0.05),若观测结果的概率 p ≤ α p \leq \alpha p≤α,…...
等于和绝对等于的区别
1. (等于) 特点:比较时会自动进行类型转换(隐式转换),尝试将两边的值转为相同类型后再比较。规则: 如果类型相同,直接比较值。如果类型不同,按以下规则转换: …...
家庭关系处理个人总结
首先要说到前面的是,每个家庭的成员背景环境经济状况不同,原生家庭差异,导致面临具体问题是不同的。就类似软件“没有银弹”的概念,没有一种方法可以解决每个人问题。 举个例子,面对婆媳矛盾 网上父辈的人 会说 百行孝…...