HTTPS 笔记

随着互联网的迅速发展,网络安全问题日益凸显,现在 Chrome 浏览器已经开始阻止非 https 网站的访问了。对于 https 的流程一直不是十分清晰,借着还没有完全复工有时间,大概画了个图总结一下。
Read more →

Maven 配置文件 settings.xml 详解

settings.xmlmaven 的配置文件,用户配置文件存放于 ${user.home}/.m2/ 目录下,系统全局配置文件放置于 ${maven.home}/conf/ 目录下,pom.xmlmaven 的项目的配置文件。
Read more →

[转]理解 Java 动态代理

动态代理是 Java 语言中非常经典的一种设计模式,也是所有设计模式中最难理解的一种。本文将通过一个简单的例子模拟 JDK 动态代理实现,让你彻底明白动态代理设计模式的本质。

什么是代理

从字面意思来看,代理比较好理解,无非就是代为处理的意思。举个例子,你在上大学的时候,总是喜欢逃课。因此,你拜托你的同学帮你答到,而自己却窝在宿舍玩游戏… 你的这个同学恰好就充当了代理的作用,代替你去上课。

Read more →

JVM-垃圾回收(二)

接着上次 JVM 中 GC 机制的总结,这次主要复习一下垃圾收集的常用算法和 Minor GC、Full GC 相关的一些知识点。
Read more →

JVM-垃圾回收(一)

在 JVM 运行时数据区域中,程序计数器、虚拟机栈和本地方法栈这三个区域属于线程私有的,只存在于线程的生命周期内,线程结束之后也会消失,因此不需要对这三个区域进行垃圾回收。垃圾回收主要是针对 Java 堆和方法区进行。

一、判断对象状态

JVM 在回收一个对象时,首先要判断这个对象的状态,如果判断对象为无效的(没有被任何对象或变量引用),则需要被 JVM 垃圾回收器回收。

1.1 引用计数算法

给对象添加一个引用计数器,当对象增加一个引用时计数器加 1,引用失效时计数器减 1。引用计数不为 0 的对象仍然存活。

Read more →

Java 位运算笔记

一些零碎的知识点总是似懂非懂,用法老是模棱两可,每次都要去网络上查询,长时间不用又忘记了。比如 Java 中的位运算。今天抽空归纳总结一下,加强一下记忆。
Read more →

JVM-运行时数据区域

Java 的内存区域划分绝不仅仅只是堆内存(heap)和栈内存(Stack),实际上 JVM 在执行 Java 程序的过程中会把它所管理的内存划分为以下几个数据区域:程序计数器、Java 虚拟机栈、本地方法栈、堆、方法区、运行时常量和直接内存。
Read more →

使用 PowerMock 进行单元测试

单元测试(Unit Testing)又称为模块测试,是针对程序模块(软件设计的最小单位)来进行正确性检验的测试工作。如果我们写的代码依赖于某些模块对象,而单元测试过程中这些对象又很难手动创建,或者模块还没有开发完成,那么就使用一个虚拟的对象来完成单元测试,这就是所谓的 Mock。

Java 单元测试中比较流行的 Mock 测试框架有 jMockEasyMockMockito,但是这些 Mock 工具都不能 Mock staticfinalprivate 方法等,而 PowerMock 能够做到。

使用 PowerMock,首先需要使用 @RunWith(PowerMockRunner.class) 将测试用例的 Runner 改为 PowerMockRunner。如果要 Mock staticfinalprivate 等方法的时候,就需要加注解 @PrepareForTest

PowerMock 有两个版本,一个是基于 EasyMock 实现的,另一个是基于 Mockito 实现的。

下面我将以 PowerMock 的 Mockito 的版本来讲述如何使用 PowerMock。

Read more →

[转] Java 程序员的 Golang 入门笔记

最近抽空学习了一下 Go 语言,好多特性感觉非常棒,由于高效的开发效率以及性能,现在好多优秀的开源项目都是基于 Go 开发,比如 DockeretcdconsulKubernetes 等。Go 势必会在互联网技术的服务化,容器化的将来大展拳脚。正好网上看到一篇关于 Java 程序员入门 Golang 的文章,写的挺好的,所以特此转载过来,再加上自己的一些学习经验,供大家参考。

Golang09 年发布,中间经历了多个版本的演进,已经渐渐趋于成熟,其媲美于 C 语言的性能、Python 的开发效率,又被称为 21 世纪的 C 语言,尤其适合开发后台服务。这篇文章主要是介绍 Golang 的一些主要特性,和 Java 做一个对比,以便更好的理解 Golang 这门语言。

关于 Golang 环境的搭建就不讲了,可以参考 官方文档 或者大神 astaxie 的开源书籍 build-web-application-with-golang 的相关篇章。下面我没让你就从 Go 版本的 Hello World 开始。

Read more →

Java 获取系统的配置信息

System.getProperty() 可以获取系统的配置信息,最近项目开发中要用到临时文件,所以想到了使用系统临时文件目录,最后得知可以通过 System.getProperty("java.io.tmpdir") 可以获取不同操作系统平台下的临时目录。比如:

windows 中的目录是:C:\Users\登录用户~1\AppData\Local\Temp\

linux 下的目录是:/tmp

Mac 下目录是 /var/folders/c8/2c9rf0ss2w9c8tdtfcgvg9kh0000gn/T/ (我感觉是不同电脑应该不一样)

Read more →

[转] JMS 基本概念

JMS(JAVA Message Service,java消息服务)API是一个消息服务的标准或者说是规范,允许应用程序组件基于JavaEE平台创建、发送、接收和读取消息。它使分布式通信耦合度更低,消息服务更加可靠以及异步性。

基本概念

JMS是java的消息服务,JMS的客户端之间可以通过JMS服务进行异步的消息传输。

消息模型

  • Point-to-Point(P2P)

  • Publish/Subscribe(Pub/Sub)

即点对点和发布订阅模型

Read more →

Java List与数组之间的转换

1. 数组转换为List


String[] arr = new String[] {"str1", "str2"};

List<String> list = Arrays.asList(arr);

Read more →