scala学习手册

1. case class学习

样例类模式匹配

1.1 样例类(case class)适合用于不可变的数据。它是一种特殊的类,能够被优化以用于模式匹配。

case class MetaData(userId: String)case class Book(name: String) {def printBookName(): Unit = {println(name)}
}object BookTest {def main(args: Array[String]): Unit = {val book = Book("Java入门到放弃")book.printBookName()}
}

在实例化case class类时,不需要使用关键字New,case class类编译成class文件之后会自动生成apply方法,这个方法负责对象的创建。

1.2 模式匹配

一个模式匹配语句包括一个待匹配的值,match关键字,以及至少一个case语句。示例如下:

def matchTest(x: Int): String = x match {case 1 => "one"case 2 => "two"case _ => "many"}

1.3 case class的匹配

abstract class Notification # 抽象类,虚基类,父类case class Email(sender: String, title: String, body: String) extends Notification
case class SMS(caller: String, message: String) extends Notification
case class VoiceRecording(contactName: String, link: String) extends Notification

Notification 是一个虚基类,它有三个具体的子类Email, SMS和VoiceRecording,我们可以在这些Case Class类上使用模式匹配:

def showNotification(notification: Notification): String = {notification match {case Email(email, title, _) =>s"You got an email from $email with title: $title"case SMS(number, message) =>s"You got an SMS from $number! Message: $message"case VoiceRecording(name, link) =>s"you received a Voice Recording from $name! Link: $link"}
}val someSms = SMS("12345", "Are you there?")
val someVoiceRecording = VoiceRecording("Tom", "voicerecording.org/id/123")println(showNotification(someSms))  // prints You got an SMS from 12345! Message: Are you there?
println(showNotification(someVoiceRecording))  // you received a Voice Recording from Tom! Click the link to hear it: voicerecording.org/id/123

2. 类转json

scala自带的Json解析工具,简单使用,参考Scala json字符串和json对象互相转换

import org.json4s.jackson.{JsonMethods, Serialization}case class User(name: String, age: Int)object Json4STest {def main(args: Array[String]): Unit = {//数据格式:user:{"name": "zs","age": 10}val json = "{\"name\": \"zs\",\"age\": 10}"//导隐式函数implicit val f = org.json4s.DefaultFormats/** ************************* json字符串->对象 ***************************************/val user: User = JsonMethods.parse(json).extract[User]println(user)/** ************************* 对象->json字符串 ***************************************/val userJStr: String = Serialization.write(user)println(userJStr)}
}

3. Array 和 List

val listTest = List(1,2,3,4)val arrayTest = Array(1, 2, 3, 4) //正确
for (i <- arrayTest.indices){println(arrayTest(i))
}scala> 1 until 10 by 3
res17: scala.collection.immutable.Range = Range(1, 4, 7)scala> 1 to 10 by 3
res18: scala.collection.immutable.Range = Range(1, 4, 7, 10)scala> arrayTest.indices
res19: scala.collection.immutable.Range = Range(0, 1, 2, 3)

4. Scala常用函数式编程

4.1 map

  • map方法可以将某个函数应用到集合中的每个元素并产出其结果的集合,比如
scala> val names = List("a", "b", "c")
names: List[String] = List(a, b, c)scala> names.map(_.toUpperCase)
res1: List[String] = List(A, B, C)

4.2 foreach

  • foreach和map相似,只不过它没有返回值,foreach只要是为了对参数进行作用。
scala> names.foreach{name => println(name)}
a
b
c

4.3 flatten

  • flatten可以把嵌套的结构展开.
scala> List(List(1,2), List(3,4)).flatten
res3: List[Int] = List(1, 2, 3, 4)

4.4 flatmap

  • flatMap结合了map和flatten的功能。接收一个可以处理嵌套列表的函数,然后把返回结果连接起来。
scala> List(List(1,2), List(3,4)).flatMap(x => x.map(x => x *2))
res4: List[Int] = List(2, 4, 6, 8)

4.5 filter

  • 滤除掉使函数返回false的元素
scala> def isEven(i:Int):Boolean = i %2 == 0
isEven: (i: Int)Booleanscala> List(1,2,3,4,5,6).filter(isEven _)
res5: List[Int] = List(2, 4, 6)

4.6 zip

  • zip方法将两个集合结合在一起
scala> List("a","b", "c").zip(List(1,2,3))
res6: List[(String, Int)] = List((a,1), (b,2), (c,3))		

4.7 zipWithIndex

  • 将元素和下标结合在一起
scala> List(2,3,4,5).zipWithIndex
res8: List[(Int, Int)] = List((2,0), (3,1), (4,2), (5,3))

4.8 sort

函数学习

  • 在scala集合中,可以使用以下几种方式来进行排序
    • sorted默认排序
    • sortBy指定字段排序
    • sortWith自定义排序
//定义一个List集合
scala> val list=List(5,1,2,4,3)
list: List[Int] = List(5, 1, 2, 4, 3)//默认就是升序
scala> list.sorted
res25: List[Int] = List(1, 2, 3, 4, 5)
//定义一个List集合
scala> val list=List("1 hadoop","2 spark","3 flink")
list: List[String] = List(1 hadoop, 2 spark, 3 flink)//按照单词的首字母进行排序
scala> list.sortBy(x=>x.split(" ")(1))
res33: List[String] = List(3 flink, 1 hadoop, 2 spark)
scala> val list = List(2,3,1,6,4,5)
a: List[Int] = List(2, 3, 1, 6, 4, 5)//降序
scala> list.sortWith((x,y)=>x>y)
res35: List[Int] = List(6, 5, 4, 3, 2, 1)//升序
scala> list.sortWith((x,y)=>x<y)
res36: List[Int] = List(1, 2, 3, 4, 5, 6)

4.9 分组 - groupBy

scala> val a = List("张三"->"男", "李四"->"女", "王五"->"男")
a: List[(String, String)] = List((张三,), (李四,), (王五,))// 按照性别分组
scala> a.groupBy(_._2)
res0: scala.collection.immutable.Map[String,List[(String, String)]] = Map(-> List((张三,), (王五,)),-> List((李四,)))// 将分组后的映射转换为性别/人数元组列表
scala> res0.map(x => x._1 -> x._2.size)
res3: scala.collection.immutable.Map[String,Int] = Map(-> 2,-> 1)

4.10 聚合 - reduce

  • reduce表示将列表,传入一个函数进行聚合计算
scala> val a = List(1,2,3,4,5,6,7,8,9,10)
a: List[Int] = List(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)scala> a.reduce((x,y) => x + y)
res5: Int = 55// 第一个下划线表示第一个参数,就是历史的聚合数据结果
// 第二个下划线表示第二个参数,就是当前要聚合的数据元素
scala> a.reduce(_ + _)
res53: Int = 55// 与reduce一样,从左往右计算
scala> a.reduceLeft(_ + _)
res0: Int = 55// 从右往左聚合计算
scala> a.reduceRight(_ + _)
res1: Int = 55

4.11 折叠 - fold

  • fold与reduce很像,但是多了一个指定初始值参数
//定义一个List集合
scala> val a = List(1,2,3,4,5,6,7,8,9,10)
a: List[Int] = List(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)//求和
scala> a.sum
res41: Int = 55//给定一个初始值,,折叠求和
scala> a.fold(0)(_+_)
res42: Int = 55scala> a.fold(10)(_+_)
res43: Int = 65//从左往右
scala> a.foldLeft(10)(_+_)
res44: Int = 65//从右往左
scala> a.foldRight(10)(_+_)
res45: Int = 65//fold和foldLet效果一致,表示从左往右计算
//foldRight表示从右往左计算

4.12 高阶函数

  • 使用函数值作为参数,或者返回值为函数值的“函数”和“方法”,均称之为“高阶函数”

4.12.1 函数值作为参数

//定义一个数组
scala> val array=Array(1,2,3,4,5)
array: Array[Int] = Array(1, 2, 3, 4, 5)//定义一个函数
scala> val func=(x:Int)=>x*10
func: Int => Int = <function1>//函数作为参数传递到方法中
scala> array.map(func)
res0: Array[Int] = Array(10, 20, 30, 40, 50)

4.12.2 匿名函数

//定义一个数组
scala> val array=Array(1,2,3,4,5)
array: Array[Int] = Array(1, 2, 3, 4, 5)//定义一个没有名称的函数----匿名函数
scala> array.map(x=>x*10)
res1: Array[Int] = Array(10, 20, 30, 40, 50)

5. spark程序

5.1 创建sparkSession

val spark = SparkSession
.builder()
.master("local")
.appName("test")
.config("spark.sql.execution.arrow.enabled", "true")
.getOrCreate()spark.sql("select 1 as num").show()
  • master: 设置运行方式:local代表本机单核运行,**local[4]代表在本机用4核跑,spark://master:7077**是以standalone方式运行;
  • appName: 设置spark程序的名字,可以在web UI界面看到;
  • config: 附加配置项;
  • getOrCreate: 创建一个SparkSession。

5.2 读取和保存本地excel文件

<!--excel依赖-->
<dependency><groupId>com.crealytics</groupId><artifactId>spark-excel_2.11</artifactId><version>0.13.1</version>
</dependency>

fake_data.xlsx

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iJMKgw32-1689610033377)(C:\Users\86183\AppData\Roaming\Typora\typora-user-images\image-20230109233201179.png)]

读excel,字段取值都是string类型

val dataPath = "C:\\Users\\86183\\Desktop\\教程\\fake_data.xlsx"
//读excel
val df = spark.read.format("com.crealytics.spark.excel")
.option("header", "true").load(dataPath)df.show(false)println(df.dtypes.mkString("Array(", ", ", ")"))val saveDataPath = "C:\\Users\\86183\\Desktop\\教程\\fake_data_1.xlsx"
//写excel
df.coalesce(1).write
.format("com.crealytics.spark.excel")
.option("dataAddress", "A1")
.option("header", "true")
.mode("overwrite")
.save(saveDataPath)

5.3 dataFrame注册hive表

df.createTempView("temp_table")
val sqlString =
"""
|select
|*
|from temp_table
|""".stripMarginspark.sql(sqlString).show(false)

5.4 聚合函数groupBy用法

5.4.1 基础用法

import org.apache.spark.sql.SparkSession
import org.apache.spark.sql.functions._object GroupbyExample extends App {val spark: SparkSession = SparkSession.builder().master("local[1]").appName("SparkByExamples.com").getOrCreate()spark.sparkContext.setLogLevel("ERROR")import spark.implicits._val simpleData = Seq(("James","Sales","NY",90000,34,10000),("Michael","Sales","NY",86000,56,20000),("Robert","Sales","CA",81000,30,23000),("Maria","Finance","CA",90000,24,23000),("Raman","Finance","CA",99000,40,24000),("Scott","Finance","NY",83000,36,19000),("Jen","Finance","NY",79000,53,15000),("Jeff","Marketing","CA",80000,25,18000),("Kumar","Marketing","NY",91000,50,21000))val df = simpleData.toDF("employee_name","department","state","salary","age","bonus")df.show()//Group By on single columndf.groupBy("department").count().show(false)df.groupBy("department").avg("salary").show(false)df.groupBy("department").sum("salary").show(false)df.groupBy("department").min("salary").show(false)df.groupBy("department").max("salary").show(false)df.groupBy("department").mean("salary").show(false)//GroupBy on multiple columnsdf.groupBy("department","state").sum("salary","bonus").show(false)df.groupBy("department","state").avg("salary","bonus").show(false)df.groupBy("department","state").max("salary","bonus").show(false)df.groupBy("department","state").min("salary","bonus").show(false)df.groupBy("department","state").mean("salary","bonus").show(false)//Running Filterdf.groupBy("department","state").sum("salary","bonus").show(false)//using agg functiondf.groupBy("department").agg(sum("salary").as("sum_salary"),avg("salary").as("avg_salary"),sum("bonus").as("sum_bonus"),max("bonus").as("max_bonus")).show(false)df.groupBy("department").agg(sum("salary").as("sum_salary"),avg("salary").as("avg_salary"),sum("bonus").as("sum_bonus"),stddev("bonus").as("stddev_bonus")).where(col("sum_bonus") > 50000).show(false)
}
# 使用多个聚合函数前,先导入相关的包 "import org.apache.spark.sql.functions._"
import org.apache.spark.sql.functions._
df
.groupBy("first_class_id")
.agg(count("first_class_id").as("count_first_class_id"),sum("exposure_cnt").as("sum_exposure_cnt")).show()

选择多列

val groupByList = Array("item_id", "first_class_id")
# : _* 表示讲列名传入select
df.select(groupByList.map(col): _*).show
df.groupBy(groupByList.map(col): _*).agg(sum("exposure_cnt").as("sum_exposure_cnt")).show()# agg方法
var map = scala.collection.immutable.Map.empty[String, String]
for (func <- aggFunc) {for (colName <- calculateCol) {map += (colName -> func)}
}
df.groupBy(groupByList.map(col): _*).agg(map).show(false)

Spark 指南:Spark SQL(二)—— 结构化操作

Spark中选取DataFrame多列的三种方式

SparkSQL 高级篇(一) 聚合操作

Spark:group by和聚合函数使用

【Saprk】Spark DataFrame 列的类型转换

Spark 指南:Spark SQL(三)—— 结构化类型

Explain different ways of groupBy() in spark SQL

Spark读取本地文件和HDFS文件

spark读取excel成dataframe的几种方式

package com.huawei.rcm.studyabstract class Notificationcase class Email(sender: String, title: String, body: String) extends Notificationcase class SMS(caller: String, message: String) extends Notificationcase class VoiceRecording(contactName: String, link: String) extends Notificationobject demo {def matchTest(x: Int): String = x match {case 1 => "one"case 2 => "two"case _ => "many"}def showNotification(notification: Notification): String = {notification match {case Email(email, title, _) =>s"You got an email from $email with title: $title"case SMS(number, message) =>s"You got an SMS from $number! Message: $message"case VoiceRecording(name, link) =>s"you received a Voice Recording from $name! Link: $link"}}def main(args: Array[String]): Unit = {val someSms = SMS("12345", "Are you there?")val someVoiceRecording = VoiceRecording("Tom", "voicerecording.org/id/123")println(showNotification(someSms)) // prints You got an SMS from 12345! Message: Are you there?println(showNotification(someVoiceRecording)) // you received a Voice Recording from Tom! Click the link to hear it: voicerecording.org/id/123println(matchTest(1))}
}import org.apache.spark.sql.SparkSession
import org.json4s.jackson.{JsonMethods, Serialization}case class User(name: String, age: Int)object Json4STest {def main(args: Array[String]): Unit = {//数据格式:user:{"name": "zs","age": 10}val json = "{\"name\": \"zs\",\"age\": 10}"//导隐式函数implicit val f = org.json4s.DefaultFormats/** ************************* json字符串->对象 ************************************** */val user: User = JsonMethods.parse(json).extract[User]println(user)/** ************************* 对象->json字符串 ************************************** */val userJStr: String = Serialization.write(user)println(userJStr)val strings = new Array[String](3)val arrayTest = Array(1, 2, 3, 4) //正确val listTest = List(1, 2, 3, 4)for (i <- listTest.indices) {println(listTest(i))}// sort//    val list=List(5,1,2,4,3)//    list.sortedval list = List("1 hadoop", "2 spark", "3 flink")list.sortBy(x => x.split(" ")(1))// groupBy//    arrayTest.map()//    val a = List("张三"->"男", "李四"->"女", "王五"->"男")//    a.groupBy(x=>x._2)//    arrayTest.groupBy()//    arrayTest.sorted//    val a = List(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)//    a.reduce((x, y) => x + y)//    a.reduceLeft(_+_)val a = List(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)a.fold(0)(_ + _)val spark = SparkSession.builder().master("local").appName("test").config("spark.sql.execution.arrow.enabled", "true").getOrCreate()spark.sql("select 1 as num").show()val dataPath = "C:\\Users\\86183\\Desktop\\教程\\fake_data.xlsx"//读excelval df = spark.read.format("com.crealytics.spark.excel").option("header", "true").load(dataPath)df.show(false)println(df.dtypes.mkString("Array(", ", ", ")"))val saveDataPath = "C:\\Users\\86183\\Desktop\\教程\\fake_data_1.xlsx"//写exceldf.coalesce(1).write.format("com.crealytics.spark.excel").option("dataAddress", "A1").option("header", "true").mode("overwrite").save(saveDataPath)df.createTempView("temp_table")val sqlString ="""|select|*|from temp_table|""".stripMarginspark.sql(sqlString).show(false)import org.apache.spark.sql.functions._df.groupBy("first_class_id").agg(count("first_class_id").as("count_first_class_id"), sum("exposure_cnt").as("sum_exposure_cnt")).show()val groupByList = Array("item_id", "first_class_id")val aggFunc = Array("avg", "max")val calculateCol = Array("ctr", "exposure_cnt")//    val columns = df.columnsimport org.apache.spark.sql.{Column, DataFrame}import org.apache.spark.sql.functions.colval columns: Array[String] = df.columnsval arrayColumn: Array[Column] = columns.map(column => col(column))val df2: DataFrame = df.select(arrayColumn: _*)df.select(groupByList.map(col): _*).showdf.groupBy(groupByList.map(col): _*).agg(sum("exposure_cnt").as("sum_exposure_cnt")).show()df.groupBy(groupByList.map(col): _*).count().show()var map = scala.collection.immutable.Map.empty[String, String]for (func <- aggFunc) {for (colName <- calculateCol) {map += (colName -> func)}}df.groupBy(groupByList.map(col): _*).agg(map).show(false)}
}

6. spark ML之特征处理

spark ML之特征处理

1、VectorIndexer

根据源码注释,VectorIndexer是用于在“向量”的数据集中索引分类特征列的类(Class for indexing categorical feature columns in a dataset of Vector),这看起来不太好理解,直接看用法,举例说明就好了。

1.1 数据

我们用普通的数据格式即可:

data1.txt

1,-1.0 1.0
0,0.0 3.0
1,-1.0 5.0
0,0.0 1.0

其中第一列为label,后面的为features

spark读取数据程序(供参考):

import spark.implicits._
val data_path = "files/ml/featureprocessing/data1.txt"
val data = spark.read.text(data_path).map {case Row(line: String) =>var arr = line.split(',')(arr(0), Vectors.dense(arr(1).split(' ').map(_.toDouble)))
}.toDF("label", "features")
data.show(false)

7. Spark运行日志去除——log4j.properties

log4j.rootLogger=ERROR,stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d %p [%-20c] - %m%n
log4j.appender.logfile=org.apache.log4j.FileAppender
log4j.appender.logfile.File=target/spring.log
log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
log4j.appender.logfile.layout.ConversionPattern=%d %p [%c] - %m%n

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-h5tlIh8Q-1689610033378)(C:\Users\86183\AppData\Roaming\Typora\typora-user-images\image-20230115211719071.png)]
spark.read.text(data_path).map {
case Row(line: String) =>
var arr = line.split(‘,’)
(arr(0), Vectors.dense(arr(1).split(’ ').map(_.toDouble)))
}.toDF(“label”, “features”)
data.show(false)


# 7. Spark运行日志去除——log4j.properties```properties
log4j.rootLogger=ERROR,stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d %p [%-20c] - %m%n
log4j.appender.logfile=org.apache.log4j.FileAppender
log4j.appender.logfile.File=target/spring.log
log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
log4j.appender.logfile.layout.ConversionPattern=%d %p [%c] - %m%n

image-20230115211719071

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

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

相关文章

跨网络的通信过程、路由的作用以及默认网关

如下网络拓扑图&#xff0c;交换机0所在的网段为192.168.1.0/24&#xff0c;交换机1所在网段为192.168.2.0/24&#xff0c;且各自有2台主机&#xff1a; 假设PC0&#xff08;192.168.1.10/32&#xff09;要跟PC4&#xff08;192.168.2.11/32&#xff09;通信&#xff0c;如何实…

函数和控制流

专栏简介&#xff1a;本专栏作为Rust语言的入门级的文章&#xff0c;目的是为了分享关于Rust语言的编程技巧和知识。对于Rust语言&#xff0c;虽然历史没有C、和python历史悠远&#xff0c;但是它的优点可以说是非常的多&#xff0c;既继承了C运行速度&#xff0c;还拥有了Java…

Simulink仿真模块 - Data Store Read

Data Store Read:从数据存储中读取数据 在仿真库中的位置为:Simulink / Signal Routing 模型为: 说明 Data Store Read 模块将指定数据存储中的数据复制到其输出中。多个 Data Store Read 模块可从同一个数据存储读取数据。 用来读取数据的源数据存储由 Data Store Memory 模…

vue+element-ui通用后台管理系统(适合新手)

vueelement-ui通用后台管理系统&#xff08;适合新手&#xff09; 1、使用到的技术 使用vue2element-uiaxiosjs-cookielessecharts实现的一个简易的通用后台管理系统&#xff0c;具有很强的可扩展性&#xff0c;修改简单&#xff0c;只要有点前端基础就能看懂&#xff1b; 2…

怎么学习Java数据库连接(JDBC)? - 易智编译EaseEditing

学习Java数据库连接&#xff08;JDBC&#xff09;是掌握Java与数据库交互的关键步骤。以下是学习Java JDBC的一些建议&#xff1a; 先掌握Java基础&#xff1a; 在学习JDBC之前&#xff0c;确保你已经掌握了Java的基本语法、面向对象编程和其他核心概念。这将有助于更好地理解…

Spring、SpringBoot、SpringCloud、SpringCloud Alibaba、Elasticsearch版本对应,附下载地址

1、GitHub Alibaba 发布SpringCloud Alibaba和SpringCloud 、SpringBoot版本 Spring Cloud Alibaba VersionSpring Cloud VersionSpring Boot2022.0.0.0-RC2Spring Cloud 2022.0.03.02022.0.0.0-RC1Spring Cloud 2022.0.03.0.02021.0.5.0*Spring Cloud 2021.0.52.6.132021.0.4…

基于FPGA的softmax函数优化及实现

文章目录 前言优化方案测试数据产生及Matlab结果处理流程工程说明功耗与面积标准softmax函数功耗与面积总结前言 FPGA异构计算是一个趋势,在AI推理、深度学习中广泛使用FPGA进行加速,减小系统延迟。而AI推理中有一个组件被广泛使用,各种网络模型中都有其身影,那就是激活函…

Ceph 应用

Ceph 应用 一、创建 CephFS 文件系统 MDS 接口 1.服务端操作 1&#xff09;在管理节点创建 mds 服务 cd /etc/ceph ceph-deploy mds create node01 node02 node032&#xff09;查看各个节点的 mds 服务 ssh rootnode01 systemctl status ceph-mdsnode01 ssh rootnode02 syst…

人工智能顶会投稿截止时间汇总

一、NeurIPS 1. 会议名称及等级 Annual Conference on Neural Information Processing Systems&#xff08;CCF-A&#xff09;https://dblp.uni-trier.de/db/conf/nips/index.html 2. 投稿时间及接收率 https://neurips.cc/Conferences/2023/CallForPapers#OpenReview 一般…

【C++修炼之路】内存管理

&#x1f451;作者主页&#xff1a;安 度 因 &#x1f3e0;学习社区&#xff1a;StackFrame &#x1f4d6;专栏链接&#xff1a;C修炼之路 文章目录 一、C/C 内存分布二、考题三、C语言动态内存管理方式四、C内存管理方式1、对内置类型2、对自定义类型 五、C对动态管理的升级六…

Html基础知识学习——圣杯布局、margin负值、等高布局(十七)

文章目录 圣杯布局margin负值等高布局 圣杯布局 两边页面固定中间页面宽度随着浏览器大小自适应 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-widt…

mmdetection3.1.0 训练自己的数据集

目录 前言安装mmcv安装mmdetection验证安装数据集转为COCO划分训练集、验证集及测试集安装PaddlePaddle安装PaddleX划分数据集 修改对应文件修改coco.py重新安装修改模型文件 训练测试测试带真值的图像测试不带真值的图像批量测试 错误集锦ValueError: need at least one array…

Kafka

1.定义 Kafka&#xff1a;一个分布式基于发布/订阅模式的消息队列。 发布者发布消息进入队列后&#xff0c;每个订阅者都能在一定时间内获取发布的消息&#xff08;Kafka&#xff1a;消费者通过主动拉取pull队列&#xff09;。 缺点&#xff1a;即使没有消息&#xff0c;消费者…

如何解决VScode远程下载插件不了的问题?如何手动安装插件?

当我们在使用VScode进行远程操作时&#xff0c;在安装我们所需要的一些插件时&#xff0c;可能会出现如下图&#xff0c;一直卡在安装中....明明只有小几十MB&#xff0c;却一连好几个小时都一动不动。像这种情况&#xff0c;就需要我们进行手动安装该插件。 插件网站&#xff…

在云计算环境中,保护Java应用程序可用的有效措施和工具

云计算&#xff08;Cloud&#xff09;技术是近年来计算机科学的一个重要突破。大多数组织已经通过将自己的应用程序移入云平台而获益。不过&#xff0c;如何保证应用程序在第三方服务器上的安全性&#xff0c;是一项艰巨的挑战。 在本文中&#xff0c;我们将重点讨论Java&…

一文带你了解Spring中存入Bean和获取Bean的方式

0. Spring中的五大注解 上图中就是五大类注解对应的层&#xff0c;通过源码可以看到其他四个注解都基于Conponent 1. 存入 Bean Spring既然是一个包含众多工具方法的IoC容器&#xff0c;它是一个控制反转的容器&#xff0c;所以就需要将Bean对象存入到容器中&#xff0c;需要…

使用Jenkins自由风格的软件项目实现接口自动化测试持续集成

这里写目录标题 一、JOB项目配置1、添加描述2、限制项目的运行节点3、源码管理4、构建触发器5、构建步骤6、构建后操作 一、JOB项目配置 1、添加描述 可选选项可填可不填 2、限制项目的运行节点 节点中要有运行环境所需的配置 节点配置教程&#xff1a;https://blog.csdn…

回归预测 | MATLAB实现基于SVM-Adaboost支持向量机结合AdaBoost多输入单输出回归预测

回归预测 | MATLAB实现基于SVM-Adaboost支持向量机结合AdaBoost多输入单输出回归预测 目录 回归预测 | MATLAB实现基于SVM-Adaboost支持向量机结合AdaBoost多输入单输出回归预测预测效果基本介绍模型描述程序设计参考资料 预测效果 基本介绍 1.MATLAB实现基于SVM-Adaboost支持向…

Spring初识(一)

一.Spring 是什么&#xff1f; 首先我们来看看官网的解释 Spring 使每个人都可以更快、更轻松、更安全地进行 Java 编程。Spring 对速度、简单性和生产力的关注使其成为 世界上最受欢迎的 Java框架。 这里我简单的说明一下什么是spring? 我们通常所说的 Spring 指的是 Sprin…

[JavaScript游戏开发] 2D二维地图绘制、人物移动、障碍检测

系列文章目录 第一章 2D二维地图绘制、人物移动、障碍检测 第二章 跟随人物二维动态地图绘制、自动寻径、小地图显示(人物红点显示) 文章目录 系列文章目录前言一、列计划1.1、目标1.2、步骤 二、使用步骤2.1、准备素材(图片)&#xff1a;草坪、人物(熊猫)、障碍(石头)2.2、初…