低代码开源项目Joget的研究——基本概念和应用

大纲

  • 1. 基本概念
    • 1.1 Form
      • 1.1.1 Form
        • 1.1.1.1 概述
        • 1.1.1.2 主要特点和用途
        • 1.1.1.3 创建和使用 Form
        • 1.1.1.4 示例
      • 1.1.2 Section
        • 1.1.2.1 概述
        • 1.1.2.2 主要特点和用途
        • 1.1.2.3 示例
      • 1.1.3 Column
      • 1.1.4 Field
      • 1.1.5 示例
    • 1.2 Datalist
      • 1.2.1 Datalist
        • 1.2.1.1 主要特点和用途
        • 1.2.1.2 创建和使用 DataList
        • 1.2.1.3 示例
      • 1.2.2 Design
        • 1.2.2.1 设计概念
        • 1.2.2.2 设计步骤
        • 1.2.2.3 示例
    • 1.3 UserView
      • 1.3.1 主要概念
      • 1.3.2 设计步骤
      • 1.3.3 示例
    • 1.4 Binder
      • 1.4.1 主要概念
      • 1.4.2 常见的 Binder 类型
      • 1.4.3 示例
  • 2. 登录
  • 3. 应用
    • 3.1 创建App
    • 3.2 创建Form
      • 3.2.1 创建Section
        • 3.2.1.1 创建Column
          • 3.2.1.1.1 创建Field
      • 3.2.2 提交
    • 3.3 创建Datalists
      • 3.3.1 选择绑定器
      • 3.3.2 设计
      • 3.3.3 提交
    • 3.4 创建Userview
    • 3.5 发布App
    • 3.6 查看

1. 基本概念

1.1 Form

1.1.1 Form

1.1.1.1 概述
  • 概念: Form 是用于收集和管理用户输入数据的界面组件。它是 Joget 应用程序中的一个核心部分。
  • 用途: 用于创建、编辑和查看数据记录,并且可以与 Joget 的工作流和数据管理功能集成。
  • 组成: Form 由多个 Section 组成,每个 Section 可以包含多个 Column 和 Field。
1.1.1.2 主要特点和用途
  • 数据收集: Form 用于收集用户输入的数据,可以包含各种类型的字段,如文本框、下拉列表、复选框、日期选择器等。
  • 数据验证: Form 可以设置数据验证规则,确保用户输入的数据符合预期格式和要求。
  • 动态行为: Form 支持动态行为,可以根据用户输入的值动态显示或隐藏字段、设置字段的可编辑性等。
  • 集成工作流: Form 可以与 Joget 的工作流引擎集成,用于在工作流的不同阶段收集和处理数据。
  • 数据存储: Form 可以将用户输入的数据存储到 Joget 的数据库中,便于后续查询和分析。
1.1.1.3 创建和使用 Form
  1. 设计表单: 在 Joget 的表单设计器中,可以通过拖放各种表单字段和组件来设计表单。
  2. 配置字段: 配置每个字段的属性,如标签、默认值、验证规则等。
  3. 设置动态行为: 配置表单的动态行为,如条件显示、字段依赖等。
  4. 发布表单: 将设计好的表单发布到 Joget 系统中,供用户使用。
  5. 集成工作流: 将表单与工作流集成,在工作流的不同阶段使用表单收集和处理数据。
1.1.1.4 示例

假设你需要创建一个员工信息表单,可以包含以下字段:

  • 姓名: 文本框,用于输入员工姓名。
  • 电子邮件: 文本框,用于输入员工电子邮件地址。
  • 电话号码: 文本框,用于输入员工电话号码。
  • 部门: 下拉列表,用于选择员工所属部门。
  • 入职日期: 日期选择器,用于选择员工的入职日期。

1.1.2 Section

1.1.2.1 概述
  • 概念: Section 是 Form 中的一个分组容器,用于将相关的表单字段组织在一起。
  • 用途:
    • 逻辑分组: 将相关的字段分组在一起,使表单更加有序和易于理解。
    • 布局管理: 帮助管理表单的布局,使表单看起来更加整齐和美观。
    • 条件显示: 可以设置条件显示规则,根据用户输入动态显示或隐藏特定的部分。
  • 组成: Section 由多个 Column 组成,每个 Column 可以包含多个 Field。
1.1.2.2 主要特点和用途
  • 分组字段: Section 可以将相关的表单字段分组在一起,便于用户填写和理解。
  • 布局管理: Section 可以用于管理表单的布局,使表单看起来更加整齐和有序。
  • 条件显示: Section 可以设置条件显示规则,根据用户输入动态显示或隐藏特定的部分。
  • 样式和设计: Section 可以应用特定的样式和设计,使表单更加美观和符合品牌要求。
1.1.2.3 示例

假设你有一个用户注册表单,你可以使用 Section 来分组不同类型的信息:

  • 个人信息: 包含姓名、电子邮件、电话号码等字段。
  • 地址信息: 包含街道地址、城市、邮政编码等字段。
  • 账户信息: 包含用户名、密码等字段。

1.1.3 Column

  • 概念: Column 是 Section 中的一个布局容器,用于在同一行中排列多个表单字段。
  • 用途:
    • 行内布局: 在一个 Column 中放置多个 Field,可以实现行内布局,使表单更加紧凑和美观。
    • 分组显示: 将相关的 Field 放在同一个 Column 中,可以使表单内容更加有序和易于理解。
    • 响应式设计: 在响应式设计中,可以根据屏幕大小调整 Column 中 Field 的显示方式。
  • 组成: Column 包含多个 Field。

1.1.4 Field

  • 概念: Field 是表单中用于收集用户输入的基本元素。每个 Field 代表一个输入控件,如文本框、下拉列表、复选框等。
  • 用途:
    • 数据输入: Field 用于收集用户输入的数据。
    • 数据验证: 可以设置验证规则,确保用户输入的数据符合预期格式和要求。
    • 动态行为: 可以根据用户输入的值动态显示或隐藏、启用或禁用 Field。
  • 类型: 常见的 Field 类型包括文本框(Text Field)、下拉列表(Dropdown Field)、复选框(Checkbox Field)、日期选择器(Date Picker Field)等。

1.1.5 示例

假设你有一个用户注册表单,可以如下组织:

  • Form: 用户注册表单
    • Section 1: 个人信息
      • Column 1:
        • 姓名 (Text Field)
        • 电子邮件 (Email Field)
      • Column 2:
        • 电话号码 (Text Field)
    • Section 2: 地址信息
      • Column 1:
        • 街道地址 (Text Field)
        • 城市 (Text Field)
        • 邮政编码 (Text Field)

1.2 Datalist

DataList 是用于显示和管理数据记录的组件。它提供了一种灵活的方式来展示数据库中的数据,并允许用户进行各种操作,如查看、编辑、删除和导出数据。DataList 是 Joget 应用程序中的一个核心部分,广泛用于数据管理和报告。

1.2.1 Datalist

1.2.1.1 主要特点和用途
  • 数据展示:
    • 表格视图: DataList 以表格形式展示数据记录,每行代表一条记录,每列代表一个字段。
    • 分页: 支持分页功能,可以处理大量数据记录,用户可以通过分页导航查看不同页的数据
  • 数据操作:
    • 查看: 用户可以查看数据记录的详细信息。
    • 编辑: 用户可以编辑数据记录。
    • 删除: 用户可以删除数据记录。
    • 导出: 支持将数据导出为 CSV 或 Excel 格式,便于数据分析和共享。
  • 过滤和排序:
    • 过滤: 支持根据特定条件过滤数据记录,用户可以通过设置过滤条件来查看特定的数据子集。
    • 排序: 支持对数据记录进行排序,用户可以根据需要对数据进行升序或降序排列。
  • 自定义列:
    • 列选择: 用户可以选择显示哪些列,隐藏不需要的列。
    • 列格式化: 支持自定义列的显示格式,如日期格式、数值格式等。
  • 集成工作流:
    • 工作流任务: DataList 可以与 Joget 的工作流引擎集成,显示与工作流任务相关的数据记录。
    • 操作按钮: 可以在 DataList 中添加自定义操作按钮,触发特定的工作流操作或自定义脚本。
1.2.1.2 创建和使用 DataList
  1. 创建 DataList: 在 Joget 的 DataList Builder 中创建一个新的 DataList。
  2. 选择数据源: 选择 DataList 的数据源,可以是数据库表、视图或自定义查询。
  3. 配置列: 配置 DataList 的列,选择要显示的字段,并设置列的显示格式和排序方式。
  4. 设置过滤和排序: 配置 DataList 的过滤和排序选项,允许用户根据特定条件过滤和排序数据记录。
  5. 添加操作按钮: 在 DataList 中添加操作按钮,允许用户进行查看、编辑、删除和导出等操作。
  6. 发布 DataList: 将配置好的 DataList 发布到 Joget 系统中,供用户使用。
1.2.1.3 示例

假设你有一个员工信息管理系统,可以创建一个 DataList 来展示员工信息:

  • 列:
    • 员工编号
    • 姓名
    • 部门
    • 职位
    • 入职日期
  • 操作:
    • 查看详细信息
    • 编辑员工信息
    • 删除员工记录
    • 导出员工数据

1.2.2 Design

DataList 的设计(Design)概念涉及到如何定义和配置 DataList,以便在应用程序中显示和操作数据。

1.2.2.1 设计概念
  • Columns): 定义 DataList 中显示的列。每一列对应数据源中的一个字段,可以配置列的标签、类型、格式等。
  • 数据绑定Binder): 定义 DataList 如何从数据源中获取数据。Binder 负责处理数据的获取、过滤、排序和分页等操作。常见的 Binder 类型包括 SQL Binder、Bean Binder、JSON Binder 和 LDAP Binder。
  • 过滤器Filters): 定义用户可以用来过滤 DataList 数据的条件。过滤器可以是文本框、下拉列表、日期选择器等。
  • 操作Actions): 定义用户可以对 DataList 中的数据执行的操作。操作可以是查看、编辑、删除、导出等。
  • 样式和布局Style and Layout): 定义 DataList 的外观和布局,包括表格样式、分页样式等。
1.2.2.2 设计步骤
  1. 定义列: 在 <columns> 标签中定义 DataList 中显示的列。每一列使用 <column> 标签定义,包含列名和标签。
  2. 配置数据绑定: 在 <binder> 标签中配置数据绑定。选择合适的 Binder 类型,并配置数据源和查询参数。
  3. 添加过滤器: 在 <filters> 标签中添加过滤器。每一个过滤器使用 标签定义,包含过滤器的名称、标签和类型。
  4. 定义操作: 在 <actions> 标签中定义用户可以执行的操作。每一个操作使用 <action> 标签定义,包含操作的名称、标签、类型和 URL。
  5. 设置样式和布局: 根据需要设置 DataList 的样式和布局,以确保 DataList 的外观和用户体验符合要求。
1.2.2.3 示例

以下是一个 DataList 配置示例,展示了如何设计一个 DataList

<datalist><id>exampleDatalist</id><name>Example DataList</name><binder><className>org.joget.apps.datalist.lib.SqlDatalistBinder</className><properties><property><name>dataSource</name><value>jdbc/joget</value></property><property><name>sql</name><value>SELECT id, name, email FROM users WHERE name LIKE ? ORDER BY name</value></property><property><name>params</name><value>%${filter_name}%</value></property></properties></binder><columns><column><name>id</name><label>ID</label></column><column><name>name</name><label>Name</label></column><column><name>email</name><label>Email</label></column></columns><filters><filter><name>filter_name</name><label>Name</label><type>TextField</type></filter></filters><actions><action><name>view</name><label>View</label><type>Hyperlink</type><url>/view?id=${id}</url></action><action><name>edit</name><label>Edit</label><type>Hyperlink</type><url>/edit?id=${id}</url></action></actions>
</datalist>

1.3 UserView

Userview 是一个用于定义和管理用户界面的组件。Userview 允许您创建自定义的用户界面,以便用户可以访问和操作应用程序中的数据和功能。Userview 是 Joget 应用程序的重要组成部分,它提供了一个灵活的方式来组织和展示应用程序的内容。

1.3.1 主要概念

  • 页面Pages): Userview 由多个页面组成,每个页面可以包含不同的内容和功能。页面可以是表单、数据列表、HTML 内容、链接等。
  • 菜单Menus): Userview 中的每个页面通常通过菜单项来访问。菜单项定义了页面的类型和内容,并提供导航功能。
  • 权限Permissions): Userview 可以配置权限,以控制哪些用户或用户组可以访问特定的页面或菜单项。
  • 主题Themes): Userview 支持自定义主题,以改变用户界面的外观和风格。主题可以定义颜色、字体、布局等。
  • 国际化Localization): Userview 支持多语言,可以根据用户的语言偏好显示不同的语言内容。

1.3.2 设计步骤

  1. 定义 Userview: 在 标签中定义 Userview 的基本信息,如 ID、名称和描述。
  2. 添加菜单项: 在 <menus> 标签中添加菜单项。每个菜单项使用 <menu> 标签定义,包含菜单项的 ID、名称、类型和属性。
  3. 配置权限: 根据需要配置 Userview 的权限,以控制哪些用户或用户组可以访问特定的页面或菜单项。
  4. 设置主题: 在 标签中设置 Userview 的主题,以定义用户界面的外观和风格。
  5. 国际化: 根据需要配置 Userview 的多语言支持,以便根据用户的语言偏好显示不同的语言内容。

1.3.3 示例

以下是一个 Userview 配置示例,展示了如何定义一个简单的 Userview:

<userview><id>exampleUserview</id><name>Example Userview</name><description>This is an example userview.</description><menus><menu><id>home</id><name>Home</name><type>HtmlPage</type><properties><property><name>content</name><value>Welcome to the example userview!</value></property></properties></menu><menu><id>form</id><name>Form</name><type>Form</type><properties><property><name>formId</name><value>exampleForm</value></property></properties></menu><menu><id>datalist</id><name>DataList</name><type>DataList</type><properties><property><name>datalistId</name><value>exampleDatalist</value></property></properties></menu></menus><theme><className>org.joget.apps.userview.lib.DefaultTheme</className></theme>
</userview>

在这个示例中,Userview 定义了三个菜单项:一个 HTML 页面、一个表单和一个数据列表。每个菜单项都有自己的类型和属性。

1.4 Binder

Binder 是 Joget Workflow 中用于从数据源中提取数据并将其绑定到特定组件的组件。它负责处理数据的获取、过滤、排序和分页操作,确保组件显示正确的数据。常见的 Binder 类型包括 SQL Binder、Bean Binder、JSON Binder 和 LDAP Binder。通过使用 Binder,Joget 可以动态地显示和处理数据,使得应用程序更加灵活和强大。

1.4.1 主要概念

  • 数据源: Binder 从特定的数据源中提取数据。数据源可以是数据库、Web 服务、文件系统等。
  • 数据获取: Binder 负责从数据源中获取数据,并将其转换为 Joget 组件可以显示的格式。
  • 过滤: Binder 可以根据用户输入的过滤条件,从数据源中提取符合条件的数据。
  • 排序: Binder 可以根据用户指定的排序条件,对数据进行排序。
  • 分页: Binder 可以处理数据的分页操作,确保组件只显示当前页的数据。

1.4.2 常见的 Binder 类型

  • SQL Binder: 从数据库中提取数据,使用 SQL 查询语句。
  • Bean Binder: 从 Java Bean 中提取数据,通常用于从自定义 Java 类中获取数据。
  • JSON Binder: 从 JSON 数据源中提取数据,通常用于从 Web 服务或 API 中获取数据。
  • LDAP Binder: 从 LDAP 目录中提取数据,通常用于从目录服务中获取用户或组信息。

1.4.3 示例

以下是一个使用 SQL Binder 的 DataList 配置示例:

<datalist><id>exampleDatalist</id><name>Example DataList</name><binder><className>org.joget.apps.datalist.lib.SqlDatalistBinder</className><properties><property><name>dataSource</name><value>jdbc/joget</value></property><property><name>sql</name><value>SELECT id, name, email FROM users WHERE name LIKE ? ORDER BY name</value></property><property><name>params</name><value>%${filter_name}%</value></property></properties></binder><columns><column><name>id</name><label>ID</label></column><column><name>name</name><label>Name</label></column><column><name>email</name><label>Email</label></column></columns>
</datalist>

2. 登录

在这里插入图片描述
用户名和密码都是admin
在这里插入图片描述

登录成功后,可以在右下角看到Admin Bar的收缩按钮
在这里插入图片描述

展开Admin Bar按钮,可以看到管理员菜单栏
在这里插入图片描述

3. 应用

我们创建一个雇员(employee)信息的应用。

3.1 创建App

点击Design New App按钮,我们输入employee作为App ID和App Name。这两个值都要求保持唯一性(todo:在实现层是如何使用这两个值的?理论上来说App ID唯一就行了)

Please enter a unique ID and name for the App. Both fields are required.

在这里插入图片描述

3.2 创建Form

Design and manage forms to display and capture information from users.

Form 是用于创建和管理用户输入的界面组件。它是 Joget 工作流管理系统中的一个核心部分,用于收集和处理用户输入的数据。Form 通常用于创建、编辑和查看数据记录,并且可以与 Joget 的工作流和数据管理功能集成。

创建一个Form,用于保存雇员的基础信息
在这里插入图片描述

3.2.1 创建Section

Section 是 Form 中的一个分组容器,用于将相关的表单字段组织在一起。
创建多个Section,分别用于存储唯一ID、姓名和年龄。
新创建的Section需要编辑,可以通过Section右侧的Edit Section来进行。
在这里插入图片描述
在这里插入图片描述

3.2.1.1 创建Column

Column 是 Section 中的一个布局容器,用于在同一行中排列多个表单字段。

  • ID Section下我们新建一个Column,取名也叫ID。

在这里插入图片描述

  • NamesAndAge Section下新增两个Column
    在这里插入图片描述
    在这里插入图片描述
    然后修改Column名称为Names和Age
    在这里插入图片描述
    在这里插入图片描述
3.2.1.1.1 创建Field

Field 是表单中用于收集用户输入的基本元素。每个 Field 代表一个输入控件,如文本框、下拉列表、复选框等。

  • 给Label为ID的Column拖入ID Generator Field控件
    在这里插入图片描述

将其ID修改为employee_id;Label修改为Employee ID

  • 给Label为Names的Column拖入两个Text Field控件
    在这里插入图片描述

并修改它们的ID和Label为

IDLabels
first_nameFirst Name
last_nameLast Name
  • 给Label为Age的Column拖入一个Text Field控件
    在这里插入图片描述

将其ID修改为age;Label修改为Age

3.2.2 提交

在这里插入图片描述

3.3 创建Datalists

Design and manage Datalists to display data in a tabular format with support for linking, paging, sorting and filtering.

创建一个ID为basic_data_list,Name为Basic Data List的DataList。
在这里插入图片描述

3.3.1 选择绑定器

我们需要选择数据源绑定器(Form Data Binder)
在这里插入图片描述

然后选择之前创建的Form作为数据源
在这里插入图片描述

过滤条件先不填写

3.3.2 设计

设计分为4个区域:

  • 全局筛选(Filters)字段
  • 列(Columns)名称
  • 每行(Row)行为(Actions)
  • 全局行为(Actions)

我们如下图配置
在这里插入图片描述

给DeleteAction(本例2个)设置
在这里插入图片描述

3.3.3 提交

在这里插入图片描述

3.4 创建Userview

Design and manage Userviews to provide a user interface (UI) to end-users. An App may contain multiple Userviews to cater to different types of users.

创建ID为basic_userview,Name为Basic Userview的UserView
在这里插入图片描述
在这里插入图片描述

从右侧拖入Form,并编辑该组件,设置其Form为之前创建的basic
在这里插入图片描述

从右侧拖入List,并编辑该组件,设置其List为之前创建的Basic Data List
在这里插入图片描述
最后提交设置
在这里插入图片描述

3.5 发布App

Before end-users are able to access the App, it needs to be published first. Click on the Version link to select the App version to publish.

回到Design App页面,点击发布按钮
在这里插入图片描述
在这里插入图片描述

这样该App进入“发布状态”。
在这里插入图片描述

3.6 查看

通过App Center功能键查看所有发布的应用。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

通过上面一步的新增数据,我们可以在List中看到DataList设置的界面和数据。
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/65002.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

单机游戏《野狗子》游戏运行时提示dbghelp.dll缺失是什么原因?dbghelp.dll缺失要怎么解决?

《野狗子》游戏运行时提示dbghelp.dll缺失&#xff1a;原因与解决方案 在畅游《野狗子》这款引人入胜的游戏世界时&#xff0c;突然遭遇“dbghelp.dll缺失”的错误提示&#xff0c;无疑会给玩家的探险之旅蒙上一层阴影。作为一名深耕软件开发领域的从业者&#xff0c;我深知此…

Marscode AI辅助编程

直接使用Marscode的云服务来开发&#xff0c;也是很方便的&#xff0c;不用担心配置环境的问题&#xff0c;很适合初步学习&#xff0c;在任何设备都能开发。 番茄钟 请你基于html、tailwind css和javascript&#xff0c;帮我设计一个“番茄时钟”。要求UI简洁美观大方&#x…

使用Vue的props进行组件传递校验时出现 Extraneous non-props attributes的解决方案

作者&#xff1a;CSDN-PleaSure乐事 欢迎大家阅读我的博客 希望大家喜欢 使用环境&#xff1a;WebStorm 目录 出现错误的情况 报错&#xff1a; 代码&#xff1a; 报错截图 原因分析 解决方案 方法一 方法二 出现错误的情况 以下是我遇到该错误时遇到的报错和代码&…

ffmpeg之显示一个yuv照片

显示YUV图片的步骤 1.初始化SDL库 目的&#xff1a;确保SDL库正确初始化&#xff0c;以便可以使用其窗口、渲染和事件处理功能。操作&#xff1a;调用 SDL_Init(SDL_INIT_VIDEO) 来初始化SDL的视频子系统。 2.创建窗口用于显示YUV图像&#xff1a; 目的&#xff1a;创建一个…

iDP3复现代码模型训练全流程(一)——train_policy.sh

iDP3 核心脚本包括三个&#xff1a;deploy_policy.sh、vis_dataset.sh、train_policy.sh&#xff0c;分别代表了部署、预处理和训练&#xff0c;分别作为对应 py 脚本的参数设置前置环节 训练环节仅需运行指令&#xff1a; # 3d policy bash scripts/train_policy.sh idp3 gr1…

链原生 Web3 AI 网络 Chainbase 推出 AVS 主网, 拓展 EigenLayer AVS 应用场景

Chainbase AVS 主网的正式上线&#xff0c;正在将 Chainbase 不同的层进行深入的串联&#xff0c;为 Chainbase 数据网络带来了验证和处理方面的应用与拓展的能力&#xff0c;并成为数据体系全面启动的新契机。 在 12 月 4 日&#xff0c;链原生的 Web3 AI 数据网络 Chainbase …

Visual Studio 使用 GitHub Copilot 与 IntelliCode 辅助编码 【AI辅助开发系列】

&#x1f380;&#x1f380;&#x1f380;【AI辅助编程系列】&#x1f380;&#x1f380;&#x1f380; Visual Studio 使用 GitHub Copilot 与 IntelliCode 辅助编码Visual Studio 安装和管理 GitHub CopilotVisual Studio 使用 GitHub Copilot 扩展Visual Studio 使用 GitHu…

Jenkins 任意文件读取(CVE-2024-23897)修复及复现

Jenkins任意文件读取漏洞CVE-2024-23897修复及复现 漏洞详情影响范围漏洞复现修复建议 Jenkins是一个开源软件项目&#xff0c;是基于Java开发的一种持续集成工具&#xff0c;用于监控持续重复的工作&#xff0c;旨在提供一个开放易用的软件平台&#xff0c;使软件项目可以进行…

智慧农业云平台与水肥一体化:道品科技引领农业现代化新潮流

在当今科技飞速发展的时代&#xff0c;农业也正经历着一场深刻的变革。智慧农业云平台和水肥一体化技术的出现&#xff0c;为农业生产带来了前所未有的机遇和挑战。 一、智慧农业云平台&#xff1a;农业生产的 “智慧大脑” 智慧农业云平台就像是农业生产的 “智慧大脑”&…

C++--------内存结构

C内存结构 程序内存分区&#xff1a; 栈区&#xff08;Stack&#xff09;&#xff1a;由编译器自动分配和释放&#xff0c;用于存放函数的参数值、局部变量等。其操作方式类似于数据结构中的栈&#xff0c;先进后出。例如&#xff0c;在函数调用时&#xff0c;函数内部的局部变…

f(f(x))=x^2 -11x+36, 求f(6)的值,

偶然看到的一个题目&#xff0c;一时兴起&#xff0c;做了一下。题目如下 简单粗暴的思路是待定系数法&#xff0c;盲猜f(x)是个2次函数&#xff0c;令f(x)ax^2bxc ,带入原式&#xff0c;发现矛盾&#xff08;计算略&#xff09;就想放弃了。 忽然看到如果带入6 的话&#xf…

用Python PySide6 复刻了两软件UI 做下练习

图样 1 代码 1&#xff1a; # -*- coding: utf-8 -*-import sys from PySide6.QtCore import (QCoreApplication, QMetaObject, QRect, QDate) from PySide6.QtGui import QIcon, QPixmap, QColor from PySide6.QtWidgets import (QApplication, QDialog, QLineEdit, QPushBut…

活动图的理解和实践

在软件开发和系统设计中&#xff0c;理解系统的工作流程和并发行为是至关重要的。活动图作为一种重要的建模工具&#xff0c;为我们提供了一种直观且有效的方法来描述这些复杂的过程。本文将详细探讨活动图的理解与实践&#xff0c;包括其基本概念、用途、构建方法以及实际应用…

Redis缓存数据库

1、介绍 redis是一个开源的、使用C语言编写的、支持网络交互的、可基于内存也可持久化的Key-Value数据库 redis的官网&#xff1a;redis.io 注:域名后缀io属于国家域名&#xff0c;是british Indian Ocean territory&#xff0c;即英属印度洋领地 1、redis的特点: 1.丰富的数…

flink sink kafka

接上文&#xff1a;一文说清flink从编码到部署上线 之前写了kafka source&#xff0c;现在补充kafka sink。完善kafka相关操作。 环境说明&#xff1a;MySQL&#xff1a;5.7&#xff1b;flink&#xff1a;1.14.0&#xff1b;hadoop&#xff1a;3.0.0&#xff1b;操作系统&#…

WebRTC搭建与应用(五)-Coturn踩坑记

WebRTC搭建与应用(五)-Coturn踩坑记 近期由于项目需要在研究前端WebGL渲染转为云渲染&#xff0c;借此机会对WebRTC等有了初步了解&#xff0c;在此记录一下&#xff0c;以防遗忘。 第五章 WebRTC搭建与应用(五)-Coturn踩坑记 文章目录 WebRTC搭建与应用(五)-Coturn踩坑记前…

@vue/cli启动异常:ENOENT: no such file or directory, scandir

参考:https://blog.csdn.net/qq_44355188/article/details/122239566 首先异常报错是&#xff1a;ENOENT: no such file or directory, scandir ‘D:\Data\Project\VueProject\hello\node_modulesvue\cli-plugin-eslint\locales’&#xff1b;我的vue/cli版本是 4.5.15 重点是…

Git进阶:本地或远程仓库如何回滚到之前的某个commit

在Git的使用过程中&#xff0c;我们经常会遇到需要回滚到之前某个commit的情况。无论是为了修复错误、撤销更改&#xff0c;还是为了重新组织代码&#xff0c;回滚到特定commit都是一个非常有用的技能。本文将介绍几种常用的回滚方法&#xff0c;帮助读者更好地掌握Git版本控制…

【java设计模式】1 - 软件设计原则

1&#xff0c;软件设计原则 在软件开发中&#xff0c;为了提高软件系统的可维护性和可复用性&#xff0c;增加软件的可扩展性和灵活性&#xff0c;程序员要尽量根据6条原则来开发程序&#xff0c;从而提高软件开发效率、节约软件开发成本和维护成本。 1.1 开闭原则 对扩展开…

如何安全获取股票实时数据API并在服务器运行?

以下是安全获取股票实时数据 API 并在服务器运行的方法&#xff1a; 选择合适的券商或交易平台 评估自身需求&#xff1a;明确自己的交易策略、交易品种、交易频率等需求&#xff0c;以及对 股票api 的功能、性能、稳定性等方面的要求。调研券商或平台&#xff1a;了解不同券商…