- 博客(76)
- 收藏
- 关注
原创 开源鸿蒙平台 KMP_CMP 三方库「compose-nav-graph」适配全流程
编译期工具库的适配边界判定(四组件只编注解模块)→ 最小 fork 构建(*.upstream 可还原)→ ohosArm64/ohosX64 + 鸿蒙版 kotlinx-serialization→ 真实 @Serializable 模型解码(NavGraphModels 契约)→ ArkTS 夹具加载 + 断链注入 + 五区块渲染→ ArkUI 真机导航图工作台。
2026-10-29 00:39:46
1055
原创 开源鸿蒙平台 kmp 三方库「apollo-kotlin」适配全流程
本文详述 apollo-kotlin 在 OpenHarmony 平台的完整适配过程,通过核查依赖元数据、切换 Gradle 与 Kotlin 工具链、新增 ohosArm64 目标、补齐平台 expect/actual 声明,实现 Kotlin Multiplatform 库在鸿蒙原生环境的编译与执行。项目基于上游 commonMain 零修改,构建出可运行于 ARM64 设备的动态库(libkn.so),通过 C ABI/N-API 桥接与 ArkTS 双页面(验收+演示)完成真机验证,覆盖查询生成、缓
2026-10-28 00:44:30
1204
原创 开源鸿蒙平台 CMP 三方库「resaca」适配全流程
本文完整记录了 resaca 库在 OpenHarmony 平台的适配过程,基于成熟的 ohos 制品线,原样编译 commonMain 代码生成 KLIB,构建无头 Compose 运行时驱动真实 @Composable 执行,通过 C ABI / N-API 桥接实现 ArkUI 宿主调用,完成 rememberScoped 等作用域逻辑在 ARM64/X64 设备上的真机验证。项目采用 cmp_qrose 构建模式,确保代码零修改复用,覆盖双目标编译、动态库生成、HAP 安装与全链路验收,为 KMP/
2026-10-28 00:43:53
3013
原创 开源鸿蒙平台 CMP 三方库「KStore」适配全流程
本文记录 KStore 接入 OpenHarmony 的完整适配过程:基于成熟的 kotlinx ohos 制品线,原样编译响应式存储引擎至 ohosArm64/ohosX64,通过 C ABI/N-API 桥接实现 ArkUI 真机交互,完成事务写、版本迁移与损坏恢复等核心能力。无需内核提取,仅新增8行dispatcher代码,验证了跨平台持久化在鸿蒙端的全链路可用性。
2026-10-28 00:43:21
2786
原创 开源鸿蒙平台 CMP 三方库「JetLime」适配全流程
本文记录 JetLime 接入 OpenHarmony 的完整适配过程,通过复刻其参数模型与几何公式至 ohosArm64/ohosX64 双目标,实现 Kotlin/Native 动态库与 C ABI/N-API 桥接,最终在 ArkUI 真机页面完成跨端渲染验证。项目以纯 Kotlin 实现核心逻辑,确保与 Android/iOS/Desktop 同源一致,并通过四类钉值测试与状态回显保障几何精度,成功打通 KMP/CMP 在鸿蒙平台的交付链路。
2026-10-27 00:29:48
1164
原创 开源鸿蒙平台 CMP 三方库「compose-dnd」适配全流程
本文完整记录 compose-dnd 接入 OpenHarmony 的适配过程,通过提取纯 Kotlin 判定引擎,实现 ohosArm64/ohosX64 双目标构建,结合 C ABI/N-API 桥接与 ArkUI 真机页面,成功将拖拽重排核心逻辑(悬停解析、落点对齐、自动滚动等)移植至鸿蒙平台。项目保持上游零改动,独立工程交付,支持长按拾起、跨槽交换、边缘滚动与实时反馈,验证通过真机与双架构链路,实现与 Android/iOS 一致的行为契约。
2026-10-27 00:28:22
1150
原创 开源鸿蒙平台 CMP 三方库「Calendar」适配全流程
KMP commonMain 日历引擎→ ArkUI 月 / 周 / 年 / 引擎 四 Tab。
2026-10-27 00:27:49
3193
原创 开源鸿蒙平台CMP 三方库「compottie」适配全流程
compottie 2.3.3(7 模块,Kotlin 2.4 + Compose 1.12 源码)→ -0.1.0 工具链线(Kotlin 2.4.20-0.1.0-07 + Compose 1.12.0-0.1.0-09 ohos 分支)→ 三依赖小刀替换(vendored keight / CompottieLock / HashMap)→ LottieFrameRenderer 无头渲染入口(镜像上游 draw 路径)
2026-10-26 00:17:22
1090
原创 开源鸿蒙平台 CMP 三方库「Zoomable」适配全流程
ZoomState 手势数学(逐函数移植为纯 Kotlin ZoomEngine)→ libohoszoomable.so(双 ABI)→ 单函数 C ABI(JSON + 实例注册表)→ ArkTS 手势增量 + 状态快照→ ArkUI 四 Tab 手势工作台 + animateTo 补间。
2026-10-26 00:16:43
1041
原创 开源鸿蒙平台 CMP 三方库「material-motion-compose」适配全流程
Material motion 参数模型(commonMain 语义)→ 纯 Kotlin 复刻 + JVM 钉值→ ArkTS JSON 解析 + PixelMap + 定时器播放→ ArkUI 真机动效工作台。
2026-10-26 00:15:46
1122
原创 Docker从入门到入土
这篇Docker学习笔记涵盖了从安装到基本使用的关键内容:1) Docker安装方法及镜像仓库配置;2) 常用命令包括容器管理、日志查看、端口映射;3) 数据持久化的两种方式;4) Dockerfile编写和镜像构建;5) 网络配置与子网创建;6) Docker Compose多容器编排。文章提供了实用的命令示例和配置方法,适合初学者快速掌握Docker的核心功能。重点内容包括镜像管理、容器操作、数据持久化和多容器编排等实际应用场景。
2025-12-22 21:52:19
1065
原创 构建并部署自己的AI模型:从零到精通
AI模型的构建和部署是一个复杂但重要的过程。通过遵循上述流程,可以在私有环境中成功部署AI模型,并实现其在特定应用场景中的应用。根据评估结果,调整模型的参数和超参数,以改善模型的性能。在人工智能的浪潮中,构建并部署自己的AI模型成为了技术爱好者和专业人士的热门追求。本文将带你从零开始,逐步了解如何构建、微调、使用数据集预训练,并最终部署自己的AI模型。通过本文的指导,你可以掌握从零开始构建、训练、微调并部署自己的AI模型的全过程。这个结果表明模型在测试数据上的表现是合理的,但仍有改进的空间。
2025-05-20 10:13:56
2030
原创 Spring Boot:简化Java开发
如果需要,你可以自定义自动配置。创建一个配置类,并使用注解,然后使用来绑定配置文件中的属性到你的类中。Actuator和监控Spring Boot Actuator提供了生产级别的功能,如度量、健康检查和审计。要使用Actuator,添加依赖到你的项目中。
2024-10-29 21:12:12
1357
原创 前端动态展示信息的JSP实现与美化
在数字化时代,网站不仅仅是信息的展示平台,更是与用户互动的窗口。个性化和实时互动成为了提升用户体验的关键。本文将详细介绍如何使用JSP(Java Server Pages)技术来创建一个动态欢迎信息的网页,并使用CSS进行美化,以增强视觉效果和用户体验。
2024-10-29 20:21:17
828
原创 大模型的请求与响应,ObjectMapper对json数据的反序列化
在代码中,创建了实例,用于将 JSON 字符串转换为 Java 对象。反序列化过程是将 JSON 格式的字符串转换为相应的 Java 类型。通过调用方法,将响应体的 JSON 字符串解析为JsonNode类型。JsonNode是 Jackson 库中的一种数据结构,可以用来以树状结构访问 JSON 数据。数据解析解析后的JsonNode对象可以像访问树的节点一样访问 JSON 的各个部分。在代码中,使用了多层get()方法来逐步提取所需的数据,例如:这段代码的含义是:先访问data字段,再访问。
2024-10-29 20:02:08
1040
1
原创 STM32时钟树入门——从51单片机的时钟系统引入
下面先给出stm32f103c8t6的内部结构。假设我们有一个水库,它有很多个闸,这些闸默认是开启的,因此每个闸都会出水,任意一个闸可以直接用,但存在一个问题,没用到的闸也在出水,即也在耗能。组合逻辑电路不含记忆元件,它的输出只和当前的输入有关,而时序逻辑电路包含记忆元件,它的输出与当前输入以及上一个时刻的输入都有关,并且最重要的一点是,我们只有给了它时钟信号,它才能正常工作。我们在上文中提到,在51单片机中,是不需要配置时钟的,因为只要将时钟打开,所有的外设就都可以工作了,而这个时钟是默认开启的。
2024-10-24 21:30:18
953
原创 【C语言动态规划——完全背包问题】优化背包模型以及无效化情况处理,零钱兑换问题的优化解法
当我们选择k kk件第i ii件硬币时,即k = k k=kk=k,f [ i ] [ j ] = f [ i − 1 ] [ j − k ∗ t ] + k f[i][j]=f[i-1][j - k * t]+kf[i][j]=f[i−1][j−k∗t]+k。当我们选择1 11件第i ii件硬币时,即k = 1 k=1k=1,f [ i ] [ j ] = f [ i − 1 ] [ j − t ] + 1 f[i][j]=f[i-1][j - t] + 1f[i][j]=f[i−1][j−t]+1。
2024-09-15 00:00:02
372
原创 主流编译器及国产编译器,优缺点综合调研
编译器是软件开发中不可或缺的工具,它扮演着将高级编程语言代码转换为计算机硬件能够理解和执行的机器代码的角色。这一转换过程不仅包括语法分析、语义分析、代码优化,还包括最终的代码生成。编译器的核心功能是确保代码的正确性,同时通过各种优化技术提高程序的运行效率。此外,它还能检测代码中的错误,提供反馈帮助开发者进行调试。编译器的性能直接影响到软件开发的速度和最终程序的执行效率。编译器作为软件开发的核心工具,其发展和创新对整个行业都有着深远的影响。
2024-09-14 21:36:56
3661
原创 npm淘宝最新镜像源切换教程
淘宝镜像源是由淘宝团队维护的一个npm镜像服务,它提供了与官方npm源相同的功能,但下载速度更快,因为它的服务器在国内。随着时间的推移,淘宝镜像源的地址可能会发生变化。截至2024年,淘宝镜像源的最新地址是。通过上述步骤,你可以成功配置npm使用最新的淘宝镜像源,提高npm包下载和安装速度。使用nrm工具还可以方便地管理和切换镜像源。希望这篇教程能帮助你顺利完成npm镜像源的配置,并提高开发效率。如果在操作过程中遇到任何问题,欢迎在评论区留言讨论。
2024-09-13 19:46:11
1792
原创 大模型对话界面代码模板教程:构建你的聊天应用
在当今快速发展的技术领域,人工智能和机器学习的应用越来越广泛,尤其是在自然语言处理(NLP)领域。大模型对话系统作为AI的一个重要分支,它能够模拟人类对话,为用户提供更加自然和流畅的交互体验。在本教程中,我们将通过一个简单的代码模板,教你如何构建一个基本的大模型对话界面。大模型对话系统通常指的是利用深度学习技术训练的大型语言模型,这些模型能够理解和生成自然语言文本。它们在聊天机器人、虚拟助手、客户服务等领域有着广泛的应用。
2024-09-13 12:35:43
4687
原创 【AI模型】一分钟教你使用GPT-SoVITS,克隆你的声音,效果十分逼真,手把手实操教程
进入如下界面后即可进行打标,左侧为自动生成的文字,中间为原音频,我们需要根据音频实际去修改左侧文字,看看是否有错误,错误一般为文字错误,标点错误,断句错误等,修改好后点击第二个Submit Test提交即可。看到下边,需要我们上传10秒以内的音频,注意了,这里是十秒音频,必须和前边训练的声音要一致,前边假如训练的是自己的声音,那这里也要上传自己的声音,而且此次生成的音频语气感情都会参照这10秒内的声音来合成。首先我们可以准备好一段音频,用于切割训练,我这里准备了四分钟,取自一个视频中的音频。
2024-07-10 16:44:12
16364
15
原创 智能未来,触手可及,畅享移动云
在数字化转型的浪潮中,云计算已成为推动企业创新和个人生产力提升的关键力量。移动云,作为中国移动旗下的云服务品牌,以其卓越的产品性能、全面的服务支持和前瞻的技术布局,正迅速成为云计算领域的一股新兴力量。本文将深入探讨移动云的优势,并与其他云服务厂商进行对比,展现其在云服务市场中的独特价值。
2024-05-27 22:48:19
1651
1
原创 坦克大战源码,C++复刻经典小游戏
狼人杀游戏”是一款2D坦克射击游戏,玩家需要在多变的地形中操控坦克,与敌方坦克进行激烈的对抗。游戏的目标简单明了:消灭所有敌方坦克,同时保护自己的基地不受破坏。游戏以其复古的像素风格、丰富的地形设计、坦克的升级与复活机制以及智能AI对手,为玩家提供了一个既具挑战性又充满乐趣的游戏环境。“狼人杀游戏”作为一款复古风格的坦克大战游戏,不仅在视觉和听觉上给玩家带来了经典的游戏体验,同时在玩法上也融入了现代游戏的元素,使得游戏既具有挑战性,又不失趣味性。
2024-05-19 21:35:17
1586
1
原创 Anaconda安装与使用,新手避免踩坑
第二个是Linux环境下的命令,第三个是Windows的命令,我是Linux,所以执行第二个,当路径前出现括号+环境名时,说明环境激活成功(环境名)出现 "conda: command not found" 的错误,这通常表示系统没有正确配置 Anaconda 的环境变量。显示出来的base是自带的环境,scBERT是我自己取名的新环境,可以看见这个环境创建成功。输入下面的代码后(环境名自己按实际情况取),再输入y确定创建,等待一段时间即可。但是有时候会出现配置不正确或者未正确生效的情况。
2024-05-09 18:47:56
558
1
原创 程序猿敲代码费脑掉头发?来看看铁打的便捷,Baidu Comate智能代码助手
总结而言,Baidu Comate智能代码助手以其强大的功能和广泛的编程语言支持,为开发者提供了一个前所未有的编程体验。它不仅极大地提升了编码效率,还通过智能推荐、代码注释生成和缺陷查找等特性,显著增强了软件生产力。Baidu Comate的一键安装和易用性,成为程序猿的理想选择。其丰富的智能问答功能,为用户提供了深度学习和个性化定制的可能性,满足从初级到资深开发者的多样化需求。
2024-05-09 18:15:25
2612
2
原创 C语言超好看的爱心代码!一定不要错过!
代码不只是逻辑和算法的堆砌,它们也可以是情感的表达。通过这段C语言的爱心代码,我们不仅学习了如何用代码绘制图形,更重要的是,我们体会到了编程的乐趣和创造性。所以,拿起你的编译器,开始你的编程之旅吧,用代码绘制出属于你的爱心!
2024-04-24 19:49:36
1063
原创 Chat with RTX安装教程 | 老黄新品:推出本地部署Chat with RTX,人人都能运行大模型!
NVIDIA几天前“深夜放大”发布,这项技术只须要求你拥有配备8GB显存的NVIDIA RTX 30或40系列显卡。用户可以向其提供txt、doc、pdf文件或视频链接,定制模型以获取回答。值得一提的是,所有的索引工作都在本地进行,用户无需担心隐私问题。
2024-02-17 12:20:17
4177
6
原创 C语言二叉树建立与遍历—实验报告
系别计算机学院班级学号姓名课程名称数据结构实验日期实验名称二叉树的建立与遍历算法应用成绩实验目的:熟悉掌握二叉链表存储结构及基本算法,并能应用二叉树的基本算法解决与之有关的简单问题,训练和提高结构化程序设计能力及程序调试能力。实验条件:计算机一台,Visual C++6.0或DEV C++判断一棵二叉树是否为满二叉树。要求二叉树用二叉链表存储,用先序、中序、后序递归遍历算法的任意两种输出二叉树中所有结点,编写程序判断该树是否为满二叉树。int val;// 结点的值。
2023-12-06 11:20:43
2411
1
原创 数据结构实验—宿舍管理系统(C,Python,Java三种代码版本)
数据结构课程设计,宿舍管理系统,使用快速排序和二分查找,有C、Python、Java三种语言的代码格式
2023-12-06 11:05:27
17315
1
原创 MySQL数据库增删改查
(但日后不建议使用,公司里代码规范不允许这样使用,在美化SQL代码后,*无法加注释,而且别人无法得知你查的全部数据到底是哪几项,所有建议还是把列名全部写出来)在不改变列名的情况下,给它取一个小名,例如代码中使用英文,表中math为数学成绩,我们就可以将代码改成如下进行查询。4.查询男同学和女同学各自的数学平均分,以及各自人数,要求: 分数低于70分的不参与分组,分组之后人数大于。3.查询男同学和女同学各自的数学平均分,以及各自人数,要求: 分数低于70分的不参与分组。= ,要使用is is not。
2023-10-24 18:32:02
309
原创 Java IO流实现文件复制
Windows文件复制时我们是使用Ctrl C复制Ctrl V粘贴,上一篇文章Java基础入门·对存储文件的相关操作,我们学习了Java IO流对文件的读写操作,那我们可以思考一下,字节的读取和写入,怎样运用到文件复制的操作中?
2023-09-23 07:00:00
2052
原创 [MySQL]基本介绍及安装使用详细讲解
(DataBase),简称DB顾名思义,即存储数据的仓库,数据是有组织的进行存储(DataBase Management System),简称DBMS管理数据库的大型软件SQL(Structured Query Language),简称SQL,结构化查询语言操作关系型数据库的编程语言定义操作所有关系型数据库的统一标准Oracle(收费的大型数据库)、MySQL(开源免费中小型数据库)、SQL Server( MicroSoft 公司收费的中型的数据库)、SQLite(嵌入式的微型数据库)
2023-09-19 22:13:18
222
原创 Java基础入门·对存储文件File的相关操作
我们之前进行Java基础入门学习时,都或多或少得遇到与get有关的方法,看它的名字就知道,带有此字样的方法,一般都是进行“获取”的操作而今天我们就从File类获取开始,一步步学习。
2023-09-19 07:00:00
517
原创 Java基础入门·File类的使用
这种方法和我们平时删除文件(文件夹)的方式不同,磁盘中的文件(文件夹)直接删除会进入回收站,而使用此代码删除则直接抹除文件,有风险,误操作会导致文件丢失。与boolean同理,要创建文件夹,就把代码换成这一句即可,同时,规则也依然不变,即使你是文件夹,也依然不能与文件同名,如果同名,也会返回false。,当然,这要是直接写进一个项目里,肯定会出错,所以后面我们会学习到对其判断的一个功能,对路径是否存在进行筛选。那么创建出来的也不会是文件夹,依然是一个文件类型,所以,如果我们需要创建文件夹,则要“另辟蹊径”
2023-09-15 07:00:00
313
3
原创 Java单例设计模式之“饿汉与懒汉”
不是技术,而是开发人员解决特定问题实现的写代码的经验所有的设计模式核心技术,就是面向对象。Java设计模式共23种,分为:创建型,行为型,结构型。
2023-09-14 07:00:00
127
1
原创 Java基础入门·多线程·线程池ThreadPool篇
前言在上一篇的文章中,我们初步了解Thread类的用法第一次书写多线程程序,算是完成一个Java学习的里程碑接下来我们继续进入多线程的学习线程池ThreadPool,目的就是提高效率。new Thread().start(),线程是内存中的一个独立的方法栈区,JVM没有能力开辟内存空间和OS交互而线程会频繁地与OS交互浪费资源,tips:后面学到的数据库连接池也是类似的效果jdk5开始内置线程池Executor类。
2023-09-13 07:00:00
350
22
原创 Java—实现多线程程序 | 入门
一、前言一、前言前期入门学习的代码中,全部都是单线的程序,也就是从头到尾地运行在我们平时使用手机电脑的应用程序时,它们几乎都是多线程地工作例如idea,typora等等。本文就从现在开始,一步步尝试写多线程程序代码,一起来学习吧!二、基本概念进程任何的软件存储在磁盘中,运行软件的时候,OS使用IO技术,将磁盘中的软件的文件加载到内存,程序在能运行。这里的内存大小就是电脑内存条的大小,也就是平时所说的运行内存大小,常见的有4G,8G,16G,32G甚至更高。应用程序运行的时候进入到内存。
2023-08-26 20:19:36
1086
12
原创 Java入门必备|有你想知道的代码技巧
前言前言本文主要分享记录学习Java时的敲代码大法,一步步与idea这个软件磨合,让它为我们敲代码这条路提供更便捷的帮助(雀食好用哈)一.psvm很多刚上手IJ软件,就被main()方法给折服了,这段代码量十分大当我们键入psvm这四个字符然后按一下,软件就会自动生成这行代码,极大减少了繁琐的工作量二.变量的基础操作当我们要输出一个值,遍历数组等等+ “(一个小点,英文下的句号)我们可以发现有,等等选项,下面我们就来详细介绍这几个代码。首先soutv和都是输出语句的快捷使用代码,
2023-08-19 21:45:15
2618
1
原创 解决IntelliJ IDEA 代码运行时中文出现乱码
在我们刚接触到IDEA时,想美滋滋的敲一个“hello world”来问候这个世界,但难免会遇到这种问题乱码!乱码!乱码!内心的崩溃就在一瞬间,下面我就来分享几个实用的解决方法。
2023-07-06 20:38:37
7429
15
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅