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

【NLP 74、最强提示词工程 Prompt Engineering 从理论到实战案例】

一定要拼尽全力,才能看起来毫不费劲

                                                      —— 25.5.15

一、提示词工程

1.提示词工程介绍

Ⅰ、什么是提示词

        所谓的提示词其实就是一个提供给模型的文本片段,用于指导模型生成特定的输出或回答。提示词的目的是为模型提供一个任务的上下文,以便模型能够更准确地理解用户的意图,并生成相关的回应


Ⅱ、什么是提示词工程

        所谓提示工程也可以被称为【指令工程】,提示工程的核心思想是:通过精心设计的提示词,可以显著提高模型的性能和输出质量。

        Prompt是AGI时代的【编程语言】

        提示工程师是AGI时代的【程序员】

        如果要学好提示工程,其实就是要知道如何对提示词Prompt进行调优,与大模型进行更好的交互。

获得更好结果的六种策略:

        ① write clear instructions 编写清晰的说明

        ② provide reference text 提供参考的文本

        ③ split complex tasks into simpler subtasks 将复杂任务拆分为更简单的子任务

        ④ give the model time to think 给模型时间思考

        ⑤ use external tools 使用外部工具

        ⑥ test changes systematically 系统地测试更改


Ⅲ、提示词工程的常用技巧

        ① 使用清晰、明确,避免模糊的词语:在对话中包含详细信息以获得更好的答案

        ② 角色扮演

        ③ 告知用户的角色

        ④ 指定输出的格式

        ⑤ 少样本提示 few-shot


Ⅳ、Prompt调优

         找到好的 prompt 是一个持续迭代的过程,需要不断地调优。

高质量 prompt 的核心要点:具体、丰富、少歧义

        ① 简洁:尽量用简短的方式表达问题。过于冗长的问题可能包含多余的信息,导致模型理解错误或答非所问

        ② 具体:避免抽象的问题,确保问题是具体的,不含糊

        ③ 详细上下文:如果问题涉及特定上下文或背景信息,要提供足够的详情以帮助模型理解,即使是直接提问也不例外

        ④ 避免歧义:如果一个词或词语可能有多重含义,要么明确其含义,要么重新表述以消除歧义。

        ⑤ 逻辑清晰:问题应逻辑连贯,避免出现逻辑上的混淆或矛盾,这样才能促使模型提供有意义的回答

Prompt 的典型构成

        ① 角色:给AI定义一个最匹配任务的角色,比如:【你是一位软件工程师】、【你是一位老师】等等

        ② 指示:对任务进行描述

        ③ 上下文:给出与任务相关的其他背景信息(多轮交互中)

        ④ 例子:必要时给出举例

        ⑤ 输入:人物的输入信息,在提示词中明确的标识出输入

        ⑥ 输出:输出的格式描述,以便后继模块自动解析模型的输出结果,比如(JSON、XML)


二、提示词工程进阶

1.零样本提示

        经过大量数据训练并调整指令的大型语言模型LLM可以执行零样本任务


2.少样本提示

        属于大型语言模型LLM展示了惊人的零样本能力,但在使用零样本设置时,它们在更复杂的任务上仍然表现不佳。少样本提示可以作为一种技术,以启用上下文学习,我们在提示中提供演示以引导模型实现更好的性能。

        模型通过提供一个示例(one-shot)已经学会了如何执行任务,对于更困难的任务,我们可以尝试增加演示(few-shot)


3.少样本提示的限制

        少样本提示不足以获得这种推理类型问题的可靠响应。上面的示例提供了任务的基本信息,如果仔细观察,我们会发现引入的任务类型涉及几个更多推理步骤。换句话说,如果我们将问题分解成步骤并向模型演示,这可能会有帮助


4.链式思考(思维链 CoT)

        链式思考(CoT)提示通过中间推理步骤实现了复杂的推理能力,可以将其与少样本提示进相结合,以获得更好的结果,以便在回答之前进行推理的更复杂的任务


5.少样本思维链(Few-shot CoT)

        少样本思维链(Few-shot Chain of Thought, Few-shot CoT)提示 是一种结合 少样本学习(Few-shot Learning) 和 思维链(Chain of Thought, CoT) 的提示工程技术,旨在通过少量带推理步骤的示例,引导大型语言模型(LLM)生成中间推理过程,从而解决复杂任务(如数学推理、逻辑分析、常识问答等)。其核心是让模型模仿示例中的 “思维链” 结构,逐步推导答案,而非直接给出结论。


6.零样本思维链(Zero-shot CoT)

        零样本思维链是一种无需提供任何手动设计的示例(即 “零样本”),仅通过 特定提示指令 引导大型语言模型(LLM)生成中间推理步骤(思维链),从而解决复杂任务的技术。它是 思维链(CoT) 技术的轻量化版本,依赖模型自身的知识和推理能力,通过自然语言指令激活其潜在的多步推理能力,而非依赖外部示例。

        加一句“逐步思考”


7.自我一致性(自洽性) 

        一种对抗【幻觉】的手段,就像我们做数学题,要多次进行演算一样。

                ① 同样的 prompt 让模型跑多次

                ② 通过投票选出最终的结果


8.思维树(Tree of-thought ToT)

        对于需要探索或预判战略的复杂任务来说,传统或简单的提示技巧是不够的。思维树基于思维链提示进行了总结,引导语言模型探索把思维作为中间步骤来解决通用问题。

        TOT维护着一颗思维树,思维由连贯的语言序列表示,这个序列就是解决问题的中间步骤。使用这种方法,LLM能够自己对严谨推理过程的中间思维进行评估。LLM将生成及评估思维的能力与搜索算法(如广度优先搜索和深度优先搜索)相结合,在系统性探索思维的时候可以向前验证和回溯。


Ⅰ、步骤

        ① 在思维链的每一步,采样多个分支

        ② 拓扑展开成一颗思维树

        ③ 判断每个分支的任务完成度,以便进行启发式搜索

        ④ 设计搜索算法

        ⑤ 判断叶子结点的任务完成的正确性


Ⅱ、ToT的核心机制

① 思维节点的生成

        针对一个问题,模型生成多个可能的中间推理步骤(称为“思维节点”),例如不同的解题策略、假设或子问题分解方式。

        示例:解决数学题时,可能生成代数解法、几何解法或逆向推导等分支。

② 节点的评估与筛选

        对每个节点进行评分(如正确性、可行性),保留高潜力分支,淘汰无效路径。

        示例:在棋盘游戏中,评估当前棋局的胜率,决定是否继续探索某条走法。

③ 搜索策略

        采用广度优先(BFS)、深度优先(DFS)或启发式搜索(如A*算法)遍历树结构,逐步逼近最优解。示例:编程题解中,优先尝试更符合题意的代码逻辑分支。

④ 回溯与修正

        当某条路径推导失败时,可回溯到父节点,选择其他分支继续探索,避免链式推理的“一错到底”。


Ⅲ、CoT与ToT的对比

特性链式思维 (CoT)思维树 (ToT)
推理结构线性单一路径树状多分支路径
错误容忍性一步错则后续全错允许回溯并尝试其他分支
适用场景简单、确定性任务(如算术题)复杂、多解性任务(如策略规划)
计算开销高(需生成和评估多个分支)

三、提示词应用

1.生成数据

        LLM具有生成连贯文本的强大能力。使用有效的提示策略可以引导模型产生更好、更一致和更真实的响应。LLMs还可以特别有用地生成数据,这对于运行各种实验和评估非常有用。

eg:生成十个情感分析的范例,示例被归类为正面或负面,生成2个负面示例和8个正面示例。使用以下格式的示例:Q:<句子>        A:<情感>

2. 代码的生成

        将注释转换成代码,你还可以使用这些大模型语言代码的代码生成功能将注释转换成代码

eg:用代码生成: # 1.创建一个电影名称列表 # 2.创建这些电影的评分列表 # 3.组合他们并创建一个包含10部电影及其评级的json对象

3.MySQL查询语句生成

        除了一些基本代码生成示例外,还可以使用模型生成其他有用的代码,例如创建和测试MySQL查询。

eg:你有一个数据集,其中包含一些信息,你可以将其作为提示的一部分包含在内,然后指示它生成特定的查询

        departments表,columns = [DepartmentID,DepartmentName]

        students表,columns = [DepartmentID,StudentID,StudentName]

        为计算机科学系的所有学生创建MySQL查询语句


四、防止Prompt攻击

        著名的【奶奶漏洞】,用套路把AI绕蒙

1.提示泄露

        提示泄漏是另一种提示注入类型,其中提示攻击旨在泄漏提示中包含的机密或专有信息,这些信息不适合公众使用。

        许多初创公司已经在开发和链接精心制作的提示,这些提示正在引导基LLMs构建的有用产品。这些提示可能包含重要的知识产权,不应该公开,因此开发人员需要考虑需要进行的各种强大测试,以避免提示泄漏。


2.非法行为

        也被称为越狱,使模型执行其指导原则不应执行的操作


3.提示工程Prompt Engineering经验总结

        ① 别急着上代码,先尝试用 prompt 解决,往往有四两拨千斤的效果

        ② 但别迷信 prompt,合理组合传统方法提升确定性

        ③ 想让 AI做什么,就先给它定义一个最擅长做此事的角色

        ④ 用好思维链,让复杂逻辑/计算问题结果更准确

        ⑤ 防御 prompt 攻击非常重要


4.网页端调试Prompt经验

        ① 把System Prompt和 User Prompt组合,写到界面的 Prompt 里

        ② 最近几轮对话内容会被自动引用,不需要重复粘贴到新 Prompt 里

        ③ 如果找到了好的 Prompt,开个新 chat 再测测,避免历史对话的干扰


三、提示工程实战 —— 智能学员辅导系统

1.利用大模型来写界面

① 下载streamlit包

清华园下载:pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple streamlit

② 编写提示词

用streamlit生成一个包含:

Q1:您现在在那个城市,是否在职,所从事的工作是什么?

Q2:对大模型有多少认知,了解多少原理与技术点?

Q3:学习大模型的最核心需求是什么?

Q4:是否有python编程基础或者其他编程基础,有没有写过代码?

Q5:每天能花多少时间用于学习,大致空闲时间点处于什么时段

Q6:除以上五点外是否还有其他问题想要补充。如有请按照如下格式进行补充:

这几个问题答案的输入框,还有一个生成按钮,当我点击生成按钮的时候,要把用户输入的内容发送给大模型

③ Python代码

import streamlit as st# 显示问题并获取用户输入
city = st.text_input("Q1: 您现在在哪个城市")
employment = st.text_input("是否在职")
job = st.text_input("所从事的工作是什么")
model_cognition = st.text_input("Q2: 对大模型有多少认知,了解多少原理与技术点")
learning_needs = st.text_input("Q3: 学习大模型的最核心需求是什么")
programming_basis = st.text_input("Q4: 是否有 Python 编程基础或者其他编程基础,有没有写过代码")
time_for_learning = st.text_input("Q5: 每天能花多少时间用于学习,大致空闲时间点处于什么时段")
additional_info = st.text_input("Q6: 除以上五点外是否还有其他问题想要补充。如有请按照如下格式进行补充")# 生成按钮
if st.button("生成"):user_inputs = {"Q1": {"城市": city,"是否在职": employment,"工作": job},"Q2": model_cognition,"Q3": learning_needs,"Q4": programming_basis,"Q5": time_for_learning,"Q6": additional_info}# 这里只是打印用户输入内容,若要发送给大模型,需根据大模型接口编写相应代码st.write(user_inputs)

④ 运行streamlit文件 

终端运行:streamlit run 文件名

注意:运行时要在streamlit包所在路径下运行

运行界面如下:

填写问卷:


2.完成和大模型的交互

        将提示词与回答共同送入大模型,调用大模型进行回答

from zhipuai import ZhipuAI
import streamlit as st'''
基于RAG来介绍Dota2英雄故事和技能
用bm25做召回
同样以智谱的api作为我们的大模型
'''#智谱的api作为我们的大模型
def call_large_model(prompt):client = ZhipuAI(api_key="API_KEY") # 填写您自己的APIKeyresponse = client.chat.completions.create(model="glm-4-plus",  # 填写需要调用的模型名称messages=[{"role": "user", "content": prompt},],)response_text = response.choices[0].message.contentreturn response_text# 显示问题并获取用户输入
city = st.text_input("Q1: 您现在在哪个城市")
employment = st.text_input("是否在职")
job = st.text_input("所从事的工作是什么")
model_cognition = st.text_input("Q2: 对大模型有多少认知,了解多少原理与技术点")
learning_needs = st.text_input("Q3: 学习大模型的最核心需求是什么")
programming_basis = st.text_input("Q4: 是否有 Python 编程基础或者其他编程基础,有没有写过代码")
time_for_learning = st.text_input("Q5: 每天能花多少时间用于学习,大致空闲时间点处于什么时段")
additional_info = st.text_input("Q6: 除以上五点外是否还有其他问题想要补充。如有请按照如下格式进行补充")# 生成按钮
if st.button("生成"):user_inputs = {"Q1": {"城市": city,"是否在职": employment,"工作": job},"Q2": model_cognition,"Q3": learning_needs,"Q4": programming_basis,"Q5": time_for_learning,"Q6": additional_info}# 这里只是打印用户输入内容,若要发送给大模型,需根据大模型接口编写相应代码st.write("您的回答:")for k, v in user_inputs.items():st.write(k, v)# 调用大模型res = str(call_large_model(user_inputs))st.success("大模型的回答:"+ res)

相关文章:

【NLP 74、最强提示词工程 Prompt Engineering 从理论到实战案例】

一定要拼尽全力&#xff0c;才能看起来毫不费劲 —— 25.5.15 一、提示词工程 1.提示词工程介绍 Ⅰ、什么是提示词 所谓的提示词其实就是一个提供给模型的文本片段&#xff0c;用于指导模型生成特定的输出或回答。提示词的目的是为模型提供一个任务的上下文&#xff0c;以便模…...

GPUGeek云平台实战:DeepSeek-R1-70B大语言模型一站式部署

随着人工智能技术的迅猛发展&#xff0c;特别是在自然语言处理领域&#xff0c;大型语言模型如DeepSeek-R1-70B的出现&#xff0c;推动了各行各业的变革。为了应对这些庞大模型的计算需求&#xff0c;云计算平台的普及成为了关键&#xff0c;特别是基于GPU加速的云平台&#xf…...

【抽丝剥茧知识讲解】引入mybtis-plus后,mapper实现方式

目录 前言一、传统 Mapper 接口方式二、继承 BaseMapper 的方式三、自定义通用 Mapper 的方式四、使用 MyBatis-Plus 的 ActiveRecord 模式五、使用 MyBatis-Plus 的 IService 接口六、使用建议 前言 mapper文件&#xff0c;作为Mybatis框架中定义SQL语句和映射关系的配置文件&…...

AI浪潮:开启科技新纪元

AI 的多面应用​ AI 的影响力早已突破实验室的围墙&#xff0c;在众多领域落地生根&#xff0c;成为推动行业变革的重要力量。 在医疗领域&#xff0c;AI 宛如一位不知疲倦的助手&#xff0c;助力医生提升诊疗效率与准确性。通过对海量医学影像的深度学习&#xff0c;AI 能够快…...

制造业工厂的三大核心系统:ERP+PLM+MES

对于一家制造业工厂来说,要实现数字化转型,哪几个系统最重要?答案是:ERP,PLM和MES这三个核心系统最为重要!本文就为你快速地概览地介绍一下这三个系统 以及 它们之间的关联关系。 ERP:企业资源计划 ERP的全称是Enterprise Resource Planning,即企业资源计划系统。 它…...

驱动-定时-秒-字符设备

文章目录 目的相关资料参考实验驱动程序-timer_dev.c编译文件-Makefile测试程序-timer.c分析 加载驱动-运行测试程序总结 目的 通过定时器timer_list、字符设备、规避竞争关系-原子操作&#xff0c;综合运用 实现一个程序&#xff0c;加深之前知识的理解。 实现字符设备驱动框…...

(面试)Handler消息处理机制原理

Handler是用于实现线程间通信和任务调度的一种机&#xff08;Handler、 Looper、MessageQueue、 Message&#xff09;。Handler 允许线程间发送Message或Runnable对象进行通信。在Android中UI修改只能通过UI Thread&#xff0c;子线程不能更新UI。如果子线程想更新UI&#xff0…...

WebRTC 通话原理:从协商到通信

在实时音视频通信领域&#xff0c;WebRTC&#xff08;Web Real-Time Communication&#xff09;凭借其开源、无需插件且能在浏览器中直接实现高质量通信的特性&#xff0c;成为开发者的热门选择。本文将深入解析 WebRTC 通话原理&#xff0c;涵盖媒体协商、网络协商、网络穿越&…...

InforSuite AS 可以发布django和vue项目是否可行

InforSuite AS 是浪潮推出的企业级中间件平台&#xff0c;主要用于应用集成、流程管理、数据交换等场景&#xff0c;其核心功能更偏向于 Java EE 应用的部署和管理&#xff08;如支持 WAR/EAR 包&#xff09;。关于能否直接发布 Django&#xff08;Python 框架&#xff09;和 V…...

【中级软件设计师】网络攻击(附软考真题)

【中级软件设计师】网络攻击&#xff08;附软考真题&#xff09; 目录 【中级软件设计师】网络攻击&#xff08;附软考真题&#xff09;一、历年真题二、考点&#xff1a;网络攻击1、拒绝服务攻击&#xff08;DoS攻击&#xff09;2、重放攻击3、特洛伊木马4、网络监听5、SQL注入…...

CSS图片垂直居中问题解决方案

在 CSS 中&#xff0c;使用 vertical-align: middle 导致图片略微向下偏移的现象&#xff0c;本质上是由于 行内元素的基线对齐规则 和 父容器上下文环境 共同作用的结果。以下是具体原因和解决方案&#xff1a; 原因详解 1. vertical-align: middle 的真实含义 该属性 不会让…...

P1601 A+B Problem(高精)

题目描述 高精度加法&#xff0c;相当于 ab problem&#xff0c;不用考虑负数。 输入格式 分两行输入。a,b≤10500。 输出格式 输出只有一行&#xff0c;代表 ab 的值。 输入输出样例 输入 1 1 输出 2 输入 1001 9099 输出 10100 说明/提示 20% 的测试数据…...

鸿蒙OSUniApp实现个性化的搜索框与搜索历史记录#三方框架 #Uniapp

使用UniApp实现个性化的搜索框与搜索历史记录 在移动端应用开发中&#xff0c;搜索功能几乎是标配&#xff0c;而一个好的搜索体验不仅仅是功能的实现&#xff0c;更是用户留存的关键。本文将分享如何在UniApp框架下打造一个既美观又实用的搜索框&#xff0c;并实现搜索历史记录…...

鸿蒙OSUniApp 制作自定义弹窗与模态框组件#三方框架 #Uniapp

UniApp 制作自定义弹窗与模态框组件 前言 在移动应用开发中&#xff0c;弹窗和模态框是用户交互的重要组成部分&#xff0c;它们用于显示提示信息、收集用户输入或确认用户操作。尽管 UniApp 提供了基础的交互组件如 uni.showModal() 和 uni.showToast()&#xff0c;但这些原…...

web第一次课后作业--运行一个java web项目

一、创建java web项目 1.新建java EE --> 模版&#xff1a;Web应用程序 2.选择版本&#xff1a;Java EE 8 3. 配置tomcat 二、页面效果 默认页面 跳转页面 三、代码 3.1 默认页面 <% page contentType"text/html; charsetUTF-8" pageEncoding"UTF-8…...

工业互联网

工业互联网全景解析 工业互联网是工业数字化、网络化、智能化转型升级的重要抓手&#xff0c;是实现中国制造 2025 战略目标的重要路径&#xff0c;对于推动我国实体经济高质量、可持续发展&#xff0c;建设制造强国、网络强国&#xff0c;意义重大。2017 年&#xff0c;我国提…...

论QT6多线程技术

前言 以前我多线程使用传统的继承qthread重写run()或者继承qrunable类把对象丢到线程池解决。经过昨天的面试让我了解到新的技术&#xff0c;我之前看到过只不过没有详细的去了解movetotread技术&#xff0c;这个技术是qt5推出的&#xff0c;qt6还在延续使用 代码结构 以下是…...

TensorFlow深度学习实战(16)——注意力机制详解

TensorFlow深度学习实战&#xff08;16&#xff09;——注意力机制详解 0. 前言1. 引入注意力机制2. 注意力机制2.1 注意力机制原理2.2 注意力机制分类 3. 添加注意机制的 Seq2Seq 模型3.1 数据处理3.2 模型构建与训练3.3 模型性能评估 小结系列链接 0. 前言 在传统的神经网络…...

架空防静电地板材质全解析:选对材质,守护精密空间的“安全卫士”

在现代科技驱动的社会中&#xff0c;无论是数据中心、实验室、手术室&#xff0c;还是高端电子厂房&#xff0c;静电都是精密设备的“隐形杀手”。而架空防静电地板作为这些场所的“安全卫士”&#xff0c;其材质选择直接决定了防静电性能、承重能力及使用寿命。今天&#xff0…...

Linux系统中部署java服务(docker)

1、不使用docker ✅ 1. 检查并安装 Java 环境 检查 Java 是否已安装&#xff1a; java -version✅ 2. 上传 Java 项目 JAR 文件 可以创建一个server文件夹&#xff0c;然后上传目录 查看当前目录 然后创建目录上传jar包 ✅ 3. 启动 Java 服务 java -jar hywl-server.jar…...

PyGame游戏开发(入门知识+组件拆分+历史存档/回放+人机策略)

前言&#xff1a; 本章实现游戏组件的复用解耦&#xff0c;以及使用配置文件替代原有硬编码形式&#xff0c;进而只需要改动配置文件即可实现整个游戏的难度和地图变化&#xff0c;同时增加历史记录功能&#xff0c;在配置文件开启后即可保存每一局的记录为json形式作为后续强化…...

【上位机——WPF】Window标签常用属性

常用属性 常用属性程序退出 常用属性都是写在Window标签中的 <Window x:Class"WpfDemo1.MainWindow"xmlns"http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x"http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d"…...

K8S Gateway AB测试、蓝绿发布、金丝雀(灰度)发布

假设有如下三个节点的 K8S 集群&#xff1a; ​ k8s31master 是控制节点 k8s31node1、k8s31node2 是工作节点 容器运行时是 containerd 一、场景分析 阅读本文&#xff0c;默认您已经安装了 K8S Gateway。 关于 AB 测试、金丝雀发布&#xff0c;可以看这篇文章。 二、实验准…...

人大金仓数据库 与django结合

要在Django项目中连接人大金仓数据库&#xff08;Kingbase&#xff09;&#xff0c;你需要使用一个适合的数据库适配器。人大金仓数据库是基于PostgreSQL的&#xff0c;因此你可以使用psycopg2库来与Django连接。但是&#xff0c;由于人大金仓数据库有其特定的功能和配置&#…...

RK3588 桌面系统配置WiFi和蓝牙配置

桌面右上角点击&#xff0c;打开选项&#xff0c;找到WiFi的选择网络或者WiFi设置 在弹出的窗口中选择需要连接的WiFi&#xff0c;然后右下角选择连接&#xff0c;然后输入WiFi密码即可连接。 25.4. 命令行连接wifi路由器 命令行配置wifi的方法有很多&#xff0c;下面介绍几种…...

TLV格式

‌TLV格式&#xff08;Tag-Length-Value&#xff09;是一种常用的数据序列化格式&#xff0c;主要用于数据包或消息的有效载荷编码。‌TLV格式将数据划分为三个主要部分&#xff1a;Tag&#xff08;标签&#xff09;、Length&#xff08;长度&#xff09;和Value&#xff08;值…...

2024年9月电子学会等级考试五级第三题——整数分解

题目 3、整数分解 正整数 N 的 K-P 分解是指将 N 写成 K 个正整数的 P 次方的和。本题就请你对任意给定的正整数 N、K、P&#xff0c;写出 N 的 K-P 分解。 时间限制&#xff1a;8000 内存限制&#xff1a;262144 输入 输入在一行给出 3 个正整数 N (≤ 400)、K (≤ N)、P (1 …...

软考 系统架构设计师系列知识点之杂项集萃(60)

接前一篇文章&#xff1a;软考 系统架构设计师系列知识点之杂项集萃&#xff08;59&#xff09; 第97题 在面向对象设计中&#xff0c;&#xff08;&#xff09;可以实现界面控制、外部接口和环境隔离。&#xff08;&#xff09;作为完成用例业务的责任承担者&#xff0c;协调…...

使用Python开发经典俄罗斯方块游戏

使用Python开发经典俄罗斯方块游戏 在这篇教程中&#xff0c;我们将学习如何使用Python和Pygame库开发一个经典的俄罗斯方块游戏。这个项目将帮助你理解游戏开发的基本概念&#xff0c;包括图形界面、用户输入处理、碰撞检测等重要内容。 项目概述 我们将实现以下功能&…...

C++:字符数组与字符串指针变量的大小

#include<iostream> #include<cstring> int main(int argc, char const *argv[]) {// 字符数组char str[128] "hello world";std::cout<<sizeof(str)<<std::endl;std::cout<<strlen(str)<<std::endl;// 字符串指针变量char *st…...

stm32使用freertos时延时时间间隔不对,可能是晶振频率没设置

freertos 获取频率的接口 在 FreeRTOSConfig.h 文件中声明一个函数作为freertos的接口 /// /// brief 获取 SysTick 的频率 /// /// note arm cortex-m 系列 CPU 有一个 systick &#xff0c;里面有一个 CTRL 寄存器&#xff0c;其中的 bit2 /// 可以用来控制 systick 的时钟…...

51c~C语言~合集5

我自己的原文哦~ https://blog.51cto.com/whaosoft/13913911 一、大厂C语言编程10大规范 1 代码总体原则 1、清晰第一 清晰性是易于维护、易于重构的程序必需具备的特征。代码首先是给人读的&#xff0c;好的代码应当可以像文章一样发声朗诵出来。 目前软件维护期成本…...

前端流行框架Vue3教程:17. _组件数据传递

_组件数据传递 我们之前讲解过了组件之间的数据传递&#xff0c;props 和自定义事件 两种方式 props&#xff1a;父传子 自定义事件&#xff1a;子传父 除了上述的方案&#xff0c;props也可以实现子传父 一、项目结构 src/ └── components/├── ComponentsA.vue # 父…...

Stack overflow

本文来源 &#xff1a;腾讯元宝 Stack Overflow - Where Developers Learn, Share, & Build Careers 开发者学习&#xff0c;分享 通过学习、工作和经验积累等方式&#xff0c;逐步建立和发展自己的职业生涯。 Find answers to your technical questions and help othe…...

SpringBoot 3.4.5版本导入Lomobok依赖后无法生效的问题

问题背景 最近&#xff0c;随着DeepSeek的爆火&#xff0c;小编也编写了一个前后端分离的“知库随考”系统&#xff0c;由于Spring AI官方提示想要使用Spring AI的话要求Spring Boot的版本在“3.4.x”以上&#xff0c;所以我在创建SpringBoot项目的时候选择了了Server URL:http…...

FPGA: UltraScale+ bitslip实现(ISERDESE3)

收获 一晃五年~ 五年前那个夏夜&#xff0c;我对着泛蓝的屏幕敲下《给十年后的自己》&#xff0c;在2020年的疫情迷雾中编织着对未来的想象。此刻回望&#xff0c;第四届集创赛的参赛编号仍清晰如昨&#xff0c;而那个在家熬夜焊电路板的"不眠者"&#xff0c;现在…...

Electron详解:原理与不足

Electron是一个集成项目&#xff0c;它通过定制Chromium和Node.js&#xff0c;并将它们集成在内部来实现其功能。具体来说&#xff0c;Electron做了以下几个重要的工作&#xff1a; 定制Chromium&#xff1a;并将定制版本的Chromium集成在Electron内部。定制Node.js&#xff1…...

Spring Boot多数据源配置的陷阱与终极解决方案

引言 在微服务架构和复杂业务场景中&#xff0c;一个Spring Boot应用连接多个数据库的需求日益普遍。许多开发者尝试通过简单复制单数据源配置来实现多数据源&#xff0c;结果却遭遇了Bean冲突、事务失效、连接泄漏等隐蔽问题。本文将深入剖析Spring Boot自动配置的底层逻辑&a…...

android display 笔记(十四)VAU 和GSP 分别代表什么

VAU 和 GSP 的解释 GSP (Graphics/GPU Subsystem Processor) 含义&#xff1a; 图形处理子系统&#xff0c;通常指 SoC&#xff08;系统级芯片&#xff09;中负责 2D/3D 图形渲染、显示合成、图像后处理&#xff08;如缩放、旋转、色彩管理&#xff09; 的硬件模块。 在部分芯…...

tomcat 400 The valid characters are defined in RFC 7230 and RFC 3986

在遇到 Tomcat 因 URL 非法字符返回 400 Bad Request 时,选择在 Nginx 还是 Tomcat 中配置错误处理,需根据实际场景和需求权衡。以下是两种方案的详细对比及配置方法: 一、选择建议 方案适用场景优点缺点Nginx 配置- 需要统一处理所有后端服务(如多个 Tomcat 实例)的 400 …...

nginx负载均衡及keepalive高可用

实验前期准备&#xff1a; 5台虚拟机&#xff1a;4台当做服务器&#xff0c;1台当做客户机&#xff08;当然&#xff0c;也可以使用主机的浏览器&#xff09;&#xff0c;4台服务器中&#xff0c;2台服务器当做后端真实访问服务器&#xff1b;另外2台服务器当做负载均衡服务器…...

漏洞修复:tomcat 升级版本 spring-boot-starter-tomcat 的依赖项

在Spring Boot项目中修复Tomcat漏洞(如CVE-2024-21733)时,通常需要升级内嵌Tomcat版本。以下是具体操作步骤和注意事项: 一、确认当前Tomcat版本 通过启动日志查看 启动项目时,控制台日志中会显示类似 Starting Servlet engine: [Apache Tomcat/9.0.43] 的信息,直接查看版…...

二、IGMP

目录 1. IGMPv1 1.1 IGMPv1 报⽂类型 1.2 IGMPv1 工作机制 1.3 成员加入 1.4 离组机制 2. IGMPv2 2.1 IGMPv2 报文 2.3 查询器选举 & 维护 2.4 成员加入 2.4 离组机制 3. IGMPv3 3.1 IGMPv3 vs. IGMPv2 3.2 IGMPv3 报文 3.3 IGMPv3 工作机制 4. IGMP Proxy …...

Redis--基础知识点--27--redis缓存分类树

在 Redis 中存储分类树&#xff0c;通常需要选择合适的数据结构来表现层级关系。以下是使用 字符串&#xff08;String&#xff09; 和 哈希&#xff08;Hash&#xff09; 两种常见方案的举例说明&#xff0c;结合电商分类场景&#xff08;如 电子产品 > 手机 > 智能手机…...

【2025最新】VSCode Cline插件配置教程:免费使用Claude 3.7提升编程效率

 2025年最新VSCode Cline插件安装配置教程&#xff0c;详解多种免费使用Claude 3.7的方法&#xff0c;集成DeepSeek-R1与5大实用功能&#xff0c;专业编程效率提升指南。 Cline是VSCode中功能最强大的AI编程助手插件之一&#xff0c;它能与Claude、OpenAI等多种大模型无缝集…...

SQL笔记一

SQL的分类 DDL&#xff08;数据定义语言&#xff09;&#xff1a;CREATE&#xff08;创建&#xff09; ALTER&#xff08;修改&#xff09; DROP&#xff08;删除结构&#xff09; RENAME&#xff08;重命名&#xff09; TRUNCATE&#xff08;清空&#xff09; DML&#xff0…...

高可靠低纹波国产4644电源芯片在工业设备的应用

摘要 随着工业自动化和智能化的飞速发展&#xff0c;工业设备对于电源芯片的性能和可靠性提出了前所未有的严格要求。电源芯片作为工业设备的核心供电组件&#xff0c;其性能直接影响到整个设备的运行效率和稳定性。本文以国科安芯的ASP4644四通道降压稳压器为例&#xff0c;通…...

MyBatis 的分页插件 c

前言 大型项目的数据体量很大&#xff0c;在前端界面展示时为保障展示效果&#xff0c;会要求接口快速返回&#xff0c;这时候后端会选择分页获取数据&#xff0c;只传递要查询的页码数据。这就避免了大多问题&#xff0c;达到快速返回的效果。 常用的分页有2种&#xff1a; …...

网络安全-等级保护(等保) 2-5 GB/T 25070—2019《信息安全技术 网络安全等级保护安全设计技术要求》-2019-05-10发布【现行】

################################################################################ GB/T 22239-2019 《信息安全技术 网络安全等级保护基础要求》包含安全物理环境、安全通信网络、安全区域边界、安全计算环境、安全管理中心、安全管理制度、安全管理机构、安全管理人员、安…...

嵌软面试每日一阅----FreeRTOS

一. FreeRTOS 创建任务的方法及区别 在 FreeRTOS 中&#xff0c;任务创建主要有两种方式&#xff1a;动态内存分配&#xff08;xTaskCreate()&#xff09;和静态内存分配&#xff08;xTaskCreateStatic()&#xff09;。以下是两者的核心区别及使用场景&#xff1a; 1. 动态创建…...