arkUI:Flex弹性布局的各个属性

arkUI:Flex弹性布局的简单使用

  • 1 主要内容说明
  • 2 相关内容
    • 2.1 Flex弹性布局的方向
      • 2.1.1 源码1的简答说明
      • 2.1.2 源码1 (Flex弹性布局的方向)
      • 2.1.3 源码1运行效果
        • 2.1.3.1 当`direction: FlexDirection.RowReverse`
        • 2.1.3.2 当`direction: FlexDirection.Row`
        • 2.1.2.3 当`direction: FlexDirection.ColumnReverse`
        • 2.1.2.4 当`direction: FlexDirection.Column`
    • 2.2 Flex主轴的对齐方式
      • 2.2.1 源码2简单说明
      • 2.2.2 源码2(Flex主轴的对齐方式)
      • 2.2.3 源码2运行效果
        • 2.2.3.1 当`justifyContent: FlexAlign.SpaceBetween,`
        • 2.2.3.2 当`justifyContent: FlexAlign.SpaceAround,`
        • 2.2.3.3 当`justifyContent: FlexAlign.SpaceEvenly,`
        • 2.2.3.4 当`justifyContent: FlexAlign.End,`
        • 2.2.3.5 当`justifyContent: FlexAlign.Center,`
        • 2.2.3.6 当`justifyContent: FlexAlign.Start,`
    • 2.3 Flex交叉轴的对齐方式
      • 2.3.1 源码3的简单说明
      • 2.3.2 源码3(shift方法)
      • 2.3.3 源码3运行效果
        • 2.3.3.1 当`alignItems: ItemAlign.Center,`
        • 2.3.3.2 当`alignItems: ItemAlign.Start, `
        • 2.3.3.3 当`alignItems: ItemAlign.End, `
        • 2.3.3.4 当`alignItems: ItemAlign.Stretch, `
    • 2.4 Flex布局的换行
      • 2.4.1 源码4的相关说明
      • 2.4.2 源码4(Flex布局的换行)
      • 2.4.3 源码4运行效果
        • 2.4.3.1 当`wrap: FlexWrap.Wrap,`
        • 2.4.3.2 当`wrap: FlexWrap.WrapReverse,`
        • 2.4.3.3 当`wrap: FlexWrap.NoWrap,`
    • 2.5 换行后单独设置交叉轴的子组件
      • 2.5.1 源码5的相关说明
      • 2.5.2 源码5(换行后单独设置交叉轴的子组件)
      • 2.5.3 源码5的运行效果
        • 2.5.3.1 设置alignSelf 属性时如下
        • 2.5.3.2 不设置alignSelf 属性时,对照组如下
  • 3.结语
  • 4.定位日期

1 主要内容说明

在 Flex 布局中,元素会根据容器的设置自动调整位置。例如,元素可以在主轴上按不同的对齐方式排列,如从左到右或从右到左,也可以调整元素之间的间距,确保布局的美观性。通过控制元素在交叉轴(与主轴垂直)上的对齐方式,可以让它们在容器中垂直居中或伸展以适应容器高度。
Flex 布局还支持换行,当容器的空间不够时,元素会自动换行或列出。通过适当配置,可以精确控制每个元素的大小、位置和间距。我们可以轻松实现各种复杂的布局,而不必担心元素会被挤到容器外或错位。
Flex 布局是为了应对现代网页和应用中动态、响应式的布局需求,它能高效地让我们处理元素的排列、对齐和分布问题。

2 相关内容

2.1 Flex弹性布局的方向

内容说明
FlexDirection.Row水平从左到右排列子元素(默认方向)。适合横向排列子项,类似于一行的布局。
FlexDirection.RowReverse水平从右到左排列子元素。可以用于右对齐的横向排列,元素逆序显示。
FlexDirection.Column垂直从上到下排列子元素。适合纵向布局,类似于一列的排列。
FlexDirection.ColumnReverse垂直从下到上排列子元素。用于倒序的纵向排列。

2.1.1 源码1的简答说明

  • Flex 容器:使用 Flex 布局来排列子元素,设置了横向反转排列(RowReverse)。容器高度为 60%,宽度为 100%,背景色为半透明青色。
  • 文本组件:遍历数组 arr 中的三个字符串,每个字符串生成一个 Text 组件。设置文本组件的宽高、背景色、边框、字体大小、对齐方式等样式,并添加了圆角、背景图片及其尺寸配置。

2.1.2 源码1 (Flex弹性布局的方向)

@Entry
@Component
struct PageFlex {// 定义一个字符串数组,包含了三个组件的名字arr: string[] = ["组件1", "组件2", "组件3"]// 构建页面的方法build() {// 创建一个 Flex 布局容器Flex({// 设置布局方向为 RowReverse(横向反转排列)direction: FlexDirection.RowReverse// 其他布局方向选项(已注释):// FlexDirection.Row: 横向排列// FlexDirection.Column: 纵向排列// FlexDirection.ColumnReverse: 纵向反转排列}) {// 遍历字符串数组 arrForEach(this.arr,(str: string) => {// 为每个字符串创建一个 Text 组件Text(str).width(80)                       // 设置宽度为 80.height(80)                      // 设置高度为 80.backgroundColor("#ff64dd4d")    // 设置背景颜色为半透明绿色.border({ width: 1 })            // 设置边框宽度为 1.borderColor("blue")             // 设置边框颜色为蓝色.textAlign(TextAlign.Center)     // 设置文本居中对齐.fontSize(30)                    // 设置字体大小为 30.borderRadius(40)                // 设置边框圆角为 40.backgroundImage($r("app.media.xiaowoniu")) // 设置背景图片.backgroundImageSize({ width: 80, height: 80 }) // 设置背景图片尺寸.fontColor("green")              // 设置字体颜色为绿色})}// 设置 Flex 容器的高度为 60%,宽度为 100%.height('60%').width('100%').backgroundColor("#ff4dd7ac")           // 设置 Flex 容器背景颜色为半透明青色}
}

2.1.3 源码1运行效果

2.1.3.1 当direction: FlexDirection.RowReverse

在这里插入图片描述

2.1.3.2 当direction: FlexDirection.Row

在这里插入图片描述

2.1.2.3 当direction: FlexDirection.ColumnReverse

在这里插入图片描述

2.1.2.4 当direction: FlexDirection.Column

在这里插入图片描述

2.2 Flex主轴的对齐方式

在 ArkUI 的 Flex 布局中,justifyContent 属性用于设置子组件在主轴(主排列方向)上的对齐方式。不同的 FlexAlign 枚举值决定了子组件在主轴方向上如何排列。下面是各个参数的说明:

枚举说明
FlexAlign.Start子组件从主轴的起始位置(左或上)开始排列,紧贴在一起。
FlexAlign.Center子组件在主轴方向居中排列。
FlexAlign.End子组件从主轴的结束位置(右或下)排列。
FlexAlign.SpaceBetween子组件在主轴方向上均匀分布,第一个子组件紧贴起始位置,最后一个子组件紧贴结束位置。
FlexAlign.SpaceAround子组件在主轴方向上均匀分布,每个组件两侧留有相等的空间,整体空间略小于 SpaceEvenly。
FlexAlign.SpaceEvenly子组件在主轴方向上均匀分布,每个组件之间以及与容器边缘的距离相等。

2.2.1 源码2简单说明

使用了 justifyContent 属性设置子组件在容器中的对齐方式为 SpaceBetween,即子组件均匀分布在两端。

  • mes 扩展方法:通过 @Extend(Text) 创建了 mes 方法来统一设置 Text 组件的样式。样式包括文本宽高、背景色、边框、文本对齐、字体大小、圆角、背景图片及其大小等。

2.2.2 源码2(Flex主轴的对齐方式)

import { text } from '@kit.ArkGraphics2D'@Entry
@Component
struct PageFlex {// 定义一个字符串数组,包含了三个组件的名字arr: string[] = ["组件1", "组件2", "组件3"]// 构建页面的方法build() {// 创建一个 Flex 布局容器Flex({direction: FlexDirection.Row,// 设置子组件的对齐方式为两端对齐justifyContent: FlexAlign.SpaceBetween,// 其他对齐选项(已注释):// FlexAlign.Start: 从左侧开始对齐// FlexAlign.Center: 居中对齐// FlexAlign.End: 从右侧对齐// FlexAlign.SpaceAround: 子元素之间均匀分布,带边距// FlexAlign.SpaceEvenly: 子元素之间均匀分布,不带边距}) {// 遍历字符串数组 arrForEach(this.arr,(str: string) => {// 为每个字符串创建一个 Text 组件,调用 mes 方法设置样式Text(str).mes()})}// 设置 Flex 容器的高度为 60%,宽度为 100%.height('60%').width('100%').backgroundColor("#ff4dd7ac")           // 设置 Flex 容器背景颜色为半透明青色}
}// 扩展 Text 组件的 mes 方法来统一设置样式
@Extend(Text)
function mes() {.width(80)                       // 设置宽度为 80.height(80)                      // 设置高度为 80.backgroundColor("#ff64dd4d")    // 设置背景颜色为半透明绿色.border({ width: 1 })            // 设置边框宽度为 1.borderColor("blue")             // 设置边框颜色为蓝色.textAlign(TextAlign.Center)     // 设置文本居中对齐.fontSize(30)                    // 设置字体大小为 30.borderRadius(40)                // 设置边框圆角为 40.backgroundImage($r("app.media.xiaowoniu")) // 设置背景图片.backgroundImageSize({ width: 80, height: 80 }) // 设置背景图片尺寸.fontColor("green")              // 设置字体颜色为绿色
}

2.2.3 源码2运行效果

2.2.3.1 当justifyContent: FlexAlign.SpaceBetween,

1

2.2.3.2 当justifyContent: FlexAlign.SpaceAround,

在这里插入图片描述

2.2.3.3 当justifyContent: FlexAlign.SpaceEvenly,

在这里插入图片描述

2.2.3.4 当justifyContent: FlexAlign.End,

在这里插入图片描述

2.2.3.5 当justifyContent: FlexAlign.Center,

在这里插入图片描述

2.2.3.6 当justifyContent: FlexAlign.Start,

在这里插入图片描述

2.3 Flex交叉轴的对齐方式

alignItems 用于设置子组件在控制交叉轴对齐方式属性。不同的 ItemAlign枚举值决定了子组件在交叉轴方向上如何排列。下面是各个参数的说明:

内容说明
ItemAlign.Auto默认自动对齐,通常情况下由布局或父组件控制。
ItemAlign.Start子组件在交叉轴(垂直方向)上从起始边对齐(通常是顶部对齐)。
ItemAlign.Center子组件在交叉轴上居中对齐,使它们位于容器垂直方向的中央。
ItemAlign.End子组件在交叉轴上从结束边对齐(通常是底部对齐)。
ItemAlign.Baseline子组件按照其文本的基线对齐,适合包含文本内容的组件,确保文字在视觉上对齐。
ItemAlign.Stretch子组件沿交叉轴方向拉伸,填满容器的交叉轴区域。

2.3.1 源码3的简单说明

这段代码通过 ArkUI 的 Flex 布局在页面中创建了一排文本组件,使用 justifyContent 控制主轴对齐方式,alignItems 控制交叉轴对齐方式。

  • alignItems: ItemAlign.Center 后需要逗号,避免语法错误。

2.3.2 源码3(shift方法)

import { text } from '@kit.ArkGraphics2D'@Entry
@Component
struct PageFlex {// 定义一个字符串数组,包含了三个组件的名字arr: string[] = ["组件1", "组件2", "组件3"]// 构建页面的方法build() {// 创建一个 Flex 布局容器Flex({direction: FlexDirection.Row,// 设置主轴方向为两端均匀分布justifyContent: FlexAlign.SpaceEvenly,// 设置交叉轴方向居中对齐alignItems: ItemAlign.Center,// 其他对齐选项(已注释):// ItemAlign.Auto: 默认自动对齐// ItemAlign.Start: 从交叉轴的起始边对齐// ItemAlign.End: 从交叉轴的结束边对齐// ItemAlign.Baseline: 根据文本基线对齐// ItemAlign.Stretch: 拉伸填满交叉轴}) {// 遍历字符串数组 arrForEach(this.arr,(str: string) => {// 为每个字符串创建一个 Text 组件,调用 mes 方法设置样式Text(str).mes()})}// 设置 Flex 容器的高度为 60%,宽度为 100%.height('60%').width('100%').backgroundColor("#ff4dd7ac")           // 设置 Flex 容器背景颜色为半透明青色}
}// 扩展 Text 组件的 mes 方法来统一设置样式
@Extend(Text)
function mes() {.width(80)                       // 设置宽度为 80.height(80)                      // 设置高度为 80.backgroundColor("#ff64dd4d")    // 设置背景颜色为半透明绿色.border({ width: 1 })            // 设置边框宽度为 1.borderColor("blue")             // 设置边框颜色为蓝色.textAlign(TextAlign.Center)     // 设置文本居中对齐.fontSize(30)                    // 设置字体大小为 30.borderRadius(40)                // 设置边框圆角为 40.backgroundImage($r("app.media.xiaowoniu")) // 设置背景图片.backgroundImageSize({ width: 80, height: 80 }) // 设置背景图片尺寸.fontColor("green")              // 设置字体颜色为绿色
}

2.3.3 源码3运行效果

2.3.3.1 当alignItems: ItemAlign.Center,

在这里插入图片描述

2.3.3.2 当alignItems: ItemAlign.Start,

在这里插入图片描述

2.3.3.3 当alignItems: ItemAlign.End,

在这里插入图片描述

2.3.3.4 当alignItems: ItemAlign.Stretch,

在这里插入图片描述

2.4 Flex布局的换行

布局换行的相关参数如下:

项目Value
FlexWrap.NoWrap子组件不换行,所有组件会放置在同一行或列上,可能导致内容超出容器边界。
FlexWrap.Wrap子组件按容器边界自动换行。
FlexWrap.WrapReverse与 Wrap 类似,但新行会显示在前一行的上方(或左侧),即反转排列顺序。

2.4.1 源码4的相关说明

创建了一个主轴方向为 Row 的水平 Flex 布局。主轴对齐方式:使用 justifyContent:FlexAlign.SpaceBetween,在主轴方向上让组件两端对齐,组件之间均匀分布。换行方式:设置 wrap: FlexWrap.Wrap,组件在边界处自动换行。

2.4.2 源码4(Flex布局的换行)

import { text } from '@kit.ArkGraphics2D'@Entry
@Component
struct PageFlex {// 定义一个字符串数组,包含了多个组件的名字arr: string[] = ["组件1", "组件2", "组件3", "组件4", "组件5", "组件6", "组件7", "组件8", "组件9", "组件10"]// 构建页面的方法build() {// 创建一个 Flex 布局容器Flex({direction: FlexDirection.Row,// 设置主轴方向为两端均匀分布justifyContent: FlexAlign.SpaceBetween,// 设置交叉轴方向居中对齐// alignItems: ItemAlign.Center,// 设置子组件换行wrap: FlexWrap.Wrap,// 其他选项(已注释):// FlexWrap.NoWrap: 不换行,所有组件在一行内显示// FlexWrap.WrapReverse: 组件换行但方向反转}) {// 遍历字符串数组 arrForEach(this.arr,(str: string) => {// 为每个字符串创建一个 Text 组件,调用 mes 方法设置样式Text(str).mes()})}// 设置 Flex 容器的高度为 60%,宽度为 100%.height('60%').width('100%').backgroundColor("#ff4dd7ac")           // 设置 Flex 容器背景颜色为半透明青色}
}// 扩展 Text 组件的 mes 方法来统一设置样式
@Extend(Text)
function mes() {.width(80)                       // 设置宽度为 80.height(80)                      // 设置高度为 80.backgroundColor("#ff64dd4d")    // 设置背景颜色为半透明绿色.border({ width: 1 })            // 设置边框宽度为 1.borderColor("blue")             // 设置边框颜色为蓝色.textAlign(TextAlign.Center)     // 设置文本居中对齐.fontSize(30)                    // 设置字体大小为 30.borderRadius(40)                // 设置边框圆角为 40.backgroundImage($r("app.media.xiaowoniu")) // 设置背景图片.backgroundImageSize({ width: 80, height: 80 }) // 设置背景图片尺寸.fontColor("green")              // 设置字体颜色为绿色
}

2.4.3 源码4运行效果

2.4.3.1 当wrap: FlexWrap.Wrap,

在这里插入图片描述

2.4.3.2 当wrap: FlexWrap.WrapReverse,

在这里插入图片描述

2.4.3.3 当wrap: FlexWrap.NoWrap,

在这里插入图片描述

2.5 换行后单独设置交叉轴的子组件

如果在 Flex 布局容器中启用了换行(wrap: FlexWrap.Wrap 或 wrap: FlexWrap.WrapReverse),那么 alignItems: ItemAlign.Center 可能会失效。因为,alignItems 是用来设置 主容器 中的 子项 在交叉轴上的对齐方式的(例如,垂直对齐)。当启用 换行(wrap) 时,子项可能会分为多行或多列排列。在这种情况下,如alignItems: ItemAlign.Center 仅会影响第一行或第一列的子项,其他行或列的子项则不会受此影响。如果希望每行/列的子项都在交叉轴上居中对齐,可以通过设置每个子项的 alignSelf 来单独控制每个子项的对齐方式,而不是依赖于 alignItems。

2.5.1 源码5的相关说明

  • Text(“组件1”) ------ 第一个文本组件,通过 alignSelf(ItemAlign.Stretch) 在交叉轴方向上拉伸以填满容器。
  • Text(“组件2”) ------ 第二个文本组件,通过 alignSelf(ItemAlign.Center) 在交叉轴上居中对齐。
  • Text(“组件3”) ------ 第三个文本组件,通过 alignSelf(ItemAlign.End) 在交叉轴上对齐到容器的末尾。

2.5.2 源码5(换行后单独设置交叉轴的子组件)

import { text } from '@kit.ArkGraphics2D'@Entry
@Component
struct PageFlex {// 构建页面的方法build() {// 创建一个 Flex 布局容器Flex() {// 创建第一个文本组件,并设置它在交叉轴上拉伸以填满容器Text("组件1").mes().alignSelf(ItemAlign.Stretch) // 交叉轴方向拉伸填充容器// 创建第二个文本组件,并设置它在交叉轴上居中对齐Text("组件2").mes().alignSelf(ItemAlign.Center)  // 交叉轴方向居中对齐// 创建第三个文本组件,并设置它在交叉轴上对齐到末尾Text("组件3").mes().alignSelf(ItemAlign.End)     // 交叉轴方向对齐到末尾}// 设置 Flex 容器的高度为 60%,宽度为 100%.height('60%').width('100%').backgroundColor("#ff4dd7ac")           // 设置 Flex 容器背景颜色为半透明青色}
}// 扩展 Text 组件的 mes 方法来统一设置样式
@Extend(Text)
function mes() {.width(80)                       // 设置文本框宽度为 80.height(80)                      // 设置文本框高度为 80.backgroundColor("#ff64dd4d")    // 设置背景颜色为半透明绿色.border({ width: 1 })            // 设置边框宽度为 1.borderColor("blue")             // 设置边框颜色为蓝色.textAlign(TextAlign.Center)     // 设置文本居中对齐.fontSize(30)                    // 设置字体大小为 30.borderRadius(40)                // 设置边框圆角为 40.backgroundImage($r("app.media.xiaowoniu")) // 设置背景图片.backgroundImageSize({ width: 80, height: 80 }) // 设置背景图片尺寸.fontColor("green")              // 设置字体颜色为绿色
}

2.5.3 源码5的运行效果

2.5.3.1 设置alignSelf 属性时如下

在这里插入图片描述

2.5.3.2 不设置alignSelf 属性时,对照组如下

在这里插入图片描述

3.结语

flex弹性布局和前面的row、column的对齐方式的博文内容有许多类似的地方,如主轴的参数和设置基本一样。有些许不同的是交叉轴的命名使用方式,但基本参数都有相同的,可以类比。不同的,如flex弹性布局多了像拉伸这样的属性值。可以多对比一下注意区分。
由于笔者的能力有限,创作的内容有所不足在所难免,也敬请读者包涵和指出,万分感谢!

4.定位日期

2024-11-8;
22:07;

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

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

相关文章

高效Web测试:构建Pytest、Allure和Jenkins的自动化测试生态

Pytest介绍 pytest是一个非常成熟的全功能的Python测试框架,主要有以下几个特点:简单灵活、容易上手、文档丰富;支持参数化,可以细粒度地控制被测用例;能够支持简单的单元测试和复杂的功能测试,还可以用来…

ros入门:topic话题通信(c++)

准备工作 创建工作空间 mkdir -p demo02_pub/src/ 生成依赖文件 cd demo02_pub/ catkin_make 进入src目录执行 catkin_create_pkg ros_pub_sub/ roscpp rospy std__msgs 发布者实现 消息发布代码编写 cd demo02_pub/src/ros_pub_sub/src 创建代码文件demo01_pub.cc …

重建大师7.0 | 质效全面提升,塑造更优质的实景三维重建

在大势智慧“AI智算、国产信创”2024秋季新品发布会上,重建大师7.0版以其卓越性能惊艳登场。这一新版本不仅引入了创新的倾斜高斯泼溅方法(OPGS),实现城市级场景的高效三维重建。 针对传统倾斜建模方法,重建大师7.0同…

Unity性能优化5【物理篇】

1.刚体的碰撞检测属性首选离散型 离散碰撞的缺点是小物体快速移动时,有丢失碰撞的风险。此下拉菜单中,越下面的选项碰撞检测频率越高,性能消耗也显著增加。因此在选择碰撞检测类型时尽量选择离散型。 2.优化碰撞矩阵 合理标记碰撞矩阵可以减…

【threejs】创建及管理场景内的后期处理效果(以bloom为例,开箱即用)

场景内使用 //创建后期通道this.effectManager new EffectManager({ renderer, camera, scene, dom })//循环渲染// 动画----------effect为我控制后期特效的开关animate() {requestAnimationFrame(this.animate);let { camera, controls, effectManager, effect } thisif (!…

建立用邻接表表示的无向图

创建一个建立用邻接表表示的无向图 #include<stdio.h> #include<stdlib.h> typedef struct node {int adjvex;struct node *next; }Anode; typedef struct {char vertex;Anode *link; }Unode; typedef struct {Unode adjlist[100];int vexnum,arcnum; }Adjgraph; …

芯片需要按一下keyup或者复位按键虚拟或者下载之后芯片能下载却运行不了或者需要额外供电。

这些问题很有可能是因为外围电路器件幅值与设计不同的存在&#xff0c;导致你需要外部供电才能实现一个正常运行&#xff0c;可以检查一下外围电路在供电区域的电流区&#xff0c;电阻幅值是否和原理图设计时看的一模一样或者直接更换 因为按键会失灵&#xff0c;首先检查复位按…

Java直播系统视频聊天系统小程序源码

直播视频聊天系统✨&#xff1a;打造你的专属互动空间 &#x1f680; 引言&#xff1a;直播视频聊天系统的兴起 在这个快节奏的数字时代&#xff0c;直播和视频聊天已成为我们日常沟通的重要工具。从游戏直播到在线教育&#xff0c;从远程办公到家庭聚会&#xff0c;直播视频…

云轴科技ZStack助力新远科技开启化工行业智能制造新篇章

新远科技基于云轴科技ZStack Cube超融合和ZStack Zaku容器云平台打造了灵活高效的IT基础设施&#xff0c;实现了IaaS和PaaS层的全面覆盖&#xff0c;优化了资源利用率&#xff0c;降低了硬件成本和运维复杂性&#xff0c;同时强化了数据安全和业务连续性。 化工行业的数字化先…

软件测试PO模式

V1&#xff1a;不使用任何设计模式和单元测试框架 V2&#xff1a;使用UnitTest管理用例 V3&#xff1a;使用方法封装的思想&#xff0c;对代码进行优化 V4&#xff1a;采用PO模式的分层思想对代码进行拆分 V5&#xff1a;对PO分层之后的代码继续优化 V6&#xff1a;PO模式深入封…

网页版五子棋——匹配模块(客户端开发)

前一篇文章&#xff1a;网页版五子棋——用户模块&#xff08;客户端开发&#xff09;-CSDN博客 目录 前言 一、前后端交互接口设计 二、游戏大厅页面 1.页面代码编写 2.前后端交互代码编写 3.测试获取用户信息功能 结尾 前言 前面文章介绍完了五子棋项目用户模块的代码…

Spring设计模式

设计模式 是一种软件开发中的解决方案&#xff0c;设计原则。目的是使代码具有扩展性&#xff0c;可维护性&#xff0c;可读性&#xff0c;如&#xff1a; 单例模式&#xff08;Singleton Pattern&#xff09; Spring IoC 容器默认会将 Bean 创建为单例&#xff0c;保证一个类…

【设计模式】结构型模式(一):适配器模式、装饰器模式

结构型模式&#xff08;一&#xff09;&#xff1a;适配器模式、装饰器模式 1.适配器模式&#xff08;Adapter&#xff09;2.装饰器模式&#xff08;Decorator&#xff09;2.1 主要特点2.2 组成部分2.3 示例代码2.3.1 Component 组件2.3.2 ConcreteComponent 具体组件2.3.3 Dec…

Go Energy 跨平台(GUI)应用编译和安装包制作

构建打包 energy cli 平台介绍描述windowNSIS安装包制作工具可通过 energy cli 安装linuxdpkg 命令系统自带macosenergy 仅生成 xxx.app系统自带 安装包制作 config/energy_[os].json是初始化应用时自动生成的应用配置文件&#xff0c;在编译和制作应用安装包时使用 Windows…

【Linux】进程信号全攻略(二)

&#x1f308; 个人主页&#xff1a;Zfox_ &#x1f525; 系列专栏&#xff1a;Linux 目录 一&#xff1a;&#x1f525; 再谈信号的捕捉 &#x1f98b; 关于信号捕捉的细节部分&#xff08;sigaction函数&#xff09; 二&#xff1a;&#x1f525; 穿插话题 - 操作系统是怎么运…

鸿蒙的进击之路

1. 题记&#xff1a; 为什么要写鸿蒙&#xff0c;因为她是华为的&#xff0c;为什么是华为就要写&#xff0c;因为华为背负了国人太多太多的包袱&#xff0c;或点赞或抨击。 我是强烈支持华为的&#xff0c;但我会客观公正地去评价华为的产品&#xff0c;就比如这篇博文&#…

Swagger的介绍和使用方式+常用注解

介绍: 使用Swagger你只需要按照它的规范去定义接口及接口相关的信息&#xff0c;就可以做到生成接口文档&#xff0c;以及在线接口调试页面.简单来说就是我们只需要知道使用Swagger可以帮助我们后端生成接口文档 Swagger官网:https://swagger.io/ 因为单独使用Swagger会有些…

FFmpeg 4.3 音视频-多路H265监控录放C++开发十三:将AVFrame转换成AVPacket。视频编码,AVPacket 重要函数,结构体成员学习

前提&#xff1a; 从前面的学习我们知道 AVFrame中是最原始的 视频数据&#xff0c;这一节开始我们需要将这个最原始的视频数据 压缩成 AVPacket数据&#xff0c; 我们前面&#xff0c;将YUV数据或者 RGBA 数据装进入了 AVFrame里面&#xff0c;并且在SDL中显示。 也就是说&…

QinQ VLAN技术

QinQ VLAN技术的主要作用包括扩展VLAN数量、实现私网VLAN透传、提供二层隔离和多租户环境等。以下是对这些作用的详细介绍&#xff1a; 扩展VLAN数量 解决VLAN ID不足问题&#xff1a;QinQ技术通过在原有的802.1Q标签基础上再增加一层802.1Q标签&#xff0c;从而将VLAN数量从40…

【机器学习】24. 聚类-层次式 Hierarchical Clustering

1. 优势和缺点 优点&#xff1a; 无需提前指定集群的数量 通过对树状图进行不同层次的切割&#xff0c;可以得到所需数量的簇。树状图提供了一个有用的可视化-集群过程的可解释的描述树状图可能揭示一个有意义的分类 缺点&#xff1a; 计算复杂度较大, 限制了其在大规模数据…