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,让程序员如虎添翼
- 洪兴股份主力资金持续净流入,3日共净流
- 福建普惠金融改革创新再出经验 第四批16
- 快报:浙富控股: 关于全资子公司江西自
- 南宁百货:公司于2020年7月申请免税品经
- 百事通!Free Arch: 将 IdentityServ
- 禹州市夏都街道:暖心服务递真情,居家隔
- 字母哥32+17+7雄鹿大胜公牛3-1 拉文空砍24+5+13
- 李盈莹生日中国女排20名队员满屏微笑,排
- “今年会是个团圆年”:元旦春节火车票,
- 本周盘点(12.12-12.16):北方导航周跌5
- 宇晶股份(002943)12月15日主力资金净卖
- 盘龙药业持续推动中成药生产和研发_今日讯
- 舞钢环境分局将开展危废固废领域安全生产
- 速递!借呗属于小额消费贷款吗(借呗用多
- 劳动争议申请书送达不到怎么办
- 焦点简讯:全市除霾治污专项行动扎实开展
- 英诺特(688253)12月13日主力资金净卖出
- 一字之差,肖战和周冬雨有资源冲突,小飞
- 中欧陆家嘴金融50人论坛启动暨研究院成立
- 拒绝抚养费多长时间可以申请强制执行
- 确保小麦价格在合理区间
- 世界最新:国产大飞机C919交付全球首家用
- 【全球报资讯】【和讯期货早报】新湖期货
- 和誉-B(02256.HK)附属宣布Fexagratinib
- 股票行情快报:长飞光纤(601869)12月6
- 【政策】普洱市发布促进民营经济发展的若
- 广西3.8亿元专项资金 支持漓江流域横向
- 今年“清朗”系列专项行动处置账号13.4亿
- 见微知著 全球首台12色眼底相机亮相
- 江苏创新运用《多重身份认定表》 确保代
- 新发现!新疆发现新矿物镁高铁角闪石 高
- 北斗铁路行业综合应用示范工程项目成功通
- 江苏常州构建全方位立体化公共安全网 筑
- 浙江省新冠病毒抗原检测试剂注册申请 获
- 总投资147.73亿元 国家电网今年首批抽水
- 针灸也能治疗新冠肺炎?张伯礼、刘保延教
- 美国纯电汽车市场扩大 特斯拉占据近四分
- 续航更长 Rivian计划在全系电动汽车中全
- 刚刚涨价的特斯拉 又在交付策略上搞事情
- 美国明确无人车乘员保护标准 自动驾驶不
- 总投资超2万亿韩元 韩国电动汽车电池制
- 汽油价格暴涨后 特斯拉在美国订单激增
- 理想L9内饰图曝光 新车续航可达1200km
- 美国华盛顿州通过法案 禁止在2030年销售
- 由于俄乌冲突导致美国油价飙升 特斯拉订
- 从寡头公司采购数百万欧元铝 特斯拉与俄
- 大众汽车发出警告 2022年增长前景或受影响
- 大众集团发布2021年财务数据 销量同比下
- 现代汽车在印度尼西亚工厂生产电动汽车
- 阿斯顿马丁将与Britishvolt合作 开发电
- 俄乌冲突加剧供应链中断 宝马下调2022年
- 特斯拉Semi重型卡车项目负责人 杰罗姆吉
- 造型惊艳奥迪首款纯电概念车亮相 将在20
- 业内人士表示 今年马斯克不太可能实现大
- 宝马集团宣布收购ALPINA 构建4大豪华车品牌
- 为什么旅游股表现抗跌 投资者应该在什么
- 三星电子与LGDisplay就OLED面板价格谈判
- 周厚健退休林澜接任董事长 海信集团确认
- 知产法院首次发布竞争垄断十大案例 过半
- 拒绝抚养费多长时间可以申请强制执行
- 确保小麦价格在合理区间
- 世界最新:国产大飞机C919交付全球首家用
- 【全球报资讯】【和讯期货早报】新湖期货
- 和誉-B(02256.HK)附属宣布Fexagratinib
- 股票行情快报:长飞光纤(601869)12月6
- 【政策】普洱市发布促进民营经济发展的若
- 广西3.8亿元专项资金 支持漓江流域横向
- 今年“清朗”系列专项行动处置账号13.4亿
- 见微知著 全球首台12色眼底相机亮相
- 江苏创新运用《多重身份认定表》 确保代
- 新发现!新疆发现新矿物镁高铁角闪石 高
- 北斗铁路行业综合应用示范工程项目成功通
- 江苏常州构建全方位立体化公共安全网 筑
- 浙江省新冠病毒抗原检测试剂注册申请 获
- 总投资147.73亿元 国家电网今年首批抽水
- 针灸也能治疗新冠肺炎?张伯礼、刘保延教
- 美国纯电汽车市场扩大 特斯拉占据近四分
- 续航更长 Rivian计划在全系电动汽车中全
- 刚刚涨价的特斯拉 又在交付策略上搞事情
- 美国明确无人车乘员保护标准 自动驾驶不
- 总投资超2万亿韩元 韩国电动汽车电池制
- 汽油价格暴涨后 特斯拉在美国订单激增
- 理想L9内饰图曝光 新车续航可达1200km
- 美国华盛顿州通过法案 禁止在2030年销售
- 由于俄乌冲突导致美国油价飙升 特斯拉订
- 从寡头公司采购数百万欧元铝 特斯拉与俄
- 大众汽车发出警告 2022年增长前景或受影响
- 大众集团发布2021年财务数据 销量同比下
- 现代汽车在印度尼西亚工厂生产电动汽车
- 阿斯顿马丁将与Britishvolt合作 开发电
- 俄乌冲突加剧供应链中断 宝马下调2022年
- 特斯拉Semi重型卡车项目负责人 杰罗姆吉
- 造型惊艳奥迪首款纯电概念车亮相 将在20
- 业内人士表示 今年马斯克不太可能实现大
- 宝马集团宣布收购ALPINA 构建4大豪华车品牌
- 为什么旅游股表现抗跌 投资者应该在什么
- 三星电子与LGDisplay就OLED面板价格谈判
- 周厚健退休林澜接任董事长 海信集团确认
- 知产法院首次发布竞争垄断十大案例 过半
- 从老坛酸菜到双汇香肠 这一届“3·15”
- 邓伦偷漏税被罚1.06亿元背后商业版图浮出
- 豆瓣网一年被处罚20次 国家网信办进驻豆
- 食安问题遭曝光 7-11便利店面临口碑危机
- 江歌母亲回应“刘鑫上诉”:意料之中,会
- 禹州一名高一学生反映不能返家 官方公布
- 河北顺平:“帮扶车间”鼓起村民“钱袋子
- 山西大同寻找确诊病例密接者的相关接触者
- 土耳其武术爱好者远渡重洋来福州:扎根二
- 隔离酒店的儿童画,藏着这样的暖心故事!
- 2021年男女新生儿“爆款”名字公布:分别
- 北京冬奥组委公布23日防疫情况
- 三亚警方:刘学州经抢救无效死亡 具体情
- 黑龙江为何近期污染天气频发?专家详解
- 河南郑州:理发店餐饮店等将有序恢复营业
- 吉林大学:32.62%的2021届毕业生选择东北
- 20日以来 郑州全市已连续4天实现“零新增”
- 20日以来 郑州全市已连续4天实现“零新增”
- 郑州24日启动肉蛋菜应急投放 低于市场价
- 河南郑州此轮疫情累计报告本土确诊病例13