`
deepinmind
  • 浏览: 444994 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
1dc14e59-7bdf-33ab-841a-02d087aed982
Java函数式编程
浏览量:40840
社区版块
存档分类
最新评论
文章列表
正如前几篇文章中所看到的,我们可以通过ActorSystem的actorOf方法来创建一个Actor。其实ActorSystem还可以做许多事情。本篇中我们来看下如何用它来进行配置及调度。 我们先看下ActorSystem里的方法的一个子集。 1. 配置管理 还记得前面](http://it.deepinmind.com/akka/2014/10/22/akka-notes-logging-and-testing.html)我们用来配置日志级别的那个application.conf文件吗?它就好比Java程序里的那些.properties文件一样。马上我们会看到如何通过这个配置文件来 ...
前面我们讲到了Actor的消息传递,并看到了如何发送一条fire-n-forget消息(也就是说,消息发送给Actor后我们就不管了,不从Actor那接收响应)。 技术上来讲,消息发送给Actor就是希望能有副作用的。设计上便是如此。目标Actor可以不做响应,也可以做如下两件事情—— 1. 给发送方回复一条响应(在本例中,TeacherActor会将一句名言回复给StudentActor) 2. 将响应转发给其它的目标受众Actor,后者也可以进行响应/转发/产生副作用。Router和Supervisor就是这种情况。(很快我们就会看到) 请求及响应 本文中我们只关注第一点——请求及 ...
在前两篇笔记中(第一篇](http://it.deepinmind.com/akka/2014/10/11/introducing-actors-akka-notes-part-1.html),[第二篇),我们简单地介绍了一下Actor以及它的消息传递是如何工作的。在本篇中,我们将看下如何解决TeacherActor的日志打印及测试的问题。 简单回顾 前面我们的Actor是这样的: class TeacherActor extends Actor { val quotes = List( "Moderation is for cowards" ...
写过多线程的人都不会否认,多线程应用的维护是件多么困难和痛苦的事。我说的是维护,这是因为开始的时候还很简单,一旦你看到性能得到提升就会欢呼雀跃。然而,当你发现很难从子任务的错误中恢复或者有些僵尸BUG很难复现再或者你的分析器显示你的线程在写入一个共享状态前大部分时间都浪费在阻塞上面的时候,痛苦降临了。   我刻意没提Java的并发API,以及它里面的集合类使得多线程编程变得多么轻松简单,因为我相信既然你们点进了这篇文章,那就说明你希望能更好地控制你的子任务,或者你就是不喜欢使用锁以及同步块,希望能有一种更高层次的抽象。   在本系列的Akka笔记中,我们将通过一些简单的Akka例子来体 ...
许多人在日常工作中都会用到分布式系统,它的好处就是它所提供的稳定性,容错性以及伸缩性使我们能更容易地构建出稳定,高效的应用。然而分布式系统的使用非常具有挑战性,包括数据同步以及理解冲突的意义。 分布式 ...
没人会喜欢空指针异常!有什么方法可以避免它们吗?或许吧。。本文将讨论到以下几种技术 Optional类型(Java 8中新引入的) Objects类(Java 7中原有的) Java 8中的Optional类它是什么? Java 8中新引入的类型 它是作为某个指定类型的对象的包装器或者用于那些不存在对象(null)的场景 简单来说,它是处理空值的一个更好的替代品(警告:乍一看可能并没有那么明显)基本用法 它是一种类型(一个类)——那么,怎么才能创建一个这个类型的实例?使用下它的三个静态方法就可以了 public static Optional<String& ...
对于数据过滤而言CHECK约束已经算是相当不错了。然而它仍存在一些缺陷,比如说它们是应用到表上面的,但有的时候你可能希望指定一条约束,而它只在特定条件下才生效。 使用SQL标准的WITH CHECK OPTION子句就能完成这点,至少Oracle和SQL Server都实现了这个功能。下面是实现方式: CREATE TABLE books ( id NUMBER(10) NOT NULL, title VARCHAR2(100 CHAR) NOT NULL, price NUMBER(10, 2) NOT NULL, ...
还记得Heartbleed漏洞吗?如果你相信今天这个铺天盖地的传言,那说明Shellshock和它是一类的,它的名字也同样令人畏惧(弹震症,一种精神疾病),就是缺了个酷点的LOGO而已(这些漏洞的市场部的人需要加把劲了)。不过认真来讲,它还是有可能成为一个大麻烦的,正如上次heartbleed漏洞中我所做的那样,我希望能汇总出一些资料,这样对我自己来说,我能知道如何去解决这个问题,也让别人能在各种传闻里真正认识到它潜在的风险。 先做下准备工作,我先分享下 Robert Graham的博客中的内容,文中对这个漏洞做了很细致的分析。假设有这样一个HTTP请求: target = 0.0.0 ...
概述 Java 8添加了lambda表达式及类型推导的特性。这使得语言更加简练和整洁,然而正因这样,你没有明确说明自己究竟要做什么,这也带来了一些副作用。 lambda表达式的返回值很重要 Java 8会去推导闭包的类型。推导的一个方 ...
HTML是WEB的核心,互联网中你看到的所有页面都是HTML,不管它们是由JavaScript,JSP,PHP,ASP或者是别的什么WEB技术动态生成的。你的浏览器会去解析HTML并替你去渲染它们。不过如果你需要自己在Java程序中解析HTML文档并查找某些元 ...
本文会介绍一些JVM内存结构的基本概念,然后很快会讲到持久代,来看下Java SE 8发布后它究竟到哪去了。 基础知识 JVM只不过是运行在你系统上的另一个进程而已,这一切的魔法始于一个java命令。正如任何一个操作系统进程那 ...
在看内存管理术语表的时候偶然发现了”Pig in the Python(注:有点像中文里的贪心不足蛇吞象)”的定义,于是便有了这篇文章。表面上看,这个术语说的是GC不停地将大对象从一个分代提升到另一个分代的情景。这么做就好比巨蟒整个吞食掉它的猎物,以至于它在消化的时候都没办法移动了。 在接下来的这24个小时里我的头脑中充斥着这个令人窒息的巨蟒的画面,挥之不去。正如精神病医生所说的,消除恐惧最好的方法就是说出来。于是便有了这篇文章。不过接下的故事我们要讲的不是蟒蛇,而是GC的调优。我对天发誓。 大家都知道GC暂停很容易造成性能瓶颈。现代JVM在发布的时候都自带了高级的垃圾回收器,不过从我的 ...
本文列举了我在周围同事的Java代码中看到的一些比较典型的错误。显然,静态代码分析(我们团队用的是qulice)不可能发现所有的问题,这也是为什么我要在这里列出它们的原因。 如果你觉得少了什么,请不吝赐教,我会很乐意把它们加上。 下面列出的所有这些错误基本都与面向对象编程有关,尤其是Java的OOP。 类名 读下这篇短文“什么是对象”。类应该是真实生活中的一个抽象实体,而不是什么“validators”,“controller”, “managers”这些东西。如果你的类名以”er”结尾的话——那它就是个糟糕的设计。 当然了,工具类也是反模式,比如说Apache的StringUtils ...
本文将为你简单介绍一下Java 8 update 20中引入的字符串去重的特性。 从平均情况来看,应用程序中的String对象会消耗大量的内存。这里面有一部分是冗余的——同样的字符串会存在多个不同的实例(a != b, 但a.equals(b))。在实践中,有许多字符串会出于不同的原因造成冗余。 最初JDK提供了一个String.intern()方法来解决字符串冗余的问题。这个方法的缺点在于你必须得去找出哪些字符串需要进行驻留(interned)。这通常都需要一个具备冗余字符串查找功能的堆分析的工具才行,比如Youkit profiler。如果使用得当的话,字符串驻留会是一个非常有效的节省内 ...
4款Java垃圾回收器——错误的选择导致糟糕的性能 现在已经是2014年了,但是对大多数开发人员而言有两件事情仍然是个谜——垃圾回收以及异性(码农又被嘲笑了)。由于我对后者也不是特别了解,我想我还是试着说说前者吧 ...
Global site tag (gtag.js) - Google Analytics