IDEA社区版,真香!
IDEA(IntelliJ IDEA)是众多 Java 开发者的首选。
商业版的昂贵
IDEA 商业版(IntelliJ IDEA Ultimate)功能非常强大,能够满足 Java 开发的所有需求,但其高昂的价格……

此时只能感叹,不是不想用正版,而是正版用不起!
破解版的弊端
除了购买正版,只能选择破解版了。
网上有非常多的破解教程,每个版本都会跟进,只要勤加动手,总是能破解的。
相信这是大多数开发者的选择,本人很长一段时间也是这样做的,但它有以下几个缺点:
-
BUG 频发。
由于是破解版,总会有一些莫名其妙的 BUG。
-
不能升级版本。
如果升级版本需要重新破解,比较麻烦,且成功的可能性未知。
-
不能稳定使用。
由于是破解版,随时可能遭遇官方的封杀,这样就不能用了,只能寻求其他破解之法。
所以,破解版虽然能够白嫖,但白嫖的代价可不低,特别是在工作场景中,工具的不稳定是会影响工作效率的,甚至是工作的心情。
社区版的真香
在经历了破解版的种种弊端后,我决定尝试下社区版。
之前白嫖商业版习惯了,从来没有关注过社区版,这次尝试之后,只能感叹,真香!
优点
社区版有两大显而易见的优点:
-
免费。
相较于商业版高昂的价格,社区版的免费无疑是最大的优点。
-
正版。
社区版由于是免费的,可以直接使用正版,省去了破解的麻烦,也规避了破解的所有缺点。
缺点
当然了,社区版的缺点也是有的:
-
功能较少。
社区版只提供了最基本的 Java 开发相关功能,商业版中的 Web 开发、数据库管理、特色功能都是没有的。
个人觉得这不是问题,因为 Web 开发、数据库管理都是有专业免费的工具可以实现的,那些特色功能在 Java 开发中也不是必需的。
-
性能较弱。
社区版的维护是没有商业版频繁的,所以性能和响应速度这些肯定无法与商业版相比。
在一段时间的使用下来,这点性能和响应速度的减弱是完全可以接受的,而且性能较弱也意味着占用的内存较少,对于 IDEA 这个”内存大户”甚至可以归为优点。
使用
在了解了社区版的优缺点后,就该介绍社区版的使用了。
首先声明,社区版的使用逻辑与商业版没有任何区别。
所以,对于熟悉商业版的开发者来说,社区版是没有学习成本的。
功能
这里只介绍社区版相较于商业版不能直接使用的功能。
社区版自带的功能与商业版一致,就不赘述了。
Lombok
与商业版不同,社区版是没有默认安装 Lombok 插件的,所以不能直接使用 Lombok 的功能,需要先安装插件:

安装插件后,Lombok 的功能与商业版一致,这里就不详细介绍了。
Docker
与商业版不同,社区版是没有默认安装 Docker 插件的,所以不能直接使用 Docker 的功能,需要先安装插件:

如果项目中需要使用 Dockerfile 等 Docker 的功能,可以安装此插件实现。
Tomcat
对于非 Spring Boot 项目,项目的运行需要依赖服务器,常用的服务器 Tomcat 社区版是没有自带功能的,需要先安装插件:

然后进行如下步骤配置 Tomcat:
-
配置服务。

-
添加 Tomcat。

-
配置 Tomcat。

这样,就可以使用 Tomcat 启动服务了。
打war包
IDEA 社区版不能像商业版那样可以通过工件打 war 包。
如果需要打 war 包,可以使用 Ant 进行打包,具体步骤如下:
-
创建
build.xml。<?xml version="1.0" encoding="UTF-8" standalone="no"?> <!-- WARNING: Eclipse auto-generated file.Any modifications will be overwritten.To include a user specific buildfile here, simply create one in the samedirectory with the processing instruction <?eclipse.ant.import?>as the first entry and export the buildfile again. --> <project basedir="." default="packWar" name="TARGET"><property environment="env"/><property name="debuglevel" value="source,lines,vars"/><property name="target" value="1.8"/><property name="source" value="1.8"/><!--自定义部分--><property name="build" value="${basedir}/build"/><property name="build.class" value="${basedir}/build/classes"/><property name="src" value="${basedir}/src"/><property name="web" value="${basedir}/WebContent"/><property name="project_jar_path" value="${web}/WEB-INF/lib"/><property name="jre_jar_path" value="D:\Environment\jdk\jdk1.8.0_202\jre\lib"/> <property name="jre_jar_ext_path" value="D:\Environment\jdk\jdk1.8.0_202\jre\lib\ext"/> <property name="tomcat_jar_path" value="D:\Environment\apache-tomcat-8.5.79\lib"/> <path id="project_jar"><fileset dir="${project_jar_path}"><include name="*.jar"/></fileset></path><path id="jre_jar"><fileset dir="${jre_jar_path}"><include name="*.jar"/></fileset></path><path id="jre_ext_jar"><fileset dir="${jre_jar_ext_path}"><include name="*.jar"/></fileset></path><path id="tomcat_jar"><fileset dir="${tomcat_jar_path}"><include name="*.jar"/></fileset></path><path id="TARGET.classpath"><pathelement location="build/classes"/><path refid="project_jar"/><path refid="jre_jar"/><path refid="jre_ext_jar"/><path refid="tomcat_jar"/></path><target name="clean"><echo message="--------------------开始清理旧的编译文件---------------------------"/><delete dir="build/classes"/><delete file="${basedir}/build/${ant.project.name}.war"/></target><target name="init"><echo message="---------------------开始拷贝资源文件-----------------------------"/><mkdir dir="build/classes"/><copy includeemptydirs="false" todir="build/classes"><fileset dir="src"><exclude name="**/*.java"/></fileset></copy><copy includeemptydirs="false" todir="build/classes"><fileset dir="resources"><exclude name="**/*.java"/></fileset></copy><copy includeemptydirs="false" todir="${project_jar_path}"><fileset dir="${tomcat_jar_path}"><include name="*.jar"/></fileset></copy></target><target name="build"><echo message="-----------------------开始编译JAVA文件-----------------------------"/><echo message="${ant.project.name}: ${ant.file}"/><javac debug="true" debuglevel="${debuglevel}" destdir="build/classes" includeantruntime="false" source="${source}" target="${target}"><src path="src"/><src path="resources"/><classpath refid="TARGET.classpath"/></javac></target><target name="packWar"><echo message="-----------------------开始构建war包-----------------------------"/><war destfile="${basedir}/build/${ant.project.name}.war" webxml="${web}/WEB-INF/web.xml"><fileset dir="${web}"/><classes dir="${build.class}"/></war></target> </project> -
创建
build.xml后会出现 Ant 的控制窗口。
-
选择
packWar,点击鼠标右键选择属性。
-
选择执行,在
Ant 命令行中输入如果命令:clean init build packWar点击确定保存配置。
-
需要打 war 包时,双击
packWar即可进行打包。按照
build.xml的配置:- 打的 war 包会放在
build目录下。 - 编译后的文件会放在
build/classess目录下。
如果需要调整,可以修改
build.xml中的配置。 - 打的 war 包会放在
如此,IDEA 社区版已经能满足日常的 Java 开发工作了,免费使用正版的 IDEA,只能说一句,真香!
相关文章:
IDEA社区版,真香!
IDEA(IntelliJ IDEA)是众多 Java 开发者的首选。 商业版的昂贵 IDEA 商业版(IntelliJ IDEA Ultimate)功能非常强大,能够满足 Java 开发的所有需求,但其高昂的价格…… 此时只能感叹,不是不想用…...
SpringBoot实现全局异常处理
1.全局异常处理介绍 1.1 简介 全局异常处理器即把错误异常统一处理的方法,可以在多个地方使用,而不需要为每个地方编写单独的处理逻辑。它可以帮助开发人员更好地管理异常,并提供一致的错误处理方式。 1.2 优点 1.全局异常处理可以提高代码…...
Day05-循环高级和数组
循环高级 1.无限循环 概念: 又叫死循环。循环一直停不下来。 for格式: for(;;){System.out.println("循环执行一直在打印内容"); } 解释: 初始化语句可以空着不写,表示循环之前不定义任何的控制变量。 条件判断…...
从代码操作层面解释什么是“面相对象编程”?
起因: 今天开了一个小会,会上朋友给我们说了一个事,Java项目上他开发一个小功能 用了很多代码,项目经理发现代码太多,说要优化一下,然后亲自帮同事优化,结果是查库的代码少了至少10条sql&#x…...
【MySQL】SQL优化、char、varchar、外键约束、排查慢sql等重点知识汇总
目录 SQL语句 char和varchar比较 SQL语句如何优化 说一下你理解的外键约束 如何排查慢 sql SQL语句 对库操作 创建数据库 create database 数据库名 删除数据库 drop database 数据库名 显示所有数据库 show databases 选中数据库 use 数据库名 对表操作 创建表…...
git管理常用命令
1、下载代码 git clone 地址2、软件代码提交 1、查看工程中被修改的文件:git status 2.将不需要提交的文件回退:git check <文件路径> 3.更新工程到最新:git pull 4.将本地代码添加到暂存区:git add <将要提交的文件路…...
Python 逢七拍手小游戏2.0
"""逢七拍手游戏介绍:逢七拍手游戏的规则是:从1开始顺序数数,数到有7,或者是7的倍数时,就拍一手。例如:7、14、17......70......知识点:1、循环语句for2、嵌套条件语句if/elif/e…...
基于微信小程序的在线小说阅读系统,附数据库、教程
1 功能简介 Java基于微信小程序的在线小说阅读系统 微信小程序的在线小说阅读系统,系统的整体功能需求分为两部分,第一部分主要是后台的功能,后台功能主要有小说信息管理、注册用户管理、系统系统等功能。微信小程序主要分为首页、分类和我的…...
216. 组合总和 III
找出所有相加之和为 n 的 k 个数的组合,且满足下列条件: 只使用数字1到9每个数字 最多使用一次 返回 所有可能的有效组合的列表 。该列表不能包含相同的组合两次,组合可以以任何顺序返回。 示例 1: 输入: k 3, n 7 输出: [[1,2,4]] 解释: …...
【Java】数组的深浅拷贝问题(二维数组举例)(136)
深拷贝和浅拷贝: 对于数组来说,深拷贝就是相当于拷贝了数组的对象(基本数据类型),也就是数组当中的内容。而浅拷贝就是拷贝的是数组的地址(引用类型),浅拷贝只是复制了对象的引用地…...
【轮趣-科大讯飞】M260C 环形六麦测试 2 - ROS1功能测试与唤醒、语音识别程序解析
所有内容请看: 博客学习目录_Howe_xixi的博客-CSDN博客https://blog.csdn.net/weixin_44362628/article/details/126020573?spm1001.2014.3001.5502原文在飞书,请联系我获取阅读链接,我太懒了...
油猴(篡改猴)学习记录
第一个Hello World 注意点:默认只匹配了http网站,如果需要https网站,需要自己添加match https://*/*代码如下 这样子访问任意网站就可以输出Hello World // UserScript // name 第一个脚本 // namespace http://tampermonkey.net/ // version 0.1 // descri…...
LeetCode 面试题 05.08. 绘制直线
文章目录 一、题目二、Java 题解 一、题目 已知一个由像素点组成的单色屏幕,每行均有 w 个像素点,所有像素点初始为 0,左上角位置为 (0,0)。 现将每行的像素点按照「每 32 个像素点」为一组存放在一个 int 中,再依次存入长度为 le…...
机器人中的数值优化|【六】线性共轭梯度法,牛顿共轭梯度法
机器人中的数值优化|【六】线性共轭梯度法,牛顿共轭梯度法 往期回顾 机器人中的数值优化|【一】数值优化基础 机器人中的数值优化|【二】最速下降法,可行牛顿法的python实现,以Rosenbrock function为例 机器人中的数值优化|【三】无约束优化…...
FastestDet---原理介绍
1.测试指标 2.算法定位 FastestDet是设计用来接替yolo-fastest系列算法,相比于业界已有的轻量级目标检测算法如yolov5n, yolox-nano, nanoDet, pp-yolo-tiny, FastestDet和这些算法根本不是一个量级,FastestDet无论在速度还是参数量上,都是要小好几个数量级的,但是精度自然…...
ORACLE 在内存管理机制上的演变和进化
截止目前,计算机内存仍然被认为是我们可以获得的最快速度的物理存储设备。 将频繁访问的数据尽可能地置于内存中,已成为当前各种软件和应用程序提高数据访问性能,减少访问延迟的最为有效的途径。 然而,内存作为关键的计算资源&am…...
Linux ❀ 进程出现process information unavailable时的消除方法
[rootmaster ~]# jps 74963 -- process information unavailable 78678 Jps [rootmaster ~]# cd /tmp/hsperfdata_redhat/ # redhat为启动该java进程的用户ps -ef | grep $pid查找 [rootmaster hsperfdata_redhat]# ll total 32 -rw------- 1 redhat redhat 32768 Sep 27 15:…...
ps智能填充功能平替:alpaca的安装和使用
为了解决ps beta 智能填充无法使用的问题,需要用alpaca来平替,下面是安装教程: 安装方法: 1、下载插件。 alpaca插件汉化-夸克网盘https://pan.quark.cn/s/1168b447a44e#/list/share 2、 根据使用的PS版本,选择对应文件…...
【前端打怪升级日志之ES6篇】玩转函数
学习资料 阮一峰老师《ECMAScript 6 入门》— 函数的扩展 总结应用 1. 函数参数默认值与对象解构赋值默认值的结合使用 // 场景:方法调用时传参希望只传第二个参数 // 方案1: function foo({x1,y2}){console.log(x,y); } foo({}) //1 2 foo({x:2}) /…...
网址静态码手机制作教程,附图文详解!
网址的静态码是如何生成的呢?静态码是二维码的一种常用类型,一般常见的静态码类型主要是文本或者网址,那么在电脑制作静态码的方法相信很多小伙伴都知道怎么做,那么手机上制作的方法,大家感兴趣吗?下面来给…...
【解密LSTM、GRU如何解决传统RNN梯度消失问题】
解密LSTM与GRU:如何让RNN变得更聪明? 在深度学习的世界里,循环神经网络(RNN)以其卓越的序列数据处理能力广泛应用于自然语言处理、时间序列预测等领域。然而,传统RNN存在的一个严重问题——梯度消失&#…...
【OSG学习笔记】Day 16: 骨骼动画与蒙皮(osgAnimation)
骨骼动画基础 骨骼动画是 3D 计算机图形中常用的技术,它通过以下两个主要组件实现角色动画。 骨骼系统 (Skeleton):由层级结构的骨头组成,类似于人体骨骼蒙皮 (Mesh Skinning):将模型网格顶点绑定到骨骼上,使骨骼移动…...
UR 协作机器人「三剑客」:精密轻量担当(UR7e)、全能协作主力(UR12e)、重型任务专家(UR15)
UR协作机器人正以其卓越性能在现代制造业自动化中扮演重要角色。UR7e、UR12e和UR15通过创新技术和精准设计满足了不同行业的多样化需求。其中,UR15以其速度、精度及人工智能准备能力成为自动化领域的重要突破。UR7e和UR12e则在负载规格和市场定位上不断优化…...
Hive 存储格式深度解析:从 TextFile 到 ORC,如何选对数据存储方案?
在大数据处理领域,Hive 作为 Hadoop 生态中重要的数据仓库工具,其存储格式的选择直接影响数据存储成本、查询效率和计算资源消耗。面对 TextFile、SequenceFile、Parquet、RCFile、ORC 等多种存储格式,很多开发者常常陷入选择困境。本文将从底…...
【Elasticsearch】Elasticsearch 在大数据生态圈的地位 实践经验
Elasticsearch 在大数据生态圈的地位 & 实践经验 1.Elasticsearch 的优势1.1 Elasticsearch 解决的核心问题1.1.1 传统方案的短板1.1.2 Elasticsearch 的解决方案 1.2 与大数据组件的对比优势1.3 关键优势技术支撑1.4 Elasticsearch 的竞品1.4.1 全文搜索领域1.4.2 日志分析…...
云安全与网络安全:核心区别与协同作用解析
在数字化转型的浪潮中,云安全与网络安全作为信息安全的两大支柱,常被混淆但本质不同。本文将从概念、责任分工、技术手段、威胁类型等维度深入解析两者的差异,并探讨它们的协同作用。 一、核心区别 定义与范围 网络安全:聚焦于保…...
CSS3相关知识点
CSS3相关知识点 CSS3私有前缀私有前缀私有前缀存在的意义常见浏览器的私有前缀 CSS3基本语法CSS3 新增长度单位CSS3 新增颜色设置方式CSS3 新增选择器CSS3 新增盒模型相关属性box-sizing 怪异盒模型resize调整盒子大小box-shadow 盒子阴影opacity 不透明度 CSS3 新增背景属性ba…...
【java面试】微服务篇
【java面试】微服务篇 一、总体框架二、Springcloud(一)Springcloud五大组件(二)服务注册和发现1、Eureka2、Nacos (三)负载均衡1、Ribbon负载均衡流程2、Ribbon负载均衡策略3、自定义负载均衡策略4、总结 …...
CppCon 2015 学习:REFLECTION TECHNIQUES IN C++
关于 Reflection(反射) 这个概念,总结一下: Reflection(反射)是什么? 反射是对类型的自我检查能力(Introspection) 可以查看类的成员变量、成员函数等信息。反射允许枚…...
【Zephyr 系列 16】构建 BLE + LoRa 协同通信系统:网关转发与混合调度实战
🧠关键词:Zephyr、BLE、LoRa、混合通信、事件驱动、网关中继、低功耗调度 📌面向读者:希望将 BLE 和 LoRa 结合应用于资产追踪、环境监测、远程数据采集等场景的开发者 📊篇幅预计:5300+ 字 🧭 背景与需求 在许多 IoT 项目中,单一通信方式往往难以兼顾近场数据采集…...
