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

ARMS 用户体验监控正式发布原生鸿蒙应用 SDK

作者:羿莉

背景

对企业数据进行敏感数据扫描和保护可以提升企业或组织的数据安全。一方面敏感数据可能包括个人身份信息、财务记录、医疗记录等,定期扫描这些数据可以防止未经授权的访问和泄露。 另一方面,许多国家和地区都有关于数据保护的法律法规, 如 GDPR(通用数据保护条例)和数据安全法等。敏感数据扫描有助于组织遵守这些法规,避免法律处罚。此外,定期进行敏感数据除了可以降低数据泄漏的风险和损失,还有助于**数据治理、提升数据质量,改善系统的整体安全性。 **

方案设计

不同的敏感数据扫描工具,都具备最基本的安全能力,即发现敏感数据,进行数据分类。 下面我们将基于阿里云数据安全中心 [ 1] 的敏感数据扫描功能 [ 2] ,验证如何进行阿里云上的日志数据分类分级识别,以及如何洞察日志资产中的敏感数据,并如何跨日志库进行数据的分析和处理。

我们的方案步骤将在下文详细展开。

2.1 接入脱敏方案

接入脱敏方案主要分为两个阶段,一个是接入阶段,一个是迭代优化阶段

在接入阶段,我们首先分析采样日志,然后配置 SLS [ 3] 脱敏接入方式,最后通过 DSC [ 4] 的敏感扫描识别结果,验证脱敏效果。在看护优化阶段,我们在 DSC 创建周期性的扫描识别任务,持续优化我们的脱敏配置。

接入阶段

分析采样日志

在进行正式接入之前,我们需要先人工分析日志内容,找到数据中的敏感字段,例如根据不同行业(汽车、互联网、医疗等)定义不同的数据标签、例如个人敏感信息、医疗数据隐私、金融交易记录等。

SLS 脱敏接入

人工识别得到敏感数据后,我们有 3 种采集+脱敏的 Pipeline 的组合流程:

  • Logtail 端侧脱敏(数据流 1): 配置 SLS Logtail [ 5] 采集后,在端侧进行处理脱敏,然后写入 SLS 日志库中, 端侧脱敏处理方式也分以下 2 种:

    • 通过配置处理插件(数据脱敏 [ 6] ),通过正则匹配完成敏感字段的替换

    • 或通过多级处理语句配置 SPL 解析 [ 7] 处理脱敏

  • Logtail + Ingest Processorer 脱敏(数据流 2)组合: 对于日志产生速度较高,且需要进行大量正则处理的场景,iLogtail 本身也会占用大量系统资源。为了避免高强度的资源占用严重影响服务器上的其他业务进程,可以在 Logtail 端侧仅配置采集任务,然后通过 Ingest Processorer (写入处理器)配置 SPL 语句在日志服务侧完成脱敏处理。

  • SDK+ Ingest Processorer 脱敏(数据流 3)组合: 除了通过 Logtail 采集日志外,我们还可以基于 SDK [ 8] 通过接口调用完成日志写入,通过 Ingest Processorer [ 9] 里设置脱敏语句,脱敏处理在日志服务中完成,不占用端侧资源。

DSC 敏感扫描

进入到数据安全中心控制台,完成 SLS 数据资产 [ 10] 授权后,可以在数据洞察 [ 11] 中,通过自定义识别任务,选中扫描的资产范围和扫描的时间范围,对 SLS 资产进行敏感扫描采样。扫描完成后可以在资产透视 [ 12] 中看到,具体的敏感等级和敏感数据采样结果。

迭代优化

得到敏感数据扫描结果后,我们可以根据扫描结果不断优化和调整脱敏配置,从而减少敏感数据的暴露,以及应对新日志数据类型接入带来的脱敏问题。可以在 DSC 数据洞察中,设置周期性扫描 [1****3] 任务,按照每天、每周或每月的频率扫描 sls 资产,运维人员或管理人员定期查看敏感数据风险信息。

2.2 查询脱敏方案

前文介绍的场景,日志在存储日志库之前可以配置脱敏,然而真实的日志落库场景并不总是如此。有些业务日志需要完整地写入日志库中存储,但是又不想将敏感信息暴露给使用人员,有些业务日志需要结合存储在其他 Store 的业务日志一起联合查询,这时候我们可以采用 StoreView 的方式,既可以通过 SPL 语法 [ 14] 预定义关联的 Store 实现日志脱敏查询,又可以对不同的 Logstore 进行联合查询从而拓展内容边界。

场景详情

3.1 构造数据

我们假设用户是一家全球电子商务公司,该公司收集并存储来自世界各地客户的购买和付款信息。本次数据构造场景发生在公司的某个商品交易团队,会在日志中打印商品交易的信息,例如交易单号、客户名、购买物品、物品数量,以及一些客户的敏感数据例如交易发生的 IP 地址、客户的邮箱和联系方式等信息。如果该公司打印未编辑的敏感信息(例如信用卡号和电子邮件地址)到日志环境中,那么一旦日志数据被泄露,他们可能会面临法律后果,甚至可能违反数据隐私法。本次实践,我们基于 Mockaroo [ 15] 构造商品购买记录日志,日志数据字段包含以下几列内容:

下面是包含敏感数据的模拟日志示例:

{"customer_name":"Clarita Bassick","product_name":"Wine - Rhine Riesling Wolf Blass","quantity":88,"price":865.08,"purchase_date":"11/21/2024","shipping_address":"4 Twin Pines Terrace","payment_method":"PayPal","transaction_id":1,"delivery_status":"In Transit","email":"cbassick0@npr.org","ip_address":"199.224.149.82","creadit_card":"56022548472842990","phone_number":"+27 380 246 6745"}
{"customer_name":"Barbie Demaine","product_name":"Juice - Orange, 341 Ml","quantity":56,"price":298.24,"purchase_date":"11/20/2024","shipping_address":"7597 Becker Circle","payment_method":"PayPal","transaction_id":2,"delivery_status":"Pending","email":"bdemaine1@ifeng.com","ip_address":"208.175.140.6","creadit_card":"56022153806547181","phone_number":"+7 131 245 1815"}
{"customer_name":"Dotty Ossipenko","product_name":"Beer - Blue Light","quantity":29,"price":884.78,"purchase_date":"11/18/2024","shipping_address":"84 Sachs Street","payment_method":"Credit Card","transaction_id":3,"delivery_status":"In Transit","email":"dossipenko2@omniture.com","ip_address":"130.200.127.172","creadit_card":"560224195737574955","phone_number":"+57 264 240 2814"}

我们可以通过阿里云 logtail [ 16] Agent 以 json 解析 [ 17] 的处理方式解析原始日志,或通过 SDK 调用 api,将数据采集到阿里云 SLS 中的 Project/logstore 下,用于后续存储和查询,模拟日志内容如下:

接入时脱敏

4.1 Logtail 端侧脱敏

脱敏插件方式

下面我们展示如何通过 logtail 插件配置数据脱敏(原生),减少日志中敏感数据的暴露程度,做到在数据采集端侧完成脱敏处理,保护数据安全。

在 Logtail 的处理配置中, 首先 JSON 解析插件展开字段,然后选择数据脱敏插件,依次配置脱敏如下:

下表是各个字段进行脱敏处理的配置详情:

下图是日志数据脱敏前后的对比效果,从直观查看的角度,目前的敏感数据在日志中得到很好的隐藏和保护。

SPL 处理方式

当然除了在 Logtail 采集配置中使用插件组合配置脱敏,我们还可以使用 SPL 管道语言的处理模式,先通过 parse-json 命令展开字段,然后将各个敏感字段进行正则替换。

*| parse-json content 
| extend creadit_card=regexp_replace(creadit_card, '\d{12}$','***********')
| extend customer_name=regexp_replace(customer_name, '\S{4}$','******')
| extend phone_number=regexp_replace(phone_number, '\S{3}\s\S{4}$','*** ****')
| extend ip_address=regexp_replace(ip_address, '\d{1,3}.\d{1,3}$','**.**')
| extend email=regexp_replace(email, '\S+@','****@')
| project-away content

处理后的脱敏效果如下:

4.2 Logtail + Ingest Processorer 脱敏

为了避免高强度的资源占用严重影响服务器上的性能,可以在 Logtail 端侧仅配置采集任务,然后通过 Ingest Processorer (写入处理器)配置 SPL 语句在日志服务侧完成脱敏处理。

首先,创建 logtail 采集配置,此处 logtail 页面无需配置任何处理方式。通过 Logtail 采集配置写入日志后,此时写入的内容为原始的未经处理的文本日志。

然后我们介绍如何基于Ingest Processorer 处理器在日志服务侧进行日志脱敏处理,下面展开详细的操作步骤。

创建写入处理器(Ingest Processor)**

在当前 project 下创建数据处理器,贴入 SPL 处理语句(语句见前文 SPL 处理方式。)

关联写入处理器

然后我们修改 logstore,将其关联写入处理器。

这时候再去查看日志,发现日志已经按照期望正确脱敏。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

4.3 SDK + Ingest Processorer 脱敏

SDK 写入日志

除了支持 Agent 采集日志外,SLS 还提供了 OpenAPI [ 18] 支持用户将打印的日志通过接口直接写入日志库中。开发人员可以使用 .NET、.NET Core、Java、Python、PHP、Node.js、C、Go、iOS、Android、C++ 等语言的 SDK 采集、查询和分析日志等。具体的写入步骤,可以直接参阅文档 [ 19] 或相关示例 [ 20] ,本文不做展开。

后续的脱敏工作(创建写入处理器、关联写入处理器流程)和前文(Logtail + Ingest Processorer 脱敏)的步骤流程完全相同,用户可以自行调试优化,也可以达到将日志脱敏的效果。

敏感数据扫描***

首先我们会介绍如何创建 SLS 日志资产的扫描任务及具体步骤,然后将展开脱敏处理前后,扫描结果的命中详情进行对比,最后我们将创建周期性扫描任务,用于应对未知敏感数据的识别和持续监控。

5.1 创建扫描任务

资产授权

我们进入到数据安全中心控制台 [ 21] ,授权资产管理 SLS 中的存放敏感数据的 logstore,然后点击一键连接,授予数据安全中心对 SLS 日志资产的管理权限。

配置识别模板

DSC 内置了一些识别模板用于作为敏感数据分类与分级的依据。一个识别模板是一个或多个识别模型的组合,一个识别模型是一个或多个识别特征的集合。

例如 DSC 根据《阿里巴巴集团数据安全分类分级实践》制定了互联网行业分类分级模板,在互联网行业分类分级模板中,又包含了各类丰富的敏感信息的识别模型,例如密钥敏感信息下的 AccessKeyId 识别模型,在 AccessKeyId 模型中则定义了 AccessKeyId 的基本特征。基于这些特征,辅以模型规则配置和识别阈值配置,DSC 可以从海量数据中识别到与之匹配的 AccessKeyId 数据。

创建扫描任务

然后我们进入数据洞察界面,基于具体的业务日志详情,配置相应的分级模板,也可以直接使用内置模板,例如互联网行业分类分级模板。

然后我们在数据洞察中,新建识别任务,选择指定模板,扫描我们的 sls 资产。

等待扫描任务启动,扫描状态显示已完成。

5.2 脱敏前后对比

然后进入到数据安全中心控制台的数据洞察,资产透视界面,选择资产类型 SLS,查询扫描命中结果。

脱敏处理前

对于未脱敏的 SLS 日志数据,扫描完成后可以查看扫描得到的敏感信息、敏感等级、敏感数据采样等。可以发现,诸如邮箱、IP 地址、电话号码、姓名等敏感信息可被检测识别到。

处理后

按照前文方式配置脱敏后,接下来,我们进入数据安全控制台,重新进行敏感数据扫描,创建扫描识别任务,透视脱敏处理后的 SLS 日志资产。我们可以看到,经过数据脱敏存储后,此时信用卡号、顾客姓名、邮箱、IP 地址、电话号码均做了脱敏处理,再次运行数据安全的敏感数据扫描,只命中了一个内网 IP 地址(记录日志采集的 ip),此时数据隐私性得到极大改善。

5.3 周期扫描

当扫描任务完成后,我们可以根据扫描结果不断优化和调整脱敏配置,从而减少敏感数据的暴露,以及应对持续的新日志数据类型接入带来的新的脱敏问题。用户可以在数据安全中心数据洞察中,设置周期性扫描任务,支持按照每天、每周或每月的频率扫描 sls 资产。

查询时脱敏

前文介绍,日志落库之前的脱敏及扫描详情,下面我们介绍如何在日志已经完整落库(含敏感内容)SLS 之后,通过 StoreView 配置 SPL 等方式,实现数据价值的最大化利用。

6.1 权限隔离

业务日志由不同的应用程序、服务、云产品生成,存储在不同地域的 Project 或同一地域的不同 LogStore 中。对于用户日志数据而言,不同 logstore 本身就处于不同的暴露等级中。最好的日志隔离方式就是对不同暴露级别的数据,配置不同的 logstore 单元的访问权限。针对不同使用角色,建立针对性的 Logstore 资源分级访问控制(RAM )制度可以有效地保护数据安全。例如后台管理人员只可以看到交易记录日志,不能看到广告投放数据。

6.2 StoreView

假设对于运营人员,虽然其掌握了广告投放数据,但是出于精准营销的目的,想要分析广告投放对不同顾客的交易转化提升效率,此时运营人员需要将广告投放日志结合交易记录日志进行综合分析。这时候,运营人员可以通过 SLS 的 StoreView 功能,跨 Store 的去查询交易记录日志。

跨 Store 查询

此时的 StoreView 并非实体资源,而是跨 Store 的虚拟资源,用于保存多个 Store 之间的关联关系。运营人员可以查询指定 StoreView 下的日志数据。

此时通过保留字段 tag:project__ 和 tag:logstore 可以查看日志分别来自哪一个 Project/Logstore。

SPL 脱敏预定义

要注意的是,此时的联合查询,运营人员可以看到完整的用户交易信息,包括用户邮箱、信用卡号、联系方式等个人信息。完整的信息暴露是不安全且不合规的,我们可以修改我们的 StoreView,通过 SPL 实现对数据预脱敏处理,然后交给运营人员查询处理,脱敏处理后的日志库查询,从而有效避免用户信息泄露的风险。

*
| extend creadit_card=regexp_replace(creadit_card, '\d{12}$','***********')
| extend customer_name=regexp_replace(customer_name, '\S{4}$','******')
| extend phone_number=regexp_replace(phone_number, '\S{3}\s\S{4}$','*** ****')
| extend ip_address=regexp_replace(ip_address, '\d{1,3}.\d{1,3}$','**.**')
| extend email=regexp_replace(email, '\S+@','****@')

此时再去 StoreView 查询结果如下,查询结果已经脱敏,我们可以放心地将 StoreView 的查询结果暴露给运营人员,从而有效保护用户交易隐私。

总结

随着企业对云服务的广泛应用,数据安全成为重要课题。通过对云上数据进行敏感数据扫描和保护,可以有效提升企业或组织的数据安全。本文主要基于阿里云的数据安全中心数据识别功能进行深入实践探索。通过对商品购买日志的模拟,分析了如何使用阿里云的工具对日志数据进行识别、脱敏(3 种模式)处理和基于 StoreView 的查询脱敏方式,从而在保障数据安全的同时满足业务需求。通过这些实践,企业可以有效降低数据泄漏风险,提升数据治理能力和系统安全性。

点击此处,访问可观测中文社区,了解更多技术干货~

**相关链接:
**

[1] 数据安全中心

https://yundun.console.aliyun.com/?spm=a2c6h.12873639.article-detail.7.33c05239LfPs4H&p=sddp#/overview/cn-zhangjiakou

[2] 敏感数据扫描功能

https://help.aliyun.com/zh/dsc/data-security-center/user-guide/manage-identification-tasks

[3] SLS

https://help.aliyun.com/zh/sls/?spm=a2c6h.12873639.article-detail.9.33c05239LfPs4H

[4] DSC

https://help.aliyun.com/zh/dsc/ [5] Logtailhttps://help.aliyun.com/zh/sls/user-guide/use-logtail-to-collect-data

[6] 数据脱敏

https://help.aliyun.com/zh/sls/user-guide/desensitization-treatment‘’

[7] SPL 解析

https://help.aliyun.com/zh/sls/user-guide/use-logtail-spl-to-parse-logs

[8] SDK

https://help.aliyun.com/zh/sls/developer-reference/overview-of-log-service-sdk

[9] Ingest Processorer

https://help.aliyun.com/zh/sls/user-guide/overview-of-sls-data-processing

[10] SLS 数据资产

https://help.aliyun.com/zh/dsc/data-security-center/user-guide/unstructured-data-oss-authorization
[11] 数据洞察

https://help.aliyun.com/zh/dsc/data-security-center/user-guide/manage-identification-tasks

[12] 资产透视

https://help.aliyun.com/zh/dsc/data-security-center/user-guide/view-sensitive-data-identification-results

[13] 周期性扫描

https://help.aliyun.com/zh/dsc/data-security-center/user-guide/manage-identification-tasks?spm=a2c6h.12873639.article-detail.19.33c05239LfPs4H#533b0620302dr

[14] SPL 语法

https://help.aliyun.com/zh/sls/user-guide/spl-overview?spm=a2c6h.12873639.article-detail.20.33c05239LfPs4H&scm=20140722.S_help@@%E6%96%87%E6%A1%A3@@2536529.S_BB1@bl+RQW@ag0+BB2@ag0+os0.ID_2536529-RL_spl%E8%AF%AD%E6%B3%95-LOC_searchUNDhelpdocUNDitem-OR_ser-V_4-P0_0#67a977403d4dc

[15] Mockaroo

https://www.mockaroo.com/

[16] 阿里云 logtail

https://help.aliyun.com/zh/sls/user-guide/use-logtail-to-collect-data

[17] json 解析

https://help.aliyun.com/zh/sls/user-guide/json-parsing

[18] OpenAPI

https://help.aliyun.com/zh/sls/developer-reference/api-sls-2020-12-30-putlogs

[19] 文档

https://help.aliyun.com/zh/sls/developer-reference/overview-of-log-service-sdk

[20] 相关示例

https://help.aliyun.com/zh/sls/developer-reference/use-the-java-sdk-to-write-logs

[21] 数据安全中心

https://yundun.console.aliyun.com/?p=sas#/overview/home/cn-hangzhou

相关文章:

ARMS 用户体验监控正式发布原生鸿蒙应用 SDK

作者:羿莉 背景 对企业数据进行敏感数据扫描和保护可以提升企业或组织的数据安全。一方面敏感数据可能包括个人身份信息、财务记录、医疗记录等,定期扫描这些数据可以防止未经授权的访问和泄露。 另一方面,许多国家和地区都有关于数据保护的…...

使用 esrally race 测试 Elasticsearch 性能:实践指南

在 Elasticsearch 性能优化和容量规划中,使用 esrally 进行基准测试是官方推荐的方式。通过 esrally race 命令,您可以针对不同的数据集与挑战类型,对 Elasticsearch 集群进行精确的性能评估。本文将简要介绍常用的数据集与挑战类型&#xff…...

OkHttp源码分析:分发器任务调配,拦截器责任链设计,连接池socket复用

目录 一,分发器和拦截器 二,分发器处理异步请求 1.分发器处理入口 2.分发器工作流程 3.分发器中的线程池设计 三,分发器处理同步请求 四,拦截器处理请求 1.责任链设计模式 2.拦截器工作原理 3.OkHttp五大拦截器 一&#…...

中国计算机学会计算机视觉专委会携手合合信息举办企业交流活动,为AI安全治理打开“新思路”

近期,《咬文嚼字》杂志发布了2024年度十大流行语,“智能向善”位列其中,过去一年时间里,深度伪造、AI诈骗等话题屡次登上热搜,AI技术“野蛮生长”引发公众担忧。今年9月,全国网络安全标准化技术委员会发布了…...

重生之我在异世界学编程之C语言:深入预处理篇(上)

大家好,这里是小编的博客频道 小编的博客:就爱学编程 很高兴在CSDN这个大家庭与大家相识,希望能在这里与大家共同进步,共同收获更好的自己!!! 本文目录 引言正文一、预处理的作用与流程&#xf…...

dolphinscheduler服务RPC框架源码解析(二)RPC核心注解@RpcService和@RpcMethod设计实现

1.工程目录 从3.2.1版本之后这个dolphinscheduler中的RPC框架工程就从原来的dolphinscheduler-remote工程重构到了dolphinscheduler-extract工程。 dolphinscheduler 父项目 dolphinscheduler-extract RPC服务项目 dolphinscheduler-extract-alert 监控告警服务RPC接口定义、…...

【从零开始入门unity游戏开发之——C#篇04】栈(Stack)和堆(Heap),值类型和引用类型,以及特殊的引用类型string

文章目录 知识回顾一、栈(Stack)和堆(Heap)1、什么是栈和堆2、为什么要分栈和堆3、栈和堆的区别栈堆 4、总结 二、值类型和引用类型1、那么值类型和引用类型到底有什么区别呢?值类型引用类型 2、总结 三、特殊的引用类…...

ARCGIS国土超级工具集1.2更新说明

ARCGIS国土超级工具集V1.2版本,功能已增加至47 个。在V1.1的基础上修复了若干使用时发现的BUG,新增了"矢量分割工具"菜单,同时增加及更新了了若干功能,新工具使用说明如下: 一、勘测定界工具栏更新界址点成果…...

暂停window11自动更新

window11 的自动更新功能,一方面在后台占用资源,容易导致电脑卡顿;另一方面,“更新并关机” 和 “更新并重启” 的设置令人极其反感。很多补丁兼容性很差,更新后极易引发电脑蓝屏、闪屏等意想不到的 bug。 1.winR打开运…...

Git简介和特点

目录 一、Git简介 二、Git特点 1.集中式和分布式 (1)集中式版本控制系统 (2)分布式版本控制系统 2.版本存储方式的差异 (1)直接记录快照,而非差异比较 3.近乎所有操作都是本地执行 一、Git简介 Git是目前世界上最先进的的分布式控制系统(没有之一…...

如何通过docker 部署minio,端口号为9105

通过Docker部署MinIO对象存储服务,并指定API端口为9105,可以按照以下步骤进行。我们将基于已有的资料来详细说明这一过程。 1. 准备工作 首先,确保你的系统上已经安装了Docker。如果没有安装,可以根据官方文档指导完成安装。接下…...

设置Qt程序开机自启动(windows版本)

前言 本文展示在windows环境下,通过代码实现更改系统注册表的方式来实现程序的开机自动启动。 一、注册表 需要更改的系统注册表为: HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Run 二、代码演示 1.头文件 头文件autorun.h #ifndef …...

【HarmonyOS】鸿蒙获取appIdentifier,Identifier

【HarmonyOS】鸿蒙获取appIdentifier,Identifier 一、前言 三方后台需要填写的所谓appIdentifier,Identifier信息,其实对应鸿蒙应用的appID。 二、解决方案: 注意,模拟器获取data.signatureInfo.appIndentifer为空…...

【Rust自学】3.5. 控制流:if else

3.5.0. 写在正文之前 欢迎来到Rust自学的第三章,一共有6个小节,分别是: 变量与可变性数据类型:标量类型数据类型:复合类型函数和注释控制流:if else(本文)控制流:循环 通过第二章…...

美国信息学奥林匹克竞赛USACO 2024年12月比赛铜级问题1. 循环舍入-答案代码

题目见&#xff1a; USACO 2024年12月比赛铜级问题1. 循环舍入(USACO 2024 December Contest, Bronze Problem 1. Roundabount Rounding) 最简单的青铜级 亲测所有得分点通过哈&#xff01; 下一篇会给解题分析哦&#xff01; #include <iostream> using namespace std;…...

Llama3模型详解 - Meta最新开源大模型全面解析

&#x1f4da; Meta最新发布的Llama3模型在开源社区引起广泛关注。本文将全面解析Llama3的技术特点、部署要求和应用场景。 一、模型概述 1. 基本信息 发布机构: Meta AI开源协议: Llama 2 Community License Agreement模型规格: 7B/13B/34B/70B训练数据: 2万亿tokens上下文长…...

2021-02-12 c++里面cin.sync()函数的意思

回复急~救救菜鸡吧&#xff0c;C用cin.clear()和cin.sycn()清空缓存区一直清不了!_编程语言-CSDN问答 标识符号为:goodbit 无错误 Eofbit 已到达文件尾 failbit 非致命的输入/输出错误可挽回 badbit 致命的输入/输出错误无法挽回 int a 0;cin >> a;if (cin.rdstate() i…...

下载红米Note 9 Pro5G对应的LineageOS代码下载及编译

构建 LineageOS 进入网站&#xff1a;Info about gauguin | LineageOS Wiki&#xff0c;点击&#xff1a;Build for yourself&#xff0c;里面有详细的教程&#xff0c;我这里就按照Note 9 Pro 5G来。 机器环境 Ubuntu环境为&#xff1a;20.04.6LinagesOS版本&#xff1a;21-…...

《探索 Caffe2 的 C++接口在移动设备上的性能优化之路》

在当今移动应用日益智能化的时代&#xff0c;将深度学习框架如 Caffe2 的 C接口应用于移动设备上已成为众多开发者的目标。然而&#xff0c;移动设备资源相对有限&#xff0c;如何优化其性能成为了关键挑战。 一、移动设备应用深度学习的现状与挑战 随着智能手机等移动设备的…...

1.编写一个程序,给定一个大写字母,要求用小写输出

思路&#xff1a;ascII码值 例如&#xff1a;A的ASCII码值为65&#xff0c;a的ASCII码值为97&#xff0c;不难发现&#xff0c;大小写字母之间的ascii值相差了32 #include <stdio.h> int main() {char c;scanf("%c",&c);printf("%c",c32);retu…...

Flask RESTful 示例

目录 1. 环境准备2. 安装依赖3. 修改main.py4. 运行应用5. API使用示例获取所有任务获取单个任务创建新任务更新任务删除任务 中文乱码问题&#xff1a; 下面创建一个简单的Flask RESTful API示例。首先&#xff0c;我们需要创建环境&#xff0c;安装必要的依赖&#xff0c;然后…...

多场景 OkHttpClient 管理器 - Android 网络通信解决方案

下面是一个完整的 Android 实现&#xff0c;展示如何创建和管理多个 OkHttpClient 实例&#xff0c;分别用于长连接、普通 HTTP 请求和文件下载场景。 <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas…...

mongodb源码分析session执行handleRequest命令find过程

mongo/transport/service_state_machine.cpp已经分析startSession创建ASIOSession过程&#xff0c;并且验证connection是否超过限制ASIOSession和connection是循环接受客户端命令&#xff0c;把数据流转换成Message&#xff0c;状态转变流程是&#xff1a;State::Created 》 St…...

将对透视变换后的图像使用Otsu进行阈值化,来分离黑色和白色像素。这句话中的Otsu是什么意思?

Otsu 是一种自动阈值化方法&#xff0c;用于将图像分割为前景和背景。它通过最小化图像的类内方差或等价地最大化类间方差来选择最佳阈值。这种方法特别适用于图像的二值化处理&#xff0c;能够自动确定一个阈值&#xff0c;将图像中的像素分为黑色和白色两类。 Otsu 方法的原…...

Springcloud:Eureka 高可用集群搭建实战(服务注册与发现的底层原理与避坑指南)

引言&#xff1a;为什么 Eureka 依然是存量系统的核心&#xff1f; 尽管 Nacos 等新注册中心崛起&#xff0c;但金融、电力等保守行业仍有大量系统运行在 Eureka 上。理解其高可用设计与自我保护机制&#xff0c;是保障分布式系统稳定的必修课。本文将手把手带你搭建生产级 Eur…...

【AI学习】三、AI算法中的向量

在人工智能&#xff08;AI&#xff09;算法中&#xff0c;向量&#xff08;Vector&#xff09;是一种将现实世界中的数据&#xff08;如图像、文本、音频等&#xff09;转化为计算机可处理的数值型特征表示的工具。它是连接人类认知&#xff08;如语义、视觉特征&#xff09;与…...

RNN避坑指南:从数学推导到LSTM/GRU工业级部署实战流程

本文较长&#xff0c;建议点赞收藏&#xff0c;以免遗失。更多AI大模型应用开发学习视频及资料&#xff0c;尽在聚客AI学院。 本文全面剖析RNN核心原理&#xff0c;深入讲解梯度消失/爆炸问题&#xff0c;并通过LSTM/GRU结构实现解决方案&#xff0c;提供时间序列预测和文本生成…...

管理学院权限管理系统开发总结

文章目录 &#x1f393; 管理学院权限管理系统开发总结 - 现代化Web应用实践之路&#x1f4dd; 项目概述&#x1f3d7;️ 技术架构设计后端技术栈前端技术栈 &#x1f4a1; 核心功能特性1. 用户管理模块2. 权限管理系统3. 统计报表功能4. 用户体验优化 &#x1f5c4;️ 数据库设…...

Python Einops库:深度学习中的张量操作革命

Einops&#xff08;爱因斯坦操作库&#xff09;就像给张量操作戴上了一副"语义眼镜"——让你用人类能理解的方式告诉计算机如何操作多维数组。这个基于爱因斯坦求和约定的库&#xff0c;用类似自然语言的表达式替代了晦涩的API调用&#xff0c;彻底改变了深度学习工程…...

【从零开始学习JVM | 第四篇】类加载器和双亲委派机制(高频面试题)

前言&#xff1a; 双亲委派机制对于面试这块来说非常重要&#xff0c;在实际开发中也是经常遇见需要打破双亲委派的需求&#xff0c;今天我们一起来探索一下什么是双亲委派机制&#xff0c;在此之前我们先介绍一下类的加载器。 目录 ​编辑 前言&#xff1a; 类加载器 1. …...