Hello Akka

Akka是一个工具,用来在JVM上构建高并发、分布式、容错的事件驱动的应用。Akka支持java和scala两种语言。Akka最强大的一个特性是使用了并发Actor模型。

这一次本文会同时使用java和scala来进行说明。

示例代码

下面是一个非常简单使用akka的的例子。

java(做了折叠):

…

需要class,interface或enum

引入github上的一个项目后在编译时收到了“需要class,interface或enum”这样的错误。就像下图:

attach

图片是我随便找的,不过错误是一样的。

这样的错误通常是由编码问题导致的,只需要修改文件编码或项目编码就可以了,然而随之而来的另一个问题就是代码中的中文可能会丢失。后来找的解决方案是这样的,在pom中指定项目编码:

…

HttpClient多线程并发

说明:以下的代码基于httpclient4.5.2实现。

我们要使用java的HttpClient实现get请求抓取网页是一件比较容易实现的工作:

…

Java Fork/Join

Fork/Join框架是ExecutorService接口的一个实现,通过它我们可以实现多进程。Fork/Join可以用来将一个大任务递归的拆分为多个小任务,目标是充分利用所有的资源尽可能增强应用的性能。

和任何ExecutorService接口的实现一样,Fork/Join也会使用线程池来分布式的管理工作线程。Fork/Join框架的独特之处在于它使用了wo…

lambda表达式3 – 方法引用

一个实例

使用lambda表达式可以创建简洁的匿名方法。不过,有时候lambda表达式只是简单的调用了已有的方法。此时,使用方法引用无疑是一个更简洁易读的方案。

再来看看之前使用过的Person类:

…

MemoryAnalyzer介绍及使用

Eclipse Memory Analyzer  Tools(MAT)是一个功能丰富且轻量的 Java 堆内存分析工具,可以用来辅助发现内存泄漏减少内存占用。

使用 Memory Analyzer 来分析生产环境的 Java 堆转储文件,可以从数以百万计的对象中快速计算出对象的 Retained Size,查看是谁在阻止垃圾回收,并自动生成一个 Leak Suspect(内存泄…

Java实现邮件发送过程中遇到的几个问题

发送邮件的代码是我从以前的一个应用上直接拷贝过来的。以前使用的腾讯的邮件服务,程序执行起来没有任何问题。后来修改为微软office365邮件服务后,却遇到了两个问题。

问题一,tls加密设置

异常信息如下:

…

关于Heap Dump

Heap Dump是什么?

Heap Dump也叫堆转储文件,是一个Java进程在某个时间点上的内存快照。Heap Dump是有着多种类型的。不过总体上heap dump在触发快照的时候都保存了java对象和类的信息。通常在写heap dump文件前会触发一次FullGC,所以heap dump文件中保存的是FullGC后留下的对象信息。

我们可以通过Heap Dump做哪些

…