当前位置: 首页 > news >正文

LangFlow技术深度解析:可视化编排LangChain应用的新范式 -(2)流编辑器系统

Flow Editor System | langflow-ai/langflow | DeepWiki

流编辑器系统

相关源文件

流编辑器系统是 Langflow 的核心交互式组件,允许用户直观地创建、编辑和管理 LLM 驱动的应用程序。它提供了一个直观的画布,用户可以在其中添加节点、将其与边缘连接并配置其属性以构建复杂的 LLM 工作流,而无需编写代码。有关为编辑器中的节点提供支持的更广泛的组件系统的信息,请参阅组件系统。

概述 架构

流编辑器系统构建在 ReactFlow 之上,并遵循基于组件的架构,状态管理由 Zustand 存储处理。

来源:来源/前端/src/pages/FlowPage/components/PageComponent/index.tsx src/frontend/src/stores/flowStore.ts 来源/前端/来源/商店/flowsManagerStore.ts

核心组件

GenericNode 组件

该组件是流编辑器的主要构建块,它使用统一的界面渲染所有节点,无论其类型如何。GenericNode

来源:src/frontend/src/CustomNodes/GenericNode/index.tsx

GenericNode 组件的主要功能:

  • 动态节点标头:显示节点名称、图标和状态指示器
  • 交互式输入/输出句柄:连接的输入参数和输出句柄
  • 可折叠界面:可以最小化以节省空间
  • 可自定义视图:支持显示/隐藏详细信息
  • Node Status Indicators(节点状态指示器):显示构建状态、验证错误等。
  • 工具栏:提供对特定于节点的作的快速访问
  • Tool Mode:代理工作流程中用作工具的节点的特殊模式

Node Toolbar 组件

NodeToolbarComponent 提供了一组丰富的作,用于作流中的节点。

来源:src/frontend/src/pages/FlowPage/components/nodeToolbarComponent/index.tsx

工具栏提供以下主要功能:

  • 代码编辑:打开可自定义节点的代码编辑器
  • 控件:通过模态界面配置节点参数
  • 冻结:保留节点状态并防止在流程执行期间进行更新
  • Tool Mode:在兼容节点的标准模式和工具模式之间切换
  • 组件管理:保存、复制、共享、下载组件
  • 文档:Access 组件文档
  • 视觉调整:最小化/扩展节点以管理画布空间
  • 编辑作:复制、粘贴和删除节点

流编辑器页面

Flow Editor Page (流编辑器页面) 是管理 ReactFlow 画布和所有交互处理的主要容器组件。

来源:来源/前端/src/pages/FlowPage/components/PageComponent/index.tsx

流编辑器页面提供:

  • 组件拖放:通过从侧边栏拖动将组件添加到画布
  • 连接管理:创建和验证组件之间的连接
  • 选择处理:多选、分组和作多个节点
  • 画布控件:缩放、平移和导航画布
  • 键盘快捷键:撤消/重做、复制/粘贴、删除和其他作
  • 流程构建:验证和准备要执行的流程

状态管理

流编辑器系统使用 Zustand 存储进行状态管理,其中两个主要存储处理流编辑的不同方面。

流存储

该 管理当前流的状态,包括节点、边缘和构建状态。flowStore

来源:src/frontend/src/stores/flowStore.ts

Flows Manager 商店

它管理多个流、撤消/重做功能的历史记录和流元数据。flowsManagerStore

来源:来源/前端/来源/商店/flowsManagerStore.ts

数据模型

流编辑器系统使用多个关键数据模型来表示流元素。

节点和边缘类型

来源:来源/前端/来源/类型/流/index.ts 来源/前端/src/types/api/index.ts

关键数据结构:

  • FlowType:表示包含元数据和内容的完整流
{name: string;id: string;data: ReactFlowJsonObject<AllNodeType, EdgeType> | null;description: string;endpoint_name?: string | null;is_component?: boolean;// ...additional metadata
}
  • NodeDataType:表示节点内的数据
{showNode?: boolean;type: string;node: APIClassType;id: string;output_types?: string[];buildStatus?: BuildStatus;
}
  • EdgeType:表示节点之间的连接
{id: string;source: string;target: string;sourceHandle: string; // JSON stringified sourceHandleTypetargetHandle: string; // JSON stringified targetHandleTypedata: EdgeDataType;
}
  • APIClassType:表示组件的 API 规范
{base_classes?: Array<string>;description: string;template: APITemplateType; // Map of input parametersdisplay_name: string;outputs?: Array<OutputFieldType>;// ...additional properties
}

用户交互流

将组件添加到 Canvas

来源:来源/前端/src/pages/FlowPage/components/PageComponent/index.tsx

连接节点

来源:src/frontend/src/stores/flowStore.ts 来源/前端/src/utils/reactflowUtils.ts

构建和运行流

来源:src/frontend/src/stores/flowStore.ts 来源/前端/src/utils/buildUtils.ts

节点配置和自定义

Flow Editor 提供了多种配置和自定义节点的方法:

工具栏作

Node Toolbar 提供对常见节点作的直接访问:

按钮

行动

描述

法典

打开代码编辑器

用于在节点中编辑自定义代码

控制

打开参数编辑器

用于配置节点参数

冻结

冻结节点状态

防止在流程执行期间进行更新

工具模式

切换工具模式

将节点转换为代理工具

更多

打开其他选项

提供扩展功能

来源:src/frontend/src/pages/FlowPage/components/nodeToolbarComponent/index.tsx

代码编辑器模态

代码编辑器模态允许编辑自定义组件的 Python 代码:

来源:src/frontend/src/modals/codeAreaModal/index.tsx

输入参数

每个节点可以有多个不同类型的输入参数:

参数类型

描述

连接支持

字符串

文本输入

可以连接或手动输入

数字输入

可以连接或手动输入

布尔

切换输入

可以连接或手动切换

列表

数组输入

可以连接或手动配置

字典

字典输入

可以连接或手动配置

文件

文件上传

可以连接或手动上传

法典

代码编辑器

可以连接或手动编辑

来源:来源/前端/src/types/api/index.ts

流程管理

Flow Editor System 提供了全面的流程管理功能:

保存和加载流

来源:src/frontend/src/stores/flowStore.ts 来源/前端/来源/商店/flowsManagerStore.ts

导出和导入流

来源:src/frontend/src/modals/exportModal/index.tsx

撤消/重做功能

来源:来源/前端/来源/商店/flowsManagerStore.ts

结论

Flow Editor System 是 Langflow 可视化开发体验的核心。它提供了一个丰富、直观的界面,用于通过拖放交互、可视化连接和可配置节点的组合来创建和作流。该系统由强大的架构提供支持,该架构将 ReactFlow 的画布功能与自定义组件和状态管理相结合,以创建无缝的开发体验。

本文档涵盖了构成 Flow Editor 系统的核心组件、数据模型、状态管理、用户交互和自定义选项。有关可在流程中使用的组件的更多信息,请参阅 Component System 页面。

来源:src/frontend/src/CustomNodes/GenericNode/index.tsx src/frontend/src/pages/FlowPage/components/nodeToolbarComponent/index.tsx 来源/前端/src/pages/FlowPage/components/PageComponent/index.tsx src/frontend/src/stores/flowStore.ts 来源/前端/来源/商店/flowsManagerStore.ts 来源/前端/来源/类型/流/index.ts 来源/前端/src/types/api/index.ts 来源/前端/src/utils/reactflowUtils.ts 来源/前端/src/utils/buildUtils.ts

节点和边

相关源文件

本页介绍了 Langflow 可视化编程接口的核心构建块:节点和边。节点表示可以通过边缘连接以创建 AI 工作流的组件(如 LLM、链、工具等)。本文档解释了节点和边在 Langflow 系统中是如何构建和渲染的,以及它们如何相互交互。

有关如何管理和保存流的信息,请参阅流管理。

节点和 Edge 概述

在 Langflow 中,流由由边(表示数据流)连接的节点(表示组件或功能)组成。可视化界面建立在 React Flow 之上,React Flow 为图形编辑器提供了基本功能。

资料来源: [src/frontend/src/CustomNodes/GenericNode/index.tsx], [src/frontend/src/types/flow/index.ts], [src/frontend/src/pages/FlowPage/components/nodeToolbarComponent/index.tsx]

节点类型和结构

Langflow 有两种主要节点类型:GenericNode(用于组件)和 NoteNode(用于注释)。

节点数据类型

节点的核心数据结构定义为 TypeScript 类型:

资料来源:[src/frontend/src/types/flow/index.ts:37-70], [src/frontend/src/types/api/index.ts:31-66]

GenericNode 组件

它是主要节点类型,代表 Langflow 中可用的不同组件(LLM、链、代理等)。它是一个复杂的组件,它呈现:GenericNode

  1. 节点标头(图标、标题)
  2. 状态指示灯
  3. 描述 (展开时)
  4. 输入参数
  5. 输出手柄

组件根据其状态(展开/最小化、选中、使用工具模式等)以不同的方式显示

资料来源:[src/frontend/src/CustomNodes/GenericNode/index.tsx:66-592]

边和连接

边表示节点之间的数据流,将一个节点的输出连接到另一个节点的输入。

边缘结构

Langflow 中的每个边缘都有:

  • 唯一 ID
  • 源节点 ID 和句柄
  • 目标节点 ID 和句柄
  • 包含连接元数据的数据对象

资料来源:[src/frontend/src/types/flow/index.ts:85-131], [src/frontend/src/utils/reactflowUtils.ts:104-166]

连接验证

连接节点时,Langflow 会验证:

  1. 源和目标是不同的节点
  2. 源的输出类型与目标的输入类型兼容
  3. 对于非列表输入,输入尚未建立连接

资料来源: [src/frontend/src/utils/reactflowUtils.ts:316-363]

节点渲染

该组件根据节点的状态和元数据动态呈现。GenericNode

视觉状态

节点具有多种视觉状态:

  • 扩展/最小化 ( 属性)showNode
  • 已选中(单击时)
  • 构建(在流程执行期间)
  • 错误(验证失败时)
  • 冻结(显式设置时)
  • 工具模式(特殊执行模式)

节点的外观会根据这些状态而变化,以提供视觉反馈。

输入参数渲染

输入参数根据节点的模板呈现,该模板指定每个参数的类型、要求和 UI。

资料来源:[src/frontend/src/CustomNodes/GenericNode/index.tsx:447-458], [src/frontend/src/CustomNodes/GenericNode/components/RenderInputParameters.tsx]

输出参数

输出参数表示节点可以发送到其他节点的数据。它们将呈现为节点右侧的连接手柄。

每个输出都有:

  • 名字
  • 显示名称
  • 类型 (它可以提供的数据类型)
  • 可选的可见性控制(可以隐藏)

资料来源:[src/frontend/src/CustomNodes/GenericNode/index.tsx:539-582]、[src/frontend/src/CustomNodes/GenericNode/components/NodeOutputParameter.tsx]

节点工具栏

选择节点后,将显示 NodeToolbar,提供作来作该节点。

资料来源: [src/frontend/src/pages/FlowPage/components/nodeToolbarComponent/index.tsx:44-770]

代码编辑

对于具有代码字段的节点(如自定义函数),工具栏提供对代码编辑器的访问:

来源:[src/frontend/src/modals/codeAreaModal/index.tsx:34-289], [src/frontend/src/pages/FlowPage/components/nodeToolbarComponent/index.tsx:446-456]

工具模式

工具模式是某些节点的一项特殊功能,可更改它们在流程中的处理方式:

资料来源:[src/frontend/src/pages/FlowPage/components/nodeToolbarComponent/index.tsx:485-532]

节点状态和验证

节点具有指示其在流中的当前状态的构建状态:

资料来源:[src/frontend/src/CustomNodes/GenericNode/components/NodeStatus/index.tsx], [src/frontend/src/style/applies.css:116-138]

节点验证

在执行流之前,会验证节点以确保它们具有所有必需的输入:

资料来源:[src/frontend/src/utils/reactflowUtils.ts:518-601]

Edge 交互和渲染

Edge 可视化节点之间的连接并支持各种交互:

资料来源: [src/frontend/src/utils/reactflowUtils.ts:74-166], [src/frontend/src/pages/FlowPage/components/PageComponent/index.tsx:428-449]

边缘清洁

当节点更改时,将 “清理” 边缘以删除无效连接:

资料来源:[src/frontend/src/utils/reactflowUtils.ts:74-162]

特殊节点功能

冻结节点

节点可以被 “冻结” ,这在视觉上表明它们在流程执行期间不会被重新计算:

资料来源:[src/frontend/src/pages/FlowPage/components/nodeToolbarComponent/index.tsx:468-484], [src/frontend/src/style/applies.css:116-138]

节点最小化

可以最小化节点以节省复杂流程中的空间:

资料来源:[src/frontend/src/pages/FlowPage/components/nodeToolbarComponent/index.tsx:190-208]

结论

Langflow 中的节点和边缘系统为构建 AI 工作流提供了灵活的可视化编程界面。节点表示具有特定功能的组件,而 edges 表示这些组件之间的数据流。该系统包括全面的验证、状态指示器和交互功能,可帮助用户有效地创建和调试其流程。

通过 ReactFlow 基础,Langflow 提供了高度交互的体验,用户可以通过连接兼容的组件并配置其参数来直观地构建复杂的工作流程。

流程管理

相关源文件

Langflow 中的流管理是指负责在应用程序内创建、保存、加载和组织流的一组进程和系统。流表示将各种 AI 组件连接在一起以构建应用程序的可视化工作流。本页记录了如何在 Langflow 系统中存储、组织和管理流。

有关流程和节点连接的可视化编辑的信息,请参阅 Flow Editor 系统。

流数据模型

Langflow 中的流由结构化数据模型表示,该模型包含存储和执行工作流所需的所有信息。

流的关键属性包括:

  • id:唯一标识符
  • name:流的显示名称
  • description:可选描述
  • user_id:流的所有者
  • folder_id:包含流的父文件夹
  • data:包含节点、边缘和其他流程详细信息的 JSON 对象
  • is_component:指示流是否为可重用组件的标志
  • endpoint_name:可选的自定义 API 终端节点名称
  • access_type:隐私设置(PRIVATE、PUBLIC、UNLISTED)

来源:来源/backend/base/langflow/api/v1/flows.py36-137

流存储架构

Langflow 为 flow 实现了双重存储策略:

  1. 数据库存储:使用 SQLModel 的主存储,其中包含流和相关数据的表
  2. 文件系统存储(可选):通过 JSON 文件进行辅助存储以实现冗余

创建或更新流时,会将其保存到数据库,如果提供了路径,则会选择性地保存到文件系统中。

来源:来源/backend/base/langflow/api/v1/flows.py47-54 来源/backend/base/langflow/api/v1/flows.py136-152

流的 CRUD作

创建流

创建新流时:

API 通过向重复名称附加数字来自动处理名称冲突(例如,“MyFlow”、“MyFlow (1)”)。指定终端节点名称时,终端节点名称同样是唯一的。

来源:来源/backend/base/langflow/api/v1/flows.py56-136 来源/backend/base/langflow/api/v1/flows.py139-168

检索流

Langflow 提供了多个用于检索流的终端节点:

  • GET /flows/:获取所有流(带筛选选项)
  • GET /flows/{flow_id}:获取特定流
  • GET /flows/public_flow/{flow_id}:获取公开共享的流

响应包括所有流元数据和完整的流定义(节点、边缘等)。

来源:来源/backend/base/langflow/api/v1/flows.py171-253 来源/backend/base/langflow/api/v1/flows.py274-284

更新流

流通过终端节点进行更新:PATCH /flows/{flow_id}

更新流程时,您可以修改任何属性,包括名称、描述、数据、文件夹分配等。如果配置为这样做,系统会在保存之前自动删除敏感数据,例如 API 密钥。

来源:来源/backend/base/langflow/api/v1/flows.py302-364

删除流

删除流时,系统会执行级联删除以删除所有相关数据:

该函数可确保删除所有相关数据,从而防止数据库中出现孤立记录。cascade_delete_flow

来源:来源/backend/base/langflow/api/v1/flows.py367-385 来源/后端/基础/langflow/api/utils.py291-303

流组织

文件夹结构

Langflow 中的流被组织到文件夹中:

每个流程都必须属于一个文件夹。如果在创建过程中未指定文件夹,则流程将自动分配给默认的 “My Collection” 文件夹。

来源:来源/backend/base/langflow/api/v1/flows.py118-126 来源/后端/基础/langflow/api/v1/folders.py35-92

文件夹作

文件夹 API 为以下各项提供端点:

  • 创建文件夹:POST /folders/
  • 检索文件夹: 和GET /folders/GET /folders/{folder_id}
  • 更新文件夹:PATCH /folders/{folder_id}
  • 删除文件夹:DELETE /folders/{folder_id}

删除文件夹后,可以删除其中的所有流或将其移动到默认文件夹。

来源:来源/后端/基础/langflow/api/v1/folders.py94-163 来源/后端/基础/langflow/api/v1/folders.py226-255

流导入和导出

导出流

流可以单独或批量导出:

导出过程会在生成导出文件之前自动删除 API 密钥等敏感信息。

来源:来源/backend/base/langflow/api/v1/flows.py483-522

导入流

可以从 JSON 文件或 ZIP 存档导入流:

导入过程通过为导入的流生成唯一名称来处理名称冲突。

来源:来源/backend/base/langflow/api/v1/flows.py408-451

前端流管理

前端使用 Zustand store 来管理 flow 状态:

提供:flowsManagerStore

  • 电流跟踪
  • 可用流列表
  • 自动保存功能
  • 撤消/重做历史记录管理

来源:来源/前端/来源/商店/flowsManagerStore.ts19-150 来源/前端/来源/类型/zustand/flowsManager/index.ts1-39

撤消/重做功能

前端实现了用于流编辑的撤消/重做功能:

此实施对过去和未来状态使用单独的堆栈,允许用户浏览流程的编辑历史记录。

来源:来源/前端/来源/商店/flowsManagerStore.ts59-124

流相互关系

流与系统中的其他几个组件有连接:

这些关系可确保:

  1. 聊天历史记录随流一起保留
  2. 存储执行记录以供调试
  3. 构建缓存可加快重复执行的速度
  4. 上传的文件仍与其流关联

删除流时,级联删除过程将删除所有相关记录。

来源:来源/后端/基础/langflow/api/utils.py291-303 来源/backend/base/langflow/memory.py73-99 src/backend/base/langflow/api/v1/monitor.py24-43

流访问控制

流支持不同的访问类型:

访问类型

描述

私人

违约。只有所有者可以查看和编辑

公共

任何拥有该链接的人都可以查看和运行流

上市

未公开列出,但可通过链接访问

公共流使用特殊机制根据客户端 ID 和流 ID 创建确定性会话 ID,从而确保匿名用户的行为一致。

来源:来源/后端/基础/langflow/api/utils.py315-372 来源/backend/base/langflow/api/v1/flows.py287-299

总结

Langflow 中的流管理提供了一个用于创建、组织和共享 AI 工作流的综合系统。双存储方法(数据库和文件系统)可确保数据持久性,而基于文件夹的组织可帮助用户管理流集合。具有撤消/重做功能的前端状态管理可提供流畅的编辑体验,而导入/导出功能支持在用户或实例之间轻松共享流。

相关文章:

LangFlow技术深度解析:可视化编排LangChain应用的新范式 -(2)流编辑器系统

Flow Editor System | langflow-ai/langflow | DeepWiki 流编辑器系统 相关源文件 流编辑器系统是 Langflow 的核心交互式组件&#xff0c;允许用户直观地创建、编辑和管理 LLM 驱动的应用程序。它提供了一个直观的画布&#xff0c;用户可以在其中添加节点、将其与边缘连接并…...

okcc呼叫中心系统搭建的方案方式

传统企业呼叫中心多采用 PC和手机软件&#xff0c;很难与客户保持良好的沟通。因此&#xff0c;需要建设一套呼叫中心系统来实现与客户实时有效沟通。那么&#xff0c;呼叫中心搭建的方案方式有哪些呢?下面详细介绍一下。 呼叫中心系统的搭建方式需根据企业规模、预算和业务需…...

asp.net IHttpHandler 对分块传输编码的支持,IIs web服务器后端技术

IHttpHandler&#xff0c;不支持分块传输编码&#xff08;Chunked Transfer&#xff09;吧&#xff1f; IHttpHandler 对分块传输编码的支持 实际上&#xff0c;IHttpHandler 完全支持分块传输编码&#xff08;Chunked Transfer Encoding&#xff09;&#xff0c;但具体行为取…...

芍药BAHD酰基转移酶-文献精读128

PoDPBT, a BAHD acyltransferase, catalyses the benzoylation in paeoniflorin biosynthesis in Paeonia ostii PoDPBT&#xff0c;一种BAHD酰基转移酶&#xff0c;在芍药&#xff08;Paeonia ostii&#xff09;中催化芍药苷生物合成中的苯甲酰化反应。 摘要 PoDPBT是属于BA…...

GTS-400 系列运动控制器板卡介绍(三十三)---运动程序单线程累加求和

运动控制器函数库的使用 运动控制器驱动程序、dll 文件、例程、Demo 等相关文件请通过固高科技官网下载,网 址为:www.googoltech.com.cn/pro_view-3.html 1 Windows 系统下动态链接库的使用 在 Windows 系统下使用运动控制器,首先要安装驱动程序。在安装前需要提前下载运动…...

C# 面向对象 构造函数带参无参细节解析

继承类构造时会先调用基类构造函数&#xff0c;不显式调用基类构造函数时&#xff0c;默认调用基类无参构造函数&#xff0c;但如果基类没有写无参构造函数&#xff0c;会无法调用从而报错&#xff1b;此时&#xff0c;要么显式的调用基类构造函数&#xff0c;并按其格式带上参…...

数字化工厂升级引擎:Modbus TCP转Profinet网关助力打造柔性生产系统

在当今的工业自动化领域&#xff0c;通信协议扮演着至关重要的角色。Modbus TCP和Profinet是两种广泛使用的工业通信协议&#xff0c;它们分别在不同的应用场景中发挥着重要作用。然而&#xff0c;有时我们可能需要将这两种协议进行转换&#xff0c;以实现不同设备之间的无缝通…...

【编译原理】词法分析器

//简单实现&#xff0c;伪代码 int code,value; strToken :" "; //置strToken为空串 GetChar();GetBC(); if(IsLetter()) beginwhile(IsLetter() or IsDigit())beginConcat();GetChar();endRetract();code:Reserve();if(code0)beginvalue:InsertId(strToken);retu…...

记录一次vue项目页面内嵌iframe页面实现跨域上传和下载附件的功能

功能背景&#xff1a;项目部署在外网&#xff0c;然后其中有一个功能需要上传下载附件&#xff0c;附件是上传到华为云对象存储服务OBS中&#xff08;私有云&#xff09;&#xff0c;所以采用iframe嵌套页面的方式解决跨域问题。 实现思路&#xff1a; 1、父窗口封装一个组件专…...

【Win32 API】 lstrcpyA()

作用 将字符串复制到指定的字符串缓冲区。 函数 LPSTR lstrcpyA(LPSTR lpString1, LPCSTR lpString2); 参数 lpString1 类型&#xff1a;LPTSTR 一个缓冲区&#xff0c;用于接收由 lpString2 参数指向的字符串的内容。 缓冲区必须足够大才能包含字符串&#xff0c;包括终止…...

报表控件stimulsoft教程:如何在报表和仪表板中创建热图

Stimulsoft Ultimate &#xff08;原Stimulsoft Reports.Ultimate&#xff09;是用于创建报表和仪表板的通用工具集。该产品包括用于WinForms、ASP.NET、.NET Core、JavaScript、WPF、PHP、Java和其他环境的完整工具集。无需比较产品功能&#xff0c;Stimulsoft Ultimate包含了…...

Axure疑难杂症:剖析面包屑导航“用户不迷路”(玩转导航)

亲爱的小伙伴,在您浏览之前,烦请关注一下,在此深表感谢! Axure产品经理精品视频课已登录CSDN可点击学习https://edu.csdn.net/course/detail/40420 课程主题:剖析面包屑导航“用户不迷路” 主要内容:面包屑导航各种做法 应用场景:页面导航、页面路径、用户选择路径、…...

中exec()函数因$imagePath参数导致的命令注入漏洞

exec(zbarimg -q . $imagePath, $barcodeList, $returnVar); 针对PHP中exec()函数因$imagePath参数导致的命令注入漏洞&#xff0c;以下是安全解决方案和最佳实践&#xff1a; 一、漏洞原理分析 直接拼接用户输入$imagePath到系统命令中&#xff0c;攻击者可通过注入特殊字…...

HTML常用标签用法全解析:构建语义化网页的核心指南

HTML作为网页开发的基石&#xff0c;其标签的合理使用直接影响页面的可读性、SEO效果及维护性。本文系统梳理HTML核心标签的用法&#xff0c;结合语义化设计原则与实战示例&#xff0c;助你构建规范、高效的网页结构。 一、基础结构与排版标签 1.1 文档结构 <!DOCTYPE htm…...

【Linux】动静态库链接原理

&#x1f4dd;前言&#xff1a; 这篇文章我们来讲讲Linux——动静态库链接原理 &#x1f3ac;个人简介&#xff1a;努力学习ing &#x1f4cb;个人专栏&#xff1a;Linux &#x1f380;CSDN主页 愚润求学 &#x1f304;其他专栏&#xff1a;C学习笔记&#xff0c;C语言入门基础…...

Axure设计的“广东省网络信息化大数据平台”数据可视化大屏

在数据驱动决策的时代&#xff0c;数据可视化大屏成为了展示数据、洞察趋势的重要工具。今天&#xff0c;让我们一同深入了解由Axure设计的“广东省网络信息化大数据平台”数据可视化大屏&#xff0c;看看它如何通过精心的布局和丰富的图表类型&#xff0c;将复杂的数据以直观易…...

linux安装宝塔面板到数据盘

操作很简单&#xff0c;假如数据盘挂载在cipan1&#xff0c;在数据盘新建目录www&#xff0c;为了方便对应。 执行一下命令&#xff0c;创建软连接 ln -s /cipan1/www www 此时&#xff0c;根目录就出现了www文件夹 下面正常安装宝塔即可...

数学实验(Matlab编程基础)

一、函数文件 Matlab编程基础 Matlab作为一种广泛应用于科学计算的工具软件&#xff0c;不仅具有强大的数值计算、符号计算、矩阵运算能力和丰富的绘图功能&#xff0c;同时也具有和C、FORTRAN等高级语言一样进行程序设计 利用Matlab的程序控制功能&#xff0c;可以将有关Ma…...

不同坐标系下MATLAB绘制阵列的方向图

不同坐标系下MATLAB绘制阵列的方向图 球坐标系&#xff0c;极坐标系、直角坐标系 文章目录 前言一、极坐标系二、球坐标系三、直角坐标系总结 前言 \;\;\;\;\; 在阵列信号处理和天线设计中&#xff0c;方向图&#xff08;Pattern&#xff09;是描述波束形成性能的关键工具&…...

python可视化:北方省市人口流动与春运数据综合分析5

python可视化&#xff1a;北方省市人口流动与春运数据综合分析5 一、北方省市常住人口数据及变化趋势&#xff08;2023-2024第一季度&#xff09; 1. 主要城市常住人口数据&#xff08;按城市等级分类&#xff09; 城市类型2023Q1常住人口(万)2024Q1常住人口(万)变化量(万)变…...

Java并发编程-线程池(四)

文章目录 线程池实现原理WorkerWorker 核心设计总结 runWorker(Worker w)总结 线程池实现原理 上一篇我们看了 addWork 方法&#xff0c;那接下来就让我们详细看看内部类Worker。 Worker private final class Workerextends AbstractQueuedSynchronizerimplements Runnable …...

力扣热题——最长相邻不相等子序列 |

题目要求从字符串数组 words 中选出一个最长的子序列&#xff0c;使得该子序列中相邻字符串对应的 groups 数组中的值不同。通过贪心算法&#xff0c;可以高效地解决该问题。具体步骤为&#xff1a;初始化一个结果列表&#xff0c;遍历 words 数组&#xff0c;检查当前字符串的…...

筑牢信息安全防线:涉密计算机与互联网隔离的理论实践与风险防控

在数字化时代&#xff0c;信息安全已成为国家安全体系的重要组成部分。涉密计算机作为承载敏感信息的核心载体&#xff0c;其安全防护工作直接关系到国家利益与社会稳定。违规连接互联网这一行为&#xff0c;如同在严密的防护体系中打开一扇危险的"暗门"&#xff0c;…...

sqli-labs靶场29-31关(http参数污染)

目录 前言 less29&#xff08;单引号http参数污染&#xff09; less30&#xff08;双引号http参数污染&#xff09; less31(双引号括号http参数污染) 前言 在JSP中&#xff0c;使用request.getParameter("id")获取请求参数时&#xff0c;如果存在多个同名参数&a…...

基于Linux环境实现Oracle goldengate远程抽取MySQL同步数据到MySQL

基于Linux环境实现Oracle goldengate远程抽取MySQL同步数据到MySQL 场景说明&#xff1a; 先有项目需要读取生产库数据&#xff0c;但是不能直接读取生产库数据&#xff0c;需要把生产数据同步到一个中间库&#xff0c;下游系统从中间库读取数据。 生产库mysql - OGG - 中间库…...

linux,我启动一个springboot项目, 用java -jar xxx.jar ,但是没多久这个java进程就会自动关掉

当使用 java -jar xxx.jar & 启动 Spring Boot 项目后进程自动关闭时&#xff0c;可能由多种原因导致。以下是常见排查步骤和解决方案&#xff1a; 一、查看日志定位原因 进程异常关闭通常会在控制台或日志中留下线索&#xff0c;建议先获取完整日志&#xff1a; 1. 查看…...

pytorch 14.3 Batch Normalization综合调参实践

文章目录 一、Batch Normalization与Batch_size综合调参二、复杂模型上的Batch_normalization表现1、BN对复杂模型&#xff08;sigmoid&#xff09;的影响2、模型复杂度对模型效果的影响3、BN对复杂模型&#xff08;tanh&#xff09;的影响 三、包含BN层的神经网络的学习率优化…...

供应链安全检测系列技术规范介绍之一|软件成分分析

软件成分分析的概念及意义 软件成分分析Software Compostition Analysis&#xff08;SCA&#xff09;是一种用于管理开源组件应用安全的方法。软件成分分析系统可以快速跟踪和分析应用软件的开源组件&#xff0c;发现相关组件、支持库以及它们之间直接和间接依赖关系&#xff0…...

pytorch 15.1 学习率调度基本概念与手动实现方法

文章目录 一、学习率对模型训练影响 二、学习率调度基本概念与手动实现方法1.模型调度基本概念2.手动实现学习率调度3.常用学习率调度思路 从本节开始&#xff0c;我们将介绍深度学习中学习率优化方法。学习率作为模型优化的重要超参数&#xff0c;在此前的学习中&#xff0c;我…...

c++ 类的语法4

测试析构函数、虚函数、纯虚函数&#xff1a; void testClass5() {class Parent {public:Parent(int x) { cout << "Parent构造: " << x << endl; }~Parent() {cout << "调用Parent析构函数" << endl;}virtual string toSt…...

品铂科技在UWB行业地位综述(2025年更新)

一、行业领先地位‌ ‌国内UWB领域头部企业‌ 在2025年中国UWB企业综合实力排行榜中位列第一&#xff0c;技术研发、市场份额及行业影响力均处于领先地位。连续多年获评中国物联网产业联盟“中国最有影响力物联网定位企业”。 2.‌全球技术竞争力‌ .2016年IPSN微软国际室内…...

muduo库EventLoop模块详解

muduo库EventLoop模块深度解析 EventLoop是muduo网络库实现Reactor模型的核心调度中枢&#xff0c;负责驱动整个事件循环机制&#xff0c;协调Poller、Channel、TimerQueue等组件的工作。其设计遵循"One Loop Per Thread"原则。 一、核心职责与设计思想 1. 核心职责…...

循环导入(Circular Import) 错误

ImportError: cannot import name event_type_data_tree from partially initialized module routers.ticket (most likely due to a circular import) (E:\ai12345\backend\app\routers\ticket.py) 这是什么错&#xff0c;中文回答 这个错误是 循环导入&#xff08;Circular …...

基于大数据的租房信息可视化系统的设计与实现【源码+文档+部署】

课题名称 基于大数据的租房信息可视化系统的设计与实现 学 院 专 业 计算机科学与技术 学生姓名 指导教师 一、课题来源及意义 租房市场一直是社会关注的热点问题。随着城市化进程的加速&#xff0c;大量人口涌入城市&#xff0c;导致租房需求激增。传统的租…...

奥运数据可视化:探索数据讲述奥运故事

在数据可视化的世界里&#xff0c;体育数据因其丰富的历史和文化意义&#xff0c;常常成为最有吸引力的主题之一。今天我要分享一个令人着迷的奥运数据可视化项目&#xff0c;它巧妙地利用交互式图表和动态动画&#xff0c;展现了自1896年至今奥运会的发展历程和各国奥运成就的…...

linux环境下 安装svn并且创建svn版本库详细教程

​一、安装SVN​ ​通过yum安装Subversion​ 在Linux系统中执行以下命令安装&#xff1a; yum install subversion -y 安装完成后&#xff0c;验证版本&#xff1a; svnserve --version ​二、创建版本库 ​选择存储路径并创建目录​ 通常将版本库放在/var/svn或/usr/local/…...

STM32控制电机

初始化时钟&#xff1a;在 STM32 的程序中&#xff0c;初始化系统时钟&#xff0c;一般会使用 RCC&#xff08;Reset and Clock Control&#xff09;相关函数来配置时钟。例如&#xff0c;对于 STM32F103 系列&#xff0c;可能会使用 RCC_APB2PeriphClockCmd 函数来使能 GPIO 和…...

Ubuntu 更改 Nginx 版本

将 1.25 降为 1.18 先卸载干净 # 1. 完全卸载当前Nginx sudo apt purge nginx nginx-common nginx-core# 2. 清理残留配置 sudo apt autoremove sudo rm -rf /etc/apt/sources.list.d/nginx*.list修改仓库地址 # 添加仓库&#xff08;通用稳定版仓库&#xff09; codename$(…...

微服务初步学习

系统架构演变过程 一、单体架构 前后端都在一个项目中&#xff0c;包括我们现在的前后端分离开发&#xff0c;都可以看作是一个单体项目。 二、集群架构 把一个服务部署多次&#xff0c;可以解决服务不够的问题&#xff0c;但是有些不必要的功能也跟着部署多次。 三、垂直架…...

旧 docker 版本通过 nvkind 搭建虚拟多节点 gpu 集群的坑

踩坑 参考nvkind教程安装到Setup这一步&#xff0c;由于docker版本较旧&#xff0c;–cdi.enabled 和 config 参数执行不了 手动修改 /etc/docker/daemon.json 配置文件 "features": {"cdi": true}手动修改 /etc/nvidia-container-runtime/config.toml 配…...

Fabric 服务端插件开发简述与聊天事件监听转发

原文链接&#xff1a;Fabric 服务端插件开发简述与聊天事件监听转发 < Ping通途说 0. 引言 以前写过Spigot的插件&#xff0c;非常简单&#xff0c;仅需调用官方封装好的Event类即可。但Fabric这边在开发时由于官方文档和现有互联网资料来看&#xff0c;可能会具有一定的误…...

Wise Disk Cleaner:免费系统清理工具,释放空间,提升性能

Wise Disk Cleaner是一款功能强大且完全免费的系统清理工具&#xff0c;专为帮助用户清理系统中的无用文件和垃圾文件而设计。它能够有效释放磁盘空间&#xff0c;提高系统运行速度&#xff0c;确保电脑始终保持最佳性能。无论是日常维护还是深度清理&#xff0c;Wise Disk Cle…...

排序算法之高效排序:快速排序,归并排序,堆排序详解

排序算法之高效排序&#xff1a;快速排序、归并排序、堆排序详解 前言一、快速排序&#xff08;Quick Sort&#xff09;1.1 算法原理1.2 代码实现&#xff08;Python&#xff09;1.3 性能分析 二、归并排序&#xff08;Merge Sort&#xff09;2.1 算法原理2.2 代码实现&#xf…...

主打「反激进」的一汽丰田,靠稳扎稳打的技术实现突围

文/王俣祺 导语&#xff1a;今年的上海车展&#xff0c;当新势力都在用“1000TOPS算力”“激光雷达矩阵”等参数堆砌着一个个技术神话的时候&#xff0c;一汽丰田却选择了一条不同的路——用“反激进”的技术哲学&#xff0c;在电动化和智能化的大风向中&#xff0c;构建独特的…...

变量赋值和数据类型

对象 Python是面相对象的编程语言&#xff0c;在Python一些都是对象&#xff0c;对象由标识、类型、值三部分组成&#xff0c;本质上来讲&#xff0c;系统分配一块内存&#xff0c;这块内存中存储了特定了的值&#xff0c;还支持特定类型的相关操作。 标识&#xff1a;即对象…...

【笔记】cri-docker.service和containerd

cri-docker.service 和 containerd 都是 Kubernetes 支持的容器运行时组件&#xff0c;但它们的架构、功能定位及与 Docker 的关系有显著差异。以下是它们的核心区别和关联&#xff1a; 1. 功能定位 组件核心角色是否直接支持 CRIcontainerd轻量级容器运行时&#xff0c;直接管…...

技术文章:解决汇川MD500系列变频器干扰问题——GRJ9000S EMC滤波器的应用

1. 引言 汇川MD500系列变频器&#xff08;Variable Frequency Drive, VFD&#xff09;以其高性能、宽功率范围&#xff08;0.4kW-500kW&#xff09;和灵活的控制方式&#xff0c;广泛应用于工业自动化领域&#xff0c;如风机、水泵、传送带和压缩机等。然而&#xff0c;MD500系…...

频域中的反射-信号完整性分析

频域中的反射: 频域与时域的桥梁是傅里叶变换,一个周期信号可以拆分为许多个正弦波。所谓从频域中看信号,看到的可以是很多个频域中的点,也可以是许多个正弦波。 所以在大家眼中看到的信号如图4-13所示。我们可以将该信号分解为图4-14所示信号。 让我们来思考下面这个问题:…...

window nvidia-smi命令 Failed to initialize NVML: Unknown Error

如果驱动目录下的可以执行&#xff0c;那可能版本原因 "C:\Program Files\NVIDIA Corporation\NVSMI\nvidia-smi"复制"C:\Program Files\NVIDIA Corporation\NVSMI\nvidia-smi.exe"替换 C:\Windows\System32\nvidia-smi.exe 或者 把C:\Windows\System3…...

ubuntu 20.04 更改国内镜像源-阿里源 确保可用

镜像源是跟linux版本一一对应的,查询自己系统的版本号&#xff1a; 命令&#xff1a;lsb_release -a macw:~$ lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 20.04.6 LTS Release: 20.04 Codename: focal macw:~$…...