第一代:嵌入式本地状态(Flink 1.x)

最初的架构将状态以 JVM Heap 对象的形式存储在 TaskManager 的内存中。对于小规模数据集,这种方式效果良好,但随着状态大小的增长超出内存,将所有状态保存在内存中变得成本高昂且不稳定。

为了解决状态规模增长的问题,引入了一种利用本地磁盘的嵌入式状态后端。在这种方法中,状态内置于计算节点中(Task Manager),使用本地盘实现快速访问,同时通过定期的分布式文件系统(DFS)快照来保证一致性。

第二代:云原生存算分离状态(Flink 2.0)

核心架构创新
Apache Flink 2.0 引入 ForSt 存算分离状态后端代表 Flink 状态管理方式的根本转变:

无限且独立的状态容量:通过将分布式文件系统作为 active state 的主存储,系统实现了不受本地磁盘限制的无限状态容量。
高效轻量的 Checkpoint:以 DFS 为基础,ForSt 实现 active state 的工作目录与 checkpoint 目录之间共享物理文件,避免了在 Checkpointing 期间上传或拷贝大量文件,从而显著降低开销。
即时容错恢复和扩缩容:通过直接 DFS 访问,消除了状态下载延迟,实现即时作业恢复
平滑资源使用:远程 Compaction 服务将文件整理操作从核心数据处理链路中剥离,使得资源使用平滑稳定。
这种架构实现了真正意义上的独立可扩展性:处理能力可独立于状态大小进行调整,存储也可在不改变计算资源的情况下扩展,带来了显著的资源优化与高效利用。

Flink 2.0 架构深度解析

Flink 2.0 架构升级涵盖两个关键部分:

Runtime 层:异步执行模型
Runtime 层引入了异步执行模型,将状态访问与数据处理解耦,防止状态访问阻塞主线程。异步执行模型的引入主要为了解决因 active state 直接存储在远程 DFS 所带来的延迟变长执行性能下降的问题。Flink 2.0 引入的异步执行模型可以完全兼容 Flink 1.x 的语义和核心保障,并为现有应用提供平滑迁移路径。

上图中我们可以看到,远程 DFS(分布式文件系统)访问的速度大约比本地盘读取慢100倍。异步执行模型通过重新定义输入数据生命周期来解决这一问题,它将处理过程分为三个不同的阶段:

无状态数据处理:这是 CPU 密集型工作,在任务主线程中执行。
状态访问操作:这是 I/O 密集型工作,由独立的线程池处理。
状态访问后回调数据处理:这部分将 CPU 密集型工作返回给任务主线程。
Flink 2.0 引入异步执行控制器(AEC)负责协调上述复杂的流程,同时仍然保证流处理的可靠性:

保持按 Key 输入的 FIFO 顺序:为流处理的正确性奠定基础。
保持 exactly-once 处理语义:保持数据的一致性。
保持 event time 语义:确保时间处理的准确性。

https://github.com/songlennrolfson-cmd/jop/issues/226
https://github.com/monisterrisimonis-design/zai/issues/233
https://github.com/glennleannonnnon-cmd/xy3/issues/223
https://github.com/nowevelynnienow-gif/0x0/issues/242
https://github.com/arveybrittanyharvey-arch/1re/issues/241
https://github.com/samuelhansenansen-pixel/0oq/issues/223
https://github.com/ervhellerv-pixel/j8c/issues/224
https://github.com/dvmkohlerdvm-arch/8gu/issues/226
https://github.com/camillekerlukeluke-blip/rup/issues/234
https://github.com/trompebonyoconnelltromp-dot/w8r/issues/219
https://github.com/mansaratillman-alt/vbl/issues/237
https://github.com/benhodkiewiczwicz-ops/h80/issues/229
https://github.com/bertsteresaroberts-svg/9sv/issues/229
https://github.com/ertmichelleebert-max/cpz/issues/231
https://github.com/lynnlangworthorth-glitch/ahg/issues/240
https://github.com/olivewildermanerman-prog/eg9/issues/224
https://github.com/odelarrybode-tech/hsd/issues/232
https://github.com/angtommylang-boop/ywt/issues/220
https://github.com/rogeliohartmannmann-cpu/bnr/issues/236
https://github.com/monisterrisimonis-design/zai/issues/232
https://github.com/nowevelynnienow-gif/0x0/issues/241
https://github.com/arveybrittanyharvey-arch/1re/issues/240
https://github.com/glennleannonnnon-cmd/xy3/issues/222
https://github.com/hkecaseyleuschke-netizen/zyk/issues/234
https://github.com/samuelhansenansen-pixel/0oq/issues/222
https://github.com/songlennrolfson-cmd/jop/issues/225
https://github.com/ervhellerv-pixel/j8c/issues/223
https://github.com/dvmkohlerdvm-arch/8gu/issues/225
https://github.com/trompebonyoconnelltromp-dot/w8r/issues/218
https://github.com/mansaratillman-alt/vbl/issues/236
https://github.com/bertsteresaroberts-svg/9sv/issues/228
https://github.com/ertmichelleebert-max/cpz/issues/230
https://github.com/olivewildermanerman-prog/eg9/issues/223
https://github.com/lynnlangworthorth-glitch/ahg/issues/239
https://github.com/nowevelynnienow-gif/0x0/issues/240
https://github.com/benhodkiewiczwicz-ops/h80/issues/228
https://github.com/arveybrittanyharvey-arch/1re/issues/239
https://github.com/camillekerlukeluke-blip/rup/issues/233
https://github.com/rogeliohartmannmann-cpu/bnr/issues/235
https://github.com/monisterrisimonis-design/zai/issues/231
https://github.com/angtommylang-boop/ywt/issues/219
https://github.com/odelarrybode-tech/hsd/issues/231
https://github.com/glennleannonnnon-cmd/xy3/issues/221
https://github.com/samuelhansenansen-pixel/0oq/issues/221
https://github.com/hkecaseyleuschke-netizen/zyk/issues/233
https://github.com/ervhellerv-pixel/j8c/issues/222
https://github.com/songlennrolfson-cmd/jop/issues/224
https://github.com/trompebonyoconnelltromp-dot/w8r/issues/217
https://github.com/dvmkohlerdvm-arch/8gu/issues/224
https://github.com/bertsteresaroberts-svg/9sv/issues/227
https://github.com/nowevelynnienow-gif/0x0/issues/239
https://github.com/mansaratillman-alt/vbl/issues/235
https://github.com/lynnlangworthorth-glitch/ahg/issues/238
https://github.com/monisterrisimonis-design/zai/issues/230
https://github.com/camillekerlukeluke-blip/rup/issues/232
https://github.com/ertmichelleebert-max/cpz/issues/229
https://github.com/rogeliohartmannmann-cpu/bnr/issues/234
https://github.com/arveybrittanyharvey-arch/1re/issues/238
https://github.com/benhodkiewiczwicz-ops/h80/issues/227
https://github.com/olivewildermanerman-prog/eg9/issues/222
https://github.com/odelarrybode-tech/hsd/issues/230
https://github.com/hkecaseyleuschke-netizen/zyk/issues/232
https://github.com/angtommylang-boop/ywt/issues/218
https://github.com/samuelhansenansen-pixel/0oq/issues/220
https://github.com/glennleannonnnon-cmd/xy3/issues/220
https://github.com/ervhellerv-pixel/j8c/issues/221
https://github.com/songlennrolfson-cmd/jop/issues/223
https://github.com/trompebonyoconnelltromp-dot/w8r/issues/216
https://github.com/dvmkohlerdvm-arch/8gu/issues/223
https://github.com/bertsteresaroberts-svg/9sv/issues/226
https://github.com/nowevelynnienow-gif/0x0/issues/238
https://github.com/mansaratillman-alt/vbl/issues/234
https://github.com/lynnlangworthorth-glitch/ahg/issues/237
https://github.com/arveybrittanyharvey-arch/1re/issues/237
https://github.com/monisterrisimonis-design/zai/issues/229
https://github.com/ertmichelleebert-max/cpz/issues/228
https://github.com/rogeliohartmannmann-cpu/bnr/issues/233
https://github.com/benhodkiewiczwicz-ops/h80/issues/226
https://github.com/camillekerlukeluke-blip/rup/issues/231
https://github.com/hkecaseyleuschke-netizen/zyk/issues/231
https://github.com/olivewildermanerman-prog/eg9/issues/221
https://github.com/glennleannonnnon-cmd/xy3/issues/219
https://github.com/odelarrybode-tech/hsd/issues/229
https://github.com/angtommylang-boop/ywt/issues/217
https://github.com/ervhellerv-pixel/j8c/issues/220
https://github.com/songlennrolfson-cmd/jop/issues/222
https://github.com/samuelhansenansen-pixel/0oq/issues/219
https://github.com/trompebonyoconnelltromp-dot/w8r/issues/215
https://github.com/bertsteresaroberts-svg/9sv/issues/225
https://github.com/dvmkohlerdvm-arch/8gu/issues/222
https://github.com/nowevelynnienow-gif/0x0/issues/237
https://github.com/lynnlangworthorth-glitch/ahg/issues/236
https://github.com/arveybrittanyharvey-arch/1re/issues/236
https://github.com/ertmichelleebert-max/cpz/issues/227
https://github.com/rogeliohartmannmann-cpu/bnr/issues/232
https://github.com/camillekerlukeluke-blip/rup/issues/230
https://github.com/monisterrisimonis-design/zai/issues/228
https://github.com/hkecaseyleuschke-netizen/zyk/issues/230
https://github.com/mansaratillman-alt/vbl/issues/233
https://github.com/olivewildermanerman-prog/eg9/issues/220
https://github.com/odelarrybode-tech/hsd/issues/228
https://github.com/benhodkiewiczwicz-ops/h80/issues/225
https://github.com/glennleannonnnon-cmd/xy3/issues/218
https://github.com/angtommylang-boop/ywt/issues/216
https://github.com/ervhellerv-pixel/j8c/issues/219
https://github.com/songlennrolfson-cmd/jop/issues/221
https://github.com/samuelhansenansen-pixel/0oq/issues/218
https://github.com/trompebonyoconnelltromp-dot/w8r/issues/214
https://github.com/nowevelynnienow-gif/0x0/issues/236
https://github.com/dvmkohlerdvm-arch/8gu/issues/221
https://github.com/bertsteresaroberts-svg/9sv/issues/224
https://github.com/lynnlangworthorth-glitch/ahg/issues/235
https://github.com/ertmichelleebert-max/cpz/issues/226
https://github.com/camillekerlukeluke-blip/rup/issues/229
https://github.com/hkecaseyleuschke-netizen/zyk/issues/229
https://github.com/odelarrybode-tech/hsd/issues/227
https://github.com/monisterrisimonis-design/zai/issues/227
https://github.com/rogeliohartmannmann-cpu/bnr/issues/231
https://github.com/glennleannonnnon-cmd/xy3/issues/217
https://github.com/arveybrittanyharvey-arch/1re/issues/235
https://github.com/olivewildermanerman-prog/eg9/issues/219
https://github.com/mansaratillman-alt/vbl/issues/232
https://github.com/benhodkiewiczwicz-ops/h80/issues/224
https://github.com/songlennrolfson-cmd/jop/issues/220
https://github.com/trompebonyoconnelltromp-dot/w8r/issues/213
https://github.com/ervhellerv-pixel/j8c/issues/218
https://github.com/angtommylang-boop/ywt/issues/215
https://github.com/bertsteresaroberts-svg/9sv/issues/223
https://github.com/samuelhansenansen-pixel/0oq/issues/217
https://github.com/dvmkohlerdvm-arch/8gu/issues/220
https://github.com/nowevelynnienow-gif/0x0/issues/235
https://github.com/lynnlangworthorth-glitch/ahg/issues/234
https://github.com/hkecaseyleuschke-netizen/zyk/issues/228
https://github.com/ertmichelleebert-max/cpz/issues/225
https://github.com/monisterrisimonis-design/zai/issues/226
https://github.com/rogeliohartmannmann-cpu/bnr/issues/230
https://github.com/glennleannonnnon-cmd/xy3/issues/216
https://github.com/camillekerlukeluke-blip/rup/issues/228
https://github.com/odelarrybode-tech/hsd/issues/226
https://github.com/arveybrittanyharvey-arch/1re/issues/234
https://github.com/olivewildermanerman-prog/eg9/issues/218
https://github.com/songlennrolfson-cmd/jop/issues/219
https://github.com/mansaratillman-alt/vbl/issues/231
https://github.com/benhodkiewiczwicz-ops/h80/issues/223
https://github.com/angtommylang-boop/ywt/issues/214
https://github.com/trompebonyoconnelltromp-dot/w8r/issues/212
https://github.com/bertsteresaroberts-svg/9sv/issues/222
https://github.com/nowevelynnienow-gif/0x0/issues/234
https://github.com/ervhellerv-pixel/j8c/issues/217
https://github.com/lynnlangworthorth-glitch/ahg/issues/233
https://github.com/dvmkohlerdvm-arch/8gu/issues/219
https://github.com/samuelhansenansen-pixel/0oq/issues/216
https://github.com/hkecaseyleuschke-netizen/zyk/issues/227
https://github.com/ertmichelleebert-max/cpz/issues/224
https://github.com/monisterrisimonis-design/zai/issues/225
https://github.com/rogeliohartmannmann-cpu/bnr/issues/229
https://github.com/glennleannonnnon-cmd/xy3/issues/215
https://github.com/arveybrittanyharvey-arch/1re/issues/233
https://github.com/odelarrybode-tech/hsd/issues/225
https://github.com/olivewildermanerman-prog/eg9/issues/217
https://github.com/camillekerlukeluke-blip/rup/issues/227
https://github.com/songlennrolfson-cmd/jop/issues/218
https://github.com/mansaratillman-alt/vbl/issues/230
https://github.com/trompebonyoconnelltromp-dot/w8r/issues/211
https://github.com/angtommylang-boop/ywt/issues/213
https://github.com/lynnlangworthorth-glitch/ahg/issues/232
https://github.com/ervhellerv-pixel/j8c/issues/216
https://github.com/bertsteresaroberts-svg/9sv/issues/221
https://github.com/nowevelynnienow-gif/0x0/issues/233
https://github.com/dvmkohlerdvm-arch/8gu/issues/218
https://github.com/samuelhansenansen-pixel/0oq/issues/215
https://github.com/ertmichelleebert-max/cpz/issues/223
https://github.com/monisterrisimonis-design/zai/issues/224
https://github.com/benhodkiewiczwicz-ops/h80/issues/222
https://github.com/hkecaseyleuschke-netizen/zyk/issues/226
https://github.com/arveybrittanyharvey-arch/1re/issues/232
https://github.com/olivewildermanerman-prog/eg9/issues/216
https://github.com/odelarrybode-tech/hsd/issues/224
https://github.com/rogeliohartmannmann-cpu/bnr/issues/228
https://github.com/songlennrolfson-cmd/jop/issues/217
https://github.com/camillekerlukeluke-blip/rup/issues/226
https://github.com/glennleannonnnon-cmd/xy3/issues/214
https://github.com/mansaratillman-alt/vbl/issues/229
https://github.com/trompebonyoconnelltromp-dot/w8r/issues/210
https://github.com/lynnlangworthorth-glitch/ahg/issues/231
https://github.com/nowevelynnienow-gif/0x0/issues/232
https://github.com/angtommylang-boop/ywt/issues/212
https://github.com/bertsteresaroberts-svg/9sv/issues/220
https://github.com/ervhellerv-pixel/j8c/issues/215
https://github.com/arveybrittanyharvey-arch/1re/issues/231
https://github.com/samuelhansenansen-pixel/0oq/issues/214
https://github.com/monisterrisimonis-design/zai/issues/223
https://github.com/hkecaseyleuschke-netizen/zyk/issues/225
https://github.com/dvmkohlerdvm-arch/8gu/issues/217
https://github.com/ertmichelleebert-max/cpz/issues/222
https://github.com/rogeliohartmannmann-cpu/bnr/issues/227
https://github.com/benhodkiewiczwicz-ops/h80/issues/221
https://github.com/songlennrolfson-cmd/jop/issues/216
https://github.com/odelarrybode-tech/hsd/issues/223
https://github.com/olivewildermanerman-prog/eg9/issues/215
https://github.com/glennleannonnnon-cmd/xy3/issues/213
https://github.com/camillekerlukeluke-blip/rup/issues/225
https://github.com/nowevelynnienow-gif/0x0/issues/231
https://github.com/lynnlangworthorth-glitch/ahg/issues/230
https://github.com/trompebonyoconnelltromp-dot/w8r/issues/209
https://github.com/ervhellerv-pixel/j8c/issues/214
https://github.com/arveybrittanyharvey-arch/1re/issues/230
https://github.com/angtommylang-boop/ywt/issues/211
https://github.com/bertsteresaroberts-svg/9sv/issues/219
https://github.com/mansaratillman-alt/vbl/issues/228
https://github.com/hkecaseyleuschke-netizen/zyk/issues/224
https://github.com/samuelhansenansen-pixel/0oq/issues/213
https://github.com/monisterrisimonis-design/zai/issues/222
https://github.com/songlennrolfson-cmd/jop/issues/215
https://github.com/rogeliohartmannmann-cpu/bnr/issues/226
https://github.com/ertmichelleebert-max/cpz/issues/221
https://github.com/dvmkohlerdvm-arch/8gu/issues/216
https://github.com/nowevelynnienow-gif/0x0/issues/230
https://github.com/olivewildermanerman-prog/eg9/issues/214
https://github.com/glennleannonnnon-cmd/xy3/issues/212
https://github.com/odelarrybode-tech/hsd/issues/222
https://github.com/lynnlangworthorth-glitch/ahg/issues/229
https://github.com/camillekerlukeluke-blip/rup/issues/224
https://github.com/ervhellerv-pixel/j8c/issues/213
https://github.com/benhodkiewiczwicz-ops/h80/issues/220
https://github.com/mansaratillman-alt/vbl/issues/227
https://github.com/bertsteresaroberts-svg/9sv/issues/218
https://github.com/hkecaseyleuschke-netizen/zyk/issues/223
https://github.com/samuelhansenansen-pixel/0oq/issues/212
https://github.com/arveybrittanyharvey-arch/1re/issues/229
https://github.com/trompebonyoconnelltromp-dot/w8r/issues/208
https://github.com/angtommylang-boop/ywt/issues/210
https://github.com/songlennrolfson-cmd/jop/issues/214
https://github.com/monisterrisimonis-design/zai/issues/221
https://github.com/ertmichelleebert-max/cpz/issues/220
https://github.com/nowevelynnienow-gif/0x0/issues/229
https://github.com/dvmkohlerdvm-arch/8gu/issues/215
https://github.com/rogeliohartmannmann-cpu/bnr/issues/225
https://github.com/olivewildermanerman-prog/eg9/issues/213
https://github.com/odelarrybode-tech/hsd/issues/221
https://github.com/lynnlangworthorth-glitch/ahg/issues/228
https://github.com/camillekerlukeluke-blip/rup/issues/223
https://github.com/glennleannonnnon-cmd/xy3/issues/211
https://github.com/ervhellerv-pixel/j8c/issues/212
https://github.com/arveybrittanyharvey-arch/1re/issues/228
https://github.com/mansaratillman-alt/vbl/issues/226
https://github.com/hkecaseyleuschke-netizen/zyk/issues/222
https://github.com/benhodkiewiczwicz-ops/h80/issues/219
https://github.com/samuelhansenansen-pixel/0oq/issues/211
https://github.com/bertsteresaroberts-svg/9sv/issues/217
https://github.com/monisterrisimonis-design/zai/issues/220
https://github.com/ertmichelleebert-max/cpz/issues/219
https://github.com/angtommylang-boop/ywt/issues/209
https://github.com/trompebonyoconnelltromp-dot/w8r/issues/207
https://github.com/songlennrolfson-cmd/jop/issues/213
https://github.com/dvmkohlerdvm-arch/8gu/issues/214
https://github.com/olivewildermanerman-prog/eg9/issues/212
https://github.com/odelarrybode-tech/hsd/issues/220
https://github.com/rogeliohartmannmann-cpu/bnr/issues/224
https://github.com/lynnlangworthorth-glitch/ahg/issues/227
https://github.com/nowevelynnienow-gif/0x0/issues/228
https://github.com/camillekerlukeluke-blip/rup/issues/222
https://github.com/glennleannonnnon-cmd/xy3/issues/210
https://github.com/arveybrittanyharvey-arch/1re/issues/227
https://github.com/ervhellerv-pixel/j8c/issues/211
https://github.com/mansaratillman-alt/vbl/issues/225
https://github.com/hkecaseyleuschke-netizen/zyk/issues/221
https://github.com/bertsteresaroberts-svg/9sv/issues/216
https://github.com/samuelhansenansen-pixel/0oq/issues/210
https://github.com/benhodkiewiczwicz-ops/h80/issues/218
https://github.com/monisterrisimonis-design/zai/issues/219
https://github.com/odelarrybode-tech/hsd/issues/219
https://github.com/nowevelynnienow-gif/0x0/issues/227
https://github.com/angtommylang-boop/ywt/issues/208
https://github.com/lynnlangworthorth-glitch/ahg/issues/226
https://github.com/dvmkohlerdvm-arch/8gu/issues/213
https://github.com/trompebonyoconnelltromp-dot/w8r/issues/206
https://github.com/rogeliohartmannmann-cpu/bnr/issues/223
https://github.com/camillekerlukeluke-blip/rup/issues/221
https://github.com/ertmichelleebert-max/cpz/issues/218
https://github.com/olivewildermanerman-prog/eg9/issues/211
https://github.com/songlennrolfson-cmd/jop/issues/212
https://github.com/arveybrittanyharvey-arch/1re/issues/226
https://github.com/glennleannonnnon-cmd/xy3/issues/209
https://github.com/ervhellerv-pixel/j8c/issues/210
https://github.com/mansaratillman-alt/vbl/issues/224
https://github.com/bertsteresaroberts-svg/9sv/issues/215
https://github.com/samuelhansenansen-pixel/0oq/issues/209
https://github.com/monisterrisimonis-design/zai/issues/218
https://github.com/hkecaseyleuschke-netizen/zyk/issues/220
https://github.com/nowevelynnienow-gif/0x0/issues/226
https://github.com/benhodkiewiczwicz-ops/h80/issues/217
https://github.com/trompebonyoconnelltromp-dot/w8r/issues/205
https://github.com/lynnlangworthorth-glitch/ahg/issues/225
https://github.com/camillekerlukeluke-blip/rup/issues/220
https://github.com/odelarrybode-tech/hsd/issues/218
https://github.com/angtommylang-boop/ywt/issues/207
https://github.com/rogeliohartmannmann-cpu/bnr/issues/222
https://github.com/ertmichelleebert-max/cpz/issues/217
https://github.com/dvmkohlerdvm-arch/8gu/issues/212
https://github.com/arveybrittanyharvey-arch/1re/issues/225
https://github.com/songlennrolfson-cmd/jop/issues/211
https://github.com/olivewildermanerman-prog/eg9/issues/210
https://github.com/ervhellerv-pixel/j8c/issues/209
https://github.com/glennleannonnnon-cmd/xy3/issues/208
https://github.com/mansaratillman-alt/vbl/issues/223
https://github.com/monisterrisimonis-design/zai/issues/217
https://github.com/samuelhansenansen-pixel/0oq/issues/208
https://github.com/bertsteresaroberts-svg/9sv/issues/214
https://github.com/hkecaseyleuschke-netizen/zyk/issues/219
https://github.com/nowevelynnienow-gif/0x0/issues/225
https://github.com/lynnlangworthorth-glitch/ahg/issues/224
https://github.com/trompebonyoconnelltromp-dot/w8r/issues/204
https://github.com/odelarrybode-tech/hsd/issues/217
https://github.com/camillekerlukeluke-blip/rup/issues/219
https://github.com/arveybrittanyharvey-arch/1re/issues/224
https://github.com/angtommylang-boop/ywt/issues/206
https://github.com/benhodkiewiczwicz-ops/h80/issues/216
https://github.com/ervhellerv-pixel/j8c/issues/208
https://github.com/rogeliohartmannmann-cpu/bnr/issues/221
https://github.com/glennleannonnnon-cmd/xy3/issues/207
https://github.com/ertmichelleebert-max/cpz/issues/216
https://github.com/dvmkohlerdvm-arch/8gu/issues/211
https://github.com/olivewildermanerman-prog/eg9/issues/209
https://github.com/songlennrolfson-cmd/jop/issues/210
https://github.com/monisterrisimonis-design/zai/issues/216
https://github.com/samuelhansenansen-pixel/0oq/issues/207
https://github.com/mansaratillman-alt/vbl/issues/222
https://github.com/bertsteresaroberts-svg/9sv/issues/213
https://github.com/nowevelynnienow-gif/0x0/issues/224
https://github.com/hkecaseyleuschke-netizen/zyk/issues/218
https://github.com/lynnlangworthorth-glitch/ahg/issues/223
https://github.com/odelarrybode-tech/hsd/issues/216
https://github.com/arveybrittanyharvey-arch/1re/issues/223
https://github.com/trompebonyoconnelltromp-dot/w8r/issues/203
https://github.com/camillekerlukeluke-blip/rup/issues/218
https://github.com/benhodkiewiczwicz-ops/h80/issues/215
https://github.com/ervhellerv-pixel/j8c/issues/207
https://github.com/angtommylang-boop/ywt/issues/205
https://github.com/olivewildermanerman-prog/eg9/issues/208
https://github.com/rogeliohartmannmann-cpu/bnr/issues/220
https://github.com/songlennrolfson-cmd/jop/issues/209
https://github.com/ertmichelleebert-max/cpz/issues/215
https://github.com/dvmkohlerdvm-arch/8gu/issues/210
https://github.com/glennleannonnnon-cmd/xy3/issues/206
https://github.com/mansaratillman-alt/vbl/issues/221
https://github.com/nowevelynnienow-gif/0x0/issues/223
https://github.com/bertsteresaroberts-svg/9sv/issues/212
https://github.com/samuelhansenansen-pixel/0oq/issues/206
https://github.com/monisterrisimonis-design/zai/issues/215
https://github.com/lynnlangworthorth-glitch/ahg/issues/222
https://github.com/hkecaseyleuschke-netizen/zyk/issues/217
https://github.com/odelarrybode-tech/hsd/issues/215
https://github.com/arveybrittanyharvey-arch/1re/issues/222
https://github.com/trompebonyoconnelltromp-dot/w8r/issues/202
https://github.com/camillekerlukeluke-blip/rup/issues/217
https://github.com/benhodkiewiczwicz-ops/h80/issues/214
https://github.com/ervhellerv-pixel/j8c/issues/206
https://github.com/angtommylang-boop/ywt/issues/204
https://github.com/olivewildermanerman-prog/eg9/issues/207
https://github.com/songlennrolfson-cmd/jop/issues/208
https://github.com/ertmichelleebert-max/cpz/issues/214
https://github.com/dvmkohlerdvm-arch/8gu/issues/209
https://github.com/glennleannonnnon-cmd/xy3/issues/205
https://github.com/nowevelynnienow-gif/0x0/issues/222
https://github.com/rogeliohartmannmann-cpu/bnr/issues/219
https://github.com/bertsteresaroberts-svg/9sv/issues/211
https://github.com/samuelhansenansen-pixel/0oq/issues/205
https://github.com/lynnlangworthorth-glitch/ahg/issues/221
https://github.com/mansaratillman-alt/vbl/issues/220
https://github.com/hkecaseyleuschke-netizen/zyk/issues/216
https://github.com/odelarrybode-tech/hsd/issues/214
https://github.com/arveybrittanyharvey-arch/1re/issues/221
https://github.com/monisterrisimonis-design/zai/issues/214
https://github.com/camillekerlukeluke-blip/rup/issues/216
https://github.com/ervhellerv-pixel/j8c/issues/205
https://github.com/benhodkiewiczwicz-ops/h80/issues/213
https://github.com/angtommylang-boop/ywt/issues/203
https://github.com/songlennrolfson-cmd/jop/issues/207
https://github.com/ertmichelleebert-max/cpz/issues/213
https://github.com/trompebonyoconnelltromp-dot/w8r/issues/201
https://github.com/dvmkohlerdvm-arch/8gu/issues/208
https://github.com/olivewildermanerman-prog/eg9/issues/206
https://github.com/rogeliohartmannmann-cpu/bnr/issues/218
https://github.com/glennleannonnnon-cmd/xy3/issues/204
https://github.com/nowevelynnienow-gif/0x0/issues/221
https://github.com/mansaratillman-alt/vbl/issues/219
https://github.com/samuelhansenansen-pixel/0oq/issues/204
https://github.com/bertsteresaroberts-svg/9sv/issues/210
https://github.com/lynnlangworthorth-glitch/ahg/issues/220
https://github.com/hkecaseyleuschke-netizen/zyk/issues/215
https://github.com/arveybrittanyharvey-arch/1re/issues/220
https://github.com/monisterrisimonis-design/zai/issues/213
https://github.com/odelarrybode-tech/hsd/issues/213
https://github.com/camillekerlukeluke-blip/rup/issues/215
https://github.com/ervhellerv-pixel/j8c/issues/204
https://github.com/angtommylang-boop/ywt/issues/202
https://github.com/ertmichelleebert-max/cpz/issues/212
https://github.com/dvmkohlerdvm-arch/8gu/issues/207
https://github.com/trompebonyoconnelltromp-dot/w8r/issues/200
https://github.com/benhodkiewiczwicz-ops/h80/issues/212
https://github.com/olivewildermanerman-prog/eg9/issues/205
https://github.com/songlennrolfson-cmd/jop/issues/206
https://github.com/nowevelynnienow-gif/0x0/issues/220
https://github.com/glennleannonnnon-cmd/xy3/issues/203
https://github.com/mansaratillman-alt/vbl/issues/218
https://github.com/rogeliohartmannmann-cpu/bnr/issues/217
https://github.com/lynnlangworthorth-glitch/ahg/issues/219
https://github.com/samuelhansenansen-pixel/0oq/issues/203
https://github.com/bertsteresaroberts-svg/9sv/issues/209
https://github.com/hkecaseyleuschke-netizen/zyk/issues/214
https://github.com/odelarrybode-tech/hsd/issues/212
https://github.com/monisterrisimonis-design/zai/issues/212
https://github.com/arveybrittanyharvey-arch/1re/issues/219
https://github.com/camillekerlukeluke-blip/rup/issues/214
https://github.com/angtommylang-boop/ywt/issues/201
https://github.com/dvmkohlerdvm-arch/8gu/issues/206
https://github.com/ervhellerv-pixel/j8c/issues/203
https://github.com/ertmichelleebert-max/cpz/issues/211
https://github.com/benhodkiewiczwicz-ops/h80/issues/211
https://github.com/nowevelynnienow-gif/0x0/issues/219
https://github.com/glennleannonnnon-cmd/xy3/issues/202
https://github.com/songlennrolfson-cmd/jop/issues/205
https://github.com/olivewildermanerman-prog/eg9/issues/204
https://github.com/trompebonyoconnelltromp-dot/w8r/issues/199
https://github.com/lynnlangworthorth-glitch/ahg/issues/218
https://github.com/mansaratillman-alt/vbl/issues/217
https://github.com/bertsteresaroberts-svg/9sv/issues/208
https://github.com/samuelhansenansen-pixel/0oq/issues/202
https://github.com/rogeliohartmannmann-cpu/bnr/issues/216
https://github.com/odelarrybode-tech/hsd/issues/211
https://github.com/arveybrittanyharvey-arch/1re/issues/218
https://github.com/monisterrisimonis-design/zai/issues/211
https://github.com/hkecaseyleuschke-netizen/zyk/issues/213
https://github.com/angtommylang-boop/ywt/issues/200
https://github.com/camillekerlukeluke-blip/rup/issues/213
https://github.com/dvmkohlerdvm-arch/8gu/issues/205

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/bicheng/96308.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/96308.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

跨境金融数据对接实践:印度NSE/BSE股票行情API集成指南

跨境金融数据对接实践:印度NSE/BSE股票行情API集成指南 关键词:印度股票数据对接 NSE实时行情 BSE证券接口 金融API开发 Python请求示例一、印度股市数据源技术解析(核心价值) 印度两大交易所数据获取难点: 时区差异&a…

AFSim2.9.0学习笔记 —— 1、AFSim及完整工具介绍(文末附:完整afsim2.9.0源码、编译好的完整工具包、中文教材等)

🔔 AFSim2.9.0 相关技术、疑难杂症文章合集(掌握后可自封大侠 ⓿_⓿)(记得收藏,持续更新中…) AFSim介绍 AFSim(Advanced Framework for Simulation Integration & Modeling【高级仿真集成与…

ArcGIS学习-18 实战-降雨量空间分布插值分析

设置环境加载要素投影查看要素,发现均不是投影数据,但都是地理坐标都是WGS1984使用工具进行批量投影然后新建空地图,重新加载确认图层的投影与栅格数据一致插值样条法得到反距离权重法插值得到克里金法插值得到

HarmonyOS应用开发:深入理解声明式UI与弹窗交互的最佳实践

HarmonyOS应用开发:深入理解声明式UI与弹窗交互的最佳实践 引言 随着HarmonyOS 4.0的发布及后续版本的演进,华为的分布式操作系统已经进入了全新的发展阶段。基于API 12及以上的开发环境为开发者提供了更强大、更高效的开发工具和框架。在HarmonyOS应用…

探索Java并发编程--从基础到高级实践技巧

Thread(线程)线程 程序执行的最小单位(一个进程至少有一个线程)。线程内有自己的执行栈、程序计数器(PC),但与同进程内其他线程共享堆内存与进程资源 在java中,线程由java.lang.Thr…

Go语言实战案例-开发一个Markdown转HTML工具

这个小工具可以把 .md 文件转换为 .html 文件,非常适合写笔记、博客或者快速预览 Markdown 内容。📌 案例目标• 读取一个 Markdown 文件• 使用开源库将 Markdown 转换为 HTML• 将 HTML 输出到新文件中📦 所需库我们用 goldmark 这个 Markd…

基于51单片机的太阳能锂电池充电路灯

基于51单片机的太阳能锂电池充电路灯系统设计 1 系统功能介绍 本设计以 STC89C52单片机 为核心,构建了一个能够利用太阳能为锂电池充电并智能控制LED路灯的系统。系统结合了 光照检测电路、LED灯电路、按键检测电路、太阳能充电电路 等模块,实现了节能、…

PAT 1178 File Path

这一题的大意是给出了一个windows的文件夹目录,让我们按照所属的目录关系,来找相应的目录是否存在,如果存在,就输出找到该文件的路径,如果不存在输出error 我的思路是用合适的树形结构保存下来目录的所属关系&#xff…

云原生部署_k8s入门

K8S官网文档:https://kubernetes.io/zh/docs/home/Kubernetes是什么Kubernetes 是用于自动部署、扩缩和管理容器化应用程序的开源系统。 Kubernetes 源自 ,Google 15 年生产环境的运维经验同时凝聚了社区的最佳创意和实践。简称K8s.Kubernet…

实战项目-----Python+OpenCV 实现对视频的椒盐噪声注入与实时平滑还原”

实战项目实现以下功能:功能 1:为视频每一帧添加椒盐噪声作用:模拟真实环境中图像传输或采集时可能出现的噪声。实现方式:读取视频的每一帧。随机选择 10000 个像素点,将其设置为黑色(0)或白色&a…

Day42 PHP(mysql注入、跨库读取)

一、sql注入基本原理:没有对用户输入的数据进行限制,导致数据库语句可以做什么,用户就可以做什么。取决于不同数据库的不同查询语言,所以为什么有mysql注入/orcale注入等等。步骤:【access】表名(字典爆破来…

机器人控制器开发(部署——软件打包备份更新)

文章总览 为什么做备份更新 为机器人控制器设计一套打包备份更新机制,为控制器的批量生产和产品与项目落地做准备。 当某个模块出现bug需要升级时,用户可以快速获取正确的bak包并导入到控制器中重启生效。 如果没有做好软件的备份更新机制&#xff0c…

LaTeX TeX Live 安装与 CTAN 国内镜像配置(Windows / macOS / Linux 全流程)

这是一份面向国内环境的 LaTeX 从零到可编译 指南:覆盖 TeX Live / MacTeX 安装、PATH 配置、CTAN 国内镜像(清华/北外/上交/中科大等)一键切换与回滚、常见坑位(权限、镜像路径、版本切换)、以及 XeLaTeX/latexmk 的实…

WhoisXML API再次荣登2025年美国Inc. 5000快速成长企业榜单

WhoisXML API非常自豪地宣布,我们再次荣登美国权威榜单——2025年Inc.5000全美成长最快的私营企业之一。今年,公司在地区排名中位列第119名,在全美总体排名中位列第4,271名。Inc. 5000榜单要求参评企业必须保持独立运营,并在2021至…

Elasticsearch面试精讲 Day 9:复合查询与过滤器优化

【Elasticsearch面试精讲 Day 9】复合查询与过滤器优化 在Elasticsearch的搜索体系中,复合查询(Compound Queries)与过滤器(Filters)优化是构建高效、精准搜索逻辑的核心能力。作为“Elasticsearch面试精讲”系列的第…

Android使用ReactiveNetwork监听网络连通性

引入库 implementation com.github.pwittchen:reactivenetwork-rx2:3.0.8监听网络连接变更ReactiveNetwork.observeNetworkConnectivity(context).subscribeOn(Schedulers.io())// ... // anything else what you can do with RxJava.observeOn(Schedulers.computation()).subs…

基于阿里云部署 RustDesk 自托管服务器

基于阿里云部署 RustDesk 自托管服务器一、背景与需求场景二、什么是 RustDesk?为什么选择自托管?2.1 RustDesk 是什么?2.2 为什么选择自托管?三、环境准备与架构说明四、操作步骤4.1 在阿里云上安装 RustDesk 服务端4.1.1 下载并…

细说分布式ID

针对高并发写,分布式ID是其业务基础,本文从一个面试题细细展开。面试官:1.对于Mysql的InnoDB引擎下,自增ID和UUID作为主键各自有什么优劣,对于一张表的主键你建议使用哪种ID?2.除了UUID是否还了解其他类型的…

2025年大数据专业证书报考指南:专科学历必看的8大选择​

对于大专学历的同学来说,2025年进入大数据行业是一个充满机遇的选择。大数据领域发展迅速,各类证书能够帮助求职者提升专业能力、增强就业竞争力。其中最推荐的是CDA数据分析师,这个证书适应了未来数字化经济和AI发展趋势,难度不高…

Python爬虫实战:研究Axis Artist模块,构建电商数据采集和分析系统

1. 引言 1.1 研究背景与意义 在大数据时代,互联网上蕴藏着海量有价值的信息,这些信息涵盖了社会、经济、科技等各个领域。高效地从互联网获取数据并进行深度分析,对于企业决策、学术研究、市场分析等都具有重要意义。Python 作为一种功能强大的编程语言,凭借其丰富的库支…