自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(39)
  • 收藏
  • 关注

原创 mapreduce的工作原理

**Reduce 阶段**:Reduce 任务接收每个分区的数据,将相同单词的出现次数累加,得到最终的 `<单词, 总出现次数>` 结果,如 `<Hello, 2>`、`<World, 1>`。- **分区**:Shuffle 阶段会对 Map 任务输出的中间键值对进行分区操作,默认情况下,根据键的哈希值将键值对分配到不同的分区中,每个分区对应一个 Reduce 任务。- **Shuffle 和排序**:根据单词的哈希值将键值对分区,同一单词的键值对会被分配到同一个分区,并在分区内按单词排序。

2025-03-31 19:31:08 421

原创 hadoop 集群的常用命令

/path/to/your/jar/file.jar` 是包含 MapReduce 作业代码的 JAR 文件路径,`main_class` 是作业的主类名,`input_path` 是输入数据在 HDFS 上的路径,`output_path` 是作业输出结果在 HDFS 上的路径。此命令会将 HDFS 上的文件下载到本地指定的位置。将 `/path/to/directory` 替换为你要查看的实际目录路径,该命令会列出该目录下的所有文件和子目录的详细信息,包括权限、所有者、大小和修改时间等。

2025-03-31 19:27:31 451

原创 vi常见操作命令

替换操作可以使用`:s/old/new/g`,其中`old`是要替换的旧字符串,`new`是新字符串,`g`表示全局替换。- 在命令模式下输入`i`(在光标前插入)、`a`(在光标后插入)、`o`(在光标所在行的下一行插入新行并进入编辑模式)等命令可以进入编辑模式,此时可以输入和编辑文本。- 在命令模式下,使用`h`(向左移动一个字符)、`j`(向下移动一行)、`k`(向上移动一行)、`l`(向右移动一个字符)来移动光标。- 在命令模式下,`x`删除光标所在位置的字符,`dd`删除光标所在的整行。

2025-03-03 19:32:10 176

原创 VM+CentOS虚拟机

进入CentOS虚拟机,使用vi编辑器修改网络配置文件,如`/etc/sysconfig/network-scripts/ifcfg-ens33`(文件名可能因虚拟机网络适配器不同而有所差异)。- 打开VMware Workstation Pro,选择“新建虚拟机”,按照向导提示选择“安装程序光盘映像文件(ISO)”,并选择下载的CentOS镜像文件。- 在VMware中,点击“编辑”→“虚拟网络编辑器”,选择VMnet8并进行相关设置。**一、VM+CentOS虚拟机配置**

2025-03-03 19:29:45 380

原创 Linux常用指令

例如`tar -cvf archive.tar files_to_archive`(打包),`tar -xvf archive.tar`(解压)。常用选项有`-a`(列出所有文件,包括隐藏文件)、`-l`(显示文件的详细信息)等。- `rm`:删除文件或目录。使用`-r`选项删除目录,`-f`选项强制删除不提示。可通过`-n`选项指定行数,如`head -n 20 file.txt`。- `chown`:修改文件或目录的所有者。- `less`:与`more`类似,但功能更强大,支持搜索等操作。

2025-03-03 19:26:20 170

原创 如何安装配置虚拟机

**Microsoft Hyper - V**:仅适用于Windows系统(Windows 10专业版及以上),集成在操作系统中,对于Windows用户来说比较方便,如果主要在Windows环境下使用虚拟机可以考虑。- 在创建好的虚拟机设置中,选择“CD/DVD(SATA)”选项,在右侧选择“使用ISO映像文件”,浏览并选择下载好的操作系统ISO文件。- 创建虚拟硬盘,选择硬盘类型(如VDI、VHD等),并确定硬盘大小和存储方式(如动态分配或固定大小)。

2025-02-20 17:16:10 357

原创 Scala泛型的特质

/泛型特质.X是泛型名称,可以更=更改。//定义一个类去实现特质。

2024-12-12 09:25:32 480

原创 Scala的泛型

/泛型特质.X是泛型名称,可以更=更改。//定义一个类去实现特质。

2024-12-12 08:39:23 391

原创 Scala的正则表达式2

a+` 可以匹配 `a`、`aa`、`aaa` 等,但不能匹配空字符串;例如,`a` 匹配字符 `a`,`[abc]` 匹配 `a`、`b` 或者 `c` 中的任意一个字符,`[a-z]` 匹配从 `a` 到 `z` 的任意一个小写字母。例如,`(ab)+` 表示 `ab` 这个组合至少出现1次,如 `ab`、`abab`、`ababab` 等符合要求。例如,`^` 表示匹配行首,`$` 表示匹配行尾。`^abc` 表示匹配以 `abc` 开头的行,`abc$` 表示匹配以 `abc` 结尾的行。

2024-12-11 20:55:51 186

原创 Scala正则表达式1

排除字符集 [^ ] [^ ] 开头加 ^,匹配排除字符 [^abc],文本 d [^abc] 匹配除 a、b、c 之外的字符,如 d。方括号 [ ] [ ] 定义字符集,匹配其一 [abc],文本 a、b 或 c [abc] 匹配 a、b 或者 c。\w 等价[a-zA-Z0-9_],匹配相关字符 \w+,文本abc、abc123、abc_ \w+匹配对应字符串。\W 等价[^a-zA-Z0-9_],匹配其他 \W,文本& \W匹配非字母数字下划线字符,如&

2024-12-11 20:53:44 383

原创 Scala的正则表达式3

/在如下字符串中 查找 满足正则表达式要求的内容。非贪婪模式,加在量词的后面。// 3.第二个数字是3-9的数.// 正则匹配默认是贪婪模式的。// 2.第一个数字是1.// 1.11位数字.// 找全部的手机号。scala正则表达式开发语言。发布于2024-12-03。贪婪模式与非贪婪模式。

2024-12-11 20:52:51 465

原创 Scala的隐式对象

/ 格式:implicit object。getConn // 采用默认值。// 作用:给函数的默认参数提供隐式值。格式:implicit object。作用:给函数的默认参数提供隐式值。scalaandroid开发语言。发布于2024-12-10。

2024-12-11 20:51:55 264

原创 使用 Maven 来构建 Scala

src/main/resources/archetype-resources 目录下的内容大体上认为就是生成目标项目的时候,生成的目标项目会拥有的东西,没做裁剪之前,这些内容都是根据 currency-webapi-with-scala 的内容“拷贝(Copy)”过来的,我们会对这个符合 Maven 项目结构目录下的内容进行裁剪。关于基于 Maven 的 Scala 项目的依赖治理以及 spring-boot-starter-scala,我们暂时就介绍到这里。

2024-12-11 20:49:54 750

原创 Scala的泛型

/ getMiddleEle(List(1,2,3,4,5)) ==> 5/2 = 2 ==> 下标为2的元素是:3。// getMiddleEle(List(1,2,3,4)) ==> 4/2 = 2 ==> 下标为2的元素是:3。// List[Int]:List是列表,[Int] 是说列表中的每一个元素都是int!// 类型参数 -----泛型(数据类型是变化的)// 用它来获取当前的列表的中间位置上的值。// 中间位置的下标 = 长度/2。// (1) 可以有多个。

2024-12-11 20:47:29 303

原创 Scala定义函数方法

/简写2:用 _ 占位符.(Int,Int)=>Int 他表示一种类型:收到两个整数的参数,返回一个整型值。// var classRoom = "教室310"//字面量。//println("教室310")//字面量。//定义函数的方式2:字面量的方式 =>//教室310+教室309。//定义函数的方式1。//简写1:省略{}发布于2024-12-11。

2024-12-11 20:45:56 193

原创 Scala的Map方法

如果你需要使用可变集合,你需要显式的引入 import scala.collection.mutable.Map 类。在 Scala 中 你可以同时使用可变与不可变 Map,不可变的直接使用 Map,可变的使用 mutable.Map。查询 :get方法,输入key,如果找到,就返回包装数据,如果没有找到,就返回None。Map 有两种类型,可变与不可变,区别在于可变对象可以修改它,而不可变对象不可以。发布于2024-12-11著作权归作者所有。Map常用操作有增加,删除,修改,查询。

2024-12-11 20:43:58 302

原创 列表添加书籍

1.创建一个可变 Set,用于存储图书馆中的书籍信息(假设书籍信息用字符串表示,如 “Java 编程思想”“Scala 实战” 等),初始化为包含几本你喜欢的书籍。4.检查某一本特定的书籍(如 “Python 从入门到实践”)是否在图书馆集合中,使用 contains 方法,并输出结果。7.求出两个图书馆书籍集合的交集,使用 intersect 方法,并输出结果。6.求出两个图书馆书籍集合的并集,使用 union 方法,并输出结果。5.创建另一个可变 Set,表示另一个图书馆的书籍集合。

2024-12-11 20:43:05 180

原创 Scala的迭代器

无论底层集合的具体结构如何,只要能获取到迭代器,就可以使用相同的hasNext和next方法来遍历元素。zip方法用于将两个迭代器的元素按顺序组合成一个新的迭代器,其中每个元素是一个包含两个迭代器对应位置元素的元组。如果两个迭代器的长度不同,zip操作会在较短的迭代器耗尽时停止。迭代器采用延迟计算的方式,它不会将整个集合加载到内存中,而是在每次调用next方法时才计算并返回下一个元素。返回一对迭代器,它们可以独立遍历原始迭代器中的元素序列。take 只处理当前开始的,指定数量的元素,返回一个新的迭代器。

2024-12-11 20:42:03 385

原创 Scala的Array

/ ArrayBuffer(1,2,3,4,5),取出3,4 组成一个新的数组。// filter 过滤。// 1-10的数组,每隔2个 range 不包括终点,2 是步长。// slice(起点下标,终点下标) // 不包括终点下标!// 2.访问. 数组名(下标)。// println(s"第一个元素是${arr1(0)}")// indexOf: // 找到第一个元素的下标。// 有,就返回第一次出现的下标。// 不可变数组 Array。// 3.快速填充数组内容。// 找到大于100的元素。

2024-12-11 20:41:05 433

原创 List列表

dreamList += DreamItem("莫名其妙获得10000000000000",false,"2030-10-01",1)dreamList += DreamItem("有100套房子",false,"2030-10-01",1)dreamList += DreamItem("周游全世界",false,"2030-10-01",1)dreamList += DreamItem("月薪十万+",false,"2030-10-01",1)发布于2024-12-11。

2024-12-11 20:39:27 401

原创 正则表达式

/ 6.脱字符^ 如果在正则的最前面,表示要匹配的内容必须在字符串的开头。// 7.脱字符$ 如果在正则的最后面,表示要匹配的内容必须在字符串的结尾。// 8.英文的. : 表示除了之外的其他任意一个字符,一个字符一个点。// 2.[a-z]: 表示从a到z的26个字母中的任意的一个。// 3.[A-Z]: 表示从A到Z的26个字母中的任意的一个。// 4.1 [^ab]: 表示匹配一个字符,除a,b之外的。// 4.[0-9]: 表示从0到10中的任意的一个。// 9.\d: 表示0-9的一个数字。

2024-12-11 20:38:12 144

原创 //定义一个特质 //特质可以有抽象属性,具体属性,抽象方法,具体方法//具体属性

println(s"${age}岁,${height}大高个,${hair}")val height = 180 //val 不可以修改,var可以修改。//var 修饰的,可以用override重写。//特质可以有抽象属性,具体属性,抽象方法,具体方法。println(s"嘴角微微扬起")//var 修饰的可以直接赋值。//具体属性可以重写(可选)//抽象方法 要具体实现。//抽象属性 要具体实现。//抽象属性(没有=)//抽象方法(没有=)发布于2024-11-12。//具体方法可以重写。

2024-12-11 20:36:14 217

原创 Scala语法:把函数作为返回值/函数的柯里化

var t = add(100)(300)_ //_表示一个占位符。先算有两个参数的情况,结果是一个函数。println(add(100)(200)(400))//直接给三个参数。println(t(200)) //传入最后一个参数,就能计算结果了。//写一个函数,它的返回值是一个函数。//柯里化的方式 定义一个函数。//currying 柯里化。//函数的另一种方式。

2024-11-12 17:56:47 293

原创 用Scala求斐波那契数列的第n项

记: 0 1 1 2 3 5 8 13 21 34 55 ... 从第3项开始 f(n) = f(n-1) + f(n-2)2.递归情况(大事化小,自己调用自己): f(n) = f(n-1) + f(n-2)1.基本情况(直接能求的):f(0) = 0,f(1) = 1。用Scala求斐波那契数列的第n项。问题:求 斐波那契数列的第n项。

2024-11-12 17:53:13 319

原创 Scala抽象

/abstract:抽象类。有抽象方法的类,就是抽象类。抽象方法就是没有方法体的方法 def autoRun。println(s"小米的自动驾驶.....${sheel},${hasDriver}")println(s"小米汽车的自动泊车功能")println("小米 su7 的 run")// 抽象类:制定标准,让其他的类去实现!sheel = 3 //重写父类的属性。//把父类的抽象标准变为现实-具体!

2024-11-12 17:24:18 241

原创 Scala高阶函数flatten和flatmap

在这个例子中, flatMap 对每个元素 x 应用函数 x => List(x, x * 2) ,该函数返回一个包含原始元素和其两倍的列表。它首先对集合中的每个元素应用一个函数,该函数返回一个集合,然后将所有这些结果集合展开为一个单一的集合。flatten 用于将嵌套的集合展开为一个单一的集合。例如,如果有一个包含多个列表的列表, flatten 可以将其转换为一个包含所有元素的单个列表。在 Scala 中, flatten 和 flatMap 都是用于处理集合的高阶函数,但它们的作用略有不同。

2024-10-17 00:23:54 279

原创 Scala高阶函数filter

例如,在上面的例子中, _ % 2 == 0 是一个匿名函数,用于判断一个数是否为偶数。filter 函数将这个匿名函数应用于列表中的每个元素,并返回一个新的列表,其中只包含满足条件的元素。在这个例子中,首先使用 filter 函数筛选出长度大于 4 的名字,然后使用 map 函数将这些名字转换为大写。println(evenNumbers) // 输出 List(2, 4, 6, 8, 10)在 Scala 中, filter 是一个高阶函数,用于从集合中筛选出满足特定条件的元素。

2024-10-17 00:18:14 434

原创 Scala高阶函数map和foreach

collection.foreach(function) ,其中 collection 是一个集合, function 是一个用于执行副作用操作的函数。foreach 函数用于对集合中的每个元素执行一个副作用操作,例如打印元素、修改外部变量等。collection.map(function) ,其中 collection 是一个集合, function 是一个用于转换元素的函数。map 函数对集合中的每个元素应用一个函数,将其转换为另一种形式,并返回一个新的集合,新集合的元素个数与原集合相同。

2024-10-17 00:12:29 250

原创 Scala的函数字面量

在这个例子中, applyFunction 函数接受一个函数参数 f 和一个整数参数 x ,并返回将函数 f 应用于 x 的结果。在这个例子中, (x: Int, y: Int) => x + y 就是一个函数字面量,它接受两个整数参数并返回它们的和。函数字面量在函数式编程中非常有用,可以作为参数传递给其他函数,或者作为返回值返回。println(applyFunction(double, 6)) // 输出 12。println(add(3, 4)) // 输出 7。

2024-10-17 00:06:44 156

原创 Scala的函数的调用

定义一个Rational类,说明Scala函数使用。(1)定义一个求两个数的最大公约数的方法。(2)定义一个求两个整数和的方法。

2024-09-29 22:06:33 283

原创 Scala的雯波那锲数列

以下是用 Scala 实现斐波那契数列的几种方法:方法一:递归实现n} else {方法二:迭代实现n} else {var a = 0var b = 1a = bb = resultresult你可以使用以下方式调用这些函数:

2024-09-29 21:40:55 270

原创 Scala的函数递归

这个函数计算第 n 个斐波那契数,如果 n 小于等于 1,则返回 n;否则,返回第 n - 1 个斐波那契数和第 n - 2 个斐波那契数之和。需要注意的是,对于较大的 n ,这种递归实现可能会非常耗时,因为会有很多重复计算。可以考虑使用动态规划等方法来优化。这个函数在计算 n 的阶乘时,如果 n 等于 0,则返回 1;否则,返回 n 乘以 n - 1 的阶乘,通过不断地调用自身来实现阶乘的计算。在 Scala 中,递归是一种通过函数调用自身来解决问题的方法。

2024-09-29 21:30:40 251

原创 Scala的类和构造器

总之,Scala 的类和构造器提供了一种灵活的面向对象编程方式,可以根据具体需求定义不同的构造器和访问修饰符来控制类的实例化和属性访问。辅助构造器的名称为 this ,并且必须调用同一个类中的其他构造器。在这个例子中, Person 类有两个参数 name 和 age ,在类定义的时候就传递了这两个参数。在 Scala 中,类定义中的参数列表实际上就是主构造器的参数。在 Scala 中,类是面向对象编程的基本单元,构造器用于初始化类的实例。当创建一个 Animal 的实例时,会输出创建动物的信息。

2024-09-28 22:15:51 149

原创 Scala的伴生对象和伴生类

在这个例子中, Person 是伴生类, object Person 是伴生对象,伴生对象中定义了一个工厂方法来创建 Person 类的实例。总的来说,Scala 的伴生对象和伴生类提供了一种方便的方式来组织相关的代码,并实现类似于其他语言中静态成员和类之间的关系。定义 :当同名的类和单列对象在同一个源代码文件中时,这个类称为单例对象的伴生类,对象称为类的伴生对象 两者是相互的。2. 工厂方法:伴生对象常常用于提供创建伴生类实例的工厂方法。1. 访问权限:伴生对象可以访问伴生类的私有成员,反之亦然。

2024-09-25 19:21:14 289

原创 Scala创建对象

这里定义了一个 Person 类,有 name 和 age 两个参数,通过主构造器创建了一个 Person 对象。通过伴生对象中的工厂方法 apply 来创建 Person 类的对象,这样可以对对象的创建进行一些额外的控制。这里创建了一个单例对象 SingletonObject ,可以直接调用其方法。二、使用伴生对象和工厂方法创建对象。三、使用对象声明创建单例对象。一、使用主构造器创建对象。

2024-09-24 16:11:27 367

原创 Scala的循环结构

这会输出 1 到 5 的数字。输出 1 到 10 中的偶数。三、do-while 循环。二、while 循环。

2024-09-18 21:50:08 327

原创 IDEA 配置Java SDK

2. 在“Project SDK”下拉列表中,如果已经有安装好的 Java SDK 可供选择,直接选中即可。如果没有,点击下拉列表旁边的“New...”(新建...)按钮,选择“JDK”。如果已经打开了一个项目,可以点击“File”(文件)菜单 -> “Project Structure”(项目结构)。1. 在弹出的“Project Structure”窗口中,选择“Project”(项目)选项卡。3. 在弹出的文件选择窗口中,导航到你安装 Java SDK 的目录并选择它。一、下载 Java SDK。

2024-09-11 23:20:00 1007

原创 演示Scala的lazy变量的惰性求值步骤

println("即将访问 lazyValue...")println("计算 lazyValue...")**Scala 的 lazy 变量的惰性求值步骤如下:**4. 后续对该变量的访问直接使用存储的结果,不再重新计算。// 再次访问 lazyValue,不会重新计算。// 在这里 lazyValue 还没有被计算。// 首次访问 lazyValue,触发计算。println("程序开始...")42 // 假设这是一个复杂的计算。2. 在首次访问该变量时,触发计算。// 声明一个 lazy 变量。

2024-09-03 17:21:42 501

原创 1分钟教会你写Scala HelloWorld

4. 使用 scala HelloWorld 运行程序,你将在控制台看到“Hello, World!1·创建文件,新建以·Scala后缀的文本文档编写HelloWorld代码。3. 使用 scalac HelloWorld.scala 编译程序。2. 打开命令提示符或终端窗口,进入包含这个文件的目录。

2024-09-03 16:15:05 431 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除