JetBrains使用笔记
# 设置
# IDEA
# IDEA 预设快捷操作
File | Settings | Editor | General | Postfix Completion
例:
"Hello World".sout => System.out.println("Hello World")
# 自动导包
setting->editor->general->auto import => Add unambiquous imports on the fly
文件 | 设置 | 编辑器 | 常规 | 自动导入 => 动态添加明确的 import
# 方法间加横线间隔
setting->editor->general->apperance => Show method separators
文件 | 设置 | 编辑器 | 常规 | 外观 => 显示方法分隔符
# 提示不区分大小写
setting->editor->general->code completion => Matc case (不勾选)
文件 | 设置 | 编辑器 | 常规 | 代码完成 => 区分大小写 (不勾选)
# 自动编译
File | Settings | Build, Execution, Deployment | Compiler
# 隐藏文件 / 文件夹
文件 | 设置 | 编辑器 | 文件类型
多用于忽略.idea 文件夹
# 创建文件作者日期信息
文件 | 设置 | 编辑器 | 文件和代码模板 => Include -> File Header
/**
* @author NipGeihou
* @date ${DATE}
*/
# 单行注释格式化不换号
File | Settings | Editor | Code Style | Java => JavaDoc => Other => Do not warp one line comments
# 编码格式
# 通用
# 切换弹窗提交代码
File | Settings | Version Control | Commit => Use non-modal commit interface
# 插件
# 全家桶通用
CamelCase
:各种命名格式切换小驼峰、大驼峰、下划线等。选中
+Shift + Alt + U
Rainbow Brackets
:彩虹括号,让代码中的各种括号容易区分Nyan Progress Bar
:彩虹猫进度条CodeGlance Pro
:类似 Sublime 的编辑器右侧代码缩略图Atom Material Icons
:丰富页面图标.env files support
:高亮.env 文件Git Commit Template
:Git 提交模板Codeium
:AI 代码提示,Github Copilot 平台
# IDEA
Alibaba Java Coding Guidelines
:阿里巴巴 Java 代码规范Auto filling Java call arguments
:类似于 Eclipse 的参数补全功能,不是很好用,只有在方法没有重载,也就是只有一个同名方法时才有效,当然也可能是我不会用JRebel and XRebel for IntelliJ
:热部署
JRebel激活方式
不知道是不是因为别人的域名被点了,使用
jrebel.qekang.com
的激活服务器是无法激活的,但网上流传使用 ilanyu/ReverseProxy: ReverseProxy in golang (opens new window) 激活的方式,看起来像是将激活服务器返代到本地 127.0.0.1,不确定这样做跟直接访问有什么区别,如果域名没有被点的情况下(如自建),因此我使用自建注册服务器的方式。
自建注册服务器
在更新到
2023.4.2
遇到激活成功,但 JRebel 似乎在执行到某段代码时会报Cannot read the array length because "sigBytes" is null
错误导致激活失效,虽可以重新点击激活,但很麻烦。经降级尝试发现,降级
2023.3.0
也无法解决此问题,最后将 JRebel 插件卸载重置并删除~/.jrebel
文件夹, 仍然出现此问题。降级
2023.2.2
,待更新
- 下载源码:NipGeihou/JrebelLicenseServerforJava: 搭建 IDEA 热部署插件 Jrebel 的激活服务 (opens new window)
- 构建 jar:
mvn clean package
- 构建 Docker 镜像:
docker build -t jrebel-ls .
- 启动 Docker 容器:
docker run -d --name jrebel-ls --restart always -e PORT=9001 -p 9001:9001 jrebel-ls
别人搭的注册服务器(失效)
生成一个 GUID,随便找个网站生成即可,比如 Generate GUIDs online (opens new window)- 寻找一个注册服务器网址,如 https://www.jpy.wang/page/jrebel.html (opens new window),通常都携带了生成 GUID 的逻辑。
- 选择 Team URL
- Service Address :
https://jrebel.qekang.com/{GUID}
- Email:随意
- Service Address :
MyBatisX
:来自 MyBatis-Plus 团队的 MyBatis 辅助插件,Mapper 和 XML 来回切换、快速创建、智能提示等GenerateAllSetter
:生成对象的所有 set 方法代码
点击查看
Student student = new Student();
// 光标在student处 alt + enter 选择Generate all setter with default value,生成
student.setName("");
student.setAge(0);
student.setClazz("");
POJO to JSON
:将 POJO 转 JSON 到剪贴板,POJO 类下右键 -> 复制 / 粘贴特殊 -> Copy JSONRestfulTool
:API 接口搜索:Ctrl + Alt + /
,快速根据 CURL 中的路径找到对应的 Controller 类EasyCode
:代码生成器,可灵活配置模板生成代码的内容,也可用于其他 JetBrains 软件中。
# 快捷键
以 IDEA
为例:
Ctrl + Shift + Enter
:括号补全、向下插入一行Ctrl + Alt + 点击接口方法
:跳转到实现类方法Ctrl + U
:跳转到光标所在的方法的接口方法Ctrl + W
:选择一个表达式的范围,再按则更大的范围Ctrl + Shift + W
:与上一个配合使用,减少选中表达式范围Ctrl + F
:文件内搜索Ctrl + Shift + F
:全局搜索Ctrl + R
:文件内替换Ctrl + Shift + R
:全局替换点击实现类方法名 + Ctrl + Q
:查看接口类注释等信息Ctrl + Alt + O
:删除导入但未使用的包Ctrl + Alt + T
:包裹代码生成 try-catch、if 等结构Ctrl + Alt + U
:类图关系Ctrl + Alt + Shift + T
:重构菜单- 向上提取成员(pull members up):将当前方法提取到接口(即可先在实现类写方法,再使用此功能在接口生成)
Ctrl + J
:Ctrl + ~
:Ctrl + F12
:查看当前类的方法列表F2
:跳转到下一个警告 / 错误位置
参考:Top 15 IntelliJ IDEA shortcuts - YouTube (opens new window)
# 激活
这两个方法都使用到 ja-netfilter
方法一: 脚本一键激活
点击查看
通过 JETBRA.IN CHECKER | IPFS (opens new window) ,找到一个可用的 Hostname,并进入
确定当前支持的 IDEA 版本,如
2022.2.x
到官网下载小于或等于的版本、安装:Other Versions - IntelliJ IDEA (opens new window)
下载
jetbra.zip
脚本文件解压,按操作系统执行
scripts
文件夹中对应的脚本- Windows:
install-all-users.vbs
orinstall-current-user.vbs
- MacOS:
install.sh
- Windows:
激活
- 方式一:服务器激活
- 方式二:在
可用的Hostname
中复制激活码
参考:
方法二: 手动操作
原理分析
ja-netfilter 的项目并没有过多提及它是可以激活 JetBrains 全家桶的,只是说:
请不要试图结合 IDE Eval Resetter 一文中所说热心大佬的 key 来使用本项目。赶快入正!赶快入正!赶快入正!
这里探讨 ja-netfilter 的三个功能(插件): dns、url、power
dns
用于拦截域名解析,以上面热心大佬脚本里的配置文件为例:
[DNS]
EQUAL,jetbrains.com
EQUAL,plugin.obroom.com
跟 clash 的分流规则是类似的,这里就不展开说明了,语法规则参考:ja-netfilter: A Java Instrumentation Framework# Config file format (opens new window)
url
用于拦截 URL 请求,当程序要访问特点的 url 时抛出 SocketTimeoutException
异常。
[URL]
PREFIX,https://account.jetbrains.com/lservice/rpc/validateKey.action
power
用于篡改 BigInteger
的 oddModPow
方法的返回,而这个方法常常在非对称加密算法中使用。
[Result]
; Suit 230914
EQUAL,75888623192465772084955377951198306702135327313062315225563718470653661793801719178647553532410237467495550800187973529202133466238825354135988657390766050197160093050945611087414688022502220060564716139142356429494315004946432334067127515081383336664162877126600357077796107641437507844835265792365885264118815924123978949395829736969354441202826225673948313261585644898954777409621857150971668073862687253868141869122469331021430401371289707681211947592819675200121184556360932201089199282211738120006888533563163642302207579745484728384486428222208213812291528007428530070242454238203928550683105421062331094750845145505608972009635176965215115688208740845303355991059521804735078574469432870400787428253602342729300042328170420659062588195293985517003844343989763104027328569042852690996233875190439074960872926324787157115483523118473430609411096400697894536993294915535905449630056538884982426205451557516203033628658808550799424730131437543420952769712793044255279152357141856290356977839447381244929084411487482957782888343837193520146442780899122074573307925429597225835206724304378622338028349953089952976438255759582568115277066791679931555627913314296216846420738487344812850701846117667234235837952975099539950423673283,65537,860106576952879101192782278876319243486072481962999610484027161162448933268423045647258145695082284265933019120714643752088997312766689988016808929265129401027490891810902278465065056686129972085119605237470899952751915070244375173428976413406363879128531449407795115913715863867259163957682164040613505040314747660800424242248055421184038777878268502955477482203711835548014501087778959157112423823275878824729132393281517778742463067583320091009916141454657614089600126948087954465055321987012989937065785013284988096504657892738536613208311013047138019418152103262155848541574327484510025594166239784429845180875774012229784878903603491426732347994359380330103328705981064044872334790365894924494923595382470094461546336020961505275530597716457288511366082299255537762891238136381924520749228412559219346777184174219999640906007205260040707839706131662149325151230558316068068139406816080119906833578907759960298749494098180107991752250725928647349597506532778539709852254478061194098069801549845163358315116260915270480057699929968468068015735162890213859113563672040630687357054902747438421559817252127187138838514773245413540030800888215961904267348727206110582505606182944023582459006406137831940959195566364811905585377246353->31872219281407242025505148642475109331663948030010491344733687844358944945421064967310388547820970408352359213697487269225694990179009814674781374751323403257628081559561462351695605167675284372388551941279783515209238245831229026662363729380633136520288327292047232179909791526492877475417113579821717193807584807644097527647305469671333646868883650312280989663788656507661713409911267085806708237966730821529702498972114194166091819277582149433578383639532136271637219758962252614390071122773223025154710411681628917523557526099053858210363406122853294409830276270946292893988830514538950951686480580886602618927728470029090747400687617046511462665469446846624685614084264191213318074804549715573780408305977947238915527798680393538207482620648181504876534152430149355791756374642327623133843473947861771150672096834149014464956451480803326284417202116346454345929350148770746553056995922154382822307758515805142704373984019252210715650875853634697920708113806880196144197384637328982263167395073688501517286678083973976140696077590122053014085412828620051470085033364773099146103525313018873319293728800442101520384088109603555959893639842091339193857485407672132882577840295039058621747654642202620767068924079813640067442975
EQUAL,18334983902317920056407822076363704637127511531538667546454397384237002307773468304678083268940125026889850144873377524086979381177447338726740515125485990255804943597229646061638739889766127330669573122850717958841899404955081920145521154771305144425440057732333493057842144190570008851861105129783440041663779514287133102203234622617071230933765542056696346242481464904964506696247983144941959930402082784396824311315073713284265519582655262360264508170809532574071410971740082846089152772578790836229920359729093453981067609164052947062747210374015835086399513848397669153177129004699260465730470356144424062305576,65537,24156627931985958051017183040835577271803742470193804806479316178045088981962804168393398987646446251087541768081971475544151551235525470790716604369379805327668466429966167642117961353233058515180243264560201783520956161510523416923017697354365782825500659342029196527776056976223174394946371372849906309277537461992299774200098515526818746947230488275456663264920440977381968978227273889068919338259949793686590492904029279861913225794809675826299753284990778166519152326723946780528965868736869495336993456735232755342913885746267768375682771655854436236934171901662660193080235109535758464079136573948168636773471->986236757547332986472011617696226561292849812918563355472727826767720188564083584387121625107510786855734801053524719833194566624465665316622563244215340671405971599343902468620306327831715457360719532421388780770165778156818229863337344187575566725786793391480600129482653072861971002459947277805295727097226389568776499707662505334062639449916265137796823793276300221537201727072401742985542559596685092673521228140822200236743113743661549252453726123450722876929538747702356573783116366629850199080495560991841329893037291900147497007197055572787780928474439121996761454121550126010635197320122603857735547407
[Args]
EQUAL,65537,24773058818499217187577663886010908531303294206336895556072197892590450942803807164562754911175164262596715237551312004078542654996496301487027034803410086499747369353221485073240039340641397198525027728751956658900801359887190562885573922317930300068615009483578963467556425525328780085523172495307229112069939166202511721671904748968934606589702999279663332403655662225374084460291376706916679151764149324177444374590606643838366605181996272409014933080082205048098737253668016260658830645459388519595314928290853199112791333551144805347785109465401055719331231478162870216035573012645710763533896540021550083104281->3,24773058818499217187577663886010908531303294206336895556072197892590450942803807164562754911175164262596715237551312004078542654996496301487027034803410086499747369353221485073240039340641397198525027728751956658900801359887190562885573922317930300068615009483578963467556425525328780085523172495307229112069939166202511721671904748968934606589702999279663332403655662225374084460291376706916679151764149324177444374590606643838366605181996272409014933080082205048098737253668016260658830645459388519595314928290853199112791333551144805347785109465401055719331231478162870216035573012645710763533896540021550083104281
由此可见,ja-netfilter 并没有内置任何破解 JetBrains 全家桶的直接代码,它仅仅是一个工具,打个不差当的比如,就好比 clash,它只是一个分流代理工具,并不会因为有这个软件就可以访问外网,真正起作用的还是配置。
下载 ja-netfilter:ja-netfilter 发行版 - Gitee.com (opens new window),解压到一个不会删除的地方
- 当前最新版:
ja-netfilter-2022.2.0.zip
- 当前最新版:
打开 idea 的目录,如
C:\Users\zhangsan\AppData\Local\Programs\IntelliJ IDEA Ultimate\bin
找到
idea64.exe.vmoptions
的文件- 添加一行
-javaagent:/absolute/path/to/ja-netfilter/ja-netfilter.jar
# windows -javaagent:D:\software\ja-netfilter\ja-netfilter.jar
- 如果
idea - About IntelliJ IDEA
的Runtime version
是 JDK17,则还需要添加:
--add-opens=java.base/jdk.internal.org.objectweb.asm=ALL-UNNAMED --add-opens=java.base/jdk.internal.org.objectweb.asm.tree=ALL-UNNAMED
即是:
-javaagent:D:\software\ja-netfilter\ja-netfilter.jar --add-opens=java.base/jdk.internal.org.objectweb.asm=ALL-UNNAMED --add-opens=java.base/jdk.internal.org.objectweb.asm.tree=ALL-UNNAMED
- 添加一行
回到
ja-netfilter
的config
目录编写配置,配置哪里可以找到呢?- 在
方法一
中的jetbra.zip
中的config-jetbrains
目录下有,覆盖或逐一配置即可。
- 在
打开 idea,使用
Activation code(激活码)
方式激活,激活码又哪里找呢?- JETBRA.IN CHECKER | IPFS (opens new window) 打开一个可用的地址,复制对应的激活码。激活码向下兼容,如我使用的
2022.3.3
,页面显示的2024.1.x
,同样可用。
- JETBRA.IN CHECKER | IPFS (opens new window) 打开一个可用的地址,复制对应的激活码。激活码向下兼容,如我使用的
还有一种方式是通过服务器激活,服务器地址为 https://jetbra.in
,但实践中发现会报以下错误,但我又不想卸载重装,最终选中激活码方式激活。
License Server response has not passed data integrity check: Certificate used to sign the license is not signed by JetBrains root certificate (2)
参考:
- Ja-netfilter(idea 激活码破解原理)分析 - CSDN 博客 (opens new window)
- 分析 ja-netfilter 如何破解 jetbrains 的 IDE - 知乎 (opens new window)
- ja-netfilter-all 使用介绍 - CSDN 博客 (opens new window)
# 优化
Help | Diagnostic Tools | Activity Monitor
:查看 IDEA 活动监视器Help | Edit Custom VM Options
添加:-XX=TieredStopAtLevel=3
- 控制即时编译器的层次化编译,在第 3 个级别停止层次化编译。这意味着只有前三个级别的代码(通常是最热点的代码)会被即时编译器优化,而其他级别的代码将使用解释执行。
-Xmx4096m
:最大堆大小,按机器内存情况设置。
参考:
- Monitor IDE performance | IntelliJ IDEA Documentation (opens new window)
- Intellij Idea cpu 100% 卡顿 解决办法_idea jit compiler_csdn_life18 的博客 - CSDN 博客 (opens new window)
- jdk.internal.net.http heigh cpu usage always : IDEA-283482 (opens new window) (里面提及了一些优化策略)
- Spring: High CPU usage by IDEA 2023.1 from spring.model.utils.resources : IDEA-316653 (opens new window) :
- 2023 的早期版本似乎有 CPU 占用过高的问题,回滚到
2022.3.3
暂用
- 2023 的早期版本似乎有 CPU 占用过高的问题,回滚到