主頁 > 後端開發 > 用了 Intellij idea 這些插件和高效配置后,寫代碼快得飛起來,再也不用 996 加班了

用了 Intellij idea 這些插件和高效配置后,寫代碼快得飛起來,再也不用 996 加班了

2022-05-27 15:09:51 後端開發

0. 背景

作為一個 Java 程式員,我相信,絕大多數同學日常都是用 idea 來寫代碼,

Idea 作為宇宙第一 Java IDE,提供了豐富、強大的功能,可以讓你寫 Java 代碼快得飛起來,

遺憾的是,很多人都不知道怎么開啟 idea 隱藏的強大功能,下面博主將帶你一起,探究 idea 背后那些強大到逆天的功能,

特別說明:

本文所有實操基于 Mac OSX 系統,其他作業系統(如 Windows,Linux 等)沒有實踐過,不做講解,

非特別說明:

雖然文章標題有點『標題黨』的嫌疑,但是內容絕對不是標題黨文章,干貨滿滿,請耐心往下看,看完沒識訓直接來北京打我!

1. ToC(目錄)

本文將從以下幾個方面,展開講解:

  • keymap
  • 常用插件
  • 高效配置
  • 超好用的快捷鍵
  • 神器:Postfix
  • 終極神器:Live Template

2. keymap

keymap,就是 idea 的快捷鍵配置方案,本身沒有太多的內容,之所以放到最前面,是因為后續的講解,很大程度上都依賴于 keymap,

建議將 keymap 設定為默認的,比如 Mac 下默認的 keymap 就是 Mac OS X 10.5 +,

這樣當你想使用某個快捷鍵而 Google 時,多數時候,找到的答案都使用的是默認的快捷鍵方案,不然的話,別人的快捷鍵你不一定適用,

3. 常用插件

接下來為大家推薦一些常用的插件,有了這些插件的加持,會讓你的作業事半功倍,

為了方便大家索引,先把推薦的插件列到下面:

  • Lombok
  • Key Promoter X
  • Alibaba Java Coding Guide
  • CamelCase
  • GenerateAllSetter
  • Codota AI Autocomplete
  • GsonFormat
  • Grep Console
  • MavenHelper
  • RestfulToolKit
  • RainbowBrackets
  • Mybatis Plugin

下面將逐一介紹這些常用的插件,

3.1 Lombok

插件官網:https://plugins.jetbrains.com/plugin/6317-lombok

這個插件,相信不用多做解釋,寫過 Java 的同學都知道,JavaBean 代碼里有一堆的 set/get,tostring 等方法,非常臃腫,有了 Lombok 之后,再也不用寫這些臃腫的代碼了,

3.2 Key Promoter X

插件官網:https://plugins.jetbrains.com/plugin/9792-key-promoter-x

這個插件的作用是告訴你,你做的某個操作,有哪些快捷鍵可以代替,

有些時候,我們想要做某件事情,比如我想打開 idea 自帶的 terminal,但是我并不知道有快捷鍵可以用,于是我只能傻乎乎的用滑鼠去點開 terminal,

有了這個插件后,當你用滑鼠去點 terminal 時,右下角會有個彈窗提示,告訴你,其實你沒必要用滑鼠去點,直接使用快捷鍵 Alt + F12 就可以了,如下圖:

file

怎么樣,是不是很貼心!

3.3 Alibaba Java Coding Guide

插件官網:https://plugins.jetbrains.com/plugin/10046-alibaba-java-coding-guidelines

這個插件,也不做過多解釋,阿里巴巴官方推出了 Java 開發手冊,這個插件就是檢查你的代碼是否符合手冊規范的,直接安裝吧,相信阿里巴巴!

舉個簡單的例子,當我要獲取當前時間戳的時候,我這么寫:long time1 = new Date().getTime(),這個時候,它就會有報錯提示,告訴你直接使用 long time2 = System.currentTimeMillis()
file

怎么樣,是不是很智能,又學到了一招吧!

3.4 CamelCase

插件官網:https://plugins.jetbrains.com/plugin/7160-camelcase

這個插件的作用是對字串做格式上的轉化: kebab-case, SNAKE_CASE, PascalCase, camelCase, snake_case or space case 等,

典型的應用場景是,比如我們資料庫里面的欄位,用的是下劃線的格式,但是 Java 里面的欄位,用的是駝峰的格式,

我們怎么保證不會因為手殘導致資料庫欄位和 Java 欄位對不上呢?比如資料庫欄位是 your_name,一不小心 Java 里寫成了 youName,

當你遇到問題的時候,估計查到哭都查不出來,Java 里面的欄位少了個 'r',

這種情況下,CamelCase 插件就派上用場了,使用快捷鍵 Alt + Shift + u,就可以在各種格式之間切換了,很容易就可以把 your_name 變成 yourName,

如下所示:
file

當然,鑒于多數情況下,Java 不存在 kebab-case/space case 即 中劃線/空格 連接方式,你還可以在配置中設定,格式切換時去掉他們,這樣切換時,按 Alt + Shift + u 的次數就可以少些,配置方法如下:
file

3.5 GenerateAllSetter

插件官網:https://plugins.jetbrains.com/plugin/9360-generateallsetter

這絕對是一個特別值得推薦的插件,能夠 save your life !

在我們寫代碼的時候,經常會有各種 dto 之間的轉化,比如從資料庫的 User 轉化為前端的 UserVO,

如果是你自己寫,先不說寫一堆 get/set 累不累,最關鍵的是,我怕寫漏了某個欄位!比如 User 有 10 個欄位,最后到 UserVO 只有 9 個了,哭都沒地方哭!

總不能一個個數吧?這時候 GenerateAllSetter 就出來拯救你了!他可以自動的幫你生成 UserVO 所有的 set 方法,更智能的是,如果 UserVO 和 User 欄位名一樣,它還會自動幫你生成 get!如下圖所示:
file

當我需要將 User 轉化為 UserVO 時,在我寫好方法宣告后,按下 Alt + Enter,選中 Generate setter getter converter,他就自動幫我寫好轉化的代碼了!

怎么樣,是不是 6 得飛起,媽媽再也不用擔心我寫漏欄位了!

題外話:

可能有些人會有疑問,不就是個 DTO 轉化嗎?我用 BeanUtils 等工具不香嗎?還真是不香,這玩意有很多坑,性能是一方面,關鍵是當欄位名不一樣時,很難察覺到

3.6 Codota AI Autocomplete

插件官網:https://plugins.jetbrains.com/plugin/7638-codota-ai-autocomplete-for-java-and-javascript

關于 AI 插件,目前我就推薦這一個,確實比較強大(好多 AI 插件,名曰人工智能,其實人工智障,還卡得要死),貼一個 gif 大家感受下:
file

當你想初始化一個 List 的時候,再你敲完 List 后,你就可以發現,后面的 users = new ArrayList<>(); 就有智能提示了,都不用敲了,

當然上面舉的例子只是 Codota 很小的一個智能提示,其他更多留給大家探索,

總之,很多時候,它的智能提示很強大,能省去你不少時間,省得你一個個敲代碼了!

3.7 GsonFormat

插件官網:https://plugins.jetbrains.com/plugin/7654-gsonformat

這個插件的作用,就是根據 json 字串,自動生成 Java bean,先放個官網的 gif 吧:
file

這里使用的快捷鍵是:Alt + s,

這里需要注意的一點是,gsonformat 插件支持自定義 json 反序列化庫,比如 jackson,gson 等,可以在 setting 里面設定,如下圖:
file

3.8 Grep Console

插件官網:https://plugins.jetbrains.com/plugin/7125-grep-console

這個插件的作用是對 idea 默認的 Console(控制臺)做增強,比如默認的控制臺輸出的日志,不管日志級別是什么,都是沒有顏色區分的,
有了這個插件后,ERROR、WARN 等不同級別的日志,會展示成不同的顏色,方便我們一眼就看出來有沒有錯誤日志等,

默認的配色方案如下:
file

具體的顏色配置以及更多的功能,可以參考插件官網,

3.9 Maven Helper

插件官網:https://plugins.jetbrains.com/plugin/7179-maven-helper

平時我們的 maven 專案,會遇到一些依賴沖突的問題,比較難以排查和定位,有了這個插件后,能夠方便的顯示出來有哪些依賴沖突,而且還可以自動加上 exclude,操作界面如下圖:
file

3.10 RestfulToolKit

插件官網:https://plugins.jetbrains.com/plugin/10292-restfultoolkit

這個插件的作用是,幫助我們快速導航到指定 url 請求路徑的 controller 方法,平時我們的專案會寫大量的 controller 以及方法,來處理不同的 url 請求,
但是當代碼多了以后,很難找到某個 url 是哪個方法處理的,有了這個插件,就可以快速根據 url 導航到具體的方法,

file

快捷鍵是 cmd + \,

3.11 Rainbow Brackets

插件官網:https://plugins.jetbrains.com/plugin/10080-rainbow-brackets

這是一款提升 idea 顏值的插件,我們寫的代碼,經常會有很多嵌套的括號,比如 get1(get2(get3())),這么多的括號嵌套,而且顏色都還一樣,會看得人眼花繚亂,有了這個插件,會給每一對括號都顯示上不同的顏色,增加顏值的同時,也較方便的看出哪些括號是一對:
file

好了,到這里,推薦的常用插件就介紹完了,大家可以根據需要,自由安裝哪些插件,記住:插件雖好,可不要貪杯哦!

如果你也有好用的插件推薦,歡迎聯系我,一起探討學習!

4. 高效配置

Idea 確實是一款非常非常優秀的 Java IDE,所謂好馬還得好鞍配,下面介紹的一些高校配置,可以讓你使用 idea 的時候,更舒適、更高效!

4.1 import 自動匯入包和洗掉無用的 import

設定路徑:Editor -> General -> Auto Import,
勾選其中的 add on the fly 和 optimize on the fly,如下圖:
file

4.2 避免 import *

默認情況下,當 import 同一個包的 class 超過 5 個后,idea 會替換成 import *,但是通常我們不建議這樣寫,遵循的原則就是使用哪些就明確寫參考哪些!

設定路徑:Editor -> Code Style -> Java -> Imports,
將 Class count to use import with 、Names count to use static import with * 都設定為 999(默認都是 5),如下圖:
file

4.3 保存檔案時自動去掉末尾空格

設定路徑:Editor -> General -> Other,
Strip trailing space on Save 選 All,如下圖:
file

4.4 智能提示不區分大小寫

設定路徑:Editor -> General -> code completion,
取消勾選 match case,如下圖:
file

5. 超好用的快捷鍵

這一章節,將推薦一些超好用的快捷鍵,有了這些快捷鍵的加持,不僅能夠節省你大量的時間,還能讓你寫出更優秀的代碼!

5.1 萬能提示神器:Alt + Enter

如果你只想記住一個快捷鍵的話,我推薦這個!Alt + Enter 是一個萬能提示器,可以用說是好用到爆炸??!

只要 idea 有標紅、標黃或標灰的地方,你按下 Alt + Enter,基本上都能夠自動修復,

舉個簡單的例子,我的這個方法有多余的引數s2,idea 有置灰提示:
file

它告訴我s2 沒有用到,那么我怎么安全洗掉這個s2 呢(直接洗掉的話,呼叫的地方會報錯)?這時候,你只需選中s2,然后按下 Alt + Enter,就會發現有提示:
Safe delete s2,然后就可以安全的洗掉 s2了,包括呼叫的地方,下面是動圖:
file

結合前面的 GenerateAllSetter 插件,當我們 new 一個物件后,如果想生成這個物件所有的 setter 方法,也可以用 Alt + Enter:
選中變數名,按下 Alt + Enter,選擇 Generate all setter 即可,如下圖:
file

上面演示的只是 Alt + Enter 強大功能的冰山一角,更多特性留給大家探索,建議大家有事沒事多按按 Alt + Enter ,說不定會有意外識訓,

5.2 Tab 自動補全

這個功能就是用 idea 提示的候選項,替換你當前編輯的內容,

這么說可能有點抽象,我們來舉個例子,假設我有下面的代碼:

private static String get1(String s1) {
	return  return s1.toLowerCase().trim();;
}

我現在想把 toLowerCase 換成 toUpperCase,這時候我的游標在 s1 后面,如果我們直接敲 .touper... 然后回車,你回發現,toLowerCase并沒有被替換,而是被移動到了 toUpperCase() 后面,然后你還得手動去洗掉 toLowerCase(),如下動圖:
file

但是,如果你敲完 .touper 后,不是回車而是按 Tab,那么 idea 就會用 toUpperCase() 直接替換 toLowerCase():
file

這次,沒有多余的 toLowerCase() 了,不用手動去洗掉了!

5.3 自動生成代碼:Cmd + N

按下Cmd + N 后,有提示可以自動生成代碼,如getter/setter/toString 等,

5.4 智能結束當前陳述句:Cmd + Shift + Enter

按下 Cmd + Shift + Enter 后,可以智能結束當前陳述句,比如自動給行尾加上分號,自動給 if 加上括號等,可以自己多嘗試下,

5.5 檔案導航快捷鍵

  • Cmd + O:打開類
  • 雙擊Shift:打開任意檔案
  • Cmd + E:最近打開檔案串列
  • Auto scroll from/to source:左側檔案串列與右側Tab聯動

6. 神器:Postfix

Postfix 可謂是 idea 隱藏的一大神技!Postfix 簡單易用,但是功能強大,關鍵是一點也不復雜,相信學會了 postfix 后,你會后悔怎么沒有早點 get 到這項技能,好了,廢話不多說,我們直接開始,

我們來舉個例子,假設現在需要寫一個 for 回圈,依次列印 [0, 100) 這個 100 個數,那么代碼如下:

	public static void main(String[] args) {
			for (int i = 0; i < 100; i++) {
					System.out.println(i);
			}
	}

代碼本身是比較簡單的,關鍵是上面的 for 回圈代碼是怎么寫出來的,我們有兩種方式:挨個敲出來 和 用 postfix,

我們用動圖來分別展示下這兩種方式:

  • 挨個敲出來
    file

  • 用 postfix
    file

怎么樣?用postfix,寫 for 回圈是不是很快!(中間用到 sout 縮寫是后面 LiveTemplate 要講的),使用方法也很簡單,只需要在寫完 100 后按下 ".",idea 就自動出現提示了!

Postfix,正如其名,就是在后面按下 ".",然后出現相應的提示,這些提示是 idea 默認自帶的,不需要任何配置,開箱即用!

遺憾的是,idea 的 postfix 支持的功能是固定的,不能自定義,我們可以在 Editor -> General -> Postfix Comletion 中查看全部的 postfix 功能,如下圖:
file

再來幾個動圖演示下:

  • 快速寫 if (obj == null) 和 if (obj != null) :
    file

這里使用的是 .null 和 .nn postfix,

  • 呼叫方法并快速宣告、賦值給變數
    file

可以看到,我們不需要先寫變數宣告,然后被方法呼叫賦值,可以使用 .var 直接一步到位,

關于其他的 postfix,留給大家探索!

7 終極神器:Live Template

上一章講的 postfix,可以說是很強大了,可以提升不少寫代碼的速度,但是還是有點遺憾:postfix 畢竟數量有限,而且不是所有情況下都能使用,

那么接下來要講的 LiveTemplate 就可以說是終極大殺招了,可以極大提升寫代碼的速度!

備注:

很多同學可能會簡單的以為 LiveTemplate 不就是個代碼模板嗎?類似于其他代碼編輯器里面的 Code Snippet ?如果你以為只有這點功能,那你真是小看了 Live Template,

下面將由淺入深講解 Live Template,

7.1 添加 Live Template

我們經常在 Java 里面寫 main 方法,也經常用 System.out.println() 等來輸出,
你會發現,每次寫這些很麻煩,有一大堆代碼要敲,那么有沒有簡單快捷的方式呢?答案就是 LiveTemplate,

idea 自帶的 main、sout 關鍵字,就可以幫你實作上面的功能,我們通過一個動圖來展示下:
file

如果你也想通過一些關鍵字,來生成一段代碼,那么你可以添加自定義 Live Template,比如我們寫單元測驗時,需要寫一個 test 方法,如下:

    @Test
    public void test() {
        
    }

我不想每次都寫這么一大堆,我想輸入 pvt 時,他能自動生成這個方法,下面我就演示下如何添加 Live Template 來實作這個功能,

步驟如下:

  1. 在 Editor -> Live Templates 頁面,點擊右上角的 +,選擇 2. Template Group,創建一個組,如下圖:
    file

輸入你想要取的組名,比我我這里叫 demo,

  1. 選中你剛才創建的 demo 組,再次點擊右上角的 +,選擇 1. Live Template,創建一個 Live Template,
    file

點完后,會出現如下頁面,需要你配置下:
file

一共有 5 個關鍵點,我都標出來了:

  • 1 觸發關鍵字,這里寫 pvt,也就是說當你寫下 pvt 的時候,就會有相應提示;
  • 2 描述,這里寫上你這個 pvt 的描述,方便提示的時候知道這個縮寫是干什么的;
  • 3 這里就是要自動生成的代碼,我們這里寫上 junit test 的模板代碼;注意 $END$ 是說生成代碼后,游標會落到這里;
  • 4 推薦生成代碼后,自動格式化下;
  • 5 這里比較關鍵,需要你配置下這個縮寫的生效范圍,因為 idea 不止可以寫 java,還可以寫 kotlin, groovy, js 等,我們一般勾選 Java 即可,如下圖:
    file

然后,你就可以使用 pvt 這個縮寫來生成代碼了,如下圖:
file

7.2 Live Template 進階使用:變數和 groovy 腳本

上面說過,Live Template 不僅僅是用縮寫去生成代碼,Live Template 還支持定義變數、撰寫 groovy 腳本等方式,來增強功能,這個才是 Live Template 大殺器,

我們直接來看下演示,假設我有如下代碼:

    public void printLogDemo(String s1, int i2, boolean b3) {
        
    }

我現在想把所有的引數都打下日志,變成下面這樣:

    public void printLogDemo(String s1, int i2, boolean b3) {
        log.info("printLogDemo: s1={}, i2={}, b3={}", s1, i2, b3);
    }

那我是要一個個去敲這些 s1={}, i2={}, b3={} 嗎?如果引數很多呢?是不是很費勁,有了 Live Template 后,我只需要敲 logp 就搞定了,如下動圖:
file

你看,連帶方法名和所有的引數串列,全部一鍵寫好!那么是如何做到的呢?用到了 Live Template 變數 和 groovy 腳本,

詳細步驟如下:
1 新建一個 Live Template, 取名叫 logp,(步驟參考上一節,略過),如下圖:
file

2 Template Text 中輸入如下

log.info("$METHOD_NAME$: $METHOD_PARAMETERS$", $METHOD_PARAMETERS_VALUES$);
$END$

3 點擊 Edit Variables,上面的 $METHOD_NAME$ 等就是變數,可以配置這些變數的值,配置如下圖:
file

  • METHOD_NAME:選用 idea 自帶的方法 methodName(),即獲取方法名;
  • METHOD_PARAMETERS:是一段 groovy 腳本,如下:
groovyScript("_1.collect { it + '={}' }.join(', ')", methodParameters())
  • METHOD_PARAMETERS_VALUES:是一段 groovy 腳本,如下:
groovyScript("_1.collect { it }.join(', ')", methodParameters())

groovy 腳本里的 methodParameters(),參考的是 idea 自帶的方法,即獲取方法引數串列,

怎么樣,是不是很強大!Live Template 的更多玩法,留給大家自己去實作,

7.3 福利說明

在我的 idea 中,已經配置好了大量開箱即用的 Live Template,比如:

  • logp:上面解釋的,自動列印引數串列;
  • loge:拋例外時,自動列印引數串列和例外資訊,日志級別為 ERROR;
  • lstr:自動生成 List
  • aslist:自動生成 Arrays.asList()
  • ifempty:自動生成 if (CollectionUtils.isEmpty($collection$))

還有更多,就不一一列舉了,如果想獲取這些開箱即用的 Live Template, 可以關注我的公眾號,回復關鍵字 LiveTemplate,就可以了,

發送給你的是 idea setting.zip,包括了 Live Template,以及前文介紹的一些高效配置,都在這個里面了,你直接匯入就可以用了,

8 結束語

這篇文章,可以說是滿滿的干貨,前前后后好幾個晚上都在加班寫!尤其是動圖部分,為了做到最好的演示效果,錄制了很多遍!

如果你看完也有點識訓,可以 點贊+關注+分享 三連走一波,謝謝!


我是梅小西,最近在某東南亞電商公司做 DevOps 的相關事情,從本期開始,將陸續分享基于 Jenkins 的 CI/CD 作業流,包括 Jenkins On k8s 等,

如果你對 Java 或者 Jenkins 等感興趣,歡迎與我聯系,微信:wxweven(備注 DevOps),也歡迎關注:

本文由博客群發一文多發等運營工具平臺 OpenWrite 發布

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/481168.html

標籤:Java

上一篇:Spring Authorization Server 0.3.0 發布,官方檔案正式上線

下一篇:linux掛載新硬碟并進行磁區格式化

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 【C++】Microsoft C++、C 和匯編程式檔案

    ......

    uj5u.com 2020-09-10 00:57:23 more
  • 例外宣告

    相比于斷言適用于排除邏輯上不可能存在的狀態,例外通常是用于邏輯上可能發生的錯誤。 例外宣告 Item 1:當函式不可能拋出例外或不能接受拋出例外時,使用noexcept 理由 如果不打算拋出例外的話,程式就會認為無法處理這種錯誤,并且應當盡早終止,如此可以有效地阻止例外的傳播與擴散。 示例 //不可 ......

    uj5u.com 2020-09-10 00:57:27 more
  • Codeforces 1400E Clear the Multiset(貪心 + 分治)

    鏈接:https://codeforces.com/problemset/problem/1400/E 來源:Codeforces 思路:給你一個陣列,現在你可以進行兩種操作,操作1:將一段沒有 0 的區間進行減一的操作,操作2:將 i 位置上的元素歸零。最終問:將這個陣列的全部元素歸零后操作的最少 ......

    uj5u.com 2020-09-10 00:57:30 more
  • UVA11610 【Reverse Prime】

    本人看到此題沒有翻譯,就附帶了一個自己的翻譯版本 思考 這一題,它的第一個要求是找出所有 $7$ 位反向質數及其質因數的個數。 我們應該需要質數篩篩選1~$10^{7}$的所有數,這里就不慢慢介紹了。但是,重讀題,我們突然發現反向質數都是 $7$ 位,而將它反過來后的數字卻是 $6$ 位數,這就說明 ......

    uj5u.com 2020-09-10 00:57:36 more
  • 統計區間素數數量

    1 #pragma GCC optimize(2) 2 #include <bits/stdc++.h> 3 using namespace std; 4 bool isprime[1000000010]; 5 vector<int> prime; 6 inline int getlist(int ......

    uj5u.com 2020-09-10 00:57:47 more
  • C/C++編程筆記:C++中的 const 變數詳解,教你正確認識const用法

    1、C中的const 1、區域const變數存放在堆疊區中,會分配記憶體(也就是說可以通過地址間接修改變數的值)。測驗代碼如下: 運行結果: 2、全域const變數存放在只讀資料段(不能通過地址修改,會發生寫入錯誤), 默認為外部聯編,可以給其他源檔案使用(需要用extern關鍵字修飾) 運行結果: ......

    uj5u.com 2020-09-10 00:58:04 more
  • 【C++犯錯記錄】VS2019 MFC添加資源不懂如何修改資源宏ID

    1. 首先在資源視圖中,添加資源 2. 點擊新添加的資源,復制自動生成的ID 3. 在解決方案資源管理器中找到Resource.h檔案,編輯,使用整個專案搜索和替換的方式快速替換 宏宣告 4. Ctrl+Shift+F 全域搜索,點擊查找全部,然后逐個替換 5. 為什么使用搜索替換而不使用屬性視窗直 ......

    uj5u.com 2020-09-10 00:59:11 more
  • 【C++犯錯記錄】VS2019 MFC不懂的批量添加資源

    1. 打開資源頭檔案Resource.h,在其中預先定義好宏 ID(不清楚其實ID值應該設定多少,可以先新建一個相同的資源項,再在這個資源的ID值的基礎上遞增即可) 2. 在資源視圖中選中專案資源,按F7編輯資源檔案,按 ID 型別 相對路徑的形式添加 資源。(別忘了先把檔案拷貝到專案中的res檔案 ......

    uj5u.com 2020-09-10 01:00:19 more
  • C/C++編程筆記:關于C++的參考型別,專供新手入門使用

    今天要講的是C++中我最喜歡的一個用法——參考,也叫別名。 參考就是給一個變數名取一個變數名,方便我們間接地使用這個變數。我們可以給一個變數創建N個參考,這N + 1個變數共享了同一塊記憶體區域。(參考型別的變數會占用記憶體空間,占用的記憶體空間的大小和指標型別的大小是相同的。雖然參考是一個物件的別名,但 ......

    uj5u.com 2020-09-10 01:00:22 more
  • 【C/C++編程筆記】從頭開始學習C ++:初學者完整指南

    眾所周知,C ++的學習曲線陡峭,但是花時間學習這種語言將為您的職業帶來奇跡,并使您與其他開發人員區分開。您會更輕松地學習新語言,形成真正的解決問題的技能,并在編程的基礎上打下堅實的基礎。 C ++將幫助您養成良好的編程習慣(即清晰一致的編碼風格,在撰寫代碼時注釋代碼,并限制類內部的可見性),并且由 ......

    uj5u.com 2020-09-10 01:00:41 more
最新发布
  • Rust中的智能指標:Box<T> Rc<T> Arc<T> Cell<T> RefCell<T> Weak

    Rust中的智能指標是什么 智能指標(smart pointers)是一類資料結構,是擁有資料所有權和額外功能的指標。是指標的進一步發展 指標(pointer)是一個包含記憶體地址的變數的通用概念。這個地址參考,或 ” 指向”(points at)一些其 他資料 。參考以 & 符號為標志并借用了他們所 ......

    uj5u.com 2023-04-20 07:24:10 more
  • Java的值傳遞和參考傳遞

    值傳遞不會改變本身,參考傳遞(如果傳遞的值需要實體化到堆里)如果發生修改了會改變本身。 1.基本資料型別都是值傳遞 package com.example.basic; public class Test { public static void main(String[] args) { int ......

    uj5u.com 2023-04-20 07:24:04 more
  • [2]SpinalHDL教程——Scala簡單入門

    第一個 Scala 程式 shell里面輸入 $ scala scala> 1 + 1 res0: Int = 2 scala> println("Hello World!") Hello World! 檔案形式 object HelloWorld { /* 這是我的第一個 Scala 程式 * 以 ......

    uj5u.com 2023-04-20 07:23:58 more
  • 理解函式指標和回呼函式

    理解 函式指標 指向函式的指標。比如: 理解函式指標的偽代碼 void (*p)(int type, char *data); // 定義一個函式指標p void func(int type, char *data); // 宣告一個函式func p = func; // 將指標p指向函式func ......

    uj5u.com 2023-04-20 07:23:52 more
  • Django筆記二十五之資料庫函式之日期函式

    本文首發于公眾號:Hunter后端 原文鏈接:Django筆記二十五之資料庫函式之日期函式 日期函式主要介紹兩個大類,Extract() 和 Trunc() Extract() 函式作用是提取日期,比如我們可以提取一個日期欄位的年份,月份,日等資料 Trunc() 的作用則是截取,比如 2022-0 ......

    uj5u.com 2023-04-20 07:23:45 more
  • 一天吃透JVM面試八股文

    什么是JVM? JVM,全稱Java Virtual Machine(Java虛擬機),是通過在實際的計算機上仿真模擬各種計算機功能來實作的。由一套位元組碼指令集、一組暫存器、一個堆疊、一個垃圾回收堆和一個存盤方法域等組成。JVM屏蔽了與作業系統平臺相關的資訊,使得Java程式只需要生成在Java虛擬機 ......

    uj5u.com 2023-04-20 07:23:31 more
  • 使用Java接入小程式訂閱訊息!

    更新完微信服務號的模板訊息之后,我又趕緊把微信小程式的訂閱訊息給實作了!之前我一直以為微信小程式也是要企業才能申請,沒想到小程式個人就能申請。 訊息推送平臺🔥推送下發【郵件】【短信】【微信服務號】【微信小程式】【企業微信】【釘釘】等訊息型別。 https://gitee.com/zhongfuch ......

    uj5u.com 2023-04-20 07:22:59 more
  • java -- 緩沖流、轉換流、序列化流

    緩沖流 緩沖流, 也叫高效流, 按照資料型別分類: 位元組緩沖流:BufferedInputStream,BufferedOutputStream 字符緩沖流:BufferedReader,BufferedWriter 緩沖流的基本原理,是在創建流物件時,會創建一個內置的默認大小的緩沖區陣列,通過緩沖 ......

    uj5u.com 2023-04-20 07:22:49 more
  • Java-SpringBoot-Range請求頭設定實作視頻分段傳輸

    老實說,人太懶了,現在基本都不喜歡寫筆記了,但是網上有關Range請求頭的文章都太水了 下面是抄的一段StackOverflow的代碼...自己大修改過的,寫的注釋挺全的,應該直接看得懂,就不解釋了 寫的不好...只是希望能給視頻網站開發的新手一點點幫助吧. 業務場景:視頻分段傳輸、視頻多段傳輸(理 ......

    uj5u.com 2023-04-20 07:22:42 more
  • Windows 10開發教程_編程入門自學教程_菜鳥教程-免費教程分享

    教程簡介 Windows 10開發入門教程 - 從簡單的步驟了解Windows 10開發,從基本到高級概念,包括簡介,UWP,第一個應用程式,商店,XAML控制元件,資料系結,XAML性能,自適應設計,自適應UI,自適應代碼,檔案管理,SQLite資料庫,應用程式到應用程式通信,應用程式本地化,應用程式 ......

    uj5u.com 2023-04-20 07:22:35 more