十分钟掌握 “UML ” 的基本使用

news2024/11/24 17:49:36

十分钟掌握 “UML ” 的基本使用

在这里插入图片描述


每博一文案

很喜欢这样一段话:内可以不跟别人计较,但一定要学会维护自己,你可以不跟别人争抢,但应该懂得远离小人。
人生在世,我们会遇到形形色色的人,人心隔肚皮,不是所有人都带着真心,有的人当面对你好,却在背地里抹黑你,
有些话你说了,人家当成笑话听听,有些是你讲了,别人在背后议论纷纷,时间总会戳穿谎言给我们答案,让我们明白
谁是真的惦记,谁是虚情假意。有些事我不说,不代表我不知道,有些话我不说,不代表我不在乎,只是不想说出来,
把关系搞得太僵,谁真心对我好,谁假情假意,敷衍我看在眼里,记在心里,你真心对我好,我也会不计代价对你好。
你若只是利用我,那我的善良也是有底线,不会任由你欺骗,谁是真朋友,谁是为了利益,我心里明白,看一个人是否真心,
不能只看他嘴上说的,而要看他实际上做的,人与人相处,谁都不傻,你能欺骗的都是信任你的人,你能伤害到的都是在乎你的人,
不要把别人对你的好当作理所应当。不要把别人的退让当成你的权利,没有谁一定对谁好,你对我好,我才会对你好,
这一路走来,吃过许多亏,受过很多委屈,我不愿多说,我只想这个苍茫的世界,过好自己的生活。
愿我们都将心比心,对人真心,人生路上一同走。
                                                     ——————   一禅心灵庙语

文章目录

  • 十分钟掌握 “UML ” 的基本使用
    • 每博一文案
    • 1. 初始 UML 图
    • 2. 类图
      • 2.1 类图中类的表示方式
        • 2.1.1 类的属性的表示方式
        • 2.1.2 类的方法的表示方式
      • 2.2 类与类之间关系的表示方式
        • 2.2.1 泛化关系(is a)
        • 2.2.2 实现关系(like a)
        • 2.2.3 关联关系 (has a)
          • 2.2.3.1 单向关联
          • 2.2.3.2 双向关联
          • 2.2.3.3 自关联
        • 2.4 聚合关系
        • 2.5 组合关系
        • 2.6 依赖关系
    • 3. 用例图
    • 4. 时序图
    • 5. 总结:
    • 6. 最后:


1. 初始 UML 图

在这里插入图片描述

在这里插入图片描述

平时阅读一些远吗? 分析类文章或是设计应用架构时没少与UML类图打交道。

程序员将来要根据 UML 设计图进行编程 / 开发 ,所以对于 UML 的认识,还是十分有必要的。

画UML图与写文章差不多,都是把自己的思想描述给别人看,关键在于思路和条理。

下面赶紧来一起认识一下它吧!!!

统一建模语言(Unified Modeling Language,UML) 是一种为面向对象系统的产品进行说明、可视化和编制文档的一种标准语言,是非专利的第三代建模和规约语言。UML是面向对象设计的建模工具,独立于任何具体程序设计语言。

UML本身是一套符号的规定,就像数学符号和化学符号一样,这些符号用于描述软件模型中的各个元素和他们之间的关系。

UML 从目标系统的不同角度出发,定义了用例图、类图、对象图、状态图、活动图、时序图、协作 图、构件图、部署图等 9 种图。

使用UML来建模,常用的工具有 Rational Rose , IBM Rational Rose,StarUML,MS Visio

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

2. 类图

类图(Class Diagram) 是显示了模型的静态结构。主要是描述:类的信息(包括属性,方法)以及类和类之间的关系的信息

类图的作用:

在软件工程中,类图是一种静态的结构图,描述了系统的类的集合,类的属性和类之间的关系,可以简化了人们对系统的理解;类图是系统分析和设计阶段的重要产物,是系统编码和测试的重要模型。

2.1 类图中类的表示方式

2.1.1 类的属性的表示方式

UML 类图中,类使用包含类名属性方法 且带有分割线的矩形来表示,比如下图表示一个 Employee 类,它包含了 name,age,email 这 3 个属性,以及一个 work() 方法,两个构造器(构造方法) Employee( )

在这里插入图片描述

在这里插入图片描述

对于 UML 中类的属性的编写格式如下:

- name : String
属性的可见性 属性名 : 属性的数据类型
// 需要注意的一点就是: 与Java中不同的是: 定义属性时,属性名是在右边,数据类型在左边,而UML类图是属性名在左边,数据类型在右边和 MySQL创建表结构定义字段一样,属性名先写在左边,后面是该属性的数据类型
同样也是可以赋默认初始值的如下
+ num : int = 10

其中在属性/ 方法名称前加的 "-""+" 以及 "#" 是什么意思呢 ? 它们表示了 这个属性或者方法的可见性 ,换句话说就是 “权限”,UML 类图中表示可见性的符合有 三 种,如下:

  • + : 表示 public
  • - :表示 private
  • # :表示 protected

因此,上图中的Employee类具有3个私有属性和一个公有方法。

根据上图是 UML 编写的类结构:

public class Employee {
    private String name;
    private int age;
    private String email;

    public Employee() {

    }

    public Employee(String name,int age,String email) {

    }

    public void work() {

    }
}

2.1.2 类的方法的表示方式

上图中我们已经看到了方法的表示形式。实际上,方法的完整表示方式如下:

+ work(String name, int age) : void
方法的可见性 方法名(参数列表) : 返回类型
// 注意方法名和类名相同并带有下划线的方法:表示的是该类的构造器

注意方法名和类名相同并带有下划线的方法:表示的是该类的构造器

举例 在下图的Demo类中,定义了4 个方法

在这里插入图片描述
在这里插入图片描述

上图Demo类定义了 四个方法:

  • Demo( ) 该方法 与类名一致同时带有下划线,修饰符为: public ,表示的是该类的构造器
  • method() 方法:修饰符为 public ,没有参数,没有返回值的方法。
  • method1() 方法:修饰符为 public ,接收一个参数类型为 String ,返回值类型为 String
  • method2() 方法:修饰符为 private,接收一个参数类型为 Object ,返回值类型为 String
  • method3() 方法:修饰符为 protected,接收两个参数,第一个参数的类型为 int ,第二个参数类型为 String ,返回值类型为 int

根据如上 UML图设计类具体代码如下:

public class Demo {

    public Demo() {
    }

    public void method() {

    }

    public String method1(String str) {
        return "String";
    }

    public String method2(Object object) {
        return "Object";
    }


    public int method3(int num,String str) {
        return 0;
    }
}

2.2 类与类之间关系的表示方式

我们知道 类图 主要描述的是: 系统中的类(对象)本身的组成和类(对象)之间的各种静态关系。

类与类之间的关系主要包括 6 关系: 泛化(继承)关系,实现关系,关联关系,聚合关系,组合关系。

2.2.1 泛化关系(is a)

泛化关系实际上就是 继承关系 ,继承关系是对象之间耦合度最大的一种关系,表示一般与特殊的关系,可以是 类之间的 父类与子类之间的继承关系,也可以是 接口 与 接口 之间的 继承关系,而接口之间是可以多继承的。

UML 类图种,泛化(继承) 关系用带 空心三角箭头的实线来表示,箭头从子类指向父类,在代码实现时,使用面对对象的继承机制来实现泛化关系。

在这里插入图片描述

在 UML 中 纯虚线 所对应的 书签页 表示 注释 如下:

在这里插入图片描述

在 UML 图中 双引号表示 注释 如下:

在这里插入图片描述

举例: 下图所示中,Bird(鸟)类与 Dog(狗) 类继承了Animal(动物)类

在这里插入图片描述

在这里插入图片描述

上图 UML 对应的 Java 代码



public class Animal {
    protected String name;
    protected int age;

    public void tweet() {
        System.out.println("鸣叫");
    }

}


class Bird extends Animal{
    public void fly(){
        System.out.println("翱翔");
    }
}


class Dog extends Animal{
    public void run(){
        System.out.println("奔跑");
    }
}


接口之间的多继承关系

举例: 如下 Beijing(北京)继承了 Globe(地球) 和 China(中国) 这两个接口

在这里插入图片描述

其中的 UML 图 java 代码实现如下:


public interface Globe {

}


interface China{

}


interface Beijing extends China,Globe{
    
}

2.2.2 实现关系(like a)

实现关系:就是接口实现类之间的关系。这种关系对应 implement 关键字,类实现了接口,实现类必须重写 接口中所声明的所有抽象方法不然编译无法通过的。

在 UML 类图中,实现关系使用 带空心三角箭头的虚线 来表示,箭头从实现类指向接口

在这里插入图片描述

例如: 如下图中,Car(汽车)类与Ship(船)类都实现了 Vehicle (交通工具)接口。

在这里插入图片描述

其中的 UML 类图的 Java代码实现如下:


public interface Vehicle {
    public static final int num = 10;

    public abstract void method();
}


class Ship implements Vehicle{

    // 重写接口中的抽象方法
    @Override
    public void method() {
        
    }
}


class Car implements Vehicle{
    // 重写接口中的抽象方法
    @Override
    public void method(){
        
    }
}

2.2.3 关联关系 (has a)

关联关系: 是对象之间的一种引用关系,用于表示一类对象与另一类对象之间的联系,如 程序员和电脑,人和身份证等。关联关系是类与类之间最常用的一种关系。关联关系又可进一步分为单向关联、双向关联和自关联。

关联具有多重性: 如 :“1” 表示有且仅有一个,“0” 表示 0个或者多个,“n…m” 表示 n 到 m 个都可以,表示至少 m 个

2.2.3.1 单向关联

在UML 当中一个 带箭头的直线 表示 一个单向的关联关系,箭头的下方的数值表示对应关系(一对一,一对多),箭头的上方的文字表示对应的类所处的角色(注意这个角色名很重要,因为在不同的地方定义不同的类类型的属性,所充当的角色是不一样的)。其中箭头的起始位置表示该类定义属性引用另外一个类的,箭头指向对应属性类。如下图:

在这里插入图片描述

举例: 每一个中国人对应一个身份证,这通过让中国人 Person 类持有一个类型为IdentityID 身份证的成员变量类实现。

在这里插入图片描述

在这里插入图片描述

其中 UML 的Java代码实现:


public class Person {
    public IdentityID ID;

    public void study(){
        
    }
}



class IdentityID{

}

2.2.3.2 双向关联

双向关联: 所谓的双向关联就是双方各自持有对方类型的成员变量。双方都可以找到对方,比如:一个客户可以购买多个商品,我们可以通过客户的信息找到其所购买的商品,反过来我们也可以这个商品找到其被哪个客户所购买了。

在 UML 类图中,双向关联用一个不带箭头的直线 表示,同样的直线下面表示(对应的关系(是一对一,还是 n 对 m )),上面表示对应的角色(重要,因为不同的位置所充当的角色是不同的,比如这个类在另外一个类中所充当的角色可能就不同了)。如下图所示:

在这里插入图片描述

举例:如下图中 Customer (顾客)类中维护一个 commoditys(商品)[] 类的数组,表示一个顾客购买了的商品;在Commodity(商品)类中维护一个 Customer (顾客)类型的成员变量,表示这个商品被哪个顾客所购买了。

在这里插入图片描述

具体的Java代码实现如下:


public class Customer {
    private Commodity[] commoditys;
}


class Commodity{
    private Customer customer;
}
2.2.3.3 自关联

自关联:就是自己包含自己的成员属性。

在UML 类图中用 一个带有箭头且指向自身的直线 表示。

举例: 定义一个 Person 类 ,其中 Person 类包含类型为 Person 的自己的成员变量。

在这里插入图片描述

具体Java代码实现:


public class Person {
    private String name;
    private Person person;

    public void method(){
        System.out.println("自关联");
    }
}


2.4 聚合关系

聚合关系是关联关系的一种,是整体和部分之间的关系,整体与部分可以分开,所以整体的生命周期不会决定部分的生命周期

聚合关系是关联关系的特例,聚合关系也是通过成员对象来实现的,其中成员是整体对象的一部分,但是成员对象可以脱离整体对象而独立存在。例如:学校与老师的关系,学校中包含了老师,但是如果学校停办了,老师依然存在。而反过来,老师没有了,学校也依然存在。

在 UML 类图中,聚合关系使用 带空心菱形的实线 来表示,菱形指向整体,其中直线的下面表示(对应关系:一对一,一对 n),直线上面表示对应的角色。如下图所示:

在这里插入图片描述

举例: 教室包含了学生,学生脱离了教室也能单独存在。

在这里插入图片描述

具体的Java代码实现:


import java.util.List;

public class ClassRoom {
    private List<Student> students;

    public ClassRoom(List list) {
        this.students = list;
    }

    public List<Student> getStudents() {
        return students;
    }
}


class Student{
    public String name;

    public Student(){
        System.out.println("无参构造器");
    }
}

2.5 组合关系

组合关系:可以看做是一种特殊的聚合关系,特殊在哪里呢:特殊在:组合关系中,整体对象可以控制部分对象的生命周期,部分是依附在整体上面的,整体和部分存在一个级联删除 : 一旦整体对象不存在了,部分对象也将不存在,而部分对象离开了整体对象是 “无法存活的”。即整体和部分是不可分开的 。例如:头和嘴的关系,没有了头,嘴也就不存在了,而嘴也是不能离开头单独存在。

在 UML 类图中,组合关系用带实心菱形的实线 来表示,菱形指向整体 ,实线的下面表示(对应关系:一对一,一对多),实线上面表示(所充当的角色)。如下图:

在这里插入图片描述

在 UML 类图中,组合关系用带实心菱形的实线来表示,菱形指向整体。下图所示是头和嘴的关系图:

在这里插入图片描述

具体Java代码实现:


public class Head {
    // 注意了:因为是组合关系:所以定义的是实例对象出来的,即当 Head 被销毁了 Mouth 也是跟着被销毁的
    private Mouth mouth = new Mouth();

    public void reflect(){
        System.out.println("思考");
    }
}


class Mouth{

    public void eat() {
        System.out.println("吃");
    }
}

2.6 依赖关系

依赖关系是一种使用关系,是所有关系中耦合度最弱的一种关联方式,是临时性的关联。这种关系在代码中通常体现在:某个类中的方法的局部变量,方法中参数列表,方法的返回类型,或者对静态方法的调用来访问另一个类(被依赖类)中的某些方法来完成一些职责。

在 UML 类图中,依赖关系使用 带箭头的虚线 来表示,箭头从使用类指向被依赖的类。如下图:

在这里插入图片描述

举例: 下图所示是 司机 和汽车的 UML 图,司机驾驶汽车,作为方法中的参数使用。

在这里插入图片描述

具体的Java代码实现

package com.RainbowSea.Blogs.UML;

public class Driver {
    private String name;

    public void drive(Car car) {
        car.move();
    }

}



class Car{
    public void move() {
        System.out.println("开车移动");
    }

}

举例: 司机 和汽车的 UML 图,司机驾驶汽车,作为方法中的局部变量,和返回值类型使用

在这里插入图片描述

具体Java代码实现如下:

package com.RainbowSea.Blogs.UML;

public class Driver {
    private String name;

    public Car use( ) {
        Car car = new Car();
        car.move();
        
        return car;
    }

}



class Car{
    public void move() {
        System.out.println("开车移动");
    }

}

3. 用例图

用例图(use case diagram) : 是站在 系统用户(系统角色) 的角度分析系统存在哪些功能 ? 实现用例图的时候,需要先进行系统角色的抽取,在 Raitional Rose 工具当中一般会在 Use Case View 当中实现用例图:

如下是 学生信息管理系统用例图

在这里插入图片描述

如下是 书店管理系统用例图

在这里插入图片描述

如下是一个普通的系统管理员用例图

在这里插入图片描述

4. 时序图

时序图 (sequence diagram) : 时序图当中描述了方法的调用过程,程序的执行流程,以及方法执行结束的返回值情况。

时序图,也叫序列图,顺序图,是 UML 中常用的动态视图,用于描述多个对象参与实现业务目标时,彼此之间按时间顺序进行交互的过程。

时序图:用来表达对象或角色之间交互的信息传递和时间顺序,特别方便。

每次梳理流程,跟开发沟通,都可以借助它来描述。

绘制时序图,将一个个对象和其它交互动作列出来,可以直观反映出,每个对象其他对象,或其自身做的交互动作。

让我们看到业务内部的运作,系统之间的互动,从而搞清楚业务规则,系统逻辑

时序图的构成

时序图的常用元素很简单,分别有:对象(角色)、生命线、会话、消息(简单消息、返回消息)。

在这里插入图片描述

如下是:客户用 ATM 取款的时序图

在这里插入图片描述

如下是一个登录的时序图:
在这里插入图片描述


一般用例图当中一个用例会对应时序图当中一个时序图图,时序图描述的是一个功能具体是怎么实现的,流程是什么 ???

如下是一个简单的 请求 与响应 的时序图:

在这里插入图片描述

小人:动作事件的触发者

矩形/小圆圈:对象

实线箭头:调用

虚线箭头:返回

柱状:对象的生命周期,柱状不能断,在同一个流程当中不能断。

回折线:当前类的方法执行过程中调用自己当前类中的其它方法

理解 时序图 的编写代码:

如下时序图:

在这里插入图片描述

根据上图编写的Java代码如下:


public class A {
    public void xxx(){
        B b = new B();
        b.method1();
    }


}


class B {
    public void method1(){
        C c = new C();
        c.method2();
        this.method4();
    }


    public void method4(){
        System.out.println("B:method4");
    }
}


class C{
    public void method2(){
        this.method3();
    }

    public void method3(){
        System.out.println("C:method3");
    }

}

5. 总结:

UML 类图的关系线条

在这里插入图片描述

  1. 重点:理解并使用 UML 的类图就可以了,基本现阶段我们Java程序员主要学习的还是 UML的类图。
  2. 关于UML 类图中,表示类中的属性和方法的绘制
  3. UML 类图中:类之间的六种关系:泛化(继承关系),实现关系,关联关系,聚合关系,组合关系,依赖关系
  4. 泛化关系:类与类之间的单继承关系,接口 与 接口之间的多继承关系
  5. 实现关系:实现类与接口之间的关系。
  6. 关联关系:单向关联,双向关联,自关联。
  7. 聚合关系:整体与局部可以分开:学校与老师之间的关系。
  8. 组合关系:整体与局部不可以分开:头 与 嘴的关系。
  9. 依赖关系:一个类中对另外一个类的使用:类中的方法的局部变量,方法中的返回值类型,方法中的参数,方法中调用对应类中的方法。是耦合度最弱的关系。
  10. 用例图:描述系统用户角色对应功能的介绍。详细了解:大家可以移步至:🔜🔜🔜 http://www.uml.org.cn/modeler/202002112.asp
  11. 时序图:用例图中某种功能上具体实现流程(方法之间的调用,返回,请求 与 响应),详细介绍:大家可以移步至:🔜🔜🔜https://mikechen.cc/19673.html

6. 最后:

限于自身的水平,其中存在的错误,希望大家给予指教,韩信点兵——多多益善,谢谢大家,江湖再见,后会有期!!!
在这里插入图片描述

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

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

相关文章

Pytorch深度学习实战——第3章课后习题

1.从list(range(9))list(range(9))list(range(9))中创建一个张量aaa并预测检查其大小、偏移量、步长。 import torch atorch.tensor(list(range(9))) print(a.storage_offset())#偏移量 print(a.stride())#步长 print(a.size())#大小a)使用ba.view(3,3)ba.view(3,3)ba.view(3,…

Aspose.PDF for Java系列3-创建复杂的PDF

创建复杂PDF 上篇文章展示了使用Java和Aspose.PDF简单步骤。本文中&#xff0c;我们将使用Java和Aspose.PDF创建更复杂的文档结构。此示例中&#xff0c;我们将创建包含图片、两个文本片段&#xff08;标题和段落&#xff09;和表格。 创建文档参考以下步骤&#xff1a; 实例…

被房地产坑惨的老板电器,终于要“回血”了!

近期&#xff0c;随着房地产行业重新被定义为“国民经济的支柱产业”&#xff0c;叠加疫情防控转向&#xff0c;笼罩在家电行业上空的阴霾逐渐消散&#xff0c;家电股预期改善&#xff0c;纷纷迎来估值修复。尤其是曾遭房地产暴击的老板电器&#xff0c;有望抓住房地产回暖的窗…

Synchronized

Synchronized前言1.synchronized修饰符和线程控制1.1synchronized修饰符和Object Monitor模式1.2 synchronized修饰符可标注的位置2. 方法2.1 waitwait多态表达式notify()方法和notifyAII()方法interrupt中断信号判断是否收到interrupt中断信号的方法前言 悲观锁在Java中有两种…

Jenkins环境搭建

Jenkins环境搭建 一、Jenkins下载&#xff1a;Jenkins 点击Download&#xff0c;进入新的页面后点击下载Jenkins的war包&#xff0c;如下图&#xff1a; 注意&#xff1a;Jenkins是java语言开发&#xff0c;需要安装JDK并进行环境变量配置&#xff0c;Jenkins可以在Tomcat容器…

java注解(Annotation)和反射(Reflection)

文章目录重要的点一 注解(Annotation)(Annotation)(Annotation)1.1 注解初识1.2 内置注解1.3 内置注解代码演示1.4 元注解(meta−annotation)(meta-annotation)(meta−annotation)1.5 元注解代码演示1.6 自定义注解1.7 自定义注解代码演示二 反射(Reflection)(Reflection)(Refl…

gitlab-ci.yml关键字(三)before_script 、script 、after_script

before_script before_script 用于定义在每个作业执行之前所运行的一系列脚本命令。这里需要注意的是&#xff0c;before_script 运行的时机&#xff0c;是在制品&#xff08;artifacts&#xff09;恢复后&#xff0c;也就意味着&#xff0c;在这个时机中是可以操作制品的。 …

Unity 解决QFramework WebGL报错

Unity 解决QFramework WebGL报错&#x1f95d;错误描述☕原因&#x1f364; 解决方案&#x1f95d;错误描述 在新建工程中只导入了QFramework&#xff0c;Build WebGL(空场景) 会看到如下错误&#xff1a; Exception: Non-Public Constructor() not found! in QFramework.Saf…

点云 3D 目标检测 - SECOND(Sensors 2018)

点云 3D 目标检测 - SECOND&#xff08;Sensors 2018&#xff09;摘要1. 引言2. 相关工作2.1 基于前视图和图像的方法2.2 基于鸟瞰图的方法2.3 基于3D的方法2.4 基于融合的方法3. SECOND检测器3.1 网络架构3.1.1 点云分组3.1.2 Voxelwise特征提取器3.1.3 稀疏卷积中间提取器3.1…

代码模板3---基础算法(双指针算法/位运算/离散化/区间合并)

①双指针算法 一般做题&#xff1a;先用暴力做法&#xff0c;然后去看是否存在某种性质&#xff08;如单调性&#xff0c;维护这个区间的单调性即可&#xff09; AcWing 799. 最长连续不重复子序列 - AcWing AcWing 800. 数组元素的目标和 - AcWing AcWing 2816. 判断子序列 - …

期货交易软件哪个好?为什么选择期货MT4平台软件?

越来越多人选择期货投资&#xff0c;因为期货投资具有高投资高回报的特征。在做期货交易时&#xff0c;很多投资者会发现市场上有各种各样的期货交易软件。如果第一次接触期货交易&#xff0c;难免会不知道选择哪个期货交易软件更好。下面为大家讲讲期货交易软件哪个好&#xf…

centos7安装rabbitmq集群

公司号口项目让运维安装rabbitmq&#xff0c;结果rabbitmq页面state都显示down了&#xff0c;问运维居然说都正常&#xff0c;麻蛋欺负我无知&#xff0c;自己搞一遍试试。 前言 RabbitMQ是一个开源的强大的企业消息系统&#xff0c;支持主流的操作系统&#xff0c;支持多种开…

OpenHarmony#深入浅出学习eTs#(七)判断密码是否正确

本项目Gitee仓地址&#xff1a;深入浅出eTs学习: 带大家深入浅出学习eTs (gitee.com) 一、基本界面 本项目基于#深入浅出学习eTs#&#xff08;四&#xff09;登陆界面UI&#xff0c;继续进行&#xff0c;实现一个判断的功能 二、控件介绍 TextInput 可以输入单行文本并支持…

如果我是核酸系统架构师,我会这么用MQ。。。

V-xin&#xff1a;ruyuan0330 获得600页原创精品文章汇总PDF 目录 一、前情提示二、保证投递消息不丢失的confirm机制三、confirm机制的代码实现四、confirm机制投递消息的高延迟性五、高并发下如何投递消息才能不丢失六、消息中间件全链路100%数据不丢失能做到吗&#xff1f;…

医学图像包——DCMTK、VTK、ITK、RTK、SimpleITK

1.ITK-医学图像处理软件包 ITK&#xff08; Insight Segmentation and Registration Toolkit&#xff09;是美国国家卫生院下属的国立医学图书馆开发的一款医学图像处理软件包&#xff0c;是一个开源的、跨平台的影像分析扩展软件工具。 ITK的开发过程中采用了先进的多模态数…

VAE详解及PyTorch代码

三大有名的生成模型VAE、GAN以及Diffusion Model 其余两篇 看了网上的一些博客&#xff0c;大多都写到了重点&#xff0c;也就是后面的公式推导部分&#xff0c;可是大部分只有推导过程&#xff0c;很少有讲明白为什么要这么假设&#xff0c;我看的时候内心不断有个疑问&…

这篇文章详细介绍动态内存管理 ,让你醍醐灌顶【c语言】

文章目录动态内存函数mallocfreecallocrealloc常见的动态内存错误对NULL指针的解引用操作对动态开辟空间的越界访问对非动态开辟内存使用free释放使用free释放一块动态开辟内存的一部分对同一块动态内存多次释放动态开辟内存忘记释放&#xff08;内存泄漏&#xff09;练习柔性数…

物联网终端的信息保护

针对漏洞的恶意行为分析 我们共捕获到 4 种针对 UPnP 漏洞的利用行为 1&#xff0c;如表 4.7 所示。从中可以看出&#xff0c;这些漏洞均为远程 命令执行类漏洞。另外我们也发现&#xff0c;当漏洞出现在特定端口时&#xff0c;攻击者一般不会经过 UPnP 的发现阶段&#xff0c…

Moran指数分析

Moran指数分析 Moran指数&#xff08;莫兰指数&#xff09;是研究空间关系的一种相关系数值&#xff0c;比如研究中国31省市GDP之间是否具有空间相关关系。Moran指数通常分为两种&#xff0c;分别是全局Moran指数和local局部Moran指数。全局Moran指数用于分析整体上是否存在空…

概率分布到底有什么用?

1.1 要概率分布有什么用&#xff1f; 个人理解&#xff1a;每种概率分布对应描述了某种特定事件发生的规律&#xff0c;像是一个模板&#xff0c;只要某种事件符合该分布的要求&#xff0c;那么就可以用对应的概率分布计算此事件的概率 1.2 为什么非要确定一个分布&#xff1f;…