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

通过外部链接启动 Flutter App(详细介绍及示例)

通过外部链接启动 Flutter App(firebase_dynamic_links 和 app_links)

详细介绍 通过外部链接启动flutter App 的使用及示例

在我们的APP中,经常有点击链接启动并进入APP的需求(如果未安装跳转到应用商店)。Android通过deep link或者app link(是deep link 的增强版),iOS通过 url schema,可以打开对应的app,因此我们需要对我们的app进行对应的配置。下面将会详细介绍两种方式。
推荐使用app_link

一、firebase_dynamic_links (该服务已经弃用,2025 年 8 月将关闭)

该三方服务提供了 生成分享链接、通过链接启动跳转到指定页面的方法,通知支持 未安装App的时候跳转其他的链接(例如跳转到应用商店),重定向逻辑 由 Firebase 服务自动处理,并且支持短链接。

实现步骤:

1. 安装依赖:

在 pubspec.yaml 文件中添加:

dependencies:flutter:sdk: flutterfirebase_dynamic_links: ^6.0.5

2. 配置 Android

在 android/app/src/main/AndroidManifest.xml 文件中,添加 intent-filter 配置,以便在 Android 中处理 App Links。

<activity android:name=".MainActivity"><intent-filter><action android:name="android.intent.action.VIEW" /><category android:name="android.intent.category.DEFAULT" /><category android:name="android.intent.category.BROWSABLE" /><dataandroid:host="i89trillion.page.link"android:scheme="https" /></intent-filter>
</activity>

3. 初始化链接监听 || 生成分享链接(代码实现)

  • 先在main方法中初始化监听:(在 runApp 之前初始化)
// 初始化动态链接
await FirebaseDynamicLinkService.initDynamicLink();
  • 实现生成分享链接和监听链接的方法:
    示例如下:

import "dart:async";
import "dart:io";import "package:easy_localization/easy_localization.dart";
import "package:firebase_dynamic_links/firebase_dynamic_links.dart";class FirebaseDynamicLinkService {static Duration maxDuration = Duration(seconds: 5);static Future<void> initDynamicLink() async {// 未启动的时候监听final PendingDynamicLinkData? initialLink =await FirebaseDynamicLinks.instance.getInitialLink();if (initialLink != null) {final Uri deepLink = initialLink.link;FirebaseAnalyticsService.logEvent(FirebaseAnalyticsEvent.link_join_guild_finish, '0');_handleDeepLink(deepLink);}// 应用程序在后台启动时有效FirebaseDynamicLinks.instance.onLink.listen((dynamicLinkData) {final Uri deepLink = dynamicLinkData.link;FirebaseAnalyticsService.logEvent(FirebaseAnalyticsEvent.link_join_guild_finish, '1');_handleDeepLink(deepLink);}, onError: (e) {LogUtil.error(e.toString());});}static void _handleDeepLink(Uri deepLink) async {var isJoinGuildLink = deepLink.pathSegments.contains('joinServer');if (isJoinGuildLink) {String? id = deepLink.queryParameters['id'];if (id != null) {LogUtil.info("deepLink serverId: $id");}}}// 创建一个群邀请链接static Future<String> createJoinServerDynamicLink(bool short, int guildID) async {if (!Platform.isAndroid && !Platform.isIOS) {return "该功能只在 Android 和 iOS 上可用";}String _linkMessage;final DynamicLinkParameters parameters = DynamicLinkParameters(uriPrefix: "https://xxx.page.link",link: Uri.parse('https://xxx.page.link/joinServer?id=$guildID'),androidParameters: AndroidParameters(// 未安装应用程序打开的链接fallbackUrl: Uri.parse('https://play.google.com/store/apps/details?id=xxx'),packageName: 'xxx',),);Uri url;if (short) {final ShortDynamicLink shortLink = await FirebaseDynamicLinksPlatform.instance.buildShortLink(parameters);url = shortLink.shortUrl;} else {url = await FirebaseDynamicLinksPlatform.instance.buildLink(parameters);}_linkMessage = url.toString();return _linkMessage;}
}

4. 未安装时跳转

在生成链接的时候参数 fallbackUrl 为未安装App时打开的链接,firebase 服务自己做了重定向。

二、app_links

该三方库 也支持 通过链接启动App,同时解析链接参数,跳转指定页面,但是不支持App未安装的时候跳转其他链接(需要自己的服务处理重定向)
官方文档见:https://developer.android.com/studio/write/app-link-indexing?hl=zh-cn#testindent

实现步骤:

1. 安装依赖:

在 pubspec.yaml 文件中添加:

dependencies:flutter:sdk: flutterapp_links: ^6.0.1 # 用于处理动态链接

2. 配置 Android 和 iOS 支持

在 android/app/src/main/AndroidManifest.xml 文件中,添加 intent-filter 配置,以便在 Android 中处理 App Links。

<activity android:name=".MainActivity"><!-- Add the intent-filter for handling app links --><intent-filter android:autoVerify="true"><action android:name="android.intent.action.VIEW" /><category android:name="android.intent.category.DEFAULT" /><category android:name="android.intent.category.BROWSABLE" /><data android:scheme="https" android:host="yourapp.page.link" android:pathPrefix="/joinServer"/></intent-filter>
</activity>

注意: 这里注意下,开启autoVerify的activity中的<intent-filter…>的action必须为android.intent.action.VIEW,category必须包含android.intent.category.BROWSABLE,data的scheme必须包含http/https,否则不生效,而且AppLinks必须在Android 6.0 以上的手机才可生效。
android:host 为域名,android:pathPrefix为地址前缀,根据实际需求配置

2. 初始化链接监听 || 生成分享链接(代码实现)

  • 先在main方法中初始化监听:(在 runApp 之前初始化)
// 初始化动态链接await AppLinkService.initializeDynamicLinks();
  • 实现生成分享链接和监听链接的方法:
    示例如下:
import 'package:app_links/app_links.dart';
import "package:beehive/utils/logger.dart";
import "dart:async";class AppLinkService {static final AppLinks appLinks = AppLinks();// 初始化动态链接static Future<void> initializeDynamicLinks() async {print('Initializing dynamic links...');// 监听动态链接流appLinks.uriLinkStream.listen((Uri? uri) {print("appLink listen: $uri");if (uri != null) {_handleDeepLink(uri);}});}// 处理动态链接,跳转到相应页面static void _handleDeepLink(Uri deepLink) async {var isJoinGuildLink = deepLink.pathSegments.contains('joinServer');if (!isJoinGuildLink){return;}String? id = deepLink.queryParameters['id'];LogUtil.info("appLink serverId: $id");}// 生成分享链接static Future<String> generateShareLink(int serverId) async {final String deepLinkUrl = 'https://yourapp.page.link/joinServer?id=$serverId';final Uri dynamicLink = Uri.parse(deepLinkUrl);return dynamicLink.toString(); // 返回生成的动态链接}
}

3. 链接识别启动进App

需要在域名<https://yourapp.page.link> 根目录下面 放一个JSON文件:.well-known/assetlinks.json 。该JSON文件就是用于识别进入App的,如果是谷歌商店的App,可以直接在管理中心生成,如果是测试,就自己生成。
内容格式如下:
[{"relation": ["delegate_permission/common.handle_all_urls"],"target": {"namespace": "android_app","package_name": "xxxx","sha256_cert_fingerprints":["7F:48:F9:..."]}}
]

4. 未安装时跳转逻辑

app link没有实现未安装跳转其他URL,需要自己在自己的服务域名下面进行重定向处理。(例如重定向到应用商店)
快速的方法:将 一个重定向的HTML也放到域名根目录下面。客户端 识别链接就是这个html,可以在链接中加参数。分享链接就是:https://yourapp.page.link/applink.html
例如:applink.html

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">
<html>
<head><title>App Link</title>
</head>
<script>window.onload = function() {if (/(android)/i.test(navigator.userAgent)) {// 用户使用的是 Android 设备window.location.href = "https://play.google.com/store/apps/details?id=xxx";} else if (/(iphone|ipad|ipod|ios)/i.test(navigator.userAgent)) {// 用户使用的是 iOS 设备window.location.href = "https://itunes.apple.com/app/idxxx";} else {// 用户使用的是其他设备console.log("This device is not supported.");}};
</script>
<body></body>
</html>

也可以在该域名对应的服务中对某个接口实现重定向逻辑:
例如:(go语言 gframe框架为例)

func (ctrl *linkCtrl) LinkRedirect(r *ghttp.Request) {userAgent := r.Header.Get("User-Agent")log.LogRuntime(log.LEVEL_INFO, "[LinkRedirect] userAgent:", userAgent)if strings.Contains(strings.ToLower(userAgent), "android") {// 用户使用的是 Android 设备r.Response.RedirectTo(define.GooglePlayAdd)} else {// 用户使用的是其他设备r.Response.Write("This device is not supported.")}
}

或者也可以直接在NGINX上面重定向跳转.

相关文章:

通过外部链接启动 Flutter App(详细介绍及示例)

通过外部链接启动 Flutter App&#xff08;firebase_dynamic_links 和 app_links&#xff09; 详细介绍 通过外部链接启动flutter App 的使用及示例 在我们的APP中&#xff0c;经常有点击链接启动并进入APP的需求&#xff08;如果未安装跳转到应用商店&#xff09;。Android通…...

计算机视觉模型的未来:视觉语言模型

一、视觉语言模型 人工智能已经从识别数据中的简单模式跃升为理解复杂的多模态数据。该领域的发展之一是视觉语言模型 (VLM) 的兴起。这类模型将视觉和文本之间联系起来,改变了我们理解视觉数据并与之交互的方式。随着 VLM 的不断发展,它们正在为计算机视觉设定一个新的水平…...

CTK插件框架学习-源码下载编译(01)

1、编译环境 window11、vs17、Qt5.14.0、cmake3.27.4 2、下载链接 cmake&#xff1a;Index of /files/v3.20 qt&#xff1a;Index of / vs22以前的版本需要登录下载&#xff1a;Visual Studio 较旧的下载 - 2019、2017、2015 和以前的版本 vs22下载&#xff1a;下载 Visu…...

Python 字符串分割时 spilt 和 re 效率对比

假设 有一些文件名是 数字_文档名 的格式&#xff0c;如何用python将数字提取出来&#xff1f; 可以使用 Python 的正则表达式模块 re 提取文件名中的数字部分。以下是实现代码&#xff1a; 示例代码&#xff1a; import re# 示例文件名列表 file_names ["1_file1.txt…...

AUTOSAR通信篇 - PDU和收发数据

点击订阅专栏不迷路 文章目录 一、概述二、OSI模型与AUTOSAR层级关系三、I-PDU、N-PDU、L-PDU及其关系3.1. L-PDU3.2. N-PDU3.3. I-PDU 四、数据流4.1. 普通数据流4.2. 诊断数据流4.3. 动态PDU数据流4.4. 安全通信数据流4.5. XCP数据流 返回总目录 一、概述 在学习Autosar通信…...

wps数据分析000002

目录 一、快速定位技巧 二、快速选中技巧 全选 选中部分区域 选中部分区域&#xff08;升级版&#xff09; 三、快速移动技巧 四、快速录入技巧 五、总结 一、快速定位技巧 ctrl→&#xff08;上下左右&#xff09;快速定位光标对准单元格的上下部分双击名称单元格中…...

【C++基础】enum,union,uint8_t,static

enum 所以有时候使用 Enum 的目的&#xff0c;不是为了自定义一种数据类型&#xff0c;而是为了声明一组常量。 from: https://github.com/wangdoc/clang-tutorial/blob/main/docs/enum.md union C 语言提供了 Union 结构&#xff0c;用来自定义可以灵活变更的数据结构。它内部…...

node.js的进程保活

nodejs的进程保活其实用PM2应该更好用些&#xff0c;不过由于原理其实并不复杂&#xff0c;我们可以自己手写一个服务来干这个工作。 假设我们有一个服务&#xff0c;可以这样来定义下它的相关信息&#xff1a; const svcs[ {"sid":"apl","name"…...

css中的阴影详解

在 CSS 中&#xff0c;阴影效果通常使用 box-shadow 和 text-shadow 来实现&#xff0c;它们分别适用于元素的框和文本。阴影是提升页面设计感和层次感的重要工具。下面&#xff0c;我会详细讲解这两个属性&#xff0c;并结合代码示例说明。 目录 1. box-shadow示例 2. text-sh…...

AI刷题-饭馆菜品选择问题、构造回文字符串问题

目录 一、饭馆菜品选择问题 问题描述 测试样例 解题思路&#xff1a; 问题理解 数据结构选择 算法步骤 最终代码&#xff1a; 运行结果&#xff1a; 二、构造回文字符串问题 问题描述 测试样例 解题思路&#xff1a; 解题思路 具体步骤 最终代码&#xff1a;…...

时间序列分析ARIMA(AutoRegressive Integrated Moving Average,自回归积分滑动平均)模型:中英双语

ARIMA模型&#xff1a;时间序列分析中的强大工具 在时间序列分析中&#xff0c;ARIMA&#xff08;AutoRegressive Integrated Moving Average&#xff0c;自回归积分滑动平均&#xff09;模型是一种广泛使用的模型。它通过结合自回归、差分和滑动平均三种方法来对时间序列进行…...

青少年编程与数学 02-007 PostgreSQL数据库应用 02课题、PostgreSQL数据库安装

青少年编程与数学 02-007 PostgreSQL数据库应用 02课题、PostgreSQL数据库安装 一、安装Windows系统安装PostgreSQL 17Linux系统安装PostgreSQL 17 二、配置Windows系统Linux系统 三、启动&#xff08;一&#xff09;Windows系统使用服务管理器&#xff08;services.msc&#x…...

群发邮件适合外贸行业吗

一、群发邮件契合外贸行业的市场拓展需求 外贸业务的本质在于跨越地域限制&#xff0c;与全球各地的潜在客户建立联系。群发邮件能够突破时空限制&#xff0c;瞬间将产品或服务信息传递到世界各地。通过精准的市场调研与客户数据整理&#xff0c;企业可以针对不同国家和地区的…...

面试之《new关键字》

一问&#xff1a;new关键字做了什么操作&#xff0c;手写一个new方法&#xff0c;实现new关键字的作用 二问&#xff1a; // 第一题 / function Test(){this.name 1;return {name: 2} } const a new Test(); console.log(a.name) // 打印什么/// 第二题 / function Test2()…...

《机器学习》——SVD(奇异分解)降维

文章目录 SVD基本定义SVD降维的步骤SVD降维使用场景SVD 降维的优缺点SVD降维实例导入所需库定义SVD降维函数导入图像处理图像处理图像打印降维结果并显示处理后两个图像的对比图 SVD基本定义 简单来说就是&#xff0c;通过SVD&#xff08;奇异值分解&#xff09;对矩阵数据进行…...

【MySQL实战】mysql_exporter+Prometheus+Grafana

要在Prometheus和Grafana中监控MySQL数据库&#xff0c;如下图&#xff1a; 可以使用mysql_exporter。 以下是一些步骤来设置和配置这个监控环境&#xff1a; 1. 安装和配置Prometheus&#xff1a; - 下载和安装Prometheus。 - 在prometheus.yml中配置MySQL通过添加以下内…...

业务架构、数据架构、应用架构和技术架构

TOGAF(The Open Group Architecture Framework)是一个广泛应用的企业架构框架&#xff0c;旨在帮助组织高效地进行架构设计和管理。 TOGAF 的核心就是由我们熟知的四大架构领域组成:业务架构、数据架构、应用架构和技术架构。 企业数字化架构设计中的最常见要素是4A 架构。 4…...

mysql-5.7.18保姆级详细安装教程

本文主要讲解如何安装mysql-5.7.18数据库&#xff1a; 将绿色版安装包mysql-5.7.18-winx64解压后目录中内容如下图&#xff0c;该例是安装在D盘根目录。 在mysql安装目录中新建my.ini文件&#xff0c;文件内容及各配置项内容如下图&#xff0c;需要先将配置项【skip-grant-tab…...

Linux测试处理fps为30、1920*1080、一分钟的视频性能

前置条件 模拟fps为30、1920*1080、一分钟的视频 项目CMakeLists.txt cmake_minimum_required(VERSION 3.30) project(testOpenGl)set(CMAKE_CXX_STANDARD 11)add_executable(testOpenGl main.cpptestOpenCl.cpptestOpenCl.hTestCpp.cppTestCpp.hTestCppThread.cppTestCppTh…...

kubeneters-循序渐进Ingress

文章目录 overviewIngress 是什么&#xff1f;为什么使用 Ingress&#xff1f;我们会在这里做些什么&#xff1f;HTTP 服务器&#xff08;Nginx&#xff09;还能做什么&#xff1f;Kubernetes 中的简单示例&#xff1a;A) 使用 Service ClusterIPB) 手动配置 Nginx 服务作为代理…...

Shell控监Kafka积压

1、获取Kafka消息堆积情况 vi check-kafka-lag.sh #&#xff01;/bin/bashTOPIC"total_random" GROUP_ID"etl-dw" BOOTSTRAP_SERVER"node-01:9092,node-02:9092,node-03:9092"# 检查第一个参数是否为数字 if ! [[ $1 ~ ^[0-9]$ ]]; thenecho &…...

USB3020任意波形发生器4路16位同步模拟量输出卡1MS/s频率 阿尔泰科技

信息社会的发展&#xff0c;在很大程度上取决于信息与信号处理技术的先进性。数字信号处理技术的出现改变了信息 与信号处理技术的整个面貌&#xff0c;而数据采集作为数字信号处理的必不可少的前期工作在整个数字系统中起到关键 性、乃至决定性的作用&#xff0c;其应用已经深…...

MongoDB 学习指南与资料分享

MongoDB学习资料 MongoDB学习资料 MongoDB学习资料 在数据爆炸的当下&#xff0c;MongoDB 作为非关系型数据库的佼佼者&#xff0c;以其独特优势在各领域发光发热。无论是海量数据的存储&#xff0c;还是复杂数据结构的处理&#xff0c;MongoDB 都能轻松应对。接下来&#xf…...

Web端实时播放RTSP视频流(监控)

一、安装ffmpeg: 1、官网下载FFmpeg: Download FFmpeg 2、点击Windows图标,选第一个:Windows builds from gyan.dev 3、跳转到下载页面: 4、下载后放到合适的位置,不用安装,解压即可: 5、配置path 复制解压后的\bin路径,配置环境变量如图: <...

23- TIME-LLM: TIME SERIES FORECASTING BY REPRO- GRAMMING LARGE LANGUAGE MODELS

解决问题 用LLM来解决时序预测问题&#xff0c;并且能够将时序数据映射&#xff08;reprogramming&#xff09;为NLP token&#xff0c;并且保持backbone的大模型是不变的。解决了时序序列数据用于大模型训练数据稀疏性的问题。 方法 Input Embedding 输入&#xff1a; X …...

【Go】Go数据类型详解—数组与切片

1. 前言 今天需要学习的是Go语言当中的数组与切片数据类型。很多编程语言当中都有数组这样的数据类型&#xff0c;Go当中的切片类型本质上也是对 数组的引用。但是在了解如何定义使用数组与切片之前&#xff0c;我们需要思考为什么要引入数组这样的数据结构。 1.1 为什么需要…...

微服务中引入消息队列的利弊

微服务中引入消息队列的利弊 1、微服务架构中引入消息队列(Message Queue)的主要优势&#xff1a; 1.1 解耦(Decoupling) 服务之间不需要直接调用&#xff0c;通过消息队列实现松耦合 生产者和消费者可以独立扩展和维护 降低系统间的依赖性 1.2 异步处理(Asynchronous Proc…...

如何使用策略模式并让spring管理

1、策略模式公共接口类 BankFileStrategy public interface BankFileStrategy {String getBankFile(String bankType) throws Exception; } 2、策略模式业务实现类 Slf4j Component public class ConcreteStrategy implements BankFileStrategy {Overridepublic String ge…...

骑砍2霸主MOD开发(11)-可编程渲染管线Shader编程

一.固定渲染管线&可编程渲染管线 固定渲染管线:GPU常规渲染算法,将3D模型经过四大变换计算得到2D屏幕图像 可编程渲染管线:定制化GPU渲染算法,需要提交Shader至GPU中,GPU根据定制化算法得到2D屏幕图像 二.CoreShader&TerrainShader CoreShader:游戏中使用的静态shader…...

【PowerQuery专栏】PowerQuery 函数之CSV文件处理函数

CSV.Document 函数是进行CSV文件解析功能的函数,函数目前包含4个参数: 参数1为文件的数据源,数据类型为二进制类型,值为需要读取的文本数据参数2为列名称,数据类型为字符串类型,值为分割后的列名称参数3为分隔符,数据类型为任意类型,值为分割数据的分隔符参数4为文件编…...

【FAQ】HarmonyOS SDK 闭源开放能力 —Map Kit(4)

1.问题描述&#xff1a; 添加了很多的marker点&#xff0c;每个marker点都设置了customInfoWindow&#xff0c;但是每次只能显示一个customInfoWindow吗&#xff1f; 解决方案&#xff1a; Marker的InfoWindow每次只能显示一个。 2.问题描述&#xff1a; 在地图选型中&…...

通过ffmpeg将FLV文件转换为MP4

使用 ffmpeg 将 FLV 文件转换为 MP4 文件是一个常见的操作。ffmpeg 是一个强大的多媒体处理工具&#xff0c;支持多种格式的转换、剪辑、合并等操作。以下是详细的步骤和命令示例&#xff0c;帮助你完成这一任务。 安装 FFmpeg 如果你还没有安装 ffmpeg&#xff0c;可以根据你…...

深入分析Java中的重载与重写:理解多态的两个面向

深入分析Java中的重载与重写&#xff1a;理解多态的两个面向 之前其实写过一篇文章来探讨Java当中的方法重载与方法重写但当时学的还不够通透&#xff0c;分析有点片面&#xff0c;这次我从多态的角度对其进行分析&#xff0c;有问题欢迎大家来评论区一起探讨 在Java编程中&a…...

STM32的集成开发环境STM32CubeIDE安装

STM32CubeIDE - STM32的集成开发环境 - 意法半导体STMicroelectronics...

【狂热算法篇】探秘图论之 Floyd 算法:解锁最短路径的神秘密码(通俗易懂版)

&#xff1a; 羑悻的小杀马特.-CSDN博客羑悻的小杀马特.擅长C/C题海汇总,AI学习,c的不归之路,等方面的知识,羑悻的小杀马特.关注算法,c,c语言,青少年编程领域.https://blog.csdn.net/2401_82648291?spm1010.2135.3001.5343 在本篇文章中&#xff0c;博主将带大家去学习所谓的…...

25/1/13 嵌入式笔记 继续学习Esp32

PWM&#xff08;Pulse Width Modulation&#xff0c;脉宽调制&#xff09; 是一种通过快速切换高低电平来模拟中间电压值的技术。它广泛应用于控制 LED 亮度、电机速度、音频生成等场景。 analogWrite函数:用于在微控制器&#xff08;如 Arduino&#xff09;上生成模拟信号。 …...

C语言的语法糖

C语言的语法糖 引言 在程序开发的过程中&#xff0c;语言的设计和编写风格往往会直接影响开发效率和代码可读性。C语言作为一种广泛应用于系统编程和嵌入式开发的编程语言&#xff0c;其设计虽然追求简洁与高效&#xff0c;但在某些方面同样存在可以提高编程体验的“语法糖”…...

客户案例:致远OA与携程商旅集成方案

一、前言 本项目原型客户公司创建于1992年,主要生产并销售包括糖果系列、巧克力系列、烘焙系列、卤制品系列4大类,200多款产品。公司具有行业领先的生产能力,拥有各类生产线100条,年产能超过10万吨。同时,经过30年的发展,公司积累了完善的销售网络,核心经销商已经超过1200个,超…...

浔川 AI 翻译已修复,可正常使用

浔川 AI 翻译已修复&#xff0c;可正常使用 亲爱的用户们&#xff1a; 大家好&#xff01;经过技术团队的不懈努力&#xff0c;浔川 AI 翻译平台已完成修复&#xff0c;目前各项功能均已恢复正常&#xff0c;可流畅使用。在此&#xff0c;我们向一直以来关心和支持浔川 AI 翻译…...

【Python】深入探讨Python中的单例模式:元类与装饰器实现方式分析与代码示例

《Python OpenCV从菜鸟到高手》带你进入图像处理与计算机视觉的大门&#xff01; 解锁Python编程的无限可能&#xff1a;《奇妙的Python》带你漫游代码世界 单例模式&#xff08;Singleton Pattern&#xff09;是一种常见的设计模式&#xff0c;它确保一个类只有一个实例&…...

D. Paint the Tree

https://codeforces.com/problemset/problem/1975/D 分析&#xff1a; 观察样例可以发现&#xff0c;对于PB第一次在位置 r 接触到红点之后&#xff0c;接下来的怎么走完全可以有PB说了算&#xff0c;情况不会更差。同时还能发现&#xff0c;大部分边都是需要走两遍的&#xff…...

ScratchLLMStepByStep:训练自己的Tokenizer

1. 引言 分词器是每个大语言模型必不可少的组件&#xff0c;但每个大语言模型的分词器几乎都不相同。如果要训练自己的分词器&#xff0c;可以使用huggingface的tokenizers框架&#xff0c;tokenizers包含以下主要组件&#xff1a; Tokenizer: 分词器的核心组件&#xff0c;定…...

【Linux】Socket编程-TCP构建自己的C++服务器

&#x1f308; 个人主页&#xff1a;Zfox_ &#x1f525; 系列专栏&#xff1a;Linux 目录 一&#xff1a;&#x1f525; Socket 编程 TCP &#x1f98b; TCP socket API 详解&#x1f98b; 多线程远程命令执行&#x1f98b; 网络版计算器&#xff08;应用层自定义协议与序列化…...

数据结构——线性表和顺序表

1、线性表的基本概念 1.1 定义 线性结构是简单且常用的数据结构&#xff0c;而线性表则是一种典型的线性结构 存储数据&#xff0c;最简单&#xff0c;最有效的方法是吧它们存储在一个线性表中 一个线性表是n个元素的有限序列。每个元素在不同的情况下有不同的含义&#xff0c…...

FunASR 在Linux/Unix 平台编译

第一步拉取镜像并生成容器&#xff1a; ### 镜像启动 通过下述命令拉取并启动FunASR软件包的docker镜像&#xff1a; shell sudo docker pull \ registry.cn-hangzhou.aliyuncs.com/funasr_repo/funasr:funasr-runtime-sdk-online-cpu-0.1.12 mkdir -p ./funasr-runtime-…...

AIP-200 先例

编号200原文链接AIP-200: Precedent状态批准创建日期2018-06-28更新日期2018-06-28 很多时候&#xff0c;API的编写方式会违反新的指导原则。此外&#xff0c;有时出于特定原因也需要打破标准&#xff0c;例如与现有系统保持一致、满足严格的性能要求或其他因素。最后&#xf…...

SAP五大核心模块:塑造企业数字化未来

在数字化转型的浪潮中&#xff0c;SAP&#xff08;Systems, Applications and Products in Data Processing&#xff09;以其强大的企业资源规划&#xff08;ERP&#xff09;系统&#xff0c;成为众多企业信赖的伙伴。SAP系统通过五大核心模块&#xff0c;即财务管理&#xff0…...

【UE5.3】fix DONET报错

新的机器 4070 gpu 运行ue项目, 可能是epic 启动器是vs安装的, vs安装的epic 启动器自己更新了一波,导致了.NET的问题? ue项目是拷贝远程的windows的电脑里面的,应该不会导致ue源码里的cs出问题? 【UE5.3】UnrealLink 安装:fix Detected compiler newer than Visual Stu…...

【0393】Postgres内核 checkpointer process ③ 构建 WAL records 工作缓存区

1. 初始化 ThisTimeLineID、RedoRecPtr 函数 InitXLOGAccess() 内部会初始化 ThisTimeLineID、wal_segment_size、doPageWrites 和 RedoRecPtr 等全局变量。 下面是这四个变量初始化前的值: (gdb) p ThisTimeLineID $125 = 0 (gdb) p wal_segment_size $126 = 16777216 (gdb…...

pc 端 TensorRT API 实现 YOLOv11 的 C++ 小白部署经验

标题1 模型转化 python 先下载项目 https://github.com/ultralytics/ultralytics 同时下载模型 https://github.com/ultralytics/assets/releases/download/v8.3.0/yolo11n.pt pythonconda虚拟环境&#xff0c;主要是以下三个&#xff0c;其余缺什么直接pip anaconda…...