我用 ArkUI + SwiftUI 做了一个精力电量 App,记 +20 跑步,记 -30 三小时会议

鸿蒙第16篇——数据持久化 本文介绍的数据持久化是指鸿蒙应用的数据持久化存储。它是将内存中的数据通过文件或数据库的形式保存到设备存储中。鸿蒙支持多种数据存储方式, 包括用户首选项Preferences、 键值型数据库KV-Store和关系型数据库。 阅读详情

先说说我为什么做这个

说白了,我想要的只是一个能快速记「+20 跑步」或者「-30 连续开了三小时会」的地方,然后看今天的曲线长什么样。就这么简单。

但找不到合适的。去年下半年我试过各种方法记录状态:日记太重,写一句话要想半天怎么措辞;情绪类 App 总在问我「你现在感受如何」,选项全是词语,什么「焦虑」「平静」「低落」——我不太想每次都给自己贴个情绪标签。找不到,于是开始写第一行代码。


App 的核心逻辑:用「电量」替代「情绪」

这个产品最核心的一个决定,是用「电量」替代「状态」或「情绪」。

电量是中性的,没有好坏判断,只有数字。「今天剩 30%」不会让人有压力,「今天情绪低落」会。而且电量有方向性——可以充、可以耗,天然适合描述精力的流动。

具体的交互模型是这样的:

  • 每天从一个基准值(默认 50)出发
    • 每次记录是一个 delta:+15 午睡回血、-25 改了一下午 bug
    • 时间轴上看今天所有的涨跌,曲线自然就出来了
    • 可以把记录挂到「方舟项目」上,追踪某个项目到底有多耗电
      方舟项目这个功能是后来才想清楚要加的。有一段时间我同时在跑三个项目,主观感觉「工作量差不多」,但看了一个月的精力日志之后发现,其中一个项目几乎占了我 60% 的消耗。那个项目的会多、决策模糊、沟通成本高——数字出来之前我完全没意识到。

鸿蒙版的开发经历

这个 App 我先做了 iOS 版,用的是 SwiftUI + SwiftData。跑通核心逻辑之后,我想把它搬到 HarmonyOS 上。

鸿蒙版用的是 ArkTS + ArkUI,工程用 Hvigor 构建。第一周卡在一个很具体的地方:ArkUI 里 @State 装饰的对象,不能直接修改它的某个属性,必须整体替换赋值,否则 UI 不会刷新。iOS 端用 SwiftData 完全没遇到这个限制,我直接写了 this.record.delta = newValue,列表纹丝不动。当时第一反应是数据没写进去,加了几行日志打印,发现数据是对的,值确实变了,UI 就是不动。才意识到是响应式层没感知到变更,翻了一遍 ArkUI 状态管理文档,看到那句「对 @State 修饰的对象属性赋值不会触发 UI 刷新」,才搞清楚原因。前后大概花了一个半小时,有点狼狈。

SwiftUI 的 @State / @Binding 体系跟 ArkUI 的状态装饰器在概念上很像,但这类细节差异不少,写的时候脑子里两套东西容易打架。

iOS 端的精力记录模型用的是 SwiftData 的 @Model,结构大概是这样:

@Model
final class EnergyRecord {
    var id: UUID = UUID()
        var title: String = ""
            var delta: Int = 0          // 正数=补能,负数=耗能
                var timestamp: Date = Date()
                    var isDeleted: Bool = false
                        var project: Project?       // 关联到方舟项目
                        }
                        ```
`delta` 是核心字段,正负代表方向,绝对值代表量级。整个 App 的计算逻辑都围绕这个字段展开——累加得到当前电量,按时间排序得到曲线数据点。

鸿蒙端没有 SwiftData,`EnergyRecord` 对应的是一个普通 interface,持久化用 `relationalStore`。时间轴渲染用了 `List` + 自定义 `ListItem`,记录添加时的入场动效用 `animateTo` 加弹簧参数:

```arkts
interface EnergyRecord {
  title: string
    delta: number
      timestamp: Date
      }
@Entry
@Component
struct EnergyTimeline {
  @State records: EnergyRecord[] = []
    @State totalEnergy: number = 50
  addRecord(title: string, delta: number) {
      animateTo({ duration: 300, curve: Curve.EaseOut }, () => {
            // 必须整体替换数组,直接 push 不会触发 UI 刷新
                  this.records = [{ title, delta, timestamp: new Date() }, ...this.records]
                        this.totalEnergy += delta
                            })
                              }
  build() {
      Column() {
            Text(`当前电量: ${this.totalEnergy}`).fontSize(32).fontWeight(FontWeight.Bold)
                  List() {
                          ForEach(this.records, (item: EnergyRecord) => {
                                    ListItem() { RecordCard({ record: item }) }
                                            })
                                                  }
                                                      }
                                                        }
                                                        }
                                                        ```
注释里那行是我踩过的坑,顺手留在代码里了。

---

## 那些试了又删掉的东西

**提醒功能**:做完之后用了一周,有一天收到那条推送的时候突然觉得烦——「该记录你的精力了」,我当时的反应是「关你什么事」。当天晚上直接去代码里把它干掉了。这个提醒本身就是一种消耗,违背了这个 App 想要的轻量感。

**精力预测**:想根据历史数据预测今天什么时候会掉电。但样本量不够的时候预测完全不准,有时候给出来的结果反而比没有更让人困惑。砍掉,等数据积累到一定量再说,反正现在加上去只是给自己埋坑。

**社交分享**:「今天的电量曲线」生成图片分享。做了一半停下来,意识到这个产品的调性从一开始就是内向的、自我觉察的,硬要往社交平台上推感觉有点拧。暂时搁置。

现在版本里留下来的功能,每一个都要能回答「这会不会增加记录的门槛」这个问题。

---

## 快捷动作条:把摩擦力降到最低

我做了一个「快捷动作条」,把最常用的几个记录一键完成——比如「-15 刷手机」「+20 散步」,点一下直接记,不用打字。

对应到数据模型是 `QuickAction`,每个快捷动作存了 `title`、`delta`、图标名,以及是否置顶(`isPinned`),置顶的会出现在条的最前面。

鸿蒙版里用的是横向滚动的 `Scroll` + `Row` 布局,配上 HarmonyOS 系统图标。华为手机屏幕普遍大一些,快捷条放更多项目也不会显得拥挤,这个倒是比 iOS 端更好排布。

---

## 现在的进度

1.2.0 版本两周前上线,iOS 端目前大约 60 次下载,鸿蒙版核心的记录和时间轴已经跑通,方舟项目功能还在移植中。

数据这块坚持纯本地存储,没有任何云同步,不需要注册账号。这是我从一开始就定下来的原则——精力记录这种东西,放在自己设备上最合适。

---

## 写给同样在做鸿蒙开发的人

如果你也在做 HarmonyOS App,或者正在把现有产品移植到鸿蒙端,欢迎来聊。

我在移植过程中最费时间的一个坑是 `relationalStore` 的 predicates 条件拼接。它不是链式调用,而是先 new 一个 `RdbPredicates` 对象,然后命令式地往上 `.and()` / `.equalTo()` — 但有一个反直觉的地方:多个条件直接连续调用方法并不是默认 AND 关系,得显式插 `.and()`,否则查询结果会悄无声息地出错,没有任何报错信息,数据就是少了几条。SwiftData 那边写 `#Predicate { $0.delta > 0 && $0.isDeleted == false }` 完全是自然语言,两边一对比,差异相当明显。如果你也在用 `relationalStore` 这套 API,评论区见。
RAGFlow + GraphRAG+ 知识图谱 + QwQ32B探索实践 RagFlow 是一款开源的 RAG(Retrieval-Augmented Generation)引擎,专注于深度文档理解,能够助力企业及个人构建高效的 RAG 工作流程。借助大语言模型(LLM),它可以精准处理各种复杂格式的数据,为用户提供可靠的问答服务,并附上详实的引用依据。 阅读详情

相关推荐

安卓-折叠屏平行视界适配(多厂商兼容与优先级实战)

本文详细解析了安卓折叠屏平行视界适配的现状与挑战,重点探讨了多厂商兼容性策略和优先级冲突的实战解决方案。通过对比Google的Embedding方案和国内厂商的EasyGo标准,提供了检测设备支持方案、处理优先级冲突及双方案共存的最佳实践,帮助开发者高效完成折叠屏适配。

weixin_29190169的博客 162

情绪价值拉满:用 ArkUI 写个“马屁精”APP,点一下屏幕换着花样疯狂夸你

/ 统一响应格式(约定后端返回这个结构)data: T;// 请求配置method?params?// URL 查询参数data?: object;// 请求体headers?// 额外请求头timeout?: number;// 错误类型为什么要定义泛型?实际项目里,后端接口通常都有一个统一的外层结构,比如。定义泛型包装类型之后,调用方拿到的data就是已经类型安全的具体业务数据,不需要每次都手动取再断言类型。IDLE = 'idle', // 初始状态。

程序猿追的博客 1万+

QCM6490平台DDR测试:从QDUTT配置到眼图分析的实战指南

本文详细介绍了QCM6490平台DDR测试的全流程,从QDUTT工具安装配置到眼图分析,提供了实战操作指南和常见问题解决方案。通过具体案例分享,帮助工程师掌握DDR测试技巧,确保内存稳定性,特别适用于物联网和边缘计算设备的开发调试。

weixin_33910191的博客 456

我做了一个 HarmonyOS 版「精力电池」App,用 ArkUI 把每天的充能和耗电可视化

iOS 版用 SwiftUI 写的,最近我又着手把它迁移到 HarmonyOS 生态,用 ArkUI 重新实现了一遍核心交互,这篇文章聊聊整个过程的设计思路和技术实现。做了让你恢复精力的事(午睡、散步、和朋友聊天),加电;我预设了几十个常见场景胶囊,比如「深度工作 90min」「刷短视频 30min」「被甲方改需求」,点一下就记上了,整个过程不超过 5 秒。上个月连续赶了两周需求,某天下午三点坐在工位上,盯着屏幕发现自己一个字都写不出来。打开手机看了眼电量——37%,我心想:我自己大概也就剩这么多了。

same4869的博客 226

华硕三频万兆分布式路由组网实战:从AiMesh 2.0到全屋Wi-Fi 6覆盖

Mesh组网是解决大户型Wi-Fi覆盖难题的主流方案,其核心原理是通过多个节点构建网状网络,实现设备间的无缝漫游。在技术层面,Wi-Fi 6标准、三频设计(包括专属回程频段)和有线回程等技术,共同提升了网络的带宽、稳定性和抗干扰能力。这些技术的工程价值在于,能够为多设备并发、高带宽应用(如4K/8K流媒体、在线游戏、内网文件高速传输)提供可靠支撑。具体到应用场景,例如利用华硕AiMesh 2.0系统,配合三频万兆分布式路由器,可以实现智能的设备连接与负载均衡。通过合理规划节点位置、优先采用有线回程,并进行Q

weixin_34054866的博客 431

告别零碎资料!手把手教你搞定ASTER L1T数据的预处理全流程(附ENVI实操)

本文详细介绍了ASTER L1T数据的预处理全流程,包括数据获取、质量检查、ENVI实操步骤(辐射定标、大气校正、几何精校正)以及热红外波段深度处理。特别适合地信领域初学者和研究人员,帮助快速掌握ASTER L1T数据处理技巧,提升定量反演研究效率。

weixin_30385925的博客 353

HarmonyOS开发者日实战指南:从万物互联原理到跨端开发落地

在万物互联时代,分布式操作系统通过统一架构实现多设备协同,其核心原理在于将计算、存储与显示能力解耦,并通过软总线技术实现设备间的安全通信与资源池化。这一技术范式为开发者带来了‘一次开发、多端部署’的工程价值,能显著降低多设备适配成本,提升应用生态的扩展性。其典型应用场景涵盖智能家居、车载系统、工业物联网等领域,要求开发者掌握自适应UI框架与元能力(Ability)模型。本文聚焦HarmonyOS开发者日,详解如何通过Codelabs与动手实验室快速掌握分布式应用开发,并解决环境搭建、服务卡片开发等常见工程问

weixin_30580341的博客 351

基于gm/id方法的折叠式共源共栅放大器设计实践

本文详细介绍了基于gm/id设计方法进行折叠式共源共栅放大器设计的完整流程。该方法通过确定晶体管的跨导效率(gm/id)作为核心设计参数,将复杂的放大器设计转化为有明确路径的优化问题。文章以设计一个增益80dB、带宽1GHz的两级放大器为例,逐步拆解了从指标分解、关键晶体管工作点选取、到实战仿真与微调的全过程,特别强调了第二级设计对稳定性的影响以及相位裕度的调试技巧。

w8x9y0z1的博客 414

HarmonyOS分布式软总线与原子化服务技术解析与开发实践

操作系统作为连接硬件与应用的桥梁,其核心价值在于高效管理资源并提供统一开发接口。随着物联网设备爆发式增长,传统“一机一系统”的孤岛模式面临严峻挑战,设备间协同困难、开发体验割裂成为行业痛点。分布式操作系统技术应运而生,它通过虚拟化技术将多个物理设备在逻辑上整合为统一资源池,实现算力、数据与能力的无缝流转。这项技术的核心在于构建高效的设备间通信框架与灵活的应用服务模型,其工程价值在于大幅降低多设备协同开发复杂度,提升资源利用效率。在智能家居、车载互联、工业物联网等场景中,分布式技术能实现导航跨设备续接、视频流

weixin_30435261的博客 758

RH850从0搭建Autosar开发环境【3X】- Davinci Configurator之BswM模块配置详解(上)

RH850从0搭建Autosar开发环境【3X】- Davinci Configurator之BswM模块配置详解(上)

weixin_42412049的博客 736

从 Token 到 Agent:一文串起 AI 大模型核心概念

摘要:本文系统解析了现代AI系统的八大核心概念:Token(语言处理的最小单位)、Context(AI的短期记忆)、Prompt(指令接口)、Tool(能力扩展器)、MCP(工具生态协议)、Agent(自主智能体)和AgentSkill(专业技能封装)。文章揭示了这些概念如何共同构成AI从基础语言理解到自主决策的技术脉络,重点阐述了Token对计算成本的影响、Prompt工程的重要性、Tool如何突破AI的能力边界,以及Agent如何通过"感知-规划-执行-反思"循环完成复杂任务。最后指

jundao1997的专栏 249

〖物流终端实战 05〗纯血鸿蒙 ArkTS 高阶性能优化:长列表渲染、组件复用与内存泄漏排查

本文深度剖析鸿蒙ArkTS高阶性能优化,直击长列表卡顿与内存泄漏痛点。针对渲染,指出ForEach全量构建的缺陷,强调采用LazyForEach(V2推荐Repeat)配合增量通知及稳定业务Key;针对组件复用,明确@Reusable仅复用实例不重置状态,必须在aboutToReuse中手动清理UI状态;针对内存泄漏,总结全局监听未注销、定时器未清理及长生命周期对象持有页面引用三大元凶,并指导通过DevEco Profiler的Heap快照排查引用链。文章强调优化需遵循“先定位后改代码”原则,助力开发者打造

Eyf • 半字节的博客 638

【AI大模型:前沿】41、建筑行业大模型创业全指南:从技术突破到成本控制与落地路径

建筑行业大模型是“高门槛、高回报”的长周期赛道,适合有建筑行业资源+AI技术背景的团队切入。数据是基础,场景切割是策略,合规是底线。通过聚焦“设计生成+规范审查”等刚需场景,用“仿真数据+开源模型”降低成本,3-5年内有望成长为行业独角兽。对于中小团队,避开千万级全流程模型的红海,深耕“小而美”的单点工具,同样能实现盈利与快速扩张。关键成功公式建筑AI创业 = 50%数据壁垒构建 + 30%场景精准切入 + 20%成本控制能力。

2025博客之星Top81。专注AI工程化与架构实战。从分布式思维到模型部署,用工程化视角为你厘清AI落地的真实路径。 2114

HarmonyOS 7 端侧 AI 图像超分的工程化落地

用户抱怨网络差的时候图片传不上去,更严重的是,大量的私密照片上传到云端,引发了严重的隐私合规审查危机。痛定思痛后,我们决定把 AI 模型直接塞进手机里,用端侧的 NPU 来做推理,但这绝非易事。我们首先在服务端对模型进行了知识蒸馏,把参数砍掉了一大半,然后利用 MindSpore Lite 的转换工具,将模型转成了鸿蒙底层支持的。即便如此,模型依然有 20 多兆,我们最终选择了 FP16 量化,牺牲了极其微小的画质,换取了内存占用减半。推理过程极其消耗 CPU 和内存,稍微大一点的图,处理时间长达几秒。

2602_97267507的博客 158

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

AppGallery 上架自检 SOP:签名、隐私对齐与包体校验实战【鸿蒙心迹】

上架被驳回多因签名、隐私声明与包体不一致。本文提炼“签名→隐私对齐→包体校验”自检SOP,配套一键脚本与权限三角校验代码,实现90%驳回前置拦截。通过CI强制release签名、代码/声明/功能三者权限对齐、包体完整性校验,确保提审一次过。实战清单可直接抄,让过审从运气变为流程。

wdracky的专栏 311

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

【鸿蒙专题与实战】测试体系:单元测试、组件测试与 UI 测试

本文系统讲解鸿蒙开发中的三层测试实践:底层单元测试(用Hypium框架,优先覆盖纯函数、边界与异常)、中层ViewModel逻辑、顶层仅测3-5条关键UI路径。强调测试应“越往下写得越多”,因单元测试快且成本低,而UI测试慢易出错。通过实例说明断言拆分提升定位效率,结合覆盖率报告(hvigorwtest --coverage)发现盲区,核心是“用覆盖率找漏测,而非追求数字”。附五步落地清单:建测试文件、按优先级补用例、精简UI测试、生成报告、定位未覆盖行。下一篇将开启实战项目:从需求到上架全流程。

信息安全领域优质创作者|操作系统领域专家 164

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

窗口销毁了监听还在,HarmonyOS 7 生命周期释放的归属分界

综上所述,onWindowStageWillDestroy 是窗口监听的最后安全出口,onWindowStageDestroy 只负责断开窗口引用,onDestroy 管 Ability 级资源——三者不是“程度不同的退出回调”,而是各自有明确的归属范围。窗口监听的所有者是 WindowStage,定时器的所有者是 UIAbility,播放器的所有者是页面或 Ability(取决于你在哪一层创建的),ApplicationContext 监听的所有者是 Ability 的 context。

qq_61905492的博客 199

鸿蒙平板能当电脑第二块屏幕吗?ToDesk、向日葵镜像/副屏实测

本文对比测试了ToDesk鸿蒙版4.8.3.0与向日葵鸿蒙版16.8.0在连接鸿蒙平板作为电脑副屏的表现。结果显示,ToDesk可直接实现镜像屏与扩展屏功能,支持参数调节,操作流畅;而向日葵副屏需开通会员才能使用。对于已有鸿蒙平板的用户,ToDesk能有效拓展工作空间,提升多任务效率,尤其适合临时办公、出差等场景,具备较高实用价值。

2501_91062530的博客 2320

React Native for OpenHarmony 实战:react-native-file-logger 日志库鸿蒙化适配

本文记录了将 react-native-file-logger 适配至 OpenHarmony 的实战过程。基于鸿蒙 7.0 模拟器,通过 5 个 TurboModule 方法实现日志落盘、轮转、列举与删除,采用 fileIo 实现核心功能,支持按大小和跨天轮转,归档文件命名精确至毫秒。邮件发送功能因平台限制按能力边界处理,明确拒绝并提示用户手动导出。验证通过,日志文件结构清晰,内容完整,产出 HAP 示例与独立 HAR 库,中英双语文档齐全,为鸿蒙应用日志管理提供可靠方案。

m0_62930060的博客 237

【鸿蒙心迹】深色模式适配全链路——从配置到自定义(HarmonyOS 7.x)

系统切深色模式,应用没跟着变;图片在深色模式下刺眼;自定义绘制颜色没适配——深色模式不是"换个背景色",是颜色/图片/材质/状态栏的全链路适配。本文用涟漪睡眠 App 适配深色模式为案例,给完整方案与 5 个踩坑。

腾讯云创作之星、华为云云享专家,深耕电商全栈高并发系统实战,分享可商用商城项目源码。 361

平行视界兼容模式与魔法变量配置避坑【鸿蒙心迹】

本文详解折叠屏兼容模式下“魔法变量”配置的五大易错点,强调maxWindowRatio与minWindowRatio必须满足max ≥ min、centerAlign需显式设为true、minCompitableVersion拼写为Compitable等关键细节。通过校验函数实现上线前批量机型测试,结合排查流程图快速定位分栏失效问题。虽兼容模式可零代码实现分栏,但存在状态共享风险,长期仍建议按规范开发原生平行视界分栏。

wdracky的专栏 1088

【共创稿事节】HarmonyOS 7.0 Marquee跑马灯:从接入到生产验证

HarmonyOS 7.0 Marquee跑马灯:从接入到生产验证:真实工程复盘,附代码与验证方法。

2401_84996024的博客 162

HarmonyOS 7 应用冷启动与包体积优化实录

我们在构建脚本里加入了一个自动转换任务,将除了极其复杂的透明图之外的所有静态资源,全部转换为 WebP 格式。为了这 5% 的用户,让 95% 的用户承担 30MB 的下载成本,显然不划算。目录,里面躺着无数历史遗留的高清切图,有些是早被废弃的活动图,有些是同一张图的多个尺寸备份。这一招,直接砍掉了将近 15MB 的死重。我们将短视频相关的所有代码、图片、甚至底层的播放器三方库,全部剥离到了独立的 Feature 模块(HSP)中。包变小了,启动速度自然会快一点,但真正的瓶颈在于冷启动时的初始化逻辑。

2502_91284977的博客 171

鸿蒙远程控制软件哪个好?华为远程PC、ToDesk、向日葵三款实测

综合来看,本次横测最终更推荐ToDesk:它在支持跨品牌连接的基础上,外接鼠标、全屏远控、移动设备协助和多屏功能覆盖更完整,更适合作为主力远控工具。

2401_85083137的博客 335

HarmonyOS 分布式深度:跨端迁移、数据对象与多设备协同

本文深入解析鸿蒙分布式能力实战,聚焦跨端迁移、协同与共享三大形态,详解权限配置、设备发现、onContinue状态管理及分布式数据对象、KV同步机制。强调“先分清场景”“前置条件必全”“数据需重验”,揭示迁移失败、同步失效等七大常见坑,指导开发者规避陷阱,实现真实可用的多设备协同。

信息安全领域优质创作者|操作系统领域专家 81

导航该收起来,还是留在左边?HarmonyOS 6 侧栏小练习

手机宽度下,分类一直占着左边,正文会被挤得很窄;宽窗口下,每次切分类都先打开一个抽屉,又显得多了一步。这次让同一个导航内容根据空间换一种出现方式:宽时常驻左侧,窄时放到覆盖式抽屉里。分类选中状态始终是一份,切完分类后收起抽屉,正文立即显示对应路线。判断这份导航是否合适,可以回到一次切路线的动作:找得到目录,选得中分类,关掉后正文仍是刚才那一条。宽窄变化只影响目录出现的位置和时机。后面扩展层级或接入真实路线时,也先保住这一条连贯的操作。

程序猿追的博客 251
上一篇: 我做了一款 HarmonyOS 订阅管理 App:用「斩」这个动作,让停掉订阅变得有成就感
下一篇: 我用 HarmonyOS 做了一个毒舌 MBTI,把结果页和海报生成踩了个遍
SameX-4869
博客等级 码龄17年 3354粉丝 657原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值