Scala第九章节
Scala第九章节
scala总目录
章节目标
- 理解包的相关内容
- 掌握样例类, 样例对象的使用
- 掌握计算器案例
1. 包
实际开发中, 我们肯定会遇到同名的类, 例如: 两个Person类. 那在不改变类名的情况下, 如何区分它们呢?
这就要使用到包(package)
了.
1.1 简介
包就是文件夹, 用关键字package
修饰, 它可以区分重名类, 且功能相似的代码可以放到同一个包中, 便于我们维护和管理代码.
注意:
编写Scala源代码时, 包名和源码所在的目录结构可以不一致.
编译后, 字节码文件和包名路径会保持一致(由编译器自动完成).
包名由数字, 大小写英文字母, _(下划线), $(美元符)组成, 多级包之间用.隔开, 一般是公司域名反写.
例如: com.itheima.demo01, cn.itcast.demo02
1.2 格式
-
格式一: 文件顶部标记法, 合并版
package 包名1.包名2.包名3 //根据实际需求, 可以写多级包名 //这里可以写类, 特质...
-
格式二: 文件顶部标记法, 分解版
package 包名1.包名2 package 包名3 //这种写法和 //这里可以写类, 特质...
-
格式三: 串联式包语句
package 包名1.包名2 {//包名1的内容在这里不可见package 包名3 {//这里可以写类, 特质...} }
注意: 上述这种写法, 建议包名嵌套不要超过3级.
参考代码
//案例: 演示包的3种写法 //格式一: 文件顶部标记法, 合并版. /*package com.itheima.scala class Person*///格式二: 文件顶部标记法, 分解版. /*package com.itheima package scala class Person*///格式三: 串联式包语句 package cn { //嵌套不建议超过3层.package itcast {package scala {class Person{}}} }//测试类 object ClassDemo01 {//main方法是程序的主入口, 所有的代码都是从这里开始执行的.def main(args: Array[String]): Unit = {val p = new cn.itcast.scala.Person()println(p)} }
1.3 作用域
Scala中的包和其它作用域一样, 也是支持嵌套的, 具体的访问规则(作用域)如下:
-
下层可以直接访问上层中的内容.
即: 在Scala中, 子包可以直接访问父包中的内容
-
上层访问下层内容时, 可以通过
导包(import)或者写全包名
的形式实现. -
如果上下层有相同的类, 使用时将采用就近原则来访问.
即: 上下层的类重名时,优先使用下层的类, 如果明确需要访问上层的类,可通过上层路径+类名的形式实现
需求
- 创建com.itheima包, 并在其中定义Person类, Teacher类, 及子包scala.
- 在com.itheima.scala包中定义Person类, Student类.
- 在测试类中测试.
参考代码
//案例: 演示包的作用域
package com.itheima{ //父包class Person{} //这是com.itheima包中的Person类class Teacher{} //这是com.itheima包中的Teacher类object ClassDemo01 { //父包中的测试类def main(args: Array[String]): Unit = {//方式一: 导包, 导包语句可以出现在Scala代码中的任意位置, 不一定是行首./*import com.itheima.scala.Student val s = new Student() //父包访问子包的类, 需要导包.println(s)*///方式二: 全包名val s = new com.itheima.scala.Student()//因为当前包就是com.itheima, 所以上述代码可以简写成如下格式//val s = new scala.Student()println(s)}}package scala{ //子包class Person{} //这是com.itheima.scala包中的Person类class Student{} //这是com.itheima.scala包中的Student类object ClassDemo02 { //子包中的测试类.def main(args: Array[String]): Unit = {val t = new Teacher() //子包可以直接访问父包中的内容.println(t)val p = new Person() //子父包有同名类时, 采用就近原则来访问.println(p)val p2 = new com.itheima.Person() //子父包有同名类, 且想访问父包类时, 写全路径即可.println(p2)}}}
}
1.4 包对象
包中可以定义子包, 也可以定义类或者特质, 但是Scala中不允许直接在包中定义变量或者方法, 这是因为JVM的局限性导致的, 要想解决此问题, 就需要用到包对象
了.
1.4.1 概述
在Scala中, 每个包都有一个包对象
, 包对象的名字和包名必须一致, 且它们之间是平级关系, 不能嵌套定义.
注意:
- 包对象也要定义到父包中, 这样才能实现
包对象和包
的平级关系.- 包对象一般用于对
包的功能进行补充, 增强等
1.4.2 格式
package 包名1 { //父包package 包名2 { //子包}package object 包名2 { //包名2的包对象}
}
1.4.3 示例
需求
- 定义父包com.itheima, 并在其中定义子包scala.
- 定义scala包的包对象, 并在其中定义变量和方法.
- 在scala包中定义测试类, 并测试.
参考代码
package com.itheima { //父包package scala { //子包//测试类object ClassDemo03{def main(args: Array[String]): Unit = {//访问当前包对象中的内容.println(scala.name)scala.sayHello()}}}package object scala { //scala包的包对象, 和scala包之间是平级关系.//尝试在包中直接定义变量和方法, 发现报错, 我们要用包对象解决.val name = "张三"def sayHello() = println("Hello, Scala!")}
}
1.5 包的可见性
在scala中, 我们也是可以通过访问权限修饰符(private, protected, 默认), 来限定包中一些成员的访问权限的.
格式
访问权限修饰符[包名] //例如: private[com] var name = ""
需求
- 定义父包com.itheima, 并在其中添加Employee类和子包scala.
- 在Employee类中定义两个变量(name, age), 及sayHello()方法.
- 在子包com.itheima.scala中定义测试类, 创建Employee类对象, 并访问其成员.
参考代码
//案例: 演示包的可见性
package com.itheima { //父包class Employee { //父包com.itheima中的Employee类//解释: private表示只能在本类中使用, [itheima]表示只要是在itheima包下的类中, 都可以访问.private[itheima] val name = "张三"//什么都不写, 就是公共权限, 类似于Java中的publicval age = 23//解释: private表示只能在本类中使用, [com]表示只要是在com包下的类中, 都可以访问.private[com] def sayHello() = println("Hello, Scala!")}package scala { //子包object ClassDemo04 { //子包com.itheima.scala中的测试类def main(args: Array[String]): Unit = {//创建Employee类的对象, 访问其中的成员.val e = new Employee()println(e)println(e.name)println(e.age)e.sayHello()}}}
}
1.6 包的引入
1.6.1 概述
在Scala中, 导入包也是通过关键字import
来实现的, 但是Scala中的import功能更加强大, 更加灵活, 它不再局限于编写到scala文件的顶部, 而是可以编写到scala文件中任何你需要用的地方. 且Scala默认引入了java.lang包, scala包及Predef包.
1.6.2 注意事项
-
Scala中并不是完全引入了scala包和Predef包中的所有内容, 它们中的部分内容在使用时依旧需要先导包.
例如: import scala.io.StdIn
-
import语句可以写到scala文件中任何需要用到的地方, 好处是: 缩小import包的作用范围, 从而提高效率.
-
在Scala中, 如果要导入某个包中所有的类和特质, 要通过
_(下划线)
来实现.例如:import scala._ 的意思是, 导入scala包下所有的内容
-
如果仅仅是需要某个包中的某几个类或者特质, 则可以通过
选取器(就是一对大括号)
来实现.例如:import scala.collection.mutable.{HashSet, TreeSet}表示只引入HashSet和TreeSet两个类.
-
如果引入的多个包中含有相同的类, 则可以通过
重命名或者隐藏
的方式解决.-
重命名
的格式import 包名1.包名2.{原始类名=>新类名, 原始类名=>新类名}//例如: import java.util.{HashSet=>JavaHashSet}
-
隐藏
的格式import 包名1.包名2.{原始类名=>_, _}//例如:import java.util.{HashSet=>_, _} 表示引入java.util包下除了HashSet类之外所有的类
-
1.6.3 示例
需求
- 创建测试类, 并在main方法中测试上述的5点注意事项.
- 需求1: 导入java.util.HashSet类.
- 需求2: 导入java.util包下所有的内容.
- 需求3: 只导入java.util包下的ArrayList类和HashSet类
- 需求4: 通过重命名的方式, 解决多个包中类名重复的问题
- 需求5: 导入时, 隐藏某些不需要用到的类, 即: 导入java.util包下除了HasSet和TreeSet之外所有的类.
参考代码
//案例: 演示包的引入
object ClassDemo05 {//测试方法1def test01() = {//1.导入java.util.HashSetimport java.util.HashSet //好处: 缩小import包的作用范围, 从而提高效率.val hs = new HashSet()println(hs.getClass)//2.导入java.util包下所有的内容.import java.util._val hm = new HashMap()println(hm.getClass)val list = new ArrayList()println(list.getClass)}//测试方法2def test02() = {//val hs = new HashSet() //这样写会报错, 因为没有导包.//3.只导入java.util包下的ArrayList类和HashSet类/*import java.util.{ArrayList, HashSet}val list = new ArrayList()val hs = new HashSet()val hm = new HashMap() //这样写会报错, 因为没有导包.*///4.通过重命名的方式, 解决多个包中类名重复的问题/*import java.util.{HashSet => JavaHashSet}import scala.collection.mutable.HashSetval hs = new HashSet()val jhs = new JavaHashSet()println(hs.getClass)println(jhs.getClass)*///5. 导入时, 隐藏某些不需要用到的类.//导入java.util包下除了HasSet和TreeSet之外所有的类import java.util.{HashSet=>_, TreeSet=>_, _}//val hs = new HashSet() //这样写会报错val hm = new HashMap()println(hm.getClass)}//main方法, 程序的入口.def main(args: Array[String]): Unit = {//调用test01()和test02()这两个测试方法.test01()println("-" * 15)test02()}
}
2. 样例类
在Scala中, 样例类是一种特殊类,一般是用于保存数据的(类似于Java POJO类), 在并发编程以及Spark、Flink这些框架中都会经常使用它。
1.1 格式
case class 样例类名([var/val] 成员变量名1:类型1, 成员变量名2:类型2, 成员变量名3:类型3){}
- 如果不写, 则变量的默认修饰符是val, 即: val是可以省略不写的.
- 如果要实现某个成员变量值可以被修改,则需手动添加var来修饰此变量.
1.2 示例
需求
-
定义样例类Person,包含姓名和年龄这两个成员变量.
其中: 姓名用val修饰, 年龄用var修饰
-
在测试类中创建Person类的对象, 并打印它的属性值.
-
尝试修改姓名, 年龄这两个成员变量的值, 并观察结果.
参考代码
//案例: 样例类入门
object ClassDemo01 {//1. 创建一个Person样例类, 属性为: 姓名, 年龄.case class Person(name:String = "张三",var age:Int = 23) {}def main(args: Array[String]): Unit = {//2. 创建Person类型的对象, 然后打印属性值.val p = new Person()println(p)//3. 尝试修改对象p的属性值//p.name = "李四" //这样写会报错, 因为样例类的成员变量默认修饰符是: valp.age = 24println(p)}
}
1.3 样例类中的默认方法
1.3.1 简介
当我们定义一个样例类后,编译器会自动帮助我们生成一些方法, 常用的如下:
- apply()方法
- toString()方法
- equals()方法
- hashCode()方法
- copy()方法
- unapply()方法
1.3.2 功能详解
-
apply()方法
- 可以让我们快速地使用类名来创建对象, 省去了new这个关键字
- 例如:
val p = Person()
-
toString()方法
- 可以让我们通过输出语句打印对象时, 直接打印该对象的各个属性值.
- 例如:
println(p) 打印的是对象p的各个属性值, 而不是它的地址值
-
equals()方法
- 可以让我们直接使用
==
来比较两个样例类对象的所有成员变量值是否相等. - 例如:
p1 == p2 比较的是两个对象的各个属性值是否相等, 而不是比较地址值
- 可以让我们直接使用
-
hashCode()方法
-
用来获取对象的哈希值的. 即: 同一对象哈希值肯定相同, 不同对象哈希值一般不同.
-
例如:
val p1 = new Person("张三", 23) val p2 = new Person("张三", 23) println(p1.hashCode() == p2.hashCode()) //结果为: true
-
-
copy()方法
-
可以用来快速创建一个属性值相同的实例对象,还可以使用带名参数的形式给指定的成员变量赋值.
-
例如:
val p1 = new Person("张三", 23) val p2 = p1.copy(age = 24) println(p1) //结果为: 张三, 23 println(p2) //结果为: 张三, 24
-
-
unapply()方法
- 一般用作
提取器
, 但是它需要一些铺垫知识, 我们暂时还没学到, 在后续章节详细解释.
- 一般用作
1.3.3 示例
需求
- 创建Person样例类, 指定姓名, 年龄.
- 在测试类中创建Person类的对象, 并测试上述的5个方法.
参考代码
//案例: 演示样例类的默认方法.
object ClassDemo02 {//1. 定义一个样例类Person.case class Person(var name:String, var age:Int) {}def main(args: Array[String]): Unit = {//2. 测试样例类中的一些默认方法.val p1 = Person("张三", 23) //免new, 说明支持apply方法println(p1) //直接打印对象输出属性值, 说明支持toString方法val p2 = Person("张三", 23)println(p1 == p2) //比较的是属性值, 说明重写了equals方法println("-" * 15)//记忆: 同一对象哈希值肯定相同, 不同对象哈希值一般不同.println(p1.hashCode()) //可以获取哈希值, 说明重写了hashCode方法println(p2.hashCode())//演示copy方法, 就是用来复制对象的.//需求: 想创建一个张三, 50这样的对象.val p3 = p2.copy(age = 50)println(p3) //结果为: 张三, 50}
}
3. 样例对象
在Scala中, **用case修饰的单例对象就叫: 样例对象, 而且它没有主构造器 **, 它主要用在两个地方:
-
当做枚举值使用.
枚举: 就是一些固定值, 用来统一项目规范的.
-
作为没有任何参数的消息传递
注意: 这点目前先了解即可, 后续讲解Akka并发编程时会详细讲解.
3.1 格式
case object 样例对象名
3.2 示例
需求
- 定义特质Sex, 表示性别, 且它只有两个实例(Male: 表示男, Female: 表示女)
- 定义Person类,它有两个成员变量(姓名、性别)
- 在测试类中创建Person类的对象, 并测试.
参考代码
object ClassDemo03 {//1. 定义一个特质Sex, 表示性别.trait Sex //2. 定义枚举Male, 表示男.case object Male extends Sex //3. 定义枚举Female, 表示女.case object Female extends Sex //4. 定义Person样例类, 属性: 姓名, 性别.case class Person(name:String, sex:Sex) {}def main(args: Array[String]): Unit = {//5. 创建Person类型的对象.val p = Person("张三", Male)//6. 打印属性值.println(p)}
}
4. 案例: 计算器
8.1 需求
- 定义样例类Calculate, 并在其中添加4个方法, 分别用来计算两个整数的
加减乘除
操作. - 在main方法中进行测试.
8.2 目的
- 考察
样例类
的相关内容.
8.3 参考代码
//案例: 计算器.
object ClassDemo04 {//1. 定义样例类Calculate, 添加加减乘除这四个方法.case class Calculate(a:Int, b:Int){//加法def add() = a + b//减法def subtract() = a - b//乘法def multiply() = a * b//除法def divide() = a / b}//main方法, 程序的入口def main(args: Array[String]): Unit = {//2. 测试Calculate类中的加减乘除这四个方法.val cal = Calculate(10, 3)//测试加法println("加法: " + cal.add())//测试减法println("减法: " + cal.subtract())//测试乘法println("乘法: " + cal.multiply())//测试除法println("除法: " + cal.divide())}
}
相关文章:
Scala第九章节
Scala第九章节 scala总目录 章节目标 理解包的相关内容掌握样例类, 样例对象的使用掌握计算器案例 1. 包 实际开发中, 我们肯定会遇到同名的类, 例如: 两个Person类. 那在不改变类名的情况下, 如何区分它们呢? 这就要使用到包(package)了. 1.1 简介 包就是文件夹, 用关…...
arduino - UNO-R3,mega2560-R3,NUCLEO-H723ZG的arduino引脚定义区别
文章目录 arduino - UNO-R3,mega2560-R3,NUCLEO-H723ZG的引脚定义区别概述笔记NUCLEO-H723ZGmega2560-R3UNO-R3经过比对, 这2个板子(NUCLEO-H723ZG, mega2560-R3)都是和UNO-R3的arduino引脚定义一样的.mega2560-r3和NUCLEO-H723ZG的区别补充arduino uno r3的纯数字IO和模拟IO作…...
提取多个txt数据并合成excel——例子:与中国建交的国家
提取多个txt数据并合成excel——例子:与中国建交的国家 一、概要二、整体架构流程三、完整代码 一、概要 这段代码主要执行以下任务: 1. 定义辅助函数:首先,定义了两个辅助函数。has_chinese_chars函数用于检查给定的字符串中是否…...
uni-app:js修改元素样式(宽度、外边距)
效果 代码 1、在<view>元素上添加一个ref属性,用于在JavaScript代码中获取对该元素的引用:<view ref"myView" id"mybox"></view> 2、获取元素引用 :const viewElement this.$refs.myView.$el; 3、修改…...
day36-单元测试
1. 单元测试Junit 1.1 什么是单元测试?(掌握) 对部分代码进行测试。 1.2 Junit的特点?(掌握) 是一个第三方的工具。(把别人写的代码导入项目中)(专业叫法:…...
7、脏话检测
6、片花关联长视频 脏话检测功能本身远不如上一篇介绍的片花关联长视频有技术挑战性,不过还是值得说说,因为这是我们采用技术方式提高工作效率的第一次尝试。 游戏解说是审核难度比较大的一类短视频内容,一方面是时间比较长,很多…...
Godot信号教程(使用C#语言)| 创建自定义信号 | 发出自定义信号 | 使用代码监听信号
文章目录 信号是什么连接信号使用编辑器连接信号使用代码连接信号Lambda 自定义信号声明信号发射信号带参数的信号 其他文章 信号是什么 在Godot游戏引擎中,信号是一种用于对象之间通信的重要机制。它允许一个对象发出信号,而其他对象可以连接到这个信号…...
分布式文件存储系统minio、大文件分片传输
上传大文件 1、Promise对象 Promise 对象代表一个异步操作,有三种状态: pending: 初始状态,不是成功或失败状态。fulfilled: 意味着操作成功完成。rejected: 意味着操作失败。 只有异步操作的结果,可以决定当前是哪一种状态&a…...
在 msys2/mingw 下安装及编译 opencv
最简单就是直接安装 pacman -S mingw-w64-x86_64-opencv 以下记录一下编译的过程 1. 安装编译工具及第三方库 pacman -S --needed base-devel mingw-w64-x86_64-toolchain unzip gccpacman -S python mingw-w64-x86_64-python2 mingw-w64-x86_64-gtk3 mingw-w64-x86_64-…...
java 根据身份证号码判断性别
在Java中,您可以根据身份证号码的规则来判断性别。中国的身份证号码通常采用的是以下规则: 第17位数字代表性别,奇数表示男性,偶数表示女性。 通常,男性的出生日期的第15、16位数字是01,女性是02。 请注意&…...
信息服务上线渗透检测网络安全检查报告和解决方案4(XSS漏洞修复)
系列文章目录 信息服务上线渗透检测网络安全检查报告和解决方案2(安装文件信息泄漏、管理路径泄漏、XSS漏洞、弱口令、逻辑漏洞、终极上传漏洞升级)信息服务上线渗透检测网络安全检查报告和解决方案信息服务上线渗透检测网络安全检查报告和解决方案3(系统漏洞扫描、相对路径覆…...
【SQL】mysql创建定时任务执行存储过程--20230928
1.先设定时区 https://blog.csdn.net/m0_46629123/article/details/133382375 输入命令show variables like “%time_zone%”;(注意分号结尾)设置时区,输入 set global time_zone “8:00”; 回车,然后退出重启(一定记得重启&am…...
安全基础 --- MySQL数据库解析
MySQL的ACID (1)ACID是衡量事务的四个特性 原子性(Atomicity,或称不可分割性)一致性(Consistency)隔离性(Isolation)持久性(Durability) &…...
软件设计师考试学习3
开发模型 瀑布模型 现在基本被淘汰了 是一种结构化方法中的模型,一般用于结构化开发 问题在于需求阶段需求不可能一次搞清楚,很可能做完推翻重做 适用于需求明确或二次开发 原型模型、演化模型、增量模型 原型是为了解决需求不明确的问题 原型在项目…...
使用LDA(线性判别公式)进行iris鸢尾花的分类
线性判别分析((Linear Discriminant Analysis ,简称 LDA)是一种经典的线性学习方法,在二分类问题上因为最早由 [Fisher,1936] 提出,亦称 ”Fisher 判别分析“。并且LDA也是一种监督学习的降维技术,也就是说它的数据集的每个样本都…...
王学岗生成泛型的简易Builder
github大佬地址 使用 //class 可以传参DataBean.classpublic static <T> T handlerJson(String json, Class<T> tClass) {T resultData null;if (CommonUtils.StringNotNull(json) && !nullString.equals(json)) {if (isArray(json)) {resultData BaseN…...
kafka消息队列简单使用
下面是使用Spring Boot和Kafka实现消息队列的简单例子: 引入依赖 在pom.xml中添加以下依赖: <dependency><groupId>org.springframework.kafka</groupId><artifactId>spring-kafka</artifactId><version>2.7.5&l…...
性能优化实战使用CountDownLatch
1.分析问题 原程序是分页查询EventAffinityScoreDO表的数据,每次获取2000条在一个个遍历去更新EventAffinityScoreDO表的数据。但是这样耗时比较慢,测试过30万的数据需要2小时 private void eventSubjectHandle(String tenantId, String eventSubject) …...
基于视频技术与AI检测算法的体育场馆远程视频智能化监控方案
一、方案背景 近年来,随着居民体育运动意识的增强,体育场馆成为居民体育锻炼的重要场所。但使用场馆内的器材时,可能发生受伤意外,甚至牵扯责任赔偿纠纷问题。同时,物品丢失、人力巡逻成本问题突出,体育场…...
leetcodetop100(29) K 个一组翻转链表
K 个一组翻转链表 给你链表的头节点 head ,每 k 个节点一组进行翻转,请你返回修改后的链表。 k 是一个正整数,它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍,那么请将最后剩余的节点保持原有顺序。 你不能只是单纯的改…...
最新影视视频微信小程序源码-带支付和采集功能/微信小程序影视源码PHP(更新)
源码简介: 这个影视视频微信小程序源码,新更新的,它还带支付和采集功能,作为微信小程序影视源码,它可以为用户 提供丰富的影视资源,包括电影、电视剧、综艺节目等。 这个小程序影视源码,还带有…...
C++:vector 定义,用法,作用,注意点
C 中的 vector 是标准模板库(STL)提供的一种动态数组容器,它提供了一组强大的方法来管理和操作可变大小的数组。以下是关于 vector 的定义、用法、作用以及一些注意点: 定义: 要使用 vector,首先需要包含 …...
Firecamp2.7.1exe安装与工具调试向后端发送SocketIO请求
背景: 笔者在python使用socket-io包时需要一个测试工具,选择了firecamp这个测试工具来发送请求。 参考视频与exe资源包: Firecamp2.7.1exe安装包以及基本使用说明文档(以SocketIO为例).zip资源-CSDN文库 15_send方法…...
MySQL到TiDB:Hive Metastore横向扩展之路
作者:vivo 互联网大数据团队 - Wang Zhiwen 本文介绍了vivo在大数据元数据服务横向扩展道路上的探索历程,由实际面临的问题出发,对当前主流的横向扩展方案进行了调研及对比测试,通过多方面对比数据择优选择TiDB方案。其次分享了整…...
算法通关村-----寻找祖先问题
最近公共祖先 问题描述 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个节点 p、q,最近公共祖先表示为一个节点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一…...
Sentinel结合Nacos实现配置持久化(全面)
1、前言 我们在进行分布式系统的开发中,无论是在开发环境还是发布环境,配置一定不能是内存形式的,因为系统可能会在中途宕机或者重启,所以如果放在内存中,那么配置在服务停到就是就会消失,那么此时就需要重…...
Verilog中什么是断言?
断言就是在我们的程序中插入一句代码,这句代码只有仿真的时候才会生效,这段代码的作用是帮助我们判断某个条件是否满足(例如某个数据是否超出了范围),如果条件不满足(数据超出了范围)࿰…...
Oracle分区的使用详解:创建、修改和删除分区,处理分区已满或不存在的插入数据,以及分区历史数据与近期数据的操作指南
一、前言 什么是表分区: Oracle的分区是一种将表或索引数据分割为更小、更易管理的部分的技术。它可以提高查询性能、简化维护操作,并提供更好的数据组织和管理。 表分区和表空间的区别和联系: 在Oracle数据库中,表空间(Tablespace)是用于存储表、索引和其他数据库对…...
SLAM从入门到精通(amcl定位使用)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 学习slam,一般就是所谓的边定位、边制图的知识。然而在实际生产过程中,比如扫地机器人、agv、巡检机器人、农业机器人&…...
【C/C++】C/C++面试八股
C/C面试八股 C和C语言的区别简单介绍一下三大特性多态的实现原理虚函数的构成原理虚函数的调用原理虚表指针在什么地方进行初始化的?构造函数为什么不能是虚函数虚函数和纯虚函数的区别抽象类类对象的对象模型内存对齐是什么?为什么要内存对齐static关键…...
网站建设合同.doc/有创意的营销案例
guan大数据挖掘最深入人心的一个故事应该是“啤酒与尿布”,这个规律就是用关联分析发现的。今天我们就来点关联分析,刚刚学到的,现学现分享?。下面假设是某超市的交易记录(我编造的)基本概念我们在关联分析之前先了解…...
浙江省建设厅网站张清云/查排名网站
wy的leetcode刷题记录_Day64 声明 本文章的所有题目信息都来源于leetcode 如有侵权请联系我删掉! 时间:2023-3-29 前言 目录wy的leetcode刷题记录_Day64声明前言1641. 统计字典序元音字符串的数目题目介绍思路代码收获1641. 统计字典序元音字符串的数目 今天的每…...
单页面网站带后台/龙岩网站推广
Java基础(对象线程字符接口变量异常方法) 面向对象和面向过程的区别?Java 语言有哪些特点?关于 JVM JDK 和 JRE 最详细通俗的解答Oracle JDK 和 OpenJDK 的对比Java 和 C的区别?什么是 Java 程序的主类?应…...
东莞保安公司最新招聘/seo外包优化服务商
锚点决定了形状的大小 . 对于线形,默认情况下,线从第一个锚单元的左上边缘到左上边缘加上最后一个锚单元的 dx 和 dy . 第一锚单元是锚的左上方的单元,而最后的锚单元是锚的右下方的单元 . 因此,默认情况下,线条形状将…...
广州知名网站建设哪家公司好/模板网站哪个好
需要在AD里给普通用户赋予Recipient Management的权限!转载于:https://blog.51cto.com/2558738/1021146...
建设移动端网站/seo刷排名公司
SQL Server 2005 数据库引擎对象最大大小/数量 SQL Server 2005(32 位)最大大小/数量 SQL Server 2005(64 位) 批大小1 65,536 * 网络数据包大小 65,536 * 网络数据包大小 每个短字符串列的字节数 8,…...