会员
周边
新闻
博问
闪存
赞助商
Chat2DB
所有博客
当前博客
我的博客
我的园子
账号设置
会员中心
简洁模式
...
退出登录
注册
登录
博客园
首页
新随笔
联系
订阅
管理
上一页
1
2
3
4
5
6
···
10
下一页
2025年10月8日
编程笔记 - C++ 引用和指针的区别
摘要: 在 C++ 中,指针(Pointer)和引用(Reference)都用于间接访问变量,但是它们在语法和语义上都有显著的差异。指针是一个变量,它可以保存另一个变量的内存地址;引用是另一个变量的别名,由编译器进行处理,使用时与使用原变量无异。 指针和引用使用的一些差异如下: 初始化 指针:可以先定义后赋
阅读全文
posted @ 2025-10-08 09:44 木杉的园子
阅读(80)
评论(0)
推荐(0)
2025年10月4日
数据结构 - 跳表 Skip List
摘要: 跳表(Skip List)是一种用于查找的类似于链表的数据结构,是对有序链表的改进,能够在 \(O(\log{n})\) 时间内完成增加、删除、查找操作。跳表相比于树堆与红黑树,其功能与性能相当,并且跳表的代码长度相较下更短。 1. 什么是跳表 跳表包含多个层级,每个层级包含一个有序的短链表。在跳表
阅读全文
posted @ 2025-10-04 20:52 木杉的园子
阅读(75)
评论(0)
推荐(0)
数据结构 - 字典树 Trie
摘要: 字典树(Trie)是一种树形数据结构,主要用于高效地存储和检索字符串集合。它通过利用字符串的公共前缀来节省存储空间,常用于词典查询、自动补全等场景。 1. 什么是字典树 字典树的每条边代表一个字符,从根节点到某一节点的路径表示一个字符串。如果某节点被标记为结束节点,则表示该路径对应的字符串存在于集合
阅读全文
posted @ 2025-10-04 18:02 木杉的园子
阅读(46)
评论(0)
推荐(0)
2025年9月28日
数据结构 - 二叉树的非递归方式遍历
摘要: 在实现二叉树遍历时,使用递归的方式是比较直观的方式。然而递归依赖系统调用栈,一方面在树深度很大时可能导致栈溢出,另一方面在工程实践中往往需要更灵活的控制方式。于是,非递归遍历成为一种必要补充:通过显式地维护栈或队列来模拟递归过程,从而在不依赖系统栈的情况下完成遍历。本博客将介绍一些非递归的方式实现二
阅读全文
posted @ 2025-09-28 15:16 木杉的园子
阅读(144)
评论(0)
推荐(0)
2025年9月3日
编程笔记 - LRU Cache
摘要: 当缓存容量固定时,我们需要一种淘汰策略:每次访问把数据标记为“最近使用”,当容量满了时淘汰“最久未使用”的那个,以提升缓存命中率。这就是 LRU 的核心。 以下是一个使用 C++ 实现的 LRU Cache 模版,拥有以下特性: 使用 std::list 维护一个缓存列表,头部的缓存块为最近使用的、
阅读全文
posted @ 2025-09-03 17:02 木杉的园子
阅读(91)
评论(0)
推荐(0)
2025年8月28日
在安卓设备上部署 llama.cpp 框架推理大模型
摘要: llama.cpp 是使用 C/C++ 编写的高性能推理框架,没有外部依赖,因此可以跨平台快速部署。并且,llama.cpp 还支持多种硬件平台上的计算库,包括 Metal、BLAS、CUDA、Vulkan、CANN 等,以加速模型的推理。此外,llama.cpp 还支持多种量化方案以加快推理速度并
阅读全文
posted @ 2025-08-28 16:21 木杉的园子
阅读(2526)
评论(0)
推荐(0)
2025年8月22日
ARM - NEON 编程
摘要: GNU 工具和 RealView 编译工具(RVCT)的最新版本均支持 NEON 指令。 1. NEON Assembler 使用 NEON 单元最直接的方式是编写汇编代码。GNU 和 RVCT 汇编器采用相同的指令格式,但是存在一些差异,包括:汇编器指示(assembler directives)
阅读全文
posted @ 2025-08-22 16:58 木杉的园子
阅读(267)
评论(0)
推荐(0)
ARM - NEON 介绍
摘要: ARMv7 架构引入了 Advanced SIMD 作为 ARMv7-A 和 ARMv7-R 架构的可选扩展。它通过定义对存储在 64 位 D(双字)寄存器和 128 位 Q(四字)向量寄存器中的向量进行操作的指令组,扩展了 SIMD 概念。ARM 处理器中使用的高级 SIMD 扩展实现被称为 NE
阅读全文
posted @ 2025-08-22 16:57 木杉的园子
阅读(323)
评论(0)
推荐(0)
ARM - SVE 编程
摘要: 编写或生成 SVE 代码由几种方法: 编写 SVE 汇编代码; 使用 SVE intrinsics 进行编程; 自动向量化; 使用 SVE 优化的库。 下面我们将详细介绍这四种方法。 1. 编写 SVE 汇编代码 我们可以在 C/C++ 代码中以内联汇编形式编写 SVE 指令,或在汇编源文件中编写完
阅读全文
posted @ 2025-08-22 15:50 木杉的园子
阅读(440)
评论(0)
推荐(0)
ARM - SVE 介绍
摘要: ARM 可扩展向量扩展(Scalable Vector Extension,SVE)是继 Neon 之后的 SIMD 扩展。SVE 允许在 CPU 实现中采用灵活的向量长度,其取值范围可从最小 128 位至最大 2048 位,但必须是 2 的幂次。因此有效的向量长度实现为 128、256、512、1
阅读全文
posted @ 2025-08-22 15:48 木杉的园子
阅读(695)
评论(0)
推荐(0)
上一页
1
2
3
4
5
6
···
10
下一页
公告