首页>动态>正文
【独家】Copilot 与 ChatGPT,让程序员如虎添翼 —— 让 AI 们为我们打工!
2022-12-19 21:55:37    来源:

Copilot 来了,程序员会失业吗?ChatGPT 又来了,程序员会失业吗?程序员本来就焦虑,最近似乎越来越焦虑了。在 Copilot 问世时,我感觉自己退化成了工具人:《我退化成一个只会敲 Tab 键的工具人了!》。如今 ChatGPT 又来了,这次我是什么感觉呢?感觉真的 Google 和 StackOverflow 已经不好用了。


【资料图】

不过,经过一段时间对 Copilot 的使用,我的心态已经平和了许多,不再担心失业了。回头来看,其实,它们都是效率工具,它们不是要干掉程序员,而是更好地帮助程序员。众所周知,程序员可以改变世界,那么,借助 Copilot 和 ChatGPT,程序员的自我感觉更棒了!可以更加肆无忌惮地在未知领域里自由探索了!

探索 Vue

前几天,我开始对一个 Vue 项目做一些迭代优化,这是我第一次接触 Vue 项目。我需要对该 Vue 项目进行保护,添加登录功能,详细过程见《使用 IdentityServer 保护 Vue 前端》。我在这一篇日志里提了一下,说自己参考 Vue 的官方文档,给 Vue 应用添加的方法,在 vue-router 的导航守卫里,按照 vue-router 的官方文档去拿这个方法,居然是 undefined!通过 Google 搜索了很久,都是这种官方文档类似的说明(然而并不管用!),于是我去 StackOverflow 上提了这个问题:https://stackoverflow.com/questions/74769607/how-to-access-vues-methods-from-navigation-guard,这个问题到现在,也没有其他人(除了我自己)回复。

于是我抱着试一试的心理,在 ChatGPT 上问了一下,没有想到立即得到了详细的解答:

它的思路是,将方法添加在 Vue 的 prototype 中,这样,在导航守卫里就能使用 this关键字去访问全局方法了!这真的是比 Google 好用呀!

探索 Mybatis plus

我对 Java 也不熟,它的生态中很多组件,我听上去感觉就是拼写错误。昨天在 Mybatis plus 上就栽了跟头。事情是这样的,我和同事们业余做了一个项目(有兴趣一起来玩的同学们欢迎联系哈),目前刚开始,正在做一个 3D 世界里的角色可以选择自己的皮肤颜色的功能。

https://brickverse.vercel.app/

或者这个链接:https://brick.cat

前端部署在 Vercel 上,后端部署在 Okteto 上。后端服务是一个 Java 项目,我在这个项目里添加了 UserPreference 这个数据表,用来保存用户的偏好设置,详细 api 文档见:https://brickverse-user-service-gracewen1.cloud.okteto.net/doc.html#/brick/%E5%BD%93%E5%89%8D%E7%94%A8%E6%88%B7%E5%81%8F%E5%A5%BD%E7%AE%A1%E7%90%86/createOrUpdateUserPreferenceUsingPOST。

用户可以有很多设置,我的设想是每个用户可以有多个 key-value 键值对,但同一个用户,同一个 key,只能有一条记录。为了简单,就提供一个接口给到用户添加或者更新偏好。我的设想是,对于同一个 userId, key,如果没有记录就添加,有的话,就更新 value。我对 Mybatis plus 不熟,但是在写的过程中,点出了一个 saveOrUpdate 方法,就认为这正是我要的,保存或者更新嘛。我在 Flyway 脚本里将 userId 和 key 设置成唯一索引,心想,当我试着保存一个记录时,首先尝试插入,碰到已有记录的错误时,该方法就转而调用 update。

CREATE TABLE `user_preference` (`id` bigint NOT NULL AUTO_INCREMENT,`user_id` varchar(100) NOT NULL,`key` varchar(100) NOT NULL,`value` varchar(10000) NOT NULL,`create_time` datetime DEFAULT NULL,`update_time` datetime DEFAULT NULL,PRIMARY KEY (`id`),UNIQUE KEY `user_id_key` (`user_id`,`key`)) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci

public boolean saveOrUpdatePreference(String userId, UserPreferenceDto dto) {var key = dto.getKey();var value = dto.getValue();UserPreference userPreference = new UserPreference();userPreference.setUserId(userId);userPreference.setKey(key);userPreference.setValue(value);return this.saveOrUpdate(userPreference);}

没想到,实际上,当想要更新这个 value 时,仍然报了唯一索引冲突错误,而没有进行更新。这时,我才知道,这个 saveOrUpdate,在不传入主键时,总是尝试插入。这时我用 Google 搜索如何让 saveOrUpdate 根据自定义查询条件去判断是否已存在呢?发现似乎只有国人在用 Mybatis Plus,找到的链接全是 csdn 对 saveOrUpdate 的泛泛简介,没有一篇文章讲解高级用法。

这时我抱着试一试的想法,去问了一下 ChatGPT,没想到它立刻马上给予了详细的说明,不仅有代码示例,还有温馨提示,主要指出我的代码问题在于调用 saveOrUpdate 时,没有去数据库里查询已有记录。

你看,它给的代码示例,在调用 saveOrUpdate 之前,先使用 QueryWrapper 去查询了数据库里的现有记录,然后再设置值。看到这里我秒懂了,我需要在调用 saveOrUpdate 之前,根据 userId 和 key 来查询一下数据库中的记录。这时,我想,能不能把这个查询做为参数直接扔给 saveOrUpdate 呢?我试着在 saveOrUpdate 的第一个参数后加了一个逗号,这时, Copilot 就自动帮我补全了代码,我一看,还正是我需要的条件呢!

我按了一下 Tab 键,提交了这个改动:

在 cicd 流水线跑完后,我再试了一次,重新选择皮肤颜色,更新成功了!

总结

我感觉自己从此可以摆脱面向 Google 和 StackOverflow 编程的习惯了,转而面向 ChatGPT 和 Copilot 编程。ChatGPT 和 Copilot,可以让程序员在尝试新的领域时,变得更加有效率。就像朋友圈有朋友留言说的,ChatGPT 和 Copilot 可以互相结对编程,让 AI 们为我们打工!

关键词:

【独家】Copilot 与 ChatGPT,让程序员如虎添翼 —— 让 AI 们为我们打工!

Copilot来了,程序员会失业吗?ChatGPT又来了,程序员会失业吗?程序员本来就焦虑,最近似乎越来越焦虑了。在Copilot问世时,我感觉自己退化2022-12-19

小赢卡贷逾期14年不还会不会上征信|百事通

网贷逾期一般会上征信,有些借贷机构在用户逾期后一天后就会上报给征信机构,而有些借贷机构则是会在几天后上报给征信机构,因为有些借贷机构可2022-12-19

国金证券:维持信达生物(01801)“买入”评级 后续股价催化剂密集|世界热点评

信达生物(01801)本次与LG化学合作将取得Tigulixostat在中国的独家开发和商业化权益。 2022-12-19

襄城县人社局:学深悟透抓落实 笃行奋进担使命

近日,襄城县人社局党员干部纷纷表示,要切实把思想和行动统一到党的二十大精神上来,认真领悟党的二十大提出的新思想新论断、作出的新部署新2022-12-19

【播资讯】欧文道歉:我承担责任 我只想为世界带来光明与和平

欧文道歉:我承担责任我只想为世界带来光明与和平,凯里·欧文,凯瑞-欧文,反犹,仇恨2022-12-18

天天微速讯:Vivado 视频教程:IP Integrator

varplayer=polyvObject( plv_608c319f9fd042b741407763e30e8500_6 ) videoPlayer({ width : 680 , height : 381 , vid : 608c319f9fd042b7414 Vivado视频教程:IPIntegrator2022-12-17

川财证券陈雳:以居民收入增长支撑消费扩大 全球讯息

中央经济工作会议12月15日至16日在北京举行。川财证券首席经济学家、研究所所长陈雳表示,会议重点强调了实施扩大内需战略同深化供给侧结构性2022-12-16

环球精选!龙元建设(600491.SH)股东赖晔鋆累计减持比例达1.97%

智通财经APP讯,龙元建设(600491)(600491 SH)发布公告,公司于2022年12月16日收到股东赖晔鋆女士的通知,2022年11月24日至20222022-12-16

罗麦科技的非凡十年:“在红海中找到蓝海” 构建大健康行业新标杆

经过上世纪90年代的辉煌,和本世纪前20年的发展和繁荣,国内的保健食品行业已经达到千亿规模,逐步成为人们日常生活的一部分。统计数据显示,2022-12-16

棒杰股份: 关于向全资子公司划转资产完成过户登记的公告 世界新消息

棒杰股份:关于向全资子公司划转资产完成过户登记的公告2022-12-15

博通集成(603068)12月15日主力资金净买入2340.92万元

截至2022年12月15日收盘,博通集成(603068)报收于34 56元,上涨5 69%,换手率7 94%,成交量11 94万手,成交额4 1亿元。12月152022-12-15

马斯克的Twitter贷款让债权人损失惨重:各大银行正筹划如何减记 环球热议

新浪科技讯北京时间12月14日上午消息,据报道,三位知情人士今日称,向埃隆·马斯克(ElonMusk)提供130亿美元贷款用于收购Twitter的一些银行2022-12-15

苯每吨多钱(苯二氮多少钱一盒)_天天快资讯

贵还是贵,纯苯最新价格。甲苯昨天。有100元,总烷基苯)导热油基本(在2万吨以上,邻苯二甲酸二辛酯,环丁基-3-甲基丁基)。山东市场7100-7300左2022-12-14

市领导到轵城镇调研指导工作

8月10日,市委副书记贾宏宇带领市委办、市旅游局相关工作人员一行深入轵城镇调研指导工作。贾宏宇一行先后实地调研了瑞星农牧生态园、聂庄贾沟2022-12-14

卓易信息(688258)12月13日主力资金净卖出508.45万元

截至2022年12月13日收盘,卓易信息(688258)报收于42 58元,下跌5 19%,换手率0 89%,成交量0 77万手,成交额3339 09万元。2022-12-14

AI应用Lensa AI霸榜多国APP Store,到底啥来头?(附lensa下载官网) 全球速看

编程客栈()12月13日消息:最近一款名为Lensa的AI美图软件在社交媒体走红,并在多国APPStore霸榜了。用户只需要用户自拍照,就能能生成各种不同风2022-12-13

穗恒运A:12月12日融券卖出金额6.12万元,占当日流出金额的0.45%

同花顺数据中心显示,穗恒运A12月12日获融资买入205 64万元,占当日买入金额的24 06%,当前融资余额1 69亿元,占流通市值的3 23%,低于历史302022-12-13

中国海防: 中国海防关于2019年发行股份购买资产之限售股上市流通公告

股票代码:600764          股票简称:中国海防                  编号:临2022-048 中国船舶重工集团海洋防务2022-12-12

全新校园环境 “小豆包”入学适应教育趣味开启 快看

一年级新生接受入学适应教育,提前熟悉同班级的小伙伴。“孩子们,早上好!”昨天一早,黑芝麻胡同小学的门口立上了“我们上学啦”的卡通立牌2022-12-12

做强供应链金融服务 稳链固链强链助实体

“年初、季末都是我们的用款高峰,关键时点每周要提款3次到5次,在2022-12-11

大悦城(000031)12月8日主力资金净买入5589.42万元

截至2022年12月8日收盘,大悦城(000031)报收于4 38元,上涨10 05%,涨停,换手率1 0%,成交量40 0万手,成交额1 71亿元。12月8日2022-12-09

美诺华(603538)12月7日主力资金净买入1399.32万元|全球聚看点

截至2022年12月7日收盘,美诺华(603538)报收于27 38元,上涨3 79%,换手率5 41%,成交量11 39万手,成交额3 06亿元。12月7日的2022-12-08

股票行情快报:渝农商行(601077)12月6日主力资金净买入745.18万元_环球即时看

截至2022年12月6日收盘,渝农商行(601077)报收于3 65元,上涨0 0%,换手率0 91%,成交量53 44万手,成交额1 95亿元。12月6日的资2022-12-06

总投资256亿元!湖州德清60个重大项目集中签约

日前,湖州德清举行在湖州看见美丽中国实干争先主题实践2022年半年度重大项目集中签约仪式。本次活动共签约产业项目60个,涵盖了绿色家居、2022-07-18

森林覆盖率达50%!优良生态环境成为张家口的一张靓丽名片

早春时节,行走张垣大地,空气清爽,河面解冻,绿意萌发。一幅优美的生态画卷徐徐铺展,既是大自然的馈赠,更是张家口对生态环境潜心保护的2022-03-21