当前位置: 首页 > news >正文

scala-集合2

可变数组

        定义变长数组

                val arr01 = ArrayBuffer[Any](3, 2, 5)

                (1)[Any]存放任意数据类型

                (2)(3, 2, 5)初始化好的三个元素

                (3)ArrayBuffer 需要引入 scala.collection.mutable.ArrayBuffer

        案例实操

  1. ArrayBuffer 是有序的集合
  2. 增加元素使用的是 append 方法(),支持可变参数
import scala.collection.mutable.ArrayBuffer 
object TestArrayBuffer {def main(args: Array[String]): Unit = {//(1)创建并初始赋值可变数组val arr01 = ArrayBuffer[Any](1, 2, 3)//(2)遍历数组for (i <- arr01) { println(i) }println(arr01.length) // 3 println("arr01.hash=" + arr01.hashCode())//(3)增加元素//(3.1)追加数据arr01 +=(4)//(3.2)向数组最后追加数据arr01.append(5,6)//(3.3)向指定的位置插入数据arr01.insert(0,7,8)println("arr01.hash=" + arr01.hashCode())//(4)修改元素arr01(1) = 9 //修改第2个元素的值println("----------------------------")for (i <- arr01) { println(i) }println(arr01.length) // 5}
}

 

不可变数组与可变数组的转换

        说明

arr1.toBuffer   //不可变数组转可变数组

arr2.toArray    //可变数组转不可变数组

  1. 不可变数组转可变数组:使用 to buffer 函数,返回一个新的可变数组,原数组不变。
  2. 可变数组转不可变数组:使用 to array 函数,返回一个新的不可变数组,原数组不变。

 

object TestArrayBuffer {
def main(args: Array[String]): Unit = {// (1) 创建一个空的可变数组val arr2 = ArrayBuffer[Int]()// (2) 追加值arr2.append(1, 2, 3)println(arr2) // 1,2,3// (3) ArrayBuffer ==> Array// (3.1) arr2 toArray 返回的结果是一个新的定长数组集合// (3.2) arr2 它没有任何变化val newArr = arr2.toArrayprintln(newArr)// (4) Array ===> ArrayBuffer// (4.1) newArr toBuffer 返回一个变长数组 newArr2// (4.2) newArr 没有任何变化,依然是定长数组val newArr2 = newArr.toBuffernewArr2.append(123)println(newArr2)}
}

 

多维数组

val arr = Array.ofDim[Double](3,4)

创建多维数组:使用 array of 函数,指定数据类型和规格(如三行四列)。

遍历多维数组:使用嵌套的 for 循环,逐行逐列遍历数组元素。

 

列表(List)

不可变列表:默认情况下,列表是不可变的,数据有序且可重复。

                        List 增加数据

                        集合间合并:将一个整体拆成一个一个的个体,称为扁平化

                        空集合 Nil

可变列表:使用 list buffer,需要导入相关包,支持添加、插入、修改和删除操作。

遍历列表:使用 for each 循环遍历列表元素。

        实操案例

                 

// 不可变list
object TestList {def main(args: Array[String]): Unit = {// (1) List默认为不可变集合// (2) 创建一个List(数据有顺序,可重复)val list: List[Int] = List(1,2,3,4,5)// (7) 空集合Nilval list5 = 1::2::3::4::Nil// (4) List增加数据// (4.1) ::的运算规则从右向左// val list1 = 5::list val list1 = 7::6::5::list// (4.2) 添加到第一个元素位置val list2 = list.+(5)// (5) 集合间合并:将一个整体拆成一个一个的个体,称为扁平化val list3 = List(8,9)// val list4 = list3::list1 val list4 = list3::list1// (6) 取指定数据println(list(0))// (3) 遍历List// list.foreach(println)// list1.foreach(println)// list3.foreach(println)// list4.foreach(println)list5.foreach(println)}
}//	可变ListBuffer
import scala.collection.mutable.ListBuffer
object TestList {def main(args: Array[String]): Unit = {// (1) 创建一个可变集合val buffer = ListBuffer(1, 2, 3, 4)// (2) 向集合中添加数据buffer += 5buffer.append(6)buffer.insert(1, 2)// (3) 打印集合数据buffer.foreach(println)// (4) 修改数据buffer(1) = 6buffer.update(1, 7)// (5) 删除数据buffer -= 5buffer -= 5buffer.remove(5)}
}

 

集合(Set)

        默认情况下, Scala 使用的是不可变集合, 如果你想使用可变集合, 需要引用scala.collection.mutable.Set 包

不可变集合(Set):数据无序且不可重复,使用 set 关键字创建,遍历时重复元素会被忽略。

可变集合( mutable.Set):使用 mutable.set,支持打印集合、添加、删除操作,添加元素会返回新的集合。

 

// 不可变 Set
object TestSet {def main(args: Array[String]): Unit = {//(1)Set默认是不可变集合,数据无序val set = Set(1,2,3,4,5,6)//(2)数据不可重复val set1 = Set(1,2,3,4,5,6,3)//(3)遍历集合for(x<-set1){println(x)}
}// 可变mutable.Set
object TestSet{def main(args: Array[String]): Unit = {//(1)创建可变集合val set = mutable.Set(1,2,3,4,5,6)//(3)集合添加元素set += 8//(4)向集合中添加元素,返回一个新的 Setval ints = set.+(9)println(ints) println("set2=" + set)//(5)删除数据set -= (5)//(2)打印集合set.foreach(println) println(set.mkString(","))}
}

Map(映射)集合

        Scala 中的 Map 和 Java 类似,也是一个散列表,它存储的内容也是键值对(key-value映射

不可变Map:使用 map 关键字创建,存储键值对,数据无序,键(key)不可重复

                访问数据:使用 get 方法,如果键不存在则返回默认值(如0)。

                遍历映射:使用 for each 循环遍历键值对。

可变Map:使用 mutable map,支持打印集合、添加、删除、修改操作。

                添加数据:使用 + 操作符添加键值对。

                删除数据:使用 - 操作符删除指定键的键值对。

                修改数据:直接通过键赋值修改。

// ​​不可变Map
object TestMap {def main(args: Array[String]): Unit = {// Map// (1) 创建不可变集合 Mapval map = Map("a" -> 1, "b" -> 2, "c" -> 3)// (3) 访问数据for (elem <- map.keys) {// 使用 get 访问 map 集合的数据,会返回特殊类型 Option(选项):有值(Some),无值(None)println(elem + "=" + map.get(elem).get)}// (4) 如果 key 不存在,返回 0println(map.getOrElse("d", 0))println(map.getOrElse("d", 0))// (2) 循环打印map.foreach((kv) => { println(kv) })}
}// 可变Map
object TestSet {def main(args: Array[String]): Unit = {// (1) 创建可变集合val map = mutable.Map("a" -> 1, "b" -> 2, "c" -> 3)// (3) 向集合增加数据map += ("d" -> 4)// 将数值 4 添加到集合,并把集合中原值 1 返回val maybeInt: Option[Int] = map.put("a", 4)println(maybeInt.getOrElse(0))// (4) 删除数据map -= ("b", "c")// (5) 修改数据map.update("d", 5)map("d") = 5// (2) 打印集合map.foreach((kv) => { println(kv) })}
}​

        注意事项

                数据结构的选择:根据需求选择合适的数据结构,如有序且可重复的列表,无序且不可重复的集合。

                操作的正确性:确保操作的变量类型正确,特别是在涉及可变和不可变数据结构时。

元组

        元组也是可以理解为一个容器,可以存放各种相同或不同类型的数据。说的简单点,就是将多个无关的数据封装为一个整体,称为元组。

注意: 

                元组可容纳各种类型的数据,最大只能有 22 个元素。

                声明方式为元素间用逗号分隔。

                可通过点杠或索引访问元素,也能用迭代器访问。

案例实操

        声明元组的方式:(元素 1,元素 2,元素 3)

        访问元组

        Map 中的键值对其实就是元组,只不过元组的元素个数为 2,称之为对偶

object TestTuple {def main(args: Array[String]): Unit = {// (1) 声明元组的方式:(元素1,元素2,元素3)val tuple: (Int, String, Boolean) = (40,"bobo",true)// (2) 访问元组// (2.1) 通过元素的顺序进行访问,调用方式:_顺序号println(tuple._1)println(tuple._2)println(tuple._3)// (2.2) 通过索引访问数据println(tuple.productElement(0))// (2.3) 通过迭代器访问数据for (elem <- tuple.productIterator) { println(elem) }// (3) Map 中的键值对其实就是元组,只不过元组的元素个数为 2,称之为对偶val map = Map("a"->1, "b"->2, "c"->3) val map1 =Map(("a",1), ("b",2), ("c",3))map.foreach(tuple=>{println(tuple._1 + "=" + tuple._2)})}
}

集合常用函数

基本属性和常见操作

        包括获取集合长度(size)和大小(size)。

        循环遍历用 for each,迭代器用 for 循环,生成字符串用点 mkString。

        判断是否包含特定值。

object TestList {def main(args: Array[String]): Unit = {val list: List[Int] = List(1, 2, 3, 4, 5, 6, 7)// (1) 获取集合长度println(list.length)// (2) 获取集合大小,等同于 lengthprintln(list.size)// (3) 循环遍历list.foreach(println)// (4) 迭代器for (elem <- list.iterator) { println(elem) }// (5) 生成字符串println(list.mkString(","))//(6)是否包含println(list.contains(3))}
}

 

 衍生集合

        获取列表的头、尾、最后一个数据,初始值为零,集合初始数据(不包含最后一个)

        可进行反转、取前几个或后几个数据(take、take right),删除前几个或后几个元素(drop、drop right),求并集(union)、交集(intersect)、差集(diff)、拉链(zip)、滑窗(sliding)操作

 

object TestList {def main(args: Array[String]): Unit = {val list1: List[Int] = List(1, 2, 3, 4, 5, 6, 7)val list2: List[Int] = List(4, 5, 6, 7, 8, 9, 10)//(1)获取集合的头println(list1.head)//(2)获取集合的尾(不是头的的就是尾)println(list1.tail)//(3)集合最后一个数据println(list1.last)//(4)集合初始数据(不包含最后一个)println(list1.init)//(5)反转println(list1.reverse)//(6)取前(后)n个元素println(list1.take(3)) println(list1.takeRight(3))//(7)去掉前(后)n个元素println(list1.drop(3))println(list1.dropRight(3))//(8)并集println(list1.union(list2))//(9)交集println(list1.intersect(list2))//(10)差集println(list1.diff(list2))//(11)拉链 注:如果两个集合的元素个数不相等,那么会将同等数量的数据进行拉链,多余的数据省略不用println(list1.zip(list2))//(12)滑窗list1.sliding(2, 5).foreach(println)}
}

集合计算简单函数

        涉及求和、求乘积、求最大值、最小值和排序。

        排序有按元素大小(sort)、按绝对值、升序(ascending)、降序(descending)等方式。

object TestList {def main(args: Array[String]): Unit = {val list: List[Int] = List(1, 5, -3, 4, 2, -7, 6)//(1)求和println(list.sum)//(2)求乘积println(list.product)//(3)最大值println(list.max)//(4)最小值println(list.min)//(5)排序//(5.1)按照元素大小排序println(list.sortBy(x => x))//(5.2)按照元素的绝对值大小排序println(list.sortBy(x => x.abs))//(5.3)按元素大小升序排序println(list.sortWith((x, y) => x < y))//(5.4)按元素大小降序排序println(list.sortWith((x, y) => x > y))}
}

(1) sorted
对一个集合进行自然排序,通过传递隐式的 Ordering

(2) sortBy
对一个属性或多个属性进行排序,通过它的类型。

(3) sortWith
基于函数的排序,通过一个 comparator 函数,实现自定义排序的逻辑。

相关文章:

scala-集合2

可变数组 定义变长数组 val arr01 ArrayBuffer[Any](3, 2, 5) &#xff08;1&#xff09;[Any]存放任意数据类型 &#xff08;2&#xff09;(3, 2, 5)初始化好的三个元素 &#xff08;3&#xff09;ArrayBuffer 需要引入 scala.collection.mutable.ArrayBuffer 案例实操 Arra…...

Clang编译器优化选项

Clang 作为 C/C 编译器&#xff0c;提供了丰富的优化选项&#xff0c;以下是主要的优化相关选项分类和说明&#xff1a; 1. 优化级别&#xff08;通用选项&#xff09; 选项说明-O0默认级别&#xff0c;禁用所有优化&#xff0c;用于调试。-O1基础优化&#xff08;代码大小和执…...

Java文件流操作 - 【Guava】IO工具

引言 Guava 使用术语 流来表示可关闭的&#xff0c;并且在底层资源中有位置状态的 I/O 数据流。字节流对应的工具类为 ByteSterams&#xff0c;字符流对应的工具类为 CharStreams。 Guava 中为了避免和流直接打交道&#xff0c;抽象出可读的 源 source 和可写的 汇 sink 两个概…...

C语言中单链表操作:查找节点与删除节点

一. 简介 前面学习了C语言中创建链表节点&#xff0c;向链表中插入节点等操作&#xff0c;文章如下&#xff1a; C语言中单向链表&#xff1a;创建节点与插入新节点-CSDN博客 本文继续学习c语言中对链表的其他操作&#xff0c;例如在链表中查找某个节点&#xff0c;删除链表…...

mapbox基础,加载栅格图片到地图

👨‍⚕️ 主页: gis分享者 👨‍⚕️ 感谢各位大佬 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍⚕️ 收录于专栏:mapbox 从入门到精通 文章目录 一、🍀前言1.1 ☘️mapboxgl.Map 地图对象1.2 ☘️mapboxgl.Map style属性1.3 ☘️raster 栅格图层 api二、🍀使用本地载…...

Linux红帽:RHCSA认证知识讲解(十 二)调试 SELinux,如何管理 SELinux 的运行模式、安全策略、端口和上下文策略

Linux红帽&#xff1a;RHCSA认证知识讲解&#xff08;十 二&#xff09;调试 SELinux&#xff0c;如何管理 SELinux 的运行模式、安全策略、端口和上下文策略 前言一、SELinux 简介二、SELinux 的运行模式2.1 查看和切换 SELinux 模式 三、SELinux 预设安全策略的开关控制四、管…...

模糊斜率熵Fuzzy Slope entropy+状态分类识别!2024年11月新作登上IEEE Trans顶刊

引言 2024年11月&#xff0c;研究者在测量领域国际顶级期刊《IEEE Transactions on Instrumentation and Measurement》&#xff08;IF 5.6&#xff0c;JCR 1区&#xff0c;中科院二区&#xff09;上发表科学研究成果&#xff0c;以“Optimized Fuzzy Slope Entropy: A Comple…...

【MATLAB】将数据保存在mat文件中 save/load/matfile

MAT文件为MATLAB格式的二进制文件 save()函数 save - 将工作区变量保存到文件中 save(filename) 将当前工作区中的所有变量保存在 MATLAB 格式的二进制文件&#xff08;MAT 文件&#xff09;filename 中。如果 filename 已存在&#xff0c;save 会覆盖该文件。 save(filena…...

009_抽象类和接口

抽象类和接口 final关键字常量 单例模式&#xff08;设计模式&#xff09;枚举类抽象类抽象类的注意事项、特点使用抽象类的好处模版方法设计模式 接口接口的好处接口的注意事项 final关键字 final关键字是最终的意思&#xff0c;可以修饰类、方法、变量。 修饰类&#xff1a;…...

【数据结构】排序算法(下篇·开端)·深剖数据难点

前引&#xff1a;前面我们通过层层学习&#xff0c;也就了解了Hoare大佬的排序思想&#xff0c;今天我们学习的东西可能稍微有点难度&#xff0c;因此我们必须学会思想&#xff0c;我很受感慨&#xff0c;因此借此分享一下&#xff1a;【用1520分钟去调试】&#xff0c;如果我们…...

Elixir语言的计算机视觉

Elixir语言在计算机视觉中的应用 引言 计算机视觉作为一门交叉学科&#xff0c;近年来随着深度学习技术的发展而蓬勃发展。传统上&#xff0c;计算机视觉应用通常采用Python、C等语言进行开发&#xff0c;因为这些语言拥有强大的图像处理库和深度学习框架。然而&#xff0c;随…...

VTK知识学习(51)- 交互与Widget(二)

1、交互器样式 前面所讲的观察者/命令模式是 VTK实现交互的方式之一。在前面示例 所示的窗口中可以使用鼠标与柱体进行交互&#xff0c;比如用鼠标滚轮可以对柱体放大、缩小;按下鼠标左键不放&#xff0c;然后移动鼠标&#xff0c;可以转动柱体;按下鼠标左键&#xff0c;同时按…...

目标跟踪Deepsort算法学习2025.4.7

一.DeepSORT概述 1.1 算法定义 DeepSORT(Deep Learning and Sorting)是一种先进的多目标跟踪算法,它结合了深度学习和传统的目标跟踪技术,在复杂环境下实现了高精度和鲁棒性的目标跟踪。该算法的核心思想是通过融合目标的外观特征和运动特征,实现对多个目标的持续跟踪,…...

nacos集群启动问题

根据您的描述&#xff0c;Nacos集群只能启动两个节点&#xff0c;可能的原因和解决方法如下&#xff1a; 1. 集群配置问题 • 原因&#xff1a;cluster.conf文件中可能只配置了两个节点的地址&#xff0c;导致第三个节点无法加入集群。 • 解决方法&#xff1a; • 检查每个…...

八大排序——c++版

本次排序都是按照升序排的 冒泡排序 void bubbleSort(vector<int>& nums) {int nnums.size();for(int i0;i<n-1;i){bool swappedfalse;for(int j0;j<n-1-i;j){if(nums[j]>nums[j1]){swap(nums[j],nums[j1]);swappedtrue;}}if(!swapped)break;} } //算法原…...

关于Spring MVC中传递数组参数的详细说明,包括如何通过逗号分隔的字符串自动转换为数组,以及具体的代码示例和总结表格

以下是关于Spring MVC中传递数组参数的详细说明&#xff0c;包括如何通过逗号分隔的字符串自动转换为数组&#xff0c;以及具体的代码示例和总结表格&#xff1a; 1. 核心机制 Spring MVC支持直接通过逗号分隔的字符串将请求参数自动转换为数组&#xff08;String[]、int[]等&…...

VBA之Word应用:利用Range方法进行字体及对齐方式设置

《VBA之Word应用》&#xff08;版权10178982&#xff09;&#xff0c;是我推出第八套教程&#xff0c;教程是专门讲解VBA在Word中的应用&#xff0c;围绕“面向对象编程”讲解&#xff0c;首先让大家认识Word中VBA的对象&#xff0c;以及对象的属性、方法&#xff0c;然后通过实…...

区块链技术:重塑供应链管理的未来

在当今全球化的商业环境中&#xff0c;供应链管理的复杂性和重要性日益凸显。从原材料采购到产品交付&#xff0c;供应链的每一个环节都可能影响企业的运营效率和客户满意度。随着区块链技术的兴起&#xff0c;供应链管理迎来了新的变革机遇。本文将深入探讨区块链技术在供应链…...

请回答集成测试和系统测试的区别,以及它们的应用场景主要是什么?

导语: 深夜收到粉丝私信:"面了5家大厂,4家都问集成测试和系统测试的区别,求大佬支招!" 作为经历过200+项目实战的测试老司机,今天用4个真实项目案例+3张原理图,带你彻底吃透这两个核心测试阶段!(文末送测试用例模板) 一、灵魂三问:到底测什么? 1.1 集成…...

SVT-AV1学习-svt_aom_get_sg_filter_level,svt_av1_selfguided_restoration_c

SVT-AV1学习-svt_aom_get_sg_filter_level,svt_av1_selfguided_restoration_c 一 函数的作用 根据编码模式&#xff0c;输入分辨率和快速解码标志动态计算自引导恢复(Self Guide Restoration)过滤器的启动级别&#xff0c;以下是详细解析&#xff1b; 1 参数说明 EncMode enc_m…...

第七章总结:集合

一、集合简介 Scala集合分为三大类&#xff1a;序列&#xff08;Seq&#xff09;、集&#xff08;Set&#xff09;、映射&#xff08;Map&#xff09;&#xff0c;所有集合都扩展自Iterable特质。集合分为可变集合和不可变集合&#xff1a; 不可变集合&#xff1a;scala.collec…...

玄机靶场:apache日志分析

什么是Apache日志 Apache日志‌是Apache Web服务器在处理HTTP请求时记录的所有事件的详细信息。Apache是全球最受欢迎的Web服务器软件之一&#xff0c;支持约30.2%的所有活跃网站。Apache通过记录每次请求的信息&#xff0c;包括时间、来源IP、请求的资源等&#xff0c;帮助分…...

Laravel 使用 事件和监听器实现 数据状态变更

首先知道事件是什么 1.事件的概念 事件(Event)是 Laravel 中实现观察者模式的一种机制&#xff0c;它允许应用程序中的不同部分进行松耦合的通信。 通俗一点就是&#xff0c;发生在应用程序中的动作或者事情。例如&#xff1a; 用户注册成功后&#xff0c;需要发邮件&#…...

uniapp App页面通过 web-view 调用网页内方法

先是报这个错 A parser-blocking, cross site (i.e. different eTLD1) script, https://api.map.baidu.com/getscript?v3.0&akpgJsRF87Fjia&services&t20250225111334, is invoked via document.write. The network request for this script MAY be blocked by t…...

Daz3D角色UE5材质优化

解决Daz3D人物角色导入UE5后材质不真实的问题 1. 引言&#xff1a;跨平台3D资产传输中的材质保真度挑战 在当今的数字内容创作领域&#xff0c;对高质量3D人物角色的需求日益增长&#xff0c;广泛应用于游戏开发、电影制作、虚拟现实等多种应用场景。Daz3D因其丰富的人物模型…...

Android studio

问题&#xff1a;没有界面可以操作&#xff0c;页面没有hello wolrd 原因&#xff1a;gradle没同步完&#xff0c;依赖项没有下载完整&#xff0c;所以布局预览看不了...

Playwright快照测试:如何让UI回归测试变得轻松高效

引言 使用带有模拟数据的PlaywrightP快照可以显著提高UI回归测试的速度。它能够快速自动化检查三大主流浏览器&#xff08;Chromium、Firefox、Webkit&#xff09;中的 UI 元素。你可以将多个断言绑定到一个快照上&#xff0c;这极大地提高了 UI 测试的效率。在 GUI 应用快速扩…...

控制理论-传递函数

【硬核】终于有人把传递函数和卷积定理讲明白了&#xff01;自动控制原理入门-传递函数 | 卷积定理 | 频率响应 | 喵星考拉...

虚拟世界的AI魔法:AIGC引领元宇宙创作革命

云边有个稻草人-CSDN博客——个人主页 热门文章_云边有个稻草人的博客-CSDN博客——本篇文章所属专栏 ~ 欢迎订阅~ 目录 1. 引言 2. 元宇宙与虚拟世界概述 2.1 什么是元宇宙&#xff1f; 2.2 虚拟世界的构建 3. AIGC在元宇宙中的应用 3.1 AIGC生成虚拟世界环境 3.2 AIGC…...

带QT界面的文件管理系统

下载地址 下载&完整介绍地址&#xff1a;https://www.mcso.top/course-design/qt-filesystem/ 开源地址&#xff1a;https://github.com/mcdudu233/FileSystem.git 软件包含 &#xff08;1&#xff09;设计数据的结构 &#xff08;2&#xff09;设计文件管理系统 &…...

【区块链安全 | 第二十六篇】表达式与控制结构(二)

文章目录 表达式与控制结构赋值结构化赋值与返回多个值数组和结构体的赋值复杂性作用域和声明检查或不检查的算术运算错误处理:Assert、Require、Revert 和异常通过 assert 进行 Panic 和通过 require 进行 Errorreverttry/catch表达式与控制结构 赋值 结构化赋值与返回多个…...

2025年前端框架全景解析:React、Vue、Angular的生态与未来之争

一、市场格局:全球与国内的双重差异12 全球市场React:凭借Facebook的支持和庞大的社区,全球使用率超40%,尤其在数据密集型应用(如金融、社交平台)中占据主导。其跨平台能力(React Native)和灵活生态(Next.js、Redux)是核心竞争力。Vue:亚洲市场占比显著,中国开发者…...

【VScode】C/C++使用教程

编辑器 1. VScode本质上是一款代码编辑器&#xff0c;上面包含了许多插件。 VScode下载 1. 下载链接&#xff1a;Download Visual Studio Code - Mac, Linux, Windowshttps://code.visualstudio.com/download2. 在拓展部分下载汉化包&#xff1a;Chinese。 编译器 1. 我们使用M…...

【Node】如何使用PM2高效部署nodejs前端应用

引言 Node.js 这个服务端 JavaScript 运行时&#xff0c;能帮你打造高性能的实时 Web 和移动应用。不过相比传统的 Apache 或 Nginx 这类 Web 服务器&#xff0c;Node 应用的管理可要多花点心思。 PM2 就是专为生产环境设计的 Node 应用进程管理系统。这篇指南将手把手教你安…...

从零开始的图论讲解(1)——图的概念,图的存储,图的遍历与图的拓扑排序

目录 前言 图的概念 1. 顶点和边 2. 图的分类 3. 图的基本性质 图的存储 邻接矩阵存图 邻接表存图 图的基本遍历 拓扑排序 拓扑排序是如何写的呢? 1. 统计每个节点的入度 2. 构建邻接表 3. 将所有入度为 0 的节点加入队列 4. 不断弹出队头节点&#xff0c;更新其…...

无人机双频技术及底层应用分析!

一、双频技术的核心要点 1. 频段特性互补 2.4GHz&#xff1a;穿透力强、传输距离远&#xff08;可达5公里以上&#xff09;&#xff0c;适合复杂环境&#xff08;如城市、建筑物密集区&#xff09;&#xff0c;但易受Wi-Fi、蓝牙等设备的干扰。 5.8GHz&#xff1a;带宽更…...

基础知识补充篇:认识区块链浏览器

专栏:区块链入门到放弃查看目录-CSDN博客文章浏览阅读218次。为了方便查看将本专栏的所有内容列出目录,按照顺序查看即可。https://blog.csdn.net/qq_22502303/article/details/147022618?spm=1001.2014.3001.5501 前言 在《基础知识补充篇:什么是区块链RPC节点》文中笔者…...

git rebase复杂场景验证

经常面临复杂的分支管理&#xff0c;这里对几种场景的行为做一些验证。 结论总结 git rebase br_name&#xff1a;等价与新建br_name分支&#xff0c;然后找到当前分支与br_name分支的分叉点。然后把分叉点以后的提交&#xff08;当前分支&#xff09;一个一个的cherry-pick过…...

安宝特应用 | 工业AR技术赋能高端制造领域验收流程数字化转型

引言 随着高端制造行业对效率与安全要求的不断提升&#xff0c;传统验收模式正迎来智能化升级。针对特殊行业产品验收过程中存在的跨区域协作难、人工核验效率低等痛点&#xff0c;基于AR增强现实技术的智能验收方案正在成为转型新方向。 01 可视化协同提升验收效能 安宝特AR…...

Spring启示录、概述、入门程序以及Spring对IoC的实现

一、Spring启示录 阅读以下代码&#xff1a; dao package org.example1.dao;/*** 持久层* className UserDao* since 1.0**/ public interface UserDao {/*** 根据id删除用户信息*/void deleteById(); } package org.example1.dao.impl;import org.example1.dao.UserDao;/**…...

Oracle 23ai Vector Search 系列之4 VECTOR数据类型和基本操作

文章目录 Oracle 23ai Vector Search 系列之4 VECTOR数据类型和基本操作VECTOR 数据类型基本语法Vector 维度限制和向量大小向量存储格式&#xff08;DENSE vs SPARSE&#xff09;1. DENSE存储2. SPARSE存储3. 内部存储与空间计算 Oracle VECTOR数据类型的声明格式VECTOR基本操…...

如何用开源工具,把“定制动漫面具”做成柔性制造?

原文链接&#xff1a;https://www.nocobase.com/cn/blog/kigland。 引言 在苏州&#xff0c;有一支团队正在悄悄改变个性化制造的方式。他们不做快消品&#xff0c;也不靠规模取胜&#xff0c;却在全球角色扮演爱好者圈子里收获了不少“忠粉”。 他们叫 KIGLAND&#xff0c;一…...

《命理学》专项探究与研习

基础论调 八字是什么 八字&#xff1a;用天干地支表示一个人的出生时间 例如&#xff1a; 如上图&#xff1a;某人的干支历出生时间&#xff1a;甲申年--己巳月--戊戌日--癸丑时 十天干 甲乙丙丁戊己庚辛壬癸 奇数位为阳&#xff0c;偶数位为阴 十二地支 子丑寅卯辰巳午未申酉…...

Linux 指令初探:开启终端世界的大门

前言 当我们初次接触 Linux&#xff0c;往往会被一串串在黑底屏幕中跳动的字符震撼甚至吓退。然而&#xff0c;正是这些看似晦涩的命令&#xff0c;构建了服务器、嵌入式系统乃至云计算的世界。 本篇将带你从最基础的 Linux 指令开始&#xff0c;逐步揭开命令行的神秘面纱。从…...

CentOS 7 yum 无法安装软件的解决方法

一、解决方法 1、备份原有的 CentOS 7 默认 YUM 源配置文件 mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup2、从阿里云镜像源下载 CentOS 7 的 YUM 源配置文件&#xff0c;并覆盖原有的配置文件 wget -O /etc/yum.repos.d/CentOS-Base.re…...

oracle 游标的管理

8.2.1游标的概念和类型 游标(CURSOR)存储于服务器端&#xff0c;当服务器执行了一个查询后&#xff0c;查询返回的记录集存放在光标中&#xff0c;通过光标上的操作可以把这些记录检索到客户端的应用程序。光标是一种变量&#xff0c;它对应于一个查询语句确定的结果集。它用于…...

深入理解PCA降维:原理、实现与应用

1. 引言 在机器学习与数据科学领域&#xff0c;我们经常会遇到高维数据带来的"维度灾难"问题。随着特征数量的增加&#xff0c;数据稀疏性、计算复杂度等问题会显著加剧。主成分分析(PCA, Principal Component Analysis)作为一种经典的降维技术&#xff0c;能够有效解…...

AI重构农业:从“面朝黄土“到“数字原野“的产业跃迁—读中共中央 国务院印发《加快建设农业强国规划(2024-2035年)》

在东北黑土地的万亩良田上&#xff0c;无人机编队正在执行精准施肥作业&#xff1b;在山东寿光的智慧大棚里&#xff0c;传感器网络实时调控着番茄生长的微环境&#xff1b;在云南的咖啡种植园中&#xff0c;区块链溯源系统记录着每粒咖啡豆的旅程。这场静默的农业革命&#xf…...

当前主流的LLM Agent架构、能力、生态和挑战

一、LLM Agent的基本架构 尽管LLM Agent的具体实现五花八门&#xff0c;但大部分系统在架构层面上可以归纳为以下几个关键模块&#xff1a; 感知&#xff08;Perception&#xff09; Agent需要感知外界的信息。对于文本环境&#xff0c;感知往往是读取输入&#xff08;如用户指…...

网站缓存怎么检查是否生效?

为何选择CDN缓存技术&#xff1f; 部署内容缓存系统可有效提升网页响应效率&#xff0c;降低服务器资源占用与流量消耗&#xff0c;改善访客交互体验&#xff0c;强化系统架构容错能力&#xff0c;促进搜索引擎优化效果&#xff0c;达成资源分配与运行效能的动态平衡。 科学配…...