我是这个语言的新手,所以请耐心等待.
我很好奇GO如何处理线程可用的数据存储,因为非局部变量也可以是非易失性的,例如在Java中.
GO具有通道的概念,通过它的本质 - 线程间通信,意味着它绕过处理器高速缓存,并直接读取/写入堆.
另外,在go lang文档中没有找到对volatile的任何引用.
我正在尝试决定在我的项目中使用这两个中的哪一个:guava cache或ehcache.寻找轻量级服务级别缓存解决方案.我搜索了一些基准测试,但找不到任何基准测试.
如果您有方便的基准,请在此处发布.
干杯.
毫无疑问,Go的语法比Scala简单得多.它的语言功能也较少.我非常喜欢用Go编写并发代码的简易性.
事实证明,高性能代码是无阻塞代码(请参阅http://norvig.com/21-days.html#Answers),Go和Scala都非常擅长这一点.
我的问题是如何通过实现相同的并发模式,如何在Scala中编写与Go程序完全相同的程序.我想到的第一件事就是以与Channels类似的方式使用Futures.
我在找
任何帮助深表感谢.
[编辑] Go并发模式的几个例子 http://talks.golang.org/2012/concurrency.slide
扇入
func fanIn(input1, input2 <-chan string) <-chan string {
c := make(chan string)
go func() {
for {
select {
case s := <-input1: c <- s
case s := <-input2: c <- s
}
}
}()
return c
}
Run Code Online (Sandbox Code Playgroud)
超时粒度(一个频道与整个对话)
在多个实例之间复制服务调用并返回第一个实例的值以进行响应.(这是使用一捆模式)
全部用:没有锁.没有条件变量.没有回调.(Scala期货使用回调)
堆栈可以实现为链表.链接列表可以使用合并排序进行排序:O(n log n)时间O(n)空间
能够使用合并排序对堆栈进行排序是有意义的.
如果是这样的话,代码会是什么样子?
(在网上快速搜索后,我才发现蛮力算法O(n ^ 2))
Scala如何以不同于Java的嵌套,静态或非静态类的方式处理内部类?