即刻体验 | 使用 Flutter 3.19 更高效地开发

outside_default.png

我们已隆重推出全新的 Flutter 版本——Flutter 3.19。此版本引入了专为 Gemini 设计的新 Dart SDK、一个能让开发者对 Widget 动画实现精细化控制的全新 Widget,Impeller 更新带来的渲染性能提升、有助于实现深层链接的工具和对 Windows Arm64 的支持,以及更多丰富功能!

Flutter 社区持续展现出令人赞叹的实力,有 168 名社区成员合并了 1,429 个拉取请求 (pull request),其中有 43 名社区成员提交了他们的首个 Flutter 拉取请求 (pull request)!

欢迎您继续阅读本篇文章,了解 Flutter 社区为这个最新版本带来的所有新功能和改进!

AI 集成

Gemini Google AI Dart SDK 

测试版发布

Google AI Dart SDK 已发布测试版,这使得您能够利用 Google 最新的 Gemini 系列 AI 模型,在 Dart 或 Flutter 应用中构建生成式 AI 功能。目前 pub.dev 上已提供 google_generative_ai package。如要详细了解如何使用 Google AI Dart SDK 进行开发,您可以参阅此博文,或者直接查阅 Dart 快速入门教程。

  • google_generative_ai

    https://pub.dev/packages/google_generative_ai

  • 此博文

    http://docs.google.com/flutter/harness-gemini-in-your-dart-and-flutter-apps-00573e560381

  • Dart 快速入门

    https://ai.google.dev/tutorials/dart_quickstart

9f16807e2226b91f8c3193a656f3fea7.png

框架

滚动优化

以前在 Flutter 中,当您使用两只手指拖动时,滚动速度会是单指的两倍。现在,您可以使用 MultiTouchDragStrategy.latestPointer 来配置默认的 ScrollBehavior,实现与触摸点数量无关的滚动行为。若想了解有关此变更的更多信息,您可以参阅迁移指南。

  • 迁移指南

    https://docs.flutter.dev/release/breaking-changes/multi-touch-scrolling

我们还完成了 SingleChildScrollView 和 ReorderableList 的错误修复,解决了多个报告的崩溃和意外行为问题。

  • SingleChildScrollView

    https://github.com/flutter/flutter/pull/136871

  • ReorderableList

    https://github.com/flutter/flutter/pull/136828

我们还解决了一个关于二维滚动的问题,现在当您在任一方向进行滚动操作时,如果进行拖动或点按,滚动活动将按预期停止。

自上次发布以来,我们对 two_dimensional_scrollables package 中的 TableView Widget 也进行了更新。此次更新改善了其整体表现、增加了对合并单元格的支持,并且在 Flutter 3.16 稳定版发布后,采用了更多二维滚动基础组件的新功能。

AnimationStyle

得益于 Flutter 社区成员 @TahaTesser 的贡献,Flutter 现在新增了一个名为 AnimationStyle 的 Widget。该 Widget 可让用户覆盖 MaterialApp、ExpansionTile 和 PopupMenuButton 等 Widget 中的默认动画行为,帮助开发者覆盖动画曲线和时长。

  • @TahaTesser

    https://github.com/TahaTesser

  • 贡献

    https://github.com/flutter/flutter/pull/138721

SegmentedButton.styleFrom

Flutter 社区成员 @AcarFurkan 添加了一个 styleFrom 静态实用方法,类似于其他按钮类型所提供的方法,能够快速创建 SegmentedButton 的 ButtonStyle,与其他分段按钮共享,或者用于配置应用的 SegmentedButtonTheme。

  • @AcarFurkan

    https://github.com/AcarFurkan

自适应开关

这个自适应组件在 macOS 和 iOS 平台上的外观和风格就像原生控件,而在其他平台上则遵循 Material Design 的外观和风格。它并不依赖于 Cupertino 库,因此其 API 在所有平台上都是完全一致的。

想要了解详情,您可以参阅自适应开关拉取请求,以及 Switch.adaptive 构造函数 API 页面上的实时示例。

  • 自适应开关拉取请求

    https://github.com/flutter/flutter/pull/130425

  • API 页面

    https://api.flutter.dev/flutter/material/Switch/Switch.adaptive.html

SemanticsProperties 可访问性标识符

SemanticsProperties 中新增了一个可访问性标识符,用于为原生可访问性层级中的语义节点提供标识符。在 Android 平台上,这个标识符会以 resource-id 的形式出现在可访问性层级结构中;在 iOS 平台上,该标识符会设置 UIAccessibilityElement.accessibilityIdentifier。感谢社区成员 @bartekpacia 对这一涉及到引擎和框架层面的改变所做出的贡献。

  • @bartekpacia

    https://github.com/bartekpacia

  • 引擎

    https://github.com/flutter/engine/pull/47961

  • 框架

    https://github.com/flutter/flutter/pull/138331

增加了对文本 Widget 状态的访问权限

我们在 TextField 和 TextFormField 中增加了对 MaterialStatesController 的支持,以便您监听 MaterialState 的变化情况。

UndoHistory 堆栈

我们修复了在日语键盘上撤销/重做历史记录可能会消失的问题。现在您可以在条目被推送到 UndoHistory 堆栈之前对其进行修改。

  • 修复了

    https://github.com/flutter/flutter/pull/138674

  • 问题

    https://github.com/flutter/flutter/issues/130881

引擎

Impeller 进展

Android OpenGL 预览版

发布 3.16 稳定版时,我们邀请了用户在支持 Vulkan 的 Android 设备上试用 Impeller,覆盖了市面上 77% 的 Android 设备。在过去的几个月里,我们已经将 Impeller 的 OpenGL 后端功能提升到了与 Vulkan 后端相同的水平,例如添加对 MSAA 的支持。这意味着 Flutter 应用能够在几乎所有 Android 设备上正确渲染,不过还有少数功能尚在开发,暂未完全支持,如自定义着色器和对外部纹理的全面支持等。

  • 对 MSAA 的支持

    https://github.com/flutter/engine/pull/47030

请各位 Flutter 开发者升级到最新稳定版。在启用 Impeller 后,如果遇到任何问题,欢迎您随时提交相关报告。当前阶段的反馈对于确保 Impeller 能在 Android 平台上取得成功,以及我们能够在今年晚些时候有把握地将其设为默认渲染器至关重要。由于 Android 硬件生态系统比 iOS 生态系统更加多样化,因此关于 Impeller 的最有效的反馈需要包含出现问题的具体设备型号和所使用的 Android 版本的详细信息。

  • 启用 Impeller

    https://docs.flutter.dev/perf/impeller#android

此外,您还需注意,Impeller 的 Vulkan 后端在调试 build 中可提供比 Skia 后端更多的调试功能,且这些功能会产生额外的运行时消耗。因此,我们建议您通过配置文件 build 或发布 build 提供关于 Impeller 性能的反馈。Bug 报告需要包含来自 DevTools 的时间线数据,以及在同一设备上与 Skia 后端的性能对比数据。最后,我们一如既往地感谢大家提供包含对可复现问题的小型案例加以说明等反馈。

  • 调试

    https://docs.flutter.dev/testing/build-modes#debug

  • 配置文件

    https://docs.flutter.dev/testing/build-modes#profile

  • 发布

    https://docs.flutter.dev/testing/build-modes#release

战略路线图

在 Impeller 的 Android 预览阶段,继渲染保真度之后,我们主要关注的是性能。在性能持续逐步提升的同时,一些更大规模的改进工作也在进行中。我们预计通过利用 Vulkan 子通道技术,来极大地提高高级混合模式的性能。此外,我们还计划改变渲染策略,从一直以来在 CPU 上对每一个路径进行细分 (tessellating),转向采用 Stencil-then-cover 的方法,这将显著降低 Impeller 在 Android 和 iOS 上的 CPU 使用率。最后,我们希望新的高斯模糊实现能够达到与 Skia 实现相同的吞吐量,并且更符合 iOS 上的模糊惯用用法。

  • Vulkan 子通道

    https://github.com/flutter/flutter/issues/128911

  • Stencil-then-cover

    https://github.com/flutter/flutter/issues/137714

  • 高斯模糊

    https://github.com/flutter/flutter/issues/131580

API 改进

字形信息

在此次发布的版本中,dart:ui 的 Paragraph 对象新增了两个方法: getClosestGlyphInfoForOffset 和 getGlyphInfoAt,这两个方法分别可返回一个新类型 GlyphInfo 的对象。您可查看关于新类型 GlyphInfo 的文档。

  • GlyphInfo

    https://main-api.flutter.dev/flutter/dart-ui/GlyphInfo-class.html

GPU 跟踪

在 Impeller 框架下,使用 Metal 的 iOS、macOS、模拟器环境中,以及支持 Vulkan 的 Android 设备中,Flutter 引擎现会在调试 build 和配置文件 build 中为时间轴上的每一帧报告 GPU 时间。这些 GPU 帧时间数据可以在 DevTools 的 "GPUTracer" 标题下进行查看。

bff9fbb855cba96d997617b3a9bbf1b4.png

请注意,由于不支持 Vulkan 的 Android 设备可能会错误报告其对于查询 GPU 时间的支持情况,因此,在这些设备上,Impeller 的 GPU 跟踪功能只能通过在 AndroidManifest.xml 文件中设置标志来启用。

<meta-dataandroid:name="io.flutter.embedding.android.EnableOpenGLGPUTracing"android:value="true" />

性能优化

特化常量

我们的团队为 Impeller 添加了特化常量支持。通过在 Impeller 的着色器中利用这一功能,Flutter 引擎的未压缩二进制文件大小减少了将近 350 KB。

  • 特化常量支持

    https://github.com/flutter/flutter/issues/119357

  • 将近 350 KB

    https://flutter-flutter-perf.skia.org/e/?begin=1698877815&end=1702074996&queries=test%3Dhello_world_ios__compile&requestType=0&selected=commit%3D37892%26name%3D%252Carch%253Darm%252Cbranch%253Dmaster%252Cconfig%253Ddefault%252Cdevice_type%253DiPhone_11%252Cdevice_version%253Dnone%252Chost_type%253Dmac%252Csub_result%253Dflutter_framework_uncompressed_bytes%252Ctest%253Dhello_world_ios__compile%252C

背景滤镜加速

尽管仍有进步空间,但此版本包含一些针对 Impeller 的背景滤镜和模糊处理的显著性能改进。具体而言,开源社区贡献者 @knopp 注意到 Impeller 错误地请求了读取屏幕纹理的功能。移除这一功能后,在我们的基准测试中,对于包含多个背景滤镜的场景,根据其复杂程度的不同,性能提升了 20% 至 70% 不等。

  • @knopp

    https://github.com/knopp

  • 注意到

    https://github.com/flutter/flutter/issues/131567#issuecomment-1678210475

  • 移除这一功能后

    https://github.com/flutter/engine/pull/47808

此外,Impeller 不再对每一个背景滤镜都无条件地存储模板缓冲区。相反,它现在会记录任何影响剪辑的操作,并在为背景滤镜恢复保存层时,将这些操作重放到一个新的模板缓冲区中。

  • 无条件地存储模板缓冲区

    https://github.com/flutter/engine/pull/47397

1658bf5a9cd399d8d6fd15ed47573402.png

通过这一变化,我们在采用 Vulkan 后端运行 Impeller 的 Pixel 7 Pro 上,对动画高级混合模式进行基准测试时,平均 GPU 帧时间从 55 毫秒显著提高到了 16 毫秒。同时,90% 的光栅线程 CPU 时间也从大约 110 毫秒下降到了 22 毫秒。

Android

深层链接 Web 验证器

我们从开发者那里了解到,实现深层链接 (将用户从 Web URL 导航至移动应用中的特定页面) 一直以来都是一个实施难度较大且容易出错的任务。因此,我们首先创建了一个验证工具,以帮助开发者了解哪些链接配置不正确,并提供了实施指导。我们非常高兴地宣布,Flutter 深层链接验证器的早期版本现已推出!

在此早期版本中,Flutter 深层链接验证器支持对 Android 进行 Web 检查,这意味着该工具可以验证您 assetlinks.json 文件的设置是否正确。您可以打开 DevTools,点击进入 "深层链接" (Deep Links) 标签页,然后导入一个包含深层链接的 Flutter 项目。深层链接验证器会显示您 Web 文件的配置是否正确。您可以参阅深层链接验证工具的测试说明,以了解详细信息。

  • 测试说明

    https://docs.google.com/document/d/1fnWe8EpZleMtSmP0rFm2iulqS3-gA86z8u9IsnXjJak/edit?tab=t.0

希望这款工具能成为简化您深层链接实现过程的第一步。我们将持续致力于为 iOS 平台提供 Web 检查支持,并在 iOS 和 Android 两个平台上都提供应用内检查支持!

8e2da0ae1352c6d00d2329fa0469bc11.png

Share.invoke 支持

Android 平台之前缺少文本字段和视图上的默认分享按钮,但在本次发布中我们已经将其添加进来。这是我们持续努力的见证,旨在确保每个平台上的所有默认上下文菜单按钮都可用。您可以通过 PR #107578 持续关注进展情况。

  • PR #107578

    https://github.com/flutter/flutter/issues/107578

Native Assets 功能

如果您对 Flutter 与 Flutter 代码中其它语言函数的互操作性感兴趣,您现在可以在 Android 平台上通过 Native Assets 执行 FFI 调用。随时了解我们支持 Native Assets 功能的持续进展。

  • 持续进展

    https://github.com/flutter/flutter/issues/129757

纹理层混合组合 (TLHC) 模式

Flutter 3.19 版本能够让 Google 地图和文本输入放大镜在 TLHC 模式下运行,这意味着您的应用将获得更好的性能表现。如果您正在使用 Google 地图,我们鼓励您测试这些变化,并向我们分享反馈!

这项工作不包括在框架或引擎层面的提交中,但您可以在 PR 5408 中查看相关内容,以及测试 TLHC 模式的步骤。

  • PR 5408

    https://github.com/flutter/packages/pull/5408

自定义系统范围内的文本选择工具栏按钮

Android 应用可以添加自定义的文本选择菜单项,这些菜单项将会出现在所有文本选择菜单中,即用户长按文本时弹出的菜单。Flutter 的 TextField 选择菜单现已包含此功能。

iOS

Flutter iOS 原生字体

现在,Flutter 在 iOS 上的文本看起来更加紧凑且更接近原生风格。按照 Apple 的设计指南,iOS 上较小的字体应该排列得更为宽松以便在移动设备上阅读时更加舒适,而较大的字体则应设计得更为紧凑,以节省空间。在此之前,无论字号大小,我们都错误地采用了较为宽松的小字号样式。而现在,默认情况下 Flutter 将为较大的文本使用更为紧凑的字体样式。

8a53554f965a3cd8842dc253f9680637.png

DevTools

DevTools 更新

此版本的一些 DevTools 亮点包括:

  • 在 DevTools 中添加了一个新功能和屏幕,用于验证 Android 平台上的深层链接设置。

  • 在 "增强跟踪" (Enhance Tracing) 菜单中添加了一个选项,用于跟踪平台渠道活动。这对于带有插件的应用很有帮助。

    8badb2255c0415e10b871b290d94bb44.png

  • 性能和 CPU 分析器屏幕现在即使在没有连接任何应用的情况下也可访问。之前通过 DevTools 保存的性能数据或 CPU 配置文件,现在可以从这些屏幕上重新加载并查看。

  • VS Code 中的 Flutter 侧边栏现在增加了新功能: 如果当前项目尚未启用新平台,用户可以直接启用新的平台。此外,侧边栏上的 DevTools 菜单现在提供一个选项,可让用户在外部浏览器窗口中打开 DevTools。

如要了解更多信息,您可以查看 DevTools 2.29.0、2.30.0 和 2.31.0 的版本说明。

  • 2.29.0

    https://docs.flutter.dev/tools/devtools/release-notes/release-notes-2.29.0

  • 2.30.0

    https://docs.flutter.dev/tools/devtools/release-notes/release-notes-2.30.0

  • 2.31.0

    https://docs.flutter.dev/tools/devtools/release-notes/release-notes-2.31.0

桌面设备

Windows Arm64 支持

感谢社区成员 @pbo-linaro 的不懈努力,Flutter 在 Windows 平台上现已初步支持 Arm64 架构。这一初始支持为 Flutter 应用能在 Windows Arm64 设备上更加高效且高性能地原生运行奠定了基础。尽管这项支持功能仍在开发阶段 (您可以在 GitHub 问题 #62597 上跟踪进展),但这标志着 Flutter 开发者为在更广泛的 Windows 设备上优化其运用的运行迈出了卓越的一步。

  • @pbo-linaro

    https://github.com/pbo-linaro

  • #62597

    https://github.com/flutter/flutter/issues/62597

生态系统

必须提供隐私清单

Flutter 现在在 iOS 平台上包含了隐私清单,以满足即将出台的 Apple 要求。

  • 即将出台的 Apple 要求

    https://developer.apple.com/support/third-party-SDK-requirements/

Flutter 和 Dart Package 

生态系统的进展

如果您之前错过了相关信息,欢迎查看我们关于 Flutter 和 Dart Package 生态系统进展的博客文章。

  • Flutter 和 Dart Package 生态系统进展

    http://docs.google.com/flutter/progress-of-the-flutter-package-ecosystem-17cded9a0703

弃用和重大变更

放弃对 Windows 7

和 Windows 8 的支持

随着 Flutter 的不断发展,我们在 Dart 3.3 和 Flutter 3.19 版本终止了对 Windows 7 和 Windows 8 的支持,进而专注于最新的技术。这一调整符合 Microsoft 的战略,使我们能够在现代操作系统上进一步增强 Flutter 的功能。我们深知这可能需要开发者们做出相应的调整,并承诺将全力协助您顺利完成过渡。此举为在受支持的 Windows 版本上构建一个更安全、高效且功能丰富的开发环境奠定了基础。感谢您的理解和努力适应,在 Flutter 生态系统中,我们将继续携手创新,共同进步。

Impeller 抖动效果标志

Flutter 3.16 稳定版的版本说明中指出,全局标志 Paint.enableDithering 已被移除。有关详细信息,您可以参阅官方网站上的重大变更公告。

  • 移除

    https://github.com/flutter/engine/pull/46745

  • 重大变更公告

    https://docs.flutter.dev/release/breaking-changes/paint-enableDithering

放弃对 iOS 11 的支持

由于调用特定网络 API 时会出现运行时崩溃问题,Flutter 不再支持 iOS 11。这意味着针对 Flutter 3.16.6 及更高版本构建的应用将无法在此类设备上运行。

  • 运行时崩溃

    https://github.com/flutter/flutter/issues/136060

弃用自动渲染模式

在此版本的重大变更中,我们宣布了一些已弃用的 API,这些 API 对 v3.16 之后的版本不再有效。如要查看所有受影响的 API 及其附加背景信息和迁移指南,您可以参阅此版本的弃用指南。许多弃用的 API 都受到 Flutter fix 的支持,包括 IDE 中的快速修复功能。您可以通过 dart fix 命令行工具来批量评估并应用修复。

  • 重大变更

    https://docs.flutter.dev/release/breaking-changes

  • 此版本的弃用指南

    https://docs.flutter.dev/release/breaking-changes/3-16-deprecations

  • Flutter fix

    https://docs.flutter.dev/development/tools/flutter-fix

非常感谢社区一如既往地为测试工作所做的贡献,帮助我们识别以上重大变更。如要了解详情,您可以查看 Flutter 的重大变更政策。

  • 为测试工作所做的贡献

    https://github.com/flutter/tests/blob/master/README.md

  • Flutter 的重大变更政策

    https://github.com/flutter/flutter/wiki/Tree-hygiene#handling-breaking-changes

在此次发布中,除了已支持的 flutter 和 flutter_test package 之外,flutter_driver package 也首次被纳入了弃用策略之中。

即刻体验

我们特意在本文的开篇部分强调了贡献者的数量。Flutter 日益发展成一个强大且高效的工具套件,这证明了我们卓越的社区成员的奉献精神与辛勤努力。我们向每一个人表示由衷的感谢。

如要深入了解此版本的具体内容,您可以参阅 Flutter 3.19 的版本说明和更新日志,获取新增功能的详尽列表。

  • 版本说明和更新日志

    https://docs.flutter.dev/release/release-notes/release-notes-3.19.0

Flutter 3.19 以及 Dart 3.3 已在稳定渠道中正式发布。开始使用最新版 Flutter 踏上全新开发旅程,就像运行 "flutter upgrade" 一样轻松。

  • Dart 3.3

    https://medium.com/dartlang/new-in-dart-3-3-extension-types-javascript-interop-and-more-325bf2bf6c13


4fdd8cbeea680490521add746db16bec.gif 点击屏末  | 即刻访问 Flutter 开发者社区中文资源

a06c3734c1de2297e349d6bc8218d6aa.png

fd9c0d019c20887403b020e1cf899d9a.png

2fb857e43f1441385343fa5958717140.png

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

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

相关文章

全局统一返数据类型封装记录

全局统一返回值封装 ​ 在Spring Boot中&#xff0c;实现全局统一返回值封装是一种常见的做法&#xff0c;它有助于保持API的一致性&#xff0c;并简化前端对响应数据的处理。创建一个响应体类&#xff0c;包含状态码、消息、数据等字段。这个类可以作为所有控制器返回值的通用…

达梦配置ODBC连接

达梦配置ODBC连接 基础环境 操作系统&#xff1a;Red Hat Enterprise Linux Server release 7.9 (Maipo) 数据库版本&#xff1a;DM Database Server 64 V8 架构&#xff1a;单实例1 下载ODBC包 下载网址&#xff1a;https://www.unixodbc.org/ unixODBC-2.3.0.tar.gz2 编译并…

python-django物流仓储进销存配送管理系统flask_1ea2k

实现了一个完整的物流管理系统&#xff0c;其中主要有站点信息模块、物流进度模块、用户表模块、司机模块、入库信息模块、签收信息模块、类型模块、快递信息模块、客户模块、客服模块、公告信息模块、服务类型模块、配置文件模块、出库信息模块、车辆信息模块、仓管模块、账户…

生成式AI的情感实验——AI能否产生思想和情感?

机器人能感受到爱吗&#xff1f;这是一个很好的问题&#xff0c;也是困扰了科学家们很多年的科学未解之谜。虽然我们尚未准备好向智能机器赋予情感&#xff0c;但智能机器却已经可以借助生成式人工智能&#xff08;AI&#xff09;来帮助我们表达自己的情感。 自然情感表达 AI正…

risc-v向量扩展strlen方法学习

riscv向量文档中给出了strlen的实现&#xff0c; 大概是这么一个思路&#xff0c; 加载向量: 使用向量加载指令&#xff08;如 vload&#xff09;从内存中加载一个向量长度的字符。比较向量与零: 使用向量比较指令&#xff08;如 vmask 或 vcmpeq&#xff09;来检查向量中的每…

Linux网络协议栈从应用层到内核层④

文章目录 1、网卡接受数据2、网络设备层接收数据3、ip层接受数据4、tcp层接受数据5、上层应用读取数据6、数据从网卡到应用层的整体流程 1、网卡接受数据 当网卡收到数据时&#xff0c;会触发一个中断&#xff0c;然后就会调用对应的中断处理函数&#xff0c;再做进一步处理。…

pycharm

✅作者简介&#xff1a;CSDN内容合伙人、阿里云专家博主、51CTO专家博主、新星计划第三季python赛道Top1&#x1f3c6; &#x1f4c3;个人主页&#xff1a;hacker707的csdn博客 &#x1f525;系列专栏&#xff1a;零基础学Python &#x1f4ac;个人格言&#xff1a;不断的翻越一…

企业计算机服务器中了mallox勒索病毒怎么办?Mallox勒索病毒解密流程步骤

网络技术的不断应用与发展&#xff0c;为企业的生产运营带来了极大便利&#xff0c;企业通过网络办公开展各项工作业务已经成为常态&#xff0c;网络为企业的发展带来了更多机遇&#xff0c;但随之而来的网络数据安全威胁也在不断增加。近期&#xff0c;云天数据恢复中心接到山…

19k star, 导出微信聊天记录,生成 HTML、Word、CSV等格式,并分析聊天数据,做成可视化年报

19k star, 导出微信聊天记录&#xff0c;生成 HTML、Word、CSV等格式&#xff0c;并分析聊天数据&#xff0c;做成可视化年报 分类 开源分享 项目名: 留痕 -- 一款强大的微信聊天管理工具 Github 开源地址&#xff1a;https://github.com/LC044/WeChatMsg Gitee 开源地址&…

分布式架构中一些常用算法的理解

对分布式算法 - 一致性Hash算法的理解 一致性哈希算法是一种分布式算法&#xff0c;用于解决数据分布和负载均衡问题。它通过将数据和节点映射到一个哈希环上&#xff0c;实现了数据在节点之间的均匀分布和最小化数据迁移。 一致性哈希算法的核心思想是将数据和节点都映射到哈…

百度行驶证C++离线SDK V1.1 C#接入

百度行驶证C离线SDK V1.1 C#接入 目录 说明 效果 项目 代码 下载 说明 自己根据SDK封装了动态库&#xff0c;然后C#调用。 SDK包结构 效果 项目 代码 using Newtonsoft.Json; using System; using System.Drawing; using System.Runtime.InteropServices; using System…

LeetCode-94. 二叉树的中序遍历【栈 树 深度优先搜索 二叉树】

LeetCode-94. 二叉树的中序遍历【栈 树 深度优先搜索 二叉树】 题目描述&#xff1a;解题思路一&#xff1a;递归解题思路二&#xff1a;迭代解题思路三&#xff1a;0 题目描述&#xff1a; 给定一个二叉树的根节点 root &#xff0c;返回 它的 中序 遍历 。 示例 1&#xff1…

基于Python深度学习的中文情感分析系统(V2.0)

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;…

信息安全就是国家安全,带大家了解一下安全算法

信息安全就是国家安全&#xff01; 今天这编文章就带大家了解一下安全算法吧&#xff0c;个人理解仅供参考&#xff01; 对安全算法 - 摘要算法的理解 摘要算法是一种将任意长度的数据转换为固定长度字节串的算法。它具有以下特点和应用。 首先&#xff0c;摘要算法能够生成…

文件操作详解(三)--fsee -- ftell -- rewind -- feof函数 -- ferror函数

目录 一.文件的随机读写1.fseek2.ftell3.rewind 二.文件读写结束的判定1.feof函数&#xff08;不是用来判定文件结束的&#xff09;2.ferror函数 三.文件缓冲区 一.文件的随机读写 1.fseek int fseek(FILE* stream,long int offset,int origin); //第一个参数文件流 //第二个…

excel统计分析——协方差分析的作用

参考资料&#xff1a;生物统计学 1、协变量与试验因素的区别 如果把协方差分析资料中的协变量看作多因素方差分析资料中的一个因素&#xff0c;则两类资料有相似之处&#xff0c;但两类资料有本质的不同。在方差分析中&#xff0c;各因素的水平时人为控制的&#xff0c;即使是…

学透Spring Boot — 004. Spring Boot Starter机制和自动配置机制

如果你项目中一直用的是 Spring Boot&#xff0c;那么恭喜你没有经历过用 Spring 手动集成其它框架的痛苦。 都说 Spring Boot 大大简化了 Spring 框架开发 Web 应用的难度&#xff0c;这里我们通过配置 Hibernate 的两种方式来深刻体会这一点&#xff1a; 使用 Spring 框架集…

MT3017 上色

思路&#xff1a;使用分治&#xff0c;在每个连续区域递归调用heng()和shu() #include <bits/stdc.h> using namespace std; int n, m; int h[5005];int shu(int l, int r) {return r - l 1; } int heng(int l, int r) {int hmin 0x3f3f3f3f;for (int i l; i < r;…

【协议】RPC

文章目录 概述与web service/web api/wcf区别简介区别和联系 grpc.Net Core示例 参考 概述 与web service/web api/wcf区别 简介 RPC&#xff08;Remote Procedure Call Protocol&#xff09;即远程过程调用协议&#xff0c;是分布式系统间通信的一种协议。通过网络从远程计…

【Apache Doris】周FAQ集锦:第 2 期

【Apache Doris】周FAQ集锦&#xff1a;第 2 期 SQL问题数据操作问题运维常见问题其它问题关于社区 欢迎查阅本周的 Apache Doris 社区 FAQ 栏目&#xff01; 在这个栏目中&#xff0c;每周将筛选社区反馈的热门问题和话题&#xff0c;重点回答并进行深入探讨。旨在为广大用户和…