我刚刚和Lua玩了一下,尝试了Koneki eclipse插件,非常好看.问题是,当我在一个函数中进行更改时,我正在调试,此时保存更改时更改无效.所以我被迫重启应用程序.如果我可以在调试器中进行更改并且它们将在运行中变得非常有效,例如使用Smalltalk,或者在Java中使用热代码替换,可能会有所改进.有人知道这是否可行?
假设一些阻塞 I/O 是用 Java 完成的,例如长时间运行的数据库查询。Java 中是否有一种方法可以让某些 Java 数据库驱动程序告诉 JVM 调度程序该调用已离开 JVM,现在正在由某个外部系统处理?然后,JVM 可以将为数据库查询提供服务的线程分配给其他操作,直到数据库的回复到达。这样,阻塞数据库查询将有效地变为非阻塞。
只是想知道这是否可以在一般的 JVM 上完成。我从事 Java 工作很多年了,但我承认我不知道 Java 调度程序在这种情况下在做什么。
我曾经使用Smalltalk进行开发,它完全是交互式的,你可以在任何浏览器(包括调试器)中更改代码,并且更改在应用程序中立即生效(无需重启或任何操作).我的问题是,是否还有其他语言.除了Self之外我什么都不知道,但是我害怕自我真的死了.
Java有热代码替换,只能部分工作(只要公共方法不会改变).JRebel让它变得更好.但我正在寻找一种支持交互式开发的语言,如Smalltalk.注意,我不是指REPL.REPL仍然与应用程序分离,因此REPL中执行的内容在应用程序中不会像交互式编程语言或开发环境那样立即生效.
我有一个问题,下面的代码中名为fooSome的两个方法不能编译,因为编译器报告重复的方法名称有问题:
class Foo() {
// variable block has 2 closure variables
def fooSome(block: Some[(Int, String) => Unit]) = {
}
// variable block has 1 closure variables
def fooSome(block: Some[Int => Unit]) = {
}
// variable block has 2 closure variables
def fooNoSome(block: (Int, String) => Unit) = {
}
// variable block has 1 closure variables
def fooNoSome(block: Int => Unit) = {
}
}
Run Code Online (Sandbox Code Playgroud)
相反,编译器报告没有与名为fooNoSome的两个方法发生此类方法名称冲突.所以问题是编译器没有看到"Some [(Int,String)=> Unit]"和"Some [(Int)=> Unit]" 之间的区别,而"(Int,String)=> Unit" …
我正在运行Rober Hundt基准测试中的Go代码来比较Go与其他语言的性能.当我从该基准测试运行Go代码时(请参阅http://code.google.com/p/multi-language-bench/source/browse/trunk/src/#src%2Fhavlak%2Fgo)我的内存不足例外:
................运行时:内存不足:无法分配1048576字节块(1270808576正在使用中)抛出:内存不足
我的问题是如何增加Go的内存空间.是否有一些启动参数或编译器的某些标志可以相应设置?Go源的Makefile文件没有显示任何内容......
谢谢,奥利弗
我看了一下Lua的书,并了解到Lua中的多线程是合作的.我找不到的是有关线程优先级的一些信息.我猜想具有相同优先级的线程会一直运行直到完成,因为多线程是合作的,或者是完成了收益.那个优先级高于另一个优先级的线程怎么样?
是否能够中断优先级较低的优先级,或者当优先级较低的线程运行到完成时它是否会运行?
我经常遇到这样的情况,我希望这个问题可以像这样解决:
AtomicBoolean bool1 = new AtomicBoolean();
AtomicBoolean bool2 = new AtomicBoolean();
boolean expected = false; // whatever
boolean update = false; // whatever
if(bool1.get()) {
bool2.compareSet(expected, update);
}
Run Code Online (Sandbox Code Playgroud)
但这不起作用,因为可以在bool1.get()和之间进行上下文切换bool2.compareSet(...).那么,什么是需要的是我会称之为"三元原子布尔",这是一件好事,可以做bool1.get()和bool2.compareSet(...)在一个CAS操作.
我的问题是它是否可以完成.有没有人知道有人在考虑这个问题(一些大学)或有人知道现有的解决方案接近所需(我的意思是没有锁,同步块,互斥,semapores,但使用CAS仅基于算法).
我有MyObject和MyTrait:
class MyObject(private val myname: String = "") extends MyTrait {
_name = myname
def foo(myname : String) {
_name = myname
}
}
trait MyTrait {
protected var _name: String = _
def name = _name
}
Run Code Online (Sandbox Code Playgroud)
这样可以正常工作
val myObject = new MyObject("abc")
println(myObject.name)
myObject.foo("def")
println(myObject.name)
Run Code Online (Sandbox Code Playgroud)
版画
abc
def
Run Code Online (Sandbox Code Playgroud)
正如所料.
现在的问题是我希望MyTrait._name是val而不是var.但我无法设法将其编译.任何提示赞赏.
此致,奥利弗