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

大纲

  • 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/bicheng/65449.shtml

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

相关文章

【LeetCode 04】 209. 长度最小的子数组

暴力解法&#xff1a; 测试通过✅提交超时❌ class Solution {public int minSubArrayLen(int target, int[] nums) {//暴力解法int sum0;int subLength0;int resultInteger.MAX_VALUE;int lennums.length;for(int i0;i<len;i){//起始位置sum0;for(int ji;j<len;j){//终…

【已解决】图片png转ico格式

起因&#xff1a; pyinstaller 打包时需要 ico 格式图片&#xff0c;但是通常手上只有png格式的图片&#xff0c;为了将png转为ico&#xff0c;直接改后缀会报错“struct.error: unpack requires a buffer of 16 bytes”&#xff0c;我就上网搜了一下&#xff0c;发现都是一些…

AMD | GPU | 深度学习 | 如何使用

问题&#xff1a;我在复现代码的时候&#xff0c;发现自己只拥有AMD的GPU&#xff0c;对于一个硬件小白来说&#xff0c;怎么办呢&#xff1f;我想看看怎么使用&#xff1b;解决&#xff1a; 首先要安装支持AMD的GPU的pytorch&#xff0c;pytorch&#xff1b; 使程序在安装了支…

Blender高效优化工作流程快捷小功能插件 Haggis Tools V1.1.5

Haggis Tools V1.1.5 是一款专为Blender设计的插件&#xff0c;旨在优化工作流程、减少单调和重复的任务&#xff0c;从而为艺术家节省时间。这款插件适用于多个版本的Blender&#xff0c;能够有效提升工作效率。 Blender插件特点&#xff1a; 工作流程优化&#xff1a;专门设…

数据采集背后的效率革命:如何优化你的爬虫性能

在爬虫技术日益发展的今天&#xff0c;性能优化成为提升数据采集效率的关键。面对日益复杂的网页结构和庞大的数据量&#xff0c;高效的爬虫能够显著降低运行时间和资源成本。本文将围绕爬虫性能优化的核心方法展开讨论&#xff0c;并通过实例对比多进程、多线程以及普通爬取的…

OpenHarmony-5.PM 子系统(2)

电池服务组件OpenHarmony-4.1-Release 1.电池服务组件 Battery Manager 提供了电池信息查询的接口&#xff0c;同时开发者也可以通过公共事件监听电池状态和充放电状态的变化。电池服务组件提供如下功能&#xff1a; 电池信息查询。充放电状态查询。关机充电。 电池服务组件架…

测试冰淇淋模型

测试领域的冰淇淋模型&#xff08;Ice Cream Cone Model&#xff09;是一个相对于传统的测试金字塔模型的反转&#xff0c;是一种与经典金字塔模型相对的测试策略。在这种模型中&#xff0c;测试的分布和重点与传统金字塔模型相反。以下是冰淇淋模型的主要特点和原因&#xff1…

短视频矩阵账号管理技术源码搭建详解,支持OEM

一、引言 在短视频矩阵系统中&#xff0c;账号管理是至关重要的一环&#xff0c;它涉及到多平台账号的接入、用户信息的安全存储与高效管理、权限的精准控制以及账号数据的同步与更新等关键功能。一个健壮、灵活且安全的账号管理技术架构&#xff0c;能够为整个短视频矩阵系统的…

【驱动开发】设备分类、设备号申请和注销,注册和移除字符设备,以及一个基本的内核驱动程序框架代码

一、Linux内核对设备的分类 Linux的文件种类 序号符号类型文件内容文件名原信息1-普通文件√√√2d目录文件√√√3p管道文件√√4s本地socket文件√√5l链接文件软链接有;硬链接相当于别名√√6c字符设备√√7b块设备√√设备类型 Linux内核按驱动程序实现模型框架的不同,…

黑马Java面试教程_P2_MySQL

系列博客目录 文章目录 系列博客目录前言1. 优化1.1 MySQL中&#xff0c;如何定位慢查询&#xff1f;面试文稿 1.2 面试官接着问&#xff1a;那这个SQL语句执行很慢,如何分析 ( 如何优化&#xff09;呢?面试文稿 1.3 了解过索引吗?(什么是索引)1.4 继续问 索引的底层数据结构…

Learning Multi-Scale Photo Exposure Correction

Abstract 用错误的曝光捕捉照片仍然是相机成像的主要错误来源。曝光问题可分为以下两类:(i)曝光过度&#xff0c;即相机曝光时间过长&#xff0c;导致图像区域明亮和褪色;(ii)曝光不足&#xff0c;即曝光时间过短&#xff0c;导致图像区域变暗。曝光不足和曝光过度都会大大降低…

湖南引力:低代码助力实现智慧养老管理系统

“低代码开发宛如一座神奇的桥梁&#xff0c;它以简洁高效的方式连接起创意与应用&#xff0c;降低了开发门槛&#xff0c;为企业和开发者带来前所未有的便捷与可能&#xff0c;开启了快速实现软件梦想的新征程。” ——王港&#xff0c;湖南引力科技有限公司 湖南引力科技有…

uniapp中wx.getFuzzyLocation报错如何解决

一、用wx.getLocation接口审核不通过 用uniapp开发小程序时难免需要获取当前地理位置。 代码如下&#xff1a; uni.getLocation({type: wgs84,success: function (res) {console.log(当前位置的经度&#xff1a; res.longitude);console.log(当前位置的纬度&#xff1a; r…

【探花交友】day03—MongoDB基础

目录 课程介绍 1、通用设置 1.1 需求分析 1.2 查询通用设置 1.2 陌生人问题 1.3 通知设置 1.4 黑名单管理 2、MongoDB简介 1.1、MongoDB简介 1.2、MongoDB的特点 1.3 数据类型 3、MongoDB入门 2.1、数据库以及表的操作 2.2、新增数据 2.3、更新数据 2.4、删除数…

编程考古-传奇的开始Delphi(下)含所有版本.iso

概览 Delphi 的最新版本&#xff0c;即 Delphi 12&#xff0c;勾勒出了自公司创立以来的一条进化之路。该平台不断通过提升开发者生产力、扩展其支持的平台范围以及引入前沿技术来实现自我完善。作为 Embarcadero 提供的主要快速应用开发&#xff08;RAD&#xff09;环境&…

Debian安装配置RocketMQ

安装配置 本次安装在/tools/rocket目录下 下载 wget https://dist.apache.org/repos/dist/release/rocketmq/5.3.1/rocketmq-all-5.3.1-bin-release.zip 解压缩 unzip rocketmq-all-5.3.1-bin-release.zip 如果出现以下报错 -bash: unzip: command not found可安装unzip工具后执…

MyBatis知识点笔记

目录 mybatis mapper-locations的作用&#xff1f; mybatis configuration log-impl 作用&#xff1f; resultType和resultMap的区别&#xff1f; 参数 useGeneratedKeys &#xff0c;keyColumn&#xff0c;keyProperty作用和用法 取值方式#和$区别 动态标签有哪些 MyBat…

20241218-信息安全理论与技术复习题

20241218-信息安全理论与技术复习题 一、习题1 信息安全的基本属性是&#xff08;D )。 A、机密性 B、可用性 C、完整性 D、上面 3 项都是 “会话侦听和劫持技术” 是属于&#xff08;B&#xff09;的技术。 A、 密码分析还原 B、 协议漏洞渗透 C、 应用漏洞分析与渗透 D、 D…

顶顶通呼叫中心中间件的三种呼叫方式(mod_cti基于FreeSWITCH)

顶顶通呼叫中心共有三种呼叫方式&#xff1a; 手拨呼叫点击呼叫自动外呼 联系我们 有意向了解呼叫中心中间件的用户&#xff0c;可以点击该链接添加工作人员&#xff1a;https://blog.csdn.net/H4_9Y/article/details/136148229 手拨呼叫 手拨呼叫属于常规的呼叫方式&…

C 语言中 strlen 函数的深入剖析

目录 一、strlen 函数的基本介绍 二、strlen 函数的工作原理 三、strlen 函数的使用注意事项 四、strlen 与其他字符串处理函数的结合使用 五、strlen 在实际编程中的应用场景 六、总结 在 C 语言的编程世界里&#xff0c;strlen函数是一个经常被使用但又容易被误解的重要…