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

flutter修改状态栏学习

在flutter中如何动态更改状态栏的颜色和风格。

前置知识点学习

AnnotatedRegion

`AnnotatedRegion` 是 Flutter 中的一个小部件,用于在特定区域中提供元数据(metadata)以影响某些系统级的行为或外观。它通常用于改变系统 UI 的外观,比如状态栏或导航栏的颜色和风格。

主要用途

1.系统 UI 风格:最常见的用途是与 `SystemUiOverlayStyle` 一起使用,来指定状态栏和导航栏的颜色和图标样式。

2.区域性元数据:它允许在特定的 `Widget` 子树中提供数据,这些数据可以被 Flutter 的其他系统或组件读取和使用。

典型用法

在 Flutter 中,`AnnotatedRegion` 经常用于设置状态栏的样式。通过包裹一个子组件树,并提供一个 `SystemUiOverlayStyle` 值,系统会在该区域应用指定的状态栏样式。

import 'package:flutter/material.dart';
import 'package:flutter/services.dart';class MyStatusBarDemoPage extends StatelessWidget {const MyStatusBarDemoPage({super.key});@overrideWidget build(BuildContext context) {return AnnotatedRegion<SystemUiOverlayStyle>(value: SystemUiOverlayStyle.light,child: Scaffold(appBar: AppBar(title: const Text('AnnotatedRegion Example'),),body: const Center(child: Text('Hello, World!'),),));}
}

注意事项

1.优先级:如果有多个嵌套的 `AnnotatedRegion`,最内层的 `AnnotatedRegion` 的值将会覆盖外层的值。

2.适用范围:`AnnotatedRegion` 适用于需要传递元数据以影响子树行为的场景,主要是系统 UI 样式设置。

3.应用场景:非常适合需要在应用程序的不同页面或部分动态设置状态栏或导航栏风格的情况。

总结

`AnnotatedRegion` 是一个强大的工具,可以在 Flutter 应用的特定区域中设置系统级别的 UI 样式。这使得开发者可以更细粒度地控制应用的视觉风格,特别是在需要根据不同界面动态调整状态栏和导航栏的外观时。通过理解和使用 `AnnotatedRegion`,可以大大增强应用的用户界面体验。

SystemUiOverlayStyle

`SystemUiOverlayStyle` 是 Flutter 中用于定义系统 UI 覆盖层外观的一个类。它主要用于控制状态栏和导航栏的颜色和图标样式。这在提供一致的用户体验和匹配应用的主题时非常有用。

主要属性

`SystemUiOverlayStyle` 提供了一些属性来控制状态栏和导航栏的外观:

1.`statusBarColor`:

  • 定义状态栏的背景颜色。
  • 仅在 Android 上有效,因为 iOS 的状态栏颜色是由系统控制的。

2.`statusBarIconBrightness`:

  • 控制状态栏中图标的亮度(深色或浅色)。
  • 可选值为 `Brightness.light` 和 `Brightness.dark`。
  • 影响状态栏图标和文字的颜色。

3.`statusBarBrightness`:

  • 控制 iOS 状态栏的亮度。
  • 用于在 iOS 上设置状态栏内容的颜色(文字和图标)。

4.`systemNavigationBarColor`:

  • 定义系统导航栏的背景颜色。
  • 仅在 Android 上有效。

5.`systemNavigationBarIconBrightness`:

  • 控制导航栏中图标的亮度。
  • 适用于 Android。

6.`systemNavigationBarDividerColor`:

  • 定义导航栏分隔线的颜色。
  • 适用于 Android。

使用示例

可以通过 `SystemChrome.setSystemUIOverlayStyle` 方法应用 `SystemUiOverlayStyle`,或者通过 `AnnotatedRegion` 小部件在特定区域应用。

class MyStatusBarDemoPage extends StatelessWidget {const MyStatusBarDemoPage({super.key});@overrideWidget build(BuildContext context) {SystemChrome.setSystemUIOverlayStyle(const SystemUiOverlayStyle(statusBarColor: Colors.blue,statusBarIconBrightness: Brightness.light,systemNavigationBarColor: Colors.blue,systemNavigationBarIconBrightness: Brightness.light));return Scaffold(appBar: AppBar(title: const Text('AnnotatedRegion Example'),),body: const Center(child: Text('Hello, World!'),),);}
}

注意事项

1.平台差异:一些属性仅在 Android 上有效(如 `statusBarColor` 和 `systemNavigationBarColor`),而 iOS 上状态栏的外观由系统控制。

2.视觉一致性:确保选择的颜色和亮度组合在各种背景和主题下提供良好的对比度,以保证可读性和用户体验。

3.动态更新:可以在应用的生命周期中多次调用 `SystemChrome.setSystemUIOverlayStyle` 以响应特定页面或组件的需求。

kToolbarHeight

`kToolbarHeight` 是 Flutter 框架中定义的一个常量,代表了标准应用栏(AppBar)的默认高度。它是一个 `double` 类型的值,通常被用来确保应用的布局与 Flutter 的设计规范保持一致。

详细解析

数值:

  • `kToolbarHeight` 的值是 `56.0`。这个值是在 Material Design 指南中规定的标准高度,用于 Android 和 iOS 的应用栏。

用途:

  • AppBar 高度:在定义 `AppBar` 时,`kToolbarHeight` 确保了应用栏的高度与 Material Design 的标准保持一致。
  • 布局计算:在布局计算中,特别是在需要考虑上方留白或空间的情况下,`kToolbarHeight` 可以用于计算其它组件的高度或位置。
  • 自定义组件:在实现自定义的 `AppBar` 或类似组件时,可以使用 `kToolbarHeight` 作为高度参考,以保持一致的视觉设计。

使用场景

1.标准 AppBar:
在使用现成的 `AppBar` 组件时,`kToolbarHeight` 是默认的高度,不需要显式指定。但在自定义布局中,你可以使用它来确保一致性。

AppBar(title: Text('Example AppBar'),
)

2.自定义 AppBar:
如果你实现自己的 `AppBar`,可以通过实现 `PreferredSizeWidget` 接口来使用 `kToolbarHeight`。

import 'package:flutter/material.dart';class MyCustomAppBar extends StatelessWidget implements PreferredSizeWidget {const MyCustomAppBar({super.key});@overrideWidget build(BuildContext context) {return Container(color: Colors.blue,height: kToolbarHeight, // 使用 kToolbarHeight 保持标准高度child: const Text('Custom AppBar',style: TextStyle(color: Colors.white, fontSize: 20),),);}@overrideSize get preferredSize => const Size.fromHeight(kToolbarHeight);
}

3.布局计算:

例如,在布局中计算可用空间时,减去 `kToolbarHeight` 可以确保下方组件不会被 `AppBar` 遮挡。

double availableHeight = MediaQuery.of(context).size.height - kToolbarHeight;

注意事项

  • 一致性:使用 `kToolbarHeight` 可以确保整个应用在使用 `AppBar` 相关布局时保持一致的设计规范。
  • 灵活性:虽然 `kToolbarHeight` 提供了一个标准的高度,但在某些情况下,你可能需要根据设计需求调整高度。如果调整,请确保设计的视觉效果和可用性。

总结

`kToolbarHeight` 是一个简单但有用的常量,帮助开发者在 Flutter 应用中保持布局的一致性,特别是在应用栏的设计中。通过使用 `kToolbarHeight`,你可以确保应用在视觉上符合 Material Design 的规范,同时也为用户提供一致的体验。

Size get preferredSize

  • 这是一个 getter 方法,返回一个 `Size` 对象。
  • `preferredSize` 是 `PreferredSizeWidget` 接口要求的一个属性。它指定了部件的首选大小,在这种情况下,通常用于自定义 `AppBar` 或需要特定大小的任何部件。

`const Size.fromHeight(kToolbarHeight)

  • `Size` 是一个类,表示部件的宽度和高度。
  • `Size.fromHeight(double height)` 是一个命名构造函数,用于创建一个具有指定高度的 `Size` 对象。宽度被设为无限(`double.infinity`),这意味着宽度是灵活的,可以由父部件或布局系统来确定。
  • `kToolbarHeight` 是 Flutter 框架中定义的一个常量,指定了 AppBar 的标准高度,即 `56.0` 逻辑像素。
  • `const` 用于创建一个编译时常量,这可以提高性能,因为对象只实例化一次并被重用。

上下文和用法

  • 自定义 AppBar 或部件:在创建需要像 `AppBar` 一样行为的自定义部件时,实现 `PreferredSizeWidget` 允许你指定部件的首选大小。这对于布局系统分配正确的空间给该部件非常重要。
  • 标准化:通过使用 `kToolbarHeight`,部件遵循了 Material Design 指南中定义的标准 AppBar 高度。这确保了应用程序不同部分的一致性,并符合用户的预期。

IconButton

`IconButton` 是 Flutter 中的一个小部件,用于创建一个具有图标的按钮。它是一个无状态的按钮,用户可以点击它来触发某种动作。`IconButton` 是构建用户界面时常用的组件之一,特别是在需要使用图标而非文本作为交互元素的情况下。

主要属性

1.`icon`:

  • 这是一个 `Widget` 类型,通常是一个 `Icon`,表示按钮中显示的图标。
  • 例如:`icon: Icon(Icons.add)`

2.`onPressed`:

  • 这是一个回调函数,当用户点击按钮时被调用。
  • 如果为 `null`,按钮将被禁用并且不会响应点击事件。
  • 例如:`onPressed: () { print("Button pressed"); }`

3.`tooltip`:

  • 用于提供按钮的描述性文本,当用户长按按钮时显示。通常用于无障碍支持,帮助用户理解按钮的功能。
  • 例如:`tooltip: 'Add Item'`

4.`iconSize`:

  • 用于设置图标的大小,以逻辑像素为单位。
  • 例如:`iconSize: 30.0`

5.`color`:

  • 设置图标的颜色。
  • 例如:`color: Colors.blue`

6.`padding`:

  • 设置按钮的内边距,即图标与按钮边界之间的距离。
  • 例如:`padding: EdgeInsets.all(8.0)`

7.`alignment`:

  • 控制图标在按钮内的对齐方式。
  • 例如:`alignment: Alignment.center`

示例代码

以下是一个简单的 `IconButton` 用法示例:

IconButton(icon: Icon(Icons.volume_up),iconSize: 30.0,color: Colors.blue,tooltip: 'Increase volume',onPressed: () {print('Volume button clicked');},
)

使用场景

  • 导航栏中的操作按钮,比如返回、菜单、搜索等。
  • 表单中的提交或取消操作。
  • 增加或减少某些数值,如音量或亮度。
  • 任何需要图标作为触发器的交互场景。

总结

`IconButton` 是一个非常灵活的组件,用于在应用程序中以图标形式展示交互按钮。通过其属性,你可以定制图标的大小、颜色、对齐方式以及点击行为等。它广泛用于各种 UI 场景中,为用户提供直观的点击操作。

SafeArea

`SafeArea` 是 Flutter 中的一个布局小部件,用于在应用程序中创建一个“安全”的显示区域。它通过插入合适的填充(padding)来避免应用界面被设备的系统 UI 元素(如状态栏、导航栏、屏幕边角等)遮挡。`SafeArea` 是特别有用的,因为它能够自适应不同设备和屏幕的特殊区域,确保内容的可见性和可用性。

主要功能

  • 自动填充:`SafeArea` 会自动检测设备的特殊区域,并为其子组件添加合适的填充,以确保内容不被这些区域遮挡。
  • 适应性强:能够适应不同设备和屏幕方向(横屏或竖屏)上的各种系统 UI 元素。

主要属性

1.`child`:

  • `SafeArea` 的子组件,即需要保护的内容。

2.`left`, `top`, `right`, `bottom`:

  • 布尔值,用于指定是否在对应方向上应用安全填充。
  • 例如:`left: false` 表示不在左侧应用填充。

3.`minimum`:

  • 用于指定最小填充值。即使计算得出的系统填充值小于这个值,`SafeArea` 也会应用这个最小值。

4.`maintainBottomViewPadding`:

  • 当为 `true` 时,即使在键盘弹出时也保持底部填充。这在需要保持底部内容始终可见的情况下非常有用。

使用场景

  • 页面布局:在设计页面布局时,确保内容不会被系统 UI 遮挡。
  • 全屏应用:在需要全屏显示但又不想被设备特有的区域(如刘海屏、圆角)影响时,使用 `SafeArea` 非常有效。
  • 跨平台开发:在开发需要适应不同屏幕尺寸和设备特性的跨平台应用时,`SafeArea` 是一个必备的工具。

总结

`SafeArea` 是 Flutter 中一个非常实用的小部件,用于确保应用程序的内容在各种设备上始终可见且不被遮挡。通过自动适应设备的系统 UI 组件,它为开发者提供了一种简单而有效的方法来处理不同设备上的屏幕布局问题。

SystemChrome.setSystemUIOverlayStyle( SystemUiOverlayStyle.light)

`SystemChrome.setSystemUIOverlayStyle(SystemUiOverlayStyle.light)` 是一段用于在 Flutter 应用中设置系统 UI 样式的代码。具体来说,它用于更改设备状态栏(通常位于屏幕顶部)的外观。

解析

SystemChrome`:

  • `SystemChrome` 是 Flutter 提供的一个类,用于控制设备的许多系统级特性,如屏幕方向、系统 UI 样式等。

`setSystemUIOverlayStyle`:

  • 这是 `SystemChrome` 类中的一个静态方法,用于设置系统 UI 覆盖层的样式。
  • 该方法接受一个 `SystemUiOverlayStyle` 类型的参数,用于指定状态栏和导航栏的样式。

`SystemUiOverlayStyle.light`:

  • `SystemUiOverlayStyle` 是一个类,其中包含了许多用于定义系统 UI 外观的属性。`SystemUiOverlayStyle.light` 是其一个预定义的样式。
  • 使用 `light` 风格会将状态栏的图标和文字设为浅色,通常适用于深色背景,以确保内容的可读性。

作用

通过调用 `SystemChrome.setSystemUIOverlayStyle(SystemUiOverlayStyle.light)`,你可以在应用中设置状态栏的样式,使其与应用的整体设计风格相匹配。浅色风格的状态栏图标和文字在深色背景下具有更好的对比度和可读性。

使用场景

  • 深色主题应用:当应用使用深色主题时,可以使用 `SystemUiOverlayStyle.light` 来确保状态栏的图标和文字清晰可见。
  • 动态主题切换:在应用中切换主题时,可以动态设置状态栏样式以适应当前的主题。

示例代码

以下是一个简单的应用示例,展示了如何设置状态栏的样式:

import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
void main() {runApp(MyApp());
}
class MyApp extends StatelessWidget {@overrideWidget build(BuildContext context) {// 设置状态栏样式为浅色SystemChrome.setSystemUIOverlayStyle(SystemUiOverlayStyle.light);return MaterialApp(home: Scaffold(appBar: AppBar(title: Text('System UI Overlay Style'),),body: Center(child: Text('Hello, World!'),),),);}
}

注意事项

  • 平台限制:某些样式属性可能在特定平台(如 iOS 或 Android)上表现不同。通常,状态栏的颜色在 iOS 上是系统控制的,而在 Android 上可以通过此方法进行更改。
  • 状态栏颜色:如果需要更改状态栏的背景颜色,需要在 Android 上同时设置 `statusBarColor` 属性。

总结

通过 `SystemChrome.setSystemUIOverlayStyle(SystemUiOverlayStyle.light)`,开发者可以定制 Flutter 应用的系统 UI 样式,以增强视觉一致性和可读性。这是创建现代化、用户友好界面的一个重要工具。

代码实现学习

import 'package:flutter/material.dart';
import 'package:flutter/services.dart';class MyCustomStatusBarDemoPage extends StatefulWidget {const MyCustomStatusBarDemoPage({super.key});@override_MyCustomStatusBarPageState createState() => _MyCustomStatusBarPageState();
}class _MyCustomStatusBarPageState extends State<MyCustomStatusBarDemoPage> {bool customSystemUIOverlayStyle = false;@overrideWidget build(BuildContext context) {var body = getBody();if (customSystemUIOverlayStyle) {return body;}return AnnotatedRegion<SystemUiOverlayStyle>(value: SystemUiOverlayStyle.dark,child: body,);}getBody() {return Scaffold(appBar: const MyImageAppBar(),body: Center(child: Row(mainAxisAlignment: MainAxisAlignment.center,crossAxisAlignment: CrossAxisAlignment.center,children: <Widget>[TextButton(onPressed: () {setState(() {customSystemUIOverlayStyle = true;});SystemChrome.setSystemUIOverlayStyle(SystemUiOverlayStyle.light);},style: ButtonStyle(backgroundColor: ButtonStyleButton.allOrNull<Color>(Colors.yellowAccent)),child: const Text("Light")),const SizedBox(width: 10,),TextButton(onPressed: () {setState(() {customSystemUIOverlayStyle = true;});SystemChrome.setSystemUIOverlayStyle(SystemUiOverlayStyle.dark);},style: ButtonStyle(backgroundColor: ButtonStyleButton.allOrNull<Color>(Colors.greenAccent,),),child: const Text("Dart"))],),),);}
}class MyImageAppBar extends StatelessWidget implements PreferredSizeWidget {const MyImageAppBar({super.key});@overrideWidget build(BuildContext context) {return Stack(children: <Widget>[Image.asset("static/demo.png",fit: BoxFit.cover,width: MediaQuery.sizeOf(context).width,height: kToolbarHeight * 2,),SafeArea(child: IconButton(color: Colors.white,icon: const Icon(Icons.arrow_back_ios),onPressed: () {Navigator.of(context).pop();},))],);}@overrideSize get preferredSize => const Size.fromHeight(kToolbarHeight * 2);
}

相关文章:

flutter修改状态栏学习

在flutter中如何动态更改状态栏的颜色和风格。 前置知识点学习 AnnotatedRegion AnnotatedRegion 是 Flutter 中的一个小部件&#xff0c;用于在特定区域中提供元数据&#xff08;metadata&#xff09;以影响某些系统级的行为或外观。它通常用于改变系统 UI 的外观&#xff…...

解决Unity编辑器Inspector视图中文注释乱码

1.问题介绍 新创建一个脚本&#xff0c;用VS打开编辑&#xff0c;增加一行中文注释保存&#xff0c;在Unity中找到该脚本并选中&#xff0c;Inspector视图中预览的显示内容&#xff0c;该中文注释显示为乱码&#xff0c;如下图所示&#xff1a; 2.图示解决步骤 按上述步骤操作…...

关于csgo的游戏作弊与封禁

关于csgo的游戏作弊与封禁 一.关于作弊 什么叫作弊&#xff1f; 1.换肤&#xff0c;换库存 2.各种参&#xff08;回溯&#xff0c;自瞄&#xff0c;透视&#xff0c;急停&#xff0c;连跳&#xff0c;假身&#xff0c;子弹跟踪等&#xff09; 3.某一部分更改游戏内存&…...

严格单元测试造就安全软件

在信息技术迅速发展的今天&#xff0c;软件在各个行业中扮演着至关重要的角色&#xff0c;尤其是在汽车行业&#xff0c;其中软件的可靠性和安全性直接影响到人们的生命安全。软件缺陷所带来的潜在风险不容小觑&#xff0c;尤其在涉及到自动驾驶和车辆控制等关键系统时&#xf…...

ubuntu 根分区逻辑卷扩容

1、虚拟机关机通过管理界面给磁盘扩容。 rootcurtis:/home/curtis/git_code# pvdisplay--- Physical volume ---PV Name /dev/vda3VG Name ubuntu-vgPV Size <239.00 GiB / not usable 0Allocatable yes (but full)PE…...

如何查看电脑生产日期

查看电脑的生产日期通常可以通过以下方法实现&#xff0c;具体方式取决于操作系统和电脑类型&#xff1a; 方法 1&#xff1a;检查电脑 BIOS 生产日期通常记录在 BIOS 中。可以通过以下步骤查看&#xff1a; 重启电脑并进入 BIOS&#xff1a; 启动时按下特定的键&#xff08;…...

MAC M1 mysql 8.0 如何修改root用户密码

关闭mysql服务 使用brew方式安装&#xff0c;可以通过一下命令关闭 brew services stop mysql使用安装包安装的方式 可以选择&#x1f34e;->系统偏好设置->最下方单机MySQL图标->stop mysql server 启动 MySQL 到安全模式 sudo mysqld_safe --skip-grant-tables …...

漫画之家系统:Spring Boot框架下的漫画版权保护

摘 要 随着信息技术和网络技术的飞速发展&#xff0c;人类已进入全新信息化时代&#xff0c;传统管理技术已无法高效&#xff0c;便捷地管理信息。为了迎合时代需求&#xff0c;优化管理效率&#xff0c;各种各样的管理系统应运而生&#xff0c;各行各业相继进入信息管理时代&a…...

在 MacOS 上为 LM Studio 更换镜像源

在 MacOS 之中使用 LM Studio 部署本地 LLM时&#xff0c;用户可能会遇到无法下载模型的问题。 一般的解决方法是在 huggingface.co 或者国内的镜像站 hf-mirror.com 的项目介绍卡页面下载模型后拖入 LM Studio 的模型文件夹。这样无法利用 LM Studio 本身的搜索功能。 本文将…...

Nginx配置https(Ubuntu、Debian、Linux、麒麟)

Ubuntu操作系统&#xff0c;Debian系统底层是Ubuntu&#xff0c;差异不大 ubuntu 安装nginx 1.安装依赖 sudo apt-get update sudo apt-get install gcc sudo apt-get install libpcre3 libpcre3-dev sudo apt-get install zlib1g zlib1g-dev sudo apt-get install openssl lib…...

「Mac畅玩鸿蒙与硬件40」UI互动应用篇17 - 照片墙布局

本篇将带你实现一个简单的照片墙布局应用&#xff0c;通过展示多张图片组成照片墙效果&#xff0c;用户可以点击图片查看其状态变化。 关键词 UI互动应用照片墙布局Grid 布局动态图片加载用户交互 一、功能说明 照片墙布局应用的特点&#xff1a; 动态加载多张图片组成网格布…...

VMware Workstation 安装Ubuntu 系统(图文步骤)

之前一直在讲Ubuntu Linux的用户和组 链接&#xff1a; Linux专栏 今天来讲讲Ubuntu 系统基础的安装步骤&#xff01;&#xff01;&#xff01; 废话少说&#xff0c;马上开始&#xff01; 文章目录 前言准备安装环境先下载Ubuntu 镜像 详细安装步骤如下新建虚拟机默认使用 15.…...

mybatis用pagehelper 然后用CountJSqlParser45,发现自己手写的mapper查询效率很慢

如题 效率慢疑惑 效率慢 分页查询,发现效率很慢,然后发现是比较复杂的sql,CountJSqlParser45它不会帮忙优化掉,就是select多少字段它count的时候也还是这么多字段 框架里的用法是这样的 所以去看了CountJSqlParser45里面的代码,发现如果有group之类的,它就不帮忙把count优化…...

【优选算法 二分查找】二分查找入门详解:二分查找 & 在排序数组中查找元素的第一个和最后一个位置

二分查找 题目描述 题目解析 暴力解法 我们可以从左往右遍历一次数组&#xff0c;如果存在 target 则返回数组的下标&#xff0c;否则返回 -1&#xff1b; 时间复杂度 O(N)&#xff0c;因为没有利用数组有序的特点&#xff0c;每次比较只能舍弃一个要比较的数&…...

WPF编写工业相机镜头选型程序

该程序满足面阵和线阵的要求。 前端代码 <Window x:Class"相机镜头选型.MainWindow" Loaded"Window_Loaded"xmlns"http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x"http://schemas.microsoft.com/winfx/2006/xaml…...

网络安全内容整理二

网络嗅探技术 网络监听 网络监听&#xff0c;也称网络嗅探(Network Sniffing)&#xff1a;在他方未察觉的情况下捕获其通信报文、通信内容的技术 网卡的工作模式&#xff1a; 1.广播模式(Broadcast Mode)&#xff1a;网卡能够接收网络中的广播信息 2.组播模式(Multicast Mo…...

解决git did not exit cleanly (exit code 128)问题

解决 git did not exit cleanly &#xff08;exit code 128&#xff09;问题 1、错误描述2、解决方法2.1 方法一2.2 方法二 1、错误描述 使用TortoiseGit进行操作时&#xff0c;总是提示下述错误。 2、解决方法 2.1 方法一 打开 TortoiseGit -> Settings 点击 Network&…...

Linux入门攻坚——40、Linux集群系统入门-lvs(1)

Cluster&#xff0c;集群&#xff0c;为了解决某个特定问题将多台计算机组合起来形成的单个系统。 这个单个集群系统可以扩展&#xff0c;系统扩展的方式&#xff1a;scale up&#xff0c;向上扩展&#xff0c;更换更好的主机&#xff1b;scale out&#xff0c;向外扩展&…...

momentum 和 weight_decay 的区别

momentum 和 weight_decay 的区别 两者在优化器中的作用不同,主要体现在优化的目的和机制上。 1. momentum(动量) 作用:加速收敛并减少优化过程中的震荡。 机制: momentum 是用于在梯度下降中积累动量的机制。它通过在每一步中综合之前的更新方向,帮助模型在陡峭区域加速…...

Vue 3 + TypeScript进阶用法

在掌握了 Vue 3 和 TypeScript 的基本使用后&#xff0c;你可以进一步探索一些进阶特性和最佳实践。这些包括更复杂的类型定义、自定义 hooks、全局状态管理等。下面是一些关键点&#xff1a; 1. 更复杂的类型定义 Props 和 Emits 的类型 对于组件的 props 和 emits&#xf…...

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析

1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具&#xff0c;该工具基于TUN接口实现其功能&#xff0c;利用反向TCP/TLS连接建立一条隐蔽的通信信道&#xff0c;支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式&#xff0c;适应复杂网…...

铭豹扩展坞 USB转网口 突然无法识别解决方法

当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…...

地震勘探——干扰波识别、井中地震时距曲线特点

目录 干扰波识别反射波地震勘探的干扰波 井中地震时距曲线特点 干扰波识别 有效波&#xff1a;可以用来解决所提出的地质任务的波&#xff1b;干扰波&#xff1a;所有妨碍辨认、追踪有效波的其他波。 地震勘探中&#xff0c;有效波和干扰波是相对的。例如&#xff0c;在反射波…...

【CSS position 属性】static、relative、fixed、absolute 、sticky详细介绍,多层嵌套定位示例

文章目录 ★ position 的五种类型及基本用法 ★ 一、position 属性概述 二、position 的五种类型详解(初学者版) 1. static(默认值) 2. relative(相对定位) 3. absolute(绝对定位) 4. fixed(固定定位) 5. sticky(粘性定位) 三、定位元素的层级关系(z-i…...

uniapp微信小程序视频实时流+pc端预览方案

方案类型技术实现是否免费优点缺点适用场景延迟范围开发复杂度​WebSocket图片帧​定时拍照Base64传输✅ 完全免费无需服务器 纯前端实现高延迟高流量 帧率极低个人demo测试 超低频监控500ms-2s⭐⭐​RTMP推流​TRTC/即构SDK推流❌ 付费方案 &#xff08;部分有免费额度&#x…...

论文笔记——相干体技术在裂缝预测中的应用研究

目录 相关地震知识补充地震数据的认识地震几何属性 相干体算法定义基本原理第一代相干体技术&#xff1a;基于互相关的相干体技术&#xff08;Correlation&#xff09;第二代相干体技术&#xff1a;基于相似的相干体技术&#xff08;Semblance&#xff09;基于多道相似的相干体…...

JVM虚拟机:内存结构、垃圾回收、性能优化

1、JVM虚拟机的简介 Java 虚拟机(Java Virtual Machine 简称:JVM)是运行所有 Java 程序的抽象计算机,是 Java 语言的运行环境,实现了 Java 程序的跨平台特性。JVM 屏蔽了与具体操作系统平台相关的信息,使得 Java 程序只需生成在 JVM 上运行的目标代码(字节码),就可以…...

AI+无人机如何守护濒危物种?YOLOv8实现95%精准识别

【导读】 野生动物监测在理解和保护生态系统中发挥着至关重要的作用。然而&#xff0c;传统的野生动物观察方法往往耗时耗力、成本高昂且范围有限。无人机的出现为野生动物监测提供了有前景的替代方案&#xff0c;能够实现大范围覆盖并远程采集数据。尽管具备这些优势&#xf…...

JavaScript 数据类型详解

JavaScript 数据类型详解 JavaScript 数据类型分为 原始类型&#xff08;Primitive&#xff09; 和 对象类型&#xff08;Object&#xff09; 两大类&#xff0c;共 8 种&#xff08;ES11&#xff09;&#xff1a; 一、原始类型&#xff08;7种&#xff09; 1. undefined 定…...

Python 实现 Web 静态服务器(HTTP 协议)

目录 一、在本地启动 HTTP 服务器1. Windows 下安装 node.js1&#xff09;下载安装包2&#xff09;配置环境变量3&#xff09;安装镜像4&#xff09;node.js 的常用命令 2. 安装 http-server 服务3. 使用 http-server 开启服务1&#xff09;使用 http-server2&#xff09;详解 …...