- 博客(242)
- 收藏
- 关注
原创 精通 UITableViewDiffableDataSource——从入门到重构的现代 iOS 列表开发指南
在我们的项目中,我们定义了四种不同的自定义单元格,每一种都有其独特的用途和设计。我们将从项目的基础设置讲起,逐步实现拖拽重排、滑动删除、跨分区移动等高级交互,并最终通过封装与重构,探索现代列表开发的最佳实践。我们不仅能够展示丰富多样的内容,还为接下来的高级交互功能奠定了坚实的基础。:通过提供一套高级、易用的 API,该架构极大地减少了样板代码,让开发者能够更专注于实现功能,而不是处理底层的复杂性。至此,我们的应用已经成功摆脱了对 Storyboard 的依赖,为纯代码的 UI 构建之旅奠定了坚实的基础。
2026-01-08 07:30:44
91
原创 图片分类业务推理性能探索
TensorRT的真正威力在于其大规模并行计算的能力,而处理单一样本时,它的“火力”并未完全释放。我们意识到,自己犯了一个“头痛医头,脚痛医脚”的错误,只关注了服务端指标,而忽略了整个系统的端到端性能。性能数据的一致性告诉我们一个结论:在理想网络环境下(例如,客户端、图片服务器、GPU服务器都在同一个高速内网),对于单张图片,“URL下载”和“字节流传输”在端到端性能上并无本质区别。这是一种“返璞归真”的方式,它不做任何额外的编码,没有体积膨胀,服务端的解码也只是将原始字节流直接送入图像处理库,开销极小。
2025-12-18 07:30:58
730
原创 用 DeepSeek 打造智能虚拟主播:从零到上线全流程
安装完成后,右键点击任务栏音量图标,选择 “声音”,在 “输出” 栏可看到 “CABLE Input (VB-Audio Virtual Cable)”,“输入” 栏可看到 “CABLE Output (VB-Audio Virtual Cable)”,表示安装成功。执行完成后,在该文件夹下会生成 “dist” 文件夹,进入 “dist” 文件夹,即可找到 生成的“text_to_speech.exe” 执行文件,双击可直接运行,也可被其他程序调用。:DeepSeek 模型调用成本相对较低,适合长期运行;
2025-12-11 07:30:22
888
原创 AI 赋能广告采集与监测:自动化系统设计与实践
每个进程都拥有独立的Python解释器和内存空间,避免了多线程中的GIL(全局解释器锁)限制,同时也降低了进程间的干扰风险,提高了系统的稳定性。通过不断的技术创新和优化,我们成功解决了在低端Windows设备上的通信性能问题,为广告监测领域提供了一套高效、可靠、稳定的自动化解决方案。同时,我们也希望通过本文的分享,为相关领域的技术人员提供一些有益的参考和启示,共同推动移动应用自动化监测技术的发展和进步。系统在启动时,首先检测所有已连接的Android设备,然后为每台设备创建一个进程,执行广告监测任务。
2025-12-04 07:30:58
992
原创 告别“脏数据”:我如何用Cleanlab将数据审核效率提升34倍?
本文将分享一个真实的文本分类项目案例,记录我们如何从一个令人绝望的数据质检困境——面对15,192条可疑数据束手无策,到最终利用cleanlab和其背后的“置信学习”理论,将待审核数据量锐减至438条,审核效率提升34倍的完整过程。:如果 p_hat_i >= t_{y_hat_i} (即,模型对这个预测的自信程度,达到了它平时的“平均自信水平”),我们就认为这次计数是可靠的。对于一个样本,如果模型对它“给定标签”的预测概率,低于这个标签类别的“置信度阈值”,那么它就是一个潜在的标签错误。
2025-11-27 07:30:48
361
原创 MediaPipe Tasks 在 Android 中的生成式 AI 实践:基于 Gemma 3n 的移动端
用它的时候,你可以直接在浏览器里上传自己的数据、用自己定制的机器学习模型,快速测试 MediaPipe 的各种解决方案(比如手势识别、图像分类等)。简单说,它就像一个在线工作台,不用复杂配置,打开就能直观地评估模型效果,或者根据自己的需求调整模型和运行流程,很适合快速验证想法。传统的全量微调需要重新训练模型所有参数(数十亿个),而 LoRA 微调只训练模型中注意力层的少量参数(约万分之一),像给模型加个"插件",既保留原模型能力,又能学会新任务。功能,但第三方的模型并不完善,需要转换。
2025-11-14 07:30:22
1061
原创 浅谈Nacos获取配置两次调优经历
因历史和架构原因,我们的多个服务存在共用同一redis实例的情况,为最大程度避免redis数据不一致的情况,我们在共用redis的服务中引入同一配置项作为切换的开关(前提是北显机房的redis数据已“实时地”向金山云机房同步),当开关关闭时,所有服务读写北显机房的redis。经排查和讨论,我们认为,每一个服务的配置项并不是很多,并且配置项多数不会频繁的变更,即便配置项发生改变,延迟几秒(Nacos配置变化生效时间几乎都是毫秒级)对服务也无影响,综上,我们用机器内存缓存配置来解决这一超时问题。
2025-11-06 07:30:22
1008
原创 这死锁,不打个招呼就来了
事务一拿到A记录的锁开始处理,此时事务二也对C记录加锁处理,处理完C记录之后,发现A的锁已经被占,于是阻塞。超时,好处是避免一直死锁监测的cpu开销(适用于高并发写入场景),但也存在风险:如果出现死锁,可能导致大量事务锁等待超时,系统的吞吐量降低。一个事务获取某个资源的排他锁后,其他事务不能获取该资源的任何锁。(Next-Key Lock): 记录锁(Record Lock) + 间隙锁(Gap Lock) 的组合。(行级锁,不是意向锁(IS/IX)别弄混),在 InnoDB 的锁体系中属于独立的类别。
2025-10-30 07:30:42
370
原创 从编译爆炸到编译防火墙:狐友 iOS 架构升级中的轻量化治理实践
现有的成熟优秀架构,如MVC (Model-View-Controller),MVVM(Model-View-ViewModel),VIPER(View-Interactor-Presenter-Entity-Router)等,都在狐友App中有广泛使用,这些架构主要聚焦于模块内部的代码组织和分层设计,不考虑架构设计对编译时间的影响;在狐友App的早期阶段,业务功能相对简单,模块之间的依赖关系也较为直接,通常是上层模块依赖底层模块,形成一种垂直依赖关系。分支合并那种烦人的冲突也少了92%,省心多了。
2025-10-24 07:30:14
834
原创 Android动态图片技术深度解析
本文将深入解析 Android 动态照片的技术原理,重点分析 XMP 元数据系统,并通过小米 Micro Video、Google Motion Photo 和 OPPO O Live Photo 三个真实案例,展示不同厂商的技术实现细节,探寻一套统一的检测和处理解决方案。动态照片是一种融合静态图片与动态视频的多媒体格式,其核心设计采用"主静态文件 + 附加视频 + 元数据"的组合模式,既能实现静态展示,又可支持动态播放,为用户带来更丰富的视觉体验,同时保持了较好的兼容性。
2025-10-10 07:30:23
924
原创 Lottie动画双状态切换的渐进式优化实践
Lottie 的底层实现会尝试用 json 路径的同级目录下的 images 文件夹,但如果你用的是沙盒缓存路径、或者 images 目录和 json 不在同一目录,或者 images 目录没有被正确拷贝,Lottie 就找不到图片,结果动画就不会被正常显示出来。纯 json 文件,所有资源(包括图片)都内嵌在 json 里(base64),这种情况下,Lottie 只需要加载 json 文件本身即可,动画和图片都能正常显示;为了处理动画加载和状态切换的时序问题,我们引入了状态机和Pending机制。
2025-09-18 07:31:13
443
原创 CAEmitterLayer:iOS 中创建炫酷粒子效果的魔法工具
CAEmitterLayer 是 iOS 开发中创建炫酷粒子效果的强大工具,通过合理组合 CAEmitterLayer 和 CAEmitterCell 的各种属性,你可以创建出几乎任何想象中的粒子效果。在 iOS 开发中,CAEmitterLayer 是一个强大但相对复杂的类,它可以创建出各种炫酷的粒子效果,如火焰、烟雾、雨、雪等自然现象,或者用于增强用户界面的视觉效果。粒子系统的基本原理是模拟大量微小物体(粒子)的运动和行为,通过组合这些粒子的效果来创建复杂的视觉现象。
2025-09-11 07:31:26
820
原创 Figma Context MCP 源码解析
这不是简单的数值转换,而是设计理念的转译:设计稿是静态的、固定尺寸的,而Web产品是动态的、多设备适配的。这个设计体现了作者对AI认知模式的"焦点机制"的深刻思考,AI可以首先构建元素的骨架,而不是被"淹没"在细节中,导致写出混乱的代码。随着MCP生态的成熟,可以预见一个新的开发范式:设计师在Figma这样的设计平台中创作,AI助手实时理解设计意图并生成高质量代码,开发者专注于代码审查和架构设计。MCP的核心理念是为AI模型提供标准化的上下文获取机制,让AI助手能够访问实时、准确的信息来增强其响应能力。
2025-09-04 07:31:34
1012
原创 Jetpack Compose 深度剖析:从 UI 声明式编程到渲染内核优化
它不会像传统 View 那样层层嵌套测量布局与绘制流程,而是采用测量(MeasurePass)-> 布局(LayoutPass)-> 绘制(DrawPass)的管线逻辑,通过 LayoutNode 驱动 Compose UI 树的变化。Jetpack Compose 和 HarmonyOS ArkUI 均采用声明式 UI 编程范式,面向多设备场景的响应式 UI 构建,二者在理念相通的同时,在架构设计、状态模型、渲染机制等方面有显著区别。Compose 则采用声明式模型:界面即状态的函数表达。
2025-08-29 07:30:53
1107
原创 Android点赞烟花效果实现
并且属性动画提了种类丰富的插值器 Interpolator,除本文提到的还有弹跳插值器、回荡秋千插值器等等,另外还支持自定义插值器,这成为定制复杂动画运动轨迹的关键。那么,烟花图形又是怎么动气来的呢,通过属性动画ValueAnimator设置运行时间Duration,利用插值器在每个时间因子不断更新粒子的位置、速度、透明度、旋转角度等属性,通过view.postInvalidate() 渲染更新画布。根据整个烟花效果,将烟花分为两个主体,一是发射点发出的烟花粒子,二是烟花爆炸后形成的火花粒子组。
2025-08-14 07:30:34
1228
原创 TS:依赖分析助力项目依赖管理
本文用一个文件、一段比较简单的代码开篇,后面的工具也是围绕这段代码展开。还有,我们上面的代码是用的“当前文件中的代码段”。代表的是各种名字,而我们要寻找的是 cookie 这个 API 在代码中的调用情况,那就可以通过遍历所有。可以“读取虚构的xxx文件中的代码”。但是区别的地方来了:如果是虚构的文件,虽然也可以使用这里说的其它。同一个文件中,两个不同的函数里面定义了名称相同的变量,它们属于不同的。本文代码摘自“插件”的方式。上面这段代码的作用是“读取虚构的xxx文件中的代码”,代码内容就是第二个参数。
2025-08-14 07:30:34
792
原创 Swift下Dictionary背后的魔法
假设每个人的姓名笔划数都是不重复的,那么我们通过一个函数把要存档的人姓名笔划数转换到1000以内,然后把这个人的资料就放在转换后的数字指定的柜子里,这个函数就叫做哈希函数,按照这种方式存放的这1000个柜子就叫哈希表(散列表),人名笔画数就是哈希表的元素,转换后的数就是人名笔划数的哈希值(也就是柜子的序号)。如果是你,你会怎么做?哈希函数在计算行业里有很多应用,除了我们现在在了解哈希表外,比如我们经常听见的数字签名,服务器为了负载均衡而做的一致性哈希设计,搜索服务用的布隆过滤器等,都是用的哈希函数的特性。
2025-08-14 07:30:34
960
原创 如何生成严格递增的分布式id?
雪花算法生成的唯一ID均为正数,所以这 64 个 bit 中,其中 1 个 bit 是不用的(第一个 bit 默认都是 0),然后用 41 bit 作为毫秒数,用 10 bit 作为工作机器 id,12 bit 作为序列号。处理好redis问题后,修改naocs开关,程序监听到开关打开事件,则从数据库模式改为缓存模式生成:先更新下一号段避免id重复,然后把新更新的值写入redis中,下次请求就继续开始使用redis生成id。不同的机器存在不同的号段,放在内存中,速度快效率高,只需要考虑本机的线程安全问题。
2025-08-14 07:30:34
714
原创 浅析责任链模式在视频审核场景中的应用
通过使用责任链模式并遵循开闭原则、单一职责等设计原则对视频审核与发布业务进行了重构,当业务新增处理器时,无需对原有的系统源码进行修改,只需要关注新增的处理器本身即可,极大的增加了系统的灵活性与扩展性,也提高了系统的可维护性,减少了对复杂业务编排导致出现。实现,且每个处理器除了要关注自己的处理器代码外,还需要持有下一个处理器的引用,以串联成链,并且还负责对下一个处理器的调用。链路管理器负责处理器的编排,在本示例中,只是简单的按顺序调用每一个处理器进行处理,在实际工作中会增加处理器的优先级特性,也可以结合。
2025-07-31 07:31:36
377
原创 一文读懂实时活动
类型的实时活动创建以后,系统框架会自动帮你完成所有的更新和显示,你什么都不需要操作,文档也强调说明了,异步队列来获取更新回调,所以是不安全的回调,具体原因官方也没有回复,也有其他的开发者反馈类似问题,没有答复具体参考。部门最近也最近实现了这一功能需求,用于某一事件的实时动态展示,接下来的这一篇文章将为大家揭开实时活动的面纱,让你对实时活动不再说陌生。项目就是你的实时活动的最终响应模块,这个模块就是你的实时活动展示界面和更新数据的最终载体。)的概念,以便于用户在锁屏查看一些应用实时活动的更新。
2025-07-31 07:31:36
2089
原创 低成本高精度三维重建
得益于3D Gaussian Splatting技术,采用高斯椭球体点云取代传统的骨架+三角形贴图,并且利用深度学习技术实现了椭球点云的自校验,使得对于图像素材的要求大大降低,相应的对于拍摄设备与拍摄手法的要求也大大降低。3.由于在早期步骤中获取到了每个图片的拍摄机位信息,那么我们可以利用机位信息将椭球点云反推为一系列图像,再将生成的图像与原始图像进行损失计算,然后根据损失数据调整椭球点云,不断重复以上过程以实现一个损失不断下降的自校验过程。库,利用运动结构恢复技术提取拍摄机位信息与模型点云数据;
2025-07-31 07:31:36
528
原创 矢量图SVG安卓进阶
上面三个方案,都不能像Android的AnimatedVectorDrawable一样,支持每个path和group的属性动画,如果能够复用VectorDrawable,AnimatedVectorDrawable的设计来支持SVG中的矢量图和动画,是不是就一举两得了呢?下面对两种设计思路进行尝试。从源码和示例效果,可以发现Android-PathView库只是结合ObjectAnimator,对SVG中的path进行了一个裁剪绘制,从而产生出动画效果,并非支持SVG的动画标签,所以其动画效果比较简单。
2025-07-31 07:31:36
856
原创 基于YYKit的富文本自标定体系
如上图所示,业务场景中存在评论、图文标题等富文本的编辑场景,一条文本中可能存在@的人、话题、链接等不同类型的内容。编辑结束如何告知下游服务文本中哪部分是特殊类型的内容,这些内容又分别是什么,就成了一个很棘手的问题。也就是说,NSMutableAttributedString 自带一个跟文本绑定的 NSString 为 key 的存储空间,那我们只需要自定义一个 NSString 的 Key 用来存取标记数据就可以了。这就是自标定体系,用于富文本类型内容的生产编辑。什么是自标定体系,自标定体系是干什么用的。
2025-07-31 07:31:36
674
原创 搜狐新闻直播间适配HarmonyOs实现点赞动画
Ark UI中,UI的变化是通过状态变量控制的,由此需要设计一个数组,初始化为空数组,当触发一次动画操作时,向数组中添加一个数据,此时系统会根据数组的数量自动渲染对应的组件,当组件准备完成时执行属性动画,控制动画的状态变量放在数组里的对象中,当动画执行结束时,从数组中移除该数据,相应的组件也随之移除。
2025-07-24 07:30:33
1218
原创 用 MCP 扩展 Cursor 能力:解锁 Sentry 服务数据新玩法
服务的另一个核心组件,专门用于获取应用的会话统计数据,包括崩溃率、用户数量、会话持续时间等关键指标。问题的详细信息,包括问题标题、状态、级别、首次和最后出现时间、事件数量,以及最关键的堆栈跟踪信息。能够帮助我们监控和分析应用的稳定性表现,及时发现潜在问题,提供数据支持以优化用户体验和应用质量。可直接查询到更为全面、丰富的应用信息,全方位提升了数据的可获取性与利用价值。- 分组和排序:支持对数据进行分组和排序,便于比较分析不同维度的数据。信息以及可能的解决方案,这可以显著提升问题排查与解决的效率。
2025-07-24 07:30:33
990
原创 线程锁漫谈
在开发中往往是多线程的,如果多个线程同时对同一资源进行读写,就可能造成资源抢夺的问题,导致数据计算结果不是我们想要的结果。从操作系统的层面,有些系统已经内置了解决方案,在遇到此类优先级反转的情况时,会出让高优先级线程的优先级给让低优先级线程,保证锁内资源执行的正常。的崩溃,如果执行次数很少,还是可以考虑的。但是,自旋锁的效率相对是很高的,因为不用进行线程唤醒的操作,而是让线程直接进入盲等状态,相当于运行了一个。可以进行跨平台使用,可以创建两种类型的锁,一个是互斥锁,一个是递归锁,在初始化时指定类型。
2025-07-24 07:30:33
795
原创 视频审核中多模态应用
模型的训练过程,就是每个batch输入一定数量的图像和文本,通过各自模型encode成embedding,然后将图像的embedding和文字的embedding分别计算余弦相似度,损失函数要做的就是让成对的文本接近1,让不成对的文本接近0通过这样的方式,不断地调整两个encoder的权重,使得损失函数效果更好,以达到两个模型更高的对应表达。违规图片的检测,最先想到的方法就是建立违规图片数据库,视频进审时,针对视频关键帧提取图片特征,同图片违规数据库匹配,如果命中的话,则标记当前视频为违规视频。
2025-07-24 07:30:33
1143
原创 狐友抽奖平台构建之路
结合以上实际场景,我们引入预占库存的逻辑,将奖品分为总资源池和活动资源池,逻辑上相互独立,当新建一个玩法活动配置奖品库存时,需要进行预占库存的操作,会从总资源池中预占一部分库存,作为该活动的奖品库存,当活动的奖品库存发放完时,活动运营可以选择追加库存,当活动结束时,如果奖品库存仍有剩余,会自动返还至总资源池。在实际的业务场景下,运营人员分为两种角色,活动运营人员与运营BD人员,前者主要负责活动的策划和执行层面,后者负责活动奖品的商务拓展,与外部商家对接,获得商家的赞助。
2025-07-17 07:30:55
819
原创 矢量图Vector安卓详解
通过VectorDrawable的创建过程,我们可以了解到所有图片资源,最终都会通过解释xml中的标签,在inflateFromTag方法中创建图片对象,如VectorDrawable,GradientDrawable,ColorDrawable等。的属性和SVG中的属性基本一一对应,其中pathData对应了SVG中的d属性,绘制命令也完全一致,包括了10个命令:M,L,H,V,C,S,Q,T,A,Z。ImageView中的动画默认会停在初始画面,需要在代码中通过start函数来启动动画。
2025-07-17 07:30:55
551
原创 鸿蒙搜狐新闻如何在Native调用ArkTS方法
01前言鸿蒙作为一款新兴的智能操作系统,现在适配鸿蒙系统的应用越来越多,同时会面临三端兼容问题,如同一产品功能,需要维护iOS、Android、鸿蒙三端代码。拿文件上传、下载功能场景举例,同时要适配iOS、Android、鸿蒙三端,目前比较好的方案是文件上传、下载功能下沉到C,三端native代码可以复用,但是在鸿蒙上存在如下一个问题:Native文件上传、下载进度怎么从Native线程异步回调给ArkTs线程对应JS回调方法?答案:通过Node-API提供的线程安全函数,可以把文件上传、下载进度从nati
2025-07-17 07:30:55
773
原创 使用AVPlayer播放FairPlay DRM视频的最佳实践
01DRM 介绍DRM,即数字版权管理(Digital Rights Management),是指使用加密技术保护视频内容、通过专业技术安全地存储和传输密钥(加密密钥和解密密钥)、并允许内容生产商设置商业规则,限制内容观看者的一种系统。1.1 DRM 工作流程DRM使用对称加密算法(Symmetric-key algorithms)对视频内容进行加密,对称加密算法使用同一把密钥加密和解密;首先,通过密钥(通常为AES-128)将内容加密,然后传输给客户端。这把密钥由专用服务器提供,安全可靠;当客户端想要播放
2025-07-17 07:30:55
1323
原创 基于LLM的流量回放系统
无论是GET请求或者POST请求,其实都是很多的key、value的组合,那么去重的优先级是, 优先key不同的数据, 这个不同包括key的绝对值不同,也包括key的多与少,如图中所示,当通过这种方式去重后,一般每个接口路径下,一种返回形状,可能只能剩下5个以内的数据了,但是这会出现一个问题,因为请求参数可能会有一些id,他们的值不同则代表了不同的文章、用户,去重后会造成这类数据的减少,但这种问题几乎无法预计,所以这里直接采用了最简单的办法,对已经去重的数据做随机补充。
2025-07-17 07:30:55
898
原创 ViewPager2的滚动机制与优化
我们以C卡片为例,如果不操作的话那么我们的卡片应该处于右边C位置,然而实际上我们的卡片确却是在左边B位置,这样我们需要向下移动的卡片的距离为2*小卡片高度+ 大卡片高度,以此类推,D卡片需要多滑动一个小卡片的距离,以此类推,然而为了平滑移动需要乘以。然而,设计师的酷炫效果往往给开发者带来不小的挑战。可以看到第一张图片小卡片的人头部分没有显示出来,但是移动到第一张卡片的时候却显示的整张完整的图片,这样做的原因是为了在小卡片的时候显示我们想要显示的区域,这样效果会更好,那么这个效果我们需要怎么做呢?
2025-07-10 07:30:23
592
原创 基于Redis的向量召回,支撑 AI 业务
传统的问答库多以关键词匹配为核心,但面对复杂的用户表达和多样化的问题场景,单纯的关键词匹配显得无能为力,给用户笨拙低效的体验。然而,智能客服的关键在于能够快速、准确地理解用户的问题,并提供有效的解决方案,而这背后离不开强大的问答库支持。当用户输入问题时,将问题也转换为向量,并通过向量相似度计算,召回匹配的问答数据,实现对用户问题的精准匹配。相比传统方法,向量搜索能够理解问题中的语义含义,识别出用户隐含的意图,即使用户的问题表述与问答库中的内容不完全一致,也能提供相关性较高的答案。
2025-07-10 07:30:23
756
原创 JDK21虚拟线程僵死、调查及展望
与传统的线程不同,虚拟线程并不是直接由操作系统调度的,而是由JVM调度和管理,通过更高效的调度机制,使得数百万的线程也能在单台机器上高效运行。关键字的实现,以便虚拟线程可以独立于平台线程获取,保留和释放监视器,并且支持在等待监视器时释放平台线程,以便平台线程可以挂载其他虚拟线程。而JVM会追踪当前哪个线程持有锁对象的监视器,但是JVM追踪的是平台线程,而非虚拟线程。,被移出队列,以便pinned-0线程执行,但是不幸的是,由于没有空闲的平台线程,它永远无法被移出,这就跟之前的线程栈分析对上了。
2025-07-10 07:30:23
1189
原创 当测试遇见AI:用 Streamlit+AutoGen+Deepseek 构建智能用例生成器
未来的测试领域,AI 将成为需求理解的翻译官、测试设计的参谋长、质量风险的预警器,最终实现 "让测试更智能,让质量更可靠" 的目标。它借助 Streamlit 构建出友好的用户界面,利用 AutoGen 库和 Deepseek 语言模型进行交互,只要用户输入需求,就能快速生成测试用例,极大提升了测试工作的效率。负责搭建用户界面,收集用户的需求和高级选项信息,提供交互功能,比如按钮点击、输入框输入等,还能实时显示生成的测试用例和相关状态信息,就像一个热情的 “接待员”,和用户进行互动。
2025-07-10 07:30:23
816
原创 iOS静态代码检查方案解读
的程序,和我们人工分析的过程类似,符号执行引擎会分析程序逻辑的各个分支满足的条件,然后提前把这些条件准备好,如果有多个独立条件并存就会用排列组合的方式设计条件列表,再将这些不同预设的条件放到引擎中模拟执行,观察并记录符号的状态变化,具体某一项分析检查器只需要在合适的时机去读取符号的当前状态,判定是否有误即可知道代码是否存在问题了。前面我们讲述了如何使用 clang 针对单个文件进行分析,但实际的场景中,我们一般并不会单个的去编译一个个文件,而是利用针对工程的集成构建工具,例如。
2025-07-10 07:30:23
485
原创 鸿蒙富文本实践
图片组件 RichEditorImageSpanResult 就麻烦一些,首先通过 .valueResourceStr 可以获取到图片的资源路径 resource:///icon_emotion_8.png ,刨除协议头 resource:/// 与文件后缀 .png ,就得到了图片名 icon_emotion_8,通过配置表可以匹配到对应的表情关键字"[鼓掌]"。上面的文本就转换为:"第一次见面她帮他出头,他被她拽拽的气质吸引,对她一见钟情,多年后重逢续写故事"、"[色]"、"这该死的羁绊~"。
2025-03-27 07:30:30
1407
原创 Argo Workflows 原理及应用
01组件概述Argo Workflows是一个开源的容器原生工作流引擎,允许用户在Kubernetes集群上定义并执行复杂的业务流程。支持对相关流程进行个性化编排,包括执行顺序、相互之间的依赖等等。Argo Workflows 是以 Kubernetes 自定义资源定义(Custom Resource Definitions,简称 CRD)的形式来实现其功能。CRD 是 Kubernetes 提供...
2025-03-13 07:30:17
2109
原创 鸿蒙跨平台框架ArkUI-X
01引言目前,移动端主流跨平台方案有Flutter、React Native、uni-app等等,还有刚推出不久的Compose-Multiplatform,真所谓是百花齐放。这些框架各有特点,技术实现各有差异,比如Flutter通过Dart编写的UI描述对接Flutter渲染引擎,React Native 则是借助大前端成熟的发展背景,利用JS引擎生成UI描述,渲染时转化为原生控件,复用了原生渲...
2025-03-06 07:30:53
2260
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅