任何人都可以请我解释为什么有些Linux专家建议我们在Bash脚本中使用$ {VARIABLE}?似乎没有任何差别.
根据Scaladoc,没有map在Array类中命名的方法,但是在中implicit def intArrayOps (xs: Array[Int]): ArrayOps[Int]定义了一个隐式函数scala.Predef.所以,你可以申请map上Array(1,2,3,4),如果你喜欢.但我感到困惑的是,map结果是类型Array[Int],而不是ArrayOps[Int].这是我的测试:
scala> val array = Array(1,2,3,4)
array: Array[Int] = Array(1, 2, 3, 4)
scala> array.map(x => x)
res18: Array[Int] = Array(1, 2, 3, 4)
scala> res18.isInstanceOf[Array[Int]]
res19: Boolean = true
scala> res18.isInstanceOf[scala.collection.mutable.ArrayOps[Int]]
warning: there wre 1 unchecked warnings; re-run with -unchecked for details
res20: Boolean = false
Run Code Online (Sandbox Code Playgroud) 大家好 请原谅我在Scala上提出一个愚蠢的问题.虽然我已经在Scala中编程了大约2年,但我仍然觉得很难理解其implicit用法.我们来举一个讨论的例子:
Array(1,2,3,4).map(x => x)
Run Code Online (Sandbox Code Playgroud)
如果你查看scaladoc,你就无法map在Array课堂上找到这个方法.map可以应用的原因是在Array(1,2,3,4)中implicit def intArrayOps (xs: Array[Int]): ArrayOps[Int]定义了隐式函数scala.Predef.
但是,有两个参数列表,第二个参数列表写为implicit bf: CanBuildFrom[Array[T], B, That]).现在我不知道该编译器发现一个适当的参数类型CanBuildFrom申请时map上Array(1,2,3,4).
我jmxremote在catalina.bat中添加了一个configuraiton:
set JAVA_OPTS=-Dcom.sun.management.jmxremote.port=9004 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false
Run Code Online (Sandbox Code Playgroud)
这样我就可以启动jconsole来监控tomcat的性能.
但我遇到了一个问题,我无法正常通过tomcat $CATALINA_HOME\catalina.bat stop,也没有$CATALINA_HOME\shutdown.bat
有什么建议吗?
Scala程序员应该知道这种写法:
class Person{
var id = 0
}
var p = new Person
p.id
p.id = 2
Run Code Online (Sandbox Code Playgroud)
等于
class Person{
private var _id = 0
def id = _id
def id_=(i: Int) = _id = i
}
val p = new Person
p.id // be equal to invoke id method of class Person
p.id = 2 // be equal to p.id_=(2)
Run Code Online (Sandbox Code Playgroud)
有效.但是如果你评论getter方法def id = _id,p.id = 2会导致编译错误,说
error: value key is not a member of Person …Run Code Online (Sandbox Code Playgroud) 首先我宣布一个类:
class Op(var x : Int) {
def +++(op: Op) = {
println(this.x + " +++ " + op.x)
this.x += op.x
this
}
def ***(op: Op) = {
println(this.x + " *** " + op.x)
this.x *= op.x
this
}
}
Run Code Online (Sandbox Code Playgroud)
现在我在REPL中执行表达式:
op1 +++ op2 +++ op3 *** op4
Run Code Online (Sandbox Code Playgroud)
它输出

但为什么这个方法不是***先行?是不是优先级***高于+++?Java和C怎么样?它和Scala一样吗?
原谅我英语不好,但我会尽力表达我的问题.
假设我想处理一个大文本,其操作是通过关键字过滤内容; 把它们改成小写; 然后将它们打印到标准输出上.众所周知,我们可以使用Linux BASH脚本中的管道执行此操作:
cat article.txt | grep "I" | tr "I" "i" > /dev/stdout
Run Code Online (Sandbox Code Playgroud)
其中cat article.txt,grep "I",tr "I" "i" > /dev/stdout并行运行.
在Scala中,我们可能会这样做:
//or read from a text file , e.g. article.txt
val strList = List("I", "am", "a" , "student", ".", "I", "come", "from", "China", ".","I","love","peace")
strList.filter( _ == "I").map(_.toLowerCase).foreach(println)
Run Code Online (Sandbox Code Playgroud)
我的问题是,我们如何才能使filter,map和foreach水货?
谢谢
我试着像在Java中一样在Scala中编写一个简单的maven2插件,但是失败了.它表明特定的javadoc在Scala环境中不起作用.是不是可以在Scala中编写maven2插件,因为官方的maven-scala-plugin也是用Java编写的?
我安装了openldap 2.4.35从源代码压缩包用berkeleydb 5.0.32.NC的CentSO 6.4 x86_64.
运行几天后,ldap服务器意外关闭.这是最后一个日志:
ber_get_next
TLS trace: SSL3 alert read:warning:close notify
52b7b798 ber_get_next on fd 13 failed errno=0 (Success)
52b7b798 conn=1023 op=70 do_unbind
52b7b798 connection_close: conn=1023 sd=13
TLS trace: SSL3 alert write:warning:close notify
52b7cbba daemon: shutdown requested and initiated.
52b7cbba slapd shutdown: waiting for 0 operations/tasks to finish
52b7cbba slapd shutdown: initiated
52b7cbba ====> bdb_cache_release_all
52b7cbba slapd destroy: freeing system resources.
52b7cbba slapd stopped.
Run Code Online (Sandbox Code Playgroud)
配置文件(slapd.conf):
include /home/ucportal/local/openldap/etc/openldap/schema/core.schema
include …Run Code Online (Sandbox Code Playgroud) 根据这篇文章,LifeRay提供了一个maven插件来支持portlet插件开发,但没有提到它是否提供了一个公共官方maven存储库.
任何人都可以了解这一点吗?