尚硅谷大数据技术Scala教程-笔记05【模式匹配、异常、隐式转换、泛型、scala总结】

news2025/1/4 19:49:05

 视频地址:尚硅谷大数据技术之Scala入门到精通教程(小白快速上手scala)_哔哩哔哩_bilibili

  1. 尚硅谷大数据技术Scala教程-笔记01【Scala课程简介、Scala入门、变量和数据类型、运算符、流程控制】
  2. 尚硅谷大数据技术Scala教程-笔记02【函数式编程】
  3. 尚硅谷大数据技术Scala教程-笔记03【面向对象】
  4. 尚硅谷大数据技术Scala教程-笔记04【集合】
  5. 尚硅谷大数据技术Scala教程-笔记05【模式匹配、异常、隐式转换、泛型、scala总结】

目录

第08章-模式匹配

P125【125_尚硅谷_Scala_模式匹配(一)_基本概念和用法】10:47

P126【126_尚硅谷_Scala_模式匹配(二)_模式守卫】04:22

P127【127_尚硅谷_Scala_模式匹配(三)_模式匹配的不同用法(一)_匹配常量】06:03

P128【128_尚硅谷_Scala_模式匹配(三)_模式匹配的不同用法(二)_匹配类型】07:12

P129【129_尚硅谷_Scala_模式匹配(三)_模式匹配的不同用法(三)_匹配数组】07:59

P130【130_尚硅谷_Scala_模式匹配(三)_模式匹配的不同用法(四)_匹配列表】08:56

P131【131_尚硅谷_Scala_模式匹配(三)_模式匹配的不同用法(五)_匹配元组(一)_基本用法】06:20

P132【132_尚硅谷_Scala_模式匹配(三)_模式匹配的不同用法(五)_匹配元组(二)_变量声明】05:49

P133【133_尚硅谷_Scala_模式匹配(三)_模式匹配的不同用法(五)_匹配元组(三)_for推导式中变量】07:30

P134【134_尚硅谷_Scala_模式匹配(三)_模式匹配的不同用法(六)_匹配对象】10:15

P135【135_尚硅谷_Scala_模式匹配(三)_模式匹配的不同用法(七)_样例类】04:04

P136【136_尚硅谷_Scala_模式匹配(四)_偏函数】15:50

第09章-异常

P137【137_尚硅谷_Scala_异常处理】08:14

第10章-隐式转换

P138【138_尚硅谷_Scala_隐式转换(一)_基本概念和类型】06:54

P139【139_尚硅谷_Scala_隐式转换(二)_隐式函数和隐式类】07:57

P140【140_尚硅谷_Scala_隐式转换(三)_隐式参数】09:38

第11章-泛型

P141【141_尚硅谷_Scala_泛型(一)_概念和意义】05:56

P142【142_尚硅谷_Scala_泛型(二)_逆变和协变】06:40

P143【143_尚硅谷_Scala_泛型(三)_上下限】06:14

第12章-总结

第13章-IDEA快捷键


第08章-模式匹配

P125【125_尚硅谷_Scala_模式匹配(一)_基本概念和用法】10:47

package chapter08

object Test01_PatternMatchBase {
  def main(args: Array[String]): Unit = {
    // 1. 基本定义语法
    val x: Int = 5
    val y: String = x match {
      case 1 => "one"
      case 2 => "two"
      case 3 => "three"
      case _ => "other"
    }
    println(y) //other

    // 2. 示例:用模式匹配实现简单二元运算
    val a = 25
    val b = 13

    def matchDualOp(op: Char): Int = op match {
      case '+' => a + b
      case '-' => a - b
      case '*' => a * b
      case '/' => a / b
      case '%' => a % b
      case _ => -1
    }

    println(matchDualOp('+')) //38
    println(matchDualOp('/')) //1
    println(matchDualOp('\\')) //-1
  }
}

P126【126_尚硅谷_Scala_模式匹配(二)_模式守卫】04:22

package chapter08

object Test01_PatternMatchBase {
  def main(args: Array[String]): Unit = {
    // 3. 模式守卫
    def abs(num: Int): Int = {//求一个整数的绝对值
      num match {
        case i if i >= 0 => i
        case i if i < 0 => -i
      }
    }

    println(abs(67)) //67
    println(abs(0)) //0
    println(abs(-24)) //24
  }
}

P127【127_尚硅谷_Scala_模式匹配(三)_模式匹配的不同用法(一)_匹配常量】06:03

Scala中,模式匹配可以匹配所有的字面量,包括字符串,字符,数字,布尔值等等。

package chapter08

object Test02_MatchTypes {
  def main(args: Array[String]): Unit = {
    // 1. 匹配常量
    def describeConst(x: Any): String = x match {
      case 1 => "Int one"
      case "hello" => "String hello"
      case true => "Boolean true"
      case '+' => "Char +"
      case _ => "~"
    }

    println(describeConst("hello")) //String hello
    println(describeConst('+')) //Char +
    println(describeConst(0.3)) //~
  }
}

P128【128_尚硅谷_Scala_模式匹配(三)_模式匹配的不同用法(二)_匹配类型】07:12

    // 2. 匹配类型
    def describeType(x: Any): String = x match {
      case i: Int => "Int " + i
      case s: String => "String " + s
      case list: List[String] => "List " + list
      case array: Array[Int] => "Array[Int] " + array.mkString(",")
      case a => "Something else: " + a
    }

    println(describeType(35)) //Int 35
    println(describeType("hello")) //String hello
    println(describeType(List("hi", "hello"))) //List List(hi, hello)
    println(describeType(List(2, 23))) //List List(2, 23)
    println(describeType(Array("hi", "hello"))) //Something else: [Ljava.lang.String;@75bd9247
    println(describeType(Array(2, 23))) //Array[Int] 2,23

P129【129_尚硅谷_Scala_模式匹配(三)_模式匹配的不同用法(三)_匹配数组】07:59

    // 3. 匹配数组
    for (arr <- List(
      Array(0),
      Array(1, 0),
      Array(0, 1, 0),
      Array(1, 1, 0),
      Array(2, 3, 7, 15),
      Array("hello", 1, 30),
    )) {
      val result = arr match {
        case Array(0) => "0"
        case Array(1, 0) => "Array(1, 0)"
        case Array(x, y) => "Array: " + x + ", " + y //匹配两元素数组
        case Array(0, _*) => "以0开头的数组"
        case Array(x, 1, z) => "中间为1的三元素数组"
        case _ => "something else"
      }
      println(result)
    }

P130【130_尚硅谷_Scala_模式匹配(三)_模式匹配的不同用法(四)_匹配列表】08:56

    // 4. 匹配列表
    // 方式一
    for (list <- List(
      List(0),
      List(1, 0),
      List(0, 0, 0),
      List(1, 1, 0),
      List(88),
      List("hello")
    )) {
      val result = list match {
        case List(0) => "0"
        case List(x, y) => "List(x, y): " + x + ", " + y
        case List(0, _*) => "List(0, ...)"
        case List(a) => "List(a): " + a
        case _ => "something else"
      }
      println(result)
    }

    // 方式二
    val list1 = List(1, 2, 5, 7, 24)
    val list = List(24)

    list match {
      case first :: second :: rest => println(s"first: $first, second: $second, rest: $rest")
      case _ => println("something else")
    }

P131【131_尚硅谷_Scala_模式匹配(三)_模式匹配的不同用法(五)_匹配元组(一)_基本用法】06:20

    // 5. 匹配元组
    for (tuple <- List(
      (0, 1),
      (0, 0),
      (0, 1, 0),
      (0, 1, 1),
      (1, 23, 56),
      ("hello", true, 0.5)
    )) {
      val result = tuple match {
        case (a, b) => "" + a + ", " + b
        case (0, _) => "(0, _)"
        case (a, 1, _) => "(a, 1, _) " + a
        case (x, y, z) => "(x, y, z) " + x + " " + y + " " + z
        case _ => "something else"
      }
      println(result)
    }

P132【132_尚硅谷_Scala_模式匹配(三)_模式匹配的不同用法(五)_匹配元组(二)_变量声明】05:49

package chapter08

object Test03_MatchTupleExtend {
  def main(args: Array[String]): Unit = {
    // 1. 在变量声明时匹配
    val (x, y) = (10, "hello")
    println(s"x: $x, y: $y")

    val List(first, second, _*) = List(23, 15, 9, 78)
    println(s"first: $first, second: $second")

    val fir :: sec :: rest = List(23, 15, 9, 78)
    println(s"first: $fir, second: $sec, rest: $rest")
  }
}

P133【133_尚硅谷_Scala_模式匹配(三)_模式匹配的不同用法(五)_匹配元组(三)_for推导式中变量】07:30

package chapter08

object Test03_MatchTupleExtend {
  def main(args: Array[String]): Unit = {
    println("=====================1. 在变量声明时匹配")
    // 1. 在变量声明时匹配
    val (x, y) = (10, "hello")
    println(s"x: $x, y: $y")

    val List(first, second, _*) = List(23, 15, 9, 78)
    println(s"first: $first, second: $second")

    val fir :: sec :: rest = List(23, 15, 9, 78)
    println(s"first: $fir, second: $sec, rest: $rest")

    println("=====================2. for推导式中进行模式匹配")
    // 2. for推导式中进行模式匹配
    val list: List[(String, Int)] = List(("a", 12), ("b", 35), ("c", 27), ("a", 13))

    // 2.1 原本的遍历方式
    for (elem <- list) {
      println(elem._1 + " " + elem._2)
    }

    println("-----------------------")
    // 2.2 将List的元素直接定义为元组,对变量赋值
    for ((word, count) <- list) {
      println(word + ": " + count)
    }

    println("-----------------------")
    // 2.3 可以不考虑某个位置的变量,只遍历key或者value
    for ((word, _) <- list)
      println(word)

    println("-----------------------")
    // 2.4 可以指定某个位置的值必须是多少
    for (("a", count) <- list) {
      println(count)
    }
  }
}

P134【134_尚硅谷_Scala_模式匹配(三)_模式匹配的不同用法(六)_匹配对象】10:15

package chapter08

object Test04_MatchObject {
  def main(args: Array[String]): Unit = {
    val student = new Student("alice", 18)

    //针对对象实例的内容进行匹配
    val result = student match {
      case Student("alice", 18) => "alice, 18"
      case _ => "Else"
    }

    println(result)
  }
}

//定义类
class Student(val name: String, val age: Int)

//定义伴生对象
object Student {
  def apply(name: String, age: Int): Student = new Student(name, age)

  //必须实现一个unapply方法,用来对对象属性进行拆解
  def unapply(student: Student): Option[(String, Int)] = {
    if (student == null) {
      None
    } else {
      Some((student.name, student.age))
    }
  }
}

P135【135_尚硅谷_Scala_模式匹配(三)_模式匹配的不同用法(七)_样例类】04:04

package chapter08

object Test05_MatchCaseClass {
  def main(args: Array[String]): Unit = {
    val student = Student1("alice", 18)

    //针对对象实例的内容进行匹配
    val result = student match {
      case Student1("alice", 18) => "Alice, 18"
      case _ => "Else"
    }

    println(result) //Alice, 18
  }
}

//定义样例类
case class Student1(name: String, age: Int)

P136【136_尚硅谷_Scala_模式匹配(四)_偏函数】15:50

package chapter08

object Test06_PartialFunction {
  def main(args: Array[String]): Unit = {
    val list: List[(String, Int)] = List(("a", 12), ("b", 35), ("c", 27), ("a", 13))

    // 1. map转换,实现key不变,value2倍
    val newList = list.map(tuple => (tuple._1, tuple._2 * 2))

    // 2. 用模式匹配对元组元素赋值,实现功能
    val newList2 = list.map(
      tuple => {
        tuple match {
          case (word, count) => (word, count * 2)
        }
      }
    )

    // 3. 省略lambda表达式的写法,进行简化
    val newList3 = list.map {
      case (word, count) => (word, count * 2)
    }

    println(newList) //List((a,24), (b,70), (c,54), (a,26))
    println(newList2) //List((a,24), (b,70), (c,54), (a,26))
    println(newList3) //List((a,24), (b,70), (c,54), (a,26))

    // 偏函数的应用,求绝对值
    // 对输入数据分为不同的情形:正、负、0
    val positiveAbs: PartialFunction[Int, Int] = {
      case x if x > 0 => x
    }
    val negativeAbs: PartialFunction[Int, Int] = {
      case x if x < 0 => -x
    }
    val zeroAbs: PartialFunction[Int, Int] = {
      case 0 => 0
    }

    def abs(x: Int): Int = (positiveAbs orElse negativeAbs orElse zeroAbs) (x)

    println(abs(-67)) //67
    println(abs(35)) //35
    println(abs(0)) //0
  }
}

第09章-异常

P137【137_尚硅谷_Scala_异常处理】08:14

package chapter09plus

object Test01_Exception {
  def main(args: Array[String]): Unit = {
    try {
      val n = 10 / 0
    } catch {
      case e: ArithmeticException => {
        println("发生算术异常!")
      }
      case e: Exception => {
        println("发生一般异常!")
      }
    } finally {
      println("处理结束!")
    }
  }
}

第10章-隐式转换

P138【138_尚硅谷_Scala_隐式转换(一)_基本概念和类型】06:54

 当编译器第一次编译失败的时候,会在当前的环境中查找能让代码编译通过的方法,用于将类型进行转换,实现二次编。

P139【139_尚硅谷_Scala_隐式转换(二)_隐式函数和隐式类】07:57

package chapter09plus

object Test02_Implicit {
  def main(args: Array[String]): Unit = {

    val new12 = new MyRichInt(12)
    println(new12.myMax(15))

    // 1. 隐式函数
    implicit def convert(num: Int): MyRichInt = new MyRichInt(num)

    println(12.myMax(15))

    println("============================")

    // 2. 隐式类
    implicit class MyRichInt2(val self: Int) {
      // 自定义比较大小的方法
      def myMax2(n: Int): Int = if (n < self) self else n

      def myMin2(n: Int): Int = if (n < self) n else self
    }

    println(12.myMin2(15))

    println("============================")

    // 3. 隐式参数

    implicit val str: String = "alice"
    //    implicit val str2: String = "alice2"
    implicit val num: Int = 18

    def sayHello()(implicit name: String): Unit = {
      println("hello, " + name)
    }

    def sayHi(implicit name: String = "atguigu"): Unit = {
      println("hi, " + name)
    }

    sayHello
    sayHi

    // 简便写法
    def hiAge(): Unit = {
      println("hi, " + implicitly[Int])
    }

    hiAge()
  }
}

// 自定义类
class MyRichInt(val self: Int) {
  // 自定义比较大小的方法
  def myMax(n: Int): Int = if (n < self) self else n

  def myMin(n: Int): Int = if (n < self) n else self
}

P140【140_尚硅谷_Scala_隐式转换(三)_隐式参数】09:38

package chapter09plus

object Test02_Implicit {
  def main(args: Array[String]): Unit = {
    // 3. 隐式参数

    implicit val str: String = "alice"
    //    implicit val str2: String = "alice2"
    implicit val num: Int = 18

    def sayHello()(implicit name: String): Unit = {
      println("hello, " + name)
    }

    def sayHi(implicit name: String = "atguigu"): Unit = {
      println("hi, " + name)
    }

    sayHello
    sayHi

    // 简便写法
    def hiAge(): Unit = {
      println("hi, " + implicitly[Int])
    }

    hiAge()
  }
}

第11章-泛型

P141【141_尚硅谷_Scala_泛型(一)_概念和意义】05:56

 

P142【142_尚硅谷_Scala_泛型(二)_逆变和协变】06:40

package chapter09plus

object Test03_Generics {
  def main(args: Array[String]): Unit = {
    // 1. 协变和逆变
    val child: Parent = new Child
    //val childList: MyCollection[Parent] = new MyCollection[Child]
    val childList: MyCollection[SubChild] = new MyCollection[Child]
  }
}

// 定义继承关系
class Parent {}

class Child extends Parent {}

class SubChild extends Child {}

// 定义带泛型的集合类型
class MyCollection[-E] {}

P143【143_尚硅谷_Scala_泛型(三)_上下限】06:14

 

package chapter09plus

object Test03_Generics {
  def main(args: Array[String]): Unit = {
    // 2. 上下限
    def test[A <: Child](a: A): Unit = {
      println(a.getClass.getName)
    }

    test[SubChild](new SubChild)
  }
}

// 定义继承关系
class Parent {}

class Child extends Parent {}

class SubChild extends Child {}

// 定义带泛型的集合类型
class MyCollection[-E] {}

第12章-总结

12.1 开发环境

要求掌握必要的 Scala 开发环境搭建技能。

12.2 变量和数据类型

掌握 var 和 val 的区别掌握数值类型(Byte、Short、Int、Long、Float、Double、Char)之间的转换关系

12.3 流程控制

掌握 if-else、for、while 等必要的流程控制结构,掌握如何实现 break、continue 的功能。

12.4 函数式编程

掌握高阶函数、匿名函数、函数柯里化、闭包、函数参数以及函数至简原则。

12.5 面向对象

掌握 Scala 与 Java 继承方面的区别、单例对象(伴生对象)、构造方法、特质的用法及功能。

12.6 集合

掌握常用集合的使用、集合常用的计算函数。

12.7 模式匹配

掌握模式匹配的用法

12.8 下划线

掌握下划线不同场合的不同用法

12.9 异常

掌握异常常用操作即可

12.10 隐式转换

掌握隐式方法、隐式参数、隐式类,以及隐式解析机制

12.11 泛型

掌握泛型语法

第13章-IDEA快捷键

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/424487.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

性能测试简介

性能测试是通过模拟真实的用户&#xff0c;对软件或系统进行操作&#xff0c;查看其响应时间、响应速度、负载能力等。并分析在不同的业务需求下&#xff0c;系统的负载情况是否满足要求。 性能测试主要从两个方面进行&#xff1a;一方面是性能测试本身&#xff0c;包括压力测试…

【Vue-cli】前端工程化环境准备

一、知识点整理 1、Vue-cli 是Vue官方提供的一个脚手架&#xff0c;用于快速生成一个 Vue 的项目模板。 2、Vue-cli提供了如下功能: 1&#xff09;统一的目录结构 2&#xff09;本地调试 3&#xff09;热部署 4&#xff09;单元测试 5&#xff09;集成打包上线 3、需安装依赖…

2023年最新网络安全渗透工程师面试题汇总!不看亏大了!

技术面试问题 CTF 说一个印象深刻的CTF的题目 Padding Oracle->CBC->密码学(RSA/AES/DSA/SM) CRC32 反序列化漏洞 sql二次注入 第一次进行数据库插入数据的时候&#xff0c;仅仅只是使用了 addslashes 或者是借助get_magic_quotes_gpc 对其中的特殊字符进行了转义&…

Java中的文件操作

Java中通过java.io.File类对一个文件&#xff08;包含目录&#xff09;进行抽象的描述。注意有File对象&#xff0c;并不代表真实存在该文件。 1.File概述 我们先看看File类中的常见属性、构造方法和方法 1.1属性 修饰符及类型属性说明static StringpathSeparator依赖系统的…

利用ffmpeg源码安装+vscode开发环境搭建详解

前言&#xff1a; 大家好&#xff0c;今天给大家分享一篇ffmpeg开发环境的搭建&#xff0c;我在很早之前也给搭建过ffmpeg源码的安装&#xff0c;但是并没有给大家去搭建开发环境&#xff0c;而且当时的版本也比较老&#xff0c;很多细节问题没有给大家展示如何解决&#xff01…

win11破解以开启多用户同时登陆

1、简述 背景就是有一台电脑&#xff0c;windows11的专业版&#xff0c;上面有一套软件&#xff0c;但是这台电脑还有人需要用。电脑配置还不错&#xff0c;所以就想在创建一个账户&#xff0c;让需要用那套软件的人远程登陆使用。 步骤还不少&#xff0c;有一丢丢啰嗦。 2、首…

IP-GUARD如何通过设备管控策略单独禁用或启用笔记本插SD卡?

sd卡可以通过外置读卡器或者笔记本自带的sd卡槽进行插入使用,我们可以通过设备控制策略禁止sd插入的设备来实现控制; 在控制台-策略-设备控制: 动作:禁止/允许 设备描述:读卡器的设备描述(查看方法参考问题 2 ) 读卡器的描述信息可以在控制面板-设备管理中,usb相关的设…

springcloud-openFeign简单梳理

OpenFeign openFeign是springcloud中&#xff0c;服务间进行调用的常用方式。了解它&#xff0c;可以更好的处理服务间调用问题。 EnableFeignClients Retention(RetentionPolicy.RUNTIME) Target(ElementType.TYPE) Documented Import(FeignClientsRegistrar.class) public …

LTC6268-10 4GHz 超低偏置电流 FET 输入运算放大器

LTC6268-10是一个运算放大器 具有低输入偏置电流和低输入电容。它还具有低输入参考电流噪声和电压噪声。这使得它成为高速跨组放大器和高阻抗传感器放大电路的理想选择。其为去补偿型运放&#xff0c;具有数值为 10 的稳定增益。 该器件工作在 3.1V 至 5.25V 电源&#xff0c;每…

Android View的坐标获取详解以及动画坐标分析

1、介绍 在平面图形中&#xff0c;图形都是由点坐标确定的。同样&#xff0c;Android的设备屏幕也是一个&#xff0c;如果非3D图形&#xff0c;正常的view就是一个二维坐标 参考View屏幕的左上角的坐标A(0,0),如果屏幕的宽为:width,高&#xff1a;height 那么右下角的坐标是D(…

【C/C++】使用C++和Direct3D (d3d)获取屏幕截图并根据传入分辨率进行缩放图片大小

目录 一&#xff0c;函数清单 1.Direct3DCreate9 函数 2.IDirect3D9::CreateDevice 方法 3.IDirect3DDevice9::GetDisplayMode 方法 4.IDirect3DDevice9::CreateOffscreenPlainSurface 方法 5.IDirect3DDevice9::GetFrontBufferData 方法 6.IDirect3DDevice9::D3DXLoadS…

Zookeeper工作原理

一 Zookeeper是什么 ZooKeeper是一个分布式的&#xff0c;开放源码的分布式应用程序协调服务&#xff0c;是Google的Chubby一个开源的实现&#xff0c;它是集群的管理者&#xff0c;监视着集群中各个节点的状态根据节点提交的反馈进行下一步合理操作。最终&#xff0c;将简单易…

【Spring】我抄袭了Spring,手写一套MySpring框架。。。

这篇博客实现了一个简单版本的Spring&#xff0c;主要包括Spring的Ioc和Aop功能 文章目录这篇博客实现了一个简单版本的Spring&#xff0c;主要包括Spring的Ioc和Aop功能&#x1f680;ComponentScan注解✈️Component注解&#x1f681;在spring中ioc容器的类是ApplicationConte…

迅为4412开发板Qt 界面切换

本节通过实验介绍通过创建窗口对象的方式实现界面切换&#xff1a; 步骤一&#xff1a; 在主界面 ui 文件添加 pushButton 按钮&#xff0c; 然后新建一个窗口&#xff0c;工程下创建新的 Qt 设计师界面类&#xff0c;如图 &#xff1a; 我们选择 Widget&#xff0c;用户可以根…

logstash+elasticsearch+Kibana(ELK)日志收集

文章目录一.安装elasticsearch二. 安装kibana三.配置logstash四.springboot整合logstash五.spring整合Elastic Search六. 定时清理不要一股脑执行以下语句,请观察修改要修改的地方 注意给logstash,elasticsearch,kibana释放端口,云服务器提供商和系统的端口 一.安装elasticsea…

为什么许多人吐槽C++11,那些语法值得我们学习呢?

致前行的人&#xff1a; 人生像攀登一座山&#xff0c;而找寻出路&#xff0c;却是一种学习的过程&#xff0c;我们应当在这过程中&#xff0c;学习稳定冷静&#xff0c;学习如何从慌乱中找到生机。 目录 1.C11简介 2.统一的列表初始化 2.1 &#xff5b;&#xff5d;初始化 …

linux-php 7.3.2安装

1.下载php wget http://am1.php.net/distributions/php-7.3.2.tar.gz 2.解压 tar -zxvf php-7.3.2.tar.gz 3.安装扩展 接下来进行参数配置&#xff0c;配置前如果没有libxml2和libxml2-devel会报错&#xff0c;所以应该更新libxml2并安装libxml2-devel&#xff0c;使用在线…

SpringBoot 项目整合 Redis 教程详解

✅作者简介&#xff1a;2022年博客新星 第八。热爱国学的Java后端开发者&#xff0c;修心和技术同步精进。 &#x1f34e;个人主页&#xff1a;Java Fans的博客 &#x1f34a;个人信条&#xff1a;不迁怒&#xff0c;不贰过。小知识&#xff0c;大智慧。 &#x1f49e;当前专栏…

Android Init(后期还会更加完善)

代码分析基于android-12.0.0_r28 前期阶段 kernel/init/main.c&#xff1a; static int __ref kernel_init(void *unused) {// ...省略一堆代码if (execute_command) {ret run_init_process(execute_command);if (!ret)return 0;panic("Requested init %s failed (err…

八百字讲清楚——BCEWithLogitsLoss二分类损失函数

BCEWithLogitsLoss是一种用于二分类问题的损失函数&#xff0c;它将Sigmoid函数和二元交叉熵损失结合在一起。 假设我们有一个大小为NNN的二分类问题&#xff0c;其中每个样本xix_ixi​有一个二元标签yi∈0,1y_i\in {0,1}yi​∈0,1&#xff0c;并且我们希望预测每个样本的概率…