如何编写maven的helloworld插件

一.概述

maven提供了一套插件机制,我们只要按照maven定义的规范编写一个插件,maven就能运行我们的插件,在平时开发的过程中我们经常会开发一些maven的插件工具,这写插件工具可以实现类冲突检测,工程部署,工程打包…等等。这里就大致记录一下如何编写一个maven的Hello Word插件,就是说在maven编译的过程中输出Hello Word。

JAVA线程中join,wait,notify&&notifyAll

一.概述

在编写多线程程序的时候,我们经常需要考虑线程之间的同步,比如我们使用join可以让某一线程执行结束,使用wait可以让某一线程在某个地方等待,使用notify或者notifyAll可以唤醒处于等待状态的线程。这里我们来看看这几个线程自带方法的使用以及相关的分析。

SQL的JOIN总结

一.概述

关系型数据库最大的优点就是关联查询,既所谓的JOIN,不像HBase这种Nosql的数据库,对于表和表的JOIN不怎么支持,关于SQL中的JOIN比较多,也不太好记忆,为了在后续开发中对SQL中的JOIN灵活使用,这里总结一些SQL中的一些JOIN。

Java Memory Model抽象

一.JVM运行时的数据区

我们写的JAVA代码最终都会编译成字节码,然后在JVM虚拟机上运行。在运行字节码的时候,JVM需要知道要运行的字节码是什么,也就是说JVM本身需要存储字节码,那么字节码存储在JVM的什么地方呢?同时在运行字节码的时候,会产生一些运行时数据,这这些数据都存储在什么地方呢?我们new一个Object的时候,这时候我们就获得了一个对象的引用,那么这个引用指向的内存空间在哪里呢?在C/C++中我们经常使用malloc去给分派一块内存空间,然后返回一个指针,当然在JAVA中内存空间的分派也是少不了的,只不过JVM帮你分派了,你就不需要手动去分派了。

FutureTask

在juc的包中有这么一个类FutureTask,我们可以直接用来创建一个该类的实例,然后调用run方法,最后调用get来获取线程的执行结果。

通过Future来取消任务

一.概述

在多线程程序中,我们经常使用Future来获取线程的执行结果,我们想线程的执行是异步的,因此要想获取线程执行结束后的结果,我们就需要等线程执行结束,这是一种主动获取线程执行结果的方法,当然你也可以让线程拿到结果后通知你。在使用Future的时候我们经常会设置一个超时时间,要是过了这个超时时间,线程的结果还没返回,那么我们经常就会忽略这个结果,但是这个获取结果的线程怎么办呢?让他自生自灭?我看代码中经常有这种写法,让这样的线程自生自灭。

Java 注解总结

一.概述

在写JAVA代码的时候,我们经常会使用注解来简化代码,这些注解是需要我们自己定义的,当然JAVA本身也提供了一些标准注解。同时我们也建议大家在自己的代码中定义自己的注解,为了能够在代码中灵活使用注解,这里总结一下注解相关的东西。