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,让程序员如
- 唯品会荣获和讯第20届中国财经风云榜“20
- 每日观点:联化科技董秘回复:德州联化电
- 关于羊了个羊的一些用药提示(发烧用药)
- 环球视点!新华全媒+|海南努力为“候鸟
- 劳动合同的变更如何?
- 今日看点:全网大片一搜即有,点击秒播!
- 国家发改委:猪肉价格退出过度上涨预警区
- 天天实时:君正集团:公司投资建设的绿色
- 中国美院可以助学贷款吗,国开行助学贷款
- 养马蜂怎么过冬 养马蜂如何安全过冬呢|
- 每日聚焦:涨停雷达:数字经济个股异动
- 12月14日基金净值:华安智能生活混合A最
- 南召四棵树乡:林下经济铺就“致富路”-
- 中锐股份:12月13日获融资买入1113.01万
- 世界观焦点:山西全面切入“复工复产”
- 全球热讯:翰宇药业:根据此前完成的假病
- 欧盟成员国未能就第九轮对俄制裁方案达成
- 教师节出生的人是什么星座 这个星座有什
- 焦点快报!华金资本董秘回复:公司并未直
- 热点评!本周盘点(12.5-12.9):亿利洁
- 中国工程院院士、瑞金医院院长宁光细说:
- 环球快资讯丨港股异动 | 微创机器人-B(
- 百科 男性礼割是什么意思
- 百科 天津地铁3号线运营时间
- 知识 中级工程师评定条件
- 知识 霍格沃茨的四个学院分别叫什么
- 知识 wow旋云之巅金色宝珠在哪
- 知识 授权书怎么写
- 百科 汤泉逸墅属于哪个街道
- 知识 历史专业考研
- 知识 5寸照片是多少厘米
- 知识 仪琳扮演者 仪琳是谁扮演的
- 知识 张悟本事件折射出哪些
- “5·20”助推甜蜜经济 旅行成为这届年
- 今年“清朗”系列专项行动处置账号13.4亿
- 见微知著 全球首台12色眼底相机亮相
- 江苏创新运用《多重身份认定表》 确保代
- 新发现!新疆发现新矿物镁高铁角闪石 高
- 北斗铁路行业综合应用示范工程项目成功通
- 江苏常州构建全方位立体化公共安全网 筑
- 浙江省新冠病毒抗原检测试剂注册申请 获
- 总投资147.73亿元 国家电网今年首批抽水
- 针灸也能治疗新冠肺炎?张伯礼、刘保延教
- 美国纯电汽车市场扩大 特斯拉占据近四分
- 续航更长 Rivian计划在全系电动汽车中全
- 刚刚涨价的特斯拉 又在交付策略上搞事情
- 美国明确无人车乘员保护标准 自动驾驶不
- 总投资超2万亿韩元 韩国电动汽车电池制
- 汽油价格暴涨后 特斯拉在美国订单激增
- 理想L9内饰图曝光 新车续航可达1200km
- 美国华盛顿州通过法案 禁止在2030年销售
- 由于俄乌冲突导致美国油价飙升 特斯拉订
- 从寡头公司采购数百万欧元铝 特斯拉与俄
- 大众汽车发出警告 2022年增长前景或受影响
- 大众集团发布2021年财务数据 销量同比下
- 现代汽车在印度尼西亚工厂生产电动汽车
- 阿斯顿马丁将与Britishvolt合作 开发电
- 俄乌冲突加剧供应链中断 宝马下调2022年
- 特斯拉Semi重型卡车项目负责人 杰罗姆吉
- 热点评!本周盘点(12.5-12.9):亿利洁
- 中国工程院院士、瑞金医院院长宁光细说:
- 环球快资讯丨港股异动 | 微创机器人-B(
- 百科 男性礼割是什么意思
- 百科 天津地铁3号线运营时间
- 知识 中级工程师评定条件
- 知识 霍格沃茨的四个学院分别叫什么
- 知识 wow旋云之巅金色宝珠在哪
- 知识 授权书怎么写
- 百科 汤泉逸墅属于哪个街道
- 知识 历史专业考研
- 知识 5寸照片是多少厘米
- 知识 仪琳扮演者 仪琳是谁扮演的
- 知识 张悟本事件折射出哪些
- “5·20”助推甜蜜经济 旅行成为这届年
- 今年“清朗”系列专项行动处置账号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日防疫情况
- 三亚警方:刘学州经抢救无效死亡 具体情