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

IBM BAW(原BPM升级版)使用教程第八讲

续前篇!

一、流程开发功能模块使用逻辑和顺序

前面我们已经对 流程用户界面公开的自动化服务服务事件团队数据性能文件各个模块进行了详细讲解,现在统一进行全面统一讲解。

在 IBM Business Automation Workflow (BAW) 中,流程开发是一个系统化的过程,涉及多个功能模块的协作与组合。以下将基于各个功能模块(流程用户界面公开的自动化服务服务事件团队数据性能文件)进行全面讲解,并阐述在流程开发中如何使用这些功能模块。我们将基于功能模块的使用逻辑和顺序,帮助您理解每个模块的作用以及它们如何协同工作。

1. 流程设计(Process)

流程 是业务流程的核心,用于定义任务的执行顺序、条件、事件、服务调用等。流程设计决定了自动化流程的执行路径。

1.1 使用流程设计的基本逻辑
  • 流程建模:在 IBM BAW 中,首先通过 Business Automation Designer 创建和设计流程图。此步骤包括定义任务、任务流转路径、条件判断、事件处理等。

  • 流程元素:常见的流程元素包括:

    • 任务(Activity):定义流程中的操作,可能是用户任务或系统任务。

    • 网关(Gateway):用于流程分支,定义条件判断(例如,条件网关、并行网关等)。

    • 事件(Event):定义触发流程或任务的事件,例如开始事件、中间事件、结束事件等。

  • 流程控制:通过网关和条件判断控制流程路径,确保流程在不同条件下的流转。

1.2 流程设计的步骤
  • 步骤 1:定义流程任务(如审批、任务分配、业务操作等)。

  • 步骤 2:设置任务之间的顺序关系,通过连接线设置流程路径。

  • 步骤 3:使用网关定义流程的条件分支。

  • 步骤 4:插入事件来触发或结束流程(例如,时间事件、信号事件等)。

  • 步骤 5:定义流程的数据输入输出和变量。

2. 用户界面(User Interface)

用户界面 主要用于创建用户任务中的表单界面。它使得业务人员能够与流程进行交互,输入数据、审批任务、查看文档等。

2.1 用户界面使用逻辑
  • 创建任务表单:在流程设计中,用户任务需要一个表单界面来呈现给任务的执行者(例如审批人员)。用户界面可以通过 Form Designer 进行设计,使用低代码方式添加字段、按钮等。

  • 动态表单:用户界面中的字段可以根据业务逻辑动态生成或调整。例如,可以根据某个任务的执行状态或用户输入的数据,动态展示不同的表单内容。

  • 表单绑定:表单中的数据字段与流程中的 流程变量业务对象 进行绑定,确保表单中的数据能够正确地传递到流程中,或者流程中的数据能够显示在表单中。

2.2 用户界面创建步骤
  • 步骤 1:定义用户任务(如审批、信息录入等)。

  • 步骤 2:为用户任务创建表单,选择表单字段和控件。

  • 步骤 3:将表单中的字段与流程变量或业务对象进行绑定。

  • 步骤 4:通过表单展示数据,并设计用户输入的数据流。

3. 公开的自动化服务(Public Automation Services)

公开的自动化服务 是指在流程中定义并公开的服务,它们可以通过外部系统或用户访问和调用。

3.1 自动化服务的使用逻辑
  • 定义服务:在 IBM BAW 中,可以定义 自动化服务(如 REST 服务、Web 服务等)来提供自动化的功能。这些服务可被流程中的任务调用,也可以由外部系统访问。

  • 服务暴露:服务可以是公开的,也可以是私有的。公开的自动化服务是指可以被外部系统访问的服务,通常用于跨系统的集成和数据交换。

3.2 服务的创建与调用
  • 步骤 1:定义所需的自动化服务,并配置其接口(如 REST API、Web 服务)。

  • 步骤 2:在流程中调用公开的服务,使用 服务任务 来执行服务操作。

  • 步骤 3:在流程执行过程中,将服务的输入参数与流程数据绑定,获取服务的返回值并处理。

4. 服务(Services)

服务 是流程自动化的核心组成部分,它能够执行流程中的任务、计算、调用外部系统或处理业务逻辑。

4.1 服务的使用逻辑
  • 服务的开发与集成:开发人员可以为流程创建自定义服务,例如数据库查询、外部API调用、文件处理等。服务可以是 系统服务(自动化任务)或 外部服务(与其他系统交互)。

  • 服务调用:在流程设计中,通过 服务任务调用活动 调用服务,执行任务中的自动化操作。

4.2 服务创建与调用步骤
  • 步骤 1:开发和定义自定义服务(如 API 调用、数据库操作、外部接口集成)。

  • 步骤 2:在流程中创建 服务任务,调用定义好的服务。

  • 步骤 3:根据需要传递参数并处理返回值。

5. 事件(Events)

事件 在流程中用于触发、暂停、恢复或结束流程。事件可以是 开始事件结束事件中间事件 等。

5.1 事件使用逻辑
  • 定义触发条件:事件用于在流程中插入特定的触发条件。例如,可以定义 时间事件,在特定时间点触发流程;或者使用 消息事件 来等待外部系统的响应。

  • 事件类型

    • 开始事件:启动流程实例。

    • 结束事件:结束流程实例。

    • 中间事件:在流程执行中间插入,用于等待外部事件或触发特定操作。

5.2 事件使用步骤
  • 步骤 1:根据流程需求定义事件类型(开始、结束、中间)。

  • 步骤 2:配置事件的触发条件(如时间、消息、信号等)。

  • 步骤 3:将事件与流程中的任务、服务等进行关联。

6. 团队(Teams)

团队 在流程中定义了任务的执行者,通常由用户、用户组、或服务组成。

6.1 团队使用逻辑
  • 任务分配:流程中的任务需要分配给 用户。可以基于角色、业务需求、用户属性等进行任务分配。

  • 权限管理:通过团队配置,流程设计人员可以指定谁有权限执行特定的任务和访问特定的数据。

6.2 团队配置步骤
  • 步骤 1:定义团队成员(用户或用户组)。

  • 步骤 2:设置任务的权限和角色,确保任务分配符合业务需求。

  • 步骤 3:通过任务分配规则将任务分配给合适的团队。

7. 数据(Data)

数据 在流程中用于存储、传递和操作信息,如 流程变量业务对象 等。

7.1 数据使用逻辑
  • 数据模型设计:通过 业务对象 定义业务数据的结构,例如订单信息、客户信息等。流程变量则用于在任务和流程之间传递临时数据。

  • 数据绑定:在流程设计中,用户界面字段、服务输入输出和流程变量之间进行数据绑定,确保数据流动和一致性。

7.2 数据管理步骤
  • 步骤 1:定义业务对象和流程变量。

  • 步骤 2:在任务和服务之间绑定数据,确保信息的传递和存储。

  • 步骤 3:根据流程逻辑更新和修改数据。

8. 性能(Performance)

性能 监控是确保流程执行效率的关键。通过跟踪和监控性能指标,开发人员可以优化流程执行。

8.1 性能监控逻辑
  • 监控工具:通过 Performance Monitoring,开发人员可以查看流程执行的性能数据,如执行时间、资源消耗等。

  • 性能优化:根据监控数据,调整流程中的任务顺序、服务调用等,优化流程效率。

8.2 性能监控步骤
  • 步骤 1:启用 性能监控工具,配置监控指标。

  • 步骤 2:分析监控数据,识别瓶颈。

  • 步骤 3:根据分析结果优化流程和任务。

9. 文件(Files)

文件 在流程中用于存储、传递和操作文件,如用户上传的文件、生成的报告等。

9.1 文件使用逻辑
  • 文件上传与下载:通过 Web 文件服务器文件,用户可以在流程中上传或下载文件。

  • 文件存储:生成的文件可以存储在服务器文件系统中,供后续流程或外部系统访问。

9.2 文件处理步骤
  • 步骤 1:设计文件上传或下载任务,定义文件的存储位置和格式。

  • 步骤 2:通过流程中的任务处理文件(如生成报告、检查文件内容等)。

  • 步骤 3:确保文件在流程中的传递和存储符合业务需求。

总结

在 IBM BAW 中,流程设计 是整个开发的核心,围绕着 流程、用户界面、服务、事件、团队、数据、文件 等模块进行开发和优化。通过 低代码设计器集成的开发工具,业务人员和开发人员可以高效协作,快速响应业务需求的变化。开发人员通过定制服务和工具包实现业务流程的自动化,而业务人员则可以根据需求灵活调整流程,确保业务与 IT 之间的高效协作。

二、如何灵活使用各个模块

IBM BAW 提供的功能模块就像 积木 一样,用户可以根据 实际业务需求流程目标 灵活地进行组合和使用。这种 模块化 的设计理念使得流程开发非常灵活且易于调整,同时也支持不同角色的协作。业务人员、流程设计人员和 IT 开发人员都可以在自己的领域内发挥作用,并共同构建出符合业务需求的自动化流程。

1. 灵活组合的核心理念

在 IBM BAW 中,所有的功能模块都可以根据需要独立使用,也可以与其他模块相互组合,以构建出一个完整的业务流程。这种灵活性使得每个功能模块既可以单独发挥作用,又能与其他模块无缝集成,满足不同层次和不同角色的需求。

2. 模块化积木的使用

  • 流程模块:业务流程本身是流程自动化的核心,开发人员和业务人员可以使用 流程设计工具 将任务、条件、事件等元素按需组合,设计出符合业务需求的工作流。每个流程模块都可以独立调整,业务人员也可以直接参与到流程的设计中。

  • 用户界面模块:通过 用户界面设计工具,业务人员可以根据任务需要创建和调整表单,修改输入字段和显示内容。表单控件可以与流程变量绑定,确保数据的流动和展示。

  • 服务模块:开发人员可以将常用的业务逻辑封装成自定义的 服务模块,例如查询、计算、外部接口等服务,业务人员在流程设计时可以通过简单的配置调用这些服务,而无需了解技术细节。

  • 数据模块:通过 业务对象流程变量,数据可以在流程中传递和管理。开发人员定义数据模型,而业务人员则可以通过界面灵活配置数据输入和输出。

  • 事件模块:业务流程中,事件模块用于 触发暂停 流程的执行,事件可以是外部系统的响应、时间的推移、或其他条件的触发。事件的组合可以帮助在流程设计中实现更复杂的逻辑和条件判断。

  • 团队模块:通过 团队配置,任务可以分配给 用户用户组,并定义任务的执行权限和分配策略。不同的团队成员(如业务人员、审批人员等)可以通过任务和事件进行协作。

  • 文件模块:在流程中,文件可以用于存储和传递数据,例如上传的文档、生成的报告等。文件模块与其他模块(如用户任务、服务等)结合,支持文档处理和文件流转。

  • 性能模块:通过 性能监控跟踪 功能,流程的执行效率和资源消耗可以得到实时监控,为流程的优化提供数据支持。

3. 如何灵活使用这些功能模块

以下是一些常见的使用案例,展示如何根据不同业务需求灵活组合这些模块:

案例 1:审批流程
  • 流程模块:定义审批流程,包括多个任务(如“部门经理审批”、“财务审批”),每个任务之间通过条件网关进行分支。

  • 用户界面模块:为每个审批任务设计动态表单,收集审批意见和附件(如发票)。

  • 服务模块:调用外部系统服务查询订单状态、库存等。

  • 数据模块:在流程中传递订单信息和审批结果,使用流程变量保存审批意见。

  • 事件模块:使用时间事件,在审批未完成时自动提醒相关人员,或使用信号事件触发后续流程。

  • 团队模块:将审批任务分配给不同的审批人员或审批组。

  • 文件模块:支持上传文件(如发票)和存储生成的报告。

  • 性能模块:监控审批流程的执行时间,查看哪些环节可能造成瓶颈。

案例 2:订单处理流程
  • 流程模块:设计订单处理流程,包含“订单确认”、“库存检查”、“发货”三个主要任务,任务间通过条件判断和服务调用进行流转。

  • 用户界面模块:为“订单确认”任务设计表单,收集订单的详细信息,并让订单负责人确认订单内容。

  • 服务模块:通过调用外部库存查询服务,检查订单商品的库存情况。

  • 数据模块:使用业务对象存储订单信息(如客户信息、商品详情、支付方式等)。

  • 事件模块:使用消息事件监听外部系统(如支付系统)的支付结果,触发发货任务。

  • 团队模块:将不同任务分配给相关团队成员,如订单确认由销售团队负责,库存检查由仓库团队负责,发货由物流团队负责。

  • 文件模块:上传和存储订单文件(如订单确认书),并生成出货单。

案例 3:客户服务管理流程
  • 流程模块:设计客户服务流程,包含“客户信息收集”、“问题诊断”、“解决方案提供”任务,任务间使用条件网关进行分支。

  • 用户界面模块:为“客户信息收集”任务设计表单,收集客户信息(如问题描述、联系方式等)。

  • 服务模块:调用外部客户支持系统的服务,获取客户历史记录和问题相关信息。

  • 数据模块:使用业务对象存储客户信息和问题记录。

  • 事件模块:设置时间事件,当客户问题未解决时自动提醒客户服务人员进行跟进。

  • 团队模块:将不同任务分配给客户服务团队、技术支持团队、解决方案团队等。

  • 文件模块:支持上传和存储客户提供的相关文档,如屏幕截图、故障描述等。

4. 灵活性与自主性

由于 IBM BAW 提供的各个功能模块是相对独立的并且可以灵活配置,业务人员、流程设计人员和 IT 开发人员都能够根据实际需求定制和调整流程。例如:

  • 业务人员可以在低代码设计器中自己调整表单字段、任务顺序、条件判断等,甚至在流程执行过程中对任务进行调整。

  • 流程设计人员可以将 IT 开发人员提供的自定义服务(如 Web 服务、API 调用等)集成到流程中,并根据业务需求设计流程逻辑。

  • IT 开发人员则可以专注于提供服务、接口和集成,满足业务流程所需的自动化功能,而不需要深入了解具体的业务流程。

总结

通过 模块化设计,IBM BAW 为流程开发提供了高度的灵活性和可配置性,业务人员、流程设计人员和 IT 开发人员可以在各自的角色中高效协作,快速响应业务需求和变化。通过合理组合 流程、用户界面、自动化服务、服务、事件、团队、数据、文件 等功能模块,开发团队能够快速构建和优化业务流程,提高流程的效率和适应性。这种灵活的模块化设计不仅提升了开发效率,也增强了业务人员对流程的控制能力。

三、业务人员、流程设计人员、IT 开发人员如何紧密协作

IBM BAW(Business Automation Workflow)平台中可以实现 业务人员、流程设计人员、IT 开发人员 之间的紧密协作,从而高效地完成业务流程的开发和优化。以下是对这一协作模型的详细阐述,解释如何利用 IBM BAW 的功能模块来实现这种协同工作:

1. 流程设计人员与业务人员(业务专家)的协作

在 IBM BAW 中,流程设计人员和业务人员(尤其是业务专家)可以通过系统提供的图形化界面共同参与到流程的设计和调整中来。这样不仅能提高流程的效率和准确性,还能使得流程更加贴合业务实际需求。

1.1 业务人员如何参与流程设计
  • 图形化流程设计:IBM BAW 提供了 Business Automation Designer(业务自动化设计器),这是一个图形化界面,业务人员(特别是业务专家)可以通过它参与流程的设计,尤其是简单的业务逻辑、决策点、任务分配等部分。在这个界面中,业务人员可以用拖拽的方式来创建流程图,设定任务的流程、条件分支、事件等。

  • 用户界面构建:业务人员可以通过 IBM BAW 提供的低代码界面,设计 用户任务表单界面,这对于那些需要频繁调整和反馈的业务流程非常有帮助。例如,业务人员可以直接创建用户界面表单,用于任务执行时的数据输入和交互。

  • 业务逻辑与流程协作:在流程图的构建过程中,业务人员与流程设计人员共同讨论流程的步骤和任务,通过集中的协作,快速明确哪些步骤是业务人员关注的核心任务,哪些是自动化服务或 IT 开发人员需要提供的服务。

1.2 如何在设计过程中进行交互
  • 面对面交流:IBM BAW 提供了一个统一的流程设计工具,设计人员和业务人员可以通过系统直接进行面对面的交互讨论,调整流程图、表单、用户界面和事件处理等。业务人员可以实时提供反馈,流程设计人员根据需求调整流程设计。

  • 低代码工具的使用:通过低代码工具,业务人员可以自己进行简单的流程调整,如修改任务流转、添加用户界面字段、调整数据映射等。这不仅减少了对 IT 开发人员的依赖,还提升了业务人员的参与度和灵活性。

2. IT 开发人员的角色:定制服务与模块化开发

IT 开发人员在流程开发中的角色通常集中在定制化服务的开发和流程扩展部分。开发人员不需要深入到业务流程的具体细节,而是根据业务人员和流程设计人员提供的需求,开发所需的 自定义服务Toolkit,然后将这些服务与业务流程结合,形成最终的工作流。

2.1 自定义服务(如自定义Toolkit)
  • Toolkit的开发:IT 开发人员根据业务需求开发自定义的 Toolkit,例如创建数据服务、业务规则服务、外部系统接口等。开发人员通过 JavaREST API 等方式实现这些服务,然后将其封装为自定义工具包。

  • 集成到流程中:一旦自定义服务开发完成,流程设计人员就可以在流程设计器中调用这些服务,将它们集成到流程中。这种方式使得开发人员的工作更加模块化和独立,他们只需关注服务的开发和优化,避免深入涉及具体的业务流程设计。

2.2 服务的配置与定制
  • 服务配置:在 IBM BAW 中,开发人员可以创建多种类型的服务(如 Web 服务REST 服务外部服务)以支持业务流程的自动化执行。IT 开发人员与业务人员的沟通可以集中在服务功能和数据接口的设计上,开发人员根据业务需求定制服务接口、处理逻辑等。

  • 松耦合架构:IBM BAW 提供的松耦合架构使得开发人员可以专注于服务的开发而不需要频繁干预业务流程的设计。这样,流程设计人员和业务人员能够保持较高的自主性,同时又能依赖于开发人员提供的稳定和定制化的服务。

3. 协作流程:业务人员与流程设计人员、IT开发人员的有效配合

IBM BAW 使得 业务人员流程设计人员IT 开发人员 能够有效协作,从而快速响应业务变化,优化流程。

3.1 流程的迭代与调整
  • 业务人员主导流程调整:由于 IBM BAW 提供了强大的低代码设计能力,业务人员可以在流程运行的过程中,根据实际业务情况自行调整某些流程组件。例如,他们可以在流程图中调整任务的执行顺序,修改表单字段,更新流程逻辑等。这样,业务人员能直接参与到流程的持续优化中,而不需要每次都依赖于 IT 开发人员。

  • IT 开发人员支持复杂任务:对于需要自定义或复杂逻辑的部分(如复杂的计算、外部系统调用、集成等),IT 开发人员负责开发相关的服务或工具包,并将其集成到流程中。这使得业务流程能够灵活地应对变化,同时保证系统的稳定性和功能的完整性。

3.2 自定义服务与业务流程结合
  • 模块化设计:开发人员可以将开发的服务作为独立模块集成到流程设计中,避免每次业务调整都需要修改流程本身。业务人员可以通过流程设计器配置任务、服务和事件,而开发人员只需要关注后台的技术实现。

  • 服务调用与数据共享:在流程设计中,调用自定义服务时,业务人员可以通过简单的配置实现对数据的共享和交换,而不需要深入了解服务的具体实现方式。这降低了业务人员对 IT 技术的依赖,提高了业务人员对流程的控制能力。

4. 业务人员如何在实际业务中自主管理和调整流程

通过 IBM BAW 的灵活设计,业务人员不仅可以参与到流程的设计中,还能够在流程运行中根据实际业务需求调整流程。

4.1 动态调整流程
  • 流程调整:业务人员可以直接在 IBM BAW 系统中调整流程中的任务、事件和决策点。比如,某个业务流程由于特殊情况需要临时调整流程路径,业务人员可以通过简单的配置或调整来完成这些更改,无需依赖开发人员。

  • 表单和数据调整:IBM BAW 提供了丰富的表单定制功能,业务人员可以根据需求添加或修改表单字段,调整数据输入输出的内容和格式。

4.2 与 IT 开发人员的协同
  • 开发人员定制服务:IT 开发人员根据业务人员的需求,开发自定义的服务和功能模块,并提供接口供业务流程调用。例如,业务人员提出需要一个外部库存查询服务,开发人员负责开发该服务并将其集成到流程中。

  • 模块组合与自定义:一旦服务被集成到系统中,业务人员可以通过 流程设计器 将这些服务进行组合,形成符合业务需求的流程,而开发人员不需要了解流程的具体业务逻辑。

5. 总结

通过 IBM BAW 的协同工作流程,业务人员、流程设计人员和 IT 开发人员可以实现以下目标:

  • 业务人员:能够参与到流程设计中,调整流程、用户界面和表单,甚至在流程运行中根据业务需求进行灵活的调整。

  • 流程设计人员:通过集中的图形化工具,设计和调整流程,并将自定义服务与业务需求结合,形成完整的自动化流程。

  • IT 开发人员:只需专注于开发必要的 自定义服务(如 Toolkit),并通过 REST APIWeb 服务 等方式将服务集成到业务流程中,减少了对具体业务的关注,提高了开发效率。

这种协作模式使得企业能够快速响应业务需求的变化,并且让业务人员、流程设计人员和 IT 开发人员能够在各自的专业领域内发挥作用,最终形成高效、灵活的业务流程。

最后,到目前为止,基于IBM BAW 进行流程设计已经基本上讲完。本系列没有详细讲解如何开发一个流程,而是对流程开发中的各个功能模块进行了全面讲解,这是为了让流程设计人员、业务人员、IT开发人员能够理解这些模块之间的关系与作用,详细的流程开发实例请在本系列第一讲中提供的下载地址下载,里面包含了所需的开发环境和详细的教程,本系列是对该教程的补充。

未完,待续!下面是关于CASE及BAW管理方面的内容

相关文章:

IBM BAW(原BPM升级版)使用教程第八讲

续前篇! 一、流程开发功能模块使用逻辑和顺序 前面我们已经对 流程、用户界面、公开的自动化服务、服务、事件、团队、数据、性能、文件各个模块进行了详细讲解,现在统一进行全面统一讲解。 在 IBM Business Automation Workflow (BAW) 中,…...

202534 | KafKa简介+应用场景+集群搭建+快速入门

Apache Kafka 简介 一、什么是 Kafka? Apache Kafka 是一个高吞吐量、分布式、可扩展的流处理平台,用于构建实时数据管道和流应用程序。它最初由 LinkedIn 开发,并于 2011 年开源,目前由 Apache 软件基金会进行维护。 Kafka 具备…...

[思维模式-25]:《本质思考力》-6- 马克思主义哲学的五对基本哲学范畴,以及在计算机领域的体现

一、马克思主义哲学的五对基本哲学范畴, 马克思主义哲学的五对基本哲学范畴是内容与形式、现象与本质、原因与结果、必然性与偶然性、可能性与现实性,以下为具体分析: 内容与形式:组成元素 VS 组成结构 内容指构成事物内在要素的…...

6. 存储池配置与CephFS创建 ceph version 14.2.22

6. 存储池配置与CephFS创建 6.1 CRUSH规则管理6.2 纠删码配置6.3 为SSD和HDD创建专用CRUSH规则6.4 创建CephFS存储池6.5 验证存储池配置记录OSD盘符 所有节点都执行 7. 客户端挂载CephFS7.1 Ubuntu客户端配置7.2 使用内核驱动挂载7.3 设置开机自动挂载 说明:配置Cep…...

RocketMQ Kafka区别

架构 ZooKeeper:管理 Broker 注册、分区 Leader 选举及消费者组状态。Broker:存储 Partition数据,每个 Partition 为独立日志文件。Producer/Consumer:通过 ZooKeeper获取路由信息,实现消息分发与消费。 NameServer&am…...

linux和linux 、linux和windows实现文件复制笔记

前提:两设备得在同一局域网下,且启用了ssh 一、linux和linux实现文件复制 从 Ubuntu B 复制文件夹到 Ubuntu A 在 Ubuntu A 上打开终端,执行: scp -r userBubuntuB_IP:/home/userB/folder_to_copy /home/userA/destination/ 二、linux和…...

Flink 运维监控与指标采集实战

一、引言:实时任务为什么必须监控? 在实时任务中,任务失败、数据延迟、资源瓶颈往往并非由明显的代码异常引发,而是隐蔽地潜藏在: Kafka 积压无告警 Flink Checkpoint 卡顿却无人知晓 反压、TaskManager 内存 OOM 未实时感知 为了保障业务 SLA、高可用与可观测性,构建完…...

linux 开发小技巧之git增加指令别名

众所周知,git的指令执行时都得敲好几个字符才能补充上来,比如常用的git status,是不是要将全部的字符一个个地在键盘敲上来,有没有更懒惰点办法,可以将经常用到的git命令通过其他的别名的方式填充,比如刚刚…...

【八股消消乐】项目中如何优化JVM内存分配?

😊你好,我是小航,一个正在变秃、变强的文艺倾年。 🔔本专栏《八股消消乐》旨在记录个人所背的八股文,包括Java/Go开发、Vue开发、系统架构、大模型开发、机器学习、深度学习、力扣算法等相关知识点,期待与你…...

操作系统实验习题解析 上篇

孤村落日残霞,轻烟老树寒鸦,一点飞鸿影下。 青山绿水,白草红叶黄花。 ————《天净沙秋》 白朴 【元】 目录 实验一: 代码: 解析: 运行结果: 实验二: 代码解析 1. 类设计 …...

Yocto中`${B}`变量的作用

在Yocto项目中,${B}是一个关键路径变量,用于指定构建目录(Build Directory),其作用是存放编译过程中生成的中间文件(如Makefile、目标文件、日志等),从而将构建产物与源码目录分离,保持源码环境的独立性^1。 具体解析: 定义与默认路径 默认情况下,${B}的路径为${TM…...

JDBC执行sql过程

1. 加载数据库驱动​ JDBC 通过 ​​驱动(Driver)​​ 实现与不同数据库的通信。驱动需提前加载到 JVM: 手动加载(JDBC 4.0 前)​​: Class.forName("com.mysql.cj.jdbc.Driver"); // MySQL 驱…...

python如何提取Chrome中的保存的网站登录用户名密码?

很多浏览器都贴心地提供了保存用户密码功能,用户一旦开启,就不需要每次都输入用户名、密码,非常方便。作为python脚本,能否拿到用户提前保存在浏览器中的用户名密码,用以自动登录呢?必须有,小爬…...

【数据结构入门训练DAY-30】数的划分

文章目录 前言一、题目二、解题思路结语 前言 本次训练内容 训练DFS。训练解题思维。 一、题目 将整数n分成k份,且每份不能为空,任意两份不能相同(不考虑顺序)。 例如:n7,k3,下面三种分法被认为是相同的。 {1&a…...

CD37.【C++ Dev】string类的模拟实现(上)

目录 1.string基本知识的回顾 2.简单的模拟实现 准备操作 代码实现 成员变量 构造函数 C风格构造的函数 无参构造函数 C风格构造的函数与无参构造函数合二为一 析构函数 c_str() size() operator[ ] 可读可写 只可读 iterator(指针版) begin()和end() ​编辑…...

Java代理

一、代理的基本定义 1.什么是Java代理模式:给目标对象提供一个代理对象,并且由代理对象控制对目标对象的引用。 2.类是构建对象的模板 下面是最简单的代理实现(这只是一个演示会报错) package 代理;public class xiaoming {public static…...

源码示例:使用SpringBoot+Vue+ElementUI+UniAPP技术组合开发一套小微企业ERP系统

目录 一、系统架构设计 1、技术分层 2、开发环境 二、快速开发实践 1、后端搭建(Spring Boot) 2、前端管理端(VueElementUI) 3、移动端开发(UniAPP) 三、关键集成方案 1、统一接口处理 2、跨平台…...

.Net Mqtt协议-MQTTNet(一)简介

一、MQTTNet 简介 MQTTnet 是一个高性能的MQTT类库,支持.NET Core和.NET Framework。 二、MQTTNet 原理 MQTTnet 是一个用于.NET的高性能MQTT类库,实现了MQTT协议的各个层级,包括连接、会话、发布/订阅、QoS(服务质量&#xff0…...

路由策略和策略路由的区别以及配置案例

区别 路由策略:路由策略是通过ACL等方式控制路由发布,让对方学到适当路由条目,比如有20条路由,只想让某个路由器学到10条,可以通过路由策略进行过滤。 策略路由:策略路由是通过定义策略和应用&#xff0c…...

【Debian】关于LubanCat-RK3588s开发板安装Debian的一些事

琐碎的事问题不少,甚至一度让我以为核心坏了 按照指引烧录完Debian11-gnome镜像后启动,此时输出的分辨率不一定匹配显示器,进而导致黑屏,此时需要使用MobaXterm的串口终端以运行一些指令,下载链接用xrandr指令查看显示…...

vmware环境ORACLE RAC环境数据库节点1无法启动问题分析处理

近期在一个客户数据库巡检时发现ORACLE RAC环境数据库一节点故障,只有二节点在运行。 RAC环境正常安装完成后,后期典型的节点无法启动问题就是私网异常、共享存储异常等,检查机器日志可以快速定位问题;本次问题就是因为心跳网络问…...

前端性能优化全攻略:从基础体验到首屏加载的深度实践

在移动互联网时代,用户体验已成为产品竞争力的核心要素。本文将从基础交互优化和首屏加载专项两个维度,系统梳理前端性能优化的关键策略。(对应图片1的整体框架设计) 一、基础性能优化四维模型 1. 首次打开加速方案 • 资源压缩…...

选对第三方软件测试公司,项目验收成功率提升90%

在当今数字化浪潮中,软件质量已成为企业竞争力的核心要素。然而,软件开发团队往往因资源有限或视角局限,难以全面发现潜在问题。这时,第三方软件测试公司凭借其独立性和专业性,成为企业确保软件质量的关键伙伴。尤其在…...

golang常用库之-protojson 库(json.Marshal 和 protojson.Marshal 序列化对比)

文章目录 golang常用库之-protojson 库(json.Marshal 和 protojson.Marshal 序列化对比)什么是protojson 库什么情况需要用 protojson? json.Marshal 和 protojson.Marshal 序列化对比简单示例json.Marshal 的潜在问题 (对于 Protobuf 结构体…...

嵌入式学习笔记 - 运算放大器的共模抑制比

一 定义 共模抑制比(Common Mode Rejection Ratio, ‌CMRR‌)是衡量差分放大器(或差分电路)抑制共模信号能力的关键指标。它在电子工程中尤为重要,特别是在需要处理微弱信号或对抗环境噪声的场景中。 核心概念 ‌共…...

Taccel:一个高性能的GPU加速视触觉机器人模拟平台

触觉感知对于实现人类水平的机器人操作能力至关重要。而视觉触觉传感器(VBTS)作为一种有前景的解决方案,通过相机捕捉弹性凝胶垫的形变模式来感知接触的方式,为视触觉机器人提供了高空间分辨率和成本效益。然而,这些传…...

高效Python开发:uv包管理器全面解析

目录 uv简介亮点与 pip、pip-tools、pipx、poetry、pyenv、virtualenv 对比 安装uv快速开始uv安装pythonuv运行脚本运行无依赖的脚本运行有依赖的脚本创建带元数据的 Python 脚本使用 shebang 创建可执行文件使用其他package indexes锁定依赖提高可复现性指定不同的 Python 版本…...

PyTorch 线性回归模型构建与神经网络基础要点解析

笔记 1 PyTorch构建线性回归模型 1.1 创建数据集 import torch from torch.utils.data import TensorDataset # 创建x和y张量数据集对象 from torch.utils.data import DataLoader # 创建数据集加载器 import torch.nn as nn # 损失函数和回归函数 from torch.optim impo…...

PyTorch API 2 - 混合精度、微分、cpu、cuda、可视化

文章目录 自动混合精度包 - torch.amp自动类型转换参数说明 梯度缩放自动转换操作符参考操作符适用性CUDA 操作特定行为可自动转换为 float16 的 CUDA 运算可自动转换为 float32 的 CUDA 运算提升至最宽输入类型的 CUDA 操作优先使用 binary_cross_entropy_with_logits 而非 bi…...

window 显示驱动开发-AGP 类型伸缩空间段

AGP 类型的伸缩空间段类似于线性光圈空间段。 但是,内核模式显示微型端口驱动程序(KMD)不会通过 AGP 类型的伸缩空间段公开 dxgkDdiBuildPagingBuffer 回调函数的DXGK_OPERATION_MAP_APERTURE_SEGMENT和DXGK_OPERATION_UNMAP_APERTURE_SEGMEN…...

异地多活单元化架构下的微服务体系

治理服务间的跨IDC调用,而数据库层面还是要跨IDC 服务注册中心拆开、 金融要求,距离太远,异地备库,如果延迟没读到数据就可能有资损,IDC3平时不能用,IDC1挂了还是有数据同步问题,IDC3日常维护…...

LinkedList源码解析

添加元素方法 add方法详解 /*E:创建LinkedList对象时泛型中设置好的数据类型e: 传递的参数boolean: 添加成功即为true,添加失败即为false */public boolean add(E e) {// 在链表最后一个结点后面插入新结点(根据待插入元素封装的结点) linkLast(e);/…...

Android 13 使能user版本进recovery

在 debug 版本上,可以在关机状态下,同时按 电源键 和 音量加键 进 recovery 。 user 版本上不行。 参考 使用 build 变体 debug 版本和 user 版本的差别之一就是 ro.debuggable 属性不同。 顺着这个思路追踪,找到 bootable/recovery/reco…...

Docker 使用总结及完整示例介绍

以下是一份详细的 Docker 使用总结及完整示例介绍,涵盖基础概念、常用命令和实际应用场景: 一、Docker 核心概念 镜像 (Image) 只读模板,用于创建容器。例如:ubuntu:22.04, nginx:alpine 容器 (Container) 镜像的运行实例&#x…...

[Linux]多线程(二)原生线程库---pthread库的使用

[Linux]多线程(二)原生线程库—pthread库的使用 水墨不写bug 文章目录 一、pthread原生线程库的使用1. pthread_create全面的看待线程返回值2. pthread_join3. pthread_exit对比理解线程退出?1、return退出2、调用C库函数exit()退出3、调用pt…...

1.短信登录

1.0 问题记录 1.0.1 redis 重复 token 问题 每次用户登录时,后端会创建一个新的 token 并存入 Redis,但之前登录的 token 还没有过期。这可能会导致以下问题: 1. Redis 中存在大量未过期但实际已不使用的 token2. 同一用户可能有多个有效 …...

Vue v-model 深度解析:实现原理与高级用法

一、v-model 的本质 v-model 是 Vue 中最常用的指令之一,它本质上是一个语法糖,用于在表单元素和自定义组件上实现双向数据绑定。在 Vue 2.x 和 Vue 3.x 中,v-model 的实现机制有所不同,但核心思想都是简化数据绑定的过程。 1.1…...

Java动态代理超详细解析:三步+内存图(堆栈分析)

0.本文适合谁? 1.刚学Java动态代理,被Proxy、InvocationHandler绕晕的同学 2.想彻底搞懂代理对象在内存中如何工作的开发者 3.需要面试突击动态代理知识的求职 1.动态代理的本质(三步走) 动态代理的核心可以拆解为三个关键…...

MySQL 从入门到精通(六):视图全面详解 —— 虚拟表的灵活运用

在数据库开发中,我们经常需要重复执行复杂的多表查询,或是需要限制用户只能访问特定数据。这时候,MySQL 的 视图(View)就能大显身手。作为一种 “虚拟表”,视图不存储实际数据,却能基于 SQL 查询…...

Linux 下 Java 部署环境搭建与项目部署详细步骤

目录 1. 软件环境准备 1.1 更新软件包库 1.2 安装 OpenJDK 1.3 安装 MySQL 数据库 2. 部署 Web 项目到 Linux 2.1 数据准备和配置 2.2 Maven 打包项目 2.3 上传 Jar 包至云服务器 2.4 启动应用程序 2.5 配置防火墙与端口开放 2.6 访问与验证项目 2.7 进程管理与问题…...

养生:为健康生活添彩

养生是对生活的热爱,是为健康生活注入活力的良方。从饮食、运动到生活习惯,每一个方面都能让我们离健康更近一步。以下是一些实用的养生之道,助你开启健康生活的新旅程。 饮食养生:营养均衡,健康基石 合理的饮食是养…...

Hypermesh四面体网格划分(二)

我们找到“3D-tetramesh”的命令,然后选择“tetra mesh”,以下就是这种四面体网格生成方式的面板。见图1所示。 图1 tetra mesh面板 下面以一个法兰盘的四面体网格划分作为案例,具体介绍基于表面网格的四面体网格生成方式。 首先导入几何模型…...

PySide6 GUI 学习笔记——常用类及控件使用方法(常用类边距QMargins)

文章目录 类概述方法总览使用注意事项简单示例 类概述 QMargins 类用于描述矩形四周边框尺寸,包含左(left)、上(top)、右(right)、下(bottom)四个整型边距值。当所有边距均为0时,isNull() 返回 True。该类支持流式操作和比较运算。 版本信息&#xff1…...

python笔记和练习----少儿编程课程【阶段二(二)】

第13课 列表元素的查找和删除 知识点 1、删除第一个出现的指定元素 列表.remove(元素) 2.删除末尾元素 列表.pop() 3、清空列表的所有数据 列表.clear() 4、删除指定位置的元素 del 列表[索引] del 关键字本质上是用来 将一个变量从内存中删除…...

Excel里面怎样批量去掉字串包含的标点符号

在Excel中批量去除字符串中的标点符号,可以通过以下几种方法实现: 方法1:使用SUBSTITUTE函数嵌套 适用于已知的特定标点符号(需手动列出): SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A1, ",&quo…...

Linux 信号终篇(总结)

前文:本文是对信号从产生到被处理的过程中的概念和原理的总结,如果想了解具体实现,请查看前两篇博客:Linux 信号-CSDN博客、Linux 信号(下篇)-CSDN博客 一、信号的产生 1.1 信号产生的五种条件 ①键盘组…...

Springboot之会话技术

会话:用户打开浏览器,访问web服务器的资源,会话建立,直到有一方断开连接,会话结束。在一次会话中可以包含多次请求和响应。 会话跟踪:一种维护浏览器状态的方法,服务器需要识别多次请求是否来自于同一浏览器&#xff…...

数字信号处理|| 离散系统的冲激响应和阶跃响应

一、实验目的 (1)加深对离散线性移不变(LSI)系统基本理论的理解,明确差分方程与系统函数之间的关系。 (2)初步了解用MATLAB语言进行离散时间系统研究的基本方法。 (3)掌…...

JVM 数据区域

JVM 数据区域 1 程序计数器 程序计数器(Program Counter Register) ,也有称作为PC寄存器。在汇编语言中,程序计数器是指CPU中的寄存器,它保存的是程序当前执行的指令的地址,当CPU需要执行指令时&#xff0…...

MRNet 数据集分享

MRNet 数据集分享 包括了2001年1月1日至2012年12月31日期间在斯坦福大学医学中心进行的1370次膝关节MRI检查(平均年龄38.0岁;569例(41.5%)女性患者)。该数据集包含 1,104 (80.6%) 次异常检查,其中319 (23.…...