- 博客(41)
- 收藏
- 关注
原创 mapreduce的工作原理
输入数据 → 切片 → Map处理 → 排序分组 → Reduce汇总 → 输出结果。- 简单编程模型(只需写map和reduce两个函数)"分而治之":把大数据拆成小块→分别处理→合并结果。- 适合处理超大数据(因为拆成很多小块并行处理)2. Shuffle:整理归类(课代表整理)- 第1组报:(第1组, 120岁)- 第2组报:(第2组, 115岁)- 不怕机器故障(自动重新计算丢失的部分)3. Reduce:汇总结果(班长计算)1. Map:分散处理(人人干活)MapReduce原理。
2025-03-31 19:27:17
188
原创 hadoop集群常用命令
hadoop fs -chown <owner>:<group> <path>: 修改文件所有者。- hadoop fs -chgrp <group> <path>: 修改文件所属组。- hadoop fs -chmod <mode> <path>: 修改文件权限。- hadoop fs -du -h <path>: 显示目录/文件大小。- hadoop fs -rm -r <path>: 递归删除目录。- hadoop fs -cp <src> <dst>: 复制文件。
2025-03-31 19:24:45
325
原创 Linux常见命令
tar -cvf archive.tar /path/to/directory:打包。- cd /path/to/directory:进入指定目录。- tail -n 10 file.txt:查看最后10行。- head -n 10 file.txt:查看前10行。- rm -r directory:递归删除目录及其内容。- tar -xvf archive.tar:解包。- cp -r dir1 dir2:递归复制目录。- ls -l:以长格式列出。- ls -a:显示隐藏文件。
2025-03-03 19:27:46
291
原创 虚拟机ip配置
linux中,ip地址是写在配置文件(/etc/sysconfig/network-scripts/ifcfg-ens33)中,这里使用 vi 编辑器去修改即可!如果不进行设置,每次启动机器时都可能是随机的IP,不方便我们后续操作。注意:这里的第三个部分的10并不是固定的,我们自己可以约定,但是约定之后就要固定下来。让所有的vm配置的虚拟机使用NAT时,它们的网段都是一致的。配置Windows本地虚拟网卡,让本机也可以访问虚拟机。具体设置为:进入虚拟机,修改对应的IP。(3)设置虚拟机的IP。
2025-02-28 15:58:25
399
原创 VI编辑器的使用及其命令
它的改进版本 `vim`(Vi IMproved)提供了更多功能,如语法高亮、多级撤销等。以下是 `vi` 和 `vim` 的基本使用方法。如果没有启用,可以在末行模式下输入 :syntax on。- /pattern:查找 `pattern`(按 `n` 查找下一个,`N` 查找上一个)。3. 输入 :%s/hello/world/g,将文件中所有的 hello 替换为 world。- :%s/old/new/g:全局替换 `old` 为 `new`。- 在此模式下可以执行复制、粘贴、删除、保存等操作。
2025-02-26 11:19:53
440
原创 windows用户安装mysql教程
2. 在“Type and Networking”界面,选择“Config Type”为“Development Computer”,点击“Next”。2. 在“Choosing a Setup Type”界面,确认选择“Developer Default”,点击“Next”。5. 在“Apply Configuration”界面,点击“Execute”应用配置,完成后点击“Finish”。1. 配置完成后,点击“Next”进入“Product Configuration”界面,点击“Finish”。
2025-02-19 11:05:43
333
原创 windows用户安装虚拟机教程
在VMware Workstation菜单中,选择“虚拟机” -> “安装VMware Tools”。选择“安装程序光盘映像文件(ISO)”,并浏览选择你要安装的操作系统ISO文件,点击“下一步”。输入操作系统的产品密钥(如果有,如果没有,则选择个人),设置用户名和密码,点击“下一步”。打开VMware Workstation,点击“创建新的虚拟机”。设置虚拟机的磁盘大小,默认20GB,点击“下一步”。设置虚拟机的名称和存储位置,点击“下一步”。选择“典型”配置,点击“下一步”。点击“完成”以创建虚拟机。
2025-02-19 11:01:59
315
原创 scala泛型的特质:Trait
在定义泛型特质的子类或者子单例对象时, 明确具体的数据类型.2)trait 类名[S,T...]泛型特质,x是泛型名称,可以更改。1)trait 类名[T]
2024-12-12 09:10:46
594
原创 scala的泛型类
val p3=new Pair[String]("黄冈","蕲春")class 类名[泛型名](成员名:泛型名). 在创建对象时, 明确具体的数据类型.class 类名(成员名:数据类型)
2024-12-12 08:38:00
357
原创 Scala映射
映射就是Map,它是由键值对(Key,value)组成的集合。特点是:键具有唯一性,但是值可以重复。val/var map=Map((键,值),(键,值),(键,值)....)注意:如果添加重复元素:两组元素的建相同,则会用新值覆盖旧值。val/var map=Map(键->值,键->值...)Map也分不可变和可变scala默认映射不可变Map。方式一:通过箭头的方式实现。方式二:通过小括号方式实现。
2024-12-11 21:53:48
294
原创 Scala元组
元组也是可以理解为一个容器,可以存放各种相同或不同类型的数据。说的简单点,就是将多个无关的数据封装为一个整体,称为元组。(3)Map 中的键值对其实就是元组,只不过元组的元素个数为 2,称之为对偶。(1)声明元组的方式:(元素 1,元素 2,元素 3)注意:元组中最大只能有 22 个元素。
2024-12-11 21:49:51
166
原创 scala列表
(5)集合间合并:将一个整体拆成一个一个的个体,称为扁平化。(2)创建一个 List(数据有顺序,可重复)(1)创建一个可变集合 ListBuffer。(1)List 默认为不可变集合。(4)List 增加数据。(2)向集合中添加数据。(3)遍历 List。(7)空集合 Nil。
2024-12-11 21:47:53
370
原创 scala数组
第一种定义:val arr1 = new ArrayInt方式定义数组(1)new 是关键字(2)[Int]是指定可以存放的数据类型,如果希望存放任意数据类型,则指定 Any(3)(10),表示数组的大小,确定后就不可以变化 第二种定义:val arr1 = Array(1, 2)(1)在定义数组时,直接赋初始值(2)使用 apply 方法创建数组对象 定义变长数组:val arr01 = ArrayBuffer[Any](3, 2, 5)(1)[Any]存放任意数据类型(2)(3, 2, 5)初始化
2024-12-11 21:45:29
133
原创 Scala的集合
1)Scala 的集合有三大类:序列 Seq、集 Set、映射 Map,所有的集合都扩展自 Iterable。2)对于几乎所有的集合类,Scala 都同时提供了可变和不可变的版本,分别位于以下两。3)Scala 不可变集合,就是指该集合对象不可修改,每次修改就会返回一个新对象,而。4)可变集合,就是这个集合可以直接对原对象进行修改,而不会返回新的对象。不可变集合:scala.collection.immutable。建议:在操作集合的时候,不可变用符号,可变用方法。注意:集合也分为可变集合于不可变集合。
2024-12-11 21:38:00
274
原创 scala的Seq和Set的区别
Set是集合,适合存无序非重复数据,进行快速查找海量元素的等场景。Seq是列表,适合存有序重复数据,进行快速插入/删除元素等场景。Seq 和 Set是针对现实使用场景的不同数据结构抽象。
2024-12-11 21:31:38
132
原创 scala迭代器
迭代器在访问元素时才计算它们,这意味着只有当你请求下一个元素时,迭代器才会计算它。对迭代器中的每个元素应用一个函数,该函数返回一个迭代器,然后将这些迭代器连接起来。对迭代器中的每个元素应用一个函数,返回一个新的迭代器,包含应用函数后的结果。会返回迭代器的下一个元素并使迭代器的状态前进。将两个迭代器连接起来,创建一个新的迭代器,包含两个迭代器中的所有元素。返回迭代器的下一个元素,并移动迭代器的当前位置。返回一个布尔值,指示迭代器是否还有更多的元素。返回一个新的迭代器,只包含满足给定条件的元素。
2024-12-11 21:26:15
236
原创 scala隐式对象
只要在常规的定义方法之前加上implicit关键字,就可以声明一个隐式对象。隐式对象于隐式值的作用相同,只是定义方式不同,即隐式对象与隐式参数一起使用。而在Scala中,除了这两种方式外,还可以使用object关键字直接声明一个单列对象。implicit object 对象名{1 通过new关键字。
2024-12-11 21:23:20
445
原创 scala隐式类
方法①: 使用 隐式类 ,将Student类定义为隐式类,这样在 new Person对象的时候, 编译器会默认在Student的主构造方法中传入Person对象,再转型为Student对象,这样新建的Person对象就有了双重身份,可以随便调用这两个类中的方法。现在有一个需求:有一个 Person 类,含有work()方法,有一个 Student 类,含有study()方法,在不使用继承的情况下,要求创建一个Person类的对象,可以直接调用Student类里的study()方法?
2024-12-11 21:11:17
407
原创 scala隐式函数
但是在scala中定义一个隐式函数,函数体是将传入的 Double 类型使用 toInt 方法转为 Int 类型就可以解决这个问题。在java中,当我们申明一个变量a 为 Int 类型,赋值为 3.5 ,这时就会直接报错,scala也一样。通常我们所说的隐式函数也称为 隐式转换,是使用 implicit 修饰的函数。作用: 可以通过一个隐式函数将一种类型转变为另一种类型。类型转换,隐式转换为期望类型。
2024-12-11 21:09:50
302
原创 scala隐式参数
在一个类中,定义同一类型的隐式参数只能有一个,即函数参数列表中同一类型的隐式参数也只能为一个,多了会打架,比如定义了两个Int类型的变量当参数,implicit val a:Int = 10, implicit val b:Int = 20 ,传入到函数中scala编译就不知道用哪个参数了。这里定义的变量名是 num ,但是传入到函数当中,隐式参数名可以不为 num,随便起什么名字都可以,只要是 Int 类型就可以。隐式参数的作用:减少提供函数参数的数量,让某些参数拥有隐藏的值(隐式变量)
2024-12-11 21:06:38
200
原创 scala隐式转换
当传入的参数类型与预期类型不匹配时,Scala编译器会查找是否存在可以将该参数类型转换为预期类型的隐式函数。此外,当对象尝试访问其不存在的成员时,编译器也会尝试查找能够将该对象转换为另一个具有所需成员的对象的隐式函数。的函数来实现的,这个函数能够将一种类型转换为另一种类型。隐式转换的使用可以使代码更加简洁,并且能够在不修改现有代码的情况下扩展新功能。在Scala编程语言中,隐式转换是一种强大的功能,它允许程序在需要时自动转换数据类型或增强对象功能。隐式转换的方法、变量或伴生对象必须在当前作用域内有效。
2024-12-11 21:03:37
276
原创 scala的泛型参数
(2)名称合法就行,没有固定的。一般用T(Type)在scala中,用[]表示。在java中,用表示。类型参数-----泛型(数据类型是变化的)列表中的元素不限的,T表示着许多函数类型。
2024-12-10 18:04:15
427
原创 部分正则表达式规则
6.脱字符:^ 如果在正则的最前面,表示,要匹配的内容必须在字符串的开头。7.脱字符:$ 如果在正则的最后面,表示,要匹配的内容必须在字符串的结尾。11.\w:[a-zA-Z0-9_]63个字符中的任意一个."一个字"2.[a-z]:表示从a到z的26个字母中的任意一个。3.[A-Z]:表示从A到Z的26个字母中的任意一个。8.英文的. :表示除了换行之外的其他的任意一个字符。4.1[^ab]:表示匹配一个字符,除a,b之外的。4.[0-9]:表示从0到10中的任意的一个。9.\d:表示0-9的一个数字。
2024-12-10 14:57:08
297
原创 如何校验自己手机号是不是一个正确的手机号
最后结果如是是正确的手机号将会返回ture,反之,则返回false。代码中最后输出结果那条将是自己要填入的手机号。
2024-12-10 14:44:00
345
原创 Scala的可变集合与不可变集合
您仍然有模拟添加、删除或更新的操作,但这些操作在每种情况下都会返回一个新集合,而不会更改旧集合。集合可以在原处更新或扩展。这意味着您可以更改、添加或删除集合的元素作为副作用。Scala 集合系统地区分可变和不可变集合。
2024-11-05 15:28:16
349
原创 Scala中reduce fold函数
fold` 方法与 `reduce` 类似,但它更加灵活,因为它允许你指定一个初始值,并且可以处理只有一个元素的集合。- **用途**:`reduce` 更适合用于简单的聚合操作,而 `fold` 更灵活,可以用于更复杂的场景。- **处理空集合**:如果集合为空,`reduce` 会抛出异常,而 `fold` 会返回初始值。- **初始值**:`reduce` 没有初始值,而 `fold` 需要一个初始值。在这个例子中,`fold` 方法不会抛出异常,而是返回提供的初始值 `0`。
2024-10-17 00:19:24
420
原创 Scala中fitter flatten函数
flatten` 是 `GenTraversableOnce` 特质的一部分,因此它可以用于任何实现了这个特质的集合类型,比如 `List`, `Array`, `Set`, `Map` 等。- `flatten` 方法需要确保嵌套的集合中的元素类型与外部集合的类型兼容。例如,如果外层集合是 `List[Int]`,那么内层集合也必须是 `Int` 的集合。在Scala中,`flatten`函数通常用于将嵌套的集合(如列表中的列表)转换为一个扁平的集合。`flatten` 函数的使用。
2024-10-17 00:16:09
274
原创 Scala中map foreach函数
1. `map`函数:它用于对集合中的每个元素应用一个函数,并返回一个新的集合,其中包含应用函数后的结果,它的作用是对数组每个元素用函数过一遍后得到一个新值。2. `foreach`函数:它用于对集合中的每个元素执行一个操作,但没有返回值,它的作用是对数组每一个元素都执行一次函数。注意:`foreach`函数主要用于副作用(如打印、写入文件等),而不是生成新的集合。在Scala中,`map`和`foreach`是常用的集合操作函数。例如,将一个整数列表中的每个元素乘以2。
2024-10-17 00:13:23
287
原创 Scala的继承类
定义语法 scala和Java一样,使用extends关键字来实现继承 可以在子类中定义父类中没有的字段和方法,或者重写父类的方法 类和单例对象都可以从某个父类继承 语法 class/object 子类 extends 父类 { .. }dog.bark() // 输出: Dog is barking。dog.eat() // 输出: Dog is eating。// 定义一个继承自Animal的子类。// 创建一个Dog对象并调用其方法。// 重写父类的eat方法。// 添加一个新的方法。
2024-10-17 00:06:15
317
原创 Scala抽象类
如果类的某个成员在当前类中的定义是不包含完整的,它就是一个抽象类。定义抽象类和Java一样,在类前面加上abstract关键字。和Java语言一样,scala中也可以定义抽象类。抽象类:制定标准,让其他的类去实现。方法没有方法体(抽象方法)变量没有初始化(抽象字段)
2024-10-15 17:06:04
243
原创 Scala的函数字面量
Scala中函数为头等公民,你不仅可以定义一个函数然后调用它,而且你可以写一个未命名的函数字面量,然后可以把它当成一个值传递到其它函数或是赋值给其它变量。使用下划线作为占位符,我们还可以方便地进行部分应用函数的操作。部分应用函数是指在调用函数时只指定部分参数,而不是所有参数。当函数字面量只有一个参数时,可以省略参数列表的括号。在上面的代码中,我们省略了参数列表的括号,直接使用。,它接受一个整数参数并调用了之前定义的。在这个例子中,我们定义了一个新的函数。函数,并指定了第一个参数为。
2024-10-08 17:28:19
389
原创 This.type的方法
关键字引用的对象的一个属性或方法。在JavaScript中,当你在类的方法内部使用。属性,这个属性反映了对象的类型信息。// this.type是返回值类型。通常是指在一个面向对象编程上下文中,,它通常指的是该对象的。
2024-10-08 12:20:03
252
原创 Scala伴生类Class和伴生对象Object的区别
3、Scala中的变量有两种var和val(val类似于Java中final,值不可改变)* 2、伴生对象充当于静态方法的类,所以伴生对象中全是静态的。2、伴生对象充当于静态方法的类,所以伴生对象中全是静态的。* 3、var 是可变参数 , val是不可变对象。println("我是伴生对象中静态代码块")println("我是伴生类中代码块")* 1、scala没有静态方法或者静态字段。1、scala没有静态方法或者静态字段。
2024-09-29 12:29:56
636
原创 Scala中class和object类
类中的方法是实例方法,对象中的方法相当于静态方法。class和object的一个差别是,单例对象不带参数,而类可以.因为你不能用new关键字实例化一个单例对象,你没有机会传递给它参数。class和object的一个差别是,单例对象不带参数,而类可以.因为你不能用new关键字实例化一个单例对象,你没有机会传递给它参数。类只会被编译,不能直接执行,类的声明和主构造器在一起被声明,在一个类中,主构造器只有一个.类和它的伴生对象可以相互访问其私有成员,class中的main方法没什么用了。
2024-09-24 17:21:08
511
原创 如何辨别Scala与JAVA的if语句
为true,则会吧表达式1的值赋值给变量a。如果布尔表达式为false,则会吧表达式2的值赋给变量a,即布尔表达式为true,a=表达式1,否则,a=表达式2。Scala与Java的if语句的主要不同点在于是否有返回值。Java中的if语句没有返回值,而Scala中的if语句是有返回值的。val a=if(布尔表达式){
2024-09-24 13:19:05
485
原创 Scala的IDEA环境搭建
1在IntelliJ IDEA中,点击 "File" -> "Settings"(Windows/Linux)或 "IntelliJ IDEA" -> "Preferences"(macOS)。安装IntelliJ IDEA访问JetBrains官网下载并安装IntelliJ IDEA。3在搜索框中输入 "Scala",找到 "Scala" 插件并点击 "Install"。4点击 "Next",然后为项目指定名称和位置。2在左侧导航栏中,选择 "Plugins"。2选择 "Scala" 作为项目类型。
2024-09-11 23:22:31
865
原创 演示Scala lazy变量的惰性求值
为了验证lazy变量的惰性求值特性,我们可以在初始化代码块中添加一些额外的操作,比如打印一条消息或者执行一些耗时的操作。如果我们再次访问x,将不会再次执行初始化代码块,而是直接返回之前计算的结果。这是因为lazy变量的值一旦被计算,就会被缓存起来,后续访问会直接返回缓存的值。由于x是一个lazy变量,它的初始化代码块只有在第一次访问时才会被执行。惰性求值:在用到的时候才对表达式进行求值,而不是在定义时立即求值, 并且变量只有在首次访问时才会进行初始化,之后再次访问时会使用已经计算好的值。
2024-09-04 18:57:39
420
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人