CTFSHOW-WEB入门-PHP特性109-115
- 题目:web 109
1. 题目:
2. 解题思路:题目要求获得两个参数,v1 v2,if语句中的意思是要求两个参数都包含字母,条件满足的话,执行 echo new 类名(方法());这里使用echo 输出对象,会触发tostring方法,所以后面的类名要用实现toString方法的类,由于php中的内置类较为安全和稳定,所以使用php的内置类,常见的内置类且实现了toString的有:- DateTime
<font style="color:rgb(251, 71, 135);">DateTime</font>
类实现了<font style="color:rgb(251, 71, 135);">__toString()</font>
方法,默认返回 ISO 8601 格式的日期时间字符串。
- DateTime
$date = new DateTime();
echo $date; // 输出类似 2023-10-21T15:23:01+00:00
2. **<font style="color:rgba(0, 0, 0, 0.88);">DateTimeImmutable</font>**1. <font style="color:rgba(0, 0, 0, 0.88);">与 </font>`<font style="color:rgb(251, 71, 135);">DateTime</font>`<font style="color:rgba(0, 0, 0, 0.88);"> 类似,</font>`<font style="color:rgb(251, 71, 135);">DateTimeImmutable</font>`<font style="color:rgba(0, 0, 0, 0.88);"> 也实现了 </font>`<font style="color:rgb(251, 71, 135);">__toString()</font>`<font style="color:rgba(0, 0, 0, 0.88);"> 方法。</font>
$dateImmutable = new DateTimeImmutable();
echo $dateImmutable; // 输出类似 2023-10-21T15:23:01+00:00
3. **<font style="color:rgba(0, 0, 0, 0.88);">SimpleXMLElement</font>**1. `<font style="color:rgb(251, 71, 135);">SimpleXMLElement</font>`<font style="color:rgba(0, 0, 0, 0.88);"> 实现了 </font>`<font style="color:rgb(251, 71, 135);">__toString()</font>`<font style="color:rgba(0, 0, 0, 0.88);">,返回 XML 的字符串表示。</font>
$xml = new SimpleXMLElement('<root><element>Hello World</element></root>');
echo $xml; // 输出: <root><element>Hello World</element></root>
4. **<font style="color:rgba(0, 0, 0, 0.88);">DOMElement</font>**1. `<font style="color:rgb(251, 71, 135);">DOMElement</font>`<font style="color:rgba(0, 0, 0, 0.88);"> 及其某些其它 DOM 扩展类(如 </font>`<font style="color:rgb(251, 71, 135);">DOMDocument</font>`<font style="color:rgba(0, 0, 0, 0.88);">、</font>`<font style="color:rgb(251, 71, 135);">DOMNode</font>`<font style="color:rgba(0, 0, 0, 0.88);"> 等)也实现了 </font>`<font style="color:rgb(251, 71, 135);">__toString()</font>`<font style="color:rgba(0, 0, 0, 0.88);"> 方法,返回相应的元素的字符串表示。</font>
$doc = new DOMDocument();
$doc->loadXML('<root><element>Hello World</element></root>');
$element = $doc->documentElement;
echo $element; // 输出: <root><element>Hello World</element></root>
5. **<font style="color:rgba(0, 0, 0, 0.88);">stdClass</font>**1. <font style="color:rgba(0, 0, 0, 0.88);">虽然 </font>`<font style="color:rgb(251, 71, 135);">stdClass</font>`<font style="color:rgba(0, 0, 0, 0.88);"> 的 </font>`<font style="color:rgb(251, 71, 135);">__toString()</font>`<font style="color:rgba(0, 0, 0, 0.88);"> 方法返回一个空字符串,但它是一个通用的对象,可以用来作为动态属性容器。</font>
$obj = new stdClass();
echo $obj; // 输出: (空字符串)
6. **<font style="color:rgba(0, 0, 0, 0.88);">ArrayObject</font>**1. `<font style="color:rgb(251, 71, 135);">ArrayObject</font>`<font style="color:rgba(0, 0, 0, 0.88);"> 实现了 </font>`<font style="color:rgb(251, 71, 135);">__toString()</font>`<font style="color:rgba(0, 0, 0, 0.88);"> 方法,返回数组的字符串表示。</font>
$arrayObj = new ArrayObject([1, 2, 3]);
echo $arrayObj; // 输出: Array
3. 使用内置类+函数名,?v1=DateTimeImmutable&v2=system(ls)得到目录结果:查看flag:
4. 知识点:`<font style="color:#dd0000;">echo new </font><font style="color:#0000bb;">$v1</font><font style="color:#dd0000;">(</font><font style="color:#0000bb;">$v2</font><font style="color:#dd0000;">());</font>`的执行机制:
new $v1 表示创建 $v1 的一个实例。这里 $v1 必须是一个类名。
$v2() 则表示实例化后调用 $v2 这个函数或方法。
在这个上下文中,你假设用户输入的 $v1 是类名且 $v2 是方法名。
- 题目:web 110
1. 题目:
2. 解题思路:分析一下这个题目的代码,思路与上一题类似,区别是v1 和v2 的过滤更加严格,过滤了括号,因此不可以用有参数的函数了,但是还有一些无参数的函数可以使用。 php 中查看目录的函数有:scandir()、golb()、dirname()、basename()、realpath()、getcwd() ,其中 scandir()、golb() 、dirname()、basename()、realpath() 都需要给定参数,而 getcwd() 不需要参数,getchwd() 函数会返回当前工作目录。 而类FilesystemIterator 是 PHP 的一个类,用于遍历文件系统中的目录和文件。那么我们就可以通过遍历当前目录获取目录内容:v1=FilesystemIterator&v2=getcwd得到当前目录下有一个文件:直接进行访问:getflag:
3. 知识点:内置类FilesystemIterator可以遍历目录内容,以及无参函数getcwd获取当前目录
4. 注意: 这里说一下为什么Directoryiterator为什么不能用? 当你创建一个DirectoryIterator
对象并将其实例化为某个目录时,该对象会默认指向所代表的目录。举个例子,如果你创建一个DirectoryIterator
对象来表示/var/www/html
目录,那么该对象就会默认指向/var/www/html
目录。 而当你对这个目录进行迭代操作时,DirectoryIterator
会遍历该目录中的所有文件和子目录。这意味着,遍历的结果会包括当前目录.
和上级目录..
。通常,这两个特殊的目录会作为遍历结果的一部分返回,因为它们是文件系统中的标准目录表示法。所以,使用DirectoryIterator
遍历目录时,默认情况下会包括.
和..
这两个目录项。 - 题目:web 111
1. 题目:
2. 解题思路:分析代码可以知道,这道题我们利用的点在getflag函数里面,这里面的eval函数里面的KaTeX parse error: Expected 'EOF', got '&' at position 4: v1=&̲v2这一句较为复杂:其执行流程是首先获取$v2的值,将他作为变量名,重新作为一个变量,并将他的地址传递给 1 的值对应的变量(该变量对应的流程和 1的值对应的变量(该变量对应的流程和 1的值对应的变量(该变量对应的流程和v2一样),然后再输出v1变量的详细信息。这里仍然是对v1 v2进行了过滤,与上一题不同的是,同时还增添了对于v1的限制,要包含ctfshow. 这里就先将v1设置为ctfshow,这样就得到getFlag里面的KaTeX parse error: Expected 'EOF', got '&' at position 9: ctfshow=&̲另一个变量,另一个变量是什么呢…flag 里面,于是先设置v2=flag,这样就有KaTeX parse error: Expected 'EOF', got '&' at position 9: ctfshow=&̲flag:进行尝试:尝试失败了,我以为的是flag.php 文件里面没有 f l a g 这个变量,看了其他师傅们的博客知道,是因为对于这个文件的 g e t F l a g 来说, flag 这个变量,看了其他师傅们的博客知道,是因为对于这个文件的getFlag来说, flag这个变量,看了其他师傅们的博客知道,是因为对于这个文件的getFlag来说,flag,是一个外部变量,没有访问的权限,于是就要用到超全局变量:GLOBALS: $GLOBALS 是PHP的一个超级全局变量组,包含了全部变量的全局组合数组,变量的名字就是数组的键。 于是?v1=ctfshow&v2=GLOBALS get到flag:
3. 知识点:PHP中的超全局变量:-
<font style="color:rgb(251, 71, 135);">$_GET</font>
- 用于收集 URL 中查询字符串的变量。当你通过 URL 传递参数时,可以使用这个变量访问这些参数。
- 示例:
<font style="color:rgb(251, 71, 135);">$_GET['name']</font>
获取 URL 中的<font style="color:rgb(251, 71, 135);">?name=value</font>
中的<font style="color:rgb(251, 71, 135);">value</font>
。
<font style="color:rgb(251, 71, 135);">$_POST</font>
- 用于收集通过 HTTP POST 方法发送到脚本的数据。通常用于表单提交。
- 示例:
<font style="color:rgb(251, 71, 135);">$_POST['username']</font>
获取通过 POST 提交的表单中<font style="color:rgb(251, 71, 135);">username</font>
字段的值。
<font style="color:rgb(251, 71, 135);">$_REQUEST</font>
- 包含了
<font style="color:rgb(251, 71, 135);">$_GET</font>
、<font style="color:rgb(251, 71, 135);">$_POST</font>
以及<font style="color:rgb(251, 71, 135);">$_COOKIE</font>
的所有数据,是一个合并的数组。你可以通过它来访问表单数据,无论是 GET 还是 POST,甚至是 cookies 中的值。 - 示例:
<font style="color:rgb(251, 71, 135);">$_REQUEST['anyField']</font>
。
- 包含了
<font style="color:rgb(251, 71, 135);">$_SESSION</font>
- 用于在用户会话期间存储数据。会话数据存储在服务器上,并通过会话 ID 区分。
- 示例:
<font style="color:rgb(251, 71, 135);">$_SESSION['user_id']</font>
可能保存用户登录状态。
<font style="color:rgb(251, 71, 135);">$_COOKIE</font>
- 用于访问存储在用户计算机上的 cookie 数据。可以读取和设置 cookie。
- 示例:
<font style="color:rgb(251, 71, 135);">$_COOKIE['logged_in']</font>
获取名为<font style="color:rgb(251, 71, 135);">logged_in</font>
的 cookie 值。
<font style="color:rgb(251, 71, 135);">$_FILES</font>
- 用于访问通过 HTTP POST 上传到脚本的文件。这个变量是一个数组,包含了文件的相关信息。
- 示例:
<font style="color:rgb(251, 71, 135);">$_FILES['file']['name']</font>
获取上传文件的原始文件名。
<font style="color:rgb(251, 71, 135);">$_SERVER</font>
- 包含了关于当前请求和脚本执行环境的信息。例如:HTTP 头、路径、脚本位置等。
- ’示例:
<font style="color:rgb(251, 71, 135);">$_SERVER['HTTP_USER_AGENT']</font>
获取用户的浏览器信息。
<font style="color:rgb(251, 71, 135);">$_ENV</font>
- 用于访问环境变量。通常来自服务器上配置的环境变量。
- 示例:
<font style="color:rgb(251, 71, 135);">$_ENV['PATH']</font>
可能包含系统的 PATH 环境变量。
<font style="color:rgb(251, 71, 135);">GLOBALS</font>
- 是一个包含了所有全局变量的关联数组。你可以通过这个数组访问在函数或方法外定义的变量。
- 示例:
<font style="color:rgb(251, 71, 135);">GLOBALS['myVar']</font>
访问全局变量<font style="color:rgb(251, 71, 135);">$myVar</font>
。
-
- 题目:web 112
1. 题目:
2. 解题思路:这个题考察的是文件包含,题目中filter函数过滤的有…/ 上级目录,字符串http data https input rot13 base64 string 等包含伪协议的关键字,那么我们就要 利用其他伪协议的替代,这里用到的是:
3. 知识点:伪协议的替代协议 - 题目:web 113
1. 题目:
2. 解题思路:这个题又过滤了filter,于是上一题的payload无法使用 ,又去查找了其他协议,发现还有compress.zlib://和compress.zip2://协议,于是使用compress.zlib://协议:**file=compress.zlib://flag.php**
可以访问到结果:但是这里有一个疑问第二个协议却不行,两者都是对压缩文件生效的,但是这里flag,php 不是压缩文件也生效了
3. 看看还有没有其他的解法可以使用:有的兄弟,有的!: 通过/proc/self/root访问根文件系统中的任何文件和目录。 这里有一个前提知识: 在Linux系统中,/proc/self/root/
是一个指向当前进程根文件系统挂载点的符号链接。通常,它直接指向系统的根目录/
在大多数Linux文件系统中,路径解析不会因为连续的/
或重复的目录名(如多次出现的/proc/self/root/
)而改变最终访问的文件。 那么我们就可以利用多个挂载符号连接,超过函数可以解析的最大限制,从而实现目录溢出,访问到我们想要的文件:于是构造payload:file=/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/var/www/html/flag.php得到结果:
4. 知识点:伪协议的替代 使用**/proc/self/root**
目录溢出 - 题目:web 114
1. 题目:
2. 解题思路:这道题目将filter换成了compress zip root等形式,那么就过滤了使用根目录的特殊符号挂载符号,也不能使用上次试过的compress协议,于是可以使用filter:直接访问源文件就行:file=php://filter/resource=flag.php
得到好结果:
3. 另解:使用filter的过滤器解压与压缩:?file=php://filter/read=zlib.deflate|zlib.Inflate/resource=flag.php
,这里将当访问该 URL 时,PHP 引擎会首先读取<font style="color:rgb(251, 71, 135);">flag.php</font>
文件的内容,由于选用了<font style="color:rgb(251, 71, 135);">zlib.deflate</font>
过滤器,文件内容在输出之前会被压缩。紧接着,通过<font style="color:rgb(251, 71, 135);">|</font>
符号,将压缩的数据传送给<font style="color:rgb(251, 71, 135);">zlib.Inflate</font>
过滤器,这样最终的结果就是<font style="color:rgb(251, 71, 135);">flag.php</font>
的内容被解压并展示。
4. 知识点:filter 过滤器的种类
在 php://filter 路径中,可以指定多种过滤器来对读取的文件内容进行预处理。这些过滤器主要分为字符串过滤器、转换过滤器、压缩过滤器和加密过滤器四大类。以下是对这些过滤器的详细归纳:
一、字符串过滤器string.rot13功能:对数据进行 ROT13 编码。ROT13 编码是一种简单的替换密码,它将字母表中的每个字母替换为字母表中13位之后的字母(忽略非字母字符)。示例:php://filter/read=string.rot13/resource=flag.phpstring.toupper功能:将字符串转换为大写。示例:php://filter/read=string.toupper/resource=flag.phpstring.tolower功能:将字符串转换为小写。示例:php://filter/read=string.tolower/resource=flag.phpstring.strip_tags功能:去除字符串中的 HTML 和 PHP 标签。示例:php://filter/read=string.strip_tags/resource=flag.php
二、转换过滤器convert.base64-encode功能:对数据进行 Base64 编码。示例:php://filter/read=convert.base64-encode/resource=flag.phpconvert.base64-decode功能:对数据进行 Base64 解码。convert.quoted-printable-encode功能:对数据进行 Quoted-Printable 编码。convert.quoted-printable-decode功能:对数据进行 Quoted-Printable 解码。convert.iconv.*功能:将数据流的内容按照指定字符编码进行转换。使用格式:convert.iconv.<input-encoding>.<output-encoding> 或 convert.iconv.<input-encoding>/<output-encoding>示例:将 flag.php 的内容从 UCS-2LE 编码转换为 UCS-2BE 编码:php://filter/convert.iconv.UCS-2LE.UCS-2BE/resource=flag.php
三、压缩过滤器zlib.deflate功能:对数据进行 zlib 压缩。zlib.inflate功能:对数据进行 zlib 解压。bzip2.compress功能:对数据进行 bzip2 压缩。bzip2.decompress功能:对数据进行 bzip2 解压。
四、加密过滤器mcrypt.* 和 mdecrypt.*功能:使用 libmcrypt 提供对称的加密和解密。示例格式:mcrypt.ciphername,其中 ciphername 是密码的名字,将被传递给 mcrypt_module_open()。注意:这些过滤器的使用可能需要 PHP 的 mcrypt 扩展库支持,并且需要指定加密算法和模式等参数。然而,需要注意的是,mcrypt 扩展在 PHP 7.1.0 中已经被废弃,并在 PHP 7.2.0 中被完全移除。因此,在现代的 PHP 环境中,建议使用其他加密扩展,如 OpenSSL。
- 题目:web 115
1. 题目:
2. 解题思路:分析题目发现题目要求我们get一个参数,num,要求这个函数不是数字—!is_numeric(),去掉首位空白符得到的不强等于36,通过filter函数==38,在进行比较,如果弱等于36,那么输出flag,于是我们构造payload:首先第一个函数is_numeric通过空白符就可以绕过,第二个函数trim函数处理的范围包括: 对于 trim() 函数会去除空格( %20)、制表符(%09)、换行符(%0a)、回车符(%0d)、空字节符(%00)、垂直制表符(%0b),不包括换页符(%0c)。由于这里是强比较,不会进行类型转换,在trim函数后,其与‘36’不强相等:;其次,由于这些都不在filter函数内,于是乎,可以绕过过滤,得到flag:
3. 知识点:强类型比较时候不进行类型转换,直接进行的是字符串的比较
相关文章:

CTFSHOW-WEB入门-PHP特性109-115
题目:web 109 1. 题目: 2. 解题思路:题目要求获得两个参数,v1 v2,if语句中的意思是要求两个参数都包含字母,条件满足的话,执行 echo new 类名(方法()…...
模糊综合评价法:原理、步骤与MATLAB实现
引言 在复杂决策场景中,评价对象往往涉及多个相互关联的模糊因素。模糊综合评价法通过建立模糊关系矩阵,结合权重分配与合成算子,实现对多因素系统的科学评价。本文详细讲解模糊综合评价法的数学原理、操作步骤,并辅以MATLAB代码…...

【数据结构-红黑树】
文章目录 红黑树红黑树介绍红黑树的五个基本性质红黑树的平衡原理红黑树的操作红黑树的操作 代码实现节点实现插入和查询操作 红黑树 红黑树介绍 红黑树(Red-Black Tree)是一种自平衡的二叉查找树(Binary Search Tree, BST)&…...

【STM32】舵机SG90
1.舵机原理 舵机内部有一个电位器,当转轴随电机旋转,电位器的电压会发生改变,电压会带动转一定的角度,舵机中的控制板就会电位器输出的电压所代表的角度,与输入的PWM所代表的角度进行比较,从而得出一个旋转…...

【Linux】Socket编程—TCP
🔥 个人主页:大耳朵土土垚 🔥 所属专栏:Linux系统编程 这里将会不定期更新有关Linux的内容,欢迎大家点赞,收藏,评论🥳🥳🎉🎉🎉 文章目…...

c++11 for auto不定参数
数量不定的模板参数。参数分为一个和一包两部分。 冒号的左边声明一个变量。右手边必须是一个容器。从容器(某种数据结构)中找出每一个元素设置到左边这个变量。11之前可以用容器的迭代器去取数据。或者标准库里的foreach...
C#+redis实现消息队列的发布订阅功能
代码 参考c#redis stream实现消息队列以及ack机制文章的思路,实现 SubscribeAttribute.cs using System;namespace DotnetQueue.Attributes {/// <summary>/// 订阅特性/// </summary>[AttributeUsage(AttributeTargets.Method, Inherited false)]pu…...
Docker容器基本操作
容器的基本操作 操作命令(全)命令(简)容器的创建docker container run <image name>docker run <image name>容器的列出(up)docker container lsdocker ps容器的列出(up和exit&…...

从无序到有序:上北智信通过深度数据分析改善会议室资源配置
当前企业普遍面临会议室资源管理难题,预约机制不完善和临时会议多导致资源调度不合理,既有空置又有过度拥挤现象。 针对上述问题,上北智信采用了专业数据分析手段,巧妙融合楼层平面图、环形图、折线图和柱形图等多种可视化工具&a…...
总结:使用JDK原生HttpsURLConnection,封装HttpsUtil工具类,加载自定义证书验证,忽略ssl证书验证
总结:使用JDK原生HttpsURLConnection,封装HttpsUtil工具类,加载自定义证书验证,忽略ssl证书验证 一HttpsUtil工具类二SSLUtil工具类 一HttpsUtil工具类 package com.example.util;import javax.net.ssl.HttpsURLConnection; impo…...

重新定义人机关系边界,Soul以AI社交构建多元社交元宇宙
近年来,AI Native应用的兴起已逐渐成为大众关注的焦点。在此背景下,Soul App的首席技术官陶明在极客公园IF2025创新大会上,发表了一场主题为“人机关系的新边界,Soul如何定义AI社交未来”的演讲。他分享了Soul在人工智能领域内的最新技术进展和战略规划,同时也将Soul社交元宇宙…...
HTTP 参数污染(HPP)详解
1. 什么是 HTTP 参数污染(HPP)? HTTP 参数污染(HTTP Parameter Pollution,简称 HPP)是一种 Web 应用攻击技术,攻击者通过在 HTTP 请求中注入多个相同的参数来绕过安全控制或篡改应用逻辑&#…...
阿里云轻量服务器docker部署nginx
拉取nginx docker镜像 sudo docker pull nginx创建以下挂载目录及文件 用户目录下:conf html logs conf: conf.d nginx.conf html: index.html conf.d: default.confnginx.conf添加文件内容 events {worker_connections 1024; }http {include /etc/ngi…...
(萌新入门)如何从起步阶段开始学习STM32 —— 我应该学习HAL库还是寄存器库?
概念 笔者下面需要介绍的是库寄存器和HAL库两个重要的概念,在各位看完之后,需要决定自己的学习路线到底是学习HAL呢?还是寄存器呢?还是两者都学习呢? 库寄存器 库寄存器就是简单的封装了我们对寄存器的操作…...
Windchill开发-电子仓相关对象信息查询SQL
电子仓相关对象信息查询SQL 一、说明二、数据表信息三、数据表字段说明3.1 HOLDERTOCONTENT3.1.1 对象类型3.1.2 存储类型 3.2 APPLICATIONDATA3.2.1 类别3.2.2 与对象的角色关系3.2.3 存储方式3.2.4 其他字段 3.3 URLDATA3.4 STREAMDATA3.5 FVITEM3.6 FVMOUNT3.6.1 安装状态3.…...
MySQL 数据库定时任务及进阶学习
一、引言 在当今数字化时代,数据管理的高效性和自动化至关重要。MySQL 作为一款广泛应用的开源关系型数据库管理系统,提供了强大的功能来满足各种数据处理需求。其中,定时任务执行功能对于自动化数据操作、维护数据完整性以及优化系统性能具…...
DeepSeek教unity------MessagePack-01
中文:GitCode - 全球开发者的开源社区,开源代码托管平台 MessagePack是C# 的极速 MessagePack 序列化器。它比 MsgPack-Cli 快 10 倍,并且性能超过其他 C# 序列化器。MessagePack for C# 还内置支持 LZ4 压缩——一种极其快速的压缩算法。性能在诸如游戏…...

知识拓展:Python序列化模块 marshal 模块详解
Python marshal 模块学习笔记 1. 简介 marshal 是 Python 的内部序列化格式,主要用于序列化和反序列化 Python 对象。它是 Python 字节码(.pyc文件)使用的序列化格式,比 pickle 更原始和受限,但也更快速和安全。 http…...

leetcode 2684. 矩阵中移动的最大次数
题目如下 数据范围 本题使用常规动态规划就行,不过要注意由于有三个转移的方向,所以我们对dp数组的遍历应该是从上到下 从左到右即按列优先遍历。通过代码 class Solution { public:int maxMoves(vector<vector<int>>& grid) {int …...

机械学习基础-6.更多分类-数据建模与机械智能课程自留
data modeling and machine intelligence - FURTHER CLASSIFICATION 混淆矩阵评估指标:灵敏度和特异度ROC 曲线文字说明部分 AUC:ROC曲线下面积 支持向量机思路补充背景知识点积超平面(HYPERPLANES超平面的法向量到超平面的最小距离数据集与超…...

C++初阶-list的底层
目录 1.std::list实现的所有代码 2.list的简单介绍 2.1实现list的类 2.2_list_iterator的实现 2.2.1_list_iterator实现的原因和好处 2.2.2_list_iterator实现 2.3_list_node的实现 2.3.1. 避免递归的模板依赖 2.3.2. 内存布局一致性 2.3.3. 类型安全的替代方案 2.3.…...
Pinocchio 库详解及其在足式机器人上的应用
Pinocchio 库详解及其在足式机器人上的应用 Pinocchio (Pinocchio is not only a nose) 是一个开源的 C 库,专门用于快速计算机器人模型的正向运动学、逆向运动学、雅可比矩阵、动力学和动力学导数。它主要关注效率和准确性,并提供了一个通用的框架&…...
JavaScript 数据类型详解
JavaScript 数据类型详解 JavaScript 数据类型分为 原始类型(Primitive) 和 对象类型(Object) 两大类,共 8 种(ES11): 一、原始类型(7种) 1. undefined 定…...
jmeter聚合报告中参数详解
sample、average、min、max、90%line、95%line,99%line、Error错误率、吞吐量Thoughput、KB/sec每秒传输的数据量 sample(样本数) 表示测试中发送的请求数量,即测试执行了多少次请求。 单位,以个或者次数表示。 示例:…...
NPOI操作EXCEL文件 ——CAD C# 二次开发
缺点:dll.版本容易加载错误。CAD加载插件时,没有加载所有类库。插件运行过程中用到某个类库,会从CAD的安装目录找,找不到就报错了。 【方案2】让CAD在加载过程中把类库加载到内存 【方案3】是发现缺少了哪个库,就用插件程序加载进…...
第7篇:中间件全链路监控与 SQL 性能分析实践
7.1 章节导读 在构建数据库中间件的过程中,可观测性 和 性能分析 是保障系统稳定性与可维护性的核心能力。 特别是在复杂分布式场景中,必须做到: 🔍 追踪每一条 SQL 的生命周期(从入口到数据库执行)&#…...

MyBatis中关于缓存的理解
MyBatis缓存 MyBatis系统当中默认定义两级缓存:一级缓存、二级缓存 默认情况下,只有一级缓存开启(sqlSession级别的缓存)二级缓存需要手动开启配置,需要局域namespace级别的缓存 一级缓存(本地缓存&#…...

goreplay
1.github地址 https://github.com/buger/goreplay 2.简单介绍 GoReplay 是一个开源的网络监控工具,可以记录用户的实时流量并将其用于镜像、负载测试、监控和详细分析。 3.出现背景 随着应用程序的增长,测试它所需的工作量也会呈指数级增长。GoRepl…...

C++中vector类型的介绍和使用
文章目录 一、vector 类型的简介1.1 基本介绍1.2 常见用法示例1.3 常见成员函数简表 二、vector 数据的插入2.1 push_back() —— 在尾部插入一个元素2.2 emplace_back() —— 在尾部“就地”构造对象2.3 insert() —— 在任意位置插入一个或多个元素2.4 emplace() —— 在任意…...
HTML中各种标签的作用
一、HTML文件主要标签结构及说明 1. <!DOCTYPE html> 作用:声明文档类型,告知浏览器这是 HTML5 文档。 必须:是。 2. <html lang“zh”>. </html> 作用:包裹整个网页内容,lang"z…...