探索 Flutter 中的 NavigationRail:使用详解

news2024/9/30 19:27:57

1. 介绍

在 Flutter 中,NavigationRail 是一个垂直的导航栏组件,用于在应用程序中提供导航功能。它通常用于更大屏幕空间的设备,如平板电脑和桌面应用程序。NavigationRail 提供了一种直观的方式来浏览应用程序的不同部分,并允许用户轻松地切换页面或执行导航操作。

作用和特点:

  • 导航功能: NavigationRail 允许用户直观地导航应用程序的不同部分。通过点击导航栏中的选项,用户可以快速地切换到不同的页面或执行其他导航操作。

  • 垂直布局: NavigationRail 的垂直布局使其在平板电脑和桌面应用程序中尤其有用。在这些设备上,垂直导航栏可以更有效地利用屏幕空间,并提供更直观的用户体验。

  • 自定义外观: NavigationRail 允许开发人员根据应用程序的设计和品牌风格自定义导航栏的外观。您可以自定义背景颜色、选中项的颜色、图标和标签等。

  • 响应式设计: NavigationRail 支持响应式设计,可以适应不同尺寸和方向的屏幕。这使得它成为构建适用于多种设备和屏幕尺寸的应用程序的理想选择。

  • 高级功能: NavigationRail 提供了一些高级功能,如灵活的标签配置、自定义导航栏元素以及与页面切换组件的无缝集成,使开发人员能够创建功能丰富且易于使用的导航体验。

在下文中,我们将深入探讨 NavigationRail 的使用方法、最佳实践以及在实际应用中的应用场景,帮助您更好地利用这个强大的导航组件来构建出色的 Flutter 应用程序。

在这里插入图片描述

2. 安装和设置

在 Flutter 项目中使用 NavigationRail 非常简单,您只需按照以下步骤进行安装和设置即可:

  1. 添加依赖项
    在您的 Flutter 项目的 pubspec.yaml 文件中添加 flutter/material.dart 包。NavigationRail 是 Flutter SDK 的一部分,因此无需额外添加依赖项。
dependencies:
  flutter:
    sdk: flutter
  1. 导入包
    在您的 Dart 文件中导入 material.dart 包,以便使用 NavigationRail 组件。
import 'package:flutter/material.dart';
  1. 使用 NavigationRail
    在您的应用程序中使用 NavigationRail 组件来创建垂直导航栏。
class MyHomePage extends StatefulWidget {
  
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Navigation Rail Demo'),
      ),
      body: Row(
        children: <Widget>[
          NavigationRail(
            // 导航栏的配置属性
            // 例如 selectedIndex、onDestinationSelected 等
            // 可根据需要进行设置
          ),
          // 页面内容组件
        ],
      ),
    );
  }
}

通过以上步骤,您已经成功地将 NavigationRail 集成到您的 Flutter 项目中了。接下来,您可以根据需要对导航栏进行配置,例如设置选中项的索引、定义导航栏中的目标以及处理目标选中事件等。

3. 基本用法

NavigationRail 是 Flutter 中用于创建垂直导航栏的组件,它提供了一种直观的方式来导航应用程序的不同部分。以下是如何创建简单的 NavigationRail,并解释其关键属性的基本用法:

class MyHomePage extends StatefulWidget {
  
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  int _selectedIndex = 0; // 用于跟踪选中项的索引

  
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Navigation Rail Demo'),
      ),
      body: Row(
        children: <Widget>[
          NavigationRail(
            selectedIndex: _selectedIndex, // 设置选中项的索引
            onDestinationSelected: (int index) {
              setState(() {
                _selectedIndex = index; // 处理目标选中事件
              });
            },
            labelType: NavigationRailLabelType.all, // 显示所有标签
            destinations: [
              NavigationRailDestination(
                icon: Icon(Icons.home), // 导航栏项的图标
                label: Text('Home'), // 导航栏项的标签
              ),
              NavigationRailDestination(
                icon: Icon(Icons.person),
                label: Text('Profile'),
              ),
              // 添加其他导航栏项
            ],
          ),
          // 页面内容组件
          Expanded(
            child: Center(
              child: _getPage(_selectedIndex), // 根据选中项显示不同的页面内容
            ),
          ),
        ],
      ),
    );
  }

  Widget _getPage(int index) {
    switch (index) {
      case 0:
        return Center(child: Text('Home Page'));
      case 1:
        return Center(child: Text('Profile Page'));
      // 添加其他页面
      default:
        return Center(child: Text('Page not found'));
    }
  }
}

在上面的示例中,我们创建了一个简单的 NavigationRail,其中包含两个导航栏项:Home 和 Profile。通过设置 selectedIndex 属性来跟踪选中项的索引,并通过 onDestinationSelected 回调函数来处理选中项的变化。每个导航栏项使用 NavigationRailDestination 类来定义图标和标签。最后,根据选中的索引,显示不同的页面内容。

使用 labelType 属性可以定义导航栏标签的显示方式。在本例中,我们设置为 NavigationRailLabelType.all,表示显示所有标签,包括未选中的标签。

通过这个基本用法示例,您可以快速开始使用 NavigationRail 来构建具有导航功能的 Flutter 应用程序。根据您的需求,您可以添加更多的导航栏项,并根据需要自定义导航栏的外观和行为。

4. 自定义导航栏

NavigationRail 提供了许多自定义选项,使您能够根据应用程序的设计和品牌风格定制导航栏的外观。下面是如何自定义 NavigationRail 的外观以及如何提供自定义图标和标签的方法:

4.1 自定义导航栏外观

您可以通过以下方法来自定义 NavigationRail 的外观:

  • 背景色: 使用 backgroundColor 属性设置导航栏的背景色。
NavigationRail(
  backgroundColor: Colors.blueGrey, // 设置导航栏的背景色
  // 其他配置属性...
)
  • 选中项颜色: 使用 selectedIconTheme 属性设置选中项的图标主题,以及 selectedLabelTextStyle 属性设置选中项的标签文本样式。
NavigationRail(
  selectedIconTheme: IconThemeData(color: Colors.red), // 设置选中项的图标颜色
  selectedLabelTextStyle: TextStyle(color: Colors.red), // 设置选中项的标签文本颜色
  // 其他配置属性...
)
  • 未选中项颜色: 使用 unselectedIconTheme 属性设置未选中项的图标主题,以及 unselectedLabelTextStyle 属性设置未选中项的标签文本样式。
NavigationRail(
  unselectedIconTheme: IconThemeData(color: Colors.grey), // 设置未选中项的图标颜色
  unselectedLabelTextStyle: TextStyle(color: Colors.grey), // 设置未选中项的标签文本颜色
  // 其他配置属性...
)

4.2 自定义图标和标签

您可以通过以下方法自定义导航栏的图标和标签:

  • 自定义图标: 使用任何您喜欢的图标,例如 Flutter 自带的图标或自定义的图标。
NavigationRailDestination(
  icon: Icon(Icons.home), // 使用 Flutter 自带的图标
  // 或者
  icon: Icon(
    IconData(0xe8e6, fontFamily: 'MyCustomIcons'), // 使用自定义的图标
  ),
  // 其他属性...
)
  • 自定义标签: 使用 Text 组件自定义导航栏项的标签。
NavigationRailDestination(
  label: Text('Home'), // 自定义标签文本
  // 其他属性...
)

通过使用上述自定义选项,您可以轻松地根据应用程序的需求和设计风格定制 NavigationRail 的外观,并提供具有个性化标签和图标的导航栏。这样,您可以确保导航栏与应用程序的整体风格保持一致,并提供出色的用户体验。

5. 与页面切换结合

NavigationRail 通常与页面切换组件结合使用,例如 PageViewIndexedStack,以实现根据选定的导航栏项切换不同的页面内容。以下是如何将 NavigationRail 与 PageView 结合使用的解释和演示:

5.1 解释如何结合页面切换组件

  1. 使用 PageView PageView 组件允许用户在页面之间滑动,因此非常适合与 NavigationRail 结合使用。您可以在 PageView 中放置不同的页面,并根据导航栏的选定项切换页面。

  2. 使用 IndexedStack IndexedStack 组件允许同时显示多个子组件,并通过索引来确定哪个子组件应该可见。您可以将不同的页面放置在 IndexedStack 中,并根据导航栏的选定项设置索引来显示相应的页面。

5.2 演示如何根据选定的导航栏项切换页面内容

下面是一个简单的示例,演示如何将 NavigationRail 与 PageView 结合使用,并根据选定的导航栏项切换页面内容:

class MyHomePage extends StatefulWidget {
  
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  int _selectedIndex = 0;
  PageController _pageController = PageController(); // 页面控制器

  
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Navigation Rail Demo'),
      ),
      body: Row(
        children: <Widget>[
          NavigationRail(
            selectedIndex: _selectedIndex,
            onDestinationSelected: (int index) {
              setState(() {
                _selectedIndex = index;
                _pageController.jumpToPage(index); // 根据选定的导航栏项切换页面
              });
            },
            // 导航栏配置属性...
          ),
          Expanded(
            child: PageView(
              controller: _pageController,
              children: [
                Center(child: Text('Home Page')),
                Center(child: Text('Profile Page')),
                // 添加其他页面
              ],
            ),
          ),
        ],
      ),
    );
  }
}

在上面的示例中,我们创建了一个包含 NavigationRail 和 PageView 的界面。当用户点击导航栏中的选项时,onDestinationSelected 回调函数会被调用,并根据选定的索引来更新 _selectedIndex。然后,我们使用页面控制器 _pageController 来将 PageView 的当前页设置为选定的索引,从而切换到相应的页面。

通过这种方法,您可以实现根据选定的导航栏项切换不同的页面内容,为用户提供直观的导航体验。您还可以根据需要将其他页面添加到 PageView 中,以扩展应用程序的功能。

6. 响应式设计

在设计 Flutter 应用程序时,响应式设计是至关重要的,特别是在考虑到不同设备尺寸和方向的情况下。NavigationRail 作为一种用于导航的重要组件,需要在各种屏幕尺寸上进行适应。以下是在不同的屏幕尺寸上响应式地使用 NavigationRail 的一些最佳实践:

6.1 适应平板电脑、桌面和移动设备的最佳实践

  1. 使用媒体查询: 使用 MediaQuery 来检测当前设备的屏幕尺寸和方向,并相应地调整 NavigationRail 的布局和样式。
Widget build(BuildContext context) {
  final screenWidth = MediaQuery.of(context).size.width;
  final isDesktop = screenWidth > 600; // 适用于平板电脑和桌面

  return Scaffold(
    body: Row(
      children: <Widget>[
        // 在大屏幕上显示 NavigationRail
        if (isDesktop)
          NavigationRail(
            // 导航栏属性...
          ),
        // 页面内容组件
        Expanded(
          child: Center(
            // 页面内容...
          ),
        ),
      ],
    ),
  );
}
  1. 使用 Flexible 和 Expanded: 在 Row 布局中,将 NavigationRail 放置在 Flexible 组件中,并将页面内容放置在 Expanded 组件中,以确保页面内容可以占据剩余的空间。
Widget build(BuildContext context) {
  return Scaffold(
    body: Row(
      children: <Widget>[
        Flexible(
          flex: 1,
          child: NavigationRail(
            // 导航栏属性...
          ),
        ),
        Expanded(
          flex: 3,
          child: Center(
            // 页面内容...
          ),
        ),
      ],
    ),
  );
}
  1. 考虑横向布局: 对于横向屏幕方向的设备,如平板电脑和桌面,可以考虑将 NavigationRail 放置在页面的左侧或右侧,而不是顶部。
Widget build(BuildContext context) {
  final isLandscape = MediaQuery.of(context).orientation == Orientation.landscape;

  return Scaffold(
    body: isLandscape
      ? Row(
          children: <Widget>[
            // 在横向布局中,根据需求放置 NavigationRail
            NavigationRail(
              // 导航栏属性...
            ),
            // 页面内容...
          ],
        )
      : Column(
          children: <Widget>[
            // 在竖向布局中,将 NavigationRail 放置在顶部
            NavigationRail(
              // 导航栏属性...
            ),
            // 页面内容...
          ],
        ),
  );
}

通过以上最佳实践,您可以确保在不同的屏幕尺寸和方向下,NavigationRail 能够适应设备的布局,并提供一致的用户体验。根据您的应用程序需求和设计风格,可以灵活地调整布局和样式。

7. 高级功能

NavigationRail 不仅提供了基本的导航功能,还提供了一些高级功能,以增强用户体验并扩展导航栏的功能。以下是一些高级功能的探索和演示:

7.1 labelType 属性

labelType 属性用于定义导航栏标签的显示方式。NavigationRail 提供了三种 NavigationRailLabelType 枚举类型:

  • NavigationRailLabelType.none: 不显示标签。
  • NavigationRailLabelType.selected: 只在选中的导航栏项上显示标签。
  • NavigationRailLabelType.all: 在所有导航栏项上都显示标签。
NavigationRail(
  labelType: NavigationRailLabelType.selected, // 只在选中项上显示标签
  // 其他配置属性...
)

7.2 leading 和 trailing 属性

leadingtrailing 属性允许在导航栏中添加额外的元素,可以是图标、按钮或其他小部件。通常,leading 用于在导航栏的顶部添加元素,而 trailing 则用于在底部添加元素。

NavigationRail(
  leading: Icon(Icons.menu), // 在导航栏顶部添加图标
  trailing: Icon(Icons.search), // 在导航栏底部添加图标
  // 其他配置属性...
)

7.3 实现导航栏中的额外元素

您可以使用 leadingtrailing 属性来实现在导航栏中添加额外的元素,例如标签、按钮或其他自定义小部件。以下是一个示例,演示如何在导航栏的顶部添加一个按钮,并在底部添加一个文本标签:

NavigationRail(
  leading: IconButton(
    icon: Icon(Icons.menu),
    onPressed: () {
      // 处理导航栏顶部按钮点击事件
    },
  ),
  trailing: Text('Settings'), // 在导航栏底部添加文本标签
  // 其他配置属性...
)

通过使用高级功能,您可以增强导航栏的功能和外观,为用户提供更丰富的导航体验。您可以根据应用程序的需求和设计风格,自由地定制导航栏,并添加所需的额外元素。

8. 案例研究

NavigationRail 是一个灵活的导航组件,在许多实际应用中都可以发挥重要作用。以下是一个使用 NavigationRail 的案例研究,展示其在实际应用中的应用场景:

案例:健康监测应用

背景: 健康监测应用是一种用于跟踪用户健康数据和提供个性化建议的应用程序。用户可以查看各种健康指标,如步数、心率、睡眠质量等,并根据这些数据了解自己的健康状况。

NavigationRail 的应用: 在健康监测应用中,NavigationRail 可以用作主要的导航方式,让用户轻松地访问各个健康数据模块。以下是 NavigationRail 在健康监测应用中的一些应用场景:

  1. 导航栏项: NavigationRail 的每个导航栏项可以代表一个健康数据模块,如步数、心率、睡眠等。用户可以通过点击导航栏项来切换到相应的健康数据页面。

  2. 自定义图标和标签: 每个导航栏项可以使用自定义的图标和标签,以便用户更容易识别和理解各个健康数据模块。

  3. 页面切换: NavigationRail 可以与 PageViewIndexedStack 结合使用,以实现根据选定的导航栏项切换页面内容。用户可以通过滑动页面或点击导航栏项来浏览各个健康数据页面。

  4. 响应式设计: 应用程序可以根据不同设备的屏幕尺寸和方向来调整 NavigationRail 的布局和样式,以确保在各种设备上提供一致的用户体验。

总结: 在健康监测应用中,NavigationRail 提供了一个直观的导航方式,让用户可以轻松地访问和浏览各个健康数据模块。通过其灵活的配置选项和响应式设计,NavigationRail 可以有效地增强健康监测应用的导航体验,提升用户满意度和应用的实用性。

9. 总结

NavigationRail 是 Flutter 中用于创建垂直导航栏的组件,具有以下主要优势和用法:

  • 直观的导航体验: NavigationRail 提供了直观的导航方式,让用户可以轻松地切换应用程序的不同部分或执行导航操作。

  • 灵活的自定义选项: NavigationRail 提供了丰富的自定义选项,包括背景色、选中项的颜色、标签类型等,使开发人员可以根据应用程序的设计和品牌风格定制导航栏的外观。

  • 与页面切换组件的无缝集成: NavigationRail 可以与页面切换组件(如 PageViewIndexedStack)结合使用,以实现根据选定的导航栏项切换不同的页面内容,从而提供更丰富的用户体验。

  • 响应式设计支持: NavigationRail 支持响应式设计,可以根据不同设备的屏幕尺寸和方向调整布局和样式,以确保在各种设备上提供一致的用户体验。

  • 提高用户满意度: NavigationRail 可以增强应用程序的导航体验,提高用户的满意度和使用体验,从而增强应用的实用性和吸引力。

进一步学习和探索的资源链接

如果您想进一步学习和探索 NavigationRail 的更多信息和用法,以下是一些官方文档和资源链接:

  1. NavigationRail 类文档:Flutter 官方文档中关于 NavigationRail 类的详细说明,包括属性、方法和示例。

  2. Flutter 导航和路由文档:Flutter 官方文档中关于导航和路由的详细指南,可帮助您更好地理解 Flutter 中导航的概念和实现方式。

  3. Flutter Cookbook 中的 NavigationRail 示例:Flutter Cookbook 中关于 NavigationRail 的示例,提供了一些常见的用法和最佳实践。

  4. Flutter 示例应用:Flutter 提供的示例应用程序,包含了许多不同组件的使用示例,您可以从中学习和探索 NavigationRail 的用法。

通过阅读以上资源,并尝试在您的应用程序中应用 NavigationRail,您将更好地掌握 NavigationRail 的用法和技巧,从而构建出色的 Flutter 应用程序。

10. 附录

在这个附录中,我们将提供一些额外的信息,包括常见问题解答和最佳实践建议,帮助您更好地理解和使用 NavigationRail。

常见问题解答

Q: NavigationRail 如何处理超出屏幕宽度的导航项?
A: 当导航项超出屏幕宽度时,NavigationRail 会自动在侧边添加一个滚动条,用户可以通过滚动来查看所有导航项。

Q: 我应该何时使用 NavigationRail?
A: NavigationRail 适用于需要在应用程序中提供导航功能的情况,特别是对于平板电脑和桌面应用程序。它提供了一种直观的方式来浏览不同部分或执行导航操作。

最佳实践建议

  • 保持导航栏简洁明了: 尽量避免在 NavigationRail 中放置过多的导航项,保持导航栏的简洁和清晰,以提供更好的用户体验。

  • 注意响应式设计: 在设计 NavigationRail 时,请务必考虑不同设备和屏幕尺寸的响应式布局,以确保在各种设备上都能提供良好的用户体验。

  • 注意可访问性: 确保 NavigationRail 中的导航项和其他元素都易于访问,尤其是对于视觉障碍用户。考虑使用适当的语义标签和颜色对比度。

  • 测试与迭代: 在发布应用程序之前,进行全面的测试,并根据用户反馈进行必要的迭代和改进,以确保 NavigationRail 的功能和性能符合预期。

通过遵循这些最佳实践建议,您可以更好地利用 NavigationRail,为您的应用程序提供出色的导航体验,并确保用户满意度和应用的实用性。

作者信息

作者 : 繁依Fanyi
CSDN: https://techfanyi.blog.csdn.net
掘金:https://juejin.cn/user/4154386571867191

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

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

相关文章

【并发编程】锁相关公平锁和非公平锁?可重入锁锁的升级乐观锁和悲观锁版本号机制CAS 算法乐观锁有哪些问题?

目录 ​编辑 锁相关 公平锁和非公平锁&#xff1f; 可重入锁 锁的升级 乐观锁和悲观锁 版本号机制 CAS 算法 乐观锁有哪些问题&#xff1f; 锁相关 公平锁和非公平锁&#xff1f; 公平锁 : 锁被释放之后&#xff0c;先申请的线程先得到锁。性能较差一些&#xff0c;因…

第六届“传智杯”决赛 流水账 | 珂学家

前言 整体评价 有幸参加了第六届的传智杯决赛(A组)&#xff0c;因为这个比赛是牛客协办&#xff0c;所以就写在这里。 作为Java选手&#xff0c;比赛中其实吃亏了&#xff0c;主要是T2吃了一发TLE&#xff0c;T4吃了一发莫名其妙的MLE。 顺便吐槽下T3&#xff0c;自测反馈WA…

局域网内的手机、平板、电脑的文件共享

在日常工作生活中&#xff0c;经常需要将文件在手机、平板、电脑间传输&#xff0c;以下介绍三种较为便捷的方法&#xff1a; 1.LocalSend 该软件是免费开源的&#xff0c;可以在局域网内的任意手机、平板、电脑间传递文件&#xff0c;并且任意一方都可以作为“发送方”和“接…

Windows11 安装confluence 7.4.0

Windows11安装confluence:7.4.0 1.打开终端管理员(管理员权限的PowerShell)2.按顺序执行以下命令,安装confluence服务3.浏览器(如Microsoft Edge) 打开 http://127.0.0.1:8100/ 配置confluence4.图示 本文是Windows11 安装confluence 7.4.0的步骤 本文参考 1.打开终端管理员(管…

⾃定义类型:结构体

目录 1. 结构体类型的声明 1.1 结构体回顾 1.1.1 结构的声明 1.1.2 结构体变量的创建和初始化 1.2 结构的特殊声明 1.3 结构的⾃引⽤ 2. 结构体内存对⻬ 2.1 对⻬规则 2.2 为什么存在内存对⻬? 2.3 修改默认对⻬数 3. 结构体传参 4. 结构体实现位段 4.1 什么是位段…

tcp 协议详解

什么是 TCP 协议 TCP全称为 “传输控制协议(Transmission Control Protocol”). 人如其名, 要对数据的传输进行一个详细的控制。TCP 是一个传输层的协议。 如下图&#xff1a; 我们接下来在讲解 TCP/IP 协议栈的下三层时都会先解决这两个问题&#xff1a; 报头与有效载荷如何…

基于Springboot的艺体培训机构业务管理系统(有报告)。Javaee项目,springboot项目。

演示视频&#xff1a; 基于Springboot的艺体培训机构业务管理系统&#xff08;有报告&#xff09;。Javaee项目&#xff0c;springboot项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层…

数据结构——树与二叉树

目录 树与二叉树 1.树的定义 2.树的有关术语 3.二叉树&#xff08;BinaryTree&#xff09; 二叉树的性质&#xff1a; 特殊的二叉树 满二叉树&#xff1a; 完全二叉树 二叉树的存储结构 顺序存储结构 链式存储结构 二叉树以及对应接口的实现 1.二叉树架构搭建 2…

docker将本地镜像pull到阿里云和registry

目录 一、上次到阿里云服务器 1、制作一个带有vim功能的Ubuntu镜像 2、在阿里云上面创建镜像仓库 3、从阿里云仓库中上传和拉取镜像 二、上传镜像到本地私有库registry 1、下载镜像docker registry 2、运行私有库registry&#xff0c;相当于本地有个私有docker hub。 3…

MUNIK第二届功能安全及自动驾驶研讨会将在沪召开

2024年4月26日,由上海秒尼科技术服务有限公司(以下简称“Munik”)联合Parosoft主办的“第二届功能安全及自动驾驶研讨会”将在上海虹桥隆重开幕。 据了解,本次功能与自动驾驶安全研讨会,将聚焦在ISO 26262标准体系下,自动驾驶新形势下各个零部件供应商如何满足功能安全等相关重…

Ubuntu Desktop 快速显示桌面

Ubuntu Desktop 快速显示桌面 1. 快捷方式2. show desktop iconReferences 1. 快捷方式 Ctrl Win D&#xff1a;快速显示桌面 / 恢复屏幕显示 2. show desktop icon System Settings -> Appearance -> Add show desktop icon to the launcher ​ 点击 Show Desktop…

Druid连接池的能力介绍与使用方法

Druid连接池的能力介绍与使用方法 本文将介绍druid连接池的能力&#xff1a;监控sql调用数据&#xff08;慢sql、调用量、异常堆栈&#xff09;、防止sql注入和数据库密码加密。 1. Druid连接池简介 Alibaba Druid官网使用手册里是这样介绍的&#xff1a;Druid连接池是阿里巴…

云原生网络魔术师:Docker高级网络实战演练与深度解析

在Docker的世界中&#xff0c;网络无疑是一块充满魔力的土地。当我们超越了基础的网络配置&#xff0c;步入Docker高级网络领域时&#xff0c;你会发现一个全新的、强大而灵活的网络模型正在等待你的探索。本文将带你亲历Docker高级网络实战操作&#xff0c;揭开overlay网络、自…

【动态规划】Leetcode 70. 爬楼梯

【动态规划】Leetcode 70. 爬楼梯 解法1 ---------------&#x1f388;&#x1f388;题目链接&#x1f388;&#x1f388;------------------- 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢&#xff1f; 输入…

GaussDB WDR分析之集群报告篇

AWR报告目前已经成为Oracle DBA分析问题&#xff0c;定位故障最为重要的报告&#xff0c;阅读与分析AWR报告的技能也是Oracle DBA必备的技能。国产数据库为了提高运维便捷性&#xff0c;都在做类似Oracle AWR报告的模仿&#xff0c;只不过由于指标体系不够完善&#xff0c;因此…

Windows系统安装WampServer结合内网穿透实现公网访问本地服务

文章目录 前言1.WampServer下载安装2.WampServer启动3.安装cpolar内网穿透3.1 注册账号3.2 下载cpolar客户端3.3 登录cpolar web ui管理界面3.4 创建公网地址 4.固定公网地址访问 前言 Wamp 是一个 Windows系统下的 Apache PHP Mysql 集成安装环境&#xff0c;是一组常用来…

网络安全笔记-day7,共享文件服务器

文件共享服务器 准备阶段 打开虚拟机win2003 创建文件 D:. —share   –down   |  test1.txt   |   —up     01xxx.txt     02xxx.txt 配置IP win2003 192.168.1.10 255.255.255.0 winxp 192.168.1.20 255.255.255.0 创建共享文件夹 创建共享&#xff1…

Axure RP 9 for Mac中文激活版:原型设计工具

Axure RP 9 for Mac是一款值得设计师信赖的原型设计工具。它以其卓越的性能和稳定的运行赢得了广大用户的赞誉。 软件下载&#xff1a;Axure RP 9 for Mac中文激活版下载 在Axure RP 9中&#xff0c;您可以尽情发挥自己的设计才华&#xff0c;创造出独一无二的原型作品。无论是…

【MySQL】9. 内置函数

函数 1. 日期函数 获得年月日&#xff1a; mysql> select current_date(); ---------------- | current_date() | ---------------- | 2024-03-23 | ---------------- 1 row in set (0.00 sec)获得时分秒&#xff1a; mysql> select current_time(); ------------…

看完就等于拿捏浮点数在内存中的储存了

诸君又该学习了&#xff0c;今天我们继续来一睹浮点数的奥妙真容。 经过前面文章对整形提升相关的解释&#xff0c;我们都对整形和字符在内存空间上的储存已经有了大概的认知&#xff0c;那么现在我们就来好好讲讲浮点数在内存中的储存规则。 目录 浮点数与整形储存的不同 …