色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

    文章

    4821

    瀏覽量

    68882
  • spring
    +關注

    關注

    0

    文章

    340

    瀏覽量

    14368

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

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

收藏 人收藏

    評論

    相關推薦

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

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

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

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

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

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

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

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

    Spring事務實現原理

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

    使用TPS65023-Q1優化OMAP3630 BOOT序列

    電子發燒友網站提供《使用TPS65023-Q1優化OMAP3630 BOOT序列.pdf》資料免費下載
    發表于 10-10 10:59 ?0次下載
    使用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 ?525次閱讀
    <b class='flag-5'>Spring</b> Cloud Gateway網關框架

    單片機boot0和boot1怎么設置

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

    stm32讀取boot引腳狀態

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

    stm32boot0和boot1對應哪個p引腳

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

    vue+spring boot人員定位系統源碼,實現實時定位、智慧調度、軌跡追蹤

    、機具、物料上定位標簽回傳的位置信息數據,采用多維定位模式,精確定位人、機具、物料的實時位置,實現實時定位、物料標簽配置、智慧調度、軌跡追蹤、工時統計、區域物料統計、電子圍欄等應用功能。 技術架構:java+ spring boot+ v
    的頭像 發表于 08-08 14:27 ?836次閱讀
    vue+<b class='flag-5'>spring</b> <b class='flag-5'>boot</b>人員定位系統源碼,實現實時定位、智慧調度、軌跡追蹤

    玩轉Spring狀態機

    說起Spring狀態機,大家很容易聯想到這個狀態機和設計模式中狀態模式的區別是啥呢?沒錯,Spring狀態機就是狀態模式的一種實現,在介紹Spring狀態機之前,讓我們來看看設計模式中的狀態模式
    的頭像 發表于 06-25 14:21 ?999次閱讀
    玩轉<b class='flag-5'>Spring</b>狀態機

    STM32G070RBT6將PA14-BOOT0改為USART,無法識別到ID也不能下載程序了,怎么解決?

    芯片型號為:STM32G070RBT6 遇到的問題:我將MCU PA14-BOOT0改為USART2RX,第一次是可以下載進去程序的,因為里面是空的,可以識別到也能正常下載程序,我將我編寫的
    發表于 05-27 07:44

    用STM32進行bootloader開發時,能不能將boot和app程序的hex合成為一hex進行燒錄?

    大家好,請問用STM32進行bootloader開發時,能不能將boot和app程序的hex合成為一hex進行燒錄?我之前分別燒錄兩hex,是可以實現功能的,不知道合成一
    發表于 04-01 08:20

    SpingBoot的5擴展點,超級實用!

    我們在啟動Spring Boot項目的時候,是執行這樣一方法來啟動的
    的頭像 發表于 02-22 11:28 ?508次閱讀
    SpingBoot的5<b class='flag-5'>個</b>擴展點,超級實用!
    主站蜘蛛池模板: 女人高潮了拔出来了她什么感觉| 精品免费视在线视频观看| 毛片免费在线播放| 2020国产成人免费视频| 女性爽爽影院免费观看| 高清国产一区| 亚洲高清毛片一区二区| 久久麻豆国产国产AV| 跳蛋按摩棒玉势PLAY高H| 国产免费久久爱久久啪| 伊人精品影院| 年轻漂亮的妺妺中文字幕版| 亚洲国产AV精品卡一卡二| 久久资源365| 北岛玲手机在线观看视频观看| 天龙八部慕容属性加点| 久久99热只有频精品| porono日本xxx| 校花被扒衣吸乳羞羞漫画| 久青草国产在线观看视频| 俄罗斯黄色大片| 在线观看亚洲专区5555| 色女仆影院| 老太婆风流特黄一级| 国产精品国产三级国产专区53 | 中文字幕亚洲欧美日韩2019| 欧美亚洲天堂网| 国产一及毛片| seba51久久精品| 一本之道高清视频在线观看| 日本边添边摸边做边爱边| 久久se视频精品视频在线| 俄罗斯6一12呦女精品| 诱咪视频免费| 无遮挡h肉3d动漫在线观看| 免费伦理片网站| 国语对白老女人8av| 拔擦拔擦8X永久华人免费播放器| 亚洲视频在线看| 神马影院午夜伦理限级| 末成年美女黄网站色大片连接|