轩辕十四

探索科技与创新的个人博客

在 C 语言中,union 常被翻译为“联合”或者“联合体”。它和 struct 一样都可以声明多个成员,但两者的内存模型并不相同。union 的关键不在于“同时拥有多个成员”,而在于多个成员共用同一块内存

因此,union 更适合用在内存复用底层数据解释这类场景中。

阅读全文 »

前五篇一直沿着同一条主线推进:先把任务说清楚,再让输出更稳定,再定义输入输出接口,再把复杂任务拆成流程,最后开始从工具和上下文的角度理解系统。继续往下,会遇到另一个容易被低估的问题:一个 Prompt 即使已经能跑通,也不代表它真的可上线、可维护、可长期使用。

在 Prompt Injection、对抗性输入、测试集、回归比较和迭代方法这一部分中,可以看到:Prompt 已经不能再被看成一次性聊天内容,而更像是一种需要持续维护的系统资产

阅读全文 »

前四篇一直沿着同一条主线推进:先把任务说清楚,再把输出收窄,再把返回结构定义清楚,再学会把复杂任务拆成流程。继续往下,会遇到一个新的问题:当模型不只是回答问题,而是要调用工具、读取上下文、访问外部知识、在多个步骤里持续动作时,Prompt 还只是“写一句话”吗?

在 Function Calling、AI Workflows、AI Agents、Context Engineering 和 RAG 这些内容中,可以看到:Prompt 已经不只是输入设计,也不只是接口设计,而是在逐渐变成一种系统上下文设计能力

阅读全文 »

前三篇分别在解决三个问题:第一,怎么把任务说清楚;第二,怎么让结果更稳定;第三,怎么把行为边界和输出契约定义清楚。继续往下,会遇到第四个问题:如果任务本身就不是单步能完成的,那么一个 Prompt 写得再完整,是不是仍然不够?

Chain-of-Thought(CoT)和 Prompt Chaining 这一部分说明了一个问题:很多 AI 应用的问题,不是 Prompt 写得不够精致,而是模型在一次输出里同时承担了过多职责:既要理解任务,又要提取信息,又要判断优先级,还要组织结果。任务一旦变复杂,单个 Prompt 的可控性就会快速下降。

阅读全文 »

前两篇分别讨论了两件事:第一,Prompt 不是聊天技巧,而是结构化输入设计;第二,想让模型真正接入系统,就必须让输出更稳定。继续往下,会遇到第三个问题:如果目标不只是“答得差不多”,而是“行为边界清楚、输出结构稳定、结果能被程序消费”,Prompt 还需要向什么方向推进?

在 system prompt、角色结构、Function Calling(工具调用)和 JSON Schema 这一部分中,可以看到:Prompt 已经不再只是“提问方式”,而更像一层写给模型的接口定义

阅读全文 »

上一篇的核心结论是:Prompt 不是聊天技巧,而是结构化输入设计。这个视角解决了“怎样把任务说清楚”的问题,但当模型真正接入系统之后,还会遇到第二个问题:任务已经说明清楚,输出为什么仍然不稳定?

很多 Prompt 不是完全不可用,而是只能“偶尔答对”。对于 AI 应用工程来说,这种状态距离可上线仍然很远。真正需要的不是某一次回答足够惊艳,而是同类输入下,模型能够持续给出同类结果。

阅读全文 »

如果把大语言模型当成一个聊天对象,Prompt 的学习方向就很容易偏向“怎么说更像咒语”,而忽略“怎么让结果更稳定、更可控”。在 AI 应用开发场景里,Prompt 更适合被理解为一种接口设计能力,也可以把它视为一种写给模型的接口协议

这篇文章聚焦 Prompt 最基础的一层:模型设置、基本概念、提示词要素、通用技巧,以及它们为什么共同指向一件事——Prompt 不是提问技巧,而是结构化表达能力。

阅读全文 »

前言

队列(Queue)是一种遵循先进先出(FIFO,First In First Out)原则的线性数据结构。在 iOS 开发中,我们经常需要使用队列来处理各种场景,比如:任务调度、消息队列、事件处理等。

在上一篇文章《数据结构:循环数组详解》中,我们详细介绍了循环数组的原理。本文将基于实际项目中的代码,深入对比循环数组实现的队列链表实现的队列这两种方案,帮助你在实际开发中做出正确的选择。

阅读全文 »

什么是循环数组

循环数组(Circular Array),也称为环形数组或环形缓冲区(Ring Buffer),是一种特殊的数组结构。它在逻辑上将数组的首尾相连,形成一个环形结构。当数组索引到达末尾时,会自动回到数组的开头,实现循环访问。

循环数组的核心思想是:通过取模运算,让索引在固定范围内循环

为什么需要循环数组?

在传统的线性数组中,当我们需要在数组头部插入或删除元素时,需要移动大量元素,时间复杂度为 O(n)。而循环数组通过维护头尾指针,可以高效地在两端进行操作,实现 O(1) 的时间复杂度。

阅读全文 »

什么是 MMap

MMap(Memory Mapping)是一种内存映射技术,它允许将文件或其他对象映射到进程的地址空间。在 iOS 开发中,mmap 是一个强大的系统调用,能够将磁盘文件的内容直接映射到内存地址空间,使得对文件的读写操作可以像访问内存一样简单高效。

与传统的文件 I/O(通过 read()/write() 系统调用)不同,mmap 通过虚拟内存机制,让应用程序可以像访问数组一样访问文件内容,操作系统会自动处理磁盘和内存之间的数据传输。

核心特点

  • 零拷贝:数据不需要在用户空间和内核空间之间复制
  • 延迟加载:只有真正访问数据时才从磁盘加载(页面调度)
  • 共享内存:多个进程可以映射同一文件实现进程间通信
  • 高效访问:随机访问文件时性能更优
阅读全文 »
0%