徐鼎 发布的文章

第一:初始化的时候。

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)”。这算是一个小的用法吧

使用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.工作主动性强,耐心细致,有责任心,具备团队合作精神
职能类别:网络信息安全工程师