當前位置: 妍妍網 > 碼農

8000 字 20 圖詳解,程式設計師如何透過ChatGPT4o提高工作效率

2024-07-08碼農

回復gpt,獲取國內直接使用ChatGPT4o地址

大家好,我是哪咤。

在國內,你光是能用上ChatGPT,就已經領先很多人了。 已經成為了前1%

聽過ChatGPT這個概念,但從未真正使用過占80%;聽過概念,嘗試使用,但是被門檻拒之門外,占70%;成功使用,只是玩了一下就再也沒登入過,占10%。

常常使用,且能夠熟練使用的,占比甚至不到1%…

如果你能夠熟練使用ChatGPT,熟練使用各種提問的方法,恭喜你,已經成為了頂尖的那1%

可是即便只有1%,也探索出了各種可能。

今天來分享ChatGPT4o在電腦領域的套用, 也許, 你和架構師之間,就差一個ChatGPT。

文章目錄:

1、編寫程式碼

2、修正程式碼錯誤、程式碼最佳化

3、解讀程式碼功能、程式碼轉譯

4、添加程式碼註釋

5、編寫單元測試類、給出測試用例

6、解決bug

7、編寫sql語句

8、解決jar包版本漏洞

9、工具類編寫

10、將Java程式碼轉為Python等語言

11、推薦解決方案

12、扮演終端

國內直接使用ChatGPT4o:

用官方一半價格的錢,用跟官方 ChatGPT4.0 一模一樣功能的工具。

國內直接使用 ChatGPT4o

  1. 無需魔法,同時支持電腦、手機,瀏覽器直接使用

  2. ChatGPT3.5永久免費

  3. 支持 Chat GPT-4o文本對話、 Copi lot編程、DALL-E AI繪畫、AI語音對話、論文外掛程式Consensus等

長按辨識下方二維碼,備註ai, 發給你

盡管 ChatGPT 不是專為編程設計的工具,但它可以作為一個有效的編程輔助工具。透過自然語言描述,ChatGPT 能實作類似編程的功能,從而降低編程門檻,幫助編程基礎較弱的使用者完成任務。它不僅能輕松處理編程任務,還可以修正程式碼錯誤、解釋程式碼、添加註釋、最佳化程式碼和轉譯程式碼。

此外,ChatGPT 還能充當 Linux 終端、SQL 終端、Python 編譯器和 JavaScript 控制台等。當使用者遇到技術難題時,也可以向 ChatGPT 尋求全面的技術解決方案。

ChatGPT 支持多種程式語言,如 Python、Java、JavaScript、C++、C#、Ruby、PHP、Swift、Kotlin、TypeScript、Go、Rust、Scala、R、MATLAB、Dart、Lua、SQL 和 Shell Script(例如 Bash)。

此外,ChatGPT 也能編寫 HTML 和 CSS,用於網頁制作。使用者只需用自然語言清楚地向 ChatGPT 描述需求,它便可以根據指令生成相應的程式碼,從而顯著減輕程式設計師的工作負擔。

一、編寫程式碼

Prompt:請用Java語言編寫一個二分尋找的樣例

以下是用 Java 語言編寫的二分尋找演算法的範例程式碼:

public classBinarySearchExample{
// 二分尋找方法
publicstaticintbinarySearch(int[] array, int target){
int left = 0;
int right = array.length - 1;
while (left <= right) {
int mid = left + (right - left) / 2;
// 檢查目標值是否位於中間位置
if (array[mid] == target) {
return mid;
}
// 如果目標值較大,忽略左半部份
if (array[mid] < target) {
left = mid + 1;
else {
// 如果目標值較小,忽略右半部份
right = mid - 1;
}
}
// 如果目標值不存在於陣列中,返回 -1
return -1;
}
publicstaticvoidmain(String[] args){
int[] array = {2341040};
int target = 10;
int result = binarySearch(array, target);
if (result == -1) {
System.out.println("元素不在陣列中");
else {
System.out.println("元素位於陣列的索引位置: " + result);
}
}
}





二、修正程式碼錯誤、程式碼最佳化

除了編寫程式碼,ChatGPT 還能協助程式設計師檢查並修正程式碼中的錯誤。它會分析給定的程式碼,檢查語法錯誤、邏輯漏洞或潛在的效能問題。在此過程中,ChatGPT 還依據編程經驗、最佳實踐和已知編程模式提供建議。

ChatGPT 還能幫助程式設計師最佳化程式碼,簡化邏輯、合並冗余部份或采用更簡潔的語法。它檢查程式碼的可讀性,包括命名規範、註釋、空格和縮排的使用情況。同時,ChatGPT 還提高程式碼的模組化程度,分析是否存在重復計算、低效數據結構和過度記憶體分配等效能問題。

它還會檢查程式碼是否有例外處理和錯誤檢查機制,以確保程式在遇到問題時能夠優雅地處理。此外,ChatGPT 能發現程式碼中的潛在安全漏洞,如 SQL 註入和跨站指令碼攻擊(XSS)等,並提供相應的修復建議。

Prompt:我們上傳一張華為OD演算法題的題目描述,再給它我的Java解題程式碼,問問它有什麽問題?

import java.util.Arrays;
import java.util.Scanner;
public classTest06{
publicstaticvoidmain(String[] args){
Scanner sc = new Scanner(System.in);
int[] arr = Arrays.stream(sc.nextLine().split(" ")).mapToInt(Integer::parseInt).toArray();
// 天兵天將將離開的時間H
int H = arr[arr.length - 1];
// 獲取每棵樹上蟠桃個數
arr = Arrays.copyOf(arr, arr.length - 1);
// 使用二分尋找尋找最小速度K
int minSpeed = findMinSpeed(arr, H);
System.out.println(minSpeed);
}
// 使用二分尋找尋找最小速度K
privatestaticintfindMinSpeed(int[] arr, int H){
int left = 1;
int right = Arrays.stream(arr).max().getAsInt();
while (left < right) {
int mid = left + (left - right) / 2;
if (canEatAll(arr, H, mid)) {
right = mid;
else {
left = mid + 1;
}
}
return left;
}
// 判斷在速度K下是否能在H小時內吃完所有桃子
privatestaticbooleancanEatAll(int[] arr, int H, int K){
int hours = 0;
for (int i = 0; i < arr.length; i++) {
hours += arr[i] / K;
if (arr[i] % K != 0) {
hours++;
}
}
return hours <= H;
}
}





三、解讀程式碼功能、程式碼轉譯

在訓練過程中,ChatGPT 學習了大量的編程範例和相關知識,使其能夠理解多種程式語言和程式框架的基礎結構,並具備程式碼功能解讀的能力。

首先,ChatGPT 能透過程式碼的語法和關鍵字來辨識出程式語言,例如 Java、Python 和 C++ 等。

然後,ChatGPT 會分析程式碼的結構,包括函式、類、迴圈和條件語句等,以便理解程式碼的組織方式。

最後,ChatGPT 解析程式碼的演算法和邏輯,目的是了解程式的功能和目標。這涉及跟蹤變量值、理解函式呼叫關系、判斷輸入和輸出等。在解讀程式碼功能的過程中,它還會考慮程式碼所處的上下文,包括程式碼的意圖、可能的套用場景及其與其他程式碼片段的關聯等。

透過這些步驟,ChatGPT 能夠全面地理解和解析各種程式語言的程式碼,從而更好地執行其功能。

Prompt:請解釋一下「改進後的演算法」的解題思路

備註:ChatGPT4o已經具備上下文記憶能力,透過關鍵詞就可以定位到之前的問題或回答。

關鍵點總結:

四、添加程式碼註釋

Prompt:請對「改進後的演算法」的程式碼,添加詳細的註釋

import java.util.Arrays;
import java.util.Scanner;
public classTest06{
publicstaticvoidmain(String[] args){
Scanner sc = new Scanner(System.in);
// 讀取輸入,並將輸入轉換為整數陣列
int[] arr = Arrays.stream(sc.nextLine().split(" ")).mapToInt(Integer::parseInt).toArray();
// 獲取最後一個元素,作為天兵天將離開的時間 H
int H = arr[arr.length - 1];
// 獲取每棵樹上的蟠桃個數,去掉陣列中的最後一個元素
arr = Arrays.copyOf(arr, arr.length - 1);
// 使用二分尋找尋找最小的速度 K
int minSpeed = findMinSpeed(arr, H);
// 輸出最小速度 K
System.out.println(minSpeed);
}
/**
* 使用二分尋找尋找吃完所有桃子的最小速度 K
*
@param arr 每棵樹上的蟠桃個數
@param H 天兵天將離開的時間
@return 最小速度 K
*/

privatestaticintfindMinSpeed(int[] arr, int H){
// 初始化二分尋找的左邊界和右邊界
int left = 1// 最小速度為 1
int right = Arrays.stream(arr).max().getAsInt(); // 最大速度為最大的一棵樹上的桃子數
// 二分尋找
while (left < right) {
// 計算中間值 mid
int mid = left + (right - left) / 2;
// 檢查是否可以在速度為 mid 的情況下,在 H 小時內吃完所有桃子
if (canEatAll(arr, H, mid)) {
// 如果可以,則嘗試更小的速度,將右邊界移動到 mid
right = mid;
else {
// 如果不可以,則需要更快的速度,將左邊界移動到 mid + 1
left = mid + 1;
}
}
// 返回最小速度
return left;
}
/**
* 判斷在給定速度 K 下,是否可以在 H 小時內吃完所有桃子
*
@param arr 每棵樹上的蟠桃個數
@param H 天兵天將離開的時間
@param K 給定的速度
@return 是否可以在 H 小時內吃完所有桃子
*/

privatestaticbooleancanEatAll(int[] arr, int H, int K){
// 初始化所需的總時間
int hours = 0;
// 遍歷每棵樹,計算吃完每棵樹上的桃子所需的時間
for (int i = 0; i < arr.length; i++) {
// 計算當前樹上的桃子需要的整小時數
hours += arr[i] / K;
// 如果不能整除,則需要額外增加一小時
if (arr[i] % K != 0) {
hours++;
}
}
// 如果總時間不超過 H 小時,返回 true,否則返回 false
return hours <= H;
}
}





五、編寫單元測試類、給出測試用例

Prompt:請根據「改進後的演算法」的程式碼,編寫幾個測試用例

Prompt:請為下面程式碼編寫單元測試類,編寫模擬報文,透過POST方式請求,並處理返回值

單元測試類關鍵點說明:

六、解決bug

朋友問的技術問題,幾秒鐘搞定,彰顯大佬風範!

七、編寫sql語句

雖然ChatGPT不是專門的資料庫開發工具,但它依然能夠編寫SQL語句。只需提供期望的操作、相關表格、欄位和條件等資訊,ChatGPT就可以生成相應的SQL程式碼。若有具體的套用情境,提供更詳細的資訊將有助於生成更加精確的SQL語句。

Prompt:透過MySQL編寫一個sql語句,表結構如圖,根據business分組,並透過score降序排序

SELECT c1.business, 
c1.dish, 
c1.efficiency, 
c1.sales_volume, 
c1.score
FROM commodity c1
JOIN (
SELECT business, MAX(score) AS max_score
FROM commodity
GROUPBY business
) c2
ON c1.business = c2.business AND c1.score = c2.max_score
ORDERBY c1.score DESC;

這個查詢語句首先在子查詢中對 business 分組並找出每個分組中的最高 score,然後在主查詢中根據這個最高分與原始表進行連線,並最終根據 score 降序排序結果。

八、解決jar包版本漏洞

Prompt:在idea裏如何檢視易受攻擊的依賴項

Prompt:bcprov-jdk15on 1.70 存在漏洞 升級成什麽版本,沒有漏洞

九、工具類編寫

Prompt:透過Java編寫HTTPS的伺服端、客戶端程式碼,並添加證書

十、將Java程式碼轉為Python等語言

你與精通所有語言的大佬,只差一個ChatGPT。

Prompt:透過Java編寫一段二分尋找的程式碼

Prompt:將上面程式碼轉為Python語言

十一、推薦解決方案

在計畫的開發與營運過程中,經常會遇到技術挑戰和營運障礙。此時,經驗豐富的技術經理和架構師需要提出解決方案,這些方案的優劣會直接影響計畫的成敗。ChatGPT透過大量的IT知識訓練,包括電腦科學、網路技術和軟體開發等,能夠理解各類技術問題並提供條理清晰的解決方案。它可以根據使用者的需求,對方案進行深入分析,提供多種選擇,幫助找到最合適的解決方案。

Prompt:有這樣一個需求,使用者想獲取ftp伺服器的檔,然後讀取檔的內容,存到Oracle資料庫中,但是檔數量很大,檔內數據又很多,執行速度非常慢,如何最佳化?

1、下載和讀取檔的多執行緒實作

import java.io.*;
import java.net.URL;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public classFTPDownloader{
privatestaticfinalint THREAD_COUNT = 10;
publicstaticvoidmain(String[] args){
ExecutorService executorService = Executors.newFixedThreadPool(THREAD_COUNT);
String[] fileUrls = {/* List of file URLs */};
for (String fileUrl : fileUrls) {
executorService.execute(() -> downloadFile(fileUrl));
}
executorService.shutdown();
}
privatestaticvoiddownloadFile(String fileUrl){
try (InputStream in = new URL(fileUrl).openStream()) {
BufferedReader reader = new BufferedReader(new InputStreamReader(in));
String line;
while ((line = reader.readLine()) != null) {
// Process each line and store in database
DatabaseWriter.addData(line);
}
catch (IOException e) {
e.printStackTrace();
}
}
}




2、批次插入數據實作

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
public classDatabaseWriter{
privatestaticfinal String DB_URL = "jdbc:oracle:thin:@localhost:1521:orcl";
privatestaticfinal String USER = "username";
privatestaticfinal String PASS = "password";
privatestaticfinalint BATCH_SIZE = 1000;
privatestatic List<String> buffer = new ArrayList<>();
publicstaticsynchronizedvoidaddData(String data){
buffer.add(data);
if (buffer.size() >= BATCH_SIZE) {
writeToDatabase();
}
}
privatestaticvoidwriteToDatabase(){
try (Connection conn = DriverManager.getConnection(DB_URL, USER, PASS)) {
conn.setAutoCommit(false);
String sql = "INSERT INTO your_table (column1) VALUES (?)";
try (PreparedStatement pstmt = conn.prepareStatement(sql)) {
for (String data : buffer) {
pstmt.setString(1, data);
pstmt.addBatch();
}
pstmt.executeBatch();
conn.commit();
}
buffer.clear();
catch (SQLException e) {
e.printStackTrace();
}
}
}



3、關鍵點總結

  1. 多執行緒並列下載和處理檔:利用執行緒池來並列處理檔下載和讀取操作。

  2. 批次插入:使用JDBC批次插入功能,將多條記錄一次性插入資料庫。

  3. 最佳化資料庫:確保資料庫表結構和索引最佳化,以提高插入和查詢效能。

  4. 異步處理:利用異步I/O來提高數據處理的並行性。

  5. 壓縮傳輸:如有可能,使用壓縮方式傳輸檔,以減少網路傳輸時間。

透過以上方法,可以大大提高從FTP伺服器獲取檔並將其內容存入Oracle資料庫的執行效率。

十二、扮演終端

盡管ChatGPT無法直接嵌入特定的終端環境,例如Linux終端、SQL控制台、JavaScript控制台或Python直譯器,但它能夠充當模擬終端的角色。也就是說,ChatGPT能夠理解並模擬終端命令的執行過程。比如,在Linux終端中,詢問ChatGPT如何使用某個特定的命令列指令時,ChatGPT可以理解並生成相應的命令列指令,甚至可以預估其執行結果。

雖然ChatGPT無法在這些終端上直接執行命令,但它能模擬命令的執行過程,幫助使用者理解和學習如何使用這些命令。對於編程初學者或正在學習新技術的開發者來說,這種模擬終端的功能有助於他們更好地理解和掌握各種程式語言及命令列工具的使用。

Prompt:我希望你充當Linux終端。我將輸入命令,你將回復終端應顯示的內容。我希望你只回復一個唯一程式碼塊中的終端輸出,沒有別的。不要寫解釋,除非我指示你這樣做,否則不要輸入命令。

·················END·················

用官方一半價格的錢,用跟官方 ChatGPT4.0 一模一樣功能的工具。

國內直接使用ChatGPT4o

  1. 無需魔法,同時支持手機、電腦,瀏覽器直接使用

  2. 帳號獨享

  3. ChatGPT3.5永久免費

長按辨識下方二維碼,備註ai,發給你

回復gpt,獲取ChatGPT4o直接使用地址

點選閱讀原文,國內直接使用ChatGpt4o