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

文件上传漏洞详解

第一关(JS绕过)

1.1使用bp进行绕过

先将要上传的php文件的后缀改为png,然后在上传时抓包,将png后缀再改为php,发包,此时上传成功

1.2使用js进行绕过

打开浏览器的检查,将其中的checkFile函数直接删除,即可上传php文件

第二关(mime类型)

常见的MIME类型(通用型):

超文本标记语言文本 .html text/html
xml文档 .xml text/xml
XHTML文档 .xhtml application/xhtml+xml
普通文本 .txt text/plain
RTF文本 .rtf application/rtf
PDF文档 .pdf application/pdf
Microsoft Word文件 .word application/msword
PNG图像 .png image/png
GIF图形 .gif image/gif
JPEG图形 .jpeg,.jpg image/jpeg
au声音文件 .au audio/basic
MIDI音乐文件 mid,.midi audio/midi,audio/x-midi
RealAudio音乐文件 .ra, .ram audio/x-pn-realaudio
MPEG文件 .mpg,.mpeg video/mpeg
AVI文件 .avi video/x-msvideo
GZIP文件 .gz application/x-gzip
TAR文件 .tar application/x-tar
任意的二进制数据 application/octet-stream

分析源代码发现这里只是将content-type做了校验,我们可以在上传时抓取数据包然后更改content-type进行绕过

选择一个php后缀的文件,然后进行抓包,更改content-type,改为image/png

靶场中显示这样子的界面即为上传成功

第三关(黑名单绕过)

查看源代码发现这里对上传文件的后缀进行了限制,php等一些文件都上传不了,我们可以尝试绕过黑名单,例如php3 php4 php5 phtml的文件进行上传:

只需将想上传的php后缀的文件改为php3 php4 php5 phtml中的任意一个即可,然后直接上传就能成功

第四关(黑名单绕过 .htaccess)

补充知识:

.htaccess文件(或者”分布式配置文件”)提供了针对目录改变配置的方法, 即,在一个特定的文档目录中放置一个包含一个或多个指令的文件, 以作用于此目录及其所有子目录。作为用户,所能使用的命令受到限制。管理员可以通过Apache的AllowOverride指令来设置。
概述来说,htaccess文件是Apache服务器中的一个配置文件,它负责相关目录下的网页配置。通过htaccess文件,可以帮我们实现:网页301重定向、自定义404错误页面、改变文件扩展名、允许/阻止特定的用户或者目录的访问、禁止目录列表、配置默认文档等功能。
启用.htaccess,需要修改httpd.conf,启用AllowOverride,并可以用AllowOverride限制特定命令的使用。如果需要使用.htaccess以外的其他文件名,可以用AccessFileName指令来改变。例如,需要使用.config ,则可以在服务器配置文件中按以下方法配置:AccessFileName .config 。
笼统地说,.htaccess可以帮我们实现包括:文件夹密码保护、用户自动重定向、自定义错误页面、改变你的文件扩展名、封禁特定IP地址的用户、只允许特定IP地址的用户、禁止目录列表,以及使用其他文件作为index文件等一些功能。
.htaccess文件可以在网站目录树的任何一个目录中,只对该文件所在目录中的文件和子目录有效。
注意:子目录中的指令会笼盖更高级目录或者主器配置中的指令。.htaccess文件中的配置指令作用于.htaccess文件所在的目录及其所有子目录,即子目录中的指令会覆盖父目录或者主配置文件中的指令。

所以本关可以先上传一个.htaccess文件,文件内容如下:

SetHandler application/x-httpd-php(将所有的文件以php解析)

随后上传php文件,将后缀改为png或者jpg格式上传即可,然后会被解析为php

第五关(大小写混合绕过)

查看源码发现“file_ext = strtolower($file_ext); //转换为小写”,这一句没有了,所以可以使用大小写进行绕过,例如:1.php改为1.phP

第六关(空格和点配合绕过)

利用Windows系统的文件名特性。文件名最后增加空格和点,写成1.php .,这个需要用burpsuite抓包修改,上传后保存在Windows系统上的文件名最后的一个.会被去掉,实际上保存的文件名就是1.php

第七关(空格和点配合绕过)

跟第六关一样

第八关(基于文件流特性::$DATA来绕过)

本关少了“file_ext = str_ireplace('::DATA', '', file_ext);//去除字符串::DATA”这一句,,我们可以采用Windows文件流特性绕过,文件名改为1.php::$DATA , 上传成功后保存的文件名其实是1.php

第九关(点空格点绕过)

上传文件名后加上点+空格+点,改为

1.php. . 

第十关(双写绕过)

由于 file_name = str_ireplace(deny_ext,"", $file_name); 只对文件后缀名进行一次过滤,这样的话,双写文件名绕过,文件名改成1.pphphp

第十一关(%00截断)

这个属于白名单绕过,这是php语言自身的问题,php低版本存在的漏洞。

漏洞的利用条件:php版本<5.3.4,并且magic_quotes_gpc关闭。

分析代码,这是以时间戳的方式对上传文件进行命名,使用上传路径名%00截断绕过,不过这需要对文

件有足够的权限,比如说创建文件夹,上传的文件名写成1.jpg, save_path改成../upload/1.php%00 (1.php%00.jpg经过url转码后会变为1.php\000.jpg),最后保存下来的文件就是1.php

第十二关(0x00绕过)

跟11关原理相同,只是12关改为了POST传参,抓包将%00选中在对其编码即可

第十三关(文件头检查)

绕过文件头检查,添加GIF图片的文件头GIF89a,绕过GIF图片检查。

或者我们使用命令copy 1.jpg /b + shell.php /a webshell.jpg,将php一句话追加到jpg图片末尾,代码

不全的话,人工补充完整。形成一个包含Webshell代码的新jpg图片,然后直接上传即可。但是我们没

有办法拿到shell,应为我们上传的图片马无法被解析成php形式,通常图片马配合%00或者0x00截断上

传,或者配合解析漏洞

本关存在文件包含漏洞

打开此链接后可以检查图片马是否正常

第十四关(文件内容检测-getimagesize()绕过)

补充知识:

getimagesize() 函数用于获取图像尺寸 ,索引 2 给出的是图像的类型,返回的是数字,其中1 = GIF,2 
= JPG,3 = PNG,4 = SWF,5 = PSD,6 = BMP,7 = TIFF(intel byte order),8 = TIFF(motorola byte 
order),9 = JPC,10 = JP2,11 = JPX,12 = JB2,13 = SWC,14 = IFF,15 = WBMP,16 = XBM

image_type_to_extension() 函数用于获取图片后缀

方法与13关相同

第十五关(文件内容检测-exif_imagetype()绕过)

exif_imagetype() 此函数是php内置函数,用来获取图片类型

方法与13关相同

第十六关(二次渲染)

较难

二次渲染原理:将用户上传过来的文件数据重新读取保存到另外一个文件中,那么在读取写入的过程中,将特

殊的数据剔除掉了

为了方便大家测试,这里提供一张网上某个大佬提供的GIF图片,当时我也找了很久,大家可以保存一下

https://wwe.lanzoui.com/iFSwwn53jaf

第十七关(时间竞争)

本关是能将php文件上传到服务器中的,但是会被服务器迅速删掉,所以我们可以利用条件竞争删除文件时间差绕过。

第一步抓取上传文件的包,清除变量

第二步

第三步,这个地方的线程可以调高一点

随后点击开始攻击,这样页面就会不断上传1.php文件

然后我们写一个python脚本:

import requests
url = "http://xxx.xxx.xxx.xxx/upload-labs/upload/1.php"
while True:html = requests.get(url)if html.status_code == 200:print("OK")break

这个脚本是不断请求服务器中的1.php文件,我们可以在kali中使用此脚本,访问成功会提示OK并退出脚本

第十八关(时间竞争)

本关不能再上传php文件了,需要上传图片马

且本关靶场有点问题需要自己手动修改一下:

后续操作和17关相同,python脚本需要改一下

import requests
url = "http://xxx.xxx.xxx.xx/upload-labs/include.php?file=upload/pass19.png"
while True:html = requests.get(url)if ( 'Warning'  not in  str(html.text)):print('ok')break

第十九关

与前面的11和12关类似

move_uploaded_file()还有这么一个特性,会忽略掉文件末尾的 /.

所以在上传的位置改为upload-19.php/.

第二十关

本关来源于ctf,比较绕,参考别的大佬的解题方法

文件命名规则:$file_name = reset($file) . '.' . $file[count($file) - 1];
reset():将内部指针指向数组中的第一个元素,并输出。
end():将内部指针指向数组中的最后一个元素,并输出。
$file = empty($_POST['save_name']) ? $_FILES['upload_file']['name'] : 
$_POST['save_name'];如果save_name不为空则file为save_name,否则file为filename
if (!is_array($file))判断如果file不是数组则以’.’分组
文件名命名规则$file_name = reset($file) . '.' . $file[count($file) - 1];
我们POST传入一个save_name列表:['info20.php', '', 'jpg'],此时
empty($_POST['save_name']) 为假则file为save_name,所以由$ext = end($file);为jpg可以通
过后缀名判断(判断结束后最后一个元素jpg弹出),并且最终文件名组装为upload20.php.

相关文章:

文件上传漏洞详解

第一关&#xff08;JS绕过&#xff09; 1.1使用bp进行绕过 先将要上传的php文件的后缀改为png&#xff0c;然后在上传时抓包&#xff0c;将png后缀再改为php&#xff0c;发包&#xff0c;此时上传成功 1.2使用js进行绕过 打开浏览器的检查&#xff0c;将其中的checkFile函数…...

mysql的mvcc

快速搞懂mvcc 全称 multi-version concurrency control 多版本并发控制。自动开启事务undo log读视图(read_view)结果过滤mvcc只在读已提交和可重复读隔离级别下运作读已提交隔离级别下&#xff0c;可重复读隔离级别下&#xff0c;总的来说mvcc是为了提高数据库并发性能而设计的…...

漏洞情报:为什么、要什么和怎么做

漏洞一直是网络攻防的焦点所在&#xff0c;因为漏洞直接或间接影响安全性的核心方面——权限。攻击者挖掘和利用漏洞&#xff0c;获取非授权的权限&#xff1b;防御方定位和消除漏洞&#xff0c;监测和阻断漏洞的利用&#xff0c;使攻击者无法利用漏洞达到其目的。漏洞信息本质…...

kotlin的协程的基础概念

Kotlin的协程是一种用于简化异步编程的强大工具。 理解协程的基础概念可以帮助开发者有效地利用其能力。 以下是Kotlin协程的一些关键基础概念&#xff1a; 协程&#xff08;Coroutines&#xff09; &#xff1a; 协程是一种用于处理并发任务的编程模型&#xff0c;它可以在单…...

C语言教程——动态内存管理(2)

文章目录 前言一、pandas是什么&#xff1f;二、使用步骤 1.引入库2.读入数据 总结 前言 我们之前学了动态内存管理分配函数&#xff0c;也是熟悉了动态内存分配函数&#xff0c;基于动态内存分配我把之前的通讯录做了修改&#xff0c;上传到了gitee上&#xff0c;这篇文章接着…...

LeetCode刷题 -- 45.跳跃游戏 II

题目 C代码 int jump(int* nums, int numsSize) {int i 0;int j 0;int last_i 0;int last_can 0;int max_i 0;int max_can 0;int min_jump 0;if (numsSize < 2) {//注意点1&#xff1a;数组小于两个的时候&#xff0c;只需要跳转0次&#xff1b;goto end;}// 注意点…...

谈谈RTMP|RTSP播放器视频view垂直|水平反转和旋转设计

技术背景 我们在做RTMP|RTSP播放器的时候&#xff0c;有这样的技术诉求&#xff0c;有的摄像头出来的数据是有角度偏差的&#xff0c;比如“装倒了”&#xff0c;或者&#xff0c;图像存在上下或者左右反转&#xff0c;这时候&#xff0c;就需要播放器能做响应的处理&#xff…...

vulnhub靶场【kioptrix-1靶机】

前言 靶机&#xff1a;kioptrix-1&#xff0c;IP地址为192.168.1.104 攻击&#xff1a;kali&#xff0c;IP地址为192.168.1.16 都采用虚拟机&#xff0c;网卡为桥接模式 文章中涉及的靶机&#xff0c;来源于vulnhub官网&#xff0c;想要下载&#xff0c;可自行访问官网下载&…...

PyQt5之QCalendarWidget

十八、QCalendarWidget 1.描述 提供了一个基于每月日历控件&#xff0c;允许用户选择一个日期。 继承自QWidget 2.功能作用 (1) 构造函数 QCalendarWidget(parent: QWidget None)(2) 日期范围 setMinimumDate(QDate date) minimumDate() -> QDate setMaximumDate(QD…...

【Qt】窗口

窗口 菜单栏 QMenuBar给菜单设置快捷键添加子菜单添加分割线设置图标 工具栏 QToolBar状态栏 QStatusBar浮动窗口 QDockWidget对话框自定义对话框通过代码方式通过图形化方式 模态对话框 Qt 内置对话框消息对话框 QMessageBox颜色对话框 QColorDialog文件对话框 QFileDialog字体…...

初阶5 排序

本章重点 排序的概念常见排序的算法思想和实现排序算法的复杂度以及稳定性分析 1.排序的概念 排序: 所谓排序&#xff0c;就是使一串记录&#xff0c;按照其中的某个或某些关键字的大小&#xff0c;递增或递减的排列起来的操作。稳定性: 假定在待排序的记录序列中&#xff0…...

备赛蓝桥杯之第十五届职业院校组省赛第二题:分享点滴

提示&#xff1a;本篇文章仅仅是作者自己目前在备赛蓝桥杯中&#xff0c;自己学习与刷题的学习笔记&#xff0c;写的不好&#xff0c;欢迎大家批评与建议 由于个别题目代码量与题目量偏大&#xff0c;请大家自己去蓝桥杯官网【连接高校和企业 - 蓝桥云课】去寻找原题&#xff0…...

qml ColumnLayout详解

1、概述 ColumnLayout 是 QML 中用于在垂直方向上排列子元素的一种布局管理器。它继承自 Item 并提供了简单的布局机制&#xff0c;使得子元素能够按照从上到下的顺序自动排列。ColumnLayout 通常用于创建具有垂直层次结构的用户界面。 2、重要属性 layoutDirection 类型&…...

Qt 5.14.2 学习记录 —— 십팔 对话框

文章目录 1、Qt对话框2、自定义对话框1、代码方式2、图形化方式 3、模态对话框4、QMessageBox5、QColorDialog6、QFileDialog7、QFontDialog8、QInputDialog 1、Qt对话框 Qt的对话框用QDialog类来表示&#xff0c;可以自定义一些类来实现自定义对话框&#xff0c;但需要继承自…...

AI 编程工具—Cursor进阶使用 Rules for AI

AI 编程工具—Cursor进阶使用 Rules for AI 这里配置是给所有的会话和内嵌模式的,你可以理解为是一个全局的配置 下面的代码是之前Cursor 给我们生成的,下面我们开始配置Rules ,来让Cursor生成的代码更加符合我们的编程习惯 def quick_sort(arr):"""使用快…...

SpringBoot 实现动态管理定时任务 Job的动态操作(添加、修改、启停、执行、删除)以及界面展示和具体Job的创建与执行示例

SpringBoot 实现动态管理定时任务 Job的动态操作&#xff08;添加、修改、启停、执行、删除&#xff09;以及界面展示和具体Job的创建与执行示例 关键接口类&#xff1a; CronTaskRegistrar SchedulingRunnable . 添加定时任务注册类&#xff0c;用来增加、删除定时任务 impo…...

FPGA中场战事

2023年10月3日,英特尔宣布由桑德拉里维拉(Sandra Rivera)担任“分拆”后独立运营的可编程事业部首席执行官。 从数据中心和人工智能(DCAI)部门总经理,转身为执掌该业务的CEO,对她取得像AMD掌门人苏姿丰博士类似的成功,无疑抱以厚望。 十年前,英特尔花费167亿美元真金白银…...

_CLASSDEF在C++中的用法详解及示例

_CLASSDEF在C++中的用法详解及示例 _CLASSDEF的定义与使用示例说明代码解析总结在C++编程中,宏(Macro)是一种预处理指令,它允许程序员在编译之前对代码进行文本替换。_CLASSDEF是一个自定义的宏,它提供了一种便捷的方式来定义类及其相关类型。本文将详细介绍_CLASSDEF在C+…...

缓存-Redis-数据结构-redis哪些数据结构是跳表实现的?

在 Redis 中&#xff0c;跳表&#xff08;Skip List&#xff09; 被用于实现 有序集合&#xff08;Sorted Set&#xff09; 数据结构。以下是对此实现的详细解释&#xff1a; Redis中的有序集合&#xff08;Sorted Set&#xff09; 有序集合&#xff08;Sorted Set&#xff0…...

K8S中Service详解(二)

Service类型 Service的资源清单文件&#xff1a; --- kind: Service # 资源类型 apiVersion: v1 # 资源版本 metadata: # 元数据name: service # 资源名称namespace: dev # 命名空间 spec: # 描述selector: # 标签选择器&#xff0c;用于确定当前service代理哪些podapp: ngin…...

鸿蒙模块概念和应用启动相关类(HAP、HAR、HSP、AbilityStage、UIAbility、WindowStage、window)

目录 鸿蒙模块概念 HAP entry feature har shared 使用场景 HAP、HAR、HSP介绍 HAP、HAR、HSP开发 应用的启动 AbilityStage UIAbility WindowStage Window 拉起应用到显示到前台流程 鸿蒙模块概念 HAP hap包是手机安装的最小单元&#xff0c;1个app包含一个或…...

【EXCEL_VBA_实战】多工作薄合并深入理解

工作背景&#xff1a;多个工作薄存在冲突的名称&#xff0c;需快速合并 困难点&#xff1a;工作表移动复制时&#xff0c;若有冲突的名称&#xff0c;会不断弹出对话框待人工确认 思路&#xff1a;利用代码确认弹出的对话框 关键代码&#xff1a;Application.DisplayAlerts …...

Maven的下载安装配置

maven的下载安装配置 maven是什么 Maven 是一个用于 Java 平台的 自动化构建工具&#xff0c;由 Apache 组织提供。它不仅可以用作包管理&#xff0c;还支持项目的开发、打包、测试及部署等一系列行为 Maven的核心功能 项目构建生命周期管理&#xff1a;Maven定义了项目构建…...

网络打印机的搜索与连接(一)

介绍 网络打印机就是可以通过网络连接上的打印机&#xff0c;这类打印机分2种&#xff1a;自身具有互联网接入功能可以分配IP的打印机我们称为网络打印机、另外一种就是被某台电脑连接上去后通过共享的方式共享到网络里面的我们称为共享打印机。现在还有一种可以通过互联网连接…...

高并发压力测试

高并发压力测试 CountDownLatch就是JUC包下的一个工具&#xff0c;整个工具最核心的功能就是计数器。 需要一个并发安全的计数器来操作。CountDownLatch就可以实现。 给CountDownLatch设置一个数值。 每个业务处理完毕之后&#xff0c;执行一次countDown方法&#xff0c;指…...

Python中采用.add_subplot绘制子图的方法简要举例介绍

Python中采用.add_subplot绘制子图的方法简要举例介绍 目录 Python中采用.add_subplot绘制子图的方法简要举例介绍一、Python中绘制子图的方法1.1 add_subplot函数1.2 基本语法&#xff08;1&#xff09;add_subplot的核心语法&#xff08;2&#xff09;add_subplot在中编程中的…...

ipad和macbook同步zotero文献附件失败的解决办法

背景&#xff1a;我所有的文献及其附件pdf都是在台式机&#xff08;windows系统&#xff09;&#xff0c;想要把这些文献同步到云上&#xff0c;然后再从云上同步到平板和其他笔记本电脑比如macbook。文献同步虽已成功&#xff0c;但文献附件都无法打开。 平板报错如下&#xf…...

循环队列(C语言)

从今天开始我会开启一个专栏leetcode每日一题&#xff0c;大家互相交流代码经验&#xff0c;也当作我每天练习的自我回顾。第一天的内容是leetcode622.设计循环队列。 一、题目详细 设计你的循环队列实现。 循环队列是一种线性数据结构&#xff0c;其操作表现基于 FIFO&#…...

Amazon Redshift实用命令语句

1. 数据库管理相关命令 创建数据库 CREATE DATABASE mydatabase;Amazon Redshift创建数据库命令除了基本形式外&#xff0c;还有以下几种带不同参数的形式&#xff1a; 带OWNER参数 可以指定数据库的所有者&#xff0c;通常是一个数据库用户或角色。 CREATE DATABASE myda…...

音频入门(二):音频数据增强

本文介绍了一些常见的音频数据增强方法&#xff0c;并给出了代码实现。 目录 一、简介 二、代码 1. 安装必要的库 2. 代码 3. 各函数的介绍 4. 使用方法 参考&#xff1a; 一、简介 音频数据增强是机器学习和深度学习领域中用于改善模型性能和泛化能力的技术。 使用数据…...

【Hadoop面试题2025】

文章目录 简单题故障及相应的处理方法中等难度高难度小文件小文件的产生小文件问题的影响小文件治理方案推荐方案 冷文件冷文件的产生冷文件问题的影响冷文件治理方案推荐方案 简单题 一、基础概念类 什么是Hadoop&#xff1f; 答案&#xff1a;Hadoop是一个开源的分布式计算框…...

Unity自学之旅03

Unity自学之旅03 Unity自学之旅03&#x1f4dd; 碰撞体 Collider 基础定义与作用常见类型OnCollisionEnter 事件碰撞触发器 &#x1f917; 总结归纳 Unity自学之旅03 &#x1f4dd; 碰撞体 Collider 基础 定义与作用 定义&#xff1a;碰撞体是游戏中用于检测物体之间碰撞的组…...

STranslate 中文绿色版即时翻译/ OCR 工具 v1.3.1.120

STranslate 是一款功能强大且用户友好的翻译工具&#xff0c;它支持多种语言的即时翻译&#xff0c;提供丰富的翻译功能和便捷的使用体验。STranslate 特别适合需要频繁进行多语言交流的个人用户、商务人士和翻译工作者。 软件功能 1. 即时翻译&#xff1a; 文本翻译&#xff…...

树的存储(c++)

树结构相对线性结构来说就⽐较复杂。存储时&#xff0c;既要保存值域&#xff0c;也要保存结点与结点之间的关系。实际中树有很多种存储⽅式&#xff1a;双亲表⽰法&#xff0c;孩⼦表⽰法、孩⼦双亲表⽰法以及孩⼦兄弟表⽰法等。现阶段&#xff0c;我们只⽤掌握孩⼦表⽰法&…...

JVM面试题解,垃圾回收之“对象存活判断”剖析

一、JVM怎么判断一个类/对象是不是垃圾&#xff1f; 先来说如何判断一个对象是不是垃圾 最常用的就是引用计数法和可达性分析 引用计数法 引用计数法为每个对象维护一个计数器来跟踪有多少个引用指向该对象。每当创建一个新的引用指向某个对象时&#xff0c;计数器加1&…...

【Elasticsearch】 Ingest Pipeline `processors`属性详解

在Elasticsearch中&#xff0c;Ingest Pipeline 的 processors 属性是一个数组&#xff0c;包含一个或多个处理器&#xff08;processors&#xff09;。每个处理器定义了一个数据处理步骤&#xff0c;可以在数据索引之前对数据进行预处理或富化。以下是对 processors 属性中常见…...

Springboot3 自动装配之核心文件:imports文件

注&#xff1a;本文以spring-boot v3.4.1源码为基础&#xff0c;梳理spring-boot应用启动流程、分析自动装配的原理 如果对spring-boot2自动装配有兴趣&#xff0c;可以看看我另一篇文章&#xff1a; Springboot2 自动装配之spring-autoconfigure-metadata.properties和spring…...

Ceisum无人机巡检直播视频投射

接上次的视频投影&#xff0c;Leader告诉我这个视频投影要用在两个地方&#xff0c;一个是我原先写的轨迹回放那里&#xff0c;另一个在无人机起飞后的地图回显&#xff0c;要实时播放无人机拍摄的视频&#xff0c;还要能转镜头&#xff0c;让我把这个也接一下。 我的天&#x…...

【IJCAI】2025 投稿重点记录

【IJCAI】2025 投稿重点记录 写在最前面【IJCAI】2025 投稿重点记录1. 文件说明2. 论文长度要求正式版本的页面扩展 3. 作者信息及匿名性要求4. 摘要5. 附录与补充内容6. 审稿重点与伦理声明7. 参考文献与贡献声明8. 技术要点与补充细节 &#x1f308;你好呀&#xff01;我是 是…...

U3D的.Net学习

Mono&#xff1a;这是 Unity 最初采用的方式&#xff0c;它将 C# 代码编译为中间语言 (IL)&#xff0c;然后在目标平台上使用虚拟机 (VM) 将其转换为本地机器码执行。 IL2CPP&#xff1a;这是一种较新的方法&#xff0c;它会将 C# 代码先编译为 C 代码&#xff0c;再由 C 编译器…...

C++ 二叉搜索树

目录 概念 性能分析 二叉搜索树的插入 二叉树的查找 二叉树的前序遍历 二叉搜索树的删除&#xff08;重点&#xff09; 完整代码 key与value的使用 概念 对于一个二叉搜索树 若它的左子树不为空&#xff0c;则左子树上所有的节点的值都小于等于根节点的值若它的右子树不为空…...

使用HTML5 Canvas 实现呼吸粒子球动画效果的原理

在网页开发领域&#xff0c;动画效果能够极大地提升用户体验&#xff0c;让页面变得更加生动有趣。今天&#xff0c;我们深入剖析一个基于 HTML5 Canvas 的 3D 粒子动画 —— 呼吸粒子球。通过详细解读其代码实现&#xff0c;我们将全面了解如何运用 HTML5 的强大功能构建出如此…...

计算机网络 (56)交互式音频/视频

一、定义与特点 定义&#xff1a;交互式音频/视频是指用户使用互联网和其他人进行实时交互式通信的技术&#xff0c;包括语音、视频图像等多媒体实时通信。 特点&#xff1a; 实时性&#xff1a;音频和视频数据是实时传输和播放的&#xff0c;用户之间可以进行即时的交流。交互…...

Androidstudio 中,project下的.gitignore和module下的.gitignore有什么区别,生效优先级是什么

在 Android Studio 项目中&#xff0c;project 根目录下的 .gitignore 文件和 module 目录下的 .gitignore 文件作用和生效优先级是不同的&#xff0c;理解它们之间的区别非常重要&#xff0c;可以避免不必要的提交和冲突。 1. project 根目录下的 .gitignore&#xff1a; 作…...

三篇物联网漏洞挖掘综述

由于物联网设备存在硬件资源受限、硬件复杂异构&#xff0c; 代码、文档未公开的问题&#xff0c; 物联网设备的漏洞挖掘存在较大的挑战&#xff1a; 硬件资源受限性: 通用动态二进分析技术需要在运行程序外围实施监控分析。由于物联网设备存储资源(存储)的受限性&#xff0c;…...

【动态规划】落花人独立,微雨燕双飞 - 8. 01背包问题

本篇博客给大家带来的是01背包问题之动态规划解法技巧. &#x1f40e;文章专栏: 动态规划 &#x1f680;若有问题 评论区见 ❤ 欢迎大家点赞 评论 收藏 分享 如果你不知道分享给谁,那就分享给薯条. 你们的支持是我不断创作的动力 . 王子,公主请阅&#x1f680; 要开心要快乐顺便…...

uniapps使用HTML5的io模块拷贝文件目录

最近在集成sqlite到uniapp的过程中&#xff0c;因为要将sqlite数据库预加载&#xff0c;所以需要使用HTML5的plus.io模块。使用过程中遇到了许多问题&#xff0c;比如文件路径总是解析不到等。尤其是应用私有文档目录’_doc’。 根据官方文档&#xff1a; 为了安全管理应用的…...

Word2Vec如何优化从中间层到输出层的计算?

文章目录 Word2Vec如何优化从中间层到输出层的计算&#xff1f;用负采样优化中间层到输出层的计算负采样方法的关键思想负采样的例子负采样的采样方法 Word2Vec如何优化从中间层到输出层的计算&#xff1f; 重要性&#xff1a;★★ 用负采样优化中间层到输出层的计算 以词汇…...

C#中的语句

C#提供了各式各样的语句&#xff0c;大多数是由C和C发展而来&#xff0c;当然&#xff0c;在C#中做了相应修改。语句和表达式一样&#xff0c;都是C#程序的基本组成部分&#xff0c;在本文我们来一起学习C#语句。 1.语句 语句是构造所有C#程序的过程构造块。在语句中可以声明…...

2.3.1(项目)kv存储——框架梳理(待定)

一、过一遍代码路线&#xff1a; 体会&#xff1a;&#xff08;1&#xff09;接口统一、测试标准统一&#xff0c;软件才会有量产的过程&#xff1b;&#xff08;b&#xff09;多层框架&#xff0c;实现业务部分和网络部分的完全剥离。 实现多层框架&#xff1a; &#xff0…...