生态第三方包

言容:容器与集合

言容 1.0 的有界容器、稳定优先队列、LRU 缓存与受限集合算法。

言容(yanxu-collections)是纯言序实现的通用容器与集合算法库。稳定版 1.0.0 为容器、批量算法和回调建立了明确的顺序契约、无异常结果与资源预算。

版本与安装

项目稳定值
包名言容
版本 / 公开标签1.0.0 / v1.0.0
最低言序1.1.6
依赖
构建目标字节码
yanbao add 言容 \
  --git https://github.com/yanxulang/yanxu-collections.git \
  --rev v1.0.0 \
  --version '^1.0'
[依赖]
言容 = { git = "https://github.com/yanxulang/yanxu-collections.git", 修订 = "v1.0.0", 版 = "^1.0" }

提交生成的 言序.lock,以固定标签解析出的修订与内容校验。

核心能力:选择容器

容器主要入口顺序与用途
栈()压入弹出尝试弹出查看后进先出
队列()入队出队尝试出队队首先进先出
双端队列()加首加尾移首移尾两端操作,快照按首到尾
有序集合()加入删除含有转列去重并保留首次加入顺序
优先队列()加入取出项转项列数值越小越优先,同级保持加入顺序
最近最少使用缓存(容量)写入读取查看尝试读取固定容量,读取触碰、查看不触碰

稳定优先队列

「包:言容」 言容;

 待办  言容.优先队列();
待办.限制为100);
待办.加入「常规任务」10
    .加入「紧急任务甲」1
    .加入「紧急任务乙」1);

 下一项: 待办.取出项();
 下一项【「值」】;
 下一项【「优先级」】;

输出的第一项是“紧急任务甲”。取出项返回值和优先级,取出只返回值。

LRU 缓存

 缓存  言容.最近最少使用缓存2);
缓存.写入「甲」1).写入「乙」2);
缓存.读取「甲」);          # 命中并触碰甲
缓存.写入「丙」3);       # 淘汰乙

 缓存.含有「乙」);       # 假
 缓存.键列();             # 从最少使用到最近使用

旧式 读取在缺失时返回空。若缓存允许保存真实空值,应使用 尝试读取或不触碰顺序的 尝试查看,并读取结果中的成功字段。

容量和无异常操作

栈、队列、双端队列、有序集合和优先队列默认最多保存 100000 项,可以按实例收紧:

 事件队  言容.队列();
事件队.限制为256);

 结果: 事件队.尝试出队();
 结果【「成功」
 结果【「值」】;
否则
 结果【「错误」】【「代码」】;

上限必须为正整数,不能超过库硬上限,也不能低于当前项目数。超限加入会在修改容器前以 YANRONG_LIMIT失败。

集合与列算法

 数值先于(甲:,乙:):
 (甲 小于 乙);


 来源:<>52321】;

 言容.去重(来源);
 言容.并集(来源,【82】);
 言容.对称差(【12】,【23】);
 言容.窗口(来源,3);
 言容.频次(来源);
 言容.稳定排序(来源,数值先于);

还提供 交集差集分块压平一级拉链拉链全部划分分组旋转。所有算法返回新的外层列,不改写输入;分组和频次按键或值首次出现顺序输出。

每个批量算法都有同名的“受限”入口,最后一个参数为限制典:

 限制: {
    「最大输入项」200
    「最大输出项」1000
    「最大比较次数」4000
};

 言容.窗口受限(来源,3,限制);

默认预算为 1024 个输入项、100000 个输出项目和 8192 次通用相等比较。窗口、分块、拉链和分组生成的子列或记录也计入输出预算。

错误、权限与安全边界

稳定错误前缀为 YANRONG_。常见代码包括:

代码含义
YANRONG_EMPTY从空容器读取或移出
YANRONG_NOT_FOUND缓存键不存在
YANRONG_LIMIT容量、输入、输出或比较预算耗尽
YANRONG_LIMIT_CONFIG限制配置不合法
YANRONG_CAPACITYLRU 容量不合法
YANRONG_PRIORITY优先级超出安全数值范围
YANRONG_CALLBACK / YANRONG_ORDER回调返回类型或排序关系不合法

捕获错误后用 错误详情取代码,不要比较中文消息。言容无第三方依赖,不申请文件、网络、监听、环境、进程或原生扩展权限。

已知限制

  • 通用相等使用言序值相等语义,不依赖哈希;有序集合、LRU、去重、分组和频次在大量互异值下最坏为二次时间。
  • 快照和算法结果只复制外层列,复合项目仍是浅引用;需要隔离可变敏感对象时由调用方先复制或冻结。
  • 通用比较的可配置硬上限为 16384 次;大型可信数据也应优先分批,而不是盲目提高预算。
  • 排序比较器必须返回逻辑值、不可令值先于自身,也不可同时令甲先于乙且乙先于甲;库不能证明任意回调的传递性或纯度。
  • 单实例容器是内存对象,不提供持久化、跨进程同步或并发协调。

项目链接