IntelliJ IDEA快捷键使用
发表于|更新于|工具
|总字数:143|阅读时长:1分钟|浏览量:
工具用得好,下班下得早
Ctrl + Alt + T
使用if,if/else, while, do/while, for, try/catch, try/finally, try/catch/finally, synchronized, Runnalbe 包围代码块
Alt + Enter
代码快速补全、包引入、临时变量生成等
Ctrl + Alt + M
将代码块提取到一个方法
Ctrl + Shift + 上下方向键
上下移动单行代码和代码块
Class.new + (Alt + Enter)
Class.new创建一个Class类型的匿名对象,Alt + Enter将匿名对象赋值给一个新建的变量
instance.try
根据instance实例对象快速生成try/catch代码块
文章作者: 逐光
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 逐光の博客!
相关推荐

2018-07-26
Java中的强引用、软引用、弱引用和虚引用
Java中的强引用、软引用、弱引用和虚引用Java执行GC判断对象是否存活有两种方式其中一种是引用计数。 引用计数:Java堆中每一个对象都有一个引用计数属性,引用每新增1次计数加1,引用每释放1次计数减1。 在JDK 1.2以前的版本中,若一个对象不被任何变量引用,那么程序就无法再使用这个对象。也就是说,只有对象处于(reachable)可达状态,程序才能使用它。 从JDK 1.2版本开始,对象的引用被划分为4种级别,从而使程序能更加灵活地控制对象的生命周期。 Java中4种引用的级别和强度由高到低依次为:强引用 -> 软引用 -> 弱引用 -> 虚引用 引用类型 被垃圾回收时间 用途 生存时间 案例 强引用 从来不会 对象的一般状态 JVM停止运行时终止 通过new或反射创建的引用对象 软引用 当内存不足时 对象缓存 内存不足时终止 弱引用 正常垃圾回收时 对象缓存 垃圾回收后终止 虚引用 正常垃圾回收时 跟踪对象的垃圾回收 垃圾回收后终止 DirectByteBuffer堆外内存释放 参考文章 理解Java的强引用、...

2020-11-19
Linux中的CommitLimit与OOM Killer
一、背景说明在测试过程中遇到一个Java进程由于申请内存过大导致被Linux OOM killer杀掉的问题,所以来分析一下Linux中的CommitLimit与OMM killer机制。 二、Linux内存分配机制 Linux系统允许程序申请比系统可用内存更多的内存空间,这个特性叫做 overcommit 特性,这样做可能是为了系统的优化,因为不是所有的程序申请了内存就会立刻使用,当真正的使用时,系统可能已经回收了一些内存。为了避免内存的浪费,在分配页面时,Linux 采用的是按需分配物理页面的方式。譬如说,某个进程调用malloc()申请了一块小内存,这时内核会分配一个虚拟页面,但这个页面不会映射到实际的物理页面。从图中可以看到,当程序首次访问这个虚拟页面时,会触发一个缺页异常 (page fault)。这时内核会分配一个物理页面,让虚拟页面映射到这个物理页面,同时更新进程的页表 (page table)。 2.1 Linux的Memory Overcommit这种按需分配物理页面的方式,可以大大节省物理内存的使用,但有时会导致 Memory Overcommit。所谓 M...

2019-07-06
ConcurrentHashMap源码解析
面试常见问题 ConcurrentHashMap实现原理 ConcurrentHashMap如何保证线程安全 本文基于JDK1.8 一、构造方法和基本属性JDK8中ConcurrentHashMap参考了JDK8 HashMap的实现,构造方法和基本属性与HashMap大致相同,可参考HashMap源码解,以下主要列举不同的地方。 /** * Encodings for Node hash fields. See above for explanation. */ static final int MOVED = -1; // hash for forwarding nodes static final int TREEBIN = -2; // hash for roots of trees static final int RESERVED = -3; // hash for transient reservations // Hash节点正常可用位 static final int HASH_BITS = 0x7fffffff; // usable ...

2020-07-09
Java 和 HTTP 的那些事(四) HTTPS 和 证书
非原创,转载于:https://www.aneasystone.com/archives/2016/04/java-and-https.html 说起 HTTP 的那些事,则不得不提 HTTPS ,而说起 HTTPS ,则不得不提数字证书。这篇博客将从 Java 的角度,学习 HTTPS 和数字证书技术,并分享爬虫开发的过程中针对爬取 HTTPS 站点时可能遇到的一些问题。在前面的几篇博客里,其实已经略微提到过 HTTPS 了,譬如使用 HttpsURLConnection 类发送 HTTPS 请求,在使用代理时 HTTP 和 HTTPS 的一些差异等等。关于 HTTPS 的概念就不废话了,下面直接进入正题。 一、访问 HTTPS 站点在前面的第一篇博客《模拟 HTTP 请求》里,介绍了两种方法来模拟发送 HTTP 请求,访问 HTTP 站点。一种方式是通过 java.net 自带的 HttpURLConnection,另一种方式是通过 Apache 的 HttpClient,这两种方式各有各的优势。这里也使用这两种方式来访问 HTTPS 站点,从下面的代码可以看到,和前面访...

2021-03-01
Java中锁分类
一、Java中主流锁 上图摘自:美团技术团队:不可不说的Java“锁”事 1.1 乐观锁 VS 悲观锁乐观锁与悲观锁是一种广义上的概念,体现了看待线程同步的不同角度。在Java和数据库中都有此概念对应的实际应用。 先说概念。对于同一个数据的并发操作,悲观锁认为自己在使用数据的时候一定有别的线程来修改数据,因此在获取数据的时候会先加锁,确保数据不会被别的线程修改。Java中,synchronized关键字和Lock的实现类都是悲观锁。 而乐观锁认为自己在使用数据时不会有别的线程修改数据,所以不会添加锁,只是在更新数据的时候去判断之前有没有别的线程更新了这个数据。如果这个数据没有被更新,当前线程将自己修改的数据成功写入。如果数据已经被其他线程更新,则根据不同的实现方式执行不同的操作(例如报错或者自动重试)。 乐观锁在Java中是通过使用无锁编程来实现,最常采用的是CAS算法,Java原子类中的递增操作就通过CAS自旋实现的。 特点: 悲观锁适合写操作多的场景,先加锁可以保证写操作时数据正确。 乐观锁适合读操作多的场景,不加锁的特点能够使其读操作的性能大幅提升 问题:(1) AB...

2020-11-30
一次Java进程物理内存占用超过最大堆内存分析
一、背景说明项目测试过程中,测试人员反馈使用Excel导入100万号码时报错,通过Top命令查看到该java进程占用物理内存大小为3.4G,而且内存持续占用,一直没有释放,怀疑是不是有内存泄露的情况。 PS:上图为后续重新截的图,比第一次物理内存占用小 JVM配置参数如下: server.java.opts=-d64 -XX:MaxPermSize=192M -Xms3000M -Xmx3000M -XX:+HeapDumpOnOutOfMemoryError 二、问题排查查看日志发现出现了OOM, 报错信息未:java.lang.OutOfMemoryError: GC overhead limit exceeded,并生成了堆内存快照文件java_pid31734.hprof。通过jVisualVM工具分析java_pid31734.hprof文件。 java进程发生OOM时生成的堆内存快照文件大小为3.4G。 由于在项目中使用POI去读取Excel文件的,从内存快照中可以看到大量的内存被POI相关的对象占用。 发生OOM后java进程并没有退出...
评论