编程语言 Scala偏函数和偏应用函数 偏函数定义 偏函数是指仅定义了输入参数的子集的函数,下图显示的一个偏函数:f : X -> Y,该函数仅定义了输入参数X的子集1和3,没有包含2。对某些值现在还无法给出具体的操作(即需求还不明朗),也有可能存在几种处理方式(具体的需求),我们可以先对需求明确的部分进行定义,然后视具体情况补充其他域的定义。 yuziyue 10 Aug 2023 · 4 min read
大数据开发 Spark task多线程资源争抢问题 Spark task多线程资源争抢问题 在多个task同时读取 object 单例的内部非线程安全的对象时会报错,示例代码如下: 这个对象是线程不安全的,但是在task里面的多个线程会共用这个对象所有可能会有问题 val sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss") 单个 partition 顺序执行的不会出现争抢问题 yuziyue 8 Aug 2023 · 1 min read
编程语言 Scala之高阶函数指南 高阶函数是指使用其他函数作为参数、或者返回一个函数作为结果的函数。在Scala中函数是“一等公民”,所以允许定义高阶函数。这里的术语可能有点让人困惑,我们约定,使用函数作为参数,或者返回值为函数的“函数”和“方法”,均称之为“高阶函数”。map 将传入的函数一次作用在序列上 yuziyue 5 Aug 2023 · 3 min read
编程语言 Scala 编程之类与对象 Scala 编程之类与对象 主构造函数:其实就是把类成员初始化 辅助构造函数:额外的构造函数,每个辅助构造方法都必须首先调用另一个构造方法(另一个辅助方法 或者 主构造方法)。在 Java 类中,构造方法要么调用同一个类的另一个构造方法,要么直接调用超类的构造方法。而在 Scala 类中,只有主构造方法可以调用超类的构造方法。 yuziyue 5 Aug 2023 · 4 min read
编程语言 scala没有break关键字怎么办 scala.util.control 包的 Break 类给出了一个 break 方法,可以被用来退出包含它的用breakable标记的代码块。Break类实现的break的方法是抛出一个异常,然后由外围的breakable的方法的应用所捕获,因此对break的调用并不需要跟 breakable 的调用放在同一个方法内。 yuziyue 5 Aug 2023 · 1 min read
编程语言 Scala 中下划线用法总结 Scala 中下划线用法总结 导入通配符 *号在Java中是导入通配符,但是在Scala中是合法的方法名,所以导入包时要使用_代替。类成员默认值 Java中类成员可以不赋初始值,编译器会自动帮你设置一个合适的初始值,而在Scala中必须要显式指定,可以用 _ 让编译器自动帮你设置初始值,注意: 该语法只适用于类成员,而不适用于局部变量。可变参数 yuziyue 5 Aug 2023 · 3 min read
编程语言 Scala发送邮件完整示例 val from = "usernamexx@yeah.net" // 发件人邮箱 val password = "xxxx" // 发件人邮箱密码,注意:有些邮箱是是授权码 val to = "xxxxx@qq.com" // 收件人邮箱 val properties = new java.util.Properties() properties.put("mail.smtp.host", "smtp.yeah.net") // 使用 SMTP 服务器 properties.put("mail.smtp.port", "465") yuziyue 13 Jul 2023 · 3 min read
编程语言 Scala集合类型使用整理 Tuple Scala 中的元组包含一系列类:Tuple2,Tuple3等,直到 Tuple22。 因此,当我们创建一个包含 n 个元素(n 位于 2 和 22 之间)的元组时,Scala 基本上就是从上述的一组类中实例化 一个相对应的类,使用组成元素的类型进行参数化。 ● 用户有时可能在元组和 case 类之间难以选择。 通常,如果元素具有更多含义,则首选 case 类。 ● 元组一旦创建之后,就是不可变的 yuziyue 12 Jul 2023 · 3 min read
编程语言 Scala文件读写等常见操作 文件移动位置 val path = Files.move( Paths.get(sourceFilename), Paths.get(destinationFilename), StandardCopyOption.REPLACE_EXISTING ) 从指定位置开始读取 索引从 0 开始,英文一个字符占用一个索引,中文一个汉字占用 3 个字符。 yuziyue 11 Jul 2023 · 1 min read
编程语言 Scala调用并执行外部Linux命令 Scala 执行命令非常简单,不需要额外的依赖。 val cmd = "cat /etc/profile | wc -l" val stdoutStr = new mutable.StringBuilder val stderrStr = new mutable.StringBuilder var exitCode = 0 var stdout = "" var stderr = "" yuziyue 11 Jul 2023 · 1 min read
编程语言 Scala函数与方法总结 概念: 当⼀个函数⽆需输⼊参数时,我们称这个函数为 “0参函数“,定义⼀个0参函数时,你可以加⼀对空括号,也可以省略掉括号,直接写函数体。方法调⽤(注意:是方法,不是函数):如果你在定义0参方法时加了括号,则在调⽤时可以加括号或者省略括号。但当你在定义0参方法时没加括号,则在调⽤时不能加括号,只能使⽤函数名。 yuziyue 1 Jul 2023 · 5 min read