Scala 类型的类型(二) - Scala Cool 

作者:JerryXia | 发表于 , 阅读 (0)
上一篇Scala 类型的类型(一)
目录6. 一个单例对象的类型7. Scala 中的型变8. Refined Types (refinements)9. 包对象10. 类型别名6. 一个单例对象的类型Scala 的单例对象( object) 是通过 class 实现的(显然后者就像 JVM 的基础构件)。然而你也会发现我们并不能像一个简单的类一样,轻松地获得一个单例对象的类型……
我常常疑惑该如何传一个单例对象给一个方法,对此我自己也非常惊讶。我的意思是指 obj: ExampleObj 是无效的,因为这种情况 ExampleObj 已经指向了实例,所以它有个 type 的成员,我们可以靠它解决问题。
下面的代码解释了大概的方法:12345object ExampleObjdef takeAnObject(obj: ExampleObj.type) = {}takeAnObject(ExampleObj)
...阅读全文

 Akka 系列(四):Akka 中的共享内存模型 - Scala Cool 

作者:JerryXia | 发表于 , 阅读 (0)
通过前几篇的学习,相信大家对Akka应该有所了解了,都说解决并发哪家强,JVM上面找Akka,那么Akka到底在解决并发问题上帮我们做了什么呢?
共享内存众所周知,在处理并发问题上面,最核心的一部分就是如何处理共享内存,很多时候我们都需要花费很多时间和精力在共享内存上,那么在学习Akka对共享内存是如何管理之前,我们先来看看Java中是怎么处理这个问题的。
Java共享内存相信对Java并发有所了解的同学都应该知道在Java5推出JSR 133后,Java对内存管理有了更高标准的规范了,这使我们开发并发程序也有更好的标准了,不会有一些模糊的定义导致的无法确定的错误。
首先来看看一下Java内存模型的简单构图:

从图中我们可以看到我们线程都有自己的一个工作内存,这就好比高速缓存,它是对主内存部分数据的拷贝,线程对自己工作内存的操作速度远远快于对主内存的操作,但这也往往会引起共享变量不一致的问题,比如以下一个场景:
1234int a = 0;public void setA() {  a = a + 1;}上面是一个很简单的例子,a是一个全局变量,然后我们有一个方法去修改这...阅读全文

 如何在Windows下像Mac一样优雅开发 | 软硬皆施 

作者:JerryXia | 发表于 , 阅读 (0)
起因:之前一直用Mac开发,换了家公司,只许用Windows下开发,说实话,一开始我是拒绝的,可自从看到了这几个工具以后……
下文大标题说明:(Mac下的工具)VS(Windows下的工具),Mac下的工具说明会简要点,毕竟看文章的基本上都是实在受不了Windows的重度Mac开发者。
1. item2 VS Cmder终端工具
- iterm2iterm2是Mac下最好用的终端工具,听说没有之一。配合oh-my-zsh,你的终端居然可以这样!震惊!!(UC震惊部)
池建强大大有一篇文章《终极 Shell》讲mac下的终端,讲的比较好,贴这。大家可以做取舍。
- Cmder如果你用过Windows自带的cmd,简直想shi有没有!页面丑就算了!没有tab!窗口不能缩放!不能用鼠标复制文本!!@#¥%&*¥%…%¥
Cmder绝对是一款Windows环境下的cmd替代者,支持了大部分的Linux命令。
支持tab标签集成git支持绝大Unix/Linux命令但是安装之后一般都会有以下几个问题:中文乱码问题文字重叠问题λ其实可以替换成$
2. Homebrew VS Cho...阅读全文