女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Spring Boot程序優化的14個小妙招!

jf_ro2CN3Fa ? 來源:芋道源碼 ? 作者:芋道源碼 ? 2022-11-25 10:24 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群


把自己平時寫代碼的習慣跟大家分享一下

1.定義配置文件信息

有時候我們為了統一管理會把一些變量放到yml配置文件中

例如

12556bc0-6c66-11ed-8abf-dac502259ad0.png

用 @ConfigurationProperties 代替@Value

使用方法

定義對應字段的實體

@Data
//指定前綴
@ConfigurationProperties(prefix="developer")
@Component
publicclassDeveloperProperty{
privateStringname;
privateStringwebsite;
privateStringqq;
privateStringphoneNumber;
}

使用時注入這個bean

@RestController
@RequiredArgsConstructor
publicclassPropertyController{

finalDeveloperPropertydeveloperProperty;

@GetMapping("/property")
publicObjectindex(){
returndeveloperProperty.getName();
}
}

基于 Spring Boot + MyBatis Plus + Vue & Element 實現的后臺管理系統 + 用戶小程序,支持 RBAC 動態權限、多租戶、數據權限、工作流、三方登錄、支付、短信、商城等功能

  • 項目地址:https://github.com/YunaiV/ruoyi-vue-pro
  • 視頻教程:https://doc.iocoder.cn/video/

2. 用@RequiredArgsConstructor代替@Autowired

我們都知道注入一個bean有三種方式哦(set注入, 構造器注入, 注解注入),spring推薦我們使用構造器的方式注入Bean

我們來看看上段代碼編譯完之后的樣子

1262038a-6c66-11ed-8abf-dac502259ad0.png

RequiredArgsConstructor:lombok提供

基于 Spring Cloud Alibaba + Gateway + Nacos + RocketMQ + Vue & Element 實現的后臺管理系統 + 用戶小程序,支持 RBAC 動態權限、多租戶、數據權限、工作流、三方登錄、支付、短信、商城等功能

  • 項目地址:https://github.com/YunaiV/yudao-cloud
  • 視頻教程:https://doc.iocoder.cn/video/

3.代碼模塊化

阿里巴巴Java開發手冊中說到每個方法的代碼不要超過50行(我沒記錯的話)

在實際的開發中我們要善于拆分自己的接口或方法, 做到一個方法只處理一種邏輯, 說不定以后某個功能就用到了, 拿來即用

126fe694-6c66-11ed-8abf-dac502259ad0.png

4. 拋異常而不是返回

在寫業務代碼的時候,經常會根據不同的結果返回不同的信息,盡量減少返回,會顯得代碼比較亂

反例

127c5a82-6c66-11ed-8abf-dac502259ad0.png

正例

12898248-6c66-11ed-8abf-dac502259ad0.png

5. 減少不必要的db

盡可能的減少對數據庫的查詢

舉例子

刪除一個服務(已下架或未上架的才能刪除)

之前有看別人寫的代碼,會先根據id查詢該記錄,然后做一些判斷

反例

1294876a-6c66-11ed-8abf-dac502259ad0.png

正例

12a8a18c-6c66-11ed-8abf-dac502259ad0.png

6. 不要返回null

反例

12b3e470-6c66-11ed-8abf-dac502259ad0.png

正例

12c5d0f4-6c66-11ed-8abf-dac502259ad0.png

別處調用方法時,避免不必要的空指針

7. if else

不要太多了if else if

可以試試策略模式代替

8. 減少controller業務代碼

業務代碼盡量放到service層進行處理,后期維護起來也好操作而且美觀

反例

12dfbaaa-6c66-11ed-8abf-dac502259ad0.png

正例

12f3e46c-6c66-11ed-8abf-dac502259ad0.png

9. 利用好Idea

目前為止市面上的企業基本都用idea作為開發工具了吧

舉一個小例子

idea會對我們的代碼進行判斷,提出合理的建議

例如:

130dc72e-6c66-11ed-8abf-dac502259ad0.png

它推薦我們用lanbda的形式代替

點擊replace

1318b8c8-6c66-11ed-8abf-dac502259ad0.png

10. 閱讀源碼

一定要養成閱讀源碼的好習慣包括優秀的開源項目GitHub上stars:>1000, 會從中學好好多知識包括其對代碼的設計思想以及高級API,面試加分(好多面試官習慣問源碼相關的知識)

11. 設計模式

23種設計模式,要嘗試代碼中運用設計模式思想,寫出的代碼即規范又美觀還高大上哈哈。

12. 擁抱新知識

像我們這種工作年限少的程序員,我覺得要多學習自己認知之外的知識,不能每天crud,有機會就多用用有點難度的知識,沒有機會(項目較傳統),可以自己下班多些相關demo練習

13. 基礎問題

map遍歷

HashMapmap=newHashMap<>();
map.put("name","du");
for(Stringkey:map.keySet()){
Stringvalue=map.get(key);
}

map.forEach((k,v)->{

});

//推薦
for(Map.Entryentry:map.entrySet()){

}

optional 判空

//獲取子目錄列表
publicListgetChild(Stringpid){
if(V.isEmpty(pid)){
pid=BasicDic.TEMPORARY_DIRECTORY_ROOT;
}
CatalogueTreeNodenode=treeNodeMap.get(pid);

returnOptional.ofNullable(node)
.map(CatalogueTreeNode::getChild)
.orElse(Collections.emptyList());
}

遞歸

大數據量的遞歸時,避免在遞歸方法里new對象,可以試試把對象當作方法參數進行傳遞使用

注釋

類 接口方法 注解 較復雜的方法 注釋都要寫而且要寫清楚, 有時候寫注釋不是給別人看的 而是給自己看的

14. 判斷元素是否存在

hashSet而不是list

list判斷一個元素是否存在的代碼

ArrayListlist=newArrayList<>();

//判斷a是否在list中

for(inti=0;iif("a".equals(elementData[i]))
returni;

由此可見其復雜度為On

而hashSet底層采用hashMap作為數據結構進行存儲,元素都放到map的key(即鏈表中)

HashSetset=newHashSet<>();

//判斷a是否在set中

intindex=hash(a);

returngetNode(index)!=null

由此可見其復雜度為O1

待補充....



審核編輯 :李倩


聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 代碼
    +關注

    關注

    30

    文章

    4894

    瀏覽量

    70453
  • spring
    +關注

    關注

    0

    文章

    340

    瀏覽量

    14978

原文標題:Spring Boot 程序優化的 14 個小妙招!

文章出處:【微信號:芋道源碼,微信公眾號:芋道源碼】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    企業能耗 “大瘦身”, Acrel-EIOT 能源物聯網平臺有妙招

    企業能耗 “大瘦身”, Acrel-EIOT 能源物聯網平臺有妙招
    的頭像 發表于 03-01 08:04 ?242次閱讀
    企業能耗 “大瘦身”, Acrel-EIOT 能源物聯網平臺有<b class='flag-5'>妙招</b>

    通過Boot swap實現瑞薩RL78/F24 MCU固件升級

    本文主要說明如何使用已有的程序更新flash中的固件。使用這種方法代碼閃存分為兩區域:執行區域和臨時區域。瑞薩flash驅動程序RL78 RFD Type02用于對flash進行重新編程并執行
    的頭像 發表于 02-26 09:25 ?1198次閱讀
    通過<b class='flag-5'>Boot</b> swap實現瑞薩RL78/F24 MCU固件升級

    校園點餐訂餐外賣跑腿Java源碼

    創建一校園點餐訂餐外賣跑腿系統是一復雜的項目,涉及到前端、后端、數據庫設計等多個方面。在這里,我可以提供一簡化的Java后端示例,使用Spring
    的頭像 發表于 12-24 14:55 ?579次閱讀
    校園點餐訂餐外賣跑腿Java源碼

    SSM框架的源碼解析與理解

    MVC模式,使得開發Web應用程序變得更加高效和簡單。 1. Spring框架 基本功能: Spring是一開源的Java平臺,它提供了全面的基礎設施支持,以便開發Java應用
    的頭像 發表于 12-17 09:20 ?935次閱讀

    SSM框架的性能優化技巧 SSM框架中RESTful API的實現

    SSM框架的性能優化技巧 SSM(Spring + Spring MVC + MyBatis)框架的性能優化是提升Java Web應用性能的關鍵環節。以下是一些常用的性能
    的頭像 發表于 12-17 09:10 ?745次閱讀

    SSM開發環境的搭建教程 SSM與Spring Boot的區別

    SSM開發環境的搭建教程 SSM(Spring+SpringMVC+MyBatis)開發環境的搭建涉及多個步驟,以下是詳細的教程: 創建Maven項目 : 使用Maven工具創建一新的Maven
    的頭像 發表于 12-16 18:13 ?1343次閱讀

    Spring 應用合并之路(二):峰回路轉,柳暗花明

    提醒下,決定拋開 Spring Boot 內置的父子容器方案,完全自己實現父子容器。 如何加載 web 項目? 現在的難題只有一:如何加載 web 項目?加載完成后,如何持續持有 web 項目?經過思考后,可以創建一
    的頭像 發表于 12-12 11:22 ?1103次閱讀

    Spring事務實現原理

    作者:京東零售 范錫軍 1、引言 springspring-tx模塊提供了對事務管理支持,使用spring事務可以讓我們從復雜的事務處理中得到解脫,無需要去處理獲得連接、關閉連接、事務提交和回滾等
    的頭像 發表于 11-08 10:10 ?1141次閱讀
    <b class='flag-5'>Spring</b>事務實現原理

    使用TPS65023-Q1優化OMAP3630 BOOT序列

    電子發燒友網站提供《使用TPS65023-Q1優化OMAP3630 BOOT序列.pdf》資料免費下載
    發表于 10-10 10:59 ?2次下載
    使用TPS65023-Q1<b class='flag-5'>優化</b>OMAP3630 <b class='flag-5'>BOOT</b>序列

    Spring Cloud Gateway網關框架

    SpringCloud Gateway功能特征如下: (1) 基于Spring Framework 5, Project Reactor 和 Spring Boot 2.0 進行構建; (2) 動態路由:能夠匹配任何請求屬性;
    的頭像 發表于 08-22 09:58 ?707次閱讀
    <b class='flag-5'>Spring</b> Cloud Gateway網關框架

    單片機boot0和boot1怎么設置

    單片機Boot0和Boot1簡介 Boot0和Boot1是單片機啟動模式選擇引腳,用于選擇單片機的啟動模式。 Boot0和
    的頭像 發表于 08-22 09:50 ?5554次閱讀

    stm32讀取boot引腳狀態

    啟動源)。 讀取Boot引腳狀態 在STM32中,Boot引腳的狀態并不是直接通過一寄存器讀取的,因為它們
    的頭像 發表于 08-22 09:48 ?2668次閱讀

    STM32引腳中的BOOT1在哪里

    BOOT1引腳是一用于選擇STM32微控制器啟動模式的引腳。當系統上電或復位時,BOOT1的電平狀態將決定微控制器從哪個存儲介質啟動。通常,BOOT1引腳可以配置為以下兩種模式之
    的頭像 發表于 08-22 09:43 ?4604次閱讀

    stm32boot0和boot1對應哪個p引腳

    STM32系列微控制器是一種廣泛應用于嵌入式系統領域的32位微控制器。在STM32系列微控制器中,BOOT0和BOOT1是兩重要的引腳,它們用于設置設備的啟動模式。 首先,讓我們了解STM32系列
    的頭像 發表于 08-22 09:40 ?6091次閱讀

    OpenHarmony之開機優化

    入手,由于init是用戶態的第一程序,是1號進程,所以對應的init.cfg就無需修改,而需要修改的就是foundation.cfg/samgr_standard.cfg
    發表于 07-01 16:39