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

python实现答题游戏

有这样一个需求:使用python实现一个游戏,一共有10个问题,依次回答每个问题,每个用户可以输入问题的答案,但是互相不能看到,有一个管理员可以看到所有人的答案,并且当所有人都填写完成后可以公布所有人的答案,并且打分。在回答的下面有一个得分表,每打完一轮问题的得分则实时计算总得分和排名。限制一个IP只能登录一个用户。

下面给出一个基于 Flask 的简化示例,演示如何用 Python 实现这样一个游戏的核心功能,主要包括:

  1. 10 个问题的答题流程。
  2. 用户只能看到自己的答案,管理员可以看到所有人的答案。
  3. 当所有人都填写完成后,管理员可以公布所有人的答案并进行打分。
  4. 显示得分表,每轮更新后实时计算总得分和排名
  5. 限制同一个 IP 地址只能登录一个用户。

为演示方便,以下示例仅做最小可行的流程说明,使用字典存储用户和答案信息;在实际生产环境中,可以结合数据库、认证机制、前端模板等进行更完善的开发。


主要功能说明

  1. 注册/登录

    • 用户首次进入时,需要填写用户名进行注册并登录。
    • 同一个 IP 地址只允许注册一个用户,后续从同一 IP 再访问则直接视为该用户登录或禁止二次注册。
  2. 答题

    • 一共 10 个问题,这里演示时以简单的问卷形式呈现。
    • 每个用户在提交完所有答案后,才能等待管理员公布结果。
  3. 管理员查看与公布答案

    • 管理员可以查看所有用户答案。
    • 管理员可进行打分,并将所有用户答案与分数公示。
    • 每完成一轮题目即可查看实时总得分并进行排名。
  4. 得分统计与排名

    • 每一轮提交答案后,管理员打分并把分数汇总到用户总分中。
    • 根据所有用户的总分动态计算排名并显示。

代码示例

下面的示例使用 Flask 进行演示,提供了若干路由(URL)以完成相应功能。请先安装 Flask:

pip install flask

然后创建一个脚本文件(如 quiz_game.py),内容如下:

from flask import Flask, request, session, redirect, url_for, render_template_string
import functoolsapp = Flask(__name__)
app.secret_key = "your_secret_key"  # 用于 session 加密# 记录哪些 IP 已经注册过用户
ip_to_user = {}# 存储用户信息,包括用户名、答案、分数等
# 结构示例:
# users_data = {
#   'alice': {
#       'answers': ["ans1", "ans2", ...],  # 当前轮次的答案
#       'scores': [5, ...],               # 历史每一轮的得分
#       'total_score': 5
#   },
#   'bob': {...},
#   ...
# }
users_data = {}# 定义题目,这里示例 10 个问题
QUESTIONS = ["问题1:你最喜欢的颜色是什么?","问题2:你最喜欢的动物是什么?","问题3:你的故乡在哪里?","问题4:你最喜欢吃什么?","问题5:你最喜欢哪个季节?","问题6:你最喜欢做的运动是什么?","问题7:你最喜欢的电影类型是什么?","问题8:假期里你最想去哪里旅行?","问题9:你希望学习哪项新技能?","问题10:你最喜欢的音乐类型是什么?",
]# 标记当前答题是否开放,如果轮次结束后可以由管理员统一切换
answer_open = True
# 标记这一轮是否已经公布答案
answers_revealed = False# ========== 帮助函数 ==========def login_required(func):"""需要用户已登录,否则跳转到登录页面。"""@functools.wraps(func)def wrapper(*args, **kwargs):if 'username' not in session:return redirect(url_for('login'))return func(*args, **kwargs)return wrapperdef admin_required(func):"""需要管理员权限,否则跳转到登录。此示例简单地将用户名为 'admin' 视为管理员。"""@functools.wraps(func)def wrapper(*args, **kwargs):if session.get('username') != 'admin':return "只有管理员能访问此页面。", 403return func(*args, **kwargs)return wrapperdef get_rankings():"""根据 total_score 得到排行榜信息,返回 [(username, total_score), ...] 从高到低。"""ranking = sorted(users_data.items(), key=lambda x: x[1].get('total_score', 0), reverse=True)# 转换成列表 [(用户名, 总分), ...]return [(user, info['total_score']) for user, info in ranking]# ========== 路由视图 ==========@app.route('/')
def index():"""主页,如果已登录则跳转到答题页面;否则跳转到登录。"""if 'username' in session:return redirect(url_for('quiz'))else:return redirect(url_for('login'))@app.route('/login', methods=['GET', 'POST'])
def login():"""用户登录/注册入口。同一个IP只能注册一个用户,若该IP已注册过,则自动成为该用户或禁止再次注册。"""client_ip = request.remote_addrif request.method == 'POST':username = request.form.get('username', '').strip()if not username:return "用户名不能为空", 400# 如果该IP已经注册过其他用户,则禁止重复注册if client_ip in ip_to_user and ip_to_user[client_ip] != username:return f"该IP({client_ip})已经注册过用户 {ip_to_user[client_ip]},无法重复注册。", 403# 如果该IP没有注册用户或者与现有用户名匹配,则继续ip_to_user[client_ip] = username# 如果用户第一次注册,初始化信息if username not in users_data:users_data[username] = {"answers": [""] * len(QUESTIONS),"scores": [],"total_score": 0}session['username'] = usernamereturn redirect(url_for('quiz'))# GET 请求,返回一个简单的登录表单return render_template_string("""<h2>用户登录/注册</h2><form method="post">用户名:<input type="text" name="username"><br><input type="submit" value="登录"></form>""")@app.route('/quiz', methods=['GET', 'POST'])
@login_required
def quiz():"""答题页面。提交后保存答案。这里简单演示一次性提交 10 个问题。"""global answer_openglobal answers_revealedusername = session['username']if request.method == 'POST':if not answer_open:return "当前轮次答题已关闭,等待管理员开启下一轮或公布结果。", 403# 接收 10 个问题的答案new_answers = []for i in range(len(QUESTIONS)):ans = request.form.get(f'question_{i}', '').strip()new_answers.append(ans)# 保存新的答案users_data[username]['answers'] = new_answersreturn "提交成功!等待管理员公布结果。"# GET 请求时渲染一个简单的表单user_answers = users_data[username].get('answers', [""]*len(QUESTIONS))html_form = """<h2>答题页面</h2>{% if answer_open %}<form method="post">{% for i, question in enumerate(QUESTIONS) %}<div><label>{{ question }}</label><br><input type="text" name="question_{{ i }}" value="{{ user_answers[i] }}"></div><br>{% endfor %}<input type="submit" value="提交答案"></form>{% else %}<p>答题已关闭,请等待管理员开启下一轮或查看最终结果。</p>{% endif %}"""return render_template_string(html_form,QUESTIONS=QUESTIONS,user_answers=user_answers,answer_open=answer_open)@app.route('/admin_view')
@admin_required
def admin_view():"""管理员查看所有用户答案的页面(仅管理员可访问)。"""html = "<h2>管理员查看所有答案</h2>"for user, info in users_data.items():html += f"<h3>用户:{user}</h3>"answers = info.get('answers', [])for i, ans in enumerate(answers):html += f"问题{i+1}: {ans}<br>"return html@app.route('/admin_score', methods=['GET', 'POST'])
@admin_required
def admin_score():"""管理员对本轮答案进行打分并公布。一次性给所有用户打分,然后系统更新总分、清空当前答案。"""global answer_openglobal answers_revealed# GET:显示一个打分的页面if request.method == 'GET':html = """<h2>管理员打分</h2><form method="post">"""for user in users_data:html += f"<label>给用户 {user} 的本轮答案打分:</label>"html += f"<input type='number' name='score_{user}' value='0' min='0' max='100'><br><br>"html += "<input type='submit' value='提交分数'>"html += "</form>"return html# POST:接收管理员给每个用户的分数,更新 total_scorefor user in users_data:score_str = request.form.get(f'score_{user}', '0')try:score = int(score_str)except ValueError:score = 0# 更新每个用户的分数信息users_data[user]['scores'].append(score)users_data[user]['total_score'] += scoreanswers_revealed = Trueanswer_open = False  # 关闭当前轮次答题,等待管理员手动开启下一轮(如果有的话)return redirect(url_for('results'))@app.route('/results')
@login_required
def results():"""公布所有用户本轮答案与分数(如果管理员已打分的话)。并显示当前排行榜。"""if not session.get('username'):return redirect(url_for('login'))if not users_data:return "暂无答案"html = "<h2>当前轮次结果</h2>"# 只有在管理员打完分之后才公布if not all(users_data[user]['scores'] for user in users_data):html += "<p>管理员尚未打分,无法显示分数。</p>"else:# 显示最新一轮的分数(即 scores 列表中的最后一项)for user, info in users_data.items():latest_score = info['scores'][-1] if info['scores'] else 0answers = info.get('answers', [])html += f"<h3>用户:{user}</h3>"for i, ans in enumerate(answers):html += f"问题{i+1}: {ans}<br>"html += f"<strong>本轮得分: {latest_score}</strong><br>"# 显示排行榜html += "<h2>排行榜</h2>"ranking = get_rankings()rank_str = ""for idx, (user, total_score) in enumerate(ranking, start=1):rank_str += f"{idx}. {user}{total_score}分<br>"html += rank_strreturn html@app.route('/admin_open_new_round')
@admin_required
def admin_open_new_round():"""管理员开启新一轮答题:清空当前答案,answer_open = True, 并 answers_revealed = False。"""global answer_open, answers_revealed# 把当前答案列表清空(如果希望保留可以改成其他逻辑)for user, info in users_data.items():info['answers'] = [""] * len(QUESTIONS)answer_open = Trueanswers_revealed = Falsereturn "新一轮答题已开启!"if __name__ == '__main__':# 启动Flask服务app.run(debug=True, host='0.0.0.0', port=5000)

功能说明

  1. ip_to_user 字典用于记录 IP → 用户名 的映射,确保同一 IP 无法注册多个账号。
  2. users_data 用于保存所有用户的状态,包括:
    • 当前轮的答案 answers
    • 每一轮的得分列表 scores
    • 总分 total_score
  3. answer_open 控制当前轮次是否允许答题,answers_revealed 标记本轮答案是否已公布。
  4. 提供了如下 路由
    • /login:用户登录/注册页面。
    • /quiz:用户答题页面(一次性答完 10 道题)。
    • /admin_view:管理员查看所有答案(仅管理员可访问)。
    • /admin_score:管理员对所有用户打分并公布结果(仅管理员可访问)。
    • /results:已打分后的结果页面,显示所有用户本轮答案、分数以及排行榜。
    • /admin_open_new_round:管理员开启下一轮答题,清空当前答案,重新开放答题。

使用方式

  1. 安装依赖并运行:
    pip install flask
    python quiz_game.py
    
  2. 浏览器访问 http://<服务器IP>:5000,若未登录则自动跳转到 /login
  3. 管理员可以使用特殊用户名(如 admin)登录,以访问管理员路由:
    • http://<服务器IP>:5000/admin_view 查看所有人的答案
    • http://<服务器IP>:5000/admin_score 给大家打分
    • http://<服务器IP>:5000/admin_open_new_round 开启下一轮
  4. 普通用户只能查看自己的答案并进行答题,分数公布后可查看总榜。

后续完善建议

  • 数据库:将用户数据、IP 映射等存入数据库(如 SQLite、MySQL、PostgreSQL),确保数据持久化。
  • 用户认证:对登录机制进行加固,比如密码验证、单点登录、令牌校验等,防止恶意用户冒名顶替。
  • 前端界面:可使用 Flask 的模板功能(或前端框架)美化页面,并提供更加友好易用的交互。
  • 并发/部署:考虑使用 uWSGI、Gunicorn 等部署在正式服务器上,提高并发能力。

这个示例主要演示了核心逻辑流程和数据结构,大家可以根据实际需求进行拓展和改进。祝你开发顺利!

相关文章:

python实现答题游戏

有这样一个需求&#xff1a;使用python实现一个游戏&#xff0c;一共有10个问题&#xff0c;依次回答每个问题&#xff0c;每个用户可以输入问题的答案&#xff0c;但是互相不能看到&#xff0c;有一个管理员可以看到所有人的答案&#xff0c;并且当所有人都填写完成后可以公布…...

OneData体系架构详解

阿里巴巴的 OneData 体系架构方法论&#xff0c;主要分为三个阶段&#xff1a;业务板块、规范定义 和 模型设计。每个阶段的核心目标是确保数据的高效管理、共享与分析能力。 一. 业务板块&#xff08;Business Segment&#xff09; 业务板块是OneData体系架构中的第一步&…...

五、华为 RSTP

RSTP&#xff08;Rapid Spanning Tree Protocol&#xff0c;快速生成树协议&#xff09;是 STP 的优化版本&#xff0c;能实现网络拓扑的快速收敛。 一、RSTP 原理 快速收敛机制&#xff1a;RSTP 通过引入边缘端口、P/A&#xff08;Proposal/Agreement&#xff09;机制等&…...

解锁Java中的国密算法:安全保障的密钥

一、引言 在数字化浪潮席卷全球的当下&#xff0c;信息安全已然成为国家、企业乃至个人无法忽视的重要议题。国密算法&#xff0c;作为我国自主研发的密码算法体系&#xff0c;宛如坚固的盾牌&#xff0c;为国家信息安全筑起了一道坚不可摧的防线。它的诞生&#xff0c;不仅承载…...

docker-registry

安装依赖 apt install apache2-utils设置密码 htpasswd -Bbn 用户名 密码 >/data/registry_hub/passwd#docker私服部署 docker run -d -p 5000:5000 --name docker-registry -v /data/registry_hub/:/var/lib/registry -v /data/registry_hub/passwd:/auth/htpasswd \ -e …...

QTableWidget的简单使用

1.最简单的表格示例&#xff1a; ui->tableWidget->setRowCount(2);// 设置行数ui->tableWidget->setColumnCount(3);// 设置列数&#xff0c;一定要放在设置行表头之前QStringList rowHeaderList;// 行表头rowHeaderList << QStringLiteral("姓名"…...

第三天 学习JavaScript基础,掌握变量、数据类型、运算符、流程控制

学习JavaScript基础是成为一名前端开发者的重要一步。以下是关于变量、数据类型、运算符和流程控制的一些基础知识和示例代码。 1. 变量 变量用于存储数据。在JavaScript中&#xff0c;使用var、let或const关键字来声明变量。 // 使用 var 声明变量&#xff08;不推荐&#…...

Python - itertools- pairwise函数的详解

前言&#xff1a; 最近在leetcode刷题时用到了重叠对pairwise,这里就讲解一下迭代工具函数pairwise,既介绍给大家&#xff0c;同时也提醒一下自己&#xff0c;这个pairwise其实在刷题中十分有用&#xff0c;相信能帮助到你。 参考官方讲解&#xff1a;itertools --- 为高效循…...

C语言程序设计十大排序—选择排序

文章目录 1.概念✅2.选择排序&#x1f388;3.代码实现✅3.1 直接写✨3.2 函数✨ 4.总结✅5.十大排序 1.概念✅ 排序是数据处理的基本操作之一&#xff0c;每次算法竞赛都很多题目用到排序。排序算法是计算机科学中基础且常用的算法&#xff0c;排序后的数据更易于处理和查找。在…...

微前端qiankun的基本使用(vue-element-admin作为项目模版)

微前端qiankun的基本使用(vue-element-admin作为项目模版) qiankun架构特点主应用netmoni_master改造工程项目目录结构子项目配置:子应用注册配置项container:子应用挂载节点配置项activeRule:子应用路由子应用netmoni_child1改造目录结构项目配置:src/settings中配置子应…...

MySQL用户授权、收回权限与查看权限

【图书推荐】《MySQL 9从入门到性能优化&#xff08;视频教学版&#xff09;》-CSDN博客 《MySQL 9从入门到性能优化&#xff08;视频教学版&#xff09;&#xff08;数据库技术丛书&#xff09;》(王英英)【摘要 书评 试读】- 京东图书 (jd.com) MySQL9数据库技术_夏天又到了…...

Ansible fetch模块详解:轻松从远程主机抓取文件

在自动化运维的过程中&#xff0c;我们经常需要从远程主机下载文件到本地&#xff0c;以便进行分析或备份。Ansible的fetch模块正是为了满足这一需求而设计的&#xff0c;它可以帮助我们轻松地从远程主机获取文件&#xff0c;并将其保存到本地指定的位置。在这篇文章中&#xf…...

skynet 源码阅读 -- 启动主流程

Skynet 启动主流程分析 Skynet 是一个轻量级、高并发的服务器框架。它在启动时会进行一系列初始化操作&#xff0c;并启动多个不同功能的线程&#xff08;Monitor、Timer、Worker、Socket&#xff09;&#xff0c;从而实现消息分发、定时器、网络I/O等核心功能。本文主要从 ma…...

【Linux】Linux入门(三)权限

目录 前提权限概念whoami指令 Linux权限管理文件访问者的分类&#xff08;人&#xff09;file指令权限信息权限的表示方法 chmod指令 更改权限chown指令 修改文件&#xff0c;文件夹所属用户和用户组 权限掩码umask&#xff08;权限掩码&#xff09; 粘滞位 前提 请先看下面这…...

FluentCMS:基于 ASP.NET Core 和 Blazor 技术构建的开源CMS内容管理系统

推荐一个基于 ASP.NET Core 和 Blazor 技术构建的、功能完善的开源CMS内容管理系统。 01 项目简介 FluentCMS 是一个基于强大的 ASP.NET Core 和创新的 Blazor 技术构建的现代内容管理系统&#xff08;CMS&#xff09;。 FluentCMS 设计为快速、灵活且用户友好&#xff0c;它…...

【阿里云】使用docker安装nginx后可以直接访问

一、创建目录 mkdir -p config/{cert,conf.d} html logs二、上传nginx.conf的配置文件 user nginx; worker_processes auto;error_log /var/log/nginx/error.log notice; pid /var/run/nginx.pid;events {worker_connections 1024; }http {include /etc/ngin…...

leetcode-84-柱状图最大的矩形

柱状图中最大的矩形 已解答 算术评级: 7 同步题目状态 困难 相关标签 相关企业 给定 n 个非负整数&#xff0c;用来表示柱状图中各个柱子的高度。每个柱子彼此相邻&#xff0c;且宽度为 1 。 求在该柱状图中&#xff0c;能够勾勒出来的矩形的最大面积。 1. stack 计算位置在…...

Vue | 搭建第一个Vue项目(安装node,vue-cli)

一.环境搭建&#xff1a; 1.安装node&#xff1a; 进入网站&#xff0c;下载对应版本的node.js Index of /dist/ (nodejs.org) 我这里下载的是&#xff1a; 解压到对应的目录下&#xff1a; 并新建两个文件夹node_cache和node_global&#xff1a; 2.配置环境&#xff1a; …...

Redis 持久化机制:RDB 和 AOF

Redis 持久化机制&#xff1a;RDB 和 AOF Redis 主要提供了两种持久化方式&#xff1a;**RDB&#xff08;Redis Database&#xff09;**和 AOF&#xff08;Append-Only File&#xff09;。它们各自的实现原理、优缺点以及适用场景如下。 1. RDB&#xff08;Redis Database&…...

ToDesk云电脑、顺网云、网易云、易腾云、极云普惠云横测对比:探寻电竞最佳拍档

一、云电脑&#xff1a;电竞新宠崛起 在电竞游戏不断发展的今天&#xff0c;硬件性能成为了决定游戏体验的关键因素。为了追求极致的游戏画面与流畅度&#xff0c;玩家们往往需要投入大量资金购置高性能电脑。然而&#xff0c;云电脑技术的出现&#xff0c;为玩家们提供了一种…...

GPT 结束语设计 以nanogpt为例

GPT 结束语设计 以nanogpt为例 目录 GPT 结束语设计 以nanogpt为例 1、简述 2、分词设计 3、结束语断点 1、简述 在手搓gpt的时候&#xff0c;可能会遇到一些性能问题&#xff0c;即关于是否需要全部输出或者怎么节约资源。 在输出语句被max_new_tokens 限制&#xff0c…...

【达梦数据库】两地三中心环境总结

目录 架构监视器位置异步备库同步频率配置&#xff1a;dmtimer.ini断网测试异地切换过程&回切&#xff1a;允许丢数据模式切换回切 架构 2&#xff08;1主1实时备库&#xff09;1&#xff08;实时备库&#xff09;1(异步备库)&#xff0c;分别为节点1、2、3、4监视器位置 …...

C语言进阶习题【1】指针和数组(4)——指针笔试题3

笔试题5&#xff1a;下面代码输出是是什么&#xff1f; int main() {int a[5][5];int(*p)[4];p a;printf( "%p,%d\n", &p[4][2] - &a[4][2], &p[4][2] - &a[4][2]);return 0; }分析 代码结果 笔试题6&#xff1a;下面代码输出是是什么&#xff1…...

Qt——引用第三方SDK lib库的使用方法

【系列专栏】:博主结合工作实践输出的,解决实际问题的专栏,朋友们看过来! 《项目案例分享》 《极客DIY开源分享》 《嵌入式通用开发实战》 《C++语言开发基础总结》 《从0到1学习嵌入式Linux开发》 《QT开发实战》 《Android开发实战》 《实用硬件方案设计》 《结构建模设…...

Grafana系列之Dashboard:新增仪表板、新增变量、过滤变量、变量查询、导入仪表板、变量联动、Grafana Alert

概述 关于Prometheus和Grafana的安装&#xff0c;略过。 写在前面 Dashboard&#xff1a;仪表板&#xff0c;可包含多个PanelPanel&#xff1a;面板&#xff0c;Dashboard中的组件 如有写得不对的地方&#xff0c;烦请指出。 新增仪表板 点击右上角的 选择New dashboard…...

管道符、重定向与环境变量

个人博客站—运维鹿: http://www.kervin24.top CSDN博客—做个超努力的小奚&#xff1a; https://blog.csdn.net/qq_52914969?typeblog 一、重定向 将命令和文件结合 标准输入重定向&#xff08;STDIN&#xff0c;文件描述符为0&#xff09;&#xff1a;默认从键盘输入&am…...

如何使用 Redis 作为高效缓存

如何使用 Redis 作为高效缓存 Redis&#xff08;Remote Dictionary Server&#xff09;是一个高性能的 内存存储系统&#xff0c;通常被用作 缓存 来加速数据访问&#xff0c;提高应用的吞吐量和响应速度。本文详细讲解如何使用 Redis 作为高效缓存&#xff0c;包括基本原理、…...

simulink入门学习01

文章目录 1.基本学习方法2.图形环境--模块和参数3.激活菜单---添加到模型3.1输入选项3.2添加到模型3.3更改运算3.4验证要求 4.乘以特定值--Gain模块4.1引入gain模块4.2更改增益参数4.3接入系统4.4大胆尝试 1.基本学习方法 今天突然想要学习这个simulink的相关知识&#xff0c;…...

接上篇基于Alertmanager 配置钉钉告警

Alertmanager 是一个用于处理和管理 Prometheus 警报的开源工具。它负责接收来自 Prometheus 服务器的警报&#xff0c;进行去重、分组、静默、抑制等操作&#xff0c;并通过电子邮件、PagerDuty、Slack 等多种渠道发送通知。 主要功能 去重&#xff1a;合并相同或相似的警报&a…...

【Elasticsearch】index.mapping.source.mode

在Elasticsearch中&#xff0c;当设置 index.mapping.source.mode 为 synthetic 时&#xff0c;Elasticsearch会自动生成和存储源文档的合成版本。这些合成版本的内容取决于你索引的字段和映射定义。具体来说&#xff0c;synthetic 模式会存储以下内容&#xff1a; ### 合成源文…...

GBase8c aes_encrypt和aes_decrypt函数

在数据库中&#xff0c;aes_encrypt和aes_decrypt函数进行加解密时使用的块加密模式。 GBase8c 与 MySQL 的aes_encrypt和aes_decrypt函数区别&#xff1a; 1、GBase8c 中的初始化向量init_vector不能为空 2、MySQL的加密模块block_encryption_mode 为aes-128-ecb&#xff0c;…...

【Unity】ScrollViewContent适配问题(Contentsizefilter不刷新、ContentSizeFilter失效问题)

最近做了一个项目&#xff0c;菜单栏读取数据后自动生成&#xff0c;结果用到了双重布局 父物体 尝试了很多方式&#xff0c;也看过很多大佬的文章&#xff0c;后来自己琢磨了一下&#xff0c;当子物体组件自动生成之后&#xff0c;使用以下以下代码效果会好一些&#xff1a; …...

第二届国赛铁三wp

第二届国赛 缺东西去我blog找&#x1f447; 第二届长城杯/铁三 | DDLS BLOG web Safe_Proxy 源码题目 from flask import Flask, request, render_template_stringimport socketimport threadingimport htmlapp Flask(__name__)app.route(/, methods"GET"])de…...

对称二叉树(力扣101)

这道题翻译过来就是判断根节点的左右子树是否可以通过翻转&#xff0c;变得完全一样。如果可以&#xff0c;则这棵二叉树为对称二叉树。那么什么样的左右子树可以通过翻转相互变换呢&#xff1f;它们的节点的数值一定对称分布。那么我们就需要同时遍历左右树&#xff0c;不断比…...

postgresql15的停止

PostgreSQL是一个功能非常强大的、源代码开放的客户/服务器关系型数据库管理系统&#xff0c;且因为许可证的灵活&#xff0c;任何人都可以以任何目的免费使用、修改和分发PostgreSQL。介绍过postgresql的启动方法&#xff0c;就很有必要介绍下postgresql的停止方法。 一、停止…...

3.1 Go函数调用过程

在 Go 语言中&#xff0c;函数调用的核心机制依赖于内存的栈区分配和指针操作&#xff0c;理解这一原理有助于掌握函数的执行过程。 1. 内存结构概述 在 Go 程序编译成可执行文件并启动后&#xff0c;操作系统会为其分配进程内存&#xff0c;进程内存主要分为以下区域&#x…...

Java导出通过Word模板导出docx文件并通过QQ邮箱发送

一、创建Word模板 {{company}}{{Date}}服务器运行情况报告一、服务器&#xff1a;总告警次数&#xff1a;{{ServerTotal}} 服务器IP:{{IPA}}&#xff0c;总共告警次数:{{ServerATotal}} 服务器IP:{{IPB}}&#xff0c;总共告警次数:{{ServerBTotal}} 服务器IP:{{IPC}}&#x…...

c++---------------------------模板进阶

1.非类型模板参数 模板参数分类类型形参与非类型形参 。 类型形参即&#xff1a;出现在模板参数列表中&#xff0c;跟在 class 或者 typename 之类的参数类型名称 。 非类型形参&#xff0c;就是用一个常量作为类 ( 函数 ) 模板的一个参数&#xff0c;在类 ( 函数 ) 模板中可…...

FPGA与ASIC:深度解析与职业选择

IC&#xff08;集成电路&#xff09;行业涵盖广泛&#xff0c;涉及数字、模拟等不同研究方向&#xff0c;以及设计、制造、封测等不同产业环节。其中&#xff0c;FPGA&#xff08;现场可编程门阵列&#xff09;和ASIC&#xff08;专用集成电路&#xff09;是两种重要的芯片类型…...

c++面试题,请使用STL的std::remove_if算法删除std::vector<int>容器中大于5的数字

请使用STL的std::remove_if算法删除std::vector容器中大于5的数字 在C 中&#xff0c; std::remove_if 算法并不会真正从容器中删除元素&#xff0c; 而是将满足条件的元素移动到容器末尾&#xff0c;并返回一个指向新的逻辑结束位置的迭代器。 你需要使用容器的 erase 成员函…...

阿里云-银行核心系统转型之业务建模与技术建模

业务领域建模包括业务建模和技术建模&#xff0c;整体建模流程图如下&#xff1a; 业务建模包括业务流程建模和业务对象建模 业务流程建模&#xff1a;通过对业务流程现状分析&#xff0c;结合目标核心系统建设能力要求&#xff0c;参考行业建 模成果&#xff0c;形成结构化的…...

快速搭建深度学习环境(Linux:miniconda+pytorch+jupyter notebook)

本文基于服务器端环境展开&#xff0c;使用的虚拟终端为Xshell。 miniconda miniconda是Anaconda的轻量版&#xff0c;仅包含Conda和Python&#xff0c;如果只做深度学习&#xff0c;可使用miniconda。 [注]&#xff1a;Anaconda、Conda与Miniconda Conda&#xff1a;创建和管…...

智能风控 数据分析 groupby、apply、reset_index组合拳

目录 groupby——分组 本例 apply——对每个分组应用一个函数 等价用法 reset_index——重置索引 使用前​编辑 注意事项 groupby必须配合聚合函数、 关于agglist 一些groupby试验 1. groupby对象之后。sum&#xff08;一个列名&#xff09; 2. groupby对象…...

Linux(Centos 7.6)命令详解:iconv

1.命令作用 将给定文件的编码从一种编码转换为另一种编码(Convert encoding of given files from one encoding to another) 2.命令语法 Usage: iconv [OPTION...] [FILE...] 3.参数详解 OPTION: 输入/输出格式规范: -f, --from-codeNAME&#xff0c;原始文本编码-t, --t…...

MySQL实现批量表分区完全示例

对于单表大数据量大的问题&#xff0c;如果数据支持分片&#xff0c;使用表分区是个不错的选择&#xff0c;那么MySQL是如何实现表分区的&#xff1f; 一、表分区条件 1.数据库存储引擎支持&#xff1a;InnoDB 和 MyISAM引擎 2.数据库版本支持&#xff1a;MySQL 5.1以后&…...

缓存商品、购物车(day07)

缓存菜品 问题说明 问题说明&#xff1a;用户端小程序展示的菜品数据都是通过查询数据库获得&#xff0c;如果用户端访问量比较大&#xff0c;数据库访问压力随之增大。 结果&#xff1a; 系统响应慢、用户体验差 实现思路 通过Redis来缓存菜品数据&#xff0c;减少数据库查询…...

开发环境搭建-1:配置 WSL (类 centos 的 oracle linux 官方镜像)

一些 Linux 基本概念 个人理解&#xff0c;并且为了便于理解&#xff0c;可能会存在一些问题&#xff0c;如果有根本上的错误希望大家及时指出 发行版 WSL 的系统是基于特定发行版的特定版本的 Linux 发行版 有固定组织维护的、开箱就能用的 Linux 发行版由固定的团队、社…...

QT 使用QSqlTableModel对数据库进行创建,插入,显示

文章目录 效果图概述功能点代码分析初始数据插入数据数据显示 总结 效果图 概述 本案例用于对数据库中的数据进行显示等其他操作&#xff0c;其他表格筛选&#xff0c;过滤等功能可看此博客 框架&#xff1a;数据模型使用QSqlTableModel&#xff0c;视图使用QTableView&#x…...

26、正则表达式

目录 一. 匹配字符 .&#xff1a;匹配除换行符外的任意单个字符。 二. 位置锚点 ^&#xff1a;匹配输入字符串的开始位置。 $&#xff1a;匹配输入字符串的结束位置。 \b&#xff1a;匹配单词边界。 \B&#xff1a;匹配非单词边界。 三. 重复限定符 *&#xff1a;匹配…...

vue 数据双向绑定无效 明明值修改了 页面却没有变化

在 Vue.js 中&#xff0c;数据双向绑定通常通过 v-model 指令来实现。如果你修改了数据但页面没有更新&#xff0c;可能是因为以下几个原因之一&#xff1a; 1. 检查 data 函数 确保你的数据属性是在 Vue 实例的 data 函数中声明的&#xff0c;并且是响应式的。例如&#xff…...