作者:京东批发 王英杰

概述

该文档记录云交易开发小伙伴儿们在开发过程中的理论利用案例,记录典型案例,以解决开发过程中的理论问题为主,涵盖设计方案、编码、测试、集成、部署等等。

目标:奉献最佳实际,分享心得,独特成长!

1. 怎么结构Prompt

1.1 根本形成

个别状况下,Prompt能够分成以下4个局部:

  • Instruction: 指引,即要解决的问题类型
  • Context: 上下文,即问题的背景
  • Input Data: 输出数据,即具体的问题
  • Output Indicator: 输入批示,即对输入的一些束缚

举例:

Instruction: 向我阐明前端所需技术栈 Context: 假如你是一个前端面试官,我是一个本科毕业的应届生 InputData: 向我阐明现阶段前端行业要求应届生把握的技能状况 Output Indicator: 用尽量简略易懂的语言

1.2 设计准则

  • 清晰,切忌简单或歧义,如果有术语,应定义分明。
  • 具体,描述语言应尽量具体,不要形象或不置可否。
  • 聚焦,问题防止太泛或凋谢。
  • 简洁,防止不必要的形容。
  • 相干,次要指主题相干,而且是整个对话期间,不要东一瓢西一瓤。

举例:

✅无效 Prompt 总结一下《鲁滨逊漂流记》所讲内容? # 聚焦、相干 北京最纯粹的外乡餐厅有哪些? # 具体、相干

❌有效 Prompt 通知我对于这个世界为什么存在? # 宽泛、凋谢 能够帮我实现工作吗? # 凋谢 你好 # 无目标、不聚焦

2. 最佳实际案例集

案例1 开发过程中疾速优化代码

(1)提供代码片段,并提出本人的诉求级具体优化方向

(2)进一步提出具体的优化方向

(3)取得优化后的代码依据业务场景进行加工,测试

  • 获取优化后代码整合进工程中
  • 依据业务场景优化代码,将抓取的异样Exception改为NullPointerException(优化场景:此处因为一致性问题,查商品主数据时存在商品主数据写服务数据还未同步到读服务的场景,报空指针,需抓取后做重试)
  • 优化后自测无问题即可

案例2 使用chatGPT对JVM进行优化

案例3 SQL优化及排错

1)帮忙查看下sql有没有问题,这个是要将业务表新增几个字段

它帮忙给辨认到一些问题

依照它提醒的问题批改;

我让它将三条sql合并到一条,要不然jed会提醒让合并,所以让GPT帮忙合并。

还是很智能的,jed的sql查看也都顺利通过了,能帮咱们review sql的正确性,升高错误操作的危险。

案例4 GPT按需生成工具类

你是一个程序员,帮忙编写一段程序,要求输出一串字符串,两头“,”分隔,最多有50个片段,而后须要校验这些片段是否有反复的,反复的放在set外面返回;

GPT给我生成的是python代码;

从新发问:你是一个Java程序员,帮忙编写一段程序,要求输出一串字符串,两头“,”分隔,最多有50个片段,而后须要校验这些片段是否有反复的,反复的放在set外面返回

再次进行优化:将50作为一个变量,不要写死,从新生成一个办法;

总结: 在我的项目中有须要校验一个字符串50个渠道,逗号宰割,判断渠道是否反复的需要,所以通过一步步发问,让GPT帮忙生成一个工具类,这样咱们在我的项目中能够间接应用改工具类进行疾速的验证。

案例5 云交易加密服务需部署到抖音服务器上,需从零开始搭建部署环境。

背景:因为长时间应用京东Jdos部署代码,对于Linux的一些指令曾经遗记。故应用ChatGPT领导我从零搭建JAVA部署环境。

1)上面我给ChatGPT的指令

指令1:CentOS7装置JAVA环境,而后通过nohub命令后盾启动java jar包并把日志输入到 douyin.txt文件中

ChatGPT答复如下:

指令2:到官网下载再装置JDK太麻烦了,帮我将上述装置jdk的步骤换成yum形式装置

ChatGPT答复如下:

2)上面参考它给的指令装置JDK8,而后检测JDK版本,胜利装置了。

3)接下来我把jar包上传到一个指定的目录,创立目录命令我都忘了。。。问问ChatGPT吧。

4)把开发好的jar包上传到曾经创立好的目录中

5)执行nohup命令

6)浏览器拜访swagger胜利了

6)应用感触,几分钟就解决了我的问题。防止了我一步步百度,去翻CSDN还容易找到谬误的答案。极大地节俭了我的工夫。因为后续还有几台机器要部署,曾经把命令和步骤整顿成文档积淀下来。

案例6 jar包进行过程Linux命令征询

上次用chatgpt帮我查问linux搭建java环境,后盾部署jar包的命令,这次jar包更新须要替换jar包。我又征询了如何进行jar包所在的过程。

1)执行第一个命令, ps -ef | grep jar 命令查找所有正在运行的jar包过程

2)执行第二个命令,kill -9 PID,这里我的jar包的过程PID是32723

3)重新部署jar包服务,这个命令之前曾经问过ChatGPT并积淀下来了,间接拷贝过去应用。

4)查看是否部署胜利

案例7 如果图灵奖得主、软件工程圣经《人月神话》作者还活着,他会如何对待ChatGPT晋升研发效力?

明天思考ChatGPT如何晋升研发效力这个问题。正当我为这个问题搜索枯肠的时候。忽然灵光一现,为什么不问ChatGPT帮我思考用ChatGPT如何晋升研发效力这个问题呢?

就像武侠电视剧和电影中的那样,剧中武侠高手左脚踩右脚就能腾空而起一样。那我问ChatGPT如何用ChatGPT晋升研发效力必定也是可行的。实践是可行的,那么OK让咱们开始实际。

首先咱们给ChatGPT设置一个角色。在软件工程提效畛域十分资深的巨匠有谁呢?我第一工夫就想到了人月神话的作者——布鲁克斯 FrederickP.Brooks.Jr

1)上面咱们给它一个指令:如果你是《人月神话》作者FrederickP.Brooks.Jr.,你须要以它的思维和角度思考我想你发问的问题。如果你了解了,请回复好的。

咱们能够看到它回复了好的。

2)接下来咱们给它第二个指令:当初ChatGPT十分厉害,你认为如何用它来晋升研发效力?

它以软件工程师的角度答复了ChatGPT技术能够从自动化测试、语言翻译、代码优化、主动文档化这几个角度来晋升研发效力。

1和3这两个曾经想到了,2目前不须要,第四个主动文档化的确没有想到。接下来咱们持续联合第4条主动文档化持续深刻诘问。

3)接下来是第三个指令:针对第四条主动文档化,请你编写一个Java的查问学生姓名和年龄的Controller接口,而后为这个接口生成提供给前端的API文档。

上面它间接编写了一个API接口,并间接用swagger来生成api文档了。

swagger接口

后果不是很现实,咱们再问问它是否还有其余用ChatGPT晋升研发效力的倡议

4)接下来是第四个指令:请你以《人月神话》作者FrederickP.Brooks.Jr.的角度提出10条用ChatGPT晋升研发效力的倡议。

最初它帮咱们生成了10条倡议

上面把倡议附赠给大家:

1.通过提供自然语言解决的能力,Chat GPT能够帮忙团队成员更高效地进行沟通和合作,缩小误会和沟通不畅的状况。

2.ChatGPT能够被用来智能化项目管理。例如,在团队中应用Chat GPT聊天机器人来跟踪进度、分配任务和协调团队成员的工作。

3.通过理解开发者的用意和需要,Chat GPT能够提供更加智能化和个性化的开发辅助工具,如代码提醒、谬误查看等。

4.ChatGPT能够利用机器学习和数据挖掘技术,从已有的代码库中提取最佳实际、代码片段和模板,并向开发者举荐最佳实际和代码重用。

5.ChatGPT能够作为一个知识库,帮忙开发者更快地获取所需信息。例如,ChatGPT能够答复对于某项技术或库的问题,或提供代码样例等。

6.在开发过程中,Chat GPT能够主动进行代码评审和测试,及时提供反馈和纠正错误,帮忙开发者更早地发现和解决问题。

7.ChatGPT能够主动剖析代码库中的反复代码、遗留代码和低效代码,提供优化倡议,并缩小代码保护累赘。

8.ChatGPT能够帮忙开发者进行数据分析和可视化,提供交互式摸索和信息出现性能,从而更好地了解数据和模型。

9.通过应用Chat GPT生成自然语言形容的形式,能够将机器学习模型的后果更加易读易懂地出现给非技术人员,并进步沟通效率。

10.最初,Chat GPT能够被用来开发智能化的应用程序,如聊天机器人、智能客服等,从而更好地服务用户。

案例8 应用ChatGPT帮忙查找bug

应用mybatis判断String字符串为空的条件表达式,我一开始写成 || 了。本人看了半天也没看出问题。询问ChatGPT一眼帮我找进去了。

案例9 重构代码AI插件摸索

idea装置插件【NexChatGpt】

1、在理论的开发中,对代码外面相识的两个类,进行形象重构。

能够间接生成两个类的形象父类,能够供参考

目前这个插件,有时候会呈现问题,还须要重启idea。

有时候提醒让贴上本人的代码。。。

收费发问30次。。。

还有些不稳固。。。

案例10 生成一个随机获取ip的算法

小试牛刀,胜利搞定

应用随机算法获取一个ip

以ip作为入参,胜利搞定我的需要

案例11 帮忙写一个简略的spring的ioc框架

太简单了,尽然无奈反对,就来一个简略的

再欠缺下,并帮忙写一个测试案例测试下看

亲自验证测试是否正确,是否跑起来

尽管可能跑起来,然而测试后果和其预期不统一,剖析谬误产生的起因是注解inject应用谬误,正确应用时须要对注解增加元注解@Retention,其作用能够简略了解为设置注解的生命周期。

@Retention 注解传入的是 RetentionPolicy 枚举,该枚举有三个常量,别离是 SOURCE、CLASS 和 RUNTIME

三者区别如下:

SOURCE 代表着注解仅保留在源级别中,编译器将Java文件编译成class文件时将之遗弃。

CLASS 代表着注解被保留在class文件中,JVM加载class文件时将之遗弃。

RUNTIME 代表着标记的注解会由JVM保留,因而运行时环境能够应用它。

总结:chat-gpt对于技术细节可能无奈把控,然而总体的程序框架及逻辑验证还是没有问题的。

案例12 生成 linux 常用命令思维导图,应用markdown语法输入

(该案例能够用于任何思维导图的应用中,进步写思维导图的效率,提醒: 思维反对markdown文件导入)

案例13 给我的项目构造/模块/类命名,命名简略了。

Martin Fowler 提出了一个经典的对于命名的语言:“一个好的命名就像是好的魔法,它能够让事件变得清晰易懂。”这个语言表达了好的命名在代码中的重要性,良好的命名能够帮忙读者更快地了解代码的用意和性能,进步代码的可读性和可维护性。同时,准确的命名也能够缩小代码中的歧义和谬误,使代码更加强壮。

以电商商品零碎为例,给提供一个 DDD我的项目模块命名样例

案例14 字符解决、文本格式化

JOSN 串的格式化与压缩:

案例15 增加代码正文/代码评审/询问代码设计思路

ChatGPT生成代码正文,以进步代码的可读性和可维护性。

代码的可读性很重要,因为代码是由人编写和保护的。当代码可读性差时,它

将很难了解和批改,这将导致代码的可维护性和可扩展性受到影响。特地是大

家都是团队单干,如果代码的可读性很差,必然影响到团队里的其他人,也非

常不便于扩大。

ChatGPT进行代码评审,以进步代码的品质和可靠性。

你还能够通过应用ChatGPT来进行代码评审。代码评审是指通过查看代码来发现和

修复谬误、缺点和不良实际的过程。ChatGPT进行代码评审能够帮忙开发人员发现

代码中的潜在问题,并提出改良倡议,从而进步代码的可靠性。

ChatGPT辅助进行代码逻辑重构

简单代码能够按需进行重构,联合设计模式,能够给ChatGPT下达按设计模式重构代码的指令。

ChatGPT辅助源代码浏览 ,以进步源码浏览功底。

案例16 对于新概念的学习,能够层层递进,举例子。

案例17 本文诗意命名的由来

ChatGPT的命名能力真的是无可挑剔,自然语言的解决解决能力、理解能力太强大了!

作者:京东批发 王英杰

内容起源:京东云开发者社区