CTF-WEB排行榜制作
CTF-WEB排行榜制作
项目需求:
现在14道题对应有14个flag,我需要使用dockerfile搭建一个简单的,能够实现验证这些题目对应的flag来计分的简单网站(要求页面比较精美)
前十题设置为10分
11-14题设置为20分
1. flag{5a3dR7vKpQ9wXyZ2}
2. flag{8G4hLbNqFcTjMnP6}
3. flag{3V9sEkYmWuHxDrz1}
4. flag{J7r2tLqZfNpD4mKs}
5. flag{B6nQwRvXcT3yUh9P}
6. flag{qW4eF8gHjK2lO7iU}
7. flag{M9aZsEdCvFbRtY3N}
8. flag{2Lp5oIuG7yTqW1rD}
9. flag{R4vNkSmXzHcJ8wB3}
10. flag{6dFgHjKl9pOiU7yT}
11. flag{W3zYcT8rDxV5sQmK}
12. flag{9PnZtLwEfR6vGhJ4}
13. flag{7UkXbMqAsHdF2iN1}
14. flag{yT4jKmP9oLvRgS8e}
目录结构打印(项目根目录为ctf):
ctf/
├── docker-compose.yml
├── init.sql
└── web/├── Dockerfile├── flags.php├── index.php├── leaderboard.php├── submit.php├── style.css└── db.php
创建目录结构命令:
# 创建目录结构与文件
# 切换到工作目录(例如 /root 或 ~/)
mkdir -p ~/ctf && cd ~/ctf# 创建顶层目录和文件
mkdir -p ctf/web
touch ctf/docker-compose.yml
touch ctf/init.sql# 创建 web 子目录下的文件
touch ctf/web/Dockerfile
touch ctf/web/flags.php
touch ctf/web/index.php
touch ctf/web/leaderboard.php
touch ctf/web/submit.php
touch ctf/web/style.css
touch ctf/web/db.php
tree ctf
flags.php
:题目flag和分值配置(包含前五奖励逻辑支持)
init.sql
:MySQL建表与初始化
submit.php
:处理flag提交与写入逻辑
leaderboard.php
:统计并展示排行榜
index.php
:主页面
Dockerfile
+ docker-compose.yml
:构建环境配置
ctf/web/flags.php
cat > ctf/web/flags.php <<EOF
<?php
// 已整合到 submit.php 逻辑中
// 此文件保留用于后期扩展
header("Location: index.php");
exit();
?>
EOF
ctf/init.sql
cat > ctf/init.sql<<EOF
CREATE TABLE IF NOT EXISTS challenges (id INT PRIMARY KEY AUTO_INCREMENT,flag VARCHAR(50) UNIQUE NOT NULL,score INT NOT NULL,solved_count INT DEFAULT 0,first_five JSON DEFAULT NULL
);CREATE TABLE IF NOT EXISTS users (id INT PRIMARY KEY AUTO_INCREMENT,username VARCHAR(50) UNIQUE NOT NULL,total_score INT DEFAULT 0
);CREATE TABLE IF NOT EXISTS submissions (id INT PRIMARY KEY AUTO_INCREMENT,user_id INT NOT NULL,challenge_id INT NOT NULL,submit_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,is_correct BOOLEAN,is_in_top5 BOOLEAN DEFAULT FALSE,FOREIGN KEY (user_id) REFERENCES users(id),FOREIGN KEY (challenge_id) REFERENCES challenges(id)
);-- 初始化题目数据
INSERT INTO challenges (flag, score) VALUES
('flag{5a3dR7vKpQ9wXyZ2}', 10),
('flag{8G4hLbNqFcTjMnP6}', 10),
('flag{3V9sEkYmWuHxDrz1}', 10),
('flag{J7r2tLqZfNpD4mKs}', 10),
('flag{B6nQwRvXcT3yUh9P}', 10),
('flag{qW4eF8gHjK2lO7iU}', 10),
('flag{M9aZsEdCvFbRtY3N}', 10),
('flag{2Lp5oIuG7yTqW1rD}', 10),
('flag{R4vNkSmXzHcJ8wB3}', 10),
('flag{6dFgHjKl9pOiU7yT}', 10),
('flag{W3zYcT8rDxV5sQmK}', 20),
('flag{9PnZtLwEfR6vGhJ4}', 20),
('flag{7UkXbMqAsHdF2iN1}', 20),
('flag{yT4jKmP9oLvRgS8e}', 20);
EOF
ctf/docker-compose.yml
cat > ctf/docker-compose.yml <<EOF
version: '3.8'services:web:build: ./webports:- "80:80"depends_on:- mysqlenvironment:MYSQL_HOST: mysqlnetworks:- ctf-netmysql:image: mysql:8.0command: --default-authentication-plugin=mysql_native_passwordenvironment:MYSQL_ROOT_PASSWORD: ctf123MYSQL_DATABASE: ctf_dbMYSQL_USER: ctf_userMYSQL_PASSWORD: ctf_passvolumes:- ./init.sql:/docker-entrypoint-initdb.d/init.sql- mysql-data:/var/lib/mysqlnetworks:- ctf-netrestart: alwaysvolumes:mysql-data:networks:ctf-net:
EOF
ctf/web/Dockerfile
cat > ctf/web/Dockerfile <<'EOF'
FROM php:7.4-apache# 使用阿里云镜像源
RUN sed -i 's/deb.debian.org/mirrors.aliyun.com/g' /etc/apt/sources.list && \sed -i 's/security.debian.org/mirrors.aliyun.com/g' /etc/apt/sources.list# 安装扩展并配置
RUN apt-get update && \apt-get install -y libzip-dev libpng-dev && \docker-php-ext-install pdo_mysql zip gd && \a2enmod rewrite# 配置PHP
RUN echo "upload_max_filesize = 10M" >> /usr/local/etc/php/php.ini && \echo "post_max_size = 10M" >> /usr/local/etc/php/php.iniCOPY . /var/www/html/
EOF
ctf/web/submit.php
cat > ctf/web/submit.php <<'EOF'
<?php
require 'db.php';if ($_SERVER['REQUEST_METHOD'] === 'POST') {$username = trim($_POST['username']);$flag = trim($_POST['flag']);// 验证输入if (empty($username) || empty($flag)) {die("用户名和Flag不能为空");}try {$pdo->beginTransaction();// 获取用户或创建用户$stmt = $pdo->prepare("INSERT IGNORE INTO users (username) VALUES (?)");$stmt->execute([$username]);$user_id = $pdo->lastInsertId();if ($user_id == 0) {$stmt = $pdo->prepare("SELECT id FROM users WHERE username = ?");$stmt->execute([$username]);$user_id = $stmt->fetchColumn();}// 验证Flag$stmt = $pdo->prepare("SELECT id, score FROM challenges WHERE flag = ?");$stmt->execute([$flag]);$challenge = $stmt->fetch(PDO::FETCH_ASSOC);if ($challenge) {// 检查是否重复提交$stmt = $pdo->prepare("SELECT id FROM submissions WHERE user_id = ? AND challenge_id = ?");$stmt->execute([$user_id, $challenge['id']]);if ($stmt->fetch()) {die("请勿重复提交相同Flag");}// 更新题目解决数$pdo->prepare("UPDATE challenges SET solved_count = solved_count + 1 WHERE id = ?")->execute([$challenge['id']]);// 计算奖励分$stmt = $pdo->prepare("SELECT COUNT(*) FROM submissions WHERE challenge_id = ? AND is_correct = 1");$stmt->execute([$challenge['id']]);$current_solved = $stmt->fetchColumn();$bonus = 0;if ($current_solved < 5) {$bonus = 5 - $current_solved;}// 更新用户积分$total_score = $challenge['score'] + $bonus;$pdo->prepare("UPDATE users SET total_score = total_score + ? WHERE id = ?")->execute([$total_score, $user_id]);// 记录提交$stmt = $pdo->prepare("INSERT INTO submissions (user_id, challenge_id, is_correct, is_in_top5)VALUES (?, ?, 1, ?)");$stmt->execute([$user_id, $challenge['id'], ($bonus > 0 ? 1 : 0)]);echo "提交成功!获得积分:$total_score";} else {// 记录错误提交$pdo->prepare("INSERT INTO submissions (user_id, is_correct) VALUES (?, 0)")->execute([$user_id]);echo "Flag错误!";}$pdo->commit();} catch (Exception $e) {$pdo->rollBack();die("系统错误:" . $e->getMessage());}
}
?>
EOF
ctf/web/leaderboard.php
cat > ctf/web/leaderboard.php <<'EOF'
<?php require 'db.php'; ?>
<!DOCTYPE html>
<html lang="zh-CN">
<head><meta charset="UTF-8"><title>排行榜</title><link rel="stylesheet" href="style.css">
</head>
<body><div class="container"><h1>实时排行榜</h1><table class="leaderboard"><thead><tr><th>排名</th><th>用户名</th><th>总分</th><th>最后提交</th></tr></thead><tbody><?php$stmt = $pdo->query("SELECT u.username, u.total_score, MAX(s.submit_time) as last_submitFROM users uLEFT JOIN submissions s ON u.id = s.user_idGROUP BY u.idORDER BY u.total_score DESC, last_submit ASCLIMIT 50");$rank = 1;while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {echo "<tr>";echo "<td>#$rank</td>";echo "<td>{$row['username']}</td>";echo "<td>{$row['total_score']}</td>";echo "<td>" . date('Y-m-d H:i', strtotime($row['last_submit'])) . "</td>";echo "</tr>";$rank++;}?></tbody></table><div class="back-link"><a href="index.php">← 返回挑战列表</a></div></div>
</body>
</html>
EOF
ctf/web/index.php
cat > ctf/web/index.php <<'EOF'
<?php require 'db.php'; ?>
<!DOCTYPE html>
<html lang="zh-CN">
<head><meta charset="UTF-8"><title>CTF挑战平台</title><link rel="stylesheet" href="style.css">
</head>
<body><div class="container"><h1>CTF挑战列表</h1><div class="challenge-list"><?php$stmt = $pdo->query("SELECT * FROM challenges");while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {$points = $row['score'];echo "<div class='challenge'>";echo "<span class='challenge-id'>题目 {$row['id']}</span>";echo "<span class='points'>分值:{$points}</span>";echo "<span class='solved'>已解出:{$row['solved_count']}次</span>";echo "</div>";}?></div><div class="submit-form"><h2>提交Flag</h2><form action="submit.php" method="POST"><input type="text" name="username" placeholder="用户名" required><input type="text" name="flag" placeholder="输入Flag" required><button type="submit">提交</button></form></div><div class="leaderboard-link"><a href="leaderboard.php">查看实时排行榜 →</a></div></div>
</body>
</html>
EOF
CTF/web/db.php
cat > ctf/web/db.php <<EOF
<?php
$host = 'mysql';
$dbname = 'ctf_db';
$user = 'ctf_user';
$pass = 'ctf_pass';try {$pdo = new PDO("mysql:host=$host;dbname=$dbname;charset=utf8mb4", $user, $pass);$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch(PDOException $e) {die("Database connection failed: " . $e->getMessage());
}
?>
EOF
CTF/web/style.css
cat > ctf/web/style.css <<EOF
/* 基础样式 */
body {font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;margin: 0;padding: 20px;background-color: #f5f7fa;
}.container {max-width: 1200px;margin: 0 auto;background: white;padding: 30px;border-radius: 12px;box-shadow: 0 4px 6px rgba(0,0,0,0.1);
}/* 挑战列表样式 */
.challenge-list {margin-bottom: 40px;
}.challenge {background: #f8f9fc;padding: 15px 20px;margin: 10px 0;border-radius: 8px;display: flex;justify-content: space-between;align-items: center;transition: transform 0.2s;
}.challenge:hover {transform: translateX(10px);
}.challenge-id {font-weight: 600;color: #2d3748;
}.points {color: #48bb78;font-weight: bold;
}.solved {color: #718096;
}/* 提交表单样式 */
.submit-form {background: #f8f9fc;padding: 25px;border-radius: 8px;margin-top: 30px;
}.submit-form input[type="text"] {width: 250px;padding: 12px;margin-right: 10px;border: 2px solid #e2e8f0;border-radius: 6px;font-size: 16px;
}.submit-form button {background: #4299e1;color: white;border: none;padding: 12px 25px;border-radius: 6px;cursor: pointer;font-size: 16px;transition: background 0.3s;
}.submit-form button:hover {background: #3182ce;
}/* 排行榜样式 */
.leaderboard {width: 100%;border-collapse: collapse;margin-top: 20px;
}.leaderboard th, .leaderboard td {padding: 15px;text-align: left;border-bottom: 1px solid #e2e8f0;
}.leaderboard th {background: #4299e1;color: white;
}.leaderboard tr:nth-child(even) {background: #f8fafc;
}.back-link {margin-top: 25px;text-align: center;
}.back-link a {color: #4299e1;text-decoration: none;font-weight: 500;
}.leaderboard-link {text-align: center;margin-top: 25px;
}.leaderboard-link a {color: #48bb78;text-decoration: none;font-weight: 600;font-size: 1.1em;
}
EOF
构建和运行命令:
cd ctf
docker-compose build
docker-compose up -d
访问测试:
浏览器打开 http://localhost
常见问题解决:
- 如果遇到权限问题,在命令前加sudo
- 如果端口冲突,修改docker-compose.yml中的端口映射为 “8080:80”
- 清除环境使用:docker-compose down -v
- 查看日志:docker-compose logs -f
以上命令会:
- 创建完整的目录结构
- 生成所有配置文件
- 构建PHP+Apache镜像
- 启动MySQL数据库
- 自动初始化数据库结构
- 启动网站服务
- 自动设置好题目flag和评分规则
相关文章:
CTF-WEB排行榜制作
CTF-WEB排行榜制作 项目需求: 现在14道题对应有14个flag,我需要使用dockerfile搭建一个简单的,能够实现验证这些题目对应的flag来计分的简单网站(要求页面比较精美) 前十题设置为10分 11-14题设置为20分 1. flag{5a3…...
架构生命周期(高软57)
系列文章目录 架构生命周期 文章目录 系列文章目录前言一、软件架构是什么?二、软件架构的内容三、软件设计阶段四、构件总结 前言 本节讲明架构设计的架构生命周期概念。 一、软件架构是什么? 二、软件架构的内容 三、软件设计阶段 四、构件 总结 就…...
STM32单片机定时器的输入捕获和输出比较
目录 一、定时器的输入捕获 1、工作原理 2、示例代码 二、定时器的输出比较 1、工作原理 2、示例代码 三、总结 在STM32单片机中,定时器是一个非常重要的外设,广泛应用于时间管理、事件计时、波形生成等多种场景。其中输入捕获和输出比较是两个基…...
计算机组成原理-系统总线
1. 系统总线的定义 系统总线是计算机系统中各功能部件(CPU、存储器、I/O设备等)之间传递信息的公共通路,遵循统一的电气规范和时序协议,是计算机硬件互联的基础。 核心作用:实现数据、地址和控制信号的传输ÿ…...
【android bluetooth 框架分析 02】【Module详解 3】【HciHal 模块介绍】
1. 背景 我们在 gd_shim_module 介绍章节中,看到 我们将 HciHal 模块加入到了 modules 中。 modules.add<hal::HciHal>();在 ModuleRegistry::Start 函数中我们对 加入的所有 module 挨个初始化。 而在该函数中启动一个 module 都要执行那下面几步ÿ…...
Git 远程仓库
Git 入门笔记 远程仓库 Git 远程仓库 Git 远程仓库是一个托管在网络服务器上的代码仓库,它是团队协作开发的核心。 通过远程仓库,开发者可以共享代码、同步更新,实现分布式协作。 SSH 密钥 SSH 密钥可以让你在使用 Git 时安全地连接远程…...
209.长度最小的子数组- 力扣(LeetCode)
题目: 给定一个含有 n 个正整数的数组和一个正整数 target 。 找出该数组中满足其总和大于等于 target 的长度最小的 子数组 [numsl, numsl1, ..., numsr-1, numsr] ,并返回其长度。如果不存在符合条件的子数组,返回 0 。 示例 1:…...
符号右移“ >>= “ 与 无符号右移“ >>>= “ 的区别
符号右移" >> " 与 无符号右移" >>> " 的区别 一、符号右移" >> " 与 无符号右移" >>> " 的区别1. 符号右移(>>)与无符号右移(>>>)的区别…...
山东大学软件学院项目实训-基于大模型的模拟面试系统-专栏管理部分
本周我的主要任务是关于专栏管理部分的完善。 专栏图片的显示问题 问题分析 根据代码可知:图片URL来自于portfolio.headImgUrl,而且如果URL不存在的话,应该显示的是无图片,而网页中显示加载失败说明portfolio.headImgUrl应该是存…...
从 SYN Flood 到 XSS:常见网络攻击类型、区别及防御要点
常见的网络攻击类型 SYN Flood、DoS(Denial of Service) 和 DDoS(Distributed Denial of Service) 是常见的网络攻击类型,它们的目标都是使目标系统无法正常提供服务。以下是它们的详细说明: 1. SYN Flood…...
ros2-rviz2控制unity仿真的6关节机械臂,探索从仿真到实际应用的过程
文章目录 前言(Introduction)搭建开发环境(Setup Development Environment)在window中安装Unity(Install Unity in window)创建Docker容器,并安装相关软件(Create Docker containers…...
01_通过调过api文字生成音频示例
第1 第2 第3,测试音色 第4 第5 第6 第7生成api_key 第8代码 import requestsurl "https://api.siliconflow.cn/v1/audio/speech"payload {"input": "在中国传统文化中,谦让被视为一种美德,但过度的让步…...
使用PyTorch实现目标检测边界框转换与可视化
一、引言 在目标检测任务中,边界框(Bounding Box)的坐标表示与转换是核心基础操作。本文将演示如何: 实现边界框的两种表示形式(角点坐标 vs 中心坐标)之间的转换 使用Matplotlib在图像上可视化边界框 验…...
QEMU学习之路(8)— ARM32通过u-boot 启动Linux
QEMU学习之路(8)— ARM32通过u-boot 启动Linux 一、前言 参考文章: Linux内核学习——内核的编译和启动 Linux 内核的编译和模拟执行 Linux内核运行——根文件系统 Linux 内核学习——使用 uboot 加载内核 二、构建Linux内核 1、获取Linu…...
flutter 桌面应用之右键菜单
在 Flutter 桌面应用开发中,context_menu 和 contextual_menu 是两款常用的右键菜单插件,各有特色。以下是对它们的对比分析: 🧩 context_menu 集成方式:通过 ContextMenuArea 组件包裹目标组件,定义…...
系统设计面试总结:高性能相关:CDN(内容分发网络)、什么是静态资源、负载均衡(Nginx)、canal、主从复制
以下为本人自学回顾使用,请支持javaGuide原版。 1.CDN概述 CDN 就是将静态资源分发到多个不同的地方以实现就近访问,进而加快静态资源的访问速度,减轻服务器以及带宽的负担。 你可以将 CDN 看作是服务上一层的特殊缓存服务,分布…...
从红黑树到哈希表:原理对比与典型场景应用解析(分布式以及布隆过滤器)
在数据结构的世界里,红黑树一直以「自平衡二叉查找树」的身份备受赞誉。凭借红黑节点的精妙设计,它能将插入、删除、查找的时间复杂度稳定控制在 ( log n ) (\log n) (logn),成为处理有序数据的经典方案。然而,当业务场景对「…...
动手学深度学习:手语视频在VGG模型中的测试
前言 其他所有部分同上一篇AlexNet一样,所以就不再赘诉,直接看VGG搭建部分。 模型 VGG是第一个采取块进行模块化搭建的模型。 def vgg_block(num_convs,in_channels,out_channels):layers[]for _ in range(num_convs):layers.append(nn.Conv2d(in_ch…...
微信小程序实战案例 - 餐馆点餐系统 阶段 4 - 订单列表 状态
✅ 阶段 4 – 订单列表 & 状态 目标 展示用户「我的订单」列表支持状态筛选(全部 / 待处理 / 已完成)支持分页加载和实时刷新使用原生组件编写 ✅ 1. 页面结构:文件结构 pages/orders/├─ index.json├─ index.wxml├─ index.js└─…...
深度学习理论-直观理解 Attention
本文首先介绍 Attention 的原始公式,然后以 Self-Attention 为例,简化后逐步分析 Attention 计算结果表达的含义 Attention Attention 公式如下: A t t e n t i o n s o f t m a x ( Q ⋅ K T d k ) ⋅ V Attention softmax(\frac{Q \cd…...
python中 “with” 关键字的取舍问题
自动管理资源(自动关闭文件) 当你使用 with 打开文件时,文件会在 with 代码块结束后自动关闭,无论是否发生异常。这意味着你不需要显式地调用 f.close() 来关闭文件 示例: with open("words.txt", "r…...
ISIS协议(动态路由协议)
ISIS基础 基本概念 IS-IS(Intermediate System to Intermediate System,中间系统到中间系统)是ISO (International Organization for Standardization,国际标准化组织)为它的CLNP(ConnectionL…...
llm开发框架新秀
原文链接:https://i68.ltd/notes/posts/20250404-llm-framework3/ google开源ADK-Agent Development Kit 开源的、代码优先的 Python 工具包,用于构建、评估和部署具有灵活性和控制力的复杂智能体项目仓库:https://github.com/google/adk-python 2.6k项目文档:Age…...
Zookeeper的典型应用场景?
大家好,我是锋哥。今天分享关于【Zookeeper的典型应用场景?】面试题。希望对大家有帮助; Zookeeper的典型应用场景? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 ZooKeeper 是一个开源的分布式协调服务,主要用于管理和协调大…...
【C数据结构】 TAILQ双向有尾链表的详解
TAILQ双向有尾链表的详解 常见的链表结构1.SLIST2.STAILQ3.LIST4.TAILQ5.CIRCLEQ 一、TAILQ链表简介二、TAILQ的定义和声明三、TAILQ队列的函数1.链表头的初始化2.获取第一个节点地址3.获取最后一个节点地址4.链表是否为空5.下一个节点地址6.上一个节点地址7.插入头节点8.插入尾…...
redisson的unlock方法
//分布式方式,分布式锁,采用redisson锁 RLock lock redissonClient.getLock(userId.toString());//lock方法会无限重试。getLock底层是hash,大key是userid,小key是线程,value是重入次数 try {//boolean b lock.tryLo…...
ffmpeg 切割视频失败 ffmpeg 命令参数 -vbsf 在新版本中已经被弃用,需要使用 -bsf:v 替代
ffmpeg 切割视频失败 ffmpeg 命令参数 -vbsf 在新版本中已经被弃用,需要使用 -bsf:v 替代 从日志中可以看到问题出在第一个 ffmpeg 命令执行时: Unrecognized option vbsf.Error splitting the argument list: Option not found这是因为 ffmpeg 命令参…...
设计模式——抽象工厂模式总结
理解了前面的工厂模式后,再理解抽象工厂模式就很容易了。 工厂模式:https://blog.csdn.net/inside802/article/details/147170118?spm1011.2415.3001.10575&sharefrommp_manage_link 抽象工厂模式就是工厂模式的更加抽象化,父类不仅不承…...
JavaScript 定时器
在 JavaScript 中,定时器是实现代码在特定时间间隔执行或延迟执行的重要工具。下面我们将深入探讨定时器的相关知识。 定时器基础 setTimeout() setTimeout() 函数用于在指定的延迟时间后执行一次回调函数。它接受两个参数,第一个参数是要执行的回调函…...
企业经营决策风险
在企业的经营过程中,领导者每天都在面对大量的决策——该扩大生产还是收缩业务?该增设销售渠道还是提升产品质量?但你知道吗,企业最大的成本,不是生产成本,也不是人工成本,而是决策错误的成本&a…...
【云安全】云原生-centos7搭建/安装/部署k8s1.23.6单节点
一、节点基本配置 1、准备操作系统 2、 修改主机名 hostnamectl set-hostname master-1 hostnamectl set-hostname node1 hostnamectl set-hostname node2#验证hostnamectl status 3、修改/etc/hosts cat <<EOF >>/etc/hosts 192.168.255.137 master-1 192.168…...
【已更新完毕】2025泰迪杯数据挖掘竞赛B题数学建模思路代码文章教学:基于穿戴装备的身体活动监测
基于穿戴装备的身体活动监测 摘要 本研究基于加速度计采集的活动数据,旨在分析和统计100名志愿者在不同身体活动类别下的时长分布。通过对加速度数据的处理,活动被划分为睡眠、静态活动、低强度、中等强度和高强度五类,进而计算每个志愿者在…...
力扣每日打卡 1922. 统计好数字的数目 (中等)
力扣 1922. 统计好数字的数目 中等 前言一、题目内容二、解题方法1. 暴力解法(会超时,此法不通)2. 快速幂运算3. 组合计数的思维逻辑分析组合计数的推导例子分析思维小结论 4.官方题解4.1 方法一:快速幂 三、快速幂运算快速幂运算…...
宝塔Linux面板 - 添加站点建站时没有域名实现 IP 地址访问测试(宝塔面板建站 IP 访问)
前言 使用面板添加站点时,必须要填写一个域名用来指向程序,没有域名怎么办? 答案:域名直接写 【服务器 IP 地址】 操作步骤 如果还没有添加站点,则直接在创建站点的时候,域名那填写服务器地址即可&#…...
【GitHub探索】mcp-go,MCP协议的Golang-SDK
近期大模型Agent应用开发方面,MCP的概念比较流行,基于MCP的ToolServer能力开发也逐渐成为主流趋势。由于笔者工作原因,主力是Go语言,为了调研大模型应用开发,也接触到了mcp-go这套MCP的SDK实现。 对于企业内部而言&am…...
手撕TCP内网穿透及配置树莓派
注意: 本文内容于 2025-04-13 15:09:48 创建,可能不会在此平台上进行更新。如果您希望查看最新版本或更多相关内容,请访问原文地址:手撕TCP内网穿透及配置树莓派。感谢您的关注与支持! 之前入手了树莓派5,…...
人形机器人运动与操作: 控制、规划和学习方面的当前进展与挑战
前言 图 1:执行运动和操作任务的人形机器人:(a)HRP-4 在适应地形的同时擦拭木板[1];(b-g)Digit、Hector[2]、Atlas、H1、Justin[3]和 Apollo 取放物体;(h)iCu…...
C++ 重构muduo网络库
本项目参考的陈硕老师的思想 1. 基础概念 进程里有 Reactor、Acceptor、Handler 这三个对象 Reactor 对象的作用是监听和分发事件;Acceptor 对象的作用是获取连接;Handler 对象的作用是处理业务; 先说说 阻塞I/O,非阻塞I/O&…...
【计算机网络实践】(十二)大学校园网综合项目设计
本系列包含: (一)以太网帧分析与网际互联协议报文结构分析 (二)地址解析协议分析与传输控制协议特性分析 (三)交换机的基本操作、配置、 虚拟局域网配置和应用 (四)交…...
通过api程序的方式编辑ps的三种方式
目前只使用了第一种 ps-python-api去操作 还没有尝试其他两种方式对于第一种方式必须要开启ps程序,程序调用修改新增图层和文档时会同步到ps页面,可以直观看到修改结果...
论文阅读笔记——Reactive Diffusion Policy
RDP 论文 通过 AR 提供实时触觉/力反馈;慢速扩散策略,用于预测低频潜在空间中的高层动作分块;快速非对称分词器实现闭环反馈控制。 ACT、 π 0 \pi_0 π0 采取了动作分块,在动作分块执行期间处于开环状态,无法及时响…...
MySQL表的增删改查进阶版
Mysql 1、数据库的约束1.1约束类型1.2 NULL约束1.3 UNIQUE:唯一约束1.4 DEFAULT:默认值约束1.5 PRIMARY KEY:主键约束(重点)1.6 FOREIGN KEY:外键约束(重点) 2.表的设计2.1一对一2.2…...
【C#】Socket通信的使用
在C#中,Socket通信是一种用于实现网络通信的底层技术。通过Socket,程序可以在网络上与其他设备进行数据交换。以下是如何使用C#中的System.Net.Sockets命名空间来实现Socket通信的详细步骤。 1. Socket通信的基本概念 Socket: 一个Socket是网络通信的端…...
linux以C方式和内核交互监听键盘[香橙派搞机日记]
最近在深入研究我的香橙派,不可避免的遇到了怎么认识和使用Linux内核的问题。 我给自己留了一个简单的任务:使用原生C来监听内核,实现读取键盘的消息。 CSDN上也有其他文章来解决这个问题,不过要么是技术不达标(直接和…...
【C++初学】课后作业汇总复习(七) 指针-深浅copy
1、 HugeInt类:构造、、cout Description: 32位整数的计算机可以表示整数的范围近似为-20亿到+20亿。在这个范围内操作一般不会出现问题,但是有的应用程序可能需要使用超出上述范围的整数。C可以满足这个需求,创建功能强大的新的…...
【iOS】UIPageViewController学习
UIPageViewController学习 前言创建一个UIPageViewController最简单的使用 UIPageViewController的方法说明:效果展示 UIPageViewController的协议方法 前言 笔者最近在写项目时想实现一个翻书效果,上网学习到了UIPageViewController今天写本篇博客总结…...
GDB 调试命令详解:高效掌握常用调试技巧
🐞 GDB 调试命令详解:高效掌握常用调试技巧 GNU Debugger(GDB)是 Linux 下最强大的 C/C 调试工具。本文将系统梳理 GDB 的常用命令,覆盖运行控制、断点管理、变量查看、线程与进程调试等核心功能,助你快速掌…...
实验二 用递归下降法分析表达式实验
【实验目的】 1.掌握用递归下降分析法进行语法分析的方法。加深对自顶向下语法分析原理的理解。 2.掌握设计、编制并调试自顶向下语法分析程序的思想和方法。 3.本实验是高级语言程序设计、数据结构和编译原理中词法分析、自顶向下语法分析原理等知 识的综合。由于语法分析…...
【随身wifi】青龙面板保姆级教程
0.操作前必看 本教程基于Debian系统,从Docker环境。面板安装,到最后拉取脚本的使用。 可以拉库跑狗东京豆,elm红包等等,也可以跑写自己写的脚本,自行探索 重要的号别搞,容易黑号,黑号自己负责…...
从一到无穷大 #45:InfluxDB MCP Server 构建:从工程实践到价值重构
本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。 本作品 (李兆龙 博文, 由 李兆龙 创作),由 李兆龙 确认,转载请注明版权。 文章目录 工程实践遇到的问题MCP Host选择开发流程 结果展现可能性展望工作生活带来的变化 MCP…...