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

【WPF.NET开发】WPF中的命令

本文内容

  1. 什么是命令
  2. WPF 中的简单命令示例
  3. WPF 命令中的四个主要概念
  4. 命令库
  5. 创建自定义命令

命令是 Windows Presentation Foundation (WPF) 中的一种输入机制,与设备输入相比,它提供的输入处理更侧重于语义级别。 示例命令如许多应用程序均具有的“复制”、“剪切”和“粘贴”操作。

本概述定义 WPF 中有哪些命令、哪些类属于命令模型以及如何在应用程序中使用和创建命令。

1、什么是命令

命令具有多个用途。 第一个用途是分隔语义和从执行命令的逻辑调用命令的对象。 这可使多个不同的源调用同一命令逻辑,并且可针对不同目标自定义命令逻辑。 例如,许多应用程序中均有的编辑操作“复制”、“剪切”和“粘贴”若通过使用命令来实现,那么可通过使用不同的用户操作来调用它们。 应用程序可允许用户通过单击按钮、选择菜单中的项或使用组合键(例如 Ctrl+X)来剪切所选对象或文本。 通过使用命令,可将每种类型的用户操作绑定到相同逻辑。

命令的另一用途是指示操作是否可用。 继续以剪切对象或文本为例,此操作只有在选择了内容时才会发生作用。 如果用户在未选择任何内容的情况下尝试剪切对象或文本,则不会发生任何操作。 为了向用户指示这一点,许多应用程序通过禁用按钮和菜单项来告知用户是否可以执行某操作。 命令可以通过实现 CanExecute 方法来指示操作是否可行。 按钮可以订阅 CanExecuteChanged 事件,如果 CanExecute 返回 false 则禁用,如果 CanExecute 返回 true 则启用。

虽然命令的语义在应用程序和类之间可保持一致,但操作的逻辑特定于操作所针对的特定对象。 组合键 Ctrl+X 调用文本类、图像类和 Web 浏览器中的“剪切”命令,但执行“剪切”操作的实际逻辑由执行剪切的应用程序定义。 RoutedCommand 使客户端实现逻辑。 文本对象可将所选文本剪切到剪贴板,而图像对象则剪切所选图像。 应用程序处理 Executed 事件时可访问命令的目标,并根据目标的类型采取相应操作。

2、WPF 中的简单命令示例

使用 WPF 中命令的最简单的方式是使用某一个命令库类中预定义的 RoutedCommand使用具有命令处理本机支持的控件,以及使用具有命令调用本机支持的控件。 Paste 命令是 ApplicationCommands 类中的预定义命令之一。 TextBox 控件含有用于处理 Paste 命令的内置逻辑。 MenuItem 类具有调用命令的本机支持。

以下示例显示了如何设置 MenuItem,以便在单击时它将调用 TextBox 上的 Paste 命令,假定 TextBox 具有键盘焦点。

XAML复制

<StackPanel><Menu><MenuItem Command="ApplicationCommands.Paste" /></Menu><TextBox />
</StackPanel>

C#复制

// Creating the UI objects
StackPanel mainStackPanel = new StackPanel();
TextBox pasteTextBox = new TextBox();
Menu stackPanelMenu = new Menu();
MenuItem pasteMenuItem = new MenuItem();// Adding objects to the panel and the menu
stackPanelMenu.Items.Add(pasteMenuItem);
mainStackPanel.Children.Add(stackPanelMenu);
mainStackPanel.Children.Add(pasteTextBox);// Setting the command to the Paste command
pasteMenuItem.Command = ApplicationCommands.Paste;// Setting the command target to the TextBox
pasteMenuItem.CommandTarget = pasteTextBox;

3、WPF 命令中的四个主要概念

WPF 中的路由命令模型可分解为四个主要概念:命令、命令源、命令目标和命令绑定:

  • 命令是要执行的操作。

  • 命令源是调用命令的对象。

  • 命令目标是在其上执行命令的对象。

  • 命令绑定是将命令逻辑映射到命令的对象。

在前面的示例中,Paste 命令是命令,MenuItem 是命令源,TextBox 是命令目标,命令绑定由 TextBox 控件提供。 值得注意的是,CommandBinding 并不总是由作为命令目标类的控件提供。 通常,CommandBinding 必须由应用程序开发者创建,否则 CommandBinding 可能会附加到命令目标的上级元素。

3.1 命令

WPF 中的命令是通过实现 ICommand 接口创建的。 ICommand 公开了两种方法 Execute 和 CanExecute,以及一个事件 CanExecuteChanged。 Execute 执行与该命令关联的操作。 CanExecute 确定是否可以在当前命令目标上执行该命令。 如果集中管理命令操作的命令管理器检测到命令源中存在一个可能使已引发命令无效但尚未由命令绑定执行的更改,则会引发 CanExecuteChanged。 ICommand 的 WPF 实现是 RoutedCommand 类,并且是本概述的重点。

WPF 中输入的主要源是鼠标、键盘、墨迹和路由命令。 面向设备程度更高的输入使用 RoutedEvent 通知应用程序页中的对象输入事件已发生。 RoutedCommand 也不例外。 RoutedCommand 的 Execute 和 CanExecute 方法不包含该命令的应用程序逻辑,而是引发通过元素树通行和浮升的路由事件,直到遇到具有 CommandBinding 的对象。 CommandBinding 包含这些事件的处理程序,命令正是由这些处理程序执行。 

RoutedCommand 上的 Execute 方法引发命令目标上的 PreviewExecuted 和 Executed 事件。 RoutedCommand 上的 CanExecute 方法引发命令目标上的 CanExecute 和 PreviewCanExecute 事件。 这些事件通过元素树通行和浮升,直到遇到一个具有针对该特定命令的 CommandBinding 的对象。

WPF 提供了分布在几个类中的一组常用路由命令:MediaCommands、ApplicationCommands、NavigationCommands、ComponentCommands 和 EditingCommands。 这些类仅由 RoutedCommand 对象构成,而不包含命令的实现逻辑。 实现逻辑由在其上执行命令的对象负责。

3.2 命令源

命令源是调用命令的对象。 命令源的示例有 MenuItem、Button 和 KeyGesture。

WPF 中的命令源通常实现 ICommandSource 接口。

ICommandSource 公开三个属性:Command、CommandTarget 和 CommandParameter:

  • Command 是在调用命令源时执行的命令。

  • CommandTarget 是要执行命令的对象。 值得注意的是,在 WPF 中,仅当 ICommand 为 RoutedCommand 时,ICommandSource 上的 CommandTarget 属性才适用。 如果在 ICommandSource 上设置 CommandTarget 并且相应的命令不是 RoutedCommand,则忽略命令目标。 如果未设置 CommandTarget,则具有键盘焦点的元素将成为命令目标。

  • CommandParameter 是用于将信息传递给实现命令的处理程序的用户定义数据类型。

实现 ICommandSource 的 WPF 类是 ButtonBase、MenuItem、Hyperlink 和 InputBinding。 单击 ButtonBase、MenuItem 和 Hyperlink 时,调用一个命令,当执行与其关联的 InputGesture 时,InputBinding 调用命令。

以下示例显示如何将 ContextMenu 中的 MenuItem 用作 Properties 命令的命令源。

XAML复制

<StackPanel><StackPanel.ContextMenu><ContextMenu><MenuItem Command="ApplicationCommands.Properties" /></ContextMenu></StackPanel.ContextMenu>
</StackPanel>

C#复制

StackPanel cmdSourcePanel = new StackPanel();
ContextMenu cmdSourceContextMenu = new ContextMenu();
MenuItem cmdSourceMenuItem = new MenuItem();// Add ContextMenu to the StackPanel.
cmdSourcePanel.ContextMenu = cmdSourceContextMenu;
cmdSourcePanel.ContextMenu.Items.Add(cmdSourceMenuItem);// Associate Command with MenuItem.
cmdSourceMenuItem.Command = ApplicationCommands.Properties;

通常,命令源将侦听 CanExecuteChanged 事件。 此事件通知命令源在当前命令目标上执行命令的能力可能已发生更改。 命令源可以使用 CanExecute 方法查询 RoutedCommand 的当前状态。 如果命令无法执行,命令源可禁用自身。 此情况的一个示例是 MenuItem,在命令无法执行时,它自身将灰显。

InputGesture 可以用作命令源。 WPF 中的两种输入笔势是 KeyGesture 和 MouseGesture。 可以将 KeyGesture 视为键盘快捷方式,例如 Ctrl+C。 KeyGesture 由一个 Key 和一组 ModifierKeys 组成。 MouseGesture 由 MouseAction 和一组可选的 ModifierKeys 组成。

为了将 InputGesture 用作命令源,它必须与一个命令相关联。 可通过几种方式来实现此目的。 其中一种方法是使用 InputBinding。

以下示例演示如何在 KeyGesture 和 RoutedCommand 之间创建 KeyBinding。

XAML复制

<Window.InputBindings><KeyBinding Key="B"Modifiers="Control" Command="ApplicationCommands.Open" />
</Window.InputBindings>

C#复制

KeyGesture OpenKeyGesture = new KeyGesture(Key.B,ModifierKeys.Control);KeyBinding OpenCmdKeybinding = new KeyBinding(ApplicationCommands.Open,OpenKeyGesture);this.InputBindings.Add(OpenCmdKeybinding);

将 InputGesture 关联到 RoutedCommand 的另一种方法是将 InputGesture 添加到 RoutedCommand 上的 InputGestureCollection。

以下示例演示如何将 KeyGesture 添加到 RoutedCommand 的 InputGestureCollection 中。

C#复制

CommandBinding

CommandBinding 将命令与实现该命令的事件处理程序相关联。

CommandBinding 类包含 Command 属性,及 PreviewExecuted、Executed、PreviewCanExecute 和 CanExecute 事件。

Command 是与 CommandBinding 关联的命令。 附加到 PreviewExecuted 和 Executed 事件的事件处理程序实现命令逻辑。 附加到 PreviewCanExecute 和 CanExecute 事件的事件处理程序确定是否可以在当前命令目标上执行该命令。

以下示例演示如何在应用程序的根 Window 上创建 CommandBinding。 CommandBinding 将 Open 命令与 Executed 和 CanExecute 处理程序关联。

XAML复制

<Window.CommandBindings><CommandBinding Command="ApplicationCommands.Open"Executed="OpenCmdExecuted"CanExecute="OpenCmdCanExecute"/>
</Window.CommandBindings>

C#复制

// Creating CommandBinding and attaching an Executed and CanExecute handler
CommandBinding OpenCmdBinding = new CommandBinding(ApplicationCommands.Open,OpenCmdExecuted,OpenCmdCanExecute);this.CommandBindings.Add(OpenCmdBinding);

接下来,创建了 ExecutedRoutedEventHandler 和 CanExecuteRoutedEventHandler。 ExecutedRoutedEventHandler 打开了显示字符串的 MessageBox,该字符串表示已执行此命令。 CanExecuteRoutedEventHandler 将 CanExecute 属性设置为 true

C#复制

void OpenCmdExecuted(object target, ExecutedRoutedEventArgs e)
{String command, targetobj;command = ((RoutedCommand)e.Command).Name;targetobj = ((FrameworkElement)target).Name;MessageBox.Show("The " + command +  " command has been invoked on target object " + targetobj);
}

C#复制

void OpenCmdCanExecute(object sender, CanExecuteRoutedEventArgs e)
{e.CanExecute = true;
}

将 CommandBinding 附加到特定对象,例如应用程序或控件的根 Window。 CommandBinding 附加到的对象定义了绑定的范围。 例如,附加到命令目标的上级元素的 CommandBinding 可以通过 Executed 事件到达,但无法到达附加到命令目标的下级元素的 CommandBinding。 其直接原因在于 RoutedEvent 从引发事件的对象通行和浮升的方式。

在某些情况下,CommandBinding 会附加到命令目标本身,例如 TextBox 类及 Cut、Copy 和 Paste 命令。 然而,很多时候将 CommandBinding 附加到命令目标的上级元素(例如主要 Window 或应用程序对象)会更加方便,尤其是在同一 CommandBinding 可用于多个命令目标时。 这是在创建命令基础结构时需要考虑的设计决策。

3.3 命令目标

命令目标是在其上执行命令的元素。 关于 RoutedCommand,命令目标是 Executed 和 CanExecute 的路由开始的元素。 如前所述,在 WPF 中,仅当 ICommand 为 RoutedCommand 时,ICommandSource 上的 CommandTarget 属性才适用。 如果在 ICommandSource 上设置 CommandTarget 并且相应的命令不是 RoutedCommand,则忽略命令目标。

命令源可以显式设置命令目标。 如果未定义命令目标,则具有键盘焦点的元素将用作命令目标。 将具有键盘焦点的元素用作命令目标的一个好处在于,这样可使应用程序开发者能够使用同一命令源在多个目标上调用命令,而无需跟踪命令目标。 例如,如果 MenuItem 在具有 TextBox 控件和 PasswordBox 控件的应用程序中调用“Paste”命令,则目标可以是 TextBox 或 PasswordBox,具体取决于哪个控件具有键盘焦点。

以下示例演示如何在标记和代码隐藏中显式设置命令目标。

XAML复制

<StackPanel><Menu><MenuItem Command="ApplicationCommands.Paste"CommandTarget="{Binding ElementName=mainTextBox}" /></Menu><TextBox Name="mainTextBox"/>
</StackPanel>

C#复制

// Creating the UI objects
StackPanel mainStackPanel = new StackPanel();
TextBox pasteTextBox = new TextBox();
Menu stackPanelMenu = new Menu();
MenuItem pasteMenuItem = new MenuItem();// Adding objects to the panel and the menu
stackPanelMenu.Items.Add(pasteMenuItem);
mainStackPanel.Children.Add(stackPanelMenu);
mainStackPanel.Children.Add(pasteTextBox);// Setting the command to the Paste command
pasteMenuItem.Command = ApplicationCommands.Paste;// Setting the command target to the TextBox
pasteMenuItem.CommandTarget = pasteTextBox;

3.4 CommandManager

CommandManager 提供许多与命令相关的函数。 它提供了一组静态方法,用于在特定元素中添加和删除 PreviewExecuted、Executed、PreviewCanExecute 和 CanExecute 事件处理程序。 它提供了将 CommandBinding 和 InputBinding 对象注册到特定类的方法。 CommandManager 还通过 RequerySuggested 事件提供了一种方法,用于在应引发 CanExecuteChanged 事件时通知命令。

InvalidateRequerySuggested 方法强制 CommandManager 引发 RequerySuggested 事件。 这在应禁用/启用命令的情况下非常有用,但对于 CommandManager 可识别的情况,则不太有用。

4、命令库

WPF 提供一组预定义命令。 命令库包括以下类:ApplicationCommands、NavigationCommands、MediaCommands、EditingCommands 和 ComponentCommands。 这些类提供诸如 Cut、BrowseBack、BrowseForward、Play、Stop 和 Pause 的命令。

许多这些命令都包含一组默认输入绑定。 例如,如果指定应用程序处理复制命令,则可自动获取键盘绑定“CTRL+C”。此外,还可获得其他输入设备的绑定,例如 Tablet PC 笔势和语音信息。

使用 XAML 引用各个命令库中的命令时,通常可省略公开静态命令属性的库类的类名。 一般来说,命令名称是明确作为字符串的,且存在所属类型来提供命令的逻辑分组,不过对于消除二义性这并不必要。 例如,可指定 Command="Cut" 而不是更为冗长的 Command="ApplicationCommands.Cut"。 这是针对命令内置于 WPF XAML 处理器中的便捷机制(更准确地说,它是 WPF XAML 处理器在加载时所引用的 ICommand 的类型转换器行为)。

5、创建自定义命令

如果命令库类中的命令不能满足需要,你可以创建自己的命令。 可通过两种方式创建自定义命令。 第一种方式是从头开始并实现 ICommand 接口。 另一种更常见的方法是创建 RoutedCommand 或 RoutedUICommand。

相关文章:

【WPF.NET开发】WPF中的命令

本文内容 什么是命令WPF 中的简单命令示例WPF 命令中的四个主要概念命令库创建自定义命令 命令是 Windows Presentation Foundation (WPF) 中的一种输入机制&#xff0c;与设备输入相比&#xff0c;它提供的输入处理更侧重于语义级别。 示例命令如许多应用程序均具有的“复制…...

怎么将epub转换成txt文件?

怎么将epub转换成txt文件&#xff1f;在当前时代&#xff0c;各种各样的电子书是很多人都喜欢接触并阅读的&#xff0c;但很少有人知道电子书格式的不同&#xff0c;其中就包括epub和txt格式&#xff0c;这两种格式虽然都可以展示文本但能达到的效果完全不一样&#xff0c;在某…...

Java单词排序

【问题描述】 编写一个程序&#xff0c;从一个文件中读入单词&#xff08;即&#xff1a;以空格分隔的字符串&#xff09;&#xff0c;并对单词进行排序&#xff0c;删除重复出现的单词&#xff0c;然后将结果输出到另一个文件中。 【输入形式】从一个文件sort.in中读入单词。 …...

Moonsong Labs与Web3演变

作者&#xff1a;Derek Yoo 创建Moonsong Labs的理由 我们创建了Moonsong Labs&#xff0c;其使命是创建推动Web3采用的软件基础设施协议。我们的动力来自这样一个观念&#xff0c;即Web3使人类相互交往更加透明、高效和公正。这无疑是一个值得努力实现的目标&#xff0c;但更…...

流媒体学习之路(WebRTC)——GCC分析(4)

流媒体学习之路(WebRTC)——GCC分析&#xff08;4&#xff09; —— 我正在的github给大家开发一个用于做实验的项目 —— github.com/qw225967/Bifrost目标&#xff1a;可以让大家熟悉各类Qos能力、带宽估计能力&#xff0c;提供每个环节关键参数调节接口并实现一个json全配置…...

k8s持久化存储(NFS-StorageClass)

一、StatefulSet由以下几个部分组成&#xff1a; 用于定义网络标志&#xff08;DNS domain&#xff09;的Headless Service用于创建PersistentVolumes的volumeClaimTemplates定义具体应用的StatefulSet 二、StatefulSet 特点 StatefulSet 适用于有以下某个或多个需求的应用&a…...

java servlet软件缺陷库管理系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 java servlet软件缺陷库管理系统是一套完善的java web信息管理系统 系统采用serlvetdaobean&#xff08;mvc模式)&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为TOM…...

19|BabyAGI:根据气候变化自动制定鲜花存储策略

19&#xff5c;BabyAGI&#xff1a;根据气候变化自动制定鲜花存储策略 随着 ChatGPT 的崭露头角&#xff0c;我们迎来了一种新型的代理——Autonomous Agents&#xff08;自治代理或自主代理&#xff09;。这些代理的设计初衷就是能够独立地执行任务&#xff0c;并持续地追求长…...

面试经典150题(62-64)

leetcode 150道题 计划花两个月时候刷完&#xff0c;今天&#xff08;第三十天&#xff09;完成了3道(62-64)150&#xff1a; 62.&#xff08;226. 翻转二叉树&#xff09;题目描述&#xff1a; 给你一棵二叉树的根节点 root &#xff0c;翻转这棵二叉树&#xff0c;并返回其…...

流量困境下,2024年餐饮商家的直播带货生意到底怎么做?

据官方数据显示&#xff0c;截至2023年2月&#xff0c;抖音生活服务餐饮商家直播间数量达到43万&#xff0c;2023年7月&#xff0c;抖音生活服务餐饮行业自播商家数较1月增长134%。可以说&#xff0c;直播带货已经成为餐饮商家的常态化的线上营销模式&#xff0c;也成为各大餐饮…...

C++ 具名要求-基本概念-指定该类型对象可以默认构造

指定该类型对象可以默认构造 要求 以下情况下&#xff0c;类型 T 满足可默认构造 (DefaultConstructible) &#xff1a; 给定 任意标识符 u&#xff0c; 下列表达式必须合法且拥有其指定的效果 表达式后条件T u对象 u 被默认初始化。T u{}对象 u 被值初始化或聚合初始化。…...

T527 Android13遥控适配

T527 Android13遥控的适配和官方提供的文档有些不一样&#xff0c;按照官方的文档不能够正常适配到自己的遥控器。 首先确保驱动是否有打开CONFIG_AW_IR_RX和CONFIG_RC_DECODERSy 以及CONFIG_IR_NEC_DECODERm&#xff0c;这个可以在longan/out/t527对应的目录下的.config查看是…...

第三部分使用脚手架:vue学习(61-65)

文章目录 61 创建vue脚手架![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/f71d4324be0542209e690ab9e886d199.png)62 分析脚手架结构63 render函数64 修改默认配置65 ref 属性 61 创建vue脚手架 写完vue文件&#xff0c;没有脚手架做翻译&#xff0c;浏览器不认识…...

【Linux学习笔记】解析Linux系统内核:架构、功能、工作原理和发展趋势

操作系统是一个用来和硬件打交道并为用户程序提供一个有限服务集的低级支撑软件。一个计算机系统是一个硬件和软件的共生体&#xff0c;它们互相依赖&#xff0c;不可分割。计算机的硬件&#xff0c;含有外围设备、处理器、内存、硬盘和其他的电子设备组成计算机的发动机。但是…...

springboot连接oracle报错ORA-12505解决方案

springboot连接oracle报错ORA-12505解决方案 springboot项目&#xff0c;在测试环境连接正常&#xff0c;生产环境连接数据库报错ORA-12505。 测试环境连接数据库语句为jdbc:oracle:thin:xxxx.xxxx.xxxx.xxxx:1521:orcl 生产环境修改对应ip后报错ORA-12505, TNS:listener does…...

服务器为什么大多用 Linux?

服务器为什么大多用 Linux&#xff1f; 在开始前我有一些资料&#xff0c;是我根据自己从业十年经验&#xff0c;熬夜搞了几个通宵&#xff0c;精心整理了一份「Linux的资料从专业入门到高级教程工具包」&#xff0c;点个关注&#xff0c;全部无偿共享给大家&#xff01;&#…...

C++上位软件通过Snap7开源库访问西门子S7-200/合信M226ES数据块的方法

前言 上一篇文章中介绍了Snap7访问西门子S7-1200/S7-1500 DB块的方法&#xff0c;对于S7-200PLC是没有数据块访问的。S7-200PLC中Snap7只能通过访问MB块&#xff0c;VB块的方法进行和PLC之间的Snap7通信和数据交换。手头没有S7-200PLC故通过合信CTMC M226ES运动控制器进行测试&…...

通信及信号处理领域期刊影响因子、分区及期刊推荐-2024版

期刊名IF(202401)中科院分区(20231227)备注IEEE Journal on Selected Areas in Communications16.4计算机科学1区Top通信顶刊IEEE Transactions on Signal Processing5.4工程技术2区Top信号处理顶刊IEEE Transactions on Information Theory2.5计算机科学3区信息论顶刊IEEE Tra…...

cfa一级考生复习经验分享系列(十五)

备考背景&#xff1a; 本科211石油理科背景&#xff1b;无金融方面专业知识及工作经验&#xff1b;在职期间备考&#xff1b;有效备考时间2个月&#xff1b;12月一级考试10A。 复习进度及教材选择 首先说明&#xff0c;关于教材的经验分享针对非金融背景考生。 第一阶段&#x…...

如潮好评!优秀选手视角下的第二届粤港澳大湾区(黄埔)国际算法算例大赛

为发挥国家实验室作用、推动地区大数据与人工智能算法的生态体系建设&#xff0c;琶洲实验室&#xff08;黄埔&#xff09;受广州市黄埔区政府委托&#xff0c;于 2022 年创办粤港澳大湾区&#xff08;黄埔&#xff09;国际算法算例大赛&#xff0c;推动原始创新、赋能社会经济…...

软件测试之冒烟测试

一、什么是冒烟测试 这一术语源自硬件行业。对一个硬件或硬件组件进行更改或修复后&#xff0c;直接给设备加电。如果没有冒烟&#xff0c;则该组件就通过了测试。在软件中&#xff0c;“冒烟测试”这一术语描述的是在将代码更改嵌入到产品的源树中之前对这些更改进行验证的过…...

NE555学习笔记-2024

实物图片 NE555引脚图 内部时序图 示列1&#xff0c;红外接收电路 红外接收电路的工作原理&#xff1a;在上述电路中&#xff0c;TSOP1738构成了该电路的主要组成部分&#xff0c;旨在检测来自任何来源的红外信号。这用于检测38 KHz范围的信号&#xff0c;因此命名为“TSOP173…...

记一次docker中安装redis的过程

1. Docker搜索redis镜像 docker search redis2. Docker搜索redis镜像 docker pull redis3.Docker挂载配置文件 挂载 redis 的配置文件挂载 redis 的持久化文件&#xff08;为了数据的持久化&#xff09;。 conf文件位置&#xff1a; /home/redis/myredis/redis.conf data文件…...

Matlab进阶绘图第37期—多色悬浮柱状图

多色悬浮柱状图是一种特殊的柱状图。 与常规柱状图相比&#xff0c;多色悬浮柱状图可以通过悬浮的矩形展示最小值到最大值的范围&#xff08;或其他范围表达&#xff09;&#xff0c;并通过颜色进行美化/区分/附加信息。 本文使用自己制作的Floatingbar小工具进行多色悬浮柱状…...

【嵌入式】About USB Powering

https://www.embedded.com/usb-type-c-and-power-delivery-101-power-delivery-protocol/https://www.embedded.com/usb-type-c-and-power-delivery-101-power-delivery-protocol/ Type-C接口有多强&#xff1f;PD协议又是什么&#xff1f;-电子发烧友网由于Type-C接口自身的强…...

MySQL——事物

目录 一.发现问题 二.什么时事物 三.事务提交方式 四.事物的常规操作方式 五. 事务隔离级别 1.如何理解隔离性 2.隔离级别 3.查看与设置隔离性 4.读未提交【Read Uncommitted】 5.读提交【Read Committed】 6.可重复读【Repeatable Read】 7.串行化【serializabl…...

Windows搭建RTSP视频流服务(EasyDarWin服务器版)

文章目录 引言1、安装FFmpeg2、安装EasyDarWin3、实现本地\虚拟摄像头推流服务4、使用VLC或PotPlayer可视化播放器播放视频5、RTSP / RTMP系列文章 引言 RTSP和RTMP视频流的区别 RTSP &#xff08;Real-Time Streaming Protocol&#xff09;实时流媒体协议。 RTSP定义流格式&am…...

私域营销,让你的生意从线下到线上都火爆!

一、提高流量 获取流量的五个关键要素&#xff1a;目标受众、传播渠道、内容策略、短期利益和长期价值 在当今竞争激烈的市场环境中&#xff0c;获取流量是每个企业和个人都必须面对的挑战。为了有效地吸引潜在客户&#xff0c;我们需要关注五个关键要素&#xff1a;目标受众…...

MATLAB基本绘图操作(二维和三维绘图)

MATLAB基本绘图操作 文章目录 MATLAB基本绘图操作1、二维平面绘图1.1、线条&#xff08;折线图&#xff09;1.2、条形图1.3、极坐标图1.4、散点图 2、三维立体绘图2.1、三维曲面图2.2、三维曲线图&#xff08;点图&#xff09; 3、图片分区&#xff08;子图&#xff09; 1、二维…...

中国社科院与新加坡新跃社科联合培养博士—攻读在职博士的理由是什么?

当今社会&#xff0c;很多人已经深刻的意识到知识是改变自己命运的重要途径&#xff0c;在职教育的完善让很多在职人员选择此方式进修&#xff0c;那么为什么要选择攻读在职博士&#xff1f;中国社科院与新加坡新跃社科联合培养博士与您一起走进&#xff0c;在职博士。 那么其…...

mac安装字体打开wordpress/今日热点新闻头条

yum install httpd httpd-devel yum install mod_wsgi 1、主配置文件是/etc/httpd/conf/httpd.conf 主配置文件加后加&#xff1a; LoadModule wsgi_module modules/mod_wsgi.so 2、在项目目录下新建wsgi&#xff0c;里面新建django.wsgi&#xff0c;内容如下import os import…...

天津综合网站建设商店/360优化大师下载安装

0、写在前面的话关于索引的内容本来是想写的&#xff0c;大概收集了下资料&#xff0c;发现并没有想象中的简单&#xff0c;又不想总结了&#xff0c;纠结了一下&#xff0c;决定就大概写点浅显的&#xff0c;好吧&#xff0c;就是懒&#xff0c;先挖个浅坑&#xff0c;以后再挖…...

二手的家具哪个网站做的好/专业关键词排名优化软件

题目大意: 平面上n个点,每次给出一个点,求这个点的k远点 题解: 什么叫做k远点呢。。。 1 2 3 4 5中5是第一远,4是第二远... 看来我语文学的不好 那么我们直接上k-D Tree求k邻近的方式求k远离即可 #include <queue> #include <cstdio> #include <cstring> #in…...

提供免费主页空间的网站/网络口碑营销的成功案例

2、深度优先和广度优先 深度优先DFS 1、访问顶点V 2、从V的未被访问的邻接点出发&#xff0c;对图进行深度优先遍历&#xff1b; 3、直到访问到与V相通的节点&#xff1b; 4、若此时图中尚有顶点未被访问&#xff0c;则从一个未被访问的顶点出发&#xff0c;重新进行深度优先…...

国外大型网站/拉新平台

Windows下C多线程编程&#xff08;入门实例&#xff09; 2019-01-21 13:18:20 shikong_ 阅读数 267更多 分类专栏&#xff1a; C 多线程在编程中有相当重要的地位&#xff0c;我们在实际开发时或者找工作面试时总能遇到多线程的问题&#xff0c;对多线程的理解程度从一个侧面…...

做外贸网站选美国服务器的费用/电商的运营模式有几种

过滤器的区别 捕捉过滤器&#xff08;CaptureFilters&#xff09;&#xff1a;用于决定将什么样的信息记录在捕捉结果中。需要在开始捕捉前设置。显示过滤器&#xff08;DisplayFilters&#xff09;&#xff1a;在捕捉结果中进行详细查找。他们可以在得到捕捉结果后随意修改。那…...