- 博客(26)
- 收藏
- 关注
原创 Tiling策略实现Ascend AI处理器上的高效数据分块与并行计算
摘要:本文深入探讨AI计算中的Tiling技术,从理论到实践全面解析Host侧与Kernel侧的协同优化。针对昇腾AI处理器的内存墙问题,提出多维分块、动态调整和分层优化策略,通过数学建模实现3-5倍的性能提升。文章详细介绍了智能Tiling引擎设计、内存访问优化方法,以及矩阵乘法等实战案例,并给出自动化Tuning系统的最佳实践。数据显示,优化后的Tiling技术在不同场景可获得2-8倍的性能提升,为AI计算提供核心加速方案。
2025-11-23 23:58:57
691
原创 Ascend C 入门指南:全场景 AI 算子的核心基础
AscendC是昇腾AI处理器的专用编程语言,基于C/C++标准规范设计,通过多层次硬件抽象和并行编程模型为AI算子开发提供高效解决方案。本文系统解析了AscendC的三大核心:1)昇腾AI软硬件架构,包括CANN异构计算体系和达芬奇架构;2)编程模型原理,涵盖矢量编程范式、SPMD并行设计和三级流水线机制;3)完整开发流程,从向量加法算子实现到高级优化技术。通过双缓冲优化、Matmul调优等实战案例,展示了性能提升方法,并提供了大模型算子优化和故障排查指南。文章为AI系统开发者提供了从基础到进阶的全链路技
2025-11-19 23:53:30
695
原创 Rust 内存布局与性能优化:从字节对齐到缓存友好性
本文深入探讨了Rust内存布局对程序性能的影响及优化策略。通过分析默认布局规则、#[repr]属性(C、packed、align)的原理与应用,揭示了字节对齐和填充机制的关键作用。重点讲解了False Sharing问题及其解决方案(缓存行填充),数据结构布局优化技巧,以及SIMD指令集的高效利用方法。文章还介绍了自定义分配器(如Arena)的实现原理和性能优势,并通过粒子系统案例展示了实战优化效果。最后提出了性能与安全性平衡、跨平台兼容性等深入讨论点,为开发者提供了从基础到进阶的系统级性能优化指南。
2025-10-30 10:57:54
942
原创 Rust 数据库驱动开发与 ORM 设计:从连接池到查询构建器
传统数据库访问模式现代 ORM 模式// 查询模型(从数据库读取)// 插入模型(写入数据库)让我们从零构建一个类型安全的查询构建器!陷阱表现解决方案连接泄漏连接池耗尽确保连接正确归还(使用 Drop trait)N+1 查询性能急剧下降使用 JOIN 或批量查询SQL 注入安全漏洞始终使用参数化查询大事务锁表过久减小事务范围,使用乐观锁未处理的错误程序崩溃合理的错误处理和重试机制核心要点✅原生驱动- 提供底层控制,适合简单场景✅连接池- 必须使用,显著提升并发性能✅SQLx。
2025-10-30 10:52:41
877
原创 Rust 网络编程实战:底层 Socket 到高性能服务器的完整指南
摘要:本文系统讲解Rust网络编程,从基础TCP/UDP实现到高级异步框架。内容涵盖:1)网络编程演进三个阶段;2)Rust优势如内存安全和零成本异步;3)TCP基础与多线程解决方案;4)非阻塞I/O和事件循环机制;5)Tokio异步运行时及实战案例;6)性能测试显示Tokio支持百万级并发;7)高级应用包括HTTP服务器、负载均衡器和WebSocket实现;8)常见陷阱与优化技巧;9)协议对比和QUIC实现。通过递进式案例帮助开发者掌握Rust网络编程核心原理与最佳实践。
2025-10-30 10:43:28
888
原创 Rust 宏系统深度剖析:从声明宏到过程宏的完整指南
Rust 宏系统(Macro System)是其元编程(Metaprogramming)能力的核心,分为声明宏(Declarative Macros)和过程宏(Procedural Macros)两大类。声明宏通过模式匹配和代码替换实现简洁的语法糖;过程宏则提供了操作 TokenStream 的能力,可实现自定义派生(Derive)、属性宏(Attribute)和函数宏(Function Macro)。
2025-10-30 10:37:07
901
原创 Rust 性能优化与最佳实践:编写极致性能的代码
Rust 以其“零成本抽象”和与 C/C++ 相媲美的性能而著称。然而,仅仅使用 Rust 并不总能自动获得最佳性能。本文将深入探讨 Rust 的性能分析工具、常见的性能陷阱、内存布局优化以及高级并发模式,通过实战案例和最佳实践,帮助你编写出真正极致性能的 Rust 代码。Rust 提供了编写极致性能代码所需的所有工具,但性能优化是一个“测量-分析-优化”的循环过程。✅零成本抽象:泛型、Trait、迭代器编译后无运行时开销。✅精细控制:内存布局、unsafe、FFI 提供了底层控制力。✅强大工具。
2025-10-30 10:23:49
928
原创 仓颉跨语言混合编程:FFI实战与性能优化
摘要:本文深入探讨了仓颉语言外部函数接口(FFI)机制,重点分析了其在HarmonyOS生态中实现跨语言互操作的关键技术。文章系统阐述了FFI的核心原理,包括数据类型映射、内存管理和安全抽象设计,并通过封装zlib压缩库的实战案例,展示了如何在保持安全性的前提下实现高效调用。特别强调了通过RAII模式管理C资源、批处理优化减少调用开销、零拷贝技术提升性能等实践策略。最后讨论了FFI在平衡生态复用与语言安全性方面的价值,为开发者提供了在仓颉中安全高效整合现有C/C++生态的系统指导。
2025-10-29 19:46:39
618
原创 仓颉跨端适配实战:一次编写,多端部署
本文深入探讨了HarmonyOS仓颉语言与ArkUI框架实现跨端适配的核心技术。文章系统阐述了响应式布局、自适应UI和资源限定符三大原理,通过构建新闻应用演示了手机单栏布局、平板双栏响应式布局和智慧屏栅格布局的具体实现。重点讲解了设备类型判断、条件渲染、弹性布局、栅格系统等技术要点,并提供了资源限定符统一样式的最佳实践。本文为开发者提供了在多种设备形态上实现"一次开发,多端部署"的完整解决方案和实用建议,对HarmonyOS跨端开发具有重要指导意义。
2025-10-29 19:24:00
624
原创 仓颉HarmonyOS服务开发:后台任务与数据持久化
本文探讨了HarmonyOS后台开发与数据持久化方案。介绍了ServiceAbility作为执行后台任务的基础组件,WorkScheduler作为高效的任务调度机制,以及KVStore、关系型数据库和文件系统等数据持久化技术。重点分析了仓颉语言在后台开发中的优势:其协程模型适合处理IO密集型操作,所有权系统保障内存安全,Result类型提升错误处理能力,同时具备接近C/C++的性能。文章还提供了最佳实践建议,包括选择合适的后台机制、任务幂等性设计、资源管理和错误处理策略等,帮助开发者构建可靠高效的Harmo
2025-10-29 19:07:12
891
原创 仓颉开发HarmonyOS应用:ArkUI组件开发实战
用户界面(UI, User Interface)是应用程序与用户交互的直接媒介,其质量直接影响用户体验。传统的UI开发模式,如Android View系统或iOS UIKit,大多采用命令式(Imperative)编程,开发者需要手动操作UI元素来响应状态变化,代码往往冗长且难以维护。HarmonyOS引入了ArkUI框架,拥抱了现代UI开发的趋势——声明式编程。开发者只需描述在特定状态下UI应该呈现的样子,框架会自动处理UI的创建、更新和销毁,极大地简化了开发逻辑。
2025-10-29 18:48:48
628
原创 仓颉三方库生态构建:从开发到发布
本文全面介绍了仓颉语言(HarmonyOS原生开发语言)第三方库的开发流程与最佳实践。内容包括:1. 标准库项目结构与包管理器功能;2. API设计原则、模块化封装和依赖管理;3. 单元测试、集成测试与文档测试规范;4. 文档编写要求与示例代码布局;5. 版本控制策略(遵循SemVer)和发布流程;6. 开源协作指南与社区贡献规范。旨在帮助开发者构建高质量的仓颉第三方库,促进HarmonyOS生态繁荣发展。文章特别强调了最小化API设计、清晰的文档注释、严格的测试覆盖等重要原则。
2025-10-29 18:24:35
628
转载 Object 体系结构常用方法
Object 体系结构Monobehavior 常用方法 继承函数: 物体销毁: static Destroy() static DestroyImmdiate() static DontDestroyOnLoad() 物体生成: static
2016-05-20 10:05:00
457
转载 UGUI学习笔记(Button、Toggle)
【Button控件】说起来这是一个组合控件,由Image和Text组成,如下图: Button就是一个Image控件,上再加个Button的组件。这样的话Image的特性同样适用在Button上。这个我就不多了解了,要具体说下Button组件。 这个选项是表示该控件是否能交互,会产生 和 的两个状态,一个可以点击,一个无法点击。Transition是设
2016-05-20 10:02:43
3063
转载 A*算法
//定义格子的枚举类型 public enum GridType { Normal, Obstacle, Start, End } [csharp] view plain copy定义格子类 public class Grid : IComparable { public i
2016-05-09 20:19:30
462
转载 漫游场景
制作风景漫游Demo 1、新建场景并保存 2、创建地形并设置地形大小 3、调整地形高度(注意要Flatten一下) 4、地形提升(按shift下降) 5、添加纹理贴图 同样地,选择其他贴图 6、选择种树工具,并添加树木 7、添加水资源并调整尺寸 8、添加第一人称角
2016-05-09 10:26:07
688
转载 unity小技巧
关于这些技巧这些技巧并不是适用于每一个项目。 1.基于我的经验它们适用于3到20人的小团队。 2.一些结构性,重用性,清晰度等等上的技巧使用需要付出性能上的开销代价,根据你团队和项目的大小来决定是否需要付出这些开销代价。 3.许多技巧的选择可能会有自己不同的喜好(它们可能有对比,但是这里列出来的都是可用的好技术) 4.一些技巧可能和uni
2016-05-09 10:00:23
811
转载 简单的有限状态机设计---下
上篇给大家介绍了一个自定义的简单的使用switch语句实现的有限状态机,这次给大家介绍下一个简单的FSM框架,使用简单的FSM框架设计,可以避免我们使用switch实现的代码冗余,我们可以做到一个状态一个类,高效直观的区分开来。这个框架可以在unitycommunity.com找到 ,地址是http://wiki.unity3d.com/index.php?title=Finite_State
2016-05-09 09:57:06
993
转载 简单的有限状态机设计---上
大家好,这次给大家分享下最近学习到的有限状态机的简单制作,我们先介绍下什么是有限状态机。 有限状态机(Finite State Machine) FSM 就是由一组状态组成,状态机会根据状态 、情况改变当下的状态。比如我们要设计一个怪物的AI,首先这个怪物有好几组状态: 空闲状态 Idle、攻击状态Attack、巡逻状态、死亡状态。当然我们还可以加入更多状态,再根据逻辑中的实现,让
2016-05-09 09:53:13
585
转载 UNITY3D有限状态机
1.什么是有限状态机有限状态机是把一个对象的行为分解称为易于处理的“块”或状态。例如,灯的开关,就是一个简单的有限状态机。它有两种状态:开和关。假想一个机器小猫。它在肚子有一个插槽,放有很多模块(用来控制小猫的状态)。这些模块里包含这小猫的不同行为。例如:玩毛线、吃鱼,或者睡觉。如果没有一个模块,小猫就会是一个死气沉沉的金属雕塑品,只会静静坐着。猫在玩毛线的状态时,会监控小猫饥饿的等级,当
2016-05-09 09:47:16
753
转载 Unity AssetBundle打包与资源更新
Unity的AssetBundle打包是一件让人头疼的事情,当我接手这项工作时,我以为最多只用两个周就可以把整个打包和资源热更新的流程搞定,结果还是花了一个月,期间踩坑无数,总结出来希望能够节约别人的时间。(一)你的游戏项目是什么类型的?在开始写打包的Editor脚本之前,你最好先详细考察一下你们的游戏项目是什么类型?是端游,手游还是页游?因为这三者涉及到bundle包的资源管理策略截然不
2016-04-25 20:41:38
2577
转载 C#-using用法详解
using 关键字有两个主要用途: (一).作为指令,用于为命名空间创建别名或导入其他命名空间中定义的类型。 (二).作为语句,用于定义一个范围,在此范围的末尾将释放对象。using指令 ①允许在命名空间中使用类型,这样,您就不必在该命名空间中限定某个类型的使用: using System.Text; using
2016-04-20 11:40:58
444
转载 进程和线程区别
进程和线程的区别 进程和线程的区别收藏简而言之,一个程序至少有一个进程,一个进程至少有一个线程. 线程的划分尺度小于进程,使得多线程程序的并发性高。另外,进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大地提高了程序的运行效率。线程在执行过程中与进程还是有区别的。每个独立的线程有一个程序运行的入口、顺序执行序列和程序的出口。但是线程不能够独立执行,
2016-04-18 11:11:15
718
转载 TCP/IP、Http、Socket的区别
网络由下往上分为 物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。 通过初步的了解,我知道IP协议对应于网络层,TCP协议对应于传输层,而HTTP协议对应于应用层, 三者从本质上来说没有可比性, socket则是对TCP/IP协议的封装和应用(程序员层面上)。 也可以说,TPC/IP协议是传输层协议,主要解决数据如何在网络中传输, 而HTTP是应用层
2016-04-11 11:00:53
417
转载 进程线程区别联系
进程概念 进程是表示资源分配的基本单位,又是调度运行的基本单位。例如,用户运行自己的程序,系统就创建一个进程,并为它分配资源,包括各种表格、内存空间、磁盘空间、I/O设备等。然后,把该进程放人进程的就绪队列。进程调度程序选中它,为它分配CPU以及其它有关资源,该进程才真正运行。所以,进程是系统中的并发执行的单位。在Mac、Windows NT等采用微内核结构的操作系统中,进程的功能发生了
2016-04-10 20:13:29
393
转载 Unity3d基于Socket通讯例子
本人是新手,但是找了很久都找不到类似的通讯源码,后来终于在一个网站上看到有关于Socket的通讯事例,所以就抄过来希望能够帮助更多像我一样的初学者!嘻嘻首先创建一个C# 控制台应用程序, 直接服务器端代码丢进去,然后再到Unity 里面建立一个工程,把客户端代码挂到相机上,运行服务端,再运行客户端。 高手勿喷!~!完全源码已经奉上,大家开始研究吧!! 嘎嘎嘎!服务端代码:Pro
2016-04-08 13:54:29
598
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅