借助ChatGPT帮助程序员解决系统线上问题

在这里插入图片描述
对不同的业务以及不同的中间件提问题的方式不同 首先我们在每一种类型的提问前都需要对AI进行定义也就是让AI明白你提问的问题是那个行业的那个技术
定义身份话术 常见的

#接下来的对话你将以一名java高级开发工程师的身份和我聊天
接下来的对话你将以一名XXXX的身份和我聊天

提问技巧

首先定义身份

#接下来的对话你将以一名java高级开发工程师的身份和我聊天

然后介绍下自己的项目场景 然后提出自己的问题

#我们的项目是一个百万级别的并发项目,在这个项目中遇到mysql 8.0 版本下的sql 优化问题

针对自己的问题提出追问

#根据你的优化建议出一份优化后的代码/sql

尝试解决自己的问题

#代入代码后出现了XXX异常

解决中出现的问题

tip: 回答过长我们用发“继续”在上下文短没问题,长的话可能出现问题

可以使用下面这句:你刚因为回复长度限制问题中断了,我需要你继续回答

数据库相关问题案例

案例一

这段 SQL 查询语句是用于获取最近更新的前 10 个销售订单(dwd_sales_order)及其关联的交付信息(dwd_sales_order_delivery_info)。

单表里面有40多万数据 , sql语句在分页前进行orderBy执行效率立刻下降,有什么好的建议
SELECT
*
FROM
(
SELECT
*
FROM
dwd_sales_order a # 订单交付表
WHERE
a.trans_type = '0' #trans_type 订单交易类型
AND a.is_obsolete = '0' #is_obsolete 是否过时
ORDER BY
a.update_date DESC # 根据日期进行排序
LIMIT 0, # 执行分页
10
) t
LEFT JOIN dwd_sales_order_delivery_info f ON t.order_id = f.sales_order_id #
表链接 指定 order_id(订单ID) 和 sales_order_id(订单交付ID) 进行关联
ORDER BY
t.update_date DESC # 再次根据日期进行排序

问题分析

mysql数据库版本: 8.0
问题前提条件: 单表有40多万数据
出现问题: sql执行orderBy执行效率下降
常规思路:优化全表扫码查询只查询相关字段
优化子查询

基于上面的问题向GPT进行提问

接下来的对话你将以一名数据库管理工程师的身份和我聊天目前我们使用的数据库版本为mysql 8.0
在单表中数据有40多万 sql语句在分页前进行orderBy执行效率立刻下降 请根据上述的业务sql 
给出优化建议 具体sql如下:
	SELECT
	*
	FROM
	(
	SELECT
	*
	FROM
	dwd_sales_order a
	WHERE
	a.trans_type = '0'
	AND a.is_obsolete = '0'
	ORDER BY
	a.update_date DESC
	LIMIT 0,
	10
	) t
	LEFT JOIN dwd_sales_order_delivery_info f ON t.order_id = f.sales_order_id
	ORDER BY
	t.update_date DESC
	#OpenAI底层非中文,不能在SQL语句后跟中文

我的业务要求sql语句查询高效 并且支持高并发业务场景 基于这个业务前提请再给我一份优化后的sql语句并详细解释一下优化后的sql语句

案例二

项目中 一张客户表有1亿条记录,如果要删除其中的10万条记录 能有什么处理方法和步骤
在这里插入图片描述

问题分析

mysql数据库版本: 8.0
问题前提条件:
表结构: 这个表包含了客户的基本信息,包括 ID、名字、邮箱、电话、地址、城市、省、邮政编码、
国家等。还有两个时间戳字段,用于记录该记录的创建时间和最后更新时间
出现问题: 要删除其中的10万条记录
常规思路: 根据条件进行执行删除 分页

基于上面的问题向GPT进行提问

接下来的对话你将以一名数据库管理工程师的身份和我聊天 我的数据库版本为 mysql8.0 在项目中一张客户表有1亿条记录,其中表包含了客户的基本信息,包括 ID、名字、邮箱、电话、地址、城市、省、邮政编码、国家等。还有两个时间戳字段,用于记录该记录的创建时间和最后更新时间 要删除其中的符合条件10万条记录 请提供思路以及实现步骤 同时详细为什么这样做


请在上述基础上进行性能优化 提供实现具体代码 并详细阐述过程 在代码中要有详细注释

环境问题提问技巧以及解决思路

案例一

刚看了一集docker视频,使用docker启动redis,那么redis再docker中的配置文件在哪
里?容器中redis的配置文件不能用默认的,所以想修改它

问题分析

环境记录 : centos 7.6.1
dokcer/redis版本: CE(社区版本最新的) /5.0.2
问题前置条件: 使用docker启动redis
问题内容: redis在docker中的配置文件在哪里?
常规思路: 直接使用 -v 文件:docker目录(挂载名)进行目录挂载

基于上面的问题向GPT进行提问

接下来的对话你将以一名运维工程师的身份和我聊天 我的环境 centos 7.6.1 docker的版本是最新稳定版 我的redis版本为 5.0.2 我使用docker部署了redis 我的默认配置文件在哪里  请问如何修改  以及我如何将它挂载到本地文件

GPT辅助源码学习提升

源码阅读准备: 在开始阅读源码之前,确保对Java语言有足够的了解,熟悉常用的设计模式和数据结构。对于GPT,你可以询问一些Java编程知识或设计模式的问题,帮助更好地理解源码。

案例一

在这里插入图片描述

问题分析 :

nacos源码问题 : 版本 2.0
问题描述:在nacos中的源码中 为什么这个set方法一调用就往服务端发了个请求
grpcconn.setPayloadstreamobserver(payloadstream0bserver);
常规理解:这段代码的目的是为gRPC连接设置一个观察者,以便在异步通信中处理从服务器返回的负载数据流。

基于上面的问题向GPT进行提问

接下来的对话你将以一名java高级开发工程师的身份和我聊天
在nacos 2.0版本中的源码里面 为什么这个set方法一调用就往服务端发了个请求 请详细阐述
grpcconn.setPayloadstreamobserver(payloadstream0bserver);

类似问题:

那这个ID是怎么生成获取的 final string connectionId = CONTEXT_KEY_CONN_ID.get();
在这里插入图片描述

问题分析

nacos源码问题 : 版本 2.0
问题描述:requestBistream 中的这个ID是怎么生成获取的 final string connectionId =CONTEXT_KEY_CONN_ID.get();
字面意思:

基于上面的问题向GPT进行提问

接下来的对话你将以一名java高级开发工程师的身份和我聊天
在nacos 2.0版本中的源码里面 requestBistream 中的这个ID是怎么生成获取的 final string
connectionId = CONTEXT_KEY_CONN_ID.get();

总结性技巧

  1. 源码阅读准备: 在开始阅读源码之前,确保对Java语言有足够的了解,熟悉常用的设计模式和数据结构。对于GPT,可以询问一些Java编程知识或设计模式的问题,以帮助更好地理解源码。
  2. 提出问题: 在阅读源码时,有针对性地提出问题,例如询问某个类或方法的作用、某个设计模式在代码中的应用等。通过与GPT的互动,了解代码的功能和结构。
  3. 请求代码解释: 当遇到难以理解的代码片段时,可以将代码片段复制并粘贴到GPT中,请求解释代码的功能和作用。GPT可以帮助理解这部分代码的逻辑和执行过程。
  4. 代码重构与优化: 如果觉得源码中有可以改进的地方,可以请教GPT关于重构和优化的建议。GPT可以提供一些实用的代码优化建议,帮助提高代码质量。
  5. 编写测试用例: 为了确保源码的稳定性和可靠性,可以请教GPT如何编写针对特定功能的测试用例。GPT可以为提供测试用例的示例和建议,帮助编写有效的测试。
  6. 学习新技术: 当在阅读源码时,可能会遇到一些不熟悉的技术和框架。在这种情况下,可以向GPT咨询相关技术的使用方法和最佳实践,以便更好地理解和应用这些技术。
  7. 问题总结与反馈: 在源码学习过程中,整理遇到的问题和疑惑,并向GPT进行反馈。GPT可以帮助总结这些问题的解决方案,巩固在源码学习过程中的收获

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/211187.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

关于Typora如何插入自己的云端视频的方法

关于Typora如何插入自己的云端视频的方法 文章目录 关于Typora如何插入自己的云端视频的方法前言:实现步骤:小结 前言: 我本来使用gitee来作为typora的图床,但我现在想要把我自己的视频上传到云端,然后通过超链接在ty…

Programming Contest 2023(AtCoder Beginner Contest 331)D题 Tile Pattern --- 题解

目录 D - Tile Pattern 题目大意: 思路: 代码: D - Tile Pattern D - Tile Pattern (atcoder.jp) 题目大意: 给你一个n和q,n为局部棋盘大小(n*n) 并且给出局部棋盘中黑白子位置的放置情况,q为查询次数…

java的四种内部类,从0讲清楚

什么是内部类? 为什么要学习内部类? 可以发现,发动机虽然跟汽车相关,但发动机不像车龄或颜色一样,只用一个变量就可以描述,而是要有发动机品牌,发动机年限,多个变量描述发动机。那么…

从“芯”到云,看亚马逊云科技如何让未来“平等”发生

文章目录 业界最全面算力选择,有效解决多样性需求多年自研芯片积累,带来性能与性价比双重优势全球基础设施与独特的业务模式,让创新不受限 “科幻作家威廉吉布森说‘未来已至,只是还没有均匀分布’。”2023年6月底,当亚…

【开源存储】minio对象存储部署实践

文章目录 一、前言1、介绍说明2、部署方式3、冗余模式4、约束限制4.1、规格参数4.2、API支持a、minio不支持的Amazon S3 Bucket APIb、minio不支持的Amazon S3 Object API 二、部署说明1、软件安装2、minio单机部署3、minio分布式部署3.1、前置条件3.2、开始运行3.3、操作说明 …

Linux 进程(三)

Linux进程状态的查看: 这是Linux内核源代码对于进程状态的定义: R运行状态(running): 并不意味着进程一定在运行中,它表明进程要么是在运行中要么在运行队列里。 S睡眠状态(sleeping): 意味着进程在…

ipvlan介绍

最近使用docker,涉及到需要跨多台物理机部署系统,查了好多资料,最后查到了ipvlan。那什么是vlan,什么又是ipvlan。 交换机层面的vlan,是按802.1Q规范,在链路层中加了4字节的标识vlan的数据,交换…

如何在WordPress中批量替换图片路径?

很多站长在使用WordPress博客或者搬家时,需要把WordPress文章中的图片路径进行替换来解决图片不显示的问题。总结一下WordPress图片路径批量替换的过程,方便有此类需求的站长们学习。 什么情况下批量替换图片路径 1、更换了网站域名 有许多网站建设初期…

灯光开不了了,是不是NVIDIA的问题

如果你跟我一样灯光亮度调节不了了,然后显示适配器又没有了,你看一下是不是和我这个大怨种一样把NVIDIA卸了,为了这个东西,这屏幕亮瞎我的眼镜😢😢。只需要进入官网,你就可以直接找到&#xff0…

SSM框架(五):Maven进阶

文章目录 一、分模块开发1.1 分模块开发的意义1.2 步骤 二、依赖管理2.1 依赖传递2.2 可选依赖和排除依赖 三、继承与聚合3.1 聚合3.2 继承3.3 聚合和继承区别 四、属性4.1 pom文件的依赖使用属性4.2 资源文件使用属性 五、多环境开发六、跳过测试七、私服7.1 下载与使用7.2 私…

前端面试灵魂提问(1)

1.自我介绍 2.在实习中,你负责那一模块 3.any与unknow的异同 相同点:any和unkonwn 可以接受任何值 不同点:any会丢掉类型限制,可以用any 类型的变量随意做任何事情。unknown 变量会强制执行类型检查,所以在使用一个…

Redis RDB

基于内存的 Redis, 数据都是存储在内存中的。 那么如果重启的话, 数据就会丢失。 为了解决这个问题, Redis 提供了 2 种数据持久化的方案: RDB 和 AOF。 RDB 是 Redis 默认的持久化方案。当满足一定条件的时候, 会把当前内存中的数据写入磁盘, 生成一个快照文件 dump.rdb。Redi…

各类声音数据集大合集—乐器、车辆、鸟鸣、蜜蜂声音、歌曲、喇叭、人类声音不同等类型的声音数据集

最近收集了一大波关于各类声音的数据集,包含乐器、车辆、鸟鸣、蜜蜂声音、歌曲、喇叭、人类声音不同等类型的声音数据集,废话不多说,给大家逐一介绍!! 1、吉他和弦大调、小调数据集 吉他和弦大调、小调数据集&#x…

Hive数据倾斜之:数据类型不一致导致的笛卡尔积

Hive数据倾斜之:数据类型不一致导致的笛卡尔积 目录 Hive数据倾斜之:数据类型不一致导致的笛卡尔积一、问题描述二、原因分析三、精度损失四、问题解决 一、问题描述 如果两张表的jion,关联键分布较均匀,没有明显的热点问题&…

无桌面版docker在Ubuntu系统上安装

目录 注意 系统要求 卸载旧版本 安装 使用apt存储库安装 1. 设置 Docker 的apt存储库。 2. 安装Docker软件包 3. 通过运行镜像来验证Docker Engine安装是否成功 hello-world。 从包中安装 1. 进入 https://download.docker.com/linux/ubuntu/dists/。 2. 在列表中选择…

阿里云MySQL从 2003->1251->1396

目的 由于需要在阿里云的实例中装MySQL数据库,安装前期(本地访问)还是挺顺利的,但是到了远程连接的时候,却出现了一系列的Bug,以为是没有 实名认证没有备案 的原因导致的,但是后来…

在Spring Boot中使用@Async实现一个异步调用

在使用异步注解之前,我们需要先了解,什么是异步调用? 异步调用对应的事同步调用,同步调用是值程序按照我们定义的顺序依次执行,每一行程序都必须等待上一行的程序执行完成之后才执行,而异步是指在顺序执行…

动态规划------方法汇总

核心: 状态定义 状态转移方程 启发思路(两种情况):选 或 不选 / 选哪个 DP三步:先写回溯,时间复杂度 指数级别;递归的过程中会重复计算,要保存计算结果,递归搜索…

uniapp是否可以用elementUI等前端UI库、使用步骤以及需要注意的问题

文章目录 uniapp是否可以用elementUI等前端UI库使用方法和步骤问题如何解决 uniapp是否可以用elementUI等前端UI库 在PC端开发uniapp,可以用elementUI,因为elementUI就是PC端的。 在使用uniapp,选择vue2.0时,实测可以用nodejs16的…

Linux部署HDFS集群

(一)VMware虚拟机中部署 ps、其中node1、node2、node3替换为自己相应节点的IP地址,或者host文件中配置过的主机名,或者看前置准备 或者查看前置准备:Linux部署HDFS集群前置准备 1.下载压缩包 https://www.apache.or…