Copilot 与 ChatGPT,让程序员如虎添翼 —— 让 AI 们为我们打工!:世界要闻
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 们为我们打工!:世界要闻
- 正业科技(300410)12月21日主力资金净卖出510.50万元
- 粤水电(002060)12月20日主力资金净卖出908.64万元
- ppmoney网贷逾期会爆件吗|世界速递
- 每日热闻!发布变更又快又稳?腾讯运维工程师经验首发
- 五矿发展(600058)12月19日主力资金净卖出1390.47万元
- 久其软件: 关于久其转债摘牌的公告
- 铜业股午后跌幅扩大,截至发稿,五矿资源(01208.HK)跌6.33%,报2.07港元_环球热点评
- 世界视讯!大湾区债券平台 跨境债券挂牌业务试点启动
- 山西沁水:“药材宝库”开出富民“千金方”
- 中评:国际专家探讨国际变局中的中欧智库交流
- 中航首钢绿能REIT基金经理变动:张为不再担任该基金基金经理
- 南新制药(688189):终止重大资产重组相关事项问询函的回复公告
- 科恒股份:正极材料产能利用率低是主要原材料价格大幅上涨导致公司资金面紧张所致
- 贷款有重婚罪怎样判 当前资讯
- FRM有哪些会员?都需要缴纳会员费吗?
- 超20城推出新房团购,官方默认房企降价销售
- 视点!Paragon 28(FNA.US)获B. Riley Securities首次覆盖,给予买入评级
- 黄山胶囊回应是否受托生产连花清瘟:暂无相关考虑-当前速讯
- qq上被骗的钱是否找回来吗
- 1腾轩旅游子公司通过网络竞价方式购买法院处置资产成交价760.57万
- 2个人如何买2手房贷款,按揭房如何再贷款
- 3“双十二观察”:文旅消费渐回暖 数字贸易添动力
- 4全球即时看!中欣氟材(002915.SZ)数名股东及高管拟合计减持不超2.94%公司股份
- 5Windows 11免费升级新招 Windows 7也能用
- 6中航电子: 大华会计师事务所(特殊普通合伙)关于中航航空电子系统股份有限公司换股吸收合并中航工业机电系统股份有限公司并募集配套资金暨关联交易的申请文件反馈意见中有关财务事项的说明-世界新动态
- 7世界最资讯丨安通控股: 第八届董事会2022年第三次临时会议决议的公告
- 8稳增长信号越发明显 私募机构整体业绩显著回暖
- 9“618”大促理性消费成主流 多种创新电商模式或引发新一轮洗牌
- 10深夜虚拟人如何持续卖货? 虚拟主播带货真的对消费者有吸引力吗?
- 1中核向晶科能源采购光伏设备以开发云南80MW光伏电站
- 2晶澳、一道和锦州阳光拟中标中广核新能源2022年第一批组件集采01标段
- 3对户用光伏设计提出要求 山东省出台《低压分布式光伏计量采集典型设计方案》
- 4南方能监局:加强南方区域新型储能发展应用监管工作
- 5工信部:打造绿色低碳产品供给体系,实施智能光伏产业创新发展专项行动
- 6国家统计局:2021年末并网太阳能发电装机30656万千瓦 增长20.9%
- 7德国将100%实现可再生能源发电提前至2035年
- 8西班牙Q-Energy到2025年将投资90亿欧元用于可再生能源
- 9江苏南京与华能集团共建的中国能谷项目正式启动
- 10天合光能与云南曲靖签约2GW光伏制造及地面光伏项目
广告
- 京运通与天合光能签订2.9亿片硅片销售大单 合同金额24.5亿元
- 浙江温州瑞安拟投资150亿元建滩涂光伏项目
- 云南巍山整县光伏招商:5000万产业配套、约3000万租金一次性付清
- 新疆巴州风、光600MW竞配业主公示:中石油、国家电投、国家能源集团拟中标
- 农业农村部:支持有条件的脱贫地区发展光伏产业
- 希腊石油公司收购希腊的303兆瓦太阳能项目
- SB Energy与First Solar达成1.5GW太阳能组件交易
- 总投资5亿元 广西平果市100MW农光互补项目签约落地
- 通讯:守护“地球皮肤” 让“草原归绿”
- 浙江温州两社区全员核酸检测:24699人全部阴性
- 上海防空警报全市鸣响 逾226万人参加防空疏散演练
- 河南发布中秋、国庆风险提示:防范遏制重特大事故发生
- 攀枝花一男子凌晨在金沙江非法捕捞并暴力拒捕,已被刑拘
- 南沙港铁路建设者中秋不停工 守护心中别样“圆”
- “体育里的非遗”看新疆:少数民族传统体育项目蓬勃发展
- 福建漳州新增2例确诊病例 分区精准防控疫情
- 河南部分地区将迎暴雨、大暴雨
- 动车司机王伟:职业生涯中最庄严、最难忘的5次鸣笛
- 厦门三医院停诊 同安区停产停工
- 中秋假期北京高速公路出行不免费 公交地铁将增加运力