摘要:运用 AI作为专业代码开发工具,提出 系统化、结构化 的问题是提升问题解答质量和效率的关键。以下是具体建议和提问模板,可以帮助你更精准地表达需求、降低沟通成本,同时提高解决问题的效率。

1. 确定提问目标

在提问前,先明确自己的目标,例如:

  • 解决具体问题:如修复一个错误、实现某个功能。
  • 学习或指导:如了解某技术的用法、最佳实践。
  • 架构设计:如如何设计一套系统或某功能模块。

明确目标后,按照以下结构进行提问。


2. 提问结构化框架

2.1. 背景信息

提供上下文信息,帮助模型理解问题。例如:

  • 项目描述:是什么类型的项目?主要功能是什么?
  • 技术栈:使用了哪些语言、框架、数据库等?
  • 开发环境:如操作系统、IDE、工具版本等。

示例

我正在开发一个基于 Spring Boot 和 MySQL 的 Web 应用,主要用于批量管理服务器配置。开发环境是 Windows 10,使用 IntelliJ IDEA 和 JDK 17。


2.2. 具体问题描述

对问题进行详细描述,包括:

  • 你要实现的功能或目标
  • 遇到的问题或现象:如错误提示、结果不符预期。
  • 已尝试的解决方案:避免重复回答。

示例

我希望实现一个批量执行 SSH 命令的功能,已经尝试使用 JSch 库,但执行时遇到连接超时的问题,错误提示为 java.net.SocketTimeoutException。服务器已确认可访问,如何解决?


2.3. 提供相关代码或数据

如果问题与代码相关,提供必要的代码片段(简洁明了)。同时说明代码的位置或作用,便于理解。
注意:如果代码较长,可只提供关键部分或以文件附件形式上传。

示例

这是我的代码,用于通过 JSch 执行 SSH 命令:


Session session = jsch.getSession("user", "192.168.1.1", 22); session.setPassword("password"); session.setConfig("StrictHostKeyChecking", "no"); session.connect(3000); // 设置超时时间为 3000ms

问题是 session.connect() 抛出超时异常。


2.4. 预期结果

描述你希望的结果是什么,这可以帮助模型更好地提供解决方案。

示例

我希望能够成功连接到服务器,并执行命令 ls -al,返回结果应该是服务器的文件列表。


2.5. 其他约束或需求

如果有特定的要求,比如:

  • 必须使用某技术或库:如 “只能用 JSch,不能用其他 SSH 库”。
  • 代码风格或规范:如 “需要遵循 MVC 设计模式”。
  • 性能、安全性等特殊需求:如 “并发支持至少 100 个 SSH 会话”。

示例

代码需要支持批量执行 SSH 命令,每次至少支持同时连接 10 台服务器,并记录所有执行结果到日志文件。


3. 提问模板

以下是一个通用的提问模板,你可以直接套用:


[背景描述]

  • 项目类型
    如 “一个基于 Spring Boot 的 Web 应用”。
  • 主要技术栈
    如 “Spring Boot、MySQL、Vue.js”。
  • 开发环境
    如 “Windows 10,JDK 17,IntelliJ IDEA”。

[具体问题]

  1. 需求或目标
    如 “实现批量 SSH 命令执行功能”。
  2. 遇到的问题
    如 “执行时报错 SocketTimeoutException,连接超时”。
  3. 已尝试的解决方法
    如 “增加了超时时间,但问题仍未解决”。

[代码或数据]

// 提供相关代码片段或简要描述逻辑 Session session = jsch.getSession("user", "192.168.1.1", 22); session.setPassword("password"); session.connect(3000);

[预期结果]

如 “希望能够成功连接到服务器,并返回 ls -al 的结果”。

[特殊要求]

如 “需要支持批量并发执行,至少 10 台服务器”。


4. 系统化提问的技巧

4.1. 语言简洁清晰

  • 避免使用含糊不清的描述,如 “不行了”“结果有问题”,而是具体说明问题所在。
  • 使用专业术语:如 "出现 NullPointerException",而非 "程序崩了"。

4.2. 分步骤提问

如果问题复杂,可以拆分为多个步骤,逐步提出。例如:

  1. 如何通过 JSch 连接到 SSH?
  2. 如何通过 SSH 执行 SQLite 查询?
  3. 如何记录执行结果?

4.3. 善用对比

如果问题涉及多种解决方案,可以提出对比需求,帮助找到最佳方案。

示例

使用 JSch 和 SSHJ 都能实现 SSH 执行,哪个库性能更好?代码实现是否有差异?


4.4. 提出学习型问题

如果希望学习某技术,可以请求模型推荐学习路径或资源。

示例

我是 Java 开发者,想学习 Spring Boot,有哪些核心知识点和推荐的学习资源?


5. 提问示例

以下是一些高质量问题的示例,供参考:

示例 1:功能开发问题

背景:我正在开发一个 Spring Boot 的 Web 应用,用于批量管理服务器。
问题:如何在 Spring Boot 中实现批量通过 SSH 执行命令?有哪些推荐的库?
需求:支持同时对 10 台服务器执行命令,并记录执行结果。
已尝试:我使用了 JSch,但对多线程的支持不够理想。


示例 2:架构设计问题

背景:我需要设计一个基于微服务架构的电商系统,使用 Spring Cloud。
问题:如何设计用户管理和订单管理两个服务之间的通信?
需求:需要支持异步通信,同时保证订单数据一致性。
其他:系统未来需要支持高并发。


示例 3:错误调试问题

背景:我在使用 MyBatis 连接 MySQL 数据库时,遇到 Cannot create PoolableConnectionFactory 错误。
问题:这个错误通常是什么原因引起的?如何排查?
代码:以下是我的数据源配置:

spring: datasource: url: jdbc:mysql://localhost:3306/test username: root password: root driver-class-name: com.mysql.cj.jdbc.Driver

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐