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

02UML图(D1_结构图)

目录

学习前言

----------------------------------

讲解一:类图

一、类图的组成结构

1. 类(Class)

1.1. 类的成员变量的表示方式

1.2. 类的成员方法的表示方式

2. 接口(Interface)

3. 包(Package)

二、UML类图中类与类之间的关系

1. 关联(Association)

1.1. 单向关联

1.2. 双向关联

1.3. 自关联

1.4. 多重性关联

2. 聚合(Aggregation)

3. 组合(Composition)

4. 依赖(Dependency)

5. 继承(泛化 Generalization)

6. 实现(Realization)

c

讲解二:轮廓图

----------------------------------

讲解三:组件图

----------------------------------

讲解四:组合结构图

----------------------------------

讲解五:对象图

----------------------------------

讲解六:部署图

----------------------------------

讲解七:包图


学习前言

作者坚定认为,在绘制任何图形之前,都应该先弄清楚图形的概念、组成元素以及绘制规范

这有助于提升我们的绘图效率。

----------------------------------

讲解一:类图

一、类图的组成结构

1. 类(Class)

类( Class )封装了成员变量( Field )和成员方法( Function / Method ),是面向对象的三大组成部分

之一,它是具有相同成员变量、成员方法、关系的对象集合的总称。

在软件系统运行时,类将被实例化成对象( Object ),对象对应于某个具体的事物,是类的实例(

Instance )。

在 UML 类图中,类使用包含类名、成员变量( Field ) 和成员方法( Function / Method ) 且带有分割

线的矩形来表示,比如下图表示一个Employee 类,它包含 name , age 和 email 这 3 个属性,以

及 modifyInfo() 方法。

1.1. 类的成员变量的表示方式

UML 规定类的成员变量的表示方式为:

可见性 名称:类型 [ = 缺省值 ]

类的成员变量的表示方式的具体实例便如 Employee 类的成员变量:- name:String

  • “可见性” 表示该成员变量/成员方法对于类外的元素而言是否可见,包括公有 ( public ) 、私有 ( private ) 和受保护 ( protected ) 三种,在类图中分别用符号 +、- 和 # 表示。若省略这些符号表示具有 package(包)级别的可见性。若成员变量/成员方法具有下划线,表明它是静态的。还记得 Employee 类中的前面带减号 - 的 3 个成员变量和带加号 + 的成员方法吗?这些符号表示了这个成员变量或成员方法的可见性。
  • “名称” 表示成员变量的名称,用一个字符串表示。
  • “类型” 表示成员变量的数据类型,可以是基本数据类型,也可以是用户自定义类型。
  • “缺省值” 是一个可选项,即属性的初始值。如某个类中的成员变量定义语句 Double pai = 3.1415926; 中的 3.1415926 便是成员变量的缺省值。

1.2. 类的成员方法的表示方式

UML规定类的成员变量的表示方式为:

可见性 名称(参数列表) [ : 返回类型]

类的成员方法的表示方式的具体实例便如Employee类的成员方法:+ modifyInfo():void。

  • “可见性” 的定义与成员变量的可见性定义相同。
  • “名称” 即成员方法的名称,用一个字符串表示。
  • “参数列表” 表示成员方法的参数,其语法与成员方法参数列表的定义相似,参数个数是任意的,多个参数之间用英文逗号“,”隔开。
  • “返回类型” 是一个可选项,表示成员方法的返回值类型,依赖于具体的编程语言,可以是基本数据类型,也可以是用户自定义类型,还可以是空类型( void ),如果是构造方法,则无返回类型。

在下图的 Demo 类中,成员方法 method1 的可见性为 public(+),带入了一个 Object 类型的参数

par,返回值为空类型( void );

成员方法 method2 的可见性为 protected(#),无参数,返回值为 String 类型;操作 method3 的可

见性为 private(-),包含两个参数,其中一个参数为 int 类型,另一个为 int[] 类型,返回值为 int 类

型。
 

2. 接口(Interface)

Java 接口是一系列成员方法的声明,是一些成员方法特征的集合,一个接口只有成员方法的特征

没有成员方法的实现,因此这些成员方法可以在不同的地方被不同的类实现,而这些实现可以具有

不同的行为(功能)。接口可以理解为一种特殊的类,里面全部是由全局常量和公共的抽象方法所

组成。接口是解决 Java 无法使用多继承的一种手段,但是接口在实际中更多的作用是制定标准

的。或者我们可以直接把接口理解为 100% 的抽象类,既接口中的方法必须全部是抽象方法。

( JAVA8 及之前版本可以这样理解,但 JAVA9 拓展了接口的定义)

在 UML 中,接口既可用下图 Animal 接口左上角类似钥匙的图标 o- 表示,也可由在 UML 的接口

名称附近加上<> 标志来表示。

3. 包(Package)

Java 引入了包( package )机制,提供了类的多层命名空间,用于解决类的命名冲突、类文件管

理等问题。

UML 中的一个包直接对应于 Java 中的一个包,每个包的名称对这个包进行了惟一性的标识。

二、UML类图中类与类之间的关系

整体而言,类和类之间关系包括了 has , use , is 三种关系:

  • has 包括了关联 ( Association ) ,聚合 ( Aggregation ) ,组合 ( Composition ) 关系
  • use 包括了依赖 ( Dependency ) 关系
  • is 包括了继承 ( 泛化 Generalization ),实现 ( Realization ) 关系

1. 关联(Association)

关联 ( Association ) 关系是类与类之间最常用的一种关系,它是一种结构化关系,用于表示一类对

象与另一类对象之间有联系,如汽车和轮胎、师傅和徒弟、班级和学生等等。在 UML 类图中,用

实线连接有关联关系的对象所对应的类,在使用 Java、C# 和 C++ 等编程语言实现关联关系时,

通常将一个类的对象作为另一个类的成员变量。在使用类图表示关联关系时可以在关联线上标注角

色名,一般使用一个表示两者之间关系的动词或者名词表示角色名(有时该名词为实例对象名),

关系的两端代表两种不同的角色,因此在一个关联关系中可以包含两个角色名,角色名不是必须

的,可以根据需要增加,其目的是使类之间的关系更加明确。如在一个登录界面类 LoginForm 中

包含一个 JButton 类型的注册按钮 loginButton ,它们之间可以表示为单向关联关系,代码实现时

可以在 LoginForm 中定义一个名为 loginButton 的属性对象,其类型为 JButton 。

如下图所示:

上述 UML 类图对应的 Java 代码片段如下:

public class LoginForm {private JButton loginButton; //定义为成员变量……
}public class JButton {……}

在 UML 中,关联关系通常又包含如下几种形式:

1.1. 单向关联

类的关联关系可以是单向的,单向关联用由包含者指向被包含者的带箭头的实线表示。

例如:顾客( Customer ) 拥有地址 ( Address ) ,则 Customer 类与 Address 类具有单向关联关

系,

上述 UML 类图对应的 Java 代码片段如下:

public class Customer {private Address address;……
}public class Address {…}

1.2. 双向关联

默认情况下,关联是双向的,双向关联用实线表示。

例如:顾客 ( Customer ) 购买商品 ( Product ) 并拥有商品;反之,卖出的商品总有某个顾客与之

相关联。

因此,Customer 类和 Product 类之间具有双向关联关系,如下图所示:

上述 UML 类图对应的 Java 代码片段如下:

public class Customer {private Product[] products;……
}public class Product {private Customer customer;……
}

1.3. 自关联

在系统中可能会存在一些类的属性对象类型为该类本身,这种特殊的关联关系称为自关联。

例如:一个节点类 ( Node ) 的成员又是节点

Node 类型的对象,如下图所示:

上述 UML 类图对应的 Java 代码片段如下:

public class Node {private Node subNode;……
}

1.4. 多重性关联

多重性关联关系又称为重数性 ( Multiplicity ) 关联关系,表示两个关联对象在数量上的对应关系。

在 UML 中,对象之间的多重性可以直接在关联直线上用一个数字或一个数字范围表示。

对象之间可以存在多种多重性关联关系,常见的多重性表示方式如下表所示:

表示方式

多重性说明

1…1

表示另一个类的一个对象只与该类的一个对象有关系

0…*

表示另一个类的一个对象与该类的零个或多个对象有关系

1…*

表示另一个类的一个对象与该类的一个或多个对象有关系

0…1

表示另一个类的一个对象没有或只与该类的一个对象有关系

m…n

表示另一个类的一个对象与该类最少 m,最多 n 个对象有关系 ( m ≤ n )

例如:一个界面 ( Form ) 可以拥有零个或多个按钮 ( Button ) ,但是一个按钮只能属于一个界面,

因此,一个Form 类的对象可以与零个或多个 Button 类的对象相关联,但一个 Button 类的对象只

能与一个 Form 类的对象

上述 UML 类图对应的 Java 代码片段如下:

public class Form {private Button[] buttons; //定义一个集合对象……
}public class Button {……}

2. 聚合(Aggregation)

聚合 ( Aggregation ) 关系表示整体与部分的关系。在聚合关系中,成员对象是整体对象的一部

分,但是成员对象可以脱离整体对象独立存在。在 UML 中,聚合关系用由整体指向部分的带空心

菱形和箭头的直线表示。

例如:汽车发动机 ( Engine ) 是汽车 ( Car ) 的组成部分,但是汽车发动机可以独立存在,

因此,汽车和发动机是聚合关系,如下图所示:

在代码实现聚合关系时,成员对象通常作为构造方法、Setter 方法或业务方法的参数注入到整体对

象中,上述UML 类图对应的 Java 代码片段如下:

public class Car {private Engine engine;//构造注入public Car(Engine engine) {this.engine = engine;}//设值注入public void setEngine(Engine engine) {this.engine = engine;}……
}public class Engine {……} 

3. 组合(Composition)

组合 ( Composition ) 关系也表示类之间整体和部分的关系,但是在组合关系中整体对象可以控制

成员对象的生命周期,一旦整体对象不存在,成员对象也将不存在,成员对象与整体对象之间具有

同生共死的关系。在 UML 中,组合关系用由整体指向部分的带实心菱形和箭头的直线表示。

例如:人的头 ( Head ) 与嘴巴 ( Mouth ) ,嘴巴是头的组成部分之一,而且如果头没了,嘴巴也就

没了,因此头和嘴巴是组合关系,如下图所示:

在代码实现组合关系时,通常在整体类的构造方法中直接实例化成员类,上述 UML 类图对应的

Java 代码片段如下:

public class Head {private Mouth mouth;public Head() {mouth = new Mouth(); //实例化成员类}……
}public class Mouth {……} 

4. 依赖(Dependency)

依赖 ( Dependency ) 关系是一种使用关系,特定事物的改变有可能会影响到使用该事物的其他事

物,在需要表示一个事物使用另一个事物时使用依赖关系。大多数情况下,依赖关系体现在某个类

的方法使用另一个类的对象作为参数。

在 UML 中,依赖关系用由依赖者指向被依赖者的带箭头的虚线表示,由依赖的一方指向被依赖的

一方。例如:驾驶员开车,在 Driver 类的 drive() 方法中将 Car 类型的对象car 作为一个参数传

递,以便在 drive() 方法中能够调用 car 的 move() 方法,且驾驶员的 drive() 方法依赖车的 move()

方法,因此类Driver 依赖类 Car,如下图所示:

在系统实施阶段,依赖关系通常通过三种方式来实现:

  • 第一种也是最常用的一种方式是如上图所示的在一个类的方法中将另一个类的对象作为其形式参数
  • 第二种方式是在一个类的方法中将另一个类的对象作为其局部变量
  • 第三种方式是在一个类的方法中调用另一个类的静态方法

上述 UML 类图对应的 Java 代码片段如下:

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

5. 继承(泛化 Generalization)

继承 ( 泛化 Generalization )关系用于描述父类与子类之间的关系,父类又称作基类或超类,子类

又称作派生类。

在 UML 中,泛化关系用由继承者指向被继承者的带空心三角形的直线来表示。在代码实现时,我

们使用面向对象的继承机制来实现泛化关系,如在 Java 语言中使用 extends 关键字、在 C++/C#

中使用冒号 “ :”来实现。

例如:Student 类和 Teacher 类都是 Person 类的子类,Student 类和 Teacher 类继承了 Person

类的属性和方法,Person 类的属性包含姓名 ( name ) 和年龄 ( age ) ,每一个 Student 和 Teacher

也都具有这两个属性,另外 Student 类增加了属性学号 ( studentNo ),Teacher 类增加了属性教师

编号 ( teacherNo ), Person 类的方法包括行走 move() 和说话 say(),Student 类和 Teacher 类继

承了这两个方法,而且 Student 类还新增方法study(),Teacher 类还新增方法 teach() 。

如下图所示:

上述 UML 类图对应的 Java 代码片段如下:

//父类
public class Person {protected String name;protected int age;public void move() {……}public void say() {……}
}//子类
public class Student extends Person {private String studentNo;public void study() {……}
}//子类
public class Teacher extends Person {private String teacherNo;public void teach() {……}
}

6. 实现(Realization)

在很多面向对象语言中都引入了接口的概念,如 Java 、C# 等,在接口中,通常没有属性,而且

所有的操作都是

接口之间也可以有与类之间关系类似的继承关系和依赖关系,但是接口和类之间还存在一种实现 (

Realization ) 关系,在这种关系中,类实现了接口,类中的操作实现了接口中所声明的操作。

在 UML 中,类与接口之间的实现关系用由实现者指向被实现者的带空心三角形的虚线来表示。

例如:定义了一个交通工具接口 Vehicle,包含一个抽象操作 move(),在类 Ship 和类 Car 中都实

现了该move() 操作,不过具体的实现细节将会不一样,如下图所示:

实现关系在编程实现时,不同的面向对象语言也提供了不同的语法,如在 Java 语言中使用

implements 关键字,而在 C++/C# 中使用冒号“ :”来实现。

上述 UML 类图对应的 Java 代码片段如下:

public interface Vehicle {public void move();
}public class Ship implements Vehicle {public void move() {……}
}public class Car implements Vehicle {public void move() {……}
}

c

讲解二:轮廓图

【概念】轮廓图提供了一种通用的扩展机制,用于为特定域和平台定制 UML 模型。

图中我们定义了一个简易的 EJB 的概要图。

Bean 是从 Component 扩展来的。Entity Bean 和 Session Bean 继承了 Bean。

EJB 拥有 Remote 和 Home 接口,和 JAR 包。

----------------------------------

讲解三:组件图

【概念】描绘了系统中组件提供的、需要的接口、端口等,以及它们之间的关系。

【目的】用来展示各个组件之间的依赖关系。

订单系统组件依赖于客户资源库和库存系统组件。中间的虚线箭头表示依赖关系。

另外两个符号,表示组件连接器,一个提供接口,一个需要接口。

----------------------------------

讲解四:组合结构图

【概念】描述了一个"组合结构"的内部结构,以及他们之间的关系。这个"组合结构"可以是系统的

一部分,或者一个整体。

图中描述了 Car 是由车轴连接着的两个前面轮子、两个后面轮子,和引擎组合的。

----------------------------------

讲解五:对象图

【概念】对象图是类图的一个实例,是系统在某个时间点的详细状态的快照。

【目的】用来表示两个或者多个对象之间在某一时刻之间的关系。

图中就是描述的,某时间点 bat 这个公司有一个研发部,一个销售部,两个部门只有一个人

iisheng。

----------------------------------

讲解六:部署图

【概念】描述了系统内部的软件如何分布在不同的节点上。

图中简单的表示,不同机器上面部署的不同软件。

----------------------------------

讲解七:包图

【概念】描绘了系统在包层面上的结构设计。

《Use》关系表示使用依赖,Web Shopping 依赖 Payment

《Merge》关系表示合并,Web Shopping 合并了 Shopping Cart 就拥有了 Shopping Cart 的功能

《Access》关系表示私有引入,比如代码中的指定包名类名

《Import》关系表示公共引入,比如 Java 中的 import 之后,就可以直接使用 import 包中的类

了。

相关文章:

02UML图(D1_结构图)

目录 学习前言 ---------------------------------- 讲解一&#xff1a;类图 一、类图的组成结构 1. 类(Class) 1.1. 类的成员变量的表示方式 1.2. 类的成员方法的表示方式 2. 接口&#xff08;Interface&#xff09; 3. 包&#xff08;Package&#xff09; 二、UML类…...

二十三种设计模式-装饰器模式

一、定义与核心思想 装饰器模式是一种结构型设计模式&#xff0c;其核心思想是动态地给一个对象添加一些额外的职责。通过这种方式&#xff0c;可以在不改变原有对象结构的基础上&#xff0c;灵活地增加新的功能&#xff0c;使得对象的行为可以得到扩展&#xff0c;同时又保持…...

SSM课设-酒店管理系统功能设计

【课设者】SSM课设-酒店管理系统 分为用户端管理员端 技术栈: 后端: Spring Spring MVC MyBatis Mysql JSP 前端: HtmlCssJavaScriptAjax 功能: 用户端主要功能包括&#xff1a; 登录注册 客房预订 客房评论 首页 管理员端主要功能包括&#xff1a; 会员信息管理 客房信息…...

R语言的文件操作

R语言的文件操作 引言 在数据科学和分析的过程中&#xff0c;文件操作是不可或缺的一部分。R语言作为一种强大的统计计算和图形作图的编程语言&#xff0c;提供了丰富的文件操作函数&#xff0c;使得用户能够方便地读取和保存数据。本文将详细介绍R语言中的文件操作&#xff…...

[javaWeb]初识Web

将该图片在浏览器中打印出来 代码&#xff1a; <html> <head> <title>HTML初识</title> </head> <body> <h1>猫猫</h1> <img src "img/1.jpg"> </body> &l…...

基于微信小程序的摄影竞赛系统设计与实现(LW+源码+讲解)

专注于大学生项目实战开发,讲解,毕业答疑辅导&#xff0c;欢迎高校老师/同行前辈交流合作✌。 技术范围&#xff1a;SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容&#xff1a;…...

.netframwork模拟启动webapi服务并编写对应api接口

在.NET Framework环境中模拟启动Web服务&#xff0c;可以使用几种不同的方法。一个常见的选择是利用HttpListener类来创建一个简单的HTTP服务器&#xff0c;或者使用Owin/Katana库来自托管ASP.NET Web API或MVC应用。下面简要介绍Owin/Katana示例代码。这种方法更加灵活&#x…...

Go语言之路————条件控制:if、for、switch

Go语言之路————if、for、switch 前言ifforswitchgoto和label 前言 我是一名多年Java开发人员&#xff0c;因为工作需要现在要学习go语言&#xff0c;Go语言之路是一个系列&#xff0c;记录着我从0开始接触Go&#xff0c;到后面能正常完成工作上的业务开发的过程&#xff0…...

54,【4】BUUCTF WEB GYCTF2020Ezsqli

进入靶场 吓我一跳&#xff0c;但凡放个彭于晏我都不说啥了 提交个1看看 1 and 11 1# 还尝试了很多&#xff0c;不过都被过滤了&#xff0c;头疼 看看别人的WP 竟然要写代码去跑&#xff01;&#xff01;&#xff01;&#xff0c;不会啊&#xff0c;先用别人的代码吧&#xf…...

在线图片压缩工具

在线图片压缩工具&#xff0c;无需登录&#xff0c;无需成本&#xff0c;用完就走。 包括中文和英文版本。 官网地址&#xff1a; https://compress.openai2025.com/ 效果&#xff1a;...

快手极速版如何查找ip归属地?怎么关掉

在数字化时代&#xff0c;个人隐私的保护成为了广大用户关注的焦点。快手极速版作为一款备受欢迎的短视频应用&#xff0c;其IP归属地的显示与关闭功能自然也成了用户热议的话题。本文将详细介绍如何在快手极速版中查找IP归属地以及如何关闭IP属地显示&#xff0c;帮助用户更好…...

精准掌握:Nginx匹配规则及其优先级解析

Nginx作为一款高性能的HTTP和反向代理服务器&#xff0c;其配置文件的匹配规则及优先级设置对于实现精确的请求路由和资源分配至关重要。本文将深入探讨Nginx的匹配规则及其优先级&#xff0c;帮助读者更好地理解和应用这些配置。 一、Nginx匹配规则概述 Nginx的匹配规则主要…...

在VS2022中用C++连接MySQL数据库读取数据库乱码问题

1.正确安装mysql 安装之后的配置文件 2.在VS2022中进行相关配置 &#xff08;1&#xff09;右键项目&#xff0c;打开属性 注意是右键项目&#xff0c;不是.cpp文件 &#xff08;2&#xff09;配置属性-> VC目录 -> 包含目录 ->添加头文件路径&#xff08;如图&am…...

RocketMQ源码分析之事务消息分析

rocketMQ事务消息原理概述 RocketMQ采用两阶段提交&#xff08;2PC&#xff09;的思想来实现事务消息&#xff0c;当事务消息失败或者超时&#xff0c;同时采用补偿的方式处理这个问题。这两个阶段分别为正常事务消息的发送与提交以及事务消息的补偿。我们看看官方文档给的事务…...

2025.1.19机器学习笔记:PINN文献精读

第三十周周报 一、文献阅读题目信息摘要Abstract创新点物理背景网络框架实验实验一&#xff1a;直道稳定流条件实验二&#xff1a;环状网络中的非稳定流条件 结论缺点及展望 二、代码实践总结 一、文献阅读 题目信息 题目&#xff1a;《Enhanced physics-informed neural net…...

大文件上传服务-后端V1V2

文章目录 大文件上传概述:minio分布式文件存储使用的一些技术校验MD5的逻辑 uploadV1 版本 1uploadv2 版本 2 大文件上传概述: 之前项目做了一个文件上传的功能,最近看到有面试会具体的问这个上传功能的细节&#xff0c;把之前做的项目拿过来总结一下&#xff0c;自己写的一个…...

docker 基础语法学习,K8s基础语法学习,零基础学习

下面是关于Docker和Kubernetes的基础语法学习资料&#xff0c;包括一些关键概念和示例代码。 Docker 基础语法 1. 安装 Docker 首先&#xff0c;你需要安装 Docker。以下是不同操作系统上的安装指南&#xff1a; Windows/Mac: 下载并安装 Docker Desktop。 Linux: 根据你的…...

【网络协议】RFC3164-The BSD syslog Protocol

引言 Syslog常被称为系统日志或系统记录&#xff0c;是一种标准化的协议&#xff0c;用于网络设备、服务器和应用程序向中央Syslog服务器发送日志消息。互联网工程任务组&#xff08;IETF&#xff09;发布的RFC 3164&#xff0c;专门定义了BSD Syslog协议的规范和实现方式。通…...

MongoDB深度解析与实践案例

MongoDB深度解析与实践案例 在当今大数据与云计算盛行的时代,NoSQL数据库以其灵活的数据模型、水平扩展能力和高性能,成为处理海量数据的重要工具之一。MongoDB,作为NoSQL数据库的杰出代表,凭借其面向文档的存储结构、强大的查询语言以及丰富的生态系统,赢得了众多开发者…...

C语言从零到精通:常用运算符完全指南,掌握算术、逻辑与关系运算

系列文章目录 01-C语言从零到精通&#xff1a;常用运算符完全指南&#xff0c;掌握算术、逻辑与关系运算 文章目录 系列文章目录前言一、C语言的起源与应用领域1.1 C语言的起源1.2 C语言的应用领域1.2.1 操作系统开发1.2.2 嵌入式系统1.2.3 编译器开发1.2.4 游戏开发与图形处理…...

ArkUI概述

鸿蒙操作系统&#xff08;HarmonyOS&#xff09;是华为公司推出的一款面向未来、面向全场景的分布式操作系统。它不仅能够支持各种不同的设备&#xff0c;从手机、平板到智能穿戴和智能家居产品&#xff0c;而且为开发者提供了一套统一的开发环境和工具链。对于想要深入鸿蒙开发…...

浅谈计算机网络03 | 现代网络组成

现代网络组成 一 、网络生态体系1.1网络生态系统的多元主体1.2 网络接入设施的多样类型 二、现代网络的典型体系结构解析三、高速网络技术3.1 以太网技术3.2 Wi-Fi技术的深度剖析3.2.1 应用场景的多元覆盖3.2.2 标准升级与性能提升 3.3 4G/5G蜂窝网的技术演进3.3.1 蜂窝技术的代…...

在线图片马赛克处理工具

在线图片马赛克处理工具&#xff0c;无需登录&#xff0c;无需费用&#xff0c;用完就走。 包括中文和英文版本 官网地址&#xff1a; https://mosaic.openai2025.com...

文件上传 分片上传

分片上传则是将一个大文件分割成多个小块分别上传&#xff0c;最后再由服务器合并成完整的文件。这种做法的好处是可以并行处理多个小文件&#xff0c;提高上传效率&#xff1b;同时&#xff0c;如果某一部分上传失败&#xff0c;只需要重传这一部分&#xff0c;不影响其他部分…...

网络安全---CMS指纹信息实战

CMS简介 CMS&#xff08;Content Management System&#xff09;指的是内容管理系统&#xff0c;如WordPress、Joomla等。CMS系统非常常见&#xff0c;几乎所有大型网站都使用CMS来管理其网站的内容。由于常见CMS的漏洞较多&#xff0c;因此黑客将不断尝试利用这些漏洞攻击CMS…...

Ubuntu 24.04 LTS 系统语言英文改中文

Ubuntu 24.04 LTS 修改软件源 Ubuntu 更改软件源 修改语言 无需输入命令&#xff0c;为Ubuntu 24.04系统添加中文智能拼音输入法 在 setting 的 system 中按下图操作 点击“Apply Changes”。需要管理员密码&#xff0c;安装完成后&#xff0c;退出登录&#xff0c;重新登…...

信创在医疗领域的应用:开启医疗信息化新时代

信创在医疗领域的应用&#xff1a;开启医疗信息化新时代 信创在医疗领域的应用&#xff1a;开启医疗信息化新时代信创医疗自助一体机杭医基于信创底座的健康医疗大数据平台厦门大学附属成功医院基于海光CPU的信创改造中科可控基于海光CPU的智慧医疗解决方案 信创在医疗领域的应…...

力扣-数组-303 区域和检索-数组不可变

解析 题目有点费解&#xff0c;大致应该是给出区间内的和&#xff0c;然后维护一个前缀和&#xff0c;为了防止越界&#xff0c;先填一个0进去&#xff0c;在构建的时候也要注意此时构建的dp的下标是i1&#xff0c;所以加的前缀和的下标是i。 代码 class NumArray { public:…...

【CSS】---- CSS 实现超过固定高度后出现展开折叠按钮

1. 实现效果 2. 实现方法 使用 JS 获取盒子的高度&#xff0c;来添加对应的按钮和样式&#xff1b;使用 CSS 的浮动效果&#xff0c;参考CSS 实现超过固定高度后出现展开折叠按钮&#xff1b;使用容器查询 – container 语法&#xff1b;使用 clamp 函数进行样式判断。 3. 优…...

二十项零信任相关的前沿和趋势性技术-MASQUE

影响力评级&#xff1a;较低 市场渗透率&#xff1a;不到目标受众的 1% 成熟度&#xff1a;孵化 定义&#xff1a;基于QUIC加密的多路复用应用程序底层 (MASQUE) 是一个 IETF 标准草案&#xff0c;可实现流量的安全传输和代理。 MASQUE全称为&#xff1a;Multiplexed Appli…...

【Docker】使用Dev Container进行开发

工作区 Dev Container 设置 新建一个文件夹 ./devcontainer 然后下面放 devcontainer.json 然后安装 vscode dev container 插件&#xff0c;然后 CtrlShiftP 启动 Container {"name": "PyTorch-Julia Development","image": "x66ccff/p…...

搭建一个基于Spring Boot的数码分享网站

搭建一个基于Spring Boot的数码分享网站可以涵盖多个功能模块&#xff0c;例如用户管理、数码产品分享、评论、点赞、收藏、搜索等。以下是一个简化的步骤指南&#xff0c;帮助你快速搭建一个基础的数码分享平台。 — 1. 项目初始化 使用 Spring Initializr 生成一个Spring …...

在线json格式化工具

在线json格式化工具,包括中文和英文版本,无需登录&#xff0c;无需费用&#xff0c;用完就走。 官网地址&#xff1a; https://json.openai2025.com 效果如下&#xff1a;...

leetcode300.最长递增子序列

给你一个整数数组 nums &#xff0c;找到其中最长严格递增子序列的长度。 子序列 是由数组派生而来的序列&#xff0c;删除&#xff08;或不删除&#xff09;数组中的元素而不改变其余元素的顺序。例如&#xff0c;[3,6,2,7] 是数组 [0,3,1,6,2,2,7] 的子序列。 示例 1&…...

【个人学习记录】软件开发生命周期(SDLC)是什么?

软件开发生命周期&#xff08;Software Development Life Cycle&#xff0c;SDLC&#xff09;是一个用于规划、创建、测试和部署信息系统的结构化过程。它包含以下主要阶段&#xff1a; 需求分析&#xff08;Requirements Analysis&#xff09; 收集并分析用户需求定义系统目标…...

CTE与临时表:优劣势对比及使用场景分析

在数据库开发中&#xff0c;尤其是在复杂查询和优化中&#xff0c;**公共表表达式&#xff08;CTE&#xff09;和临时表&#xff08;Temporary Table&#xff09;**是两种常用的工具。尽管它们的功能有些相似&#xff0c;都是为了处理中间结果集&#xff0c;但它们的优劣势和使…...

Kali环境变量技巧(The Environment Variable Technique Used by Kali

Kali环境变量技巧 朋友们好&#xff0c;我们今天继续更新《黑客视角下的Kali Linux的基础与网络管理》中的管理用户环境变量。为了充分利用我们的黑客操作系统Kali Linux&#xff0c;我们需要理解和善于使用环境变量&#xff0c;这样会使我们的工具更具便利&#xff0c;甚至具…...

Ubuntu 24.04 LTS linux 文件权限

Ubuntu 24.04 LTS 文件权限 读权限 &#xff1a;允许查看文件的内容。写权限 (w)&#xff1a;允许修改文件的内容。执行权限 (x)&#xff1a;允许执行文件&#xff08;对于目录来说&#xff0c;是进入目录的权限&#xff09;。 文件权限通常与三类用户相关联&#xff1a; 文…...

多个版本JAVA切换(学习笔记)

多个版本JAVA切换 很多时候&#xff0c;我们电脑上会安装多个版本的java版本&#xff0c;java8&#xff0c;java11&#xff0c;java17等等&#xff0c;这时候如果想要切换java的版本&#xff0c;可以按照以下方式进行 1.检查当前版本的JAVA 同时按下 win r 可以调出运行工具…...

AI刷题-最小替换子串长度、Bytedance Tree 问题

目录 一、最小替换子串长度 问题描述 输入格式 输出格式 输入样例 1 输出样例 1 输入样例 2 输出样例 2 解题思路&#xff1a; 问题理解 数据结构选择 算法步骤 最终代码&#xff1a; 运行结果&#xff1a; 二、Bytedance Tree 问题 问题描述 输入格式 输…...

Android 项目依赖冲突问题:Duplicate class found in modules

问题描述与处理处理 1、问题描述 plugins {id com.android.application }android {compileSdk 34defaultConfig {applicationId "com.my.dialog"minSdk 21targetSdk 34versionCode 1versionName "1.0"testInstrumentationRunner "androidx.test.run…...

Webpack简述

一、为什么要构建工具 人类喜欢书写的代码以及开发方式计算机不喜欢&#xff0c;构建工具的作用就是让人类舒舒服服写自己喜欢的代码&#xff0c;然后一打包生成计算机喜欢的代码 第一个webpack自身仅仅是将我们引入的模块打包成一个文件&#xff08;编译import&#xff09;&am…...

ARM GCC编译器

ARM GCC编译器&#xff08;GNU Compiler Collection for ARM&#xff09;是GNU项目的一部分&#xff0c;专门用于编译针对ARM架构的代码。它是一个开源的工具链&#xff0c;支持多种编程语言&#xff0c;包括C、C和汇编语言。以下是关于ARM GCC编译器的详细解释及其作用&#x…...

CSS3 3D 转换介绍

CSS3 中的 3D 转换提供了一种在二维屏幕上呈现三维效果的方式&#xff0c;主要包括translate3d、rotate3d、scale3d等转换函数&#xff0c;下面来详细介绍&#xff1a; 1. 3D 转换的基本概念 坐标系 在 CSS3 的 3D 空间中&#xff0c;使用的是右手坐标系。X 轴是水平方向&…...

关于 Cursor 的一些学习记录

文章目录 1. 写在最前面2. Prompt Design2.1 Priompt v0.1&#xff1a;提示设计库的首次尝试2.2 注意事项 3. 了解 Cursor 的 AI 功能3.1 问题3.2 答案 4. cursor 免费功能体验5. 写在最后面6. 参考资料 1. 写在最前面 本文整理了一些学习 Cursor 过程中读到的或者发现的感兴趣…...

3. 后端验证前端Token

书接上回&#xff0c;后端将token返回给前端&#xff0c;前端存入cookie&#xff0c;每次前端给后端发送请求&#xff0c;后端是如何验证的。 若依是用过滤器来实现对请求的验证&#xff0c;过滤器的简单理解是每次发送请求的时候先发送给过滤器执行逻辑判断以及处理&#xff0…...

【LLM】Openai-o1及o1类复现方法

note 可以从更为本质的方案出发&#xff0c;通过分析强化学习的方法&#xff0c;看看如何实现o1&#xff0c;但其中的核心就是在于&#xff0c;如何有效地初始化策略、设计奖励函数、实现高效的搜索算法以及利用强化学习进行学习和优化。 文章目录 note一、Imitate, Explore, …...

与“神”对话:Swift 语言在 2025 中的云霓之望

0. 引子 夜深人静&#xff0c;是一片极度沉醉的黑&#xff0c;这便于我与深沉的 macbook 悄悄隐秘于其中。一股异香袭来&#xff0c;恍惚着&#xff0c;撸码中身心极度疲惫、头脑昏沉的我仿佛感觉到了一束淡淡的微光轻洒在窗边。 我的对面若隐若现逐渐浮现出一个熟悉的身影。他…...

设计模式-单例模式

定义 保证一个类仅有一个实例&#xff0c;并提供一个访问它的全局访问点。 类图 类型 饿汉式 线程安全&#xff0c;调用效率高&#xff0c;但是不能延迟加载。 public class HungrySingleton {private static final HungrySingleton instancenew HungrySingleton();private …...

C#枚举类型携带额外数据的方法

Java里面的枚举类型可以定义很多属性&#xff0c;携带各种数据&#xff0c;然而C#里面的枚举类型只能代表数字&#xff0c;不能在枚举类型里面定义各种属性&#xff0c;导致某些应用场景使用起来不方便&#xff0c;但是可以利用C#里面的Attribute来解决这个问题。 例如&#xf…...