开发工具(IDEA,Git,SVN,JD-GUI), 测试工具(Jmeter) & 各种在线转换工具

#github加速站点, 可能会限流
https://github.com.cnpmjs.org/

1.IDEA相关(含本地部署)

1.1 本地调试时,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>
    <!--配置初始化参数-->
    <init-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>classpath:springmvc.xml</param-value>
    </init-param>
    <!--配置启动的优先级-->
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>DispatcherServlet</servlet-name>
    <url-pattern>/</url-pattern>
  </servlet-mapping>

</web-app>

step2:项目对应的war包

图片.png

step3
图片.png

step4
图片.png

step5
图片.png

step6:输入ip,端口及controller层的mapping即可

http://localhost:8080/es/index

1.2 使用技巧

1.2.0 默认配置的前置工作

如果已经打开项目,则
1.在idea右上角 --> file --> close project
2.删除.iml文件
3.configure处全局配置
4.project structure for new projects: 配置默认的jdk
5.settings for new projects: maven1: 设置 maven的本地配置

6.maven 的 maven home directory 经常自动改回去:
Idea 2020.2版本之后,无法设置maven home directory为自定义的地址(设置之后每次打开设置还是原来的地址),
如果想设置为自己的地址,可以将.mvn/wrapper/maven-wrapper.properties删掉,之后就能设置为自己的地址。

7.settings for new projects: maven2
maven在2020之后,执行Maven命令时,需要添加命令行参数
-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文件删除后,如何恢复
1.如果没有idea插件,在项目根pom.xml中,执行命令:
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中,执行命令:
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 设置创建新工程时, maven默认配置

IDEA-maven-default-for-new-project.png

1.2.2 设置创建新工程时, 编码默认配置

IDEA-encoding-default-for-new-project.png

1.2.3 设置当前窗口展示class信息

展示多少个class设置.png

1.3 相关插件

#jclasslib (查看字节码文件: 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(可视化的字节码查看插件, 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路径, 复制该路径到环境变量的path中, 即可使用

idea下启动tomcat发现乱码

# vmoptions ---> -Dfile.encoding=UTF-8
# 在idea的安装目录下, 2个vmoptions文件(idea.exe.vmoptions, idea64.exe.vmoptions) ---> -Dfile.encoding=UTF-8

1.5 远程debug(以tomcat为例)

#1.代码层面
保持本地代码和远程服务器上的代码保持一致

#2.catalina.sh
vi /opt/tomcat9/bin/catalina.sh
/JPDA_ADDRESS=8000
在bin目录下执行命令 'sh catalina.sh jpda start'
可以启动tomcat并开启远程调试的端口

https://www.cnblogs.com/qnight/p/8983145.html

本地配置-step1.png
本地配置-step2.png
本地配置-step3.png
本地配置-step4-SUCCESS.png

然后本地代码打上断点, 本地访问远程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
查看类的继承关系

4.Ctrl+Alt+B
查看子类方法实现
Ctrl+B可以查看父类或父方法定义,ctrl+鼠标左键也很方便。

5.Alt+F7
查找类或方法在哪被使用

6.Ctrl+F
按照文本的内容在本页查找

7.Ctrl+Shift+F
按照文本的内容全局查找。

8.Shift+Shift
搜索任何东西, 可搜索类、资源、配置项、方法等,还能搜索路径。
其中搜索路径非常实用,例如你写了一个功能叫hello,
在java,js,css,jsp中都有hello的文件夹,
那我们可以搜索"hello/"找到路径中包含hello的文件夹。

9.ctrl + alt +B     或者     Ctrl+Alt+鼠标左键
查看接口的实现类

10.ctrl + alt + <--(左箭头)
回到上一步查看的代码

11.ctrl + alt + -->(右箭头)
回到下一步查看的代码

12.alt + enter
万能键, 补全, 导包等等

13.ctrl + alt + t
try ... catch ... finally

14.ctrl + d
复制

15.ctrl + x
剪切(同删除)

16. ctrl + shift + +/-
+: 表示展开当前类的全部方法(去掉shift表示, 展开当前方法)
-: 表示收缩当前类的全部方法(去掉shift表示, 收缩当前方法)

17.ctrl + F12
查看当前class的所有方法,属性(可以勾选是否包括继承而来的)

18.ctrl + H
查看当前class的子类, 子接口等

19.ctrl + alt + B
查看当前class或者方法的子实现

20.ctrl+alt+u
查看类结构图,这些类都可以点击进入

21.ctrl+shift+alt+u
查看类结构图,这些类不能进入

22.alt+f7
查看方法引用位置

1.8 条件断点

循环中经常用到这个技巧,比如:遍历1个大List的过程中,想让断点停在某个特定值。
参考下图,在断点的位置,右击断点旁边的小红点,会出来一个界面,
在Condition这里填入断点条件即可,这样以debugs模式运行时,就会自动停在i=10的位置
条件断点.png

1.9 断点回到"上一步"

该技巧最适合特别复杂的方法套方法的场景,好不容易跑起来,一不小心手一抖,断点过去了,
想回过头看看刚才的变量值,如果不知道该技巧,只能再跑一遍。

#注意
如果想知道为啥这个功能叫Drop Frame,而不是类似Back To Previous 之类的,
可以去翻翻JVM的书,JVM内部以栈帧为单位保存线程的运行状态,
drop frame即扔掉当前运行的栈帧,这样当前“指针”的位置,就自然到了上一帧的位置。
断点回到"上一步".png

1.10 多线程调试

多线程同时运行时,谁先执行,谁后执行,完全是看CPU心情的,
无法控制先后,运行时可能没什么问题,但是调试时就比较麻烦了,
最明显的就是断点乱跳,一会儿停这个线程,一会儿停在另一个线程。

如果想让线程在调试时,想按自己的愿意来,
让它停在哪个线程就停在哪个线程,可以在图中5个断点的小红点上右击。
即:Suspend挂起的条件是按每个线程来,而非All。把这5个断点都这么设置。
多线程调试设置.png
多线程调试--选择指定线程.png

2.Jmeter

#JMeter测试参数说明:
Label:每一个测试单元的名字。
Samples:表示一个测试单元一共发出了多少个请求。
Average:平均响应时间——默认情况下是单个 Request 的平均响应时间,当使用了 Transaction Controller 时,也可以以Transaction 为单位显示平均响应时间。,不重要。
Median:中位数,也就是 50% 用户的响应时间,如果把响应时间从小到大顺序排序,那么50%的请求的响应时间在这个范围之内。重要。
90% Line:90% 用户的响应时间,如果把响应时间从小到大顺序排序,那么90%的请求的响应时间在这个范围之内。重要 。
Min:最小响应时间,不重要。
Max:最大响应时间,出现几率只不过是千分之一甚至万分之一,不重要。
Error%:本次测试中出现错误的请求的数量
Throughput:吞吐量——默认情况下表示每秒完成的请求数(Request per Second),当使用了 Transaction Controller 时,也可以表示类似 LoadRunner 的 Transaction per Second 数
KB/Sec:每秒从服务器端接收 到的数据量(只是接收),相当于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文件内容如下:
tom,21
jerry,22
john,23
trump,24
Jmeter06.png
Jmeter07.png
Jmeter08.png
Jmeter09.png
Jmeter10.png
Jmeter11.png

要测试的java程序

实体--与data.txt对应.png

Controller层.png

3.Git

git 设置 ssh

当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 存在,直接进入第step4步开始
#step2:生成key (秘钥)
在git中输入命令:$  ssh-keygen -t rsa -C “你公司在GITLAB上的邮箱地址”,按下回车键
#step3:再次回车即可
#step4:复制秘钥
找到 id_dsa.pub 文件, 一般在 /c/Users/asus/.ssh 下, 也可以借助文件查找工具,全局查找, 复制该文件的全部内容
#step5:在 gitlab 上添加 key
登陆 gitlab 网站:点击头像/账号--Settings--SSH KEYS, 将step4中复制的秘钥粘贴到秘钥框中, 点击 Add key 即可.

https://blog.csdn.net/gufenchen/article/details/95663284 (git-ssh)

3.1 常见命令

#分支操作:
git branch 创建分支
git branch -b 创建并切换到新建的分支上
git checkout 切换分支
git branch 查看分支列表
git branch -v 查看所有分支的最后一次操作
git branch -vv 查看当前分支
git brabch -b 分支名 origin/分支名 创建远程分支到本地
git branch --merged 查看别的分支和当前分支合并过的分支
git branch --no-merged 查看未与当前分支合并的分支
git branch -d 分支名 删除本地分支
git branch -D 分支名 强行删除分支
git branch origin :分支名 删除远处仓库分支
git merge 分支名 合并分支到当前分支上

#暂存操作:
git stash 暂存当前修改
git stash apply 恢复最近的一次暂存
git stash pop 恢复暂存并删除暂存记录
git stash list 查看暂存列表
git stash drop 暂存名(例:stash@{0}) 移除某次暂存
git stash clear 清除暂存

#回退操作:
git reset --hard HEAD^ 回退到上一个版本
git reset --hard ahdhs1(commit_id) 回退到某个版本
git checkout -- file撤销修改的文件(如果文件加入到了暂存区,则回退到暂存区的,如果文件加入到了版本库,则还原至加入版本库之后的状态)
git reset HEAD file 撤回暂存区的文件修改到工作区

#标签操作:
git tag 标签名 添加标签(默认对当前版本)
git tag 标签名 commit_id 对某一提交记录打标签
git tag -a 标签名 -m '描述' 创建新标签并增加备注
git tag 列出所有标签列表
git show 标签名 查看标签信息
git tag -d 标签名 删除本地标签
git push origin 标签名 推送标签到远程仓库
git push origin --tags 推送所有标签到远程仓库
git push origin :refs/tags/标签名 从远程仓库中删除标签

#常规操作:
git push origin test 推送本地分支到远程仓库
git rm -r --cached 文件/文件夹名字 取消文件被版本控制
git reflog 获取执行过的命令
git log --graph 查看分支合并图
git merge --no-ff -m '合并描述' 分支名 不使用Fast forward方式合并,采用这种方式合并可以看到合并记录
git check-ignore -v 文件名 查看忽略规则
git add -f 文件名 强制将文件提交
git fetch:相当于是从远程获取最新版本到本地,但不会自动 merge
git pull:相当于是从远程获取最新版本并 merge 到本地

#git创建项目仓库:
git init 初始化
git remote add origin url 关联远程仓库
git pull
git fetch 获取远程仓库中所有的分支到本地

#忽略已加入到版本库中的文件:
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中如何进行GIT分支合并 (rebase)

假设目前已有本地分支是 Feature20200224, 想将本地分支推送到
远程分支 Feature20200224 后, 合并到远程分支Dev20200224上.

步骤如下:
#step1.检出远程分支origin/Dev20200224到本地
工程上右键-->Git-->Repository-->Branches-->Remote Branches-->origin/Dev20200224-->输入新的本地分支名Dev20200224(默认即为该名称)
#step2.将本地分支由Feature20200224变基/切换到Dev20200224
工程上右键-->Git-->Repository-->Rebase-->
>> Branche: Dev20200224, Interactive(打钩)
>> Onto: refs/remotes/origin/Dev20200224
>> show Remote Branches (打钩)
#step3.将远程分支Dev20200224上的更改合并到本地分支Dev20200224 (先确保本地分支是Dev20200224)
工程上右键-->Git-->Repository-->
#step4.将远程分支Feature20200224上的更改Merge到本地分支Dev20200224
工程上右键-->Git-->Repository-->Branches-->Remote Branches-->origin/Feature20200224-->Merge into current
#step5.将本地分支Dev20200224推送到远程分支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.解决方案:
① 保存本地代码
② 执行git fetch --all
③ 执行git reset --hard origin/master ----> git reset 把HEAD指向刚刚下载的最新的版本
④pull主分支下的代码
⑤解决冲突,然后提交代码到自己的分支那里
step1:执行git 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 的账号密码改变, 再操作时会提示无权限

#修改方式, 以控制面板\所有控制面板项\凭据管理器

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项目对应的目录位置右键打开Git Bash Here(注意项目目录的位置)
2.然后在命令窗输入下面命令:(最后出现完成信息,则操作成功)
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文件转为 .java源文件

#step1:
file-->open file-->打开对应的jar包即可
#step2:
file-->save all sources

6.Arthas

https://alibaba.github.io/arthas/

7.各种在线转换工具

7.1 ASCII码, JSON, 进制等各种转换

https://www.sojson.com/ascii.html
http://www.dmd5.com/# (MD5在线解析)

8.Notepad++

8.1 NppFtp插件(可远程连接Linux)安装

#1.安装
在 "插件"--> "管理" --> "可用" 中搜索 "NppFtp" --> 点击下载-->完成后重启.
如果下载失败, 注意 windows 防火墙要允许 notepad++ 通过.

#2.使用
"插件" --> NppFtp --> Show NppFtp window
nppftp插件远程连接linux.png

8.2 其他常用插件

compare (文件对比插件)

参考资源
https://blog.csdn.net/guoyuannan/article/details/77168387

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,839评论 6 482
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,543评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 153,116评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,371评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,384评论 5 374
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,111评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,416评论 3 400
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,053评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,558评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,007评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,117评论 1 334
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,756评论 4 324
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,324评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,315评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,539评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,578评论 2 355
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,877评论 2 345

推荐阅读更多精彩内容