当实时消费遇到 SPL:让数据处理更高效、简单
作者:豁朗
通过 SPL 消费,将业务逻辑“左移”
SLS 对实时消费进行了功能升级,推出了 基于 SPL 的规则消费功能。在实时消费过程中,用户只需通过简单的 SPL 配置即可完成服务端的数据清洗和预处理操作。通过SPL消费可以将客户端复杂的业务逻辑“左移”到服务端,从而大幅降低了客户端的复杂性和计算开销。
核心价值:
- 低代码,可编程:SPL 提供简单的管道式可编程的语法,客户端使用低代码方式来优化数据清洗逻辑。
- 高性能:基于 SPL 消费,通过高性能计算技术在数据源头进行数据清洗和高效过滤,在不明显增加 Latency 的前提下,最大程度提升数据消费和处理效率,节省消费端计算资源。
功能优势:
- 数据精准过滤:通过 where 指令和 project 指令实现行过滤和列裁剪。
- 字符串处理:通过正则表达式进行字符串匹配和信息提取。
- JSON 数据解析:结构化日志的深度处理,通过 json 函数和 parse-json 指令解析和处理 JSON 结构化日志
- 丰富的 SQL 函数支持:SPL 兼容了大部分 SQL 函数用于数据处理,包括字符串函数、日期时间函数、JSON 函数、正则式函数、条件表达式、类型转换等。
- 复杂数据解析:数组与结构体的深度操作,支持数组函数和 MAP 映射函数和 Lambda 表达式。
典型场景下的应用
案例1:性能从 15s 到 100ms;代码从 200 行到 50 行*
客户A使用 SLS 存储了大量应用日志,并通过 FC(函数计算) 调用 SLS 的实时消费 Python SDK 对数据进行处理。然而,在实际运行中,客户发现 Python 处理10MB日志的函数执行耗时高达 15 秒,远远超出预期,由于处理速度无法跟上日志产生的速度,处理延迟仍在不断升高,无法满足业务的实时处理需求,客户需求紧急,不希望在 Python 处理数据的流程上花费太多精力,希望能有一种低代码方式并且高性能可以满足实时处理的方式来快速上线功能。
经过深入排查,问题根源在于客户的实时消费程序中包含了复杂的本地数据处理逻辑(约 200 行 Python 代码),例如正则表达式提取、JSON 格式转换等操作。加上对 Python 数据处理性能调优的经验不足,导致整体处理效率较低。
针对这一问题,SLS 推荐客户采用基于 SPL 规则消费 的方式,将数据处理流程做了如下简化,将 Python 代码中的数据清洗逻辑,转换为 SPL 并配置在消费程序中,删除了大量的低效的数据处理逻辑,替换为简洁高效的 SPL(约 50 行)。
通过在 Python 消费程序中配置 SPL,将复杂的数据清洗和预处理任务下推到服务端完成。服务端返回的结果已经是经过清洗和格式化的数据,客户端无需再进行复杂的本地处理。最终,通过在实时消费中引入 SPL,客户的 10MB 日志函数处理耗时从 15 秒 降低至 不到 100 毫秒,显著提升了处理效率。下图展示了使用基于 SPL 规则消费代替 Python 数据清洗逻辑的原理及数据处理延迟对比。
基于 SPL 规则消费给客户带来价值:
1. 业务解耦,低代码降低数据清洗门槛
SPL 语法简洁直观,学习成本低且调试便捷,相较于使用多种编程语言或平台实现数据清洗逻辑,低代码的方式开发难度显著降低。通过将数据清洗任务交给规则消费功能,实现业务逻辑与数据处理的高效解耦。客户实时处理需求响应从天/小时级提高到分钟级。
2. 节省本地计算资源,加速处理效率
通过将数据在服务端过滤,无需依赖本地资源进行复杂处理。这不仅显著降低了本地 CPU 的消耗,还大幅提升了整体计算效率。
案例2:计算下推:带宽减少 90%,客户端计算资源减负
客户B在 日志服务 多个地域的 Logstore 中存储了数据库审计日志,并使用特定地域的阿里云 Flink 进行数据分析和流计算,通过 Flink SLS Connector 将数据拉取到 Flink 中进行流式聚合分析,客户发现对于日志的处理延迟非常高,期望可以实时对产生的日志进行流式处理,最好可以降低跨地域拉取产生的公网带宽费用。同时,也会使用 Flink 对于历史的日志进行分析,在处理历史数据时耗时较长。
支持中发现:客户的需求是对跨地域的部分数据库实例的日志进行分析,这些日志仅占全量日志的 10% 。客户使用 Flink SLS Connector ,将 Logstore 的全量拉取到 Flink 端。也就是说,跨地域访问的场景中,90%公网的流量是不必要的开销,同时这 90% 的数据到达 Flink 端也会增加状态存储和计算负担,由于源日志数据仍在快速产生,但是客户所在环境公网带宽有限,加剧了拉取日志的延迟,在分析历史数据时,处理耗时更长。
经过分析:SLS 推荐用户在 Flink SLS Connector 中配置简单的SPL过滤语句,实现数据的过滤下推,在过滤下推后,只有用户需要的 10% 的数据从 SLS 传递到 Flink 端,数据量的大幅度减少,分析相同的数据量只需要更少的时间,除此之外,还节省了 90% 的公网流量费用,为客户实现了降本增效。
基于 SPL 规则消费给客户带来的价值:
1. 公网消费,显著节省流量费用
基于 SPL 规则消费功能,可以直接在日志服务中完成规则过滤,避免将大量无效日志传输到消费端,在跨地域消费场景中,大幅减少公网流量的使用,降低流量成本。
同时,SPL 规则计算服务与日志存储服务在同机房部署,即使在非公网条件下,也可以在极低的网络延迟下就近计算来提高计算性能。
2. 稳定性增强、减少本地计算量
通过 Flink SLS Connector 的过滤下推,在依赖状态的流计算的作业场景中,可以显著减少本地计算的数据量,同时可以降低本地状态存储,增强系统的稳定性。
生态集成与展望
当前 SLS 基于规则消费已经与阿里云 Flink、Dataworks、Splunk、FunctionCompute 等数据日志消费类产品完成对接,在对应平台上可以无缝使用 SPL 进行日志数据的预处理,将处理清洗后的数据交给云产品进行数据分析。同时,SLS 的多语言 SDK 包括 Java、Python、Golang 等已完成基于规则消费的适配,实时消费接口与消费组接口可以直接配置 SPL 进行日志数据预处理。
已支持集成生态
-
阿里云 Flink 接入 SPL 实践:
- 阿里云 Flink SLS 连接器(支持 SPL)【1】
- 阿里云 Flink SQL 基于 SPL 实现行过滤【2】
- 阿里云 Flink SQL 基于 SPL 实现列裁剪【3】
- 阿里云 Flink SQL 基于 SPL 实现弱结构化分析【4】
-
Dataworks 接入 SPL 实践:
- Dataworks 数据集成-SLS 数据源(支持 SPL)【5】
-
Splunk HEC 接入 SPL 实践:
- Splunk HEC 投递日志到 SIEM(支持 SPL)【6】
-
多语言基于 SPL 规则消费最佳实践:
- 使用 Java SDK 基于 SPL 消费【7】
- 使用 Java 消费组基于 SPL 消费日志【8】
- 使用 Go SDK 基于 SPL 消费日志【9】
- 使用 Go 消费组基于 SPL 消费日志【10】
- 使用 Python SDK 基于 SPL 消费日志【11】
- 使用 Python 消费组基于 SPL 消费日志【12】
待集成生态
在日志消费处理场景,会对更多开源及三方生态进行基于 SPL 消费的支持,包括不限于:
- Flume 基于 SPL 消费 SLS 日志
- Logstash 基于 SPL 消费 SLS 日志
- 更多生态集成中…
展望
- SPL Processor 集成:随着用户将更多的数据清洗逻辑通过 SPL 左移到存储层,SPL 会放开更长的语句限制,同时支持将 SPL 语句存储在 SPL Processor 中,在实时消费时仅需指定对应的 processorId 即可实现 SPL 消费,在配置消费时,简化了 SPL 长语句的书写和代码复用。
- 持续性能提升:过滤操作在数据清洗场景中占有很重要的比例,不仅可以节省网络延迟和流量,同时可以减少下游的计算量,我们将针对过滤场景进行深度优化,将过滤场景实时消费 Latency 再降 50%。
相关链接:
【1】阿里云 Flink SLS 连接器(支持 SPL)
https://help.aliyun.com/zh/flink/developer-reference/log-service-connector
【2】阿里云 Flink SQL 基于 SPL 实现行过滤
https://sls.aliyun.com/doc/spldataprocessdemo/flink_spl_filter.html
【3】阿里云 Flink SQL 基于 SPL 实现列裁剪
https://sls.aliyun.com/doc/spldataprocessdemo/flink_spl_cut.html
【4】阿里云 Flink SQL 基于 SPL 实现弱结构化分析
https://sls.aliyun.com/doc/spldataprocessdemo/flink_spl_structured_analysis.html
【5】Dataworks 数据集成-SLS 数据源(支持 SPL)
https://help.aliyun.com/zh/dataworks/user-guide/loghub-data-source
【6】Splunk HEC 投递日志到 SIEM(支持 SPL)
https://help.aliyun.com/zh/sls/user-guide/ship-logs-to-a-siem-system-over-https
【7】使用 Java SDK 基于 SPL 消费
https://sls.aliyun.com/doc/spldataprocessdemo/java_sdk_sql_consumer.html
【8】使用 Java 消费组基于 SPL 消费日志
https://sls.aliyun.com/doc/spldataprocessdemo/java_consumer_group_sql_consumer.html
【9】使用 Go SDK 基于 SPL 消费日志
https://sls.aliyun.com/doc/spldataprocessdemo/go_sdk_sql_consumer.html
【10】使用 Go 消费组基于 SPL 消费日志
https://sls.aliyun.com/doc/spldataprocessdemo/go_consumer_group_sql_consumer.html
【11】使用 Python SDK 基于 SPL 消费日志
https://sls.aliyun.com/doc/spldataprocessdemo/python_sdk_spl_consumer.html
【12】使用 Python 消费组基于 SPL 消费日志
https://sls.aliyun.com/doc/spldataprocessdemo/python_consumer_group_sql_consumer.html
相关文章:
当实时消费遇到 SPL:让数据处理更高效、简单
作者:豁朗 通过 SPL 消费,将业务逻辑“左移” SLS 对实时消费进行了功能升级,推出了 基于 SPL 的规则消费功能。在实时消费过程中,用户只需通过简单的 SPL 配置即可完成服务端的数据清洗和预处理操作。通过SPL消费可以将客户端复…...
Python----机器学习(线性回归:反向传播和梯度下降)
一、前向传播与反向传播的区别 前向传播是在参数固定后,向公式中传入参数,进行预测的一个过程。当参 数值选择的不恰当时,会导致最后的预测值不符合我们的预期,于是我们就 需要重新修改参数值。 在前向传播实验中时,我…...
如何平衡元器件成本与性能
要平衡元器件成本与性能,企业应当明确设计需求和目标、优化元器件选型策略、建立成本性能评估体系、推进标准化设计、加强供应链管理。其中,优化元器件选型策略尤其关键,它直接关系到产品的成本、性能与生命周期。在选型时,工程师…...
java项目分享-分布式电商项目附软件链接
今天来分享一下github上最热门的开源电商项目安装部署,star 12.2k,自行安装部署历时两天,看了这篇文章快的话半天搞定!该踩的坑都踩完了,软件也打包好了就差喂嘴里。 项目简介 mall-swarm是一套微服务商城系统…...
低代码框架
在数字化转型浪潮中,软件开发的效率与成本成为企业关注的焦点。低代码框架应运而生,以其独特的开发模式,打破了传统软件开发的壁垒,为企业和开发者带来了全新的解决方案。那么,究竟什么是低代码框架呢? …...
Git Reset 命令详解与实用示例
文章目录 Git Reset 命令详解与实用示例git reset 主要选项git reset 示例1. 撤销最近一次提交(但保留更改)2. 撤销最近一次提交,并清除暂存区3. 彻底撤销提交,并丢弃所有更改4. 回退到特定的提交5. 取消暂存的文件 git reset 与 …...
多层内网渗透测试虚拟仿真实验环境(Tomcat、ladon64、frp、Weblogic、权限维持、SSH Server Wrapper后门)
在线环境:https://www.yijinglab.com/ 拓扑图 信息收集 IP地址扫描 确定目标IP为10.1.1.121 全端口扫描 访问靶机8080端口,发现目标是一个Tomcat服务,版本...
<贪心算法>
前言:在主包还没有接触算法的时候,就常听人提起“贪心”,当时是layman,根本不知道说的是什么,以为很难呢,但去了解一下,发现也不过如此嘛(bushi),还以为是什么高级东西呢…...
使用PyTorch实现GoogleNet(Inception)并训练Fashion-MNIST
GoogleNet(又称Inception v1)是2014年ILSVRC冠军模型,其核心创新是Inception模块,通过并行多尺度卷积提升特征提取能力。本文将展示如何用PyTorch实现GoogleNet,并在Fashion-MNIST数据集上进行训练。 1. 环境准备 im…...
KingbaseES物理备份还原之备份还原
此篇续接上一篇<<KingbaseES物理备份还原之物理备份>>,上一篇写物理备份相关操作,此篇写备份还原的具体操作步骤. KingbaseES版本:V009R004C011B003 一.执行最新物理备份还原 --停止数据库服务,并创建物理备份还原测试目录 [V9R4C11B3192-168-198-198 V8]$ sys_ct…...
Unity Standard Shader 解析(二)之ForwardAdd(标准版)
一、ForwardAdd // Additive forward pass (one light per pass)Pass{Name "FORWARD_DELTA"Tags { "LightMode" "ForwardAdd" }Blend [_SrcBlend] OneFog { Color (0,0,0,0) } // in additive pass fog should be blackZWrite OffZTest LEqual…...
.NET 使用 WMQ 连接Queue 发送 message 实例
1. 首先得下载客户端,没有客户端无法发送message. 安装好之后长这样 我装的是7.5 安装目录如下 tools/dotnet 目录中有演示的demo 2. .Net 连接MQ必须引用bin目录中的 amqmdnet.dll 因为他是创建Queuemanager 的核心库, 项目中引用using IBM.WMQ; 才…...
设计模式之单例模式
视频链接: 设计模式|狂神说 单例模式是什么? 单例模式是确保一个类在整个应用程序中只有一个实例,并提供一个全局方法访问这个实例。 单例模式分为饿汉式和懒汉式。 饿汉式单例 饿汉式顾名思义就是,程序一启动就创建这个单例bea…...
从入门到入土,SQLServer 2022慢查询问题总结
列为,由于公司原因,作者接触了一个SQLServer 2022作为数据存储到项目,可能是上一任的哥们儿离开的时候带有情绪,所以现在项目的主要问题就是,所有功能都实现了,但是就是慢,列表页3s打底,客户很生气,经过几周摸爬滚打,作以下总结,作为自己的成长记录。 一、索引问题…...
大语言模型在端到端智驾中的应用
大语言模型在端到端智驾中的应用 双系统端到端 小鹏:AI天玑系统—神经网络XNet规控大模型XPlanner大语言模型XBrain 商汤绝影:DriveAGI 理想:端到端VLM VLA端到端 Waymo:EMMA OPENEMMA Wayve:LINGO-2...
【深度学习量化交易19】行情数据获取方式比测(1)——基于miniQMT的量化交易回测系统开发实记
我是Mr.看海,我在尝试用信号处理的知识积累和思考方式做量化交易,应用深度学习和AI实现股票自动交易,目的是实现财务自由~ 目前我正在开发基于miniQMT的量化交易系统——看海量化交易系统。 经常使用MiniQMT的朋友都知道,xtquant的…...
《网络管理》实践环节03:snmp服务器上对网络设备和服务器进行初步监控
兰生幽谷,不为莫服而不芳; 君子行义,不为莫知而止休。 应用拓扑图 3.0准备工作 所有Linux服务器上(服务器和Agent端)安装下列工具 yum -y install net-snmp net-snmp-utils 保证所有的HCL网络设备和服务器相互间能…...
linux操作系统
1.linux进程管理 操作系统都有进程的概念 查看和关闭程序 2.关闭进程 3,查看计算机硬件信息 4.定时任务...
Python基础语法 - 判断语句
Python基础语法 - 判断语句 1. if语句 if 条件:# 条件为True时执行的代码示例 age 18 if age > 18:print("您已成年")2. if-else语句 if 条件:# 条件为True时执行的代码 else:# 条件为False时执行的代码示例 age 16 if age > 18:print("您已成年&q…...
c++柔性数组、友元、类模版
目录 1、柔性数组: 2、友元函数: 3、静态成员 注意事项 面试题:c/c static的作用? C语言: C: 为什么可以创建出 objx 4、对象与对象之间的关系 5、类模版 1、柔性数组: #define _CRT_SECURE_NO_WARNINGS #…...
电子技术基础
目录 一、整体概述 二、知识点梳理及考点分析 (一)半导体器件 (二)基本放大电路 (三)功率放大电路 (四)集成运算放大器 (五)直流稳压电源 ࿰…...
解码大模型时代算力基座的隐形引擎
在千亿参数大模型竞速的今天,算力军备竞赛已进入白热化阶段。当我们聚焦GPU集群的运算峰值时,一个关键命题正在浮出水面:支撑大模型全生命周期的存力基座,正在成为制约AI进化的关键变量。绿算技术将深入解剖大模型训练与推理场景中…...
【NetCore】ControllerBase:ASP.NET Core 中的基石类
ControllerBase:ASP.NET Core 中的基石类 一、什么是 ControllerBase?二、ControllerBase 的主要功能三、ControllerBase 的常用属性四、ControllerBase 的常用方法2. 模型绑定与验证3. 依赖注入五、ControllerBase 与 Controller 的区别六、实际开发中的最佳实践七、总结在 …...
人工智能之数学基础:矩阵分解之LU分解
本文重点 LU分解是线性代数中一种重要的矩阵分解方法,它将一个方阵分解为一个下三角矩阵(L)和一个上三角矩阵(U)的乘积。这种分解方法在数值线性代数中有着广泛的应用,特别是在求解线性方程组、计算矩阵的行列式、求逆矩阵等方面。 LU分解的基本概念 设A是一个nn的方阵…...
C#核心学习(六)面向对象--封装(5)静态成员及静态构造函数和静态类 以及和常量的区别
目录 一、什么是静态的?什么是常量? 1. 静态(Static) 2. 常量(const) 二、类中的静态成员有什么用? 1. 共享数据 2. 工具方法与全局配置 3. 单例模式 三、静态类和静态成…...
去中心化稳定币机制解析与产品策略建议
去中心化稳定币机制解析与产品策略建议(以Maker/DAI为例) 一、核心机制对比:法币抵押型 vs. 加密货币抵押型 法币抵押型(如USDT) 技术逻辑:1:1美元储备托管于中心化机构(如银行)&…...
构造超小程序
文章目录 构造超小程序1 编译器-大小优化2 编译器-移除 C 异常3 链接器-移除所有依赖库4 移除所有函数依赖_RTC_InitBase() _RTC_Shutdown()__security_cookie __security_check_cookie()__chkstk() 5 链接器-移除清单文件6 链接器-移除调试信息7 链接器-关闭随机基址8 移除异常…...
JSONP跨域访问漏洞
一、漏洞一:利用回调GetCookie <?php$conn new mysqli(127.0.0.1,root,root,learn) or die("数据库连接不成功"); $conn->set_charset(utf8); $sql "select articleid,author,viewcount,creattime from learn3 where articleid < 5"; $result…...
数据结构优化DP总结
单调栈:Codeforces Round 622 (Div. 2) C2. Skyscrapers (hard version) 简单来讲就是最后需要呈现出一个单峰数组,使得总高度最高。 最开始想到暴力枚举每一个元素都充当最高的“单峰”,但是这里的 n 过大,这样枚举肯定会TLE。 …...
Linux网络相关概念和重要知识(4)(序列化和反序列化、TCP协议、会话和守护进程)
目录 1.序列化和反序列化 (1)为什么需要序列化 (2)序列化方案 ①json ②json序列化代码模板 ③json反序列化代码模板 ④将自定义方案和json结合 2.TCP协议(传输控制协议) (1)…...
[MySQL初阶]MySQL数据库基础
MySQL数据库基础 1. 数据库基础1.1 什么是数据库1.2 主流数据库2. 数据库的基本使用2.1 连接服务器2.2 使用案例2.3 数据逻辑存储3. MySQL架构与分类3.1 MySQL架构3.2 SQL分类4. 存储引擎4.1 存储引擎基本概念4.2 存储引擎基本操作1. 数据库基础 1.1 什么是数据库 存储数据用…...
【mysql 的安装及使用】
MySQL 9.0 一、下载MySQL[MySQL 9.0 下载] [(https://dev.mysql.com/downloads/mysql/)选择自定义,选择合适安装路径二、检查安装情况配置环境变量打开命令行查看版本创建数据库在MySQL中,可以使用create database语句来创建数据库。以下是创建一个名为my_db的数据库的示例:…...
d202542
一、142.环形链表I 142. 环形链表 II - 力扣(LeetCode) 用set统计一下 如果再次出现那么就环的第一个return返回就行 public ListNode detectCycle(ListNode head) {Set<ListNode> set new HashSet<>();ListNode cur head;while(cur ! …...
vscode代码片段的设置与使用
在 Visual Studio Code (VS Code) 中,可以通过自定义**代码片段(Snippets)**快速插入常用代码模板。以下是详细设置步骤: 步骤 1:打开代码片段设置 按下快捷键 Ctrl Shift P(Windows/Linux)或…...
3D 地图渲染-区域纹理图添加
引入-初始化地图(关键代码) // 初始化页面引入高德 webapi -- index.html 文件 <script src https://webapi.amap.com/maps?v2.0&key您申请的key值></script>// 添加地图容器 <div idcontainer ></div>// 地图初始化应该…...
spring-security原理与应用系列:HttpSecurity.filters
目录 AnyRequestMatcher WebSecurityConfig HttpSecurity AbstractInterceptUrlConfigurer AbstractAuthenticationProcessingFilter 类图 在前面的文章《spring-security原理与应用系列:securityFilterChainBuilders》中,我们遗留了一个问题&…...
每日总结4.2
蓝桥杯刷题: 1. 方格分割(dfs,选中心点,开始上下左右遍历,达到边界时数量加一) #include <bits/stdc.h> using namespace std; bool vis[10][10]; int mp[10][10]; int ans0; int dx[4]{1,0,0,-1}; int dy[4]{…...
架构师面试(二十五):分布式存储 Leader 设计
问题 在非常多的分布式存储系统中,如:Zookeeper、Etcd、Kafka等,往往会存在一个 【Leader】 角色,并由该角色负责数据的写入,这样设计最主要的原因是什么呢? A. 唯一负责数据写入的 Leader 角色可以避免并…...
mycat --分片规则--
文章目录 MyCat分片规则详解1. rule1 (基于id的func1算法)2. sharding-by-date (按日期分片)3. rule2 (基于user_id的func1算法)4. sharding-by-intfile (基于枚举值分片)5. auto-sharding-long (长整型范围分片)6. mod-long (取模分片)7. sharding-by-murmur (MurmurHash分片)…...
系统分析师备考启动
以考促学:软件高级系统分析师。 一、考试目的: 1、练习三遍读书法、快速阅读、番茄工作法、第一性原理、思维导图等学习方法和学习工具的使用。 2、掌握知识、编织知识网、顺便拿证。 二、组织形式: 小组统一安排学习内容,每…...
轻量级搜索接口技术解析:快速实现关键词检索的Java/Python实践
Hi,你好! 轻量级搜索接口技术解析:快速实现关键词检索的Java/Python实践 接口特性与适用场景 本接口适用于需要快速集成搜索能力的开发场景,支持通过关键词获取结构化搜索结果。典型应用场景包括: 垂直领域信息检索…...
防爆风扇选型指南:根据风量风压匹配应用场景
在化工、石油、煤矿等存在易燃易爆气体或粉尘的危险环境中,通风设备的安全性能至关重要,防爆风扇成为保障生产环境安全与空气流通的关键装备。正确选型是确保其发挥最佳效能的前提,而根据风量风压匹配应用场景则是选型的核心要点。 风量&am…...
Laravel 中使用 JWT 作用户登录,身份认证
什么是JWT: JWT 全名 JSON Web Token,是一种开放标准 (RFC 7519)。 用于在网络应用环境间安全地传输信息作为 JSON 对象。 它是一种轻量级的认证和授权机制,特别适合分布式系统的身份验证。 核心特点 紧凑格式:体积小&#x…...
Git安装
1、 下载Git https://git-scm.com/ 2、 双击【Git-2.44.0-64-bit.exe】安装: 2-1、 选择自定义安装目录:F:\software\Git 2-2、 一直点击next,直到安装成功。 2-3、 在git项目文件夹,右键出现Git GUI Here和Git Bash Here就说明成…...
bit与byte的区别与联系?
李升伟 整理 byte 和 bit 是计算机中常用的数据单位,它们的主要区别和联系如下: 1. 定义 bit(比特):计算机中最小的数据单位,表示一个二进制位,值为0或1。 byte(字节)…...
程序化广告行业(51/89):Cookie映射与移动设备ID映射解析
程序化广告行业(51/89):Cookie映射与移动设备ID映射解析 在当今数字化营销的浪潮中,程序化广告已经成为企业精准触达目标客户的重要手段。作为一名对程序化广告充满兴趣的学习者,我希望通过这篇博客和大家一起深入探索…...
从吉卜力漫画到艺术创造:GPT-4o多种风格绘图Prompt大全
在3月底,GPT-4o掀起了一阵吉卜力绘图浪潮,大家纷纷输入一张图片,让4o模型进行风格化迁移,其中吉卜力风格的漫画在社交媒体上最为火热。在大家争议4o的训练数据是否侵权和4o背后的技术原理的时候,我们先来玩一玩&#x…...
48. 旋转图像
leetcode Hot 100系列 文章目录 一、核心操作二、外层配合操作三、核心模式代码总结 一、核心操作 先上下翻转再沿着对角线翻转 提示:小白个人理解,如有错误敬请谅解! 二、外层配合操作 三、核心模式代码 代码如下: class S…...
【Linux篇】自主Shell命令行解释器
📌 个人主页: 孙同学_ 🔧 文章专栏:Liunx 💡 关注我,分享经验,助你少走弯路! 文章目录 1. 获取用户名的接口2. 等待用户输入接口3. 将上述代码进行面向对象式的封装4. 命令行解析5.…...
leetcode 2873. 有序三元组中的最大值 I
欢迎关注更多精彩 关注我,学习常用算法与数据结构,一题多解,降维打击。 文章目录 题目描述题目剖析&信息挖掘解题思路方法一 暴力枚举法思路注意复杂度代码实现 方法二 公式拆分动态规划思路注意复杂度代码实现 题目描述 [2873] 有序三元…...