#github加速站點, 可能會限流
https://github.com.cnpmjs.org/
1.IDEA相關(guān)(含本地部署)
1.1 本地調(diào)試時,spring項目配置如下:
step1: 需將webapp下的WEB-INF下的web.xml配置好,并引入此處
圖片.png
web.xml
<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd" >
<web-app>
<display-name>spring-elasticsearch-demo</display-name>
<!--配置springmvc-->
<servlet>
<servlet-name>DispatcherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!--配置初始化參數(shù)-->
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springmvc.xml</param-value>
</init-param>
<!--配置啟動的優(yōu)先級-->
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>DispatcherServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
step2:項目對應(yīng)的war包
圖片.png
step3
圖片.png
step4
圖片.png
step5
圖片.png
step6:輸入ip,端口及controller層的mapping即可
http://localhost:8080/es/index
1.2 使用技巧
1.2.0 默認(rèn)配置的前置工作
如果已經(jīng)打開項目伴箩,則
1.在idea右上角 --> file --> close project
2.刪除.iml文件
3.configure處全局配置
4.project structure for new projects: 配置默認(rèn)的jdk
5.settings for new projects: maven1: 設(shè)置 maven的本地配置
6.maven 的 maven home directory 經(jīng)常自動改回去:
Idea 2020.2版本之后播急,無法設(shè)置maven home directory為自定義的地址(設(shè)置之后每次打開設(shè)置還是原來的地址),
如果想設(shè)置為自己的地址,可以將.mvn/wrapper/maven-wrapper.properties刪掉,之后就能設(shè)置為自己的地址。
7.settings for new projects: maven2
maven在2020之后,執(zhí)行Maven命令時瘦馍,需要添加命令行參數(shù)
-Dmaven.multiModuleProjectDirectory=$MAVEN_HOME -Dmaven.wagon.http.ssl.insecure=true -Dmaven.wagon.http.ssl.allowall=true -Dmaven.wagon.http.ssl.ignore.validity.dates=true
8.iml文件刪除后,如何恢復(fù)
1.如果沒有idea插件应役,在項目根pom.xml中情组,執(zhí)行命令:
mvn idea:idea -Dmaven.multiModuleProjectDirectory=$MAVEN_HOME -Dmaven.wagon.http.ssl.insecure=true -Dmaven.wagon.http.ssl.allowall=true -Dmaven.wagon.http.ssl.ignore.validity.dates=true
2.如果有,則在項目根pom.xml中箩祥,執(zhí)行命令:
mvn idea:module -Dmaven.multiModuleProjectDirectory=$MAVEN_HOME -Dmaven.wagon.http.ssl.insecure=true -Dmaven.wagon.http.ssl.allowall=true -Dmaven.wagon.http.ssl.ignore.validity.dates=true
3.另一種方案是:點擊工程右上角的“刷新”按鈕院崇, reload all maven projects.
https://www.icode9.com/content-4-1351247.html
全局配置.png
project structure for new projects.png
settings for new projects: maven1
settings for new projects: maven2
1.2.1 設(shè)置創(chuàng)建新工程時, maven默認(rèn)配置
IDEA-maven-default-for-new-project.png
1.2.2 設(shè)置創(chuàng)建新工程時, 編碼默認(rèn)配置
IDEA-encoding-default-for-new-project.png
1.2.3 設(shè)置當(dāng)前窗口展示class信息
展示多少個class設(shè)置.png
1.3 相關(guān)插件
#jclasslib (查看字節(jié)碼文件: view --> show bytecode with jclasslib)
#Alibaba Java Coding Guidelines
# BashSupport
# FindBugs-IDEA-1.0.1
# junitGenerator V2.0插件
# lombok-plugin-0.19-2018.EAP
# markdown-182.2371
# mavenHelper
# VisualVMLauncher
# Git
# jclasslib bytecode viewer(可視化的字節(jié)碼查看插件, jvm指令查看)
# Stack trace to UML
# sequencediagram (時序圖插件, 解讀源碼必備)
#IdeaJad (反編譯神器)
#GrepConsole(日志查看神器)
#TranslationPlugin(翻譯)
#free-idea-mybatis
#MybatisCodeHelperNew
1.3.1 VisualVM Launcher
VisualVM Launcher01.png
VisualVM Launcher02.png
VisualVM Launcher03.png
1.3.2 Alibaba Java Coding Guidelines
Alibaba Java Coding Guidelines.png
Alibaba Java Coding Guidelines Result.png
1.4 問題
idea中提示mvn無法使用
在idea的安裝目錄下, 找到D:\IntelliJIDEA\IntelliJ IDEA 2018.2.2\plugins\maven\lib\maven3\bin路徑, 復(fù)制該路徑到環(huán)境變量的path中, 即可使用
idea下啟動tomcat發(fā)現(xiàn)亂碼
# vmoptions ---> -Dfile.encoding=UTF-8
# 在idea的安裝目錄下, 2個vmoptions文件(idea.exe.vmoptions, idea64.exe.vmoptions) ---> -Dfile.encoding=UTF-8
1.5 遠(yuǎn)程debug(以tomcat為例)
#1.代碼層面
保持本地代碼和遠(yuǎn)程服務(wù)器上的代碼保持一致
#2.catalina.sh
vi /opt/tomcat9/bin/catalina.sh
/JPDA_ADDRESS=8000
在bin目錄下執(zhí)行命令 'sh catalina.sh jpda start'
可以啟動tomcat并開啟遠(yuǎn)程調(diào)試的端口
https://www.cnblogs.com/qnight/p/8983145.html
本地配置-step1.png
本地配置-step2.png
本地配置-step3.png
本地配置-step4-SUCCESS.png
然后本地代碼打上斷點, 本地訪問遠(yuǎn)程url即可, 如 http://192.168.0.199:5005/hello
1.6 class注釋模板, 方法模板配置
1.6.1 class注釋模板
IDEA--class模板.png
1.6.2 方法注釋模板
https://www.cnblogs.com/lqyy/p/9390441.html (第一步)
https://www.oschina.net/question/2376912_2281059 (第二步)
https://www.cnblogs.com/pcheng/p/10121683.html (方法注釋模板)
1.7 IDEA常用快捷鍵
1.Ctrl+N
按名字搜索類
2.Ctrl+Shift+N
按文件名搜索文件
3.Ctrl+H
查看類的繼承關(guān)系
4.Ctrl+Alt+B
查看子類方法實現(xiàn)
Ctrl+B可以查看父類或父方法定義,ctrl+鼠標(biāo)左鍵也很方便袍祖。
5.Alt+F7
查找類或方法在哪被使用
6.Ctrl+F
按照文本的內(nèi)容在本頁查找
7.Ctrl+Shift+F
按照文本的內(nèi)容全局查找底瓣。
8.Shift+Shift
搜索任何東西, 可搜索類、資源蕉陋、配置項捐凭、方法等拨扶,還能搜索路徑。
其中搜索路徑非常實用茁肠,例如你寫了一個功能叫hello屈雄,
在java,js官套,css,jsp中都有hello的文件夾蚁孔,
那我們可以搜索"hello/"找到路徑中包含hello的文件夾奶赔。
9.ctrl + alt +B 或者 Ctrl+Alt+鼠標(biāo)左鍵
查看接口的實現(xiàn)類
10.ctrl + alt + <--(左箭頭)
回到上一步查看的代碼
11.ctrl + alt + -->(右箭頭)
回到下一步查看的代碼
12.alt + enter
萬能鍵, 補(bǔ)全, 導(dǎo)包等等
13.ctrl + alt + t
try ... catch ... finally
14.ctrl + d
復(fù)制
15.ctrl + x
剪切(同刪除)
16. ctrl + shift + +/-
+: 表示展開當(dāng)前類的全部方法(去掉shift表示, 展開當(dāng)前方法)
-: 表示收縮當(dāng)前類的全部方法(去掉shift表示, 收縮當(dāng)前方法)
17.ctrl + F12
查看當(dāng)前class的所有方法,屬性(可以勾選是否包括繼承而來的)
18.ctrl + H
查看當(dāng)前class的子類, 子接口等
19.ctrl + alt + B
查看當(dāng)前class或者方法的子實現(xiàn)
20.ctrl+alt+u
查看類結(jié)構(gòu)圖,這些類都可以點擊進(jìn)入
21.ctrl+shift+alt+u
查看類結(jié)構(gòu)圖杠氢,這些類不能進(jìn)入
22.alt+f7
查看方法引用位置
1.8 條件斷點
循環(huán)中經(jīng)常用到這個技巧站刑,比如:遍歷1個大List的過程中,想讓斷點停在某個特定值鼻百。
參考下圖绞旅,在斷點的位置,右擊斷點旁邊的小紅點温艇,會出來一個界面因悲,
在Condition這里填入斷點條件即可,這樣以debugs模式運行時勺爱,就會自動停在i=10的位置
條件斷點.png
1.9 斷點回到"上一步"
該技巧最適合特別復(fù)雜的方法套方法的場景晃琳,好不容易跑起來,一不小心手一抖琐鲁,斷點過去了卫旱,
想回過頭看看剛才的變量值,如果不知道該技巧围段,只能再跑一遍顾翼。
#注意
如果想知道為啥這個功能叫Drop Frame,而不是類似Back To Previous 之類的奈泪,
可以去翻翻JVM的書适贸,JVM內(nèi)部以棧幀為單位保存線程的運行狀態(tài),
drop frame即扔掉當(dāng)前運行的棧幀段磨,這樣當(dāng)前“指針”的位置取逾,就自然到了上一幀的位置。
斷點回到"上一步".png
1.10 多線程調(diào)試
多線程同時運行時苹支,誰先執(zhí)行砾隅,誰后執(zhí)行,完全是看CPU心情的债蜜,
無法控制先后晴埂,運行時可能沒什么問題究反,但是調(diào)試時就比較麻煩了,
最明顯的就是斷點亂跳儒洛,一會兒停這個線程精耐,一會兒停在另一個線程。
如果想讓線程在調(diào)試時琅锻,想按自己的愿意來卦停,
讓它停在哪個線程就停在哪個線程,可以在圖中5個斷點的小紅點上右擊恼蓬。
即:Suspend掛起的條件是按每個線程來惊完,而非All。把這5個斷點都這么設(shè)置处硬。
多線程調(diào)試設(shè)置.png
多線程調(diào)試--選擇指定線程.png
2.Jmeter
#JMeter測試參數(shù)說明:
Label:每一個測試單元的名字小槐。
Samples:表示一個測試單元一共發(fā)出了多少個請求。
Average:平均響應(yīng)時間——默認(rèn)情況下是單個 Request 的平均響應(yīng)時間荷辕,當(dāng)使用了 Transaction Controller 時凿跳,也可以以Transaction 為單位顯示平均響應(yīng)時間。疮方,不重要控嗜。
Median:中位數(shù),也就是 50% 用戶的響應(yīng)時間骡显,如果把響應(yīng)時間從小到大順序排序躬审,那么50%的請求的響應(yīng)時間在這個范圍之內(nèi)。重要蟆盐。
90% Line:90% 用戶的響應(yīng)時間承边,如果把響應(yīng)時間從小到大順序排序,那么90%的請求的響應(yīng)時間在這個范圍之內(nèi)石挂。重要 博助。
Min:最小響應(yīng)時間,不重要痹愚。
Max:最大響應(yīng)時間富岳,出現(xiàn)幾率只不過是千分之一甚至萬分之一,不重要拯腮。
Error%:本次測試中出現(xiàn)錯誤的請求的數(shù)量
Throughput:吞吐量——默認(rèn)情況下表示每秒完成的請求數(shù)(Request per Second)窖式,當(dāng)使用了 Transaction Controller 時,也可以表示類似 LoadRunner 的 Transaction per Second 數(shù)
KB/Sec:每秒從服務(wù)器端接收 到的數(shù)據(jù)量(只是接收)动壤,相當(dāng)于LoadRunner中的Throughput/Sec
2.1壓力測試
下載地址
http://jmeter.apache.org/download_jmeter.cgi
Jmeter下載.png
Jmeter01.png
Jmeter02.png
Jmeter03.png
Jmeter04.png
Jmeter05.png
// data.txt文件內(nèi)容如下:
tom,21
jerry,22
john,23
trump,24
Jmeter06.png
Jmeter07.png
Jmeter08.png
Jmeter09.png
Jmeter10.png
Jmeter11.png
要測試的java程序
實體--與data.txt對應(yīng).png
Controller層.png
3.Git
git 設(shè)置 ssh
當(dāng)git 安裝好后:
#step1:檢查是否生成過KEY
打開 git bash 客戶端, 輸入命令:$ cd ~/.ssh
>> 如果報錯: bash: cd: /c/Users/asus/.ssh: No such file or directory, 表示沒有生成過 key.
>> 如果顯示有 id_rsa.pub 或者 id_dsa.pub 存在萝喘,直接進(jìn)入第step4步開始
#step2:生成key (秘鑰)
在git中輸入命令:$ ssh-keygen -t rsa -C “你公司在GITLAB上的郵箱地址”,按下回車鍵
#step3:再次回車即可
#step4:復(fù)制秘鑰
找到 id_dsa.pub 文件, 一般在 /c/Users/asus/.ssh 下, 也可以借助文件查找工具,全局查找, 復(fù)制該文件的全部內(nèi)容
#step5:在 gitlab 上添加 key
登陸 gitlab 網(wǎng)站:點擊頭像/賬號--Settings--SSH KEYS, 將step4中復(fù)制的秘鑰粘貼到秘鑰框中, 點擊 Add key 即可.
https://blog.csdn.net/gufenchen/article/details/95663284 (git-ssh)
3.1 常見命令
#分支操作:
git branch 創(chuàng)建分支
git branch -b 創(chuàng)建并切換到新建的分支上
git checkout 切換分支
git branch 查看分支列表
git branch -v 查看所有分支的最后一次操作
git branch -vv 查看當(dāng)前分支
git brabch -b 分支名 origin/分支名 創(chuàng)建遠(yuǎn)程分支到本地
git branch --merged 查看別的分支和當(dāng)前分支合并過的分支
git branch --no-merged 查看未與當(dāng)前分支合并的分支
git branch -d 分支名 刪除本地分支
git branch -D 分支名 強(qiáng)行刪除分支
git branch origin :分支名 刪除遠(yuǎn)處倉庫分支
git merge 分支名 合并分支到當(dāng)前分支上
#暫存操作:
git stash 暫存當(dāng)前修改
git stash apply 恢復(fù)最近的一次暫存
git stash pop 恢復(fù)暫存并刪除暫存記錄
git stash list 查看暫存列表
git stash drop 暫存名(例:stash@{0}) 移除某次暫存
git stash clear 清除暫存
#回退操作:
git reset --hard HEAD^ 回退到上一個版本
git reset --hard ahdhs1(commit_id) 回退到某個版本
git checkout -- file撤銷修改的文件(如果文件加入到了暫存區(qū),則回退到暫存區(qū)的阁簸,如果文件加入到了版本庫爬早,則還原至加入版本庫之后的狀態(tài))
git reset HEAD file 撤回暫存區(qū)的文件修改到工作區(qū)
#標(biāo)簽操作:
git tag 標(biāo)簽名 添加標(biāo)簽(默認(rèn)對當(dāng)前版本)
git tag 標(biāo)簽名 commit_id 對某一提交記錄打標(biāo)簽
git tag -a 標(biāo)簽名 -m '描述' 創(chuàng)建新標(biāo)簽并增加備注
git tag 列出所有標(biāo)簽列表
git show 標(biāo)簽名 查看標(biāo)簽信息
git tag -d 標(biāo)簽名 刪除本地標(biāo)簽
git push origin 標(biāo)簽名 推送標(biāo)簽到遠(yuǎn)程倉庫
git push origin --tags 推送所有標(biāo)簽到遠(yuǎn)程倉庫
git push origin :refs/tags/標(biāo)簽名 從遠(yuǎn)程倉庫中刪除標(biāo)簽
#常規(guī)操作:
git push origin test 推送本地分支到遠(yuǎn)程倉庫
git rm -r --cached 文件/文件夾名字 取消文件被版本控制
git reflog 獲取執(zhí)行過的命令
git log --graph 查看分支合并圖
git merge --no-ff -m '合并描述' 分支名 不使用Fast forward方式合并,采用這種方式合并可以看到合并記錄
git check-ignore -v 文件名 查看忽略規(guī)則
git add -f 文件名 強(qiáng)制將文件提交
git fetch:相當(dāng)于是從遠(yuǎn)程獲取最新版本到本地启妹,但不會自動 merge
git pull:相當(dāng)于是從遠(yuǎn)程獲取最新版本并 merge 到本地
#git創(chuàng)建項目倉庫:
git init 初始化
git remote add origin url 關(guān)聯(lián)遠(yuǎn)程倉庫
git pull
git fetch 獲取遠(yuǎn)程倉庫中所有的分支到本地
#忽略已加入到版本庫中的文件:
git update-index --assume-unchanged file 忽略單個文件
git rm -r --cached 文件/文件夾名字 (. 忽略全部文件)
#取消忽略文件:
git update-index --no-assume-unchanged file
#拉取筛严、上傳免密碼:
git config --global credential.helper stor
3.2 代碼提交
3.2.1 IDEA中如何進(jìn)行GIT分支合并 (rebase)
假設(shè)目前已有本地分支是 Feature20200224, 想將本地分支推送到
遠(yuǎn)程分支 Feature20200224 后, 合并到遠(yuǎn)程分支Dev20200224上.
步驟如下:
#step1.檢出遠(yuǎn)程分支origin/Dev20200224到本地
工程上右鍵-->Git-->Repository-->Branches-->Remote Branches-->origin/Dev20200224-->輸入新的本地分支名Dev20200224(默認(rèn)即為該名稱)
#step2.將本地分支由Feature20200224變基/切換到Dev20200224
工程上右鍵-->Git-->Repository-->Rebase-->
>> Branche: Dev20200224, Interactive(打鉤)
>> Onto: refs/remotes/origin/Dev20200224
>> show Remote Branches (打鉤)
#step3.將遠(yuǎn)程分支Dev20200224上的更改合并到本地分支Dev20200224 (先確保本地分支是Dev20200224)
工程上右鍵-->Git-->Repository-->
#step4.將遠(yuǎn)程分支Feature20200224上的更改Merge到本地分支Dev20200224
工程上右鍵-->Git-->Repository-->Branches-->Remote Branches-->origin/Feature20200224-->Merge into current
#step5.將本地分支Dev20200224推送到遠(yuǎn)程分支Dev20200224上
工程上右鍵-->Git-->Repository-->Push
step1-1.png
step1-2.png
step2.png
step3.png
step4.png
step5.png
https://blog.csdn.net/fengfengchen95/article/details/82910308
3.2.2 git代碼回退 (reset)
3.2.2.1 回退方法1
step1.png
step2.png
step3.png
3.2.2.1 回退方法2
step1.png
step2.png
3.3常見問題
3.3.1 pull 代碼時提示下述情景
pull的時候提示:You have not concluded your merge (MERGE_HEAD exists).
Exiting because of unfinished merge.
#問題分析
1.問題所在:fetch是將主分支上的所有的代碼都down下來,但不會自動合并饶米。
2.解決方案:
① 保存本地代碼
② 執(zhí)行g(shù)it fetch --all
③ 執(zhí)行g(shù)it reset --hard origin/master ----> git reset 把HEAD指向剛剛下載的最新的版本
④pull主分支下的代碼
⑤解決沖突桨啃,然后提交代碼到自己的分支那里
step1:執(zhí)行g(shù)it fetch --all.png
step2:git reset --hard origin/master.png
step2:git reset --hard origin/master.png
step3:pull主分支下的代碼 & 解決沖突.png
step4:將自己的代碼更新到自己分支上.png
step4:將自己的代碼更新到自己分支上.png
3.3.2 使用 TortoiseGit 客戶端時, 如果 git 的賬號密碼改變, 再操作時會提示無權(quán)限
#修改方式, 以控制面板\所有控制面板項\憑據(jù)管理器
3.3.3 your local changes would be overwritten by merge. Commint, stash or revert them to proceed.
step1: 儲存自己的修改
Git --> Repository --> Stash Changes...
step2: pull代碼
Git --> Repository --> Pull
step3: 取出自己的修改
Git --> Repository --> UnStash Changes...
step4: 然后是 commit, push
step1: 儲存自己的修改.png
3.3.4 Push to origin/master was rejected
1.在git項目對應(yīng)的目錄位置右鍵打開Git Bash Here(注意項目目錄的位置)
2.然后在命令窗輸入下面命令:(最后出現(xiàn)完成信息,則操作成功)
git pull origin master --allow-unrelated-histories
3.之后Push代碼即可
3.99 2021 年之后需要使用 token 提交代碼的 github
#下載代碼
git clone https://oauth2:your_token@github.com/username/projectname.git
#提交代碼
git push https://your_token@github.com/username/projectname.git
your_token: 使用自己在 github 上的生成token;
username/projectname.git: 使用你的項目鏈接
4.SVN
5.反編譯工具
1. IDEA反編譯 (推薦)
2. jd-jui
3. JAD
5.1 JD-JUI
5.1.1 將jar包中的.class文件轉(zhuǎn)為 .java源文件
#step1:
file-->open file-->打開對應(yīng)的jar包即可
#step2:
file-->save all sources
6.Arthas
https://alibaba.github.io/arthas/
7.各種在線轉(zhuǎn)換工具
7.1 ASCII碼, JSON, 進(jìn)制等各種轉(zhuǎn)換
https://www.sojson.com/ascii.html
http://www.dmd5.com/# (MD5在線解析)
8.Notepad++
8.1 NppFtp插件(可遠(yuǎn)程連接Linux)安裝
#1.安裝
在 "插件"--> "管理" --> "可用" 中搜索 "NppFtp" --> 點擊下載-->完成后重啟.
如果下載失敗, 注意 windows 防火墻要允許 notepad++ 通過.
#2.使用
"插件" --> NppFtp --> Show NppFtp window
nppftp插件遠(yuǎn)程連接linux.png
8.2 其他常用插件
compare (文件對比插件)
參考資源
https://blog.csdn.net/guoyuannan/article/details/77168387