IntelliJ IDEA 快捷键

2018-06-12
智能代码补全 Ctrl + Shift + Space ⌃⇧Space
搜索全部 Double Shift Double⇧
显示意向行动和快速修复 Alt + Enter ⌘↩︎
生成代码 Alt + Insert ⌘N,⌃↩︎
参数信息 Ctrl + P ⌘P
展开选择 Ctrl + W ⌥⌘↑
搜索选择 Ctrl + Shift + W ⌥⌘↓
最近文件弹出窗口 Ctrl + E ⌘E
重命名 Shift + F6 ⇧F6

阅读全文


Java8 入门

2018-05-18

Lambda 表达式

Lambda Expression:匿名函数,闭包。

闭包的书写格式:

// 单条表达式语句
(args)->expression

// 多条表达式语句
(args)->{
  expression;
  expression;
}

示例:

import java.util.function.BiFunction;
import java.util.function.Function;

import org.junit.Test;

public class LambdaTest {

    // 没有参数没有返回值的lambda
    @Test
    public void testRunnable() {
        Runnable runnable = () -> System.out.println("this is a Runnable1!");
        new Thread(runnable).start();
        runnable = () -> {
            System.out.println("this is a Runnable2!");
        };
        new Thread(runnable).start();

        runnable = () -> {
            String x = "this is a Runnable3!";
            System.out.println(x);
        };
        new Thread(runnable).start();

        runnable = this::printlnNow;
        new Thread(runnable).start();

        new Thread(() -> System.out.println("this is a Runnable1!")).start();

        new Thread(() -> {
            System.out.println("this is a Runnable2!");
        }).start();

        new Thread(() -> {
            System.out.println("this is a Runnable2!");
        }).start();

        new Thread(() -> {
            String x = "this is a Runnable3!";
            System.out.println(x);
        }).start();

        new Thread(this::printlnNow).start();
    }
    // 一个参数有返回值的lambda
    @Test
    public void testFunction() {
        Function<String, Integer> function = (input) -> Integer.valueOf(input);
        System.out.println(function.apply("1234"));
        function = input -> Integer.valueOf(input);
        System.out.println(function.apply("1234"));
        function = Integer::valueOf;
        System.out.println(function.apply("1234"));
        function = input -> {
            input = input + "";
            return Integer.valueOf(input);
        };
        System.out.println(function.apply("1234"));
    }

    // 多个参数有返回值的lambda
    @Test
    public void testBiFunction() {
        BiFunction<Integer, Integer, Integer> biFunction = (a, b) -> Math.min(a, b);
        // biFunction = a, b -> Math.min(a, b); // error
        System.out.println("min value is : " + biFunction.apply(1, 2));
        biFunction = Math::max;
        System.out.println("max value is : " + biFunction.apply(1, 2));
    }

    public void printlnNow() {
        System.out.println("now is " + System.currentTimeMillis());
    }
}

阅读全文


Eclipse Memory Analysis Tools简单使用说明

2018-05-17

打开dump文件

菜单 > File > Open Heap Dump

第一次打开文件MAT进行分析处理会比较慢。

打开以后会展示如下效果

上图中的几个主要信息:

  • Details: 堆内存大小(Size)、类的数量(Classes)、对象的数量(Objects)、类加载器的数量(Class Loader)。
  • Biggest Objects by Retained Size:堆内存中最大的对象及占用内存大小。当鼠标移动到饼图的某个区域后在窗口的左面会显示出一些详细信息(包含类的信息、静态变量、类变量、类结构等)。
    • List objects -> with outgoing references:查看此对象引用的外部对象.
    • List objects -> with incoming references:查看引用此对象的外部对象.
    • Path To GC Roots: 查看对象的GC Root路径。
      • exclude xxx references:排除一些软引用、弱引用、虚引用.如果只有强引用存在,GC就一直无法回收对象,进而导致内存泄露。
  • Actions:列出一下常用的操作。
    • Histogram:列出每个类的对象数量和占用内存大小,默认使用Shallow Heap排序。
    • Dominator Tree:列出堆中占用比较大的类型,按照内存占用大小排序。
    • Top Consumers:按照类、类加载器和包等信息进行分组展示出最大的对象。
    • Duplicate Classes:列出被多个类加载器重复加载的类列表。
  • Reports:一些统计报表
    • Leak Suspects:泄漏分析报告。报告中尝试找出可能导致内存泄露的地方,并对找到的可以地方做了详细描述。
    • Top Components
  • Step By Step:按照帮助一步一步的操作。
  • 点击齿轮()图标可以查看线程相关信息。如下图:

阅读全文


linux kill和信号量

2017-03-11

Linux中的kill命令用来终止指定的进程,最常用的杀死进程的命令是 kill -9 pid,很多人用过这个命令,却不知道-9是什么意思。

阅读全文


JVM 类加载过程

2016-08-03

类从加载到虚拟机到卸载,它的整个生命周期包括:加载(Loading),验证(Validation),准备(Preparation),解析(Resolution),初始化(Initialization),使用(Using)和卸载(Unloading)。其中,验证、准备和解析部分被称为连接(Linking)。

阅读全文


终端控制VirtualBox虚拟机

2016-05-06
  • 查询虚拟机
vboxmanage list vms
  • 查询运行的虚拟机
vboxmanage list runningvms
  • 启动虚拟机
vboxmanage startvm hadoop1 --type gui #界面方式启动
vboxmanage startvm hadoop1 --type headless #后台无界面启动
  • 控制虚拟机
vboxmanage controlvm hadoop1 acpipowerbutton # 关闭虚拟机,等价于点击系统关闭按钮
vboxmanage controlvm hadoop1 poweroff  # 关闭虚拟机,等价于直接关闭电源,非正常关机
vboxmanage controlvm hadoop1 pause  # 暂停虚拟机的运行
vboxmanage controlvm hadoop1 resume   # 恢复暂停的虚拟机
vboxmanage controlvm hadoop1 savestate   # 保存当前虚拟机的运行状态

阅读全文


Linux下开机服务

2016-05-06

chkconfig命令

  1. 查看所有的自启动服务列表:chkconfig -–list
  2. 将iptables服务添加到chkconfig列表中:chkconfig –-add iptables
  3. 查看iptables自启动状态:chkconfig -–list iptables
  4. 将iptables服务设置为开机自启动:chkconfig iptables on

/etc/rc.d/rc.local文件

vim /etc/rc.d/rc.local
#添加开机执行的命令
/usr/sbin/apachectl start
/etc/rc.d/init.d/mysqld start
/etc/rc.d/init.d/smb start
/usr/local/subversion/bin/svnserve -d

阅读全文


解决linux挂载其他硬盘lvm分区时VG重复问题

2016-05-06

问题:

[root@w ~]# vgscan
Reading all physical volumes.  This may take a while...
WARNING: Duplicate VG name vg_w: Existing nMjHCd-6EUR-66l4-y27E-n5is-i1Q4-ddqest (created here) takes precedence over Bju7iV-coBV-RZLb-SZX6-ol3Z-fO1A-bvSTw6
WARNING: Duplicate VG name vg_w: Existing nMjHCd-6EUR-66l4-y27E-n5is-i1Q4-ddqest (created here) takes precedence over Bju7iV-coBV-RZLb-SZX6-ol3Z-fO1A-bvSTw6
Found volume group "vg_w" using metadata type lvm2
Found volume group "vg_w" using metadata type lvm2

阅读全文


Spock参考文档

2015-06-29

Spock is a testing and specification framework for Java and Groovy applications. What makes it stand out from the crowd is its beautiful and highly expressive specification language.

阅读全文


git用法记录

2015-03-17

记录一些git的常用命令

阅读全文


使用Maven管理spring环境的profile定义

2014-11-14

开发过程中需要针对开发环境,正式环境等进行不同的参数配置,比如开发环境使用H2数据库做简单测试,正是环境使用mysql数据库。如果手动管理这些配置信息会很麻烦,最重要的是可能会因为操作失误导致一些错误。因此需要对不同环境的配置信息进行集中管理。

spring 3.1版本提供了profile配置机制,同时maven对profile也有支持,我们将使用mavne + spring 的profile管理不同环境的配置数据。

阅读全文


面向对象设计的SOLID原则

2013-10-01

SOLID简介

SRP The Single Responsibility Principle 单一责任原则
OCP The Open Closed Principle 开放封闭原则
LSP The Liskov Substitution Principle 里氏替换原则
ISP The Interface Segregation Principle 接口分离原则
DIP The Dependency Inversion Principle 依赖倒置原则

阅读全文


mongodb简单使用

2013-09-12

mongodb的安装和简单启动配置

阅读全文


solr集群配置文档

2013-06-10

SolrCloud 是基于Solr和Zookeeper的分布式搜索方案,是Solr4.X的核心组件之一,它的主要思想是使用Zookeeper作为集群的配置信息中心。它有几个特色功能:

  1. 集中式的配置信息
  2. 自动容错
  3. 近实时搜索
  4. 查询时自动负载均衡 aa

阅读全文


solr索引数据同步与备份

2013-06-10

Solr作为一个搜索服务器,在并发搜索请求的场景下,可能一台服务器很容易就垮掉,这时我们可以通过使用分布式技术,设置多台Solr搜索服务器同时对外提供搜索服务,这样每台Solr搜索服务器搜索请求的压力可以大大减小,增强了每台服务器能够持续提供服务器的能力。然而,这时我们面临的问题有:

  1. 分布式中的每台服务器在线上要保证索引数据都能很好地的同步,使得每台搜索服务器的索引数据在一定可以承受的程度上保持一致性;
  2. 分布式中某台服务器宕机离线,人工干预重启后继续与集群中其它服务器索引数据保持一致,继续提供搜索服务;
  3. 分布式中某台服务器的索引数据,由于硬盘故障或人为原因无法提供搜索服务,需要一种数据恢复机制;
  4. 分布式中接受数据更新的更新服务器,在将索引更新传播到其他服务器上时,避免多台检索服务器同一时间占用大量网络带宽,从而影响了更新提供服务。

事实上,Solr框架在上面的几个方面都能做到不错的支持,具有很大的灵活性。基于上述的几个问题,我们来配置Solr分布式的Replication,并实践分布式复制和备份的功能。

阅读全文


linux下ntfs硬盘的加载

2013-06-01

阅读全文


maven记录

2013-04-23
  1. maven创建项目

     mvn archetype:generate -DarchetypeCatalog=internal -Dfilter=maven
    
  2. Maven内置变量说明:

    • ${basedir} 项目根目录
    • ${project.build.directory} 构建目录,缺省为target
    • ${project.build.outputDirectory} 构建过程输出目录,缺省为target/classes
    • ${project.build.finalName} 产出物名称,缺省为${project.artifactId}-${project.version}
    • ${project.packaging} 打包类型,缺省为jar
    • ${project.xxx} 当前pom文件的任意节点的内容

阅读全文


VisualVM的RMI方式监控JVM

2013-01-23

VisualVM是集成了多个JDK命令工具的一个可视化工具,它主要用来监控JVM的运行情况,可以用它来查看和浏览Heap Dump、Thread Dump、内存对象实例情况、GC执行情况、CPU消耗以及类的装载情况。

阅读全文


Oracle相关记录

2012-03-20

Oracle使用的一些记录

阅读全文


ssh通过corkscrew代理软件连接远程主机

2012-02-20

在存在代理的网络中无法直接通过ssh连接远程主机,这就需要通过corkscrew来为ssh设置代理.

阅读全文