NipGeihou's blog NipGeihou's blog
  • Java

    • 开发规范
    • 进阶笔记
    • 微服务
    • 快速开始
    • 设计模式
  • 其他

    • Golang
    • Python
    • Drat
  • Redis
  • MongoDB
  • 数据结构与算法
  • 计算机网络
  • 应用

    • Grafana
    • Prometheus
  • 容器与编排

    • KubeSphere
    • Kubernetes
    • Docker Compose
    • Docker
  • 组网

    • TailScale
    • WireGuard
  • 密码生成器
  • 英文单词生成器
🍳烹饪
🧑‍💻关于
  • 分类
  • 标签
  • 归档

NipGeihou

我见青山多妩媚,料青山见我应如是
  • Java

    • 开发规范
    • 进阶笔记
    • 微服务
    • 快速开始
    • 设计模式
  • 其他

    • Golang
    • Python
    • Drat
  • Redis
  • MongoDB
  • 数据结构与算法
  • 计算机网络
  • 应用

    • Grafana
    • Prometheus
  • 容器与编排

    • KubeSphere
    • Kubernetes
    • Docker Compose
    • Docker
  • 组网

    • TailScale
    • WireGuard
  • 密码生成器
  • 英文单词生成器
🍳烹饪
🧑‍💻关于
  • 分类
  • 标签
  • 归档
  • 网站收藏与推荐
  • JetBrains使用笔记
    • 设置
      • IDEA
      • IDEA预设快捷操作
      • 自动导包
      • 自动编译
      • 隐藏文件/文件夹
      • 创建文件作者日期信息
      • 单行注释格式化不换号
      • 编码格式
      • 通用
      • 方法间加横线间隔
      • 提示不区分大小写
      • 切换弹窗提交代码
    • 插件
      • 全家桶通用
      • IDEA
    • 快捷键
    • 激活
    • 优化
  • DataGrip使用笔记
  • Git仓库推荐
  • 微信Windows版内置浏览器远程调试
  • 查看宝塔面板初始化账号密码
  • 使用Meilisearch搜索博客文章
  • 常用软件
  • VS Code使用笔记
  • 一些小知识
  • Edge浏览器使用笔记
  • PDF电子书目录(书签)制作
  • Obsidian使用笔记
  • JetBrains远程开发最佳实践
  • Home Assistant最佳实践
  • 分享
NipGeihou
2022-01-05
目录

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

# 自动编译

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

image-20230601114617642

# 编码格式

image-20230606170325702

# 通用

# 方法间加横线间隔

setting->editor->general->apperance => Show method separators

文件 | 设置 | 编辑器 | 常规 | 外观 => 显示方法分隔符

# 提示不区分大小写

setting->editor->general->code completion => Matc case (不勾选)

文件 | 设置 | 编辑器 | 常规 | 代码补全 => 区分大小写 (不勾选)

# 切换弹窗提交代码

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 平替
  • Translation :翻译

# 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://jrebel.haitim.cn/ (opens new window),通常都携带了生成 GUID 的逻辑。
  • 选择 Team URL
    • Service Address :https://jrebel.haitim.cn/{GUID}
    • Email:随意
  • 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 JSON
  • RestfulTool :API 接口搜索: Ctrl + Alt + / ,快速根据 CURL 中的路径找到对应的 Controller 类
  • EasyCode :代码生成器,可灵活配置模板生成代码的内容,也可用于其他 JetBrains 软件中。

# 快捷键

参考:https://resources.jetbrains.com/storage/products/intellij-idea/docs/IntelliJIDEA_ReferenceCard.pdf (opens new window)

以 IDEA 为例:

Windows macOS 说明
Ctrl + Shift + Enter 括号补全、向下插入一行
Ctrl + Alt + 点击接口方法 跳转到实现类方法
Ctrl + D ⌘ + D 复制行 or 选中
Ctrl + E ⌘ + E 查看最近的文件列表
Ctrl + G ⌘ + L 跳转行 (: 列)
Ctrl + U 跳转到光标所在的方法的接口方法
Ctrl + W 选择一个表达式的范围,再按则更大的范围
Ctrl + Y ⌘ + ⌫ 删除行
Ctrl + Shift + W 与上一个配合使用,减少选中表达式范围
Ctrl + F 文件内搜索
Ctrl + Shift + F 全局搜索
Ctrl + R 文件内替换
Ctrl + Shift + R 全局替换
点击实现类方法名 + Ctrl + Q 查看接口类注释等信息
Ctrl + Alt + L ⌘ + ⌥ + L 格式化代码
Ctrl + Alt + O ⌃ + ⌥ + O 删除导入但未使用的包
Ctrl + Alt + T 包裹代码生成 try-catch、if 等结构
Ctrl + Alt + U 类图关系
Ctrl + Alt + Shift + T 重构菜单
Ctrl + Alt + ⬅️/➡️ 后退 / 前进
Ctrl + F12 查看当前类的方法列表
F2 跳转到下一个警告 / 错误位置
  • 重构菜单
    • 向上提取成员(pull members up):将当前方法提取到接口(即可先在实现类写方法,再使用此功能在接口生成)

参考: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 or install-current-user.vbs
    • MacOS: install.sh
  • 完善配置: "jetbra\config-jetbrains\url.conf" ,追加

PREFIX,https://account.jetbrains.com.cn/lservice/rpc/validateKey.action
  • 激活

    • 方式一:服务器激活: https://jetbra.in/
    • 方式二:在 可用的Hostname 中复制激活码

参考:

  • Idea2022 激活教程 - Endv - 博客园 (opens new window)
  • 介绍一个” 牛逼闪闪” 开源库:ja-netfilter – 知了 (opens new window)(一手出处)

方法二: 手动操作

原理分析

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
PREFIX,https://account.jetbrains.com.cn/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 ,同样可用。

还有一种方式是通过服务器激活,服务器地址为 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 暂用
#JetBrains#IDEA#Webstorm#Phpstorm
上次更新: 2025/04/18, 19:09:23
网站收藏与推荐
DataGrip使用笔记

← 网站收藏与推荐 DataGrip使用笔记→

最近更新
01
iSCSI服务搭建
05-10
02
磁盘管理与文件系统
05-02
03
网络测试 - iperf3
05-02
更多文章>
Theme by Vdoing | Copyright © 2018-2025 NipGeihou | 友情链接
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式