从 官网 下载 Ultimate 版,河蟹使用。
旗舰版 Ultimate 收费,社区版 Community 免费,当然功能也不尽相同。
注册码
适用 IntelliJ Idea 2017.3:http://idea.lanyus.com/
1、terminal 终端输入:sudo vi /private/etc/hosts,添加 0.0.0.0 account.jetbrains.com
并保存。
2、点击获取注册码,激活。
详述 hosts 文件的作用及修改 hosts 文件的方法
若还是不行,还可以 使用破解补丁进行激活 。
汉化
参考
汉化后初步发现两个小问题:
1、Project 界面:缺失 Scroll from Source 图标(从右侧文件聚集到左侧文件路径及文件名)、Collapse All图标(文件全部折叠)。
2、Structure 界面:无法显示对应的方法列表,只显示一片空白;
暂时发现两个后,觉得不好使,就又切回了英文。
使用Java IDE工具时,可能会用到推内存设置等。
-vmargs -Xms128M -Xmx512M -XX:PermSize=64M -XX:MaxPermSize=128M
-vmargs 说明后面是VM的参数,所以后面的其实都是JVM的参数了
-Xms128m JVM初始分配的堆内存
-Xmx512m JVM最大允许分配的堆内存,按需分配
-XX:PermSize=64M JVM初始分配的非堆内存
-XX:MaxPermSize=128M JVM最大允许分配的非堆内存,按需分配
官方说法:Java 虚拟机具有一个堆,堆是运行时数据区域,所有类实例和数组的内存均从此处分配。堆是在 Java 虚拟机启动时创建的。在JVM中堆之外的内存称为非堆内存(Non-heap memory)。
JVM主要管理两种类型的内存:堆和非堆。简单来说堆就是Java代码涉及的内存,是留给开发人员使用的;非堆就是JVM留给自己用的,所以方法区、JVM内部处理或优化所需的内存(如JIT编译后的代码缓存)、每个类结构(如运行时常数池、字段和方法数据)以及方法和构造方法的代码都在非堆内存中。
堆内存分配
JVM初始分配的堆内存由-Xms指定,默认是物理内存的1/64;JVM最大分配的堆内存由-Xmx指定,默认是物理内存的1/4。默认空余堆内存小于40%时,JVM就会增大堆直到-Xmx的最大限制;空余堆内存大于70%时,JVM会减少堆直到-Xms的最小限制。因此服务器一般设置-Xms、-Xmx 相等以避免在每次GC 后调整堆的大小。
说明:
如果-Xmx 不指定或者指定偏小,应用可能会导致java.lang.OutOfMemory错误,此错误来自JVM,不是Throwable的,无法用try…catch捕捉。
非堆内存分配
JVM使用-XX:PermSize设置非堆内存初始值,默认是物理内存的1/64;由XX:MaxPermSize设置最大非堆内存的大小,默认是物理内存的1/4。
说明:
XX:MaxPermSize设置过小会导致java.lang.OutOfMemoryError: PermGen space 就是内存溢出。
内存溢出原因:PermGen space的全称是Permanent Generation space,是指内存的永久保存区域。属于非堆内存
1、这一部分内存用于存放Class和Meta的信息,Class在被 Load的时候被放入PermGen space区域,它和存放Instance的Heap区域不同。
2、GC(Garbage Collection)不会在主程序运行期对PermGen space进行清理,所以如果你的应用会load很多class的话,就很可能出现PermGen space错误。
1、File——Project Structure——Project,设置Project SDK、设置Project language level
2、File——Setting——Java Compiler,设置Project bytecode version,设置Target bytecode version
3、设置maven编译时使用的jdk版本:pom.xml里设置jdk编码
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
<compilerArguments>
<extdirs>src/main/webapp/WEB-INF/lib</extdirs>
</compilerArguments>
</configuration>
</plugin>
参考
IntelliJ IDEA15 简要使用手册
史上最简单的 IntelliJ IDEA 教程
File——Settings——Keymap——Keymaps选Eclipse
File——Settings——Keymap——搜索Split
File——Settings——Keymap——Main menu——Code——Completion
,将 Cyclic Expand Word的快捷键“Alt+斜杠”删除,将 Basic(决定代码智能提示的按键) 改为“Alt+斜杠”。File——Settings——Edit——General——Auto Import
,勾选下面两项: Alt+Enter
导入); 查看properties文件
File——Settings——Editor——File Encodings
,在 properties设置区域,勾选上Transparent native-to-ascii conversion
。
解决从GitHub上下载文件慢的问题
打开dns查询工具网站 http://tool.chinaz.com/dns
选取一个TTL值最小的ip,直接绑定到 C:\Windows\System32\drivers\etc\hosts 文件,然后刷新DNS缓存:ipconfig /flushdns
自动 import 包
File——Settings→Editor→General→Auto Import
,勾选如下两项:
Add unambiguous imports on the fly:快速添加明确的导入。
Optimize imports on the fly:快速优化导入,优化的意思即自动帮助删除无用的导入。
language level
限定项目编译检查时最低要求的 JDK 特性。参考language level 介绍
psv + 按Tab
sout + 按Tab
Alt + Insert
Ctrl + Alt + T
Ctrl + Alt + T
条件.if + Tab
// it 是 Iterator 缩写,
// itli 遍历 List
for (int i = 0; i < list.size(); i++) {
}
// iter 使用增强型 for 循环:Iterator
for (String arg : args) {
}
// itar 遍历数组 Array
for (int i = 0; i < args.length; i++) {
}
// itco 遍历集合 Collection
for (Iterator iterator = collection.iterator(); iterator.hasNext(); ) {
}
// iten 遍历枚举 Enum
// ittok 生成String token遍历
// itve 生成Vector数组迭代
// itaws 生成Axis2 web service调用
// itws 生成 Axis web service调用
快捷键
Ctrl + B
Ctrl + I
安装步骤:File——Settings——Plugins,使用页面下三个按钮操作:Install JetBrains plugin…、Browser Repositories…、Install plugin from disk… 。
插件名称 插件介绍 官网地址
Alibaba Java Coding Guidelines 阿里巴巴代码规范检查插件 https://plugins.jetbrains.com/plugin/10046-alibaba-java-coding-guidelines
Key promoter 快捷键提示插件 https://plugins.jetbrains.com/plugin/4455?pr=idea
Grep Console 自定义控制台输出格式插件 https://plugins.jetbrains.com/idea/plugin/7125-grep-console
CheckStyle-IDEA 代码规范检查插件 https://plugins.jetbrains.com/plugin/1065?pr=idea
FindBugs-IDEA 潜在 Bug 检查 https://plugins.jetbrains.com/plugin/3847?pr=idea
MetricsReloaded 代码复杂度检查 https://plugins.jetbrains.com/plugin/93?pr=idea
Statistic 代码统计插件 https://plugins.jetbrains.com/plugin/4509?pr=idea
JRebel Plugin 热部署插件 https://plugins.jetbrains.com/plugin/?id=4441
CodeGlance 显示代码地图插件 https://plugins.jetbrains.com/plugin/7275?pr=idea
Markdown Navigator Markdown 编辑器插件 https://plugins.jetbrains.com/plugin/7896?pr=idea
Eclipse Code Formatter Eclipse 代码风格格式化插件 https://plugins.jetbrains.com/plugin/6546?pr=idea
Jindent-Source Code Formatter 自定义模板插件 http://plugins.jetbrains.com/plugin/2170?pr=idea
Maven Helper Maven 辅助插件 https://plugins.jetbrains.com/plugin/7179-maven-helper
Properties to YAML Converter Properties 转 YAML 格式插件 https://plugins.jetbrains.com/plugin/8000-properties-to-yaml-converter
Git Flow Integration Git Flow 集成插件 https://plugins.jetbrains.com/plugin/7315-git-flow-integration
安装
建议从.ignore下载,Install plugin from disk,重启Idea。
听说直接从Browser Repositories…里安装重启会影响Idea的启动(个人尝试时提示无法从相应网址上下载,但 https://plugins.jetbrains.com 从网页是可以访问的,但访问很慢–后续,回家后可以直接下载Alibaba Java Coding Guidelines插件,且下载很快)。
使用
使用该插件前用 git status 查看会有 target 等相应文件夹或文件没有添加进 Git ,使用该插件后再用该命令会看到此忽略的文件夹或文件不是再提示添加 Git 维护了。
方式一:项目上右键->New ->.ignore file ->.gitignore file(Git) ,先选择Example user template好了,以后有什么想过滤的可以自行添加,~最后点击Generate生成。
方式二:项目里找到需要忽略的文件或文件夹,右键——Add to .gitignore file
当忽略的文件变成灰色的时候就表示配置成功。
下面是一些.gitignore文件忽略的匹配规则:
*.a # 忽略所有 .a 结尾的文件
!lib.a # 但 lib.a 除外
/TODO # 仅仅忽略项目根目录下的 TODO 文件,不包括 subdir/TODO
build/ # 忽略 build/ 目录下的所有文件
doc/*.txt # 会忽略 doc/notes.txt 但不包括 doc/server/arch.txt
.gitignore只能忽略那些原来没有被track的文件,如果某些文件已经被纳入了版本管理中,则修改.gitignore是无效的。那么解决方法就是先把本地缓存删除(改变成未track状态),然后再提交:
输入:
git rm -r –cached filePath
git commit -m “remove xx”
或者:
git rm -r –cached .
git add .
git commit -m “update .gitignore”
来解释下几个参数 -r 是删除文件夹及其子目录 –cached 是删除暂存区里的文件而不删除工作区里的文件,第一种是删除某个文件,第二种方法就把所有暂存区里的文件删了,再加一遍,相当于更新了一遍。
该插件由阿里巴巴p3c项目组研发,主要用来规范编码,寻找风险代码。
阿里介绍文章
代码已开源,可在 GitHub 下载。
File - Settings - Plugins - Browse repositories - 找 Alibaba Java Coding Guidelines - Install - 重启Idea
扫描代码后,将不符合规约的代码按 Blocker/Critical/Major三个等级显示在下方(分别表示:崩溃/严重/重要,具体定义可以看上文讲到的“代码规范要求文档”),双击可以定位至代码处,右侧窗口还有针对代码的批量修复功能。
安装
File - Settings - Plugins - Browse repositories - 安装 JUnit 和 JUnitGenerator V2.0 - 重启Idea
File——Settings——Other Settings
Default Template:改为JUnit 4。
可以设置生成模式:Output Path: ${SOURCEPATH}/[target directory]/${PACKAGE--你待测试类的包名}/${FILENAME}
可以修改模板:Junit4
#if( $entry.packageName.length()>0)package test.$entry.packageName; #end
JRebel 简单来说,是一个支持热部署的工具,使用它可以使我们更快的看到代码的改变作用,而不用再去重启我们的项目。
Jrebel 支持的 IDE 比较全,我们经常使用的基本上都支持到了,比如 Eclipse, IntelliJ idea, NetBeans, STS, RAD, MyEclipse,在idea中,我将它作为插件来让tomcat支持热部署。
Jrebel是一个收费的插件,官网提供30天免费试用。
参考 Jrebel 热部署 最新版破解 !!监听端口实现 免费! JRebel 7.1.5可行,但 JRebel 2018.1.0 亲测还不行,不过已经很好了。
参考 Idea2016配置并破解jrebel 6.4.3(备用)
Jetty 可以和 JRebel 配合使用。
当然 Jetty 本身就支持热部署(如下配置实现热部署),但是idea无法进行自动编译,所以需要如下快捷键:
<!-- jetty插件 -->
<plugin>
<groupId>org.mortbay.jetty</groupId>
<artifactId>maven-jetty-plugin</artifactId>
<version>6.1.5</version>
<configuration>
<scanIntervalSeconds>2</scanIntervalSeconds><!-- 多少秒进行一次热部署 -->
<connectors>
<connector implementation="org.mortbay.jetty.nio.SelectChannelConnector">
<port>8099</port>
</connector>
</connectors>
<contextPath>/lalalala</contextPath>
</configuration>
</plugin>
当修改单个 java 文件时,重新编译下这个单文件(Ctrl + Shift + F9),刷新页面就可以看到实时效果了。
参考 IDEA热部署(三)—jetty插件调试(转)
参考 在idea使用jetty
Tomcat 本身就支持热部署。当然也可以和 JRebel 配合使用。
题目重述给你一个 只包含正整数 的 非空 数组 nums 。请你判断是否可以将这个数组分割成两个子集,使得两个子集的元素和相等。示例 1:输入:nums = [1,5,11,5]输出:true解释:数组可以分割成 [1, 5, 5] 和 [11] 。示例 2:输入:nums = [1,2,3,5]输出:false解释:数组不能分割成两个元素和相等的子集。提示:1 <= nums.length <= 2001 <= nums[i] <= 100来源:力扣
历时一周的MIX11结束了,一周里微软带给Web开发人员一个又一个惊喜。特别是Silverlight以及Windows Phone 7开发人员,相信Silverlight 5 Beta的推出和Mango补丁的演示为以后带来了一片光明的开发前景。Silverlight 5 Beta版本的新功能,基本符合去年FireStarter大会上的演示介绍,...
三层架构和MVC是有明显区别的,MVC应该是表现模式(三个加起来以后才是三层架构中的UI层)。三层架构(3-tier application) 通常意义上的三层架构就是将整个业务应用划分为:表现层(UI)、业务逻辑层(BLL)、数据访问层(DAL)。区分层次的目的即为了“高内聚,低耦合”的思想。1、表现层(UI):通俗讲就是展现给用户的界面,即用户在使用一个系统的时候他的所见所得。2、业务...
C语言实验——求阶乘(循环结构)Time Limit: 3000 ms Memory Limit: 65536 KiBSubmit Statistic DiscussProblem Description从键盘输入任意一个大于等于0的整数n,然后计算n的阶乘,并把它输出。提示: 0!是 1 。Input输入任意一个大于等于0的整数n。
UVA 12232 - Exclusive-OR题目链接题意:有n个数字,一开始值都不知道,每次给定一个操作,I a v表示确认a值为v,I a b v,表示确认a^b = v,Q k a1 a2 a3 ... ak,表示判断这些数字的异或值能否确定,能确定就输出值,如果有矛盾就停止思路:带权并查集,权表示和父结点的异或值,那么多数判断的时候,只要所有数字和他的父结点的异或
之所以撰写这篇文章是因为前段时间花费了很大的精力在已经成熟的代码上再去处理memory leak问题。写此的目的是希望我们应该养成良好的编码习惯,尽可能的避免这样的问题,因为当你对着一大片的代码再去处理此类的问题,此时无疑增加了解决的成本和难度。准确的说属于补救措施了。1. 什么是内存泄漏(memory leak)? 指由于疏忽或错误造成程序未能释放已经不再使用的内存的
通过《MaxCompute安全管理-基础篇》了解到MaxCompute和DataWorks的相关安全模型、两个产品安全方面的关联,以及各种安全操作后,本篇主要给出一些安全管理案例,给安全管理的成员作为参考。项目创建案例前面了解了MaxCompute和DataWorks的安全模型以及两个产品之间的权限联系,本章节我们以常见2个基础业务需求来介绍项目创建和管理。基本ETL开发业务项目场...
#include double sqrt(double x);float sqrtf(float x);long double sqrtl(long double x);
在开发过程中,很多时候我们有统计单个字符或者字符串在另一个字符串中出现次数的需求,在 Python 中,统计字符串出现次数我们使用 count() 函数。
fatal error C1189: #error : ERROR macro is defined. Define GLOG_NO_ABBREVIATED_SEVERITIES before including logging.h. See the document for detail.解决的方案:项目属性->C/C++ ->预处理器->预处理器定义 加 GLOG_NO_ABBREV
安装Nginx的依赖pcre, 文件链接: 链接:https://pan.baidu.com/s/13grn2NY4VvNS1ijgCtFv3w 提取码:80qf 文件放到linux的任意一个位置,解压文件,解压完成后进入到pcre文件夹,执行 ./configure 命令 configure命令执行完成后,在pcre文件夹中执行 make && make install 命令。 联网安装zib yum -y install make zlib zlib-devel...
Linux 安装 Jenkins 实现 项目自动化部署