国产精品夜色视频一级区_hh99m福利毛片_国产一区二区成人久久免费影院_伊人久久大香线蕉综合影院75_国产精品久久果冻传媒

您的位置:首頁(yè) >聚焦 >

Copilot 與 ChatGPT,讓程序員如虎添翼 —— 讓 AI 們?yōu)槲覀兇蚬?!_世界頭條

2022-12-18 14:33:10    來(lái)源:程序員客棧

Copilot 來(lái)了,程序員會(huì)失業(yè)嗎?ChatGPT 又來(lái)了,程序員會(huì)失業(yè)嗎?程序員本來(lái)就焦慮,最近似乎越來(lái)越焦慮了。在 Copilot 問(wèn)世時(shí),我感覺(jué)自己退化成了工具人:《我退化成一個(gè)只會(huì)敲 Tab 鍵的工具人了!》。如今 ChatGPT 又來(lái)了,這次我是什么感覺(jué)呢?感覺(jué)真的 Google 和 StackOverflow 已經(jīng)不好用了。


【資料圖】

不過(guò),經(jīng)過(guò)一段時(shí)間對(duì) Copilot 的使用,我的心態(tài)已經(jīng)平和了許多,不再擔(dān)心失業(yè)了。回頭來(lái)看,其實(shí),它們都是效率工具,它們不是要干掉程序員,而是更好地幫助程序員。眾所周知,程序員可以改變世界,那么,借助 Copilot 和 ChatGPT,程序員的自我感覺(jué)更棒了!可以更加肆無(wú)忌憚地在未知領(lǐng)域里自由探索了!

探索 Vue

前幾天,我開(kāi)始對(duì)一個(gè) Vue 項(xiàng)目做一些迭代優(yōu)化,這是我第一次接觸 Vue 項(xiàng)目。我需要對(duì)該 Vue 項(xiàng)目進(jìn)行保護(hù),添加登錄功能,詳細(xì)過(guò)程見(jiàn)《使用 IdentityServer 保護(hù) Vue 前端》。我在這一篇日志里提了一下,說(shuō)自己參考 Vue 的官方文檔,給 Vue 應(yīng)用添加的方法,在 vue-router 的導(dǎo)航守衛(wèi)里,按照 vue-router 的官方文檔去拿這個(gè)方法,居然是 undefined!通過(guò) Google 搜索了很久,都是這種官方文檔類(lèi)似的說(shuō)明(然而并不管用?。?,于是我去 StackOverflow 上提了這個(gè)問(wèn)題:https://stackoverflow.com/questions/74769607/how-to-access-vues-methods-from-navigation-guard,這個(gè)問(wèn)題到現(xiàn)在,也沒(méi)有其他人(除了我自己)回復(fù)。

于是我抱著試一試的心理,在 ChatGPT 上問(wèn)了一下,沒(méi)有想到立即得到了詳細(xì)的解答:

它的思路是,將方法添加在 Vue 的 prototype 中,這樣,在導(dǎo)航守衛(wèi)里就能使用 this關(guān)鍵字去訪問(wèn)全局方法了!這真的是比 Google 好用呀!

探索 Mybatis plus

我對(duì) Java 也不熟,它的生態(tài)中很多組件,我聽(tīng)上去感覺(jué)就是拼寫(xiě)錯(cuò)誤。昨天在 Mybatis plus 上就栽了跟頭。事情是這樣的,我和同事們業(yè)余做了一個(gè)項(xiàng)目(有興趣一起來(lái)玩的同學(xué)們歡迎聯(lián)系哈),目前剛開(kāi)始,正在做一個(gè) 3D 世界里的角色可以選擇自己的皮膚顏色的功能。

https://brickverse.vercel.app/

或者這個(gè)鏈接:https://brick.cat

前端部署在 Vercel 上,后端部署在 Okteto 上。后端服務(wù)是一個(gè) Java 項(xiàng)目,我在這個(gè)項(xiàng)目里添加了 UserPreference 這個(gè)數(shù)據(jù)表,用來(lái)保存用戶(hù)的偏好設(shè)置,詳細(xì) api 文檔見(jiàn):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。

用戶(hù)可以有很多設(shè)置,我的設(shè)想是每個(gè)用戶(hù)可以有多個(gè) key-value 鍵值對(duì),但同一個(gè)用戶(hù),同一個(gè) key,只能有一條記錄。為了簡(jiǎn)單,就提供一個(gè)接口給到用戶(hù)添加或者更新偏好。我的設(shè)想是,對(duì)于同一個(gè) userId, key,如果沒(méi)有記錄就添加,有的話,就更新 value。我對(duì) Mybatis plus 不熟,但是在寫(xiě)的過(guò)程中,點(diǎn)出了一個(gè) saveOrUpdate 方法,就認(rèn)為這正是我要的,保存或者更新嘛。我在 Flyway 腳本里將 userId 和 key 設(shè)置成唯一索引,心想,當(dāng)我試著保存一個(gè)記錄時(shí),首先嘗試插入,碰到已有記錄的錯(cuò)誤時(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);}

沒(méi)想到,實(shí)際上,當(dāng)想要更新這個(gè) value 時(shí),仍然報(bào)了唯一索引沖突錯(cuò)誤,而沒(méi)有進(jìn)行更新。這時(shí),我才知道,這個(gè) saveOrUpdate,在不傳入主鍵時(shí),總是嘗試插入。這時(shí)我用 Google 搜索如何讓 saveOrUpdate 根據(jù)自定義查詢(xún)條件去判斷是否已存在呢?發(fā)現(xiàn)似乎只有國(guó)人在用 Mybatis Plus,找到的鏈接全是 csdn 對(duì) saveOrUpdate 的泛泛簡(jiǎn)介,沒(méi)有一篇文章講解高級(jí)用法。

這時(shí)我抱著試一試的想法,去問(wèn)了一下 ChatGPT,沒(méi)想到它立刻馬上給予了詳細(xì)的說(shuō)明,不僅有代碼示例,還有溫馨提示,主要指出我的代碼問(wèn)題在于調(diào)用 saveOrUpdate 時(shí),沒(méi)有去數(shù)據(jù)庫(kù)里查詢(xún)已有記錄。

你看,它給的代碼示例,在調(diào)用 saveOrUpdate 之前,先使用 QueryWrapper 去查詢(xún)了數(shù)據(jù)庫(kù)里的現(xiàn)有記錄,然后再設(shè)置值。看到這里我秒懂了,我需要在調(diào)用 saveOrUpdate 之前,根據(jù) userId 和 key 來(lái)查詢(xún)一下數(shù)據(jù)庫(kù)中的記錄。這時(shí),我想,能不能把這個(gè)查詢(xún)做為參數(shù)直接扔給 saveOrUpdate 呢?我試著在 saveOrUpdate 的第一個(gè)參數(shù)后加了一個(gè)逗號(hào),這時(shí), Copilot 就自動(dòng)幫我補(bǔ)全了代碼,我一看,還正是我需要的條件呢!

我按了一下 Tab 鍵,提交了這個(gè)改動(dòng):

在 cicd 流水線跑完后,我再試了一次,重新選擇皮膚顏色,更新成功了!

總結(jié)

我感覺(jué)自己從此可以擺脫面向 Google 和 StackOverflow 編程的習(xí)慣了,轉(zhuǎn)而面向 ChatGPT 和 Copilot 編程。ChatGPT 和 Copilot,可以讓程序員在嘗試新的領(lǐng)域時(shí),變得更加有效率。就像朋友圈有朋友留言說(shuō)的,ChatGPT 和 Copilot 可以互相結(jié)對(duì)編程,讓 AI 們?yōu)槲覀兇蚬ぃ?/p>

關(guān)鍵詞: 這個(gè)問(wèn)題 感覺(jué)自己 就能使用

相關(guān)閱讀