徐鼎 发布的文章
Scala下划线“_”的用法
第一:初始化的时候。
object Sample {
var name:String=_
def main (args: Array[String]){
name="hello world"
println(name)
}
在这里,name也可以声明为null,例:var name:String=null。这里的下划线和null的作用是一样的。
第二:引入的时候。
import math._
object Sample {
def main (args: Array[String]){
println(BigInt(123))
}
}
这里的math._就相当于Java中的math.*; 即“引用包中的所有内容”。
第三:集合中使用。(最典型,最常用)
object Sample {
def main (args: Array[String]){
val newArry= (1 to 10).map(_*2)
println(newArry)
}
}
这里的下划线代表了集合中的“某(this)”一个元素。这个用法很常见,在foreach等语句中也可以使用。
第四:模式匹配。
object Sample {
def main (args: Array[String]){
val value="a"
val result= value match{
case "a" => 1
case "b" => 2
case _ =>"result"
}
println(result)
}
}
在这里的下划线相当于“others”的意思,就像Java switch语句中的“default”。
还有一种写法,是被Some“包”起来的,说明Some里面是有值的,而不是None。
object Sample {
def main (args: Array[String]){
val value=Some("a")
val result= value match{
case Some(_) => 1
case _ =>"result"
}
println(result)
}
还有一种表示队列
object Sample {
def main (args: Array[String]){
val value=1 to 5
val result= value match{
case Seq(_,_*) => 1
case _ =>"result"
}
println(result)
}
}
第五:函数中使用。
object Sample {
def main (args: Array[String]){
val set=setFunction(3.0,_:Double)
println(set(7.1))
}
def setFunction(parm1:Double,parm2:Double): Double = parm1+parm2
}
这是Scala特有的“偏函数”用法。
第六:元组Tuple。(如果这也算是的话)
object Sample {
def main (args: Array[String])={
val value=(1,2)
print(value._1)
}
}
第七:传参。
object Sample {
def main (args: Array[String])={
val result=sum(1 to 5:_*)
println(result)
}
def sum(parms:Int*)={
var result=0
for(parm <- parms)result+=parm
result
}
}
当函数接收的参数不定长的时候,假如你想输入一个队列,可以在一个队列后加入“:_*”,因此,这里的“1 to 5”也可以改写为:“Seq(1,2,3,4,5)”。这算是一个小的用法吧
IDEA导入jar包通用方法(不论是什么工具sbt,maven均可完美导入)
本人在使用SBT导入外部jar包,发现jar包导入后出现了,上锁的情况,
说明一般的导入方法不能试用SBT工具
介绍一种通用方法:
新建lib根目录包------->将包直接复制进去------>右键build as library ---->完美导入
(scala-actor)SBT使用笔记
使用SBT调试scala中Actor出现缺失的jar包,进而google科普了一下
默认情况下,sbt完全按照约定工作,会自动找到以下内容:
项目根目录下的源文件
src/main/scala 或 src/main/java 中的源文件
src/test/scala 或 src/test/java 中的测试文件
src/main/resources 或 src/test/resources 中的数据文件
lib 中的jar文件
更多笔记
https://flystarhe.github.io/2016/04/13/scala-sbt/
SBT官方文档网址
http://www.scala-sbt.org/0.13/docs/Library-Management.html#Explicit+URL
下载安装SBT
Simple Build Tool的简称, 是用Scala语言编写的优秀的build工具。 它使用Scala语言来编写build脚本,功能非常强大。它拥有一个插件体系,已经有很多插件可供使用,我们很快就会用到它们。SBT是用来build用Scala编写的软件的推荐方法,而且可能是学习本指南的最简单的方法。如果你决定使用SBT,请按下面的指示操作,否则可以跳过这一部分和下一部分内容。
要安装SBT并创建本指南的项目,最简单的方法见 https://github.com/harrah/xsbt/wiki/Setup。
现在我们需要创建我们的第一个Akka项目,你可以手动向build脚本中添加依赖,不过更简单的方法是使用下一部分中介绍的Akka SBT插件。
创建Akka SBT项目
如果你还没做过,那么现在就开始创建本指南所讲的SBT项目,所要做的是在你希望创建项目的目录下添加一个build.sbt 文件:
name := "My Project"
version := "1.0"
scalaVersion := "2.9.1"
resolvers += "Typesafe Repository" at "http://repo.typesafe.com/typesafe/releases/"
libraryDependencies += "com.typesafe.akka" % "akka-actor" % "2.0"
安全风控工程师
今日头条安全风控工程师 2-4万/月
职位信息
职位描述:
1、负责实时风控系统的规划与开发,包括安全事件、业务事件接入,规则平台、高性能累计计算、基于spark的实时数据流分析,实时监控等,并不断优化风控系统的扩展性、可用性和实时性;
2、负责针对不同的场景设计不同的数据采集方式,对输入风控系统的数据进行有效的监控,及时发现数据质量问题;
3、 基于实时日志,利用用户行为、设备信息、账号资料等数据抽象沉淀为有效的特征及画像,并服务化供实时风控策略使用;
4、负责威胁模型的建立和风控算法、复杂策略的开发及参数调优。
职位要求:
1、本科及以上学历,计算机等相关专业;
2、匹配岗位的开发经验(擅长java、scala、golang、python其中的一种或多种开发语言);
3、对数据有较高的敏感度,了解常见的数据分析方法及算法模型;
4、有大型互联网工作经验,实际的安全风控开发经验;
职能类别:网络信息安全工程师
HELLOBike安全风控工程师 1.5-3万/月
岗位职责:
1.负责安全检测分析及防御系统的研发;
2.负责大数据分析、分布式风控系统研发;
3.理解产品作弊生态、规划产品反作弊发展方向,并将方向拆解为可执行的项目;
4.较强的数据分析能力,将数据规律抽象成机器可实现的策略,为解决问题把握方向;
任职要求:
1.3年以上互联网安全相关工作经验;
2.熟悉python/java/go中的一种开发语言;
3.熟悉kafka/storm/spark等大数据处理框架优先;
4.有反作弊、安全、数据分析专业领域经验者优先;
5.工作主动性强,耐心细致,有责任心,具备团队合作精神
职能类别:网络信息安全工程师