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

CTF-PWN: WEB_and_PWN [第一届“吾杯”网络安全技能大赛 Calculator] 赛后学习(不会)

附件

calculate.html

<!DOCTYPE html>
<html lang="en">
<head><!-- 设置字符编码为 UTF-8,支持多语言字符集 --><meta charset="UTF-8"><!-- 设置响应式视图,确保页面在不同设备上自适应显示 --><meta name="viewport" content="width=device-width, initial-scale=1.0"><!-- 网页标题,显示在浏览器标签栏 --><title>Calculation Result</title>
</head>
<body><!-- 页面主标题 --><h1>Calculation Result</h1><!-- 显示计算结果的段落,默认显示 'Loading...' --><p id="result">Loading...</p><!-- 返回计算器页面的链接 --><a href="/index.html">Back to Calculator</a>
</body>
</html>

index.html

<!DOCTYPE html>
<html lang="en">
<head><!-- 设置字符编码为 UTF-8,支持多语言字符集 --><meta charset="UTF-8"><!-- 设置响应式视图,确保页面在不同设备上自适应显示 --><meta name="viewport" content="width=device-width, initial-scale=1.0"><!-- 网页标题,显示在浏览器标签栏 --><title>Calculator</title>
</head>
<body><!-- 页面主标题 --><h1>Simple Calculator</h1><!-- 表单用于计算操作,提交方式为 GET 请求 --><form action="/calculate.html" method="get"><!-- 输入框:第一个数字,带有标签 --><label for="a">Number 1:</label><input type="number" id="a" name="a" required><br><br><!-- 输入框:第二个数字,带有标签 --><label for="b">Number 2:</label><input type="number" id="b" name="b" required><br><br><!-- 下拉框:选择运算符,支持加法、减法、乘法和除法 --><label for="op">Operation:</label><select id="op" name="op" required><option value="+">+</option><option value="-">-</option><option value="*">*</option><option value="/">/</option></select><br><br><!-- 提交按钮,触发计算操作 --><button type="submit">Calculate</button></form>
</body>
</html>

保护

❯ checksec --file=./pwn
[*] '/home/a5rz/Desktop/pwn/file/pwn'Arch:       amd64-64-littleRELRO:      Full RELROStack:      No canary foundNX:         NX unknown - GNU_STACK missingPIE:        PIE enabledStack:      ExecutableRWX:        Has RWX segmentsSHSTK:      EnabledIBT:        Enabled

sudo运行

❯ sudo ./pwn
Server started on port 80

此html向服务器发送了这样的东西

D:/calculate.html?a=1&b=1&op=%2B

a是数字1,b是数字2,op是选择加减乘除

请添加图片描述

找到调用Page not found!的地方

__int64 __fastcall sub_1843(unsigned int a1, const char *a2) {// 本地变量定义,用于存储各种数据size_t v3; // 用于存储缓冲区的长度size_t v4; // 用于存储 HTTP 响应的长度size_t v5; // 用于存储 HTTP 错误响应的长度size_t v6; // 用于存储页面未找到的响应长度char s[512]; // 用于存储处理过的查询字符串char buf[256]; // 用于存储 HTTP 响应内容char nptr[32]; // 用于存储第一个参数(a)char v10; // 用于存储操作符(+、-、*、/)char v11[47]; // 用于存储第二个参数(b)char v12; // 用于存储操作符__int64 v13; // 用于存储第一个数字(a)__int64 v14; // 用于存储第二个数字(b)char *v15; // 用于指向查询字符串中的位置__int64 v16; // 用于存储计算结果// 判断请求的 URL 是否是“GET /index.html”或“GET / ”,如果是,则返回一个 HTML 文件if ( !strncmp(a2, "GET /index.html", 0xFuLL) || !strncmp(a2, "GET / ", 6uLL) ) {return sub_1532(a1, "index.html");}// 如果请求 URL 是“GET /calculate.html?”,则进一步处理计算逻辑if ( !strncmp(a2, "GET /calculate.html?", 0x14uLL) ) {// 找到查询字符串("?" 后面的部分)v15 = strchr(a2, 63); // 63 是 "?" 的 ASCII 值if ( v15 ) {// 从查询字符串开始处提取数据snprintf(s, 0x200uLL, "%s", ++v15); // 复制查询字符串到 ssub_1744(s); // 可能是对字符串 s 进行某些处理(具体实现不明)// 清空缓存nptr[0] = 0;v11[0] = 0;v10 = 0;// 解析查询字符串中的参数if ( (unsigned int)__isoc99_sscanf(s, "a=%31[^&]&b=%31[^&]&op=%256s", nptr, v11, &v10) == 3 ) {// 将参数转换为整数v14 = atoll(nptr); // 将第一个参数(a)转换为长整型v13 = atoll(v11); // 将第二个参数(b)转换为长整型v12 = v10; // 将操作符保存到 v12v16 = 0LL; // 默认结果为 0// 根据操作符执行相应的计算if ( v10 == 43 ) { // 如果操作符是 "+",进行加法v16 = v14 + v13;} else if ( v12 == 45 ) { // 如果操作符是 "-",进行减法v16 = v14 - v13;} else if ( v12 == 42 ) { // 如果操作符是 "*",进行乘法v16 = v13 * v14;} else if ( v12 == 47 && v13 ) { // 如果操作符是 "/" 且第二个数不为零,进行除法v16 = v14 / v13;} else {v16 = 0LL; // 如果操作符无效,结果为 0}// 生成成功响应,包含计算结果snprintf(buf, 0x100uLL, "HTTP/1.1 200 OK\r\n""Content-Type: text/html\r\n""\r\n""<!DOCTYPE html><html><head><title>Result</title></head><body><h1>Result: %lld</h1><a href=\"/index.html\">Back"" to Calculator</a></body></html>", v16);// 获取响应内容的长度v3 = strlen(buf);// 发送响应send(a1, buf, v3, 0);return sub_1679(v16); // 可能是处理计算结果的函数(具体实现不明)} else {// 如果查询参数不正确,返回 400 错误响应snprintf(buf, 0x100uLL, "HTTP/1.1 400 Bad Request\r\n\r\nInvalid query!");v4 = strlen(buf);return send(a1, buf, v4, 0);}} else {// 如果没有查询字符串,返回 400 错误响应snprintf(buf, 0x100uLL, "HTTP/1.1 400 Bad Request\r\n\r\nMissing query!");v5 = strlen(buf);return send(a1, buf, v5, 0);}} else {// 如果请求的 URL 不匹配,返回 404 错误响应snprintf(buf, 0x100uLL, "HTTP/1.1 404 Not Found\r\n\r\nPage not found!");v6 = strlen(buf);return send(a1, buf, v6, 0);}
}

加上calculate.html

请添加图片描述

patch反调试!(这东西卡了我好久,没注意他,我一直以为调试不上是gdb的问题)

请添加图片描述

发现一个非常奇怪的函数

__int64 __fastcall sub_1679(__int64 a1)
{// 定义一个指向无参函数返回__int64类型的指针 v2__int64 (*v2)(void); // [rsp+28h] [rbp-8h]// 调用 mmap 函数映射一个 8 字节的内存区域// mmap(0LL, 8uLL, 7, 34, -1, 0LL) 中的参数:// 0LL        - 映射地址从操作系统自动选择// 8uLL       - 映射的大小为 8 字节// 7          - 映射保护标志 (PROT_READ | PROT_WRITE)// 34         - 映射映射类型(MAP_ANONYMOUS | MAP_PRIVATE)// -1         - 不关联任何文件(-1 表示匿名映射)// 0LL        - 映射偏移量为 0v2 = (__int64 (*)(void))mmap(0LL, 8uLL, 7, 34, -1, 0LL);// 检查 mmap 是否成功,如果返回值为 -1,表示映射失败if (v2 == (__int64 (*)(void))-1LL){perror("mmap failed"); // 输出错误信息exit(1); // 退出程序,返回错误代码 1}// 将传入的参数 a1 存储在映射区域的起始位置*(_QWORD *)v2 = a1;// 调用映射区域开始处的函数并返回其结果// v2 是一个指向函数的指针,因此 v2() 表示调用此函数并返回其返回值return v2(); // 调用并返回函数指针 v2 指向的函数结果
}

再加上栈可执行,估计出题人是想让我们利用这里,这个函数能执行任意指针

跟上一道题一样不给基地址?这题到底怎么做的爆破吗?

相关文章:

CTF-PWN: WEB_and_PWN [第一届“吾杯”网络安全技能大赛 Calculator] 赛后学习(不会)

附件 calculate.html <!DOCTYPE html> <html lang"en"> <head><!-- 设置字符编码为 UTF-8&#xff0c;支持多语言字符集 --><meta charset"UTF-8"><!-- 设置响应式视图&#xff0c;确保页面在不同设备上自适应显示 --&…...

解决Jupyter Notebook无法转化为Pdf的问题(基于Typora非常实用)

笔者在完成各项作业和做笔记时&#xff0c;经常用到jupyter notebook&#xff1b;其因为可以同时运行python并提供格式化的数字公式的输入方式&#xff0c;得到了广大用户的喜爱。 当我们想要将.ipynb文件导出为pdf时&#xff0c;有两种常用方法。 1.Ctrlp 2.通过File ->…...

矩阵转置        ‌‍‎‏

矩阵转置 C语言代码C 语言代码Java语言代码Python语言代码 &#x1f490;The Begin&#x1f490;点点关注&#xff0c;收藏不迷路&#x1f490; 输入一个n行m列的矩阵A&#xff0c;输出它的转置 A T A^T AT。 输入 第一行包含两个整数n和m&#xff0c;表示矩阵A的行数和列数。…...

【阅读笔记】Three ways ChatGPT helps me in my academic writing

Three ways ChatGPT helps me in my academic writing 论文地址 关于GPT进行润色的文章&#xff0c;摘取了里面的提示词做个记录。 1. Polishing academic writing&#xff08;学术润色&#xff09; 模板&#xff1a;I’m writing a paper on [topic] for a leading [discip…...

python学习笔记15 python中的类

上一篇我们介绍了python中的库 &#xff0c;学习了一些常见的内置库。详细内容可点击–>python学习笔记14 python中的库&#xff0c;常见的内置库&#xff08;random、hashlib、json、时间、os&#xff09; 这一篇我们来看一下python中的类 创建一个类 class 类的名称():de…...

3D数字化革新,探索博物馆的正确打开新方式!

3D数字化的发展&#xff0c;让博物馆也焕发新机&#xff0c;比如江苏省的“云上博物”&#xff0c;汇聚江苏全省博物馆展陈资源&#xff0c;采取线上展示和线下体验两种方式进行呈现的数字展览项目。在线上&#xff0c;用户可以通过H5或小程序进入“云上博物”数字展览空间&…...

金融数学在股市交易中的具体应用

### 1. 风险管理 - **VaR&#xff08;在险价值&#xff09;**: VaR是衡量投资组合潜在损失的指标。例如&#xff0c;如果一个投资组合的VaR为100万元&#xff0c;置信水平为95%&#xff0c;这意味着在未来的一个交易日内&#xff0c;有95%的可能性该投资组合的损失不会超过100…...

Springboot注解

什么是Spring Boot 注解 Spring Boot 注解是 Spring Boot 框架中的核心部分&#xff0c;它们用于简化配置和执行特定的编程任务。这些注解通常分为几个类别&#xff0c;包括用于 MVC 层的类注解、依赖注入注解、Web 开发常用注解、Spring Boot 常用注解、面向切面编程&#xf…...

CSS3 布局样式及其应用

深入探讨 CSS3 布局样式及其应用 引言 在现代网页设计中&#xff0c;CSS&#xff08;层叠样式表&#xff09;不仅是设计视觉样式的工具&#xff0c;也是布局的核心技术。CSS3引入了新的布局模型&#xff0c;其中Flexbox与Grid布局在满足复杂布局需求方面表现尤为出色。本文将…...

工业机器视觉-基于深度学习的水表表盘读数识别

字轮数字识别、指针读数识别&#xff08;角度换算&#xff09;、根据指针角度进行读数修正、根据最高位指针(x0.1)读数对字轮数字进行修正、得到最终读数。 基于深度学习的目标检测技术和OpenCV图像处理技术&#xff0c;可识别所有类型的表盘机械读数。...

kafka admin client 如何计算kafka发送速度

文章目录 方法 1&#xff1a;使用 AdminClient 获取消息数量示例代码&#xff1a;计算 Kafka 生产速度代码解释&#xff1a;解释&#xff1a;结果示例&#xff1a;方法 2&#xff1a;使用 Kafka JMX 监控JMX 指标&#xff1a; 总结&#xff1a; 要使用 Kafka Admin Client 来计…...

Ubuntu20.04 配置虚拟显示器和切回物理显示器

1、安装软件&#xff0c;用中软安装虚拟显示器软件 sudo apt-get install xserver-xorg-core-hwe-18.04 sudo apt-get install xserver-xorg-video-dummy2、添加配置文件 进入 /usr/share/X11/xorg.conf.d/ 文件夹下创建xorg.conf文件 # 创建xorg.conf文件 touch xorg.conf …...

【解决pycharm下site-packages文件标记为红色的问题】

怎么解决pycharm下site-packages文件标记为红色的问题 这是一个pycharm无法识别本地site-packages问题答案解释器设置路径如下&#xff1a; 这是一个pycharm无法识别本地site-packages问题 最近正在搭建一个python3requestsunittestHTMLTestRunner接口测试框架&#xff0c;发现…...

力扣-图论-2【算法学习day.52】

前言 ###我做这类文章一个重要的目的还是给正在学习的大家提供方向和记录学习过程&#xff08;例如想要掌握基础用法&#xff0c;该刷哪些题&#xff1f;&#xff09;我的解析也不会做的非常详细&#xff0c;只会提供思路和一些关键点&#xff0c;力扣上的大佬们的题解质量是非…...

项目-02-数学学院后台项目开发过程中的问题总结

目录 一、后台&#xff08;pc端&#xff0c;vue2&#xff09;1. dialog对话框被黑色蒙层盖住2. 将前端表格导出为word文档3. 在线查看、下载 .docx、.doc、.pdf文档 一、后台&#xff08;pc端&#xff0c;vue2&#xff09; 1. dialog对话框被黑色蒙层盖住 问题&#xff1a; d…...

数据结构-排序

目录 一、冒泡排序 二、选择排序 三、插入排序 四、希尔排序 五、堆排 六、快速排序 1、hoare&#xff1a; 2、挖坑法&#xff1a; 3、前后指针法&#xff1a; 4、快排非递归 七、归并排序 1、递归写法&#xff1a; 2、非递归写法&#xff1a; 八、计数排序 九、排…...

神经网络中常见的激活函数Sigmoid、Tanh和ReLU

激活函数在神经网络中起着至关重要的作用&#xff0c;它们决定了神经元的输出是否应该被激活以及如何非线性地转换输入信号。不同的激活函数适用于不同的场景&#xff0c;选择合适的激活函数可以显著影响模型的性能和训练效率。以下是三种常见的激活函数&#xff1a;Sigmoid、T…...

[报错] Error: PostCSS plugin autoprefixer requires PostCSS 8 问题解决办法

报错&#xff1a;Error: PostCSS plugin autoprefixer requires PostCSS 8 原因&#xff1a;autoprefixer版本过高 解决方案&#xff1a; 降低autoprefixer版本 执行&#xff1a;npm i postcss-loader autoprefixer8.0.0 参考&#xff1a; Error: PostCSS plugin autoprefix…...

多线程---创建及方法

*线程创建的方式&#xff1a; 1.继承Thread类&#xff0c;重写run方法。 2.实现Runnable接口&#xff0c;重写run方法。 实际这两个run方法都重写的是Runnable中的run方法 简化方法&#xff1a; 1.匿名内部类创建Thread 子类对象 Thread thread new Thread(){Overridepub…...

C++设计模式之单例模式

动机 在软件系统中&#xff0c;经常有一些特殊的类&#xff0c;必须保证它们在系统中只存在一个实例&#xff0c;才能确保它们的逻辑正确性&#xff0c;以及良好的效率。 如何绕过常规的构造器&#xff0c;提供一种机制来保证一个类只有一个实例&#xff1f; 这应该是类设计…...

给你一个整数n, 判断它是否是素数。注意1不是素数。:JAVA

链接&#xff1a;登录—专业IT笔试面试备考平台_牛客网 来源&#xff1a;牛客网 题目描述 给你一个整数n, 判断它是否是素数。注意1不是素数。 输入描述: 第一行输入一个整数T,表示需要判断的数的个数接下来T行每行一个整数n,表示需要判断的数。1<n<1e5,1<T<…...

Java项目实战II基于微信小程序的电子竞技信息交流平台的设计与实现(开发文档+数据库+源码)

目录 一、前言 二、技术介绍 三、系统实现 四、核心代码 五、源码获取 全栈码农以及毕业设计实战开发&#xff0c;CSDN平台Java领域新星创作者&#xff0c;专注于大学生项目实战开发、讲解和毕业答疑辅导。获取源码联系方式请查看文末 一、前言 随着互联网技术的飞速发展…...

temu登录接口逆向分析(含Py纯算)

文章目录 1. 写在前面2. 接口分析3. 算法还原 【&#x1f3e0;作者主页】&#xff1a;吴秋霖 【&#x1f4bc;作者介绍】&#xff1a;擅长爬虫与JS加密逆向分析&#xff01;Python领域优质创作者、CSDN博客专家、阿里云博客专家、华为云享专家。一路走来长期坚守并致力于Python…...

Java ArrayList 详解

Java ArrayList 详解 ArrayList 是 Java 集合框架&#xff08;Collection Framework&#xff09;中最常用的类之一&#xff0c;是一种基于动态数组的数据结构&#xff0c;属于 List 接口的实现类。它允许存储重复的元素&#xff0c;有序&#xff0c;支持随机访问&#xff0c;且…...

CTF之密码学(仓颉编码)

一、仓颉码&#xff08;用于建立中文索引&#xff09; 定义与目标&#xff1a; 仓颉码是为了建立中文的索引观念而设计的一种编码方式。其主要目标是方便对中文资料或程式进行索引功能的处理。 工作原理&#xff1a; 仓颉码的索引以ASCII的字符码为基准&#xff0c;但在内部会转…...

OpenCV的圆形检测‌HoughCircles

HoughCircles 函数是 OpenCV 库中用于在灰度图像中检测圆的函数,它基于霍夫变换(Hough Transform)的一种变体——梯度霍夫变换(HOUGH_GRADIENT)函数原型如下: void HoughCircles( InputArray image, OutputArray circles,int method, double dp, double minDist,double …...

Latex 英文双栏排版时,摘要和引言之间的距离

目标&#xff1a;解决这个间隔 打开“cas-common.sty" 搜索“\NewDocumentCommand \dashrule" 本来是两个 m m 变成 m m m然后是增加下面这个代码&#xff0c;其他地方不动 \skip_vertical:n {#4} 搜索”MaketitleBox“和“LongMaketitleBox ” 本来的代码应该…...

AD学习笔记·空白工程的创建

编写不易&#xff0c;禁止搬运&#xff0c;仅供学习&#xff0c;感谢理解 序言 本文参考B站&#xff0c;凡亿教育&#xff0c;连接放在最后。 创建工程文件 在使用AD这个软件的电路板设计中&#xff0c;有很多的地方跟嘉立创eda还是有不一样的地方&#xff0c;其中一个地方就…...

非球面加工领域的佼佼者:倚光科技

在光学领域&#xff0c;非球面加工技术宛如一颗璀璨的明珠&#xff0c;以其独特的优势和广泛的应用&#xff0c;引领着光学元件制造的新潮流。 非球面透镜&#xff0c;其表面曲率半径从中心到边缘是变化的&#xff0c;这使得它在光学系统中具有诸多显著优势。首先&#xff0c;…...

Git分布式版本控制工具 Git基本概念、Git工作流程、Git常用命令、Git远程仓库、IDEA操作Git

目录 ​​​​​​ 1.Git基本概念 1.1 概述 1.1.1 开发中的实际场景 1.1.2 版本控制器的方式 1.1.2.1 集中式版本控制工具(SVN) 1.1.2.2 分布式版本控制工具(Git) 2.概述git工作流程 3.Git常用命令 3.1 Git环境配置 3.1.1 下载与安装 3.1.2 基本配置 3.1.3 为常用指令配置别名&…...

Spring 容器管理 Bean

Bean是什么 Bean 是指 Java 中的可重用软件组件,容器会根据提供的元数据来创建和管理这些 Bean,也包括它们之间的依赖关系。Spring 容器对 Bean 并没有太多的要求,无须实现特定接口或依赖特定库,只要是最普通的 Java 对象即可,这类对象也被称为 POJO(Plain Old Java Obj…...

Spring 容器 详解

Spring 容器详解 Spring 容器 是 Spring 框架的核心组件之一&#xff0c;它负责创建和管理应用程序中的 Bean&#xff08;对象&#xff09;以及处理它们之间的依赖关系。容器通过控制反转&#xff08;IoC&#xff09;和依赖注入&#xff08;DI&#xff09;实现对象的生命周期管…...

ubuntu环境下安装electron环境,并快速打包

1.配置镜像源 关闭防火墙&#xff0c;命令&#xff1a;sudo ufw disable 1.1配置国内镜像源&#xff1a; vim /etc/apt/source.list deb https://mirrors.aliyun.com/ubuntu/ jammy main restricted universe multiversedeb-src https://mirrors.aliyun.com/ubuntu/ jammy main…...

Yeeco成长型一体化数智赋能平台:科技矩阵重塑企业数字生态

随着科技的飞速发展&#xff0c;我们正在步入一个被称为“数智化时代”的新时代。在这个时代中&#xff0c;数据处理和分析的能力被提升到一个前所未有的高度&#xff0c;而这种变化背后的重要推动力量就是各种新兴的技术趋势。 为了在激烈的市场竞争中脱颖而出&#xff0c;Yee…...

DP、CP、Mn是什么?有什么关系?双径节齿轮又是什么?

有一些刚刚接触齿轮的小伙伴们&#xff0c;经常听到和齿轮相关的是Mn这个代号&#xff0c;有时候拿到图纸会碰到DP和CP的图纸&#xff0c;今天就简单数一数他们三个的关系&#xff1a; 径节DP 齿轮的节距定义为两个相邻齿轮齿上两个相同点之间的距离。在理想情况下&#xff0c…...

Python 中的生成器是什么?

生成器&#xff08;Generator&#xff09;是Python中一种特殊的迭代器&#xff0c;它允许你逐步生成一系列值&#xff0c;而不是一次性创建整个列表或集合。 这在处理大型数据集或流式数据时特别有用&#xff0c;因为你可以逐个处理元素&#xff0c;而不需要将所有元素加载到内…...

如何参加华为欧拉考试?

华为欧拉考试主要针对的是华为欧拉&#xff08;EulerOS/openEuler&#xff09;操作系统的认证考试&#xff0c;这一认证体系旨在培养和认证具备基于欧拉操作系统进行企业级应用运行基础环境搭建、管理和调测能力的工程师以及云计算架构师。以下是对华为欧拉考试的详细介绍&…...

基于STM32设计的智能家居控制系统(华为云IOT)_275

文章目录 一、前言1.1 项目介绍【1】项目开发背景【2】设计实现的功能【3】项目硬件模块组成【4】设计意义【5】国内外研究现状【6】摘要1.2 设计思路1.3 系统功能总结1.4 开发工具的选择【1】设备端开发【2】上位机开发1.5 参考文献1.6 系统框架图1.7 系统原理图1.8 实物图1.9…...

2024年第七届传智杯程序设计挑战赛第一场初赛题解

文章目录 2024年第七届传智杯程序设计挑战赛初赛第一场A-吃糖果(B组、C组)B-汤姆和杰瑞(A组、C组)C-游游的重组偶数(A组、B组、C组)D-开心还是难过(B组、C组)E-小欧的平面连线(A组、B组、C组)F-小红的四子棋(A组、B组、C组)G-小红的数组操作(A组、B组)H-游游的不相邻取数(A组) …...

iOS视图控制器的生命周期及各阶段的作用

iOS视图控制器&#xff08;UIViewController&#xff09;的生命周期是指从它被创建到最终被销毁的过程中所经历的一系列阶段。每个阶段都有其特定的作用和执行时机&#xff0c;这些阶段和作用对于开发高效、稳定的iOS应用至关重要。以下是iOS视图控制器的生命周期及其各个阶段的…...

stm32上电不能启动什么原因

STM32上电不能启动可能由多种原因造成,以下是一些常见的原因及解决方法: 一、软件原因 程序错误: 程序可能存在死循环、堆栈溢出、指针指向不允许的内存空间等问题。 解决方法:使用调试工具进行调试,检查程序流程,定位并修复错误。 时钟问题: 时钟切换失败或外部时钟源…...

【后端面试总结】golang channel深入理解

在Go语言中&#xff0c;Channel是一种用于在goroutine之间进行通信和同步的重要机制。它提供了一种安全、类型安全的方式来传递数据&#xff0c;使得并发编程变得更加直观和简单。本文将详细介绍Golang中Channel的基本概念、创建与关闭、发送与接收操作&#xff0c;以及相关的使…...

lobeChat安装

一、安装Node.js version > v18.17.0 二、下载 cd F:\AITOOLS\LobeChat git clone https://github.com/lobehub/lobe-chat.git &#xff08;下载要是失败就手动下&#xff1a;https://codeload.github.com/lobehub/lobe-chat/zip/refs/heads/main&#xff09; npm install …...

OpenCV 简介与安装方法

大家好啊&#xff0c;我是董董灿。 如果你在做计算机视觉相关的工作&#xff0c;肯定少不了使用 OpenCV 库。 在《计算机视觉专栏》的传统计算机视觉部分&#xff0c;我曾经使用 OpenCV 进行了很多图像的处理&#xff0c;比如边缘检测。 刚好最近在整理一份文稿&#xff0c;…...

力扣刷题TOP101:14.BM16 删除有序链表中重复的元素-II

目录&#xff1a; 目的 思路 复杂度 记忆秘诀 python代码 目的 1→1→2→3→3 删除重复后变成2。 思路 这个任务是删除链表里重复的节点包含本身。可以看成是一个抽奖活动的系统升级。某人通过多种方式报名&#xff08;节点不同&#xff09;&#xff0c;后台数据检测到这些…...

Hadoop生态圈框架部署 伪集群版(四)- Zookeeper单机部署

文章目录 前言一、Zookeeper单机部署&#xff08;手动部署&#xff09;1. 下载Zookeeper安装包到Linux2. 解压zookeeper安装包3. 配置zookeeper配置文件4. 配置Zookeeper系统环境变量5. 启动Zookeeper6. 停止Zookeeper在这里插入图片描述 注意 前言 本文将详细介绍Zookeeper的…...

【Linux】文件

声明&#xff1a;以下内容均学习自《Linux就该这么学》一书 1、文件权限及归属 对目录文件来说&#xff0c;“可读”表示能够读取目录内的文件列表&#xff1b;“可写”表示能够在目录内新增、删除、重命名文件&#xff1b;“可执行”表示能够进入该目录。 文件类型区分 -普通…...

仿真键盘输入遇到Edge环境不识别 回车符如何处理

这个问题我也是最近才遇到&#xff0c;可能现在大家都喜欢用新架构&#xff0c;基于网页来写应用管理软件。 当遇到Edge环境下&#xff0c;文本框不识别回车符如何处理&#xff0c;根据笔者经验可通过配置Edge 基于键盘管理设置来解决这个事情。如图 即在Edge浏览器环境下&…...

Python 列表操作详解

Python 列表操作详解 在 Python 中&#xff0c;列表&#xff08;list&#xff09;是一种用于存储有序集合的数据结构。列表可以包含各种类型的数据&#xff0c;如整数、浮点数、字符串等&#xff0c;甚至可以包含其他列表&#xff08;这称为嵌套列表&#xff09;。 示例列表 …...

Git操作学习2

1.使用git rm删除文件 查看文件夹的内容 ls -lr 删除文件rm 文件名 但是此时只删了工作区的文件&#xff0c;仓库还没有删 可以再使用git add更新提交给仓库 也可以直接通过git rm 删除仓库里面的文件 工作区也删除了 暂存区也删除了 最后记得提交 否则删除的文件在版本库还…...