我正试图通过以下方式在macos mountain lion上安装八度:
sudo port install octave
Run Code Online (Sandbox Code Playgroud)
但是,此命令的结果始终如下:
Error:
Error: No valid Xcode installation is properly selected.
Error: Please use xcode-select to select an Xcode installation:
Error: sudo xcode-select -switch /Applications/Xcode.app/Contents/Developer # version 4.4
Error:
Run Code Online (Sandbox Code Playgroud)
我尝试了建议的sudo xcode-select -switch命令无济于事.始终会出现相同的错误.任何想法如何解决这个问题?
我正在尝试使用 scalaLinkedHashMap作为 LRU 缓存,但我不确定如何删除此类映射的最旧条目。我知道javaLinkedHashMap有一个方法removeEldestEntry,但scala的实现似乎没有类似的方法。我不想仅仅为了访问removeEldestEntry. 我怎样才能实现这个目标?
我遇到了一个问题,我在项目中包含了一些第三方罐子,而第三方罐子在jar文件的根目录中都有相同名称的配置文件.当我使用时执行mvn package构造一个jar(用于部署)时maven-assembly-plugin,生成的jar文件只在根目录中包含一个配置文件,并且它只包含其中一个配置文件的内容.然后,当我从"超级jar"运行我的应用程序时,由于缺少配置而发生错误.我认为使用maven-shade-plugin会有所帮助,因为它似乎支持连接这些文件,但这种方法不起作用(冲突的文件没有附加,而且我收到了关于以前没有发生的重复导入apache commons库的新警告).
以最自动和可维护的方式处理此问题的最佳方法是什么?
有没有办法在perl中找到正则表达式匹配的所有可能的起始位置?
例如,如果你的正则表达式是"aa"而文本是"aaaa",它将返回0,1和2,而不是0和2.
显然,你可以做一些事情,比如返回第一个匹配,然后删除所有字符,包括该起始字符,并执行另一个搜索,但我希望有更高效的东西.
假设您有以下修订图,c为当前分支:
c a
\ /
b
Run Code Online (Sandbox Code Playgroud)
git rebase --onto a b 创建以下内容:
c
/
a
/
b
Run Code Online (Sandbox Code Playgroud)
并且git rebase --onto b a返回到图:
c a
\ /
b
Run Code Online (Sandbox Code Playgroud)
但是,在两次重组之前,c的新SHA1与c的旧SHA1不同.为什么会这样?
我有一些包含对象日志的文件。每个文件可以存储不同类型的对象,但单个文件是同构的——它只存储单一类型的对象。
我想编写一个方法来返回这些对象的数组,并使该数组具有指定类型(文件中的对象类型是已知的并且可以作为参数传递)。
粗略地说,我想要的是以下内容:
public static <T> T[] parseLog(File log, Class<T> cls) throws Exception {
ArrayList<T> objList = new ArrayList<T>();
FileInputStream fis = new FileInputStream(log);
ObjectInputStream in = new ObjectInputStream(fis);
try {
Object obj;
while (!((obj = in.readObject()) instanceof EOFObject)) {
T tobj = (T) obj;
objList.add(tobj);
}
} finally {
in.close();
}
return objList.toArray(new T[0]);
}
Run Code Online (Sandbox Code Playgroud)
上面的代码不能编译(返回语句有错误,演员表有警告),但它应该让你知道我想要做什么。有关执行此操作的最佳方法的任何建议?
在unix命令行上将所有匹配(每个匹配一行或每行输入一行)打印到正则表达式的最简单方法是什么?请注意,每行输入可能有0个或多个匹配.
我假设必须有一些方法可以使用sed,awk,grep和/或perl来实现这一点,我希望有一个简单的命令行解决方案,以便将来在需要时显示在我的bash历史记录中.
编辑:澄清一下,我不想打印所有匹配的行,只打印正则表达式的匹配.例如,一行可能有1000个字符,但正则表达式只有两个10个字符的匹配项.我只对这两个10个字符的比赛感兴趣.
我使用case类创建了一些用于在scala中喷涂的json消息.例如:
case class Foo(name: String, attrs: List[String])
implicit val fooFormat = jsonFormat2(Foo)
object Foo {
case class Invalid(error: String)
}
case class Bar(name: String, kv: Map[String, String])
implicit val barFormat = jsonFormat2(Bar)
Run Code Online (Sandbox Code Playgroud)
在上面的代码片段中,barFormat编译但fooFormat不是:
type mismatch; found : Foo.type required: (?, ?) => ?
Note: implicit value barFormat is not applicable here because it comes
after the application point and it lacks an explicit result type
Run Code Online (Sandbox Code Playgroud)
我不想barFormat代替使用fooFormat,并且我理解case类自动生成一个伴随对象,但是我不明白为什么这里有编译器错误,并且我很难解释错误消息.有谁知道这里的问题是什么以及如何解决它,最好不要删除我的Foo伴侣对象?
如果我有以下代码:
public void foo() {
Executors.newSingleThreadedExecutor().submit(
new Runnable() {
int x = 5;
public void run() {
System.out.println("x = " + x);
}
}
);
}
Run Code Online (Sandbox Code Playgroud)
我保证看到"x = 5",或者我也可以看到"x = 0",因为它println是在一个可能看到未初始化值的不同线程中执行的x?我从来没有目睹过这种情况,但我一直无法保证不会发生这种情况(例如,如果x是final,那么它似乎永远不会发生).
我有一个运行for循环的多个goroutine应用程序,需要一种方法来指示这些for循环中断,并测试是否发生了超时情况.我正在考虑使用带select语句的共享通道来完成此操作,如下所示:
// elsewhere in the code, this channel is created, and passed below
done := make(chan struct{})
time.AfterFunc(timeout, func() { close(done) })
...
go func() {
Loop:
for {
select {
case <-done:
break Loop
default:
foo()
time.Sleep(1 * time.Second)
}
}
select {
case <-done:
panic("timed out!")
default:
// ok
}
}()
Run Code Online (Sandbox Code Playgroud)
这是实现这一目标的有效方法吗?我最关心的select是所选择的分支可能是非确定性的,因此default即使其中一个case已经准备就可以选择.这可能吗?是否有任何文档声明匹配case保证优先于a default.关注的是,done即使发生超时,上面的for循环也可以在关闭后循环几次和/或报告成功.