Copilot 來了,程序員會失業(yè)嗎?ChatGPT 又來了,程序員會失業(yè)嗎?程序員本來就焦慮,最近似乎越來越焦慮了。在 Copilot 問世時,我感覺自己退化成了工具人:《我退化成一個只會敲 Tab 鍵的工具人了!》。如今 ChatGPT 又來了,這次我是什么感覺呢?感覺真的 Google 和 StackOverflow 已經(jīng)不好用了。
不過,經(jīng)過一段時間對 Copilot 的使用,我的心態(tài)已經(jīng)平和了許多,不再擔(dān)心失業(yè)了。回頭來看,其實,它們都是效率工具,它們不是要干掉程序員,而是更好地幫助程序員。眾所周知,程序員可以改變世界,那么,借助 Copilot 和 ChatGPT,程序員的自我感覺更棒了!可以更加肆無忌憚地在未知領(lǐng)域里自由探索了!
探索 Vue前幾天,我開始對一個 Vue 項目做一些迭代優(yōu)化,這是我第一次接觸 Vue 項目。我需要對該 Vue 項目進行保護,添加登錄功能,詳細過程見《使用 IdentityServer 保護 Vue 前端》。我在這一篇日志里提了一下,說自己參考 Vue 的官方文檔,給 Vue 應(yīng)用添加的方法,在 vue-router 的導(dǎo)航守衛(wèi)里,按照 vue-router 的官方文檔去拿這個方法,居然是 undefined!通過 Google 搜索了很久,都是這種官方文檔類似的說明(然而并不管用?。?,于是我去 StackOverflow 上提了這個問題:https://stackoverflow.com/questions/74769607/how-to-access-vues-methods-from-navigation-guard,這個問題到現(xiàn)在,也沒有其他人(除了我自己)回復(fù)。
(相關(guān)資料圖)
于是我抱著試一試的心理,在 ChatGPT 上問了一下,沒有想到立即得到了詳細的解答:
它的思路是,將方法添加在 Vue 的 prototype 中,這樣,在導(dǎo)航守衛(wèi)里就能使用 this關(guān)鍵字去訪問全局方法了!這真的是比 Google 好用呀!
探索 Mybatis plus我對 Java 也不熟,它的生態(tài)中很多組件,我聽上去感覺就是拼寫錯誤。昨天在 Mybatis plus 上就栽了跟頭。事情是這樣的,我和同事們業(yè)余做了一個項目(有興趣一起來玩的同學(xué)們歡迎聯(lián)系哈),目前剛開始,正在做一個 3D 世界里的角色可以選擇自己的皮膚顏色的功能。
https://brickverse.vercel.app/
或者這個鏈接:https://brick.cat
前端部署在 Vercel 上,后端部署在 Okteto 上。后端服務(wù)是一個 Java 項目,我在這個項目里添加了 UserPreference 這個數(shù)據(jù)表,用來保存用戶的偏好設(shè)置,詳細 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。
用戶可以有很多設(shè)置,我的設(shè)想是每個用戶可以有多個 key-value 鍵值對,但同一個用戶,同一個 key,只能有一條記錄。為了簡單,就提供一個接口給到用戶添加或者更新偏好。我的設(shè)想是,對于同一個 userId, key,如果沒有記錄就添加,有的話,就更新 value。我對 Mybatis plus 不熟,但是在寫的過程中,點出了一個 saveOrUpdate 方法,就認為這正是我要的,保存或者更新嘛。我在 Flyway 腳本里將 userId 和 key 設(shè)置成唯一索引,心想,當我試著保存一個記錄時,首先嘗試插入,碰到已有記錄的錯誤時,該方法就轉(zhuǎn)而調(diào)用 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 根據(jù)自定義查詢條件去判斷是否已存在呢?發(fā)現(xiàn)似乎只有國人在用 Mybatis Plus,找到的鏈接全是 csdn 對 saveOrUpdate 的泛泛簡介,沒有一篇文章講解高級用法。
這時我抱著試一試的想法,去問了一下 ChatGPT,沒想到它立刻馬上給予了詳細的說明,不僅有代碼示例,還有溫馨提示,主要指出我的代碼問題在于調(diào)用 saveOrUpdate 時,沒有去數(shù)據(jù)庫里查詢已有記錄。
你看,它給的代碼示例,在調(diào)用 saveOrUpdate 之前,先使用 QueryWrapper 去查詢了數(shù)據(jù)庫里的現(xiàn)有記錄,然后再設(shè)置值。看到這里我秒懂了,我需要在調(diào)用 saveOrUpdate 之前,根據(jù) userId 和 key 來查詢一下數(shù)據(jù)庫中的記錄。這時,我想,能不能把這個查詢做為參數(shù)直接扔給 saveOrUpdate 呢?我試著在 saveOrUpdate 的第一個參數(shù)后加了一個逗號,這時, Copilot 就自動幫我補全了代碼,我一看,還正是我需要的條件呢!
我按了一下 Tab 鍵,提交了這個改動:
在 cicd 流水線跑完后,我再試了一次,重新選擇皮膚顏色,更新成功了!
總結(jié)我感覺自己從此可以擺脫面向 Google 和 StackOverflow 編程的習(xí)慣了,轉(zhuǎn)而面向 ChatGPT 和 Copilot 編程。ChatGPT 和 Copilot,可以讓程序員在嘗試新的領(lǐng)域時,變得更加有效率。就像朋友圈有朋友留言說的,ChatGPT 和 Copilot 可以互相結(jié)對編程,讓 AI 們?yōu)槲覀兇蚬ぃ?/p>
雪峰科技最新股東戶數(shù)3 36萬戶,呈現(xiàn)連續(xù)4期下降,低于行業(yè)平均水平。公司戶均持有流通股份1 96萬股;...
1月10日,華夏中證新能源汽車ETF最新單位凈值為1 7715元,累計凈值為1 7715元,較前一交易日上漲1 14...
四集電視專題片《永遠吹沖鋒號》第四集《永遠在路上》,將于1月10日在中央電視臺綜合頻道晚8點檔播出。...
1月9日天津自貿(mào)區(qū)板塊較上一交易日下跌1 68%,卓朗科技領(lǐng)跌。當日上證指數(shù)報收于3176 08,上漲0 58%...
新華社濟南1月9日電(記者張武岳)2022-2023賽季中國男子籃球職業(yè)聯(lián)賽(CBA)常規(guī)賽第24輪9日結(jié)束6場較...
抖音聊天一小步,“截胡”微信一大步?@新熵原創(chuàng)作者丨櫻木編輯丨月見新年伊始,抖音再次潛入了微信的后...
1、新鮮蘆薈葉汁涂抹法:在蘆薈植株下部剪取一小塊蘆薈葉片洗凈,將蘆薈葉的表皮撕去,輕輕地將蘆薈液汁...
智通財經(jīng)APP訊,長久物流發(fā)布公告,公司于2023年1月5日接到控股股東長久集團通知,獲悉其所持有公司的59...
作者|磊哥來源|Java中文社群(ID:javacn666)轉(zhuǎn)載請聯(lián)系授權(quán)(微信ID:GG_Stone)人生匆匆三十四余載,...
萬潤股份(002643)01月06日在投資者關(guān)系平臺上答復(fù)了投資者關(guān)心的問題。
?申購家庭應(yīng)攜帶以下材料到場選房:1 本市戶籍居民家庭提交申請核驗人及家庭成員身份證(家庭成員是現(xiàn)...
據(jù)大公網(wǎng)報導(dǎo),香港與內(nèi)地最快1月8日有序全面通關(guān)。闊別三年,從福田口岸去香港有哪些新變化?1月4日,...
平?jīng)鍪强刂莆鞅钡慕煌ㄒ?,這里既是通往西域最為便捷的路徑,也是連接塞外的要道。
本次活動結(jié)合市民歲末團聚和新春團圓的寓意,融合年俗、年味、年禮、年歡、年趣,因時制宜打造重慶火鍋...
1月3日,嘉實穩(wěn)惠6個月持有期混合A最新單位凈值為1 009元,累計凈值為1 009元,較前一交易日上漲0 58...
證券代碼:300677證券簡稱:英科醫(yī)療公告編號:2023-001債券代碼:123029債券簡稱:英科轉(zhuǎn)債英科醫(yī)療科
公共關(guān)系活動必須始終堅持和遵循以下基本原則:1、尊重事實原則。真實是公共關(guān)系的生命。尊重事實就是一...
證券時報網(wǎng)訊,申萬宏源發(fā)布策略研報指出,短期成長相對價值的性價比已調(diào)整到位,春季行情消費搭臺,打...
2022年12月29日申聯(lián)生物融資凈償還18 76萬元,融資余額4292 91萬元
格隆匯12月29日丨瑞可達(688800 SH)公布,2022年5月21日公司披露了《關(guān)于自愿披露投資設(shè)立境外子公司的...
我的玩具樂高直升飛機作文第一篇我的心愛之物不是動物、植物,也不是文具、工藝品,和別人的都不一樣,...
近期A股影視板塊再現(xiàn)普漲。與此同時,全國院線恢復(fù)營業(yè)的比例也在不斷提高。不過相較于市場樂觀情緒,近...
12月21日,NinepointPartnersLP的合伙人兼高級投資組合經(jīng)理EricNuttall表示,2023年油價將回到每桶100美...
俄羅斯總統(tǒng)普京12月27日簽署政令,從2023年2月1日起,禁止向俄羅斯石油實施價格上限的國家出口石油產(chǎn)品...
2號線具體站點為:玉洞站-金象站-石子塘站-大沙田站-五象大道站、江南客運站-白沙大道站-石柱嶺站-福建...
X 關(guān)閉
X 關(guān)閉