Java
的函数接口,就会被简介的语法深深的吸引,苦于代码中大量的 try...catch
繁琐代码,最近借鉴 java.util.Optional
的实现写了个简化的小工具。Java
的函数接口,就会被简介的语法深深的吸引,苦于代码中大量的 try...catch
繁琐代码,最近借鉴 java.util.Optional
的实现写了个简化的小工具。settings.xml
是 maven
的配置文件,用户配置文件存放于 ${user.home}/.m2/
目录下,系统全局配置文件放置于 ${maven.home}/conf/
目录下,pom.xml
是 maven
的项目的配置文件。动态代理是 Java
语言中非常经典的一种设计模式,也是所有设计模式中最难理解的一种。本文将通过一个简单的例子模拟 JDK
动态代理实现,让你彻底明白动态代理设计模式的本质。
从字面意思来看,代理比较好理解,无非就是代为处理的意思。举个例子,你在上大学的时候,总是喜欢逃课。因此,你拜托你的同学帮你答到,而自己却窝在宿舍玩游戏… 你的这个同学恰好就充当了代理的作用,代替你去上课。
在 JVM 运行时数据区域中,程序计数器、虚拟机栈和本地方法栈这三个区域属于线程私有的,只存在于线程的生命周期内,线程结束之后也会消失,因此不需要对这三个区域进行垃圾回收。垃圾回收主要是针对 Java 堆和方法区进行。
JVM 在回收一个对象时,首先要判断这个对象的状态,如果判断对象为无效的(没有被任何对象或变量引用),则需要被 JVM 垃圾回收器回收。
给对象添加一个引用计数器,当对象增加一个引用时计数器加 1,引用失效时计数器减 1。引用计数不为 0 的对象仍然存活。
单元测试(Unit Testing)又称为模块测试,是针对程序模块(软件设计的最小单位)来进行正确性检验的测试工作。如果我们写的代码依赖于某些模块对象,而单元测试过程中这些对象又很难手动创建,或者模块还没有开发完成,那么就使用一个虚拟的对象来完成单元测试,这就是所谓的 Mock。
Java 单元测试中比较流行的 Mock 测试框架有 jMock、EasyMock、Mockito,但是这些 Mock 工具都不能 Mock static
、final
、private
方法等,而 PowerMock 能够做到。
使用 PowerMock,首先需要使用 @RunWith(PowerMockRunner.class)
将测试用例的 Runner 改为 PowerMockRunner
。如果要 Mock static
、final
、private
等方法的时候,就需要加注解 @PrepareForTest
。
PowerMock 有两个版本,一个是基于 EasyMock 实现的,另一个是基于 Mockito 实现的。
下面我将以 PowerMock 的 Mockito 的版本来讲述如何使用 PowerMock。
最近抽空学习了一下
Go
语言,好多特性感觉非常棒,由于高效的开发效率以及性能,现在好多优秀的开源项目都是基于Go
开发,比如Docker
、etcd
、consul
、Kubernetes
等。Go
势必会在互联网技术的服务化,容器化的将来大展拳脚。正好网上看到一篇关于Java
程序员入门Golang
的文章,写的挺好的,所以特此转载过来,再加上自己的一些学习经验,供大家参考。
Golang
从 09
年发布,中间经历了多个版本的演进,已经渐渐趋于成熟,其媲美于 C
语言的性能、Python
的开发效率,又被称为 21 世纪的 C
语言,尤其适合开发后台服务。这篇文章主要是介绍 Golang
的一些主要特性,和 Java
做一个对比,以便更好的理解 Golang
这门语言。
关于 Golang
环境的搭建就不讲了,可以参考 官方文档 或者大神 astaxie 的开源书籍 build-web-application-with-golang 的相关篇章。下面我没让你就从 Go
版本的 Hello World
开始。
System.getProperty()
可以获取系统的配置信息,最近项目开发中要用到临时文件,所以想到了使用系统临时文件目录,最后得知可以通过 System.getProperty("java.io.tmpdir")
可以获取不同操作系统平台下的临时目录。比如:
在 windows
中的目录是:C:\Users\登录用户~1\AppData\Local\Temp\
在 linux
下的目录是:/tmp
在 Mac
下目录是 /var/folders/c8/2c9rf0ss2w9c8tdtfcgvg9kh0000gn/T/
(我感觉是不同电脑应该不一样)
JMS(JAVA Message Service,java消息服务)API是一个消息服务的标准或者说是规范,允许应用程序组件基于JavaEE平台创建、发送、接收和读取消息。它使分布式通信耦合度更低,消息服务更加可靠以及异步性。
JMS是java的消息服务,JMS的客户端之间可以通过JMS服务进行异步的消息传输。
Point-to-Point(P2P)
Publish/Subscribe(Pub/Sub)
即点对点和发布订阅模型
String[] arr = new String[] {"str1", "str2"};
List<String> list = Arrays.asList(arr);