国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

解放雙手!ChatGPT助力編寫JAVA框架

這篇具有很好參考價值的文章主要介紹了解放雙手!ChatGPT助力編寫JAVA框架。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

親愛的Javaer們,在平時編碼的過程中,你是否曾想過編寫一個Java框架去為開發(fā)提效?但是要么編寫框架時感覺無從下手,不知道從哪開始。要么有思路了后對某個功能實現(xiàn)的技術(shù)細節(jié)不了解,空有想法而無法實現(xiàn)。如果你遇到了這些問題,看完這篇文章你也能用ChatGPT編寫一個簡單的JAVA框架。

構(gòu)思清晰

首先,你需要明確你的框架要解決什么問題,具有什么特性。這將有助于ChatGPT更好的理解你的需求。

例如:我在一個前后端分離的需求中發(fā)現(xiàn)有太多的枚舉類的描述需要給前端返回。傳統(tǒng)的方式是后端根據(jù)枚舉類的映射,每個枚舉值編寫代碼映射成描述給前端返回。但這次需求需要給前端返回的枚舉描述太多了。這讓我和我的小伙伴們感覺無從下手。所以我就思考能否編寫一個注解自動幫我們掃描這些枚舉類,然后生成key和描述的map,最終放到容器中去呢?

解決問題:解決前后端分離過程中需要手動編寫代碼將枚舉key的描述映射給前端。

特性:框架有一個注解,注解有三個字段name,key,和desc,修飾在枚舉類上??蚣苄杼峁┩獠揩@取枚舉map的接口。

與 ChatGPT 交流

啟動 ChatGPT,向它講述你的構(gòu)想和需求。它可以為你生成初始代碼、提供結(jié)構(gòu)建議,甚至幫你處理一些邏輯。

想好了框架要解決的問題和框架的特性之后,接下來就要將框架要解決的問題和特性給總結(jié)成一段文字發(fā)給ChatGPT

chatgpt根據(jù)我的需求大概生成了下框架的demo版本??梢钥吹胶臀以O(shè)想的還是有些區(qū)別的,我想是將枚舉放在類上。然后枚舉的屬性有name,key,和desc。

name:代表枚舉map在最外層map中的key。

key:代表枚舉的key或值字段。

desc:代表枚舉的描述字段。

深入互動

與 ChatGPT 進行更深入的交流,詢問它關(guān)于代碼優(yōu)化、異常處理等方面的建議。它可以幫你找到更好的解決方案。

接下來需要與ChatGPT進一步交流,讓ChatGPT將之前生成的代碼進行優(yōu)化。

EnumInfo注解優(yōu)化前:

優(yōu)化后:

逐步完善

逐步引導(dǎo)chatgpt完善框架

在 ChatGPT 的幫助下,逐步完善你的框架。親自動手編寫代碼,與 ChatGPT 一起探討每個細節(jié)。

最后可以和ChatGPT一步步交流,讓它幫你構(gòu)建一個完整的框架。

最終慢慢與ChatGPT不斷對話迭代之后將框架的核心類生成,迭代過程由于太長故省略。

框架核心類說明

在ChatGPT給出核心代碼之后,我參考Spring模塊設(shè)計最終初版框架類如下:

PackageScanner:用于掃描給定包中帶有指定注解的類的實用工具類。

PropertiesUtils:提供操作屬性文件的實用方法的工具類。

EnumInfo:用于標注枚舉類的注解,指定枚舉項的名稱、key 字段和 desc 字段信息。 通過在枚舉類上添加該注解,可以為枚舉項建立索引映射,并指定用于查找 key 和 desc 的字段名稱。

EnumContext:枚舉上下文類,用于管理枚舉定義信息并提供獲取枚舉信息的方法。

EnumContextFactory:枚舉上下文工廠類,用于創(chuàng)建和獲取單例的枚舉上下文對象。

EnumDefinition:表示枚舉定義的類,用于存儲枚舉類的信息。

EnumDefinitionRegistry:枚舉定義注冊接口,用于注冊、查詢和管理枚舉定義。

DefaultEnumFactory:默認的枚舉定義工廠類,實現(xiàn)了 EnumDefinitionRegistry 接口。

看到這使用ChatGPT編寫框架部分已經(jīng)完成了。大件可以使用chatgpt開發(fā)自己的JAVA框架。但要想把框架實際應(yīng)用到生產(chǎn)還需要做一些收尾流程。

框架使用測試

在于ChatGPT交流,完成框架編寫之后需要將框架應(yīng)用到實際項目中。

筆者業(yè)務(wù)系統(tǒng)管理端在進行前后端分離的過程中,研發(fā)們發(fā)現(xiàn)有許多枚舉類對應(yīng)的枚舉描述需要給前端返回。

1)一開始設(shè)想的是每個枚舉類都寫代碼給前端封裝返回文字。但是由于筆者業(yè)務(wù)系統(tǒng)配置項過多,每個配置項都寫代碼太過麻煩。

2)于是研發(fā)們想能否使用一個統(tǒng)一的接口給前端返回枚舉類對應(yīng)的描述,前端只需要輸入枚舉類名稱就可以獲得對應(yīng)的枚舉key和描述的映射關(guān)系。

于是我們創(chuàng)建了一個接口,定義了一個Map對象給前端返回枚舉類的key和描述的對應(yīng)關(guān)系。但是由于筆者業(yè)務(wù)系統(tǒng)的渠道配置還是太多了。使用這種方式我們需要初始化這個Map。初始化Map代碼如下:

public HashMap<String, Map<Integer, String>> initEnumMap() {
    enumMap = new HashMap<>();
    enumMap.put("前端獲取枚舉map的key", XXXEnum.getEnumMap());
    enumMap.put("前端獲取枚舉map的key", XXXEnum.getEnumMap());
    enumMap.put("前端獲取枚舉map的key", XXXEnum.getEnumMap());
    ...
    return enumMap;
}


可見,每新增一個枚舉類。我們都需要在靜態(tài)代碼塊中將映射關(guān)系放入map中。并且枚舉類需要新增一個獲取key和描述的映射關(guān)系方法。這樣還是太麻煩了。并且后續(xù)新增映射關(guān)系還得更改這個類的代碼。

能否將map初始化的步驟和枚舉類創(chuàng)建map的步驟省略呢?

3)于是我們設(shè)想定義一個注解。使用這個注解標記的類,框架掃描這些類。并生成獲取枚舉key和描述的映射關(guān)系的方法。最終完成初始化Map的過程。對外只提供獲取總枚舉Map的方法即可。用戶無需關(guān)心Map如何構(gòu)建。使用這個框架之后,筆者業(yè)務(wù)系統(tǒng)這個接口的代碼如下:

/**
 * 獲取枚舉
*
 * @param enumKey 枚舉key
 * @return 返回值 Map<Integer,String>;code,描述
*/
@RequestMapping("/getEnum")
public Result<Map<String, Map<String, String>>> getEnum(String enumKey) {
    try {
        // 獲取枚舉上下文對象
        EnumContext enumContext = EnumContextFactory.getEnumContext();
        // 獲取枚舉map
        newEnumMap = enumContext.getEnumIndexMap();
        // buid映射從ducc中獲取,所以需要手動設(shè)置
        newEnumMap.put(BUID.getKey(), getBuIdMap());
    } catch (Exception e) {
        log.error("獲取枚舉map出錯!enumKey:{}", enumKey, e);
        return Result.createFail(e.getMessage());
    }
    // 如果枚舉key為空則返回全部
    if (StringUtils.isBlank(enumKey)) {
        return Result.createWithSuc(newEnumMap);
    }
    // 如果枚舉key不為空則返回指定值
    Map<String, Map<String, String>> resultMap = new HashMap<>();
    resultMap.put(enumKey, newEnumMap.get(enumKey));
    return Result.createWithSuc(resultMap);
}


4)注解類代碼如下:

在這舉個測試枚舉類的例子

@EnumInfo(name = "StatusEnum", key = "code", desc = "description")
public enum StatusEnum {
    SUCCESS(200, "Success"),
    ERROR(500, "Error");

    private final int code;
    private final String description;

    StatusEnum(int code, String description) {
        this.code = code;
        this.description = description;
    }

    public int getCode() {
        return code;
    }

    public String getDescription() {
        return description;
    }
}


以后新增一個枚舉類只需要標記@EnumInfo(name = "StatusEnum", key = "code", desc = "description")。將枚舉類的name ,key字段名稱和描述字段名稱指定即可。無需修改接口的代碼即可給前端返回該枚舉的key和描述的映射關(guān)系。極大的減少了研發(fā)聯(lián)調(diào)時間及測試回歸時間。

框架性能壓測

框架應(yīng)用到實際生產(chǎn)項目中,需要對ChatGPT輔助編寫的框架進行充分的測試驗證。同時也要對框架的性能進行測試,知道框架的瓶頸。常見的接口壓測工具有LoadRunner和Apache JMeter等。任選一種壓測工具進行壓測即可。

筆者將框架應(yīng)用到項目中對外暴露了一個接口,該接口在4C4G機器配置下,單機最高可支持1000QPS,在1000QPS下,單機CPU使用率達到30%,系統(tǒng)負載接近0.9,內(nèi)存使用率與壓測前無明顯變化。

作者:京東零售 王鳳璽

來源:京東云開發(fā)者社區(qū) 轉(zhuǎn)載請注明來源文章來源地址http://www.zghlxwxcb.cn/news/detail-670331.html

到了這里,關(guān)于解放雙手!ChatGPT助力編寫JAVA框架的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 微信小程序記住密碼,讓登錄解放雙手

    微信小程序記住密碼,讓登錄解放雙手

    密碼是用戶最重要的數(shù)據(jù),也是系統(tǒng)最需要保護的數(shù)據(jù),我們在登錄的時候需要用賬號密碼請求登錄接口,如果用戶勾選記住密碼,那么下一次登錄時,我們需要將賬號密碼回填到輸入框,用戶可以直接登錄系統(tǒng)。我們分別對這種流程進行說明: 記住密碼 在請求登錄接口成

    2024年02月02日
    瀏覽(22)
  • 辦公效率起飛了,雙手終于被Python解放了

    辦公效率起飛了,雙手終于被Python解放了

    最近我在知乎受到一個付費問答,雖然開通了付費問答功能,但是我已經(jīng)很久沒有回答過提問者的問題。 由于時間和精力有限,抽不出整塊的時間好好回答提問者的問題,又不愿意三言兩語糊弄提問的同學(xué),索性就不回答了。 但是,前幾天有一個同學(xué)付費咨詢我”如何用P

    2023年04月12日
    瀏覽(20)
  • 微信這樣的加人方式,既安全又解放雙手

    微信這樣的加人方式,既安全又解放雙手

    在當今競爭激烈的市場環(huán)境下,如何高效地管理和運營私域流量成為企業(yè)發(fā)展的關(guān)鍵。 1.批量自動化加好友的優(yōu)勢 (1) 提高效率 :批量自動化添加好友功能可以幫助企業(yè)添加大量潛在客戶或目標客戶。相比手動逐個添加好友,自動添加好友功能,能夠極大地提高工作效率。

    2024年02月07日
    瀏覽(25)
  • 一個解放雙手、提高工作效率的代碼生成器!

    大家好,我是 Java陳序員 。 要說現(xiàn)在 Java 后端開發(fā)中,最火的框架肯定是 SpringBoot 。 而持久層的框架首推 MyBatis , MyBatisPlus 作為 MyBatis 的增強框架,其強大的 CURD 能力,被廣大的開發(fā)者所喜愛! SpringBoot + MyBatisPlus 可以說是王炸級別的組合! 今天給大家介紹一個可以 快速生

    2024年02月05日
    瀏覽(18)
  • 語音識別:解放你的雙手,釋放你的大腦

    語音識別是指計算機系統(tǒng)或者設(shè)備從給定的聲音輸入中準確地分離出說話人的語音,從而將語音轉(zhuǎn)換為相應(yīng)的文本或指令的技術(shù)。語音識別已經(jīng)廣泛應(yīng)用于個人助手、智能家居、車載系統(tǒng)、醫(yī)療保健、金融服務(wù)等領(lǐng)域。 語音識別技術(shù)的實現(xiàn)需要經(jīng)過以下幾個步驟: 1、聲音采

    2024年02月03日
    瀏覽(38)
  • python人工智能【隔空手勢控制鼠標】“解放雙手“

    python人工智能【隔空手勢控制鼠標】“解放雙手“

    ?大家好,我是csdn的博主: lqj_本人 這是我的個人博客主頁: lqj_本人的博客_CSDN博客-微信小程序,前端,python領(lǐng)域博主 lqj_本人擅長微信小程序,前端,python,等方面的知識 https://blog.csdn.net/lbcyllqj?spm=1011.2415.3001.5343 嗶哩嗶哩歡迎關(guān)注: 小淼Develop 本文\\\"python人工智能【隔空手勢控制

    2024年02月09日
    瀏覽(39)
  • 智能化辦公時代來臨:AI助你解放雙手

    智能化辦公時代來臨:AI助你解放雙手

    人工智能(AI)技術(shù)的飛速進步正在深刻改變著我們的辦公方式。從最初的自動化流程到現(xiàn)如今的智能化決策,AI在辦公領(lǐng)域的應(yīng)用已經(jīng)變得日益廣泛。它不僅可以幫助我們處理大量的數(shù)據(jù)和文檔,還能為我們提供精準的決策支持,提高我們的工作效率。 在企業(yè)內(nèi)部,AI技術(shù)已

    2024年04月09日
    瀏覽(30)
  • Elasticsearch ILM實現(xiàn)索引全生命周期自動管理,解放雙手

    Elasticsearch ILM實現(xiàn)索引全生命周期自動管理,解放雙手

    公眾號: MCNU云原生 ,歡迎搜索關(guān)注,更多干貨,第一時間掌握! 一、什么是Elasticsearch ILM? Elasticsearch Index Lifecycle Management(ILM)是Elasticsearch的一個功能,用于管理索引的生命周期,優(yōu)化索引的性能和減少存儲成本。ILM可以自動執(zhí)行索引的各種操作,如創(chuàng)建、刪除、滾動、

    2023年04月13日
    瀏覽(21)
  • 【AIGC】只要10秒,AI生成IP海報,解放雙手?。?!

    1、云端部署(配置不行的小伙伴看)+ 云端模型放置位置 2、本地部署(配置達標的小伙伴看) 3、運用SD訓(xùn)練IP的流程和技巧(LoRA篇) 4、運用SD穩(wěn)定生成高質(zhì)量IP海報 眾所周知,各大廠目前都在AIGC的領(lǐng)域探索實踐,也有非常多的外部設(shè)計師制作了大量的AIGC相關(guān)授課,很多同

    2024年02月08日
    瀏覽(21)
  • js腳本自動化之 【 i茅臺 】讓你解放雙手

    js腳本自動化之 【 i茅臺 】讓你解放雙手

    ![青龍面板跑的結(jié)果](https://img-blog.csdnimg.cn/15070a54904a4ab9808c66ba7521d6eb.jpeg ----------------------------------------------------------------------------------- 專欄分割線 ------------------------------------------------------------------------------------ ---------------------------------------------------------------------------------

    2024年02月02日
    瀏覽(28)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包