Kotlin 2.1.0 入门教程(十一)for、while、return、break、continue
for
循环
for
循环会遍历任何提供迭代器的对象。
for (item in collection) print(item)for (int: Int in ints) {println(int)
}
for
循环会遍历任何提供迭代器的对象,这意味着该对象必须满足以下条件:
-
具有一个成员函数或扩展函数
iterator()
,该函数返回一个Iterator<>
对象,而该对象:-
具有一个成员函数或扩展函数
next()
。 -
具有一个成员函数或扩展函数
hasNext()
,该函数返回一个Boolean
。
-
-
这三个函数都需要被标记为
operator
。
要遍历一个数字范围,可以使用范围表达式。
for (i in 1..3) {print(i)
}for (i in 6 downTo 0 step 2) {print(i)
}
对于范围或数组的 for
循环会被编译成基于索引的循环,而不会创建迭代器对象。
如果你想要通过索引遍历数组或列表,可以这样操作:
for (i in array.indices) {print(array[i])
}
或者,你可以使用 withIndex()
库函数。
for ((index, value) in array.withIndex()) {println("the element at $index is $value")
}
while
循环
while
和 do-while
循环会在条件满足的情况下持续执行其主体。
它们之间的区别在于条件检查的时机:
-
while
循环会先检查条件,如果条件满足,则执行主体,然后返回检查条件。 -
do-while
循环会先执行主体,然后才检查条件。如果条件满足,则循环重复执行。因此,do-while
的主体至少会执行一次,无论条件是否满足。
while (x > 0) {x--
}do {val y = retrieveData()
} while (y != null) // y 在这里是可以访问的。
在循环中,Kotlin
支持传统的 break
和 continue
操作符。
返回和跳转
Kotlin
提供了三种结构化跳转表达式:
-
return
:默认情况下,return
会从最近的封闭函数或匿名函数中返回。 -
break
:会终止最近的封闭循环。 -
continue
:会跳过当前循环的当前迭代,继续执行下一次迭代。
fun example() {for (i in 1..10) {if (i == 5) {return // 从函数 example 中返回。}println(i)}
}
fun example() {for (i in 1..10) {if (i == 5) {break // 终止最近的循环。}println(i)}
}
fun example() {for (i in 1..10) {if (i == 5) {continue // 跳过当前迭代,继续下一次迭代。}println(i)}
}
return
的作用范围:
-
在匿名函数(如
fun
声明的函数)中,return
会从该函数返回。 -
在
Lambda
表达式中,return
会从最近的封闭函数返回,而不是从Lambda
表达式返回。如果需要从Lambda
表达式返回,可以使用标签。
break
和 continue
的作用范围:
-
break
和continue
只能用于循环结构(如for
、while
、do-while
)。 -
如果需要从嵌套循环中跳出,可以使用标签。
如果需要从嵌套循环中跳出,或者从 Lambda
表达式中返回,可以使用标签。例如:
loop@ for (i in 1..3) {for (j in 1..3) {if (i == 2 && j == 2) {break@loop // 从带有标签的外层循环中跳出。}println("i = $i, j = $j")}
}
所有这些表达式都可以作为更大表达式的一部分使用:
val s = person.name ?: return
这些表达式的类型是 Nothing
类型。
Nothing
类型是 Kotlin
中的一个特殊类型,表示《无值》。它是一个不可实例化的类型,表示代码不会返回任何值,通常用于表示程序的退出点(如 return
、throw
等)。
在上面的例子中:
-
person.name
是一个可能为null
的表达式。 -
?:
是Kotlin
的空合并运算符(Elvis
运算符),用于提供一个默认值,当左侧表达式为null
时,返回右侧的值。 -
如果
person.name
不为null
,则s
将被赋值为person.name
。 -
如果
person.name
为null
,则执行return
,表示从当前函数返回。 -
由于
return
是一个跳转表达式,它不会返回任何值,因此它的类型是Nothing
。这意味着val s = person.name ?: return
这行代码在person.name
为null
时,会直接从函数返回,而不会继续执行后续代码。
带标签的 break
和 continue
在 Kotlin
中,任何表达式都可以被标记上一个标签。
标签的格式是一个标识符后跟一个 @
符号,例如 abc@
或 fooBar@
。
要给一个表达式加上标签,只需在它前面添加一个标签即可。
fun main() {/*i = 1, j = 11i = 1, j = 12i = 1, j = 13i = 1, j = 14i = 1, j = 15i = 2, j = 11i = 2, j = 12*/loop@ for (i in 1..5) {for (j in 11..15) {if (i == 2 && j == 13) {break@loop}println("i = $i, j = $j")}}
}
fun main() {/*i = 1, j = 11i = 1, j = 12i = 1, j = 13i = 1, j = 14i = 1, j = 15i = 2, j = 11i = 2, j = 12i = 3, j = 11i = 3, j = 12i = 3, j = 13i = 3, j = 14i = 3, j = 15i = 4, j = 11i = 4, j = 12i = 4, j = 13i = 4, j = 14i = 4, j = 15i = 5, j = 11i = 5, j = 12i = 5, j = 13i = 5, j = 14i = 5, j = 15*/loop@ for (i in 1..5) {for (j in 11..15) {if (i == 2 && j == 13) {continue@loop}println("i = $i, j = $j")}}
}
在某些情况下,你可以在没有显式定义标签的情况下,非本地地(non-locally
)使用 break
和 continue
。这种非本地的用法在嵌套的内联函数中使用的 Lambda
表达式中是有效的。
break
和 continue
通常只能在它们所在的循环中使用。然而,在某些特定的上下文中,它们可以跨越多个作用域进行跳转,这种行为被称为《非本地跳转》。
当一个 Lambda
表达式被传递给一个内联函数(inline
函数)时,break
和 continue
可以在 Lambda
表达式中使用,而它们的作用范围会扩展到内联函数的调用点。这意味着你可以从 Lambda
表达式中跳转到外层的循环。
inline fun processList(list: List<Int>, action: (Int) -> Unit) {for (item in list) {action(item)}
}fun main() {val numbers = listOf(1, 2, 3, 4, 5)processList(numbers) { number ->if (number == 3) {break // 非本地 break,跳出 processList 的循环。}println(number)}
}
这种非本地跳转允许你从 Lambda
表达式中直接跳出外层的循环。
只有在内联函数中使用的 Lambda
表达式才支持非本地跳转。这是因为内联函数会将 Lambda
表达式直接插入到调用点,从而允许跳转到外层的作用域。
带标签的 return
函数可以通过函数字面量、局部函数和对象表达式进行嵌套。带标签的 return
允许你从外层函数返回。
最重要的用例是从 Lambda
表达式中返回。要从 Lambda
表达式返回,需要给 Lambda
表达式加上标签,并使用带标签的 return
。
fun main() {fun foo() {listOf(1, 2, 3, 4, 5).forEach lit@ {if (it == 3) return@litprint(it)}}foo() // 1245
}
现在,它只从 Lambda
表达式返回。
通常,使用隐式标签会更加方便,因为这种标签的名称与 Lambda
表达式所传递到的函数名称相同。
fun main() {fun foo() {listOf(1, 2, 3, 4, 5).forEach {if (it == 3) return@forEachprint(it)}}foo() // 1245
}
或者,你可以将 Lambda
表达式替换为匿名函数。在匿名函数中,return
语句将从匿名函数本身返回。
fun main() {fun foo() {listOf(1, 2, 3, 4, 5).forEach(fun (v: Int) {if (v == 3) returnprint(v)})}foo() // 1245
}
请注意,在前面的三个例子中,本地返回的使用与在普通循环中使用 continue
是类似的。
虽然没有直接等价于 break
的功能,但可以通过添加一个嵌套的 Lambda
表达式,并从其中非本地返回来模拟 break
的行为。
fun main() {// 12run loop@ {listOf(1, 2, 3, 4, 5).forEach {if (it == 3) return@loopprint(it)}}
}
fun main() {// 12run loop@ {listOf(1, 2, 3, 4, 5).forEach(fun (v: Int) {if (v == 3) return@loopprint(v)})}
}
当返回一个值时,解析器会优先考虑带标签的返回:
return@a 1
它是:在标签 @a
处返回值 1
。而不是:返回一个带标签的表达式 @a 1
。
在某些情况下,你可以在不使用标签的情况下从 Lambda
表达式返回。这种非本地返回位于 Lambda
表达式中,但会退出封闭的内联函数。
相关文章:
Kotlin 2.1.0 入门教程(十一)for、while、return、break、continue
for 循环 for 循环会遍历任何提供迭代器的对象。 for (item in collection) print(item)for (int: Int in ints) {println(int) }for 循环会遍历任何提供迭代器的对象,这意味着该对象必须满足以下条件: 具有一个成员函数或扩展函数 iterator()…...
深度探索DeepSeek:成本效益之辩与市场展望
摘要 DeepMind的CEO对DeepSeek的成本效益提出质疑,认为其成本被过度炒作。他指出,DeepSeek所使用的技术大多源自谷歌和DeepMind。然而,分析机构SemiAnalysis强调,DeepSeek的优势在于其成本与能力的卓越组合。尽管目前DeepSeek的成…...
DeepSeek投喂数据(训练AI)
1、拉取nomic-embed-text 打开命令行,运行:ollama pull nomic-embed-text 这里需要先安装ollama ,不过大家应该在本地部署模型时已经安装了 拉取成功就行了,后续在配置AnythingLLM时用到 2、下载 AnythingLLM 地址:…...
Docker 安装与配置 Nginx
摘要 1、本文全面介绍了如何在 Docker 环境中安装和配置 Nginx 容器。 2、文中详细解释了如何设置 HTTPS 安全连接及配置 Nginx 以实现前后端分离的代理服务。 2、同时,探讨了通过 IP 和域名两种方式访问 Nginx 服务的具体配置方法 3、此外,文章还涵…...
常用电路(过压保护、电流/电压采集)
过压保护电路 输入电压使用电源(36V)或者typec(20V),需要过压保护电路处理输入再连接到CH224K,保证输入不高于最大获取电压20V MOS管导通条件为栅源极有压差,一般为5-10V 三极管导通条件为基极…...
12.Python模块:模块中的__all__、模块制作、打包模块、模块安装与使用
在 Python 中,模块是一个包含 Python 代码的文件。模块可以包含函数、类和变量,也可以包括可执行的代码。Python提供了一套强大的模块系统,支持模块的制作、打包、安装和使用。接下来,我们将详细介绍 __all__、模块制作、打包模块…...
Socket通信端口绑定的逻辑实现
在实现网络通信时,一个 Socket 需要维护输入端与输出端的 IP 地址和端口号,同时也需要输入与输出字节缓冲区: 输入端与输出端的 IP 地址和端口号 作用 标识通信端点:IP 地址用于标识网络中的设备,端口号用于标识设备…...
在freertos中,中断优先级和任务优先级之间的关系和使用方法
中断优先级和任务优先级如何匹配?任务优先级不同任务之间该用多高的优先级?中断优先级不同中断中该用多高的优先级?中断优先级和任务优先级设置时,怎样设置可以让任务在调度时屏蔽中断?怎样设置可以让任务在调度时&…...
解锁摄影潜能:全面解析相机镜头的选择与使用逻辑
目录 一、镜头分类:从焦距到用途的底层逻辑 (一)按焦距和视角分类(一级分类) (二)按特殊用途分类(一级分类) 二、参数解码:超越 “光圈越大越好” 的思维定…...
java项目之直销模式下家具工厂自建网站源码(ssm+mysql)
风定落花生,歌声逐流水,大家好我是风歌,混迹在java圈的辛苦码农。今天要和大家聊的是一款基于ssm的直销模式下家具工厂自建网站源码。项目源码以及部署相关请联系风歌,文末附上联系信息 。 项目简介: 直销模式下家具…...
CNN-BiLSTM卷积神经网络双向长短期记忆神经网络多变量多步预测,光伏功率预测
代码地址:CNN-BiLSTM卷积神经网络双向长短期记忆神经网络多变量多步预测,光伏功率预测 CNN-BiLSTM卷积神经网络双向长短期记忆神经网络多变量多步预测 一、引言 1.1、研究背景和意义 光伏功率预测在现代电力系统中占有至关重要的地位。随着可再生能源…...
grid网格布局中实现父盒子比较大,子元素顶部对齐
css布局中使用grid布局,父盒子的高度是1000px,每个子元素高度是100px,现在有三个子元素,如何实现每行显示两个,并且子元素都顶部对齐?如图所示的效果。 grid布局文档:grid - CSS:层…...
P4814 [CCO 2014] 国王格鲁夫
题目描述 本题译自 CCO 2014 Day1 T2「King Gruff」 狼国王格鲁夫统治着一个居住着可爱的狐狸的繁荣、快乐的领地。对狐狸们来说,不幸的是,他根本不是一个好国王,而且还想让他们的生活过得很惨。 他的国家有 N 个城市,由 M 条路连接,第 i 条路可以让你从城市 Xi 走到…...
[QMT量化交易小白入门]-二十二、deepseek+cline+vscode,让小白使用miniQMT量化交易成为可能
本专栏主要是介绍QMT的基础用法,常见函数,写策略的方法,也会分享一些量化交易的思路,大概会写100篇左右。 QMT的相关资料较少,在使用过程中不断的摸索,遇到了一些问题,记录下来和大家一起沟通&a…...
吃瓜教程Day1笔记
主要内容: 1. 什么是机器学习以及 2. 机器学习的相关数学符号,为后续内容作铺垫,并未涉及复杂的算法理论, 因此阅读本章时只需耐心梳理清楚所有概念和数学符号即可。 3. “模型评估与选择” 是在模型产出以后进行的下游工作&…...
在 C# 中,处理 Excel 和 PDF 文件的库有很多。以下是一些比较常用的选择
读取 Excel 文件的库 NPOI 用途:可以读取和写入 .xls 和 .xlsx 文件。特点:无需安装 Microsoft Office,支持简单的 Excel 操作,如格式化、公式、图表等。 EPPlus 用途:主要用于 .xlsx 格式(Excel 2007 及以…...
IntelliJ IDEA 安装与使用完全教程:从入门到精通
一、引言 在当今竞争激烈的软件开发领域,拥有一款强大且高效的集成开发环境(IDE)是开发者的致胜法宝。IntelliJ IDEA 作为 JetBrains 公司精心打造的一款明星 IDE,凭借其丰富多样的功能、智能精准的代码提示以及高效便捷的开发工…...
SkyWalking 10.1.0 实战:从零构建全链路监控,解锁微服务性能优化新境界
文章目录 前言一、集成SkyWalking二、SkyWalking使用三、SkyWalking性能剖析四、SkyWalking 告警推送4.1 配置告警规则4.2 配置告警通知地址4.3 下发告警信息4.4 测试告警4.5 慢SQL查询 总结 前言 在传统监控系统中,我们通过进程监控和日志分析来发现系统问题&…...
1. 构建grafana(版本V11.5.1)
一、grafana官网 https://grafana.com/ 二、grafana下载位置 进入官网后点击downloads(根据自己的需求下载) 三、grafana安装(点击下载后其实官网都写了怎么安装) 注:我用的Centos,就简略的写下我的操作步…...
STM32-知识
一、Cortex-M系列双指针 Cortex-M系列的MSP与PSP有一些重要的区别,双指针是为了保证OS的安全性和稳健性。本质上,区别于用户程序使用PSP,操作系统和异常事件单独使用一个MSP指针的目的,是为了保证栈数据不会被用户程序意外访问或…...
SearchBar组件的功能与用法
文章目录 1. 概念介绍2. 使用方法3. 代码与效果3.1 示例代码3.2 运行效果 4. 内容总结 我们在上一章回中介绍了"Material3中的IconButton"相关的内容,本章回中将介绍SearchBar组件.闲话休提,让我们一起Talk Flutter吧。 1. 概念介绍 我们在本…...
解决VsCode的 Vetur 插件has no default export Vetur问题
文章目录 前言1.问题2. 原因3. 解决其他 前言 提示: 1.问题 Cannot find module ‘ant-design-vue’. Did you mean to set the ‘moduleResolution’ option to ‘node’, or to add aliases to the ‘paths’ option? Module ‘“/xxx/xxx/xxx/xxx/xxx/src/vie…...
游戏引擎学习第96天
讨论了优化和速度问题,以便简化调试过程 节目以一个有趣的类比开始,提到就像某些高端餐厅那样,菜单上充满了听起来陌生或不太清楚的描述,需要依靠服务员进一步解释。虽然这听起来有些奇怪,但实际上,它反映…...
【项目总结】易到家家政服务平台 —— 派单调度(7)
派单调度需求分析 在抢单业务中,用户下单成功由服务人员或机构进行抢单,抢单成功服务人员上门服务,除了抢单业务系统还设计了派单业务,由系统根据用户订单的特点自动派给合适的服务人员。 流程如下: 首先获取待分配…...
0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型
前言:哈喽,大家好,今天给大家分享一篇文章!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏关注哦 💕 目录 0基础…...
Flink-DataStream API
一、什么样的数据可以用于流式传输 Flink的DataStream API 允许流式传输他们可以序列化的任何内容。Flink自己的序列化程序用于 基本类型:即字符串、长、整数、布尔值、数组复合类型:元组、POJO和Scala样例类 基本类型我们已经很熟悉了,下…...
chromium-mojo
https://chromium.googlesource.com/chromium/src//refs/heads/main/mojo/README.md 相关类:https://zhuanlan.zhihu.com/p/426069459 Core:https://source.chromium.org/chromium/chromium/src//main:mojo/core/README.md;bpv1;bpt0 embedder:https://source.chr…...
Sourcetree 安装教程(附下载链接)
一、介绍 Sourcetree是一款免费的Git桌面工具,可以简化我们与Git之间敲代码的过程,使得我们可以更快的管理代码版本。 虽然现在各大IDE都内置Git功能,但在一些没有内置Git的IDE情况下,使用Sourcetree进行Git下的代码管理是一件非…...
NIO 和 AIO 的区别?
目录 设计理念 工作模式 适用场景 性能特点 NIO(Non - blocking I/O,非阻塞 I/O)和 AIO(Asynchronous I/O,异步 I/O)都是 Java 中用于实现高效 I/O 操作的机制,它们在设计理念、工作模式、适用场景等方面存在明显区别,以下为你详细介绍: 设计理念 NIO:NIO 基于事…...
Python中10个常用的接口自动化装饰器
更多Python学习内容:ipengtao.com 装饰器(Decorators)是Python中一种强大的编程工具,它们用于修改或增强函数或方法的行为。在接口自动化测试中,装饰器可以起到简化代码、提高代码可维护性和可重用性的作用。本文将介…...
Odoo17 0.1常见的QWeb 模板语言指令的详细总结
Odoo QWeb 模板语言提供了许多指令 (directives) 来增强 HTML 模板的功能,使其能够动态地展示数据、进行条件判断、循环遍历、以及实现更复杂的逻辑。 这些指令都以 t- 开头作为属性添加到 HTML 标签上。 以下是一些常见的 Odoo QWeb 模板语言指令的详细总结&#…...
螺旋矩阵 II
螺旋矩阵 II 一、题目描述 给定一个正整数 n,请你生成一个包含 1 到 n^2 所有元素的 n x n 正方形矩阵,元素顺序按顺时针的方式进行螺旋排列。 示例 1:输入:n 3 输出:[[1,2,3],[8,9,4],[7,6,5]]示例 2:…...
Object:所有类的超类
定义:所有类的超(父)类。 Object有下面几个常用的方法: equals():比较内存地址是否指向相同getclass():获取类的信息--反射领域hashcode 散列码--根据地址生成wait -- 线程进入等待状态,让出CPU和锁notify -- 唤醒等待…...
LabVIEW 开发航天项目软件
在航天项目软件开发中,LabVIEW 凭借其图形化编程优势被广泛应用。然而,航天项目的高可靠性、高精度及复杂环境适应性要求,使得在使用 LabVIEW 开发时,有诸多关键要点需要特别关注。本文将详细分析在开发航天项目软件时需要重点注意…...
docker部署superset并连接华为MRS hive数据库
下载构建源码 这个项目实现了汉化和开箱即用,感谢大佬 GitHub - lutinglt/superset-zh: Superset 汉化, Superset 中文版 替换国内apt源 查看debian版本,不同版本替换apt源的内容不同 cat /etc/debian_version我这里是11.9版本 apt源文件sources.li…...
在 Flutter 实现下拉刷新、上拉加载更多和一键点击回到顶部的功能
在 Flutter 中,实现下拉刷新、上拉加载更多和一键点击回到顶部的功能,通常会结合使用 RefreshIndicator、ListView 和 ScrollController 来实现这些交互效果。下面分别介绍如何实现这些功能。 1. 下拉刷新 Flutter 提供了 RefreshIndicator 组件来实现…...
Linux常见命令——系统定时任务
文章目录 crontab 服务管理crontab -e :编辑crontab 定时任务crontab -l 查看crontab 任务crontab -r 删除当前用户所有的crontab 任务 crontab 服务管理 systemctl status crond该系统进程是开机自启动,并且被打开了,可以使用。 crontab -e :编辑cr…...
国产编辑器EverEdit - 书签功能介绍
1 书签 1.1 应用场景 当用户在文档中多处进行编辑时,为了方便在多个编辑位置跳转,使用书签功能可以方便记录各个位置。 1.2 使用方法 1.2.1 切换书签 设置或取消光标所在行的书签 方法1:选择主菜单查找 -> 书签 -> 切换书签 方法2&…...
【Hadoop】大数据权限管理工具Ranger2.1.0编译
目录 编辑一、下载 ranger源码并编译 二、报错信息 报错1 报错2 报错3 报错4 一、下载 ranger源码并编译 ranger官网 https://ranger.apache.org/download.html 由于Ranger不提供二进制安装包,故需要maven编译。安装其它依赖: yum install gcc …...
推荐算法实践:movielens数据集
MovieLens 数据集介绍 MovieLens 数据集是由明尼苏达大学的GroupLens研究小组维护的一个广泛使用的电影评分数据集,主要用于推荐系统的研究。该数据集包含用户对电影的评分、标签以及其他相关信息,是电影推荐系统开发与研究的常用数据源。 数据集版本 …...
基于 PyTorch 的树叶分类任务:从数据准备到模型训练与测试
基于 PyTorch 的树叶分类任务:从数据准备到模型训练与测试 1. 引言 在计算机视觉领域,图像分类是一个经典的任务。本文将详细介绍如何使用 PyTorch 实现一个树叶分类任务。我们将从数据准备开始,逐步构建模型、训练模型,并在测试…...
生成式语言模型技术全解析
一、引言 在人工智能领域,生成式语言模型(Generative Language Models,GLMs)无疑是近年来最为耀眼的明星。从早期的简单语言模型到如今如DeepSeek、Qwen 2.5 Max等具有强大能力的先进模型,它们在自然语言处理的各个方…...
香港中文大学 Adobe 推出 MotionCanvas:开启用户掌控的电影级图像视频创意之旅。
简介: 亮点直击 将电影镜头设计引入图像到视频的合成过程中。 推出了MotionCanvas,这是一种简化的视频合成系统,用于电影镜头设计,提供整体运动控制,以场景感知的方式联合操控相机和对象的运动。 设计了专门的运动条…...
bazel 小白理解
Bazel命令是用于构建和测试软件项目的一个强大工具,尤其适用于大规模和多语言的软件项目。对于小白来说,可以这样理解Bazel及其命令: Bazel的基本概念 构建系统:Bazel是一个构建系统,它的主要任务是自动化地编译和链…...
基于Python深度学习的【蘑菇识别】系统~卷积神经网络+TensorFlow+图像识别+人工智能
一、介绍 蘑菇识别系统,本系统使用Python作为主要开发语言,基于TensorFlow搭建卷积神经网络算法,并收集了9种常见的蘑菇种类数据集【“香菇(Agaricus)”, “毒鹅膏菌(Amanita)”, “牛肝菌&…...
基于 STM32 平台的音频特征提取与歌曲风格智能识别系统
标题:基于 STM32 平台的音频特征提取与歌曲风格智能识别系统 内容:1.摘要 摘要:本文介绍了一种基于 STM32 平台的音频特征提取与歌曲风格智能识别系统。该系统通过对音频信号进行特征提取和分析,实现了对歌曲风格的自动识别。在特征提取方面,…...
AUTOGPT:基于GPT模型开发的实验性开源应用程序; 目标设定与分解 ;;自主思考与决策 ;;信息交互与执行
目录 AUTOGPT是一款基于GPT模型开发的实验性开源应用程序目标设定与分解自主思考与决策信息交互与执行AUTOGPT是一款基于GPT模型开发的实验性开源应用程序 目标设定与分解 自主思考与决策 信息交互与执行 AUTOGPT是一款基于GPT模型开发的实验性开源应用程序,它能让大语言模…...
DeepSeek底层揭秘——知识图谱与语料库的联邦学习架构
目录 1. 知识图谱与语料库的联邦学习架构 2. 技术要素 3. 技术难点与挑战 4. 技术路径 5. 应用场景 6. 最新研究与技术进展 7. 未来趋势 8. 实际案例 猫哥说 1. 知识图谱与语料库的联邦学习架构 (1) 定义 “知识图谱与语料库的联邦学习架构”是一种结合知识图谱&…...
MVVM设计模式
MVVM(Model-View-ViewModel)是一种软件设计模式,MVVM模式由三个主要部分组成: Model(模型):负责管理应用程序的业务逻辑和数据。它不关心UI如何展示数据,主要负责与服务器通信和数据处处…...
5.实时推荐系统的设计与实现
接下来我们将学习实时推荐系统的设计与实现。实时推荐系统需要处理大规模数据,并在用户交互时提供即时的推荐结果。这一课我们将介绍以下内容: 实时推荐系统的基本概念实时推荐系统的架构设计实时推荐系统的关键技术实践示例 1. 实时推荐系统的基本概念…...