分享个ChatGPT对日常工作的辅助场景,供大家参考哈 [广播][广播]
昨晚开会讨论梳理「优雅上下线标准流程规范」的过程中,有一个环节讨论到了「dubbo框架的delay」机制,需要共识是否放到我们流程里面,其实现场上没有一位同学能完整讲清楚、讲透彻 delay的实现原理,实现作用、生效环节等全部细节的,大家都局限在某个知识点上。
我们当场打开ChatGPT,把问题抛给他(因为使用了Custom instructions,且是GPT-4模型,就没有额外的prompt),问题也很自然,就是当时大家脑海中的疑问, 「dubbo 框架中延迟暴露是什么机制,什么原理,有什么作用?」, 通过看ChatGPT的回答答案,我们共识了,这个和我们现在手动 QOS on 、QOS off 是冲突的,对我们现在的流程没啥用,从而快速解决了此问题。
分析对比
如果没有ChatGPT,我们需要打开官网文档,去找这个「延迟暴露」相关资料,我搜索了整个dubbo.io 文档,相关的资料就这个,而这个内容根本无法解决我们当时的疑惑,即在我们标准规范中要不要加进去。
大概率需要落个待办事项,会后找同学专门研究,看文档,看源码,调试分析,得出类似ChatGPT的这个答案,我预计至少30分钟,甚至几个小时。
而我们用ChatGPT,从开始提出问题,到共识好需不需要放到我们优雅上线下标准流程里面(解决我们的问题),前后一共不到5分钟就解决了。
背景:最近在项目开发过程中,使用到Mybatis的批量更新语句时,当数据为1条时代码正常执行,当数据超过2条时代码执行出现错误,经百度及GPT查询得知需要在 JDBC数据库连接后添加参数 allowMultiQueries=true才能解决。在向GPT进行提问的过程中,发现不同的提示词在对GPT的影响很大,甚至影响答案的准确度。以下是一个具体案例:
不为GPT设置相关的prompt提示词 :
设置相关的prompt提示词:
你是一名具有多年Java开发和MyBatis框架经验的资深软件工程师。我是一名Java开发者,特别是在使用MyBatis框架方面。我在日常开发中遇到了一些问题,这些问题可能涉及到代码编写、数据库交互、性能优化等。请提供针对这些日常开发问题的解决方案,并特别关注在使用MyBatis框架时可能遇到的问题,请一步一步思考并执行,请使用Markdown格式,包含代码块、表格和清单,并提供至少两个实际的案例。(翻译成英文)
注意:在使用批量更新是不建议设置 allowMultiQueries=true参数,虽然可以提升性能,但是容易带来SQL注入的问题,建议使用原生JDBC进行批量更新
在进行专业术语的提问时,大家可以先设置一下提示词,不使用提示词的时候总感觉GPT给出的答案比较模糊,使用提示词GPT回答的会更加精炼以及准确,提示词的设置具体可以看prompt-Writing
今日我们组小伙伴分享的 mybatis 连接创建源码分析过程,其中讨论到了 mybatis 的配置文件中 xml 中超时时间的配置问题,什么情况下不生效? 即这段 代码。
大家深入讨论了 mybatis 的 defaultStatementTimeout 和 jdbc 驱动连接串种的 socketTimeout 区别,简单来说:
1、前者控制的是 sql 语句在 mysql 服务器上正常运行时的执行时间,超时后,JAVA 客户端就中断这次数据库请求。
2、后者是在 mysql 服务器阻塞、宕机、或者高并发情况,sql 还没有在 mysql 服务器上执行,阻塞住的时候,JAVA 客户端要中断这次情况,如果没有配置这个 socketTimeout,那么 JAVA 客户端就会永久等待,直到 JAVA 应用崩溃,引起故障。
当我把这个问题,抛给 ChatGPT 的时候,我震惊了,没想到回答的这么好,基本上都是对的,而且很容易理解和消化吸收,很多小伙伴其实并不理解这两者的区别,即使我们工程师讨论,也是只有极少数同学能理清楚这个概念,大部分没那么清楚。
大家可以看看,我把对话的原始链接和截图发出来,通过这个 case,ChatGPT 能够很好的辅助我们,对日常工作中不清楚、不清晰、理解不彻底的概念、难题,彻底消化掉,对我们自己的专业知识层面,也能帮助不少。