LazyLLM黑科技 | 继承就能自动注册?元类注册机制深度解析

LazyLLM自定义Reader组件:统一处理多格式文档的工程实践 文档解析是数据处理中的基础环节,涉及HTML、PDF等多种格式的文本提取与结构化处理。通过抽象统一的接口设计,开发者可以避免为每种格式重复编写解析代码,显著提升开发效率。以Python生态为例,BeautifulSoup、pdfplumber等库为不同格式提供了底层支持,而自定义Reader组件则在此基础上构建了标准化的处理流程。这种架构在金融文档分析、法律文书处理等场景中具有重要价值,能有效解决多源异构数据的整合难题。LazyLLM框架通过注册表机制和插件系统,实现了文档处理流程的高度可扩展性,例如新增E 阅读详情


一、问题:模块扩展与注册

在 LLM 工程里,功能一旦开始往上叠,模块数量几乎是不可避免地往上涨。这时候,真正摆在你面前的,不是“还能不能加功能”,而是——这些模块到底怎么统一管理。问题通常会从两个方向同时冒出来:

  • 对内:框架内部的模块注册方式各不相同,前期还能忍,越往后越难维护、越难梳理

  • 对外:外部模块没法直接接进来,往往还得额外写注册代码、维护注册表,注册成本越来越高

这两类问题看起来不一样,本质却是同一件事:框架缺少一套合理的注册机制,无法让模块在体系内自然扩展。

如果不早点把这件事想清楚,模块加得越多,系统就越容易失控。


二、难点:统一且易扩展

真要动手设计一套注册机制时,难点往往很快就会浮现出来:

  • 很难用同一种方式去管理框架内部类型各不相同的模块,注册逻辑一多,就开始各走各的路

  • 新模块一接进来,老模块却被迫“感知”到变化,甚至影响原有用法

  • 注册成本始终降不下来:即便已经有了注册机制,仍然需要手写注册代码、维护注册表和扩展逻辑

这些问题叠加在一起,很容易把“扩展能力”变成系统长期演进中的负担。


三、LazyLLM 的注册机制

针对这些难点,LazyLLM 选择了一条更干脆的路:模块在定义时自动完成注册,不需要再做任何额外操作。

无论是类模块还是函数模块,底层都走同一套自动注册逻辑,所有模块统一纳入同一个命名空间进行管理。整体机制可以概括为两种模式:“继承即注册”和“注册即继承”。

  • 类模块:继承即注册

定义类时,只要继承对应的能力基类,就会在定义阶段自动注册到全局注册表中。

同时,类会继承基类的命名分组,该分组下的所有模块都会自动获得基类提供的能力。

  • 函数模块:注册即继承

定义函数时,只需使用 @xxx_register 装饰器,就会被自动包装为类对象,并根据注册类型,继承相应基类的能力。

通过这种方式,你不需要手写任何注册逻辑,也不需要手动维护注册表,就能把模块自然地接入框架。在这种注册机制下,模块之间只共享上级命名空间(例如 lazyllm.launcher ),注册新模块,本质上只是往命名空间里新增一个 key-value,不会影响其他模块的感知和使用。

模块完成自动注册后,统一通过 lazyllm.xxx.yyy 的形式访问,接口保持一致,使用方式不变,用户体验也始终统一。


四、用户视角:如何使用注册机制

这一章将从用户视角出发,带你一步步了解 LazyLLM 的注册机制:从如何访问已经注册到框架中的模块,到如何基于现有机制扩展新的类模块和函数模块。通过这些具体用法,你会直观感受到什么是“ lazy 地注册”,以及 LazyLLM 注册机制在扩展性和使用体验上的优势。

4.1 访问已注册的模块

A. 访问方式

对于已经注册到框架中的模块,LazyLLM 提供了多种访问方式,让你在使用时既灵活又省心。

1️⃣基于属性的访问(dot access)

LazyLLM 支持使用属性访问代替字典索引,lazyllm.launchers.k8slauncher 和 lazyllm.launchers[‘k8slauncher’] 等价,这样可以保持访问形式的一致性。

2️⃣大小写不敏感的 key 匹配

访问模块时,key 对大小写不敏感。比如 lazyllm.launchers.k8s、lazyllm.launchers.K8s 和 lazyllm.launchers.K8S 在语义上完全一致,不再要求你精确记住注册时的大小写细节。需要注意的是,注册时使用的 key 仍然是机制内部的唯一标识,并不会因为访问方式不同而发生变化。

3️⃣允许省略能力后缀

对于某些类名以能力后缀结尾的类(比如前面提到的 lazyllm.launchers.k8slauncher),可以在访问时省略能力后缀,简写为 lazyllm.launchers.k8s,框架在查找时会自动补齐后缀,减少冗余输入。

4️⃣支持默认 key

可以显式地为某个注册分组设置默认 key,用来指定省略 key 时选择的实现类,示例如下。设置默认key只会影响访问时的 key 和解析结果,不会改变实际注册的 kv。

ld = LazyDict(name="ld", ALd=int, BLd=str)
ld.set_default("ALd")
ld.default      # -> int(示意)

5️⃣函数式调用默认实现

当某个能力分组只有一个实现,或者已经设置了 default key 后,可以直接把分组当作函数来调用。

例如 lazyllm.launchers(**kwargs),等价于调用该分组下的默认实现 lazyllm.launchers.k8s(**kwargs)(此处k8s仅为文档示例,并非框架中的真实默认实现)。

B. 目前支持的能力基类

除了 launchers 类型之外,LazyLLM 还支持多种能力类的继承,涵盖模型、调度器、调优、存储以及其他工具能力。

如图所示,你可以直接打印某个组名,快速查看该命名空间下当前已经注册的所有类及其子类结构。这在理解框架已有能力、或者确认某个模块是否已经被正确注册时,非常直观、也非常实用。

在能力组织上,LazyLLM 采用了两级能力体系:

  • 一级能力:例如 online、launcher、deploy 等,用于描述能力的大类

  • 二级能力:目前主要存在于 online 分组下,例如 chat、embed 等,用于进一步细分具体能力形态

通过 dot access,可以自然地访问这些多级注册的类结构,例如从一级能力一路定位到具体实现类。

在此基础上,LazyLLM 为不同能力类型提供了对应的基类,用户在扩展新模块时,只需继承相应基类即可自动完成注册。

目前支持的基类包括:

C. 目前支持的注册函数

除了能力基类之外,LazyLLM 目前还提供三个装饰器函数,用来把函数模块注册为类对象并加入注册机制,具体描述如下:

4.2 扩展新的类

A. 继承规则

如果要构造自己的类并注册到 LazyLLM 框架中,只需要继承4.1章节中提到的能力基类,就能够实现自动继承和统一访问。为了完成这个继承过程,需要遵守以下规则:

  • 通过类名约定创建能力分组

如果你要定义一个能力分组的基类,类名需要满足LazyLLM + 〈GroupName〉 + Base 的命名约定。一旦满足这个约定,框架内部就会自动新增一个 〈GroupName〉 能力分组,并且可以通过lazyllm.〈GroupName〉 直接访问。

  • 显式跳过某个基类的注册

在注册能力基类时,可以通过设置 __lazyllm_registry_disable__ ,主动跳过该类的注册流程。这样,这个类不会被写入注册表,也无法通过 lazyllm.〈GroupName〉 访问,但完全不影响它被继承、复用或作为能力基类存在。

  • 解耦类名与访问key

除了依赖类名生成能力分组,还可以通过 __lazyllm_registry_key__ 显式指定注册 key。这样可以把“类叫什么”和“用户怎么访问”这两件事分开处理,同时不影响原有的继承关系。

下面的示例把这三条规则放在一起,展示了一个更真实的使用场景:

OnlineMultiModalBase 用来承载所有多模态相关的通用逻辑(例如 forward、load_images 等),但它本身并不希望成为一层可直接访问的能力分组,因此设置 __lazyllm_registry_disable_=True,只作为抽象基类存在。

而 LazyLLMOnlineSTTModuleBase 在继承多模态基类通用能力的同时,需要作为独立的能力层级对外暴露,于是通过 __lazyllm_registry_key__ = LLMType.STT 指定注册 key。这样,它的所有子类都会被统一注册到 lazyllm.online.stt 命名空间下,并自动具备多模态基类提供的能力。

通过这种方式,你可以精确控制哪些类参与注册、注册到哪里、如何被访问,而继承关系和能力复用本身,始终保持清晰、干净。

B. 命名规则

在定义具体能力类时,除了完成继承之外,还需要遵守一套明确的命名约定,框架才能正确完成自动注册和解析。

  • 类名约定决定注册位置

具体能力类的类名需要满足 〈Supplier〉+〈GroupName〉 的命名规则。一旦满足该约定,类就会被自动注册到对应基类的命名空间下,并以类名作为注册 key。在实际访问时,可以直接使用 〈Supplier〉 作为 key,框架会在内部自动补齐〈GroupName〉后缀完成匹配。

  • 统一使用驼峰命名法

为了与 Python 生态保持一致,也为了统一开发者的认知和习惯,所有能力类的类名都应采用驼峰命名法(CamelCase)。

通过这套命名规则,LazyLLM 可以在不引入额外配置的情况下,同时保证注册行为可预测、访问方式简洁,也让代码结构本身就“说明了一切”。

C. 代码示例

以下为能力类的定义样例,定义后可以通过 lazyllm.online.chat.qwen 或 lazyllm.online.chat.qwenchat 访问该类,访问方法和框架内置的模块完全相同,实现无感、无额外代码的统一注册。

4.3 扩展新的函数

A. 注册规则

如果要注册新的函数到框架里,需要执行以下两个步骤:

1️⃣创建新的能力分组

LazyLLM 里支持两种创建的方式:

a.定义类时继承 metaclass=LazyLLMRegisterMetaClass,该类的类名/显式设置的 registry key 就会被自动识别,并注册为新的能力分组;

b.使用 Register.new_group(‘group_name’),直接创建一个新的能力分组并注册到框架内。

2️⃣【可选】定义新的register对象

指定需要继承的能力基类,设置 rewrite 函数,用新的函数覆写基类的 rewrite 函数。比如,指定 rewrite 函数为 cmd,就可以使用 @register.cmd 对函数进行装饰,从而重写基类的 cmd 函数。

3️⃣根据能力选择注册器并注册到某个能力分组内

使用 @xxx_register(‘group_name’) 装饰器把函数包装为类对象,并把函数名和函数体作为 key-value 对注册到 group_name 能力分组下,这样就可以通过 lazyllm.group_name.func_name 访问该函数。

B. 代码示例

如图所示,示例中首先构造了一个 register 实例,并指定 rewrite 函数为 apply 和 cmd 。随后,通过 component_register.new_group(“testgroup”) 创建了新的能力分组 testgroup。

  • 对于 myfunc:

使用 @component_register 进行装饰,函数会被注册到 testgroup 命名空间下,继承 ComponentBase 类,默认覆写 apply 函数(未显式指定时,默认覆盖rewrite_func[0]),并自动获得 launcher 提供的跨节点调度能力。

  • 对于 myfunc2:

由于使用了 @component_register.cmd,会显式覆写基类中的 cmd 函数,实现不同的执行逻辑。

在使用时,可以直接通过:lazyllm.testgroup.myfunc()(*args) 来调用函数;同时也支持在括号中传入指定的 launcher,从而决定函数的运行位置,例如本地执行(empty)或提交到 Slurm 集群等。


五、技术剖析:架构与源码细节

最后,我们来一起深入 LazyLLM 注册机制的底层技术,了解它是如何设计和实现的。

5.1 架构设计

LazyLLM 的注册系统由三层组成,自下而上分别为:

1️⃣LazyDict:

注册结果的访问层,负责解决“注册之后,用户如何访问和调用”的问题。

2️⃣LazyLLMRegisterMetaClass:

注册逻辑的核心控制层,负责决定“类在定义时是否被注册、注册到哪里、以什么形式暴露”。

3️⃣Register 装饰器:

函数到类的适配层,负责将“函数形式的能力”统一纳入基于类的注册体系。

这三层各司其职、相互配合:前两层共同完成类模块的自动注册;在此基础上,Register 装饰器进一步解决了函数模块的接入问题,让函数也能够享有与类一致的注册能力。

最终效果是:不论能力最初以类还是函数的形式存在,都可以通过同一套注册与访问机制被框架统一管理和使用。

5.2 访问层:LazyDict

A. 职责边界

LazyDict 是注册机制中直接面向使用者的访问层。所有通过注册机制生成的分组与实现,最终都会以 LazyDict 的形式对外暴露。它不参与注册决策,也不决定实现类的归属关系,职责仅限于:

  • 作为某个 Base 类对应的注册容器

  • 维护注册结果与访问行为之间的映射关系

在系统内部,LazyDict 的结构可抽象表示为:

LazyDict(
    impl_a -> ClassA,
    impl_b -> ClassB,
)

该对象随后被直接绑定到 lazyllm.〈group〉,作为该分组的统一访问入口。

B. 核心代码

以下为 LazyDict 的部分核心代码,可以看到 _match 函数中允许通过 default 匹配默认 key,并通过拼接 key 和 group name 实现省略能力后缀访问的能力,同时兼容多种调用方式并且对大小写不敏感。

5.3 核心控制层:LazyLLMRegisterMetaClass

A. 职责边界

LazyLLM 的类注册行为由统一的 metaclass 控制。所有参与注册的类,都会在定义阶段经过该元类的处理,从而决定其是否被纳入注册体系、归属到哪个能力分组,以及是否对外暴露访问入口。

在整体架构中,LazyLLMRegisterMetaClass 的职责是:

  • 解析类的继承结构以确定其对应的分组路径与访问入口

  • 将可注册的实现类组织到对应的能力分组中

  • 为后续的统一访问入口生成必要的注册信息

B. 核心代码

以下为 LazyLLMRegisterMetaClass 类的核心代码,处理逻辑主要分为三层,对应4.2章节中的继承规则:

1️⃣是否跳过注册

首先判断类是否定义了 __lazyllm_registry_disable__。如果该属性被设置为 True,当前类会被直接跳过注册流程:不会写入父类分组,也不会出现在访问入口中,但不影响该类被继承或作为能力基类复用。

2️⃣是否定义新的能力分组

接着判断类名是否符合 LazyLLM〈xxx〉Base 的命名规则。如果符合,框架会自动提取中间的 〈xxx〉,创建对应的能力分组,并绑定到 lazyllm.〈group〉 命名空间下。该基类的所有子类,都会被统一注册到同一个 LazyDict 中。

3️⃣是否进入已有分组并细分层级

最后判断类是否具有 _lazy_llm_group 属性(即是否存在可注册的父类)。在此基础上,如果类中定义了 __lazyllm_registry_key__,则会以该值作为新一层的 group name。同时,注册流程末尾还预留了一个后处理钩子,允许类在注册完成后执行自定义逻辑,用于补充通用行为。

5.4 适配层:Register

A. 职责边界

LazyLLM 的注册体系是以“类”为核心构建的,但在真实使用中,并不是所有能力都适合用类来表达。很多时候,一个能力本质上就是“一段可调用的逻辑”,用函数来写反而更自然。

为了不让这两种开发方式割裂开来,LazyLLM 提供了 Register 装饰器,专门用来把函数形式的能力统一纳入同一套基于类的注册机制中。

Register 装饰器的职责在于:

  • 为函数构造一个等价的、可注册的类表示

  • 使函数能力能够复用基于元类的注册流程

  • 保证函数与类在注册结果和访问方式上的一致性

B. 核心代码

下面给出的 Register 类是函数注册机制的核心实现。

其中,new_group 函数在前文已经提到,用于创建新的能力分组。它在内部做的事情其实很直接:基于 python 的 type() 动态建类机制,动态创建一个继承自 baseclass 的能力基类,并命名为 LazyLLM{name}Base。由于该类满足注册规则,name 这个能力分组也会随之自动注册到框架中。

真正的关键逻辑集中在 _wrap 函数中,整体流程可以拆解为几个步骤:

1️⃣标准化类名

首先对传入的类名进行规范化处理,去掉 LazyLLM 和 Base 等前后缀,得到统一的分组标识。

2️⃣定位能力基类

接着调用 _get_base_cls_from_registry,找到当前能力分组对应的基类,用于后续继承。

3️⃣确定覆写目标函数

根据传入的 rewrite_func 参数,判断当前注册对象需要覆写基类中的哪个函数(例如 apply 或 cmd )。

4️⃣动态生成注册类并完成绑定

最后,在 impl 函数中动态生成一个用于注册的“空壳类”,完成注册流程,并将当前函数绑定到指定的 rewrite_func 上。

通过这一适配层,LazyLLM 实现了“类与函数并行接入、统一管理”的注册模型。

前文提到的几种注册器,就是通过构造 Register 实例实现的:

component_register = lazyllm.Register(ComponentBase, ['apply', 'cmd'])
module_register = lazyllm.Register(ModuleRegistryBase, ['forward'])
fc_register = lazyllm.Register(ModuleTool, ['apply'], default_group='tool')

六、写在最后

最后,让我们来一起回顾一下 LazyLLM 的注册机制。

通过 LazyDict 与 LazyLLMRegisterMetaClass 的协同设计,无论注册对象最初是类还是函数,最终都会走同一套注册逻辑、进入同一个注册表,并统一纳入相同的命名空间进行管理。在注册的视角下,这个过程本质上只是向命名空间中新增一个新的 key–value 对——只要 key 不冲突,新增模块就不会影响任何已存在的模块,实现了完全独立、可叠加的扩展方式。

对使用者来说,所有模块的访问方式始终保持一致,大幅降低了理解和使用成本;

对开发者来说,注册一个自己的模块也变得非常轻量——不需要额外流程,不需要手动维护注册表,只要遵守约定,底层机制就会自动把事情处理好。

在后续的文章中,我们还会继续拆解 LazyLLM 里其他“lazy”的小设计。当系统规模真正开始扩展时,你会发现,这些看似不起眼的机制,往往才是最省时间、也最少踩坑的那一部分。


欢迎升级体验 LazyLLM 最新版本,请大家去github上点一个免费的star,支持一下~

LazyLLM项目仓库链接🔗:


更多技术内容,欢迎移步 gzh “LazyLLM" 讨论!

AI科技热点日报 | 2026年11月06日 2026年11月6日,AI领域迎来三大突破:OpenAI发布网络安全专用模型GPT-6 Cyber,评测得分48.5%,越界行为降至1%以下;Anthropic推出Claude个人财务功能,支持通过Plaid只读连接银行账户;Meta则让Muse智能体实现实时语音对话与表情同步。与此同时,美国警告工业制冷系统遭持续网络攻击,谷歌宣布在怀俄明州投资170亿美元建数据中心,但选举后政策不确定性导致AI产业链震荡,纳斯达克大跌4%。国内进博会开幕,480款全球首发新品亮相,乌镇峰会倡导开源开放,但智能体互联互通仍 阅读详情

相关推荐

AI科技热点日报 | 2026年11月3日

2026年11月3日,人工智能领域迎来政策与技术双重突破。国家发改委系统部署“人工智能+”行动,构建“点、线、面”三层体系,推动智能工厂、中试基地建设,并启动世界人工智能合作组织实体化,强化就业替代风险预警。国际方面,Anthropic首次在招股书披露“递归自我改进”(RSI)的安全风险。技术上,GPT-6.2 Astra或已进入灰度测试,MIT提出“权重空间编程”,仅微调0.016%权重即显著提升模型性能。资本层面,摩根士丹利预估未来十年AI支出达10万亿至15万亿美元,Meta、Oracle大举融资,M

刘一说的IT专栏 1179

LazyLLM项目中的流式输出与中间日志实践指南

在当今的AI对话系统开发中,流式输出和中间日志记录是提升用户体验和开发效率的两大关键特性。LazyLLM项目通过创新的设计思路,巧妙地解决了传统方案中的技术难题,为开发者提供了简单易用的实现方式。本文将深入解析LazyLLM中流式输出和中间日志的实现原理与最佳实践。 ## 流式输出基础实现 ### 准备工作:定义功能函数 首先我们需要定义一些可供AI调用的功能函数。以下是一个天气查询功能的实

gitblog_00598的博客 866

基于任务的后勤智能体:三段构建与演进设计探究

这是系统智能化的核心难点。例如,对于一个“加强连级滩头阵地防御”子任务,系统会根据防御时长、预期敌军攻击强度、地形等因素,计算出所需的弹药(不同弹种的具体数量)、构筑工事的器材、人员的给养和饮水量、以及医疗救护的药品和血包数量。首先进行分词、词性标注等基础处理,然后利用在军事语料库上训练的命名实体识别(NER)模型,提取出关键实体,如任务类型(“夺控作战”)、作战对象(“Y岛”)、时间约束(“D日H时”、“24小时内”)、成功标准(“建立稳固滩头阵地”)、保障重点(“弹药充足”、“及时救治”)等。

weixin_49042442的博客 1088

省级科技计划项目申报实操:拆解启明知识产权“技财法”全链协同支撑逻辑

针对企业申报省级科技计划项目的痛点,本文拆解启明知识产权如何通过“技财法”全链协同提供规划与申报服务。结合其集团化架构、自有会计师事务所及新产品鉴定中心资质,解析其在研发费用归集、技术先进性评价及合规风控方面的核心优势,为科创企业提供可执行的选型参考。

xiaoheiba_的博客 178

全球、中国各省市县等行政区划(含十段线)shape及geosjon数据免费下载

免费下载全球、中国各省市县等行政区划(含十段线)shape及geosjon数据

mhf403445651的博客 3458

UE4 Instanced Mesh 半透明渲染顺序不对解决

以绿色方块为Instanced Mesh为例。 正确的半透应该是这样的: 这是一般蓝图Actor方块,其半透是正常的。 然而Instanced Mesh因为过多,UE4不给你缓存正确的渲染顺序。所以,在不改代码的情况下,想解决Instanced Mesh半透问题,是不可能的。不正确的半透如下: 注意到错误发生在Instanced Mesh的方块与方块之间。 但我就是要解决,...

qq_41524721的博客 5569

胜宏科技泰国A1厂房满产,高端PCB扩产延伸至越南

胜宏科技泰国A1厂房满产,高端PCB扩产延伸至越南

qianliuchuhai的博客 197

微生物16S数据上传NCBI的SRA库

本篇内容仅包括:俺自己的实验收集了淡水、淡水沉积物、海水、海草附着微生物样品,测序所得的Fastq格式数据,在文章投稿发表时被要求数据需上传NCBI的SRA库,得到一个PRJNA2347899这样子的IDs。仅解决了这个上传过程!

Xf_Niu的博客 7432

英语:对新科技新技术命名,词根拼接 + 借用旧词 + 缩写泛滥

英语术语的精准,不在单词本身,而在配套的学术定义、标准文档。单词本身常常是比喻、借用、拼接,字面含义和技术实质是脱节的。举典型例子:virus(计算机病毒):只是类比生物病毒,代码本身没有生命;单词字面自带生物隐喻,容易误导外行。cloud computing:“云” 只是隐喻,和大气云无关。bus(总线):计算机总线,和公交车没有关系。造词门槛低,创新速度快。一个新概念出来,直接抓一个现成名词挪用或者拼两个词根就能用,不需要斟酌语义搭配。

u014770434的博客 267

智能网联汽车电子电气架构(下)

从资产的表现形式, 可以分为数据、 软件、 硬件、 服务等, 而从需要保护的业务过程和活动、 所关注信息的角度, 资产类型可包括基于 ECU 的控制功能、 与特定车辆相关的信息、 车辆状态信息、 用户信息、 配置信息、 特定的软件、 内容等。面向新一代 EEA 的安全需求, 基于芯片提供的 OTP, 或SHE\HSM 的安全存储能力, 实现系统关键数据(身份、 密钥等关键信息) 的安全存储, 保证系统的关键数据不被盗取、 破坏、 改写。结合攻击者的动机与识别出的系统用例, 分析对汽车电子系统可能的攻击。

m0_58838529的博客 1470

EndNote导入文献出现带有大括号{}乱码的解决办法

进入word中的Endnote工具栏——Bibliography Preferences(位于Bibliography区块的右下角),就是那个输入杂志名的小三角形,在Temporary citation delimiters处修改变量的默认符号。将默认的大括号{}修改为文章中不回使用到的符号。原因:因为Endnote插入的参考文献在Word中的代码就是以大括号隔开的,当文章中出现了该符号,endnote就会自动比对Library中的书目,而此时endnote出现错误。

程序员,他们想的是什么?他们想的永远都是技术,他们崇尚的也永远都是技术。 4万+

香港电讯河套区创新科技中心暨AI机楼揭幕,以网络基建助力北部都会区发展

香港电讯位处河套港深创科园的创新科技中心暨AI机楼正式开幕,借此进一步以网络基建支持香港创科及产业发展,并为日后大湾区数据在河套区流通作好准备;同时为北部都会区以大学城、创科、产业和宜居宜业宜游为重点的发展布局,提供坚实支撑。

HKT香港电讯的博客 96

【QGIS】软件下载安装及GIS4WRF插件使用

【QGIS】软件下载安装及GIS4WRF插件使用

WW、forever的博客 1799

净利润高增与AI多点落地,宇信科技三季报的金融IT转型信号

2026年Q3季报显示,宇信科技前三季度实现净利润3.74亿元,同比增长32.80%;归母净利润3.79亿元,同比增长35.93%;营业收入19.42亿元。

u013368359的博客 228

LPDDR5 学习笔记01:功能概述

LPDDR5/LPDDR5X SDRAM设备采用8/16DQ通道架构,支持2Gb-32Gb容量。通过CK命令时钟和更快的WCK数据时钟协同工作,7个CA引脚传输控制信息,支持2:1或4:1的WCK:CK比例。设备提供BG/8B/16B三种存储模式选择,分别支持不同数据速率(最高8.533Gbps)和突发长度。采用0.5V VDDQ电源电压,实现高速双倍数据速率传输,并通过差分WCK时钟完成数据采样。读写采用突发访问机制,需先激活命令再执行读写操作。新型LPDDR5X仅支持BG和16B模式,优化了高速性能。

一只豌豆象的博客 2195

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

探秘优质 LED 智能海报屏厂家,解锁广告展示新科技

例如,传统 LED 屏安装极为繁琐,拆装成本居高不下,数据表明,一次大型活动中传统屏的安装和拆卸费用能占到总成本的 30%左右。与传统海报屏方案相比,其核心优势明显,“免安装、插电即用”解决了工程布线与结构搭建的烦恼,缩短了安装时间,提高了效率;公司的三折叠双面 LED 海报屏更是行业首创,无需安装,插电即用,左右展开变身超大全景屏,折叠后秒变双面独立屏,360°全方位吸睛。用户反馈也证明了其产品的价值,众多客户表示使用该公司的海报屏后,广告展示效果大幅提升,同时降低了使用成本和维护成本。

BrandonLEDscreen的博客 168

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

陪诊陪护系统:科技赋能温情守护,打造智慧养老新生态:SpringBoot + Uniapp 三端架构,用户端、师傅端、管理端一次讲透

本文详解一套同城上门维修系统的完整实现,基于SpringBoot+Uniapp+Vue技术栈,涵盖用户端、师傅端、管理端三端设计。重点解析订单流转、派单策略、现场加价防控、结算对账等核心业务难点,强调状态机统一管理与关键节点留痕。系统支持多端发布、可扩展至多城市与会员营销,适合家政、维修类项目开发者参考,具备高可用性与运营闭环能力。

juzige03的博客 116

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

从香港金融科技周看宇信科技:海外布局的三个着力点

香港金融科技周一向被视为金融科技出海的风向标。2026年展会期间,宇信科技与华为、阿曼信用与金融信息中心(Mala’a)、微众科技海外团队的密集交流,放在金融IT行业出海路径整体调整的背景下,其背后的逻辑值得拆解。

u013368359的博客 203

海外手写票据OCR怎么选?开灵科技、Google Document AI与百度智能云按原文译文对照、金额校验和人工复核对比

海外差旅报销里最难处理的票据,往往不是排版规范的电子发票,而是一张手写收据:当地文字、英文、印章、潦草数字混在一起,财务既要读懂商户和项目,又要判断金额是否算对。可准备泰文手写现金单、双语印刷发票和印章遮挡的收据各一张,让三种方案完成相同任务:识别票据类型、商户、币种、日期、明细和总额;以一张泰国手写现金销售单为例,识别结果按票据类型、卖方、手写明细、数量、单价、金额及总计组织,原文和中文并排显示。这类方案通常支持多语种识别、自动判断语种、原文中文对照,并处理手写体、表格、印章、签名及图像质量。

2509_91589461的博客 343

科技查新实务:查新报告适用场景与服务对象

本文梳理科技查新报告的基础作用、适用场景以及主要服务对象,可供科研管理人员、情报检索人员、项目负责人参考。

2301_76341903的博客 185

企业费控系统怎么选?开灵科技灵动报销、用友BIP与SAP Concur按对话填单、预算前控和成本中心分摊对比

该方案同时处理出差申请与补助、商旅预订及对账、发票管理、借款冲销、批量付款和回单、凭证生成、手机打印等环节。不同费控产品对以下费用的处理深度可能不同:私车公用按轨迹和里程计算补贴,出差补助按职级、城市与天数计算,商旅预订与月结账单需要和员工申请、费用标准对上。已经以BIP运行多组织预算、共享财务和总账的集团,把报销纳入原有主干,能让费用发生、预算执行、核算与经营分析使用同一套组织及科目口径。员工填单和财务退单耗时较多,且预算、付款、凭证和成本中心需要贯通时,可把开灵科技灵动报销的整条链路纳入测试范围;

2509_91589461的博客 21

南华期货30周年|科技赋能 研究铸基 从技术自研到投研产服一体化

截至2025年,南华研究院团队规模为44人,研究生及以上学历占比高达97%,年产出各类报告3000余份,其研究内容覆盖日度、周度、季度、年度报告及专题调研报告等多维度,信息来源包含产业调研数据、供需跟踪及期现结构监测,内容具备较强的完整性与实战参考价值,专业实力稳居行业前列。2012年开发增强型指数。1999年,行业进入清理整顿阶段,南华逆势而上,选择用技术筑牢根基,率先搭建早期电子化交易系统,融入投研数据与分析成果,以技术筑牢合规经营根基,让投研价值精准触达客户,也让公司在行业洗牌中稳稳站住了脚跟。

SHCXT的博客 206

财务审计调档怎样找到整笔业务的证据?开灵科技、金蝶发票云与用友BIP按凭证关联、审计包和借阅权限对比

实际使用中,财务还会遇到合同、邮件、OFD发票、PDF扫描件、表格和工程资料混在一起的情况。该方案的电子会计档案把记账凭证、原始单据、发票、银行回单、报销单与合同关联成业务证据网络。更有用的方式,是让合同号、供应商、业务单号、发票、凭证和银行流水形成可追踪关系;审计人员抽到一张付款凭证,财务往往能很快找到凭证扫描件,却还要继续翻合同、发票、付款申请、银行回单和验收记录。该方案把文件级密级、水印、借阅日志和审计包放在同一使用流程中,便于调取完整证据,也减少“为省事把整个财务共享盘开放给审计”的做法。

2509_91589461的博客 216

破解多平台数据不通!江浙沪跨境电商外贸业务私有化部署方案|任意门互动科技

作为Teable多维表格官方指定实施服务商,任意门互动科技面向江浙沪跨境电商企业,推出跨境电商与外贸业务私有化部署方案,发布双平台实施路径

2409_89957017的博客 365

起立科技解读:OLED透明拼接屏叙事墙的内容怎么策划

以起立科技为例,这家2013年成立于深圳宝安的源头厂家,旗下核心品牌RAKAH尼伽的OLED透明屏以RK-T55等55英寸机型为拼接单元,单屏1920×1080,支持N×M任意拼接与尺寸定制,可用于主题叙事墙、数字展厅等场景;OLED透明拼接屏做叙事墙,难点不在屏,而在内容:多块屏之间怎么分工、观众沿墙走一遍能记住什么、透明区留多少。建议项目方在方案阶段就确定"观众要走多久、看几章、记住哪三件事",这三问的答案,会直接决定屏数与排布方式。这三点叠加,意味着拼接墙的内容不能由单屏素材简单放大,必须重新设计。

起鸿OLED方案商 141

【研知有术论文发表】材料科学一区期刊,影响因子30+的纳米科技SCI,审稿严格但有效率

Nano-Micro Letters聚焦纳米或微米尺度结构及系统相关的科学、实验、工程、技术与应用研究。

PaperAccept的博客 151
上一篇: 从“会聊”到“会干活”:LazyLLM + Skills 实战指南
下一篇: LazyLLM黑科技 | 拒绝机翻,如何实现中英双语的API文档?
商汤万象开发者
博客等级 码龄2年 174粉丝 67原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值