WPF高级 | WPF 应用程序部署与发布:确保顺利交付到用户手中

在这里插入图片描述
在这里插入图片描述

WPF高级 | WPF 应用程序部署与发布:确保顺利交付到用户手中

  • 一、前言
  • 二、部署与发布基础概念
    • 2.1 部署的定义与目的
    • 2.2 发布的方式与渠道
    • 2.3 部署与发布的关键要素
  • 三、WPF 应用程序打包
    • 3.1 使用 Visual Studio 自带的打包工具
    • 3.2 使用第三方打包工具
  • 四、发布到不同平台
    • 4.1 发布到本地
    • 4.2 发布到应用商店
    • 4.3 网络部署(以 ClickOnce 为例)
  • 五、部署与发布中的常见问题及解决方法
    • 5.1 依赖项管理
    • 5.2 权限问题
    • 5.3 版本管理
  • 六、部署与发布的优化策略
    • 6.1 减小安装包大小
    • 6.2 提高安装速度
    • 6.3 增强用户体验
  • 七、总结
  • 结束语
  • 优质源码分享

WPF高级 | WPF 应用程序部署与发布:确保顺利交付到用户手中 ,开发一个功能强大、用户体验良好的 WPF 应用程序只是完成了一半的工作,将应用程序顺利部署与发布到用户手中同样至关重要。部署与发布过程涉及多个环节,从应用程序的打包、分发到在用户环境中的安装和运行,每一步都需要精心规划和处理,以确保用户能够无障碍地使用应用程序。本文将详细探讨 WPF 应用程序的部署与发布流程,通过丰富的代码示例和详细的概念解释,帮助开发者掌握如何将自己的作品成功交付给用户。

一、前言

    在数字浪潮汹涌澎湃的时代,程序开发宛如一座神秘而宏伟的魔法城堡,矗立在科技的浩瀚星空中。代码的字符,似那闪烁的星辰,按照特定的轨迹与节奏,组合、交织、碰撞,即将开启一场奇妙且充满无限可能的创造之旅。当空白的文档界面如同深邃的宇宙等待探索,程序员们则化身无畏的星辰开拓者,指尖在键盘上轻舞,准备用智慧与逻辑编织出足以改变世界运行规则的程序画卷,在 0 和 1 的二进制世界里,镌刻下属于人类创新与突破的不朽印记。

    在当今数字化时代,桌面应用程序的用户界面(UI)设计至关重要,它直接影响着用户体验与产品的竞争力。而 WPF(Windows Presentation Foundation)作为微软推出的一款强大的 UI 框架,其布局系统更是构建精美界面的核心要素。WPF 布局系统为开发者提供了丰富多样的布局方式,能够轻松应对各种复杂的界面设计需求,无论是简洁明了的工具软件,还是功能繁杂的企业级应用,都能借助其打造出令人惊艳的视觉效果与流畅的交互体验。

    WPF从入门到精通专栏,旨在为读者呈现一条从对 WPF(Windows Presentation Foundation)技术懵懂无知到精通掌握的学习路径。首先从基础入手,介绍 WPF 的核心概念,涵盖其独特的架构特点、开发环境搭建流程,详细解读布局系统、常用控件以及事件机制等基础知识,帮助初学者搭建起对 WPF 整体的初步认知框架。随着学习的深入,进阶部分聚焦于数据绑定、样式模板、动画特效等关键知识点,进一步拓展 WPF 开发的能力边界,使开发者能够打造出更为个性化、交互性强的桌面应用界面。高级阶段则涉及自定义控件开发、MVVM 设计模式应用、多线程编程等深层次内容,助力开发者应对复杂的业务需求,构建大型且可维护的应用架构。同时,通过实战项目案例解析,展示如何将所学知识综合运用到实际开发中,从需求分析到功能实现再到优化测试,全方位积累实践经验。此外,还探讨了性能优化、与其他技术集成以及安全机制等拓展性话题,让读者对 WPF 技术在不同维度有更深入理解,最终实现对 WPF 技术的精通掌握,具备独立开发高质量桌面应用的能力。

🛕 点击进入WPF从入门到精通专栏

在这里插入图片描述

二、部署与发布基础概念

2.1 部署的定义与目的

    部署是指将开发好的应用程序及其相关资源(如配置文件、依赖库等),按照一定的规则和方式,放置到用户的计算机或服务器上,使其能够正常运行的过程。部署的目的在于让用户能够便捷地获取和使用应用程序,同时确保应用程序在不同的环境中都能稳定、高效地运行。例如,一个企业内部使用的 WPF 管理系统,需要部署到各个员工的办公电脑上,以便员工能够进行日常的业务操作。

2.2 发布的方式与渠道

    本地安装包:将应用程序打包成一个安装文件(如.exe 文件),用户下载后在本地计算机上进行安装。这种方式适用于大多数桌面应用程序,用户可以通过官网下载、光盘安装等方式获取安装包。

    应用商店发布:将应用程序提交到应用商店(如 Microsoft Store),用户可以在应用商店中搜索并下载安装。应用商店发布的好处在于能够利用应用商店的推广渠道,提高应用程序的曝光度,同时也便于应用程序的更新管理。

    网络部署:通过网络共享或 Web 部署的方式,让用户直接从网络上运行应用程序,而无需在本地安装。例如,使用 ClickOnce 技术,用户可以通过点击链接的方式直接启动应用程序,应用程序会自动下载并更新到最新版本。

2.3 部署与发布的关键要素

    兼容性:确保应用程序能够在不同的操作系统版本(如 Windows 7、Windows 10、Windows 11 等)和硬件环境中正常运行。例如,某些应用程序可能依赖特定的显卡驱动或 CPU 指令集,需要在部署时进行兼容性测试。

    安全性:保护应用程序及其数据的安全,防止被恶意篡改或攻击。在部署过程中,需要对安装包进行数字签名,确保其完整性和来源可靠。同时,应用程序在运行时也需要采取安全措施,如加密敏感数据、防止 SQL 注入等。

    可维护性:便于应用程序的后续维护和更新。在部署时,需要考虑如何方便地推送更新包,以及如何让用户能够轻松地进行更新操作。

三、WPF 应用程序打包

3.1 使用 Visual Studio 自带的打包工具

    Visual Studio 提供了强大的打包功能,通过创建 “安装项目” 可以方便地将 WPF 应用程序打包成安装文件。

    创建安装项目:在 Visual Studio 中,右键点击解决方案,选择 “添加” -> “新建项目”,在弹出的对话框中选择 “安装项目”。

    添加项目输出:在安装项目中,右键点击 “应用程序文件夹”,选择 “添加” -> “项目输出”,选择要打包的 WPF 应用程序项目,添加主输出和内容文件。

    设置安装项目属性:在安装项目的属性窗口中,可以设置安装文件的名称、版本、公司名称等信息。还可以设置安装过程中的用户界面、安装目录等。

    生成安装文件:右键点击安装项目,选择 “生成”,Visual Studio 会生成一个安装文件(.msi 文件),用户可以通过运行这个文件来安装应用程序。

3.2 使用第三方打包工具

    除了 Visual Studio 自带的打包工具,还有一些第三方打包工具可供选择,如 Inno Setup、Advanced Installer 等。

    1.Inno Setup:是一款免费的开源打包工具,具有强大的脚本编写功能,可以灵活地定制安装过程。以下是一个简单的 Inno Setup 脚本示例:

[Setup]
AppName=My WPF Application
AppVersion=1.0.0
DefaultDirName={pf}\My WPF Application
OutputDir=userdocs:Inno Setup Examples Output

[Files]
Source: "C:\MyProject\bin\Release\*.*"; DestDir: "{app}"; Flags: recursesubdirs createallsubdirs

    在这个脚本中,[Setup]部分定义了应用程序的名称、版本、默认安装目录等信息;[Files]部分定义了要打包的文件及其目标目录。

    2. Advanced Installer:是一款功能丰富的商业打包工具,提供了直观的图形界面,方便用户进行各种设置。使用 Advanced Installer,用户可以轻松地创建安装包、设置安装流程、添加自定义操作等。

四、发布到不同平台

4.1 发布到本地

    创建自解压文件:可以使用工具将打包好的安装文件创建成自解压文件,方便用户下载和安装。例如,使用 WinRAR 等压缩工具,将安装文件压缩成自解压格式(.exe),用户双击自解压文件即可开始安装。

    制作安装光盘:将安装文件和相关文档刻录到光盘上,适用于需要离线安装的用户。在制作安装光盘时,需要创建一个自动运行的启动文件(autorun.inf),以便用户插入光盘后能够自动启动安装程序。

[autorun]
open=setup.exe
icon=setup.exe,0

4.2 发布到应用商店

    发布到 Microsoft Store:首先需要注册为 Microsoft Store 开发者,然后按照 Microsoft Store 的发布指南,准备好应用程序的元数据(如应用名称、描述、图标等)、截图、视频等素材。在 Visual Studio 中,使用 “发布向导” 将应用程序打包成 AppX 格式,并提交到 Microsoft Store 进行审核。审核通过后,用户即可在 Microsoft Store 中搜索并下载应用程序。

    发布到其他应用商店:不同的应用商店可能有不同的发布要求和流程。例如,发布到华为应用市场,需要遵循华为的开发者规范,上传应用程序的 APK 文件(对于支持跨平台的 WPF 应用),并填写相关的应用信息和测试报告。

4.3 网络部署(以 ClickOnce 为例)

    ClickOnce 是一种部署技术,它允许用户通过点击链接或网页上的按钮来启动应用程序,应用程序会自动下载并安装到本地。

    配置 ClickOnce 发布:在 Visual Studio 中,右键点击 WPF 应用程序项目,选择 “属性”,在 “发布” 选项卡中,设置发布位置(如 HTTP 地址、文件共享路径等)、更新策略(如自动检查更新、用户手动检查更新等)。

    发布应用程序:点击 “发布向导”,按照提示完成发布过程。发布完成后,会生成一个发布网页,用户可以通过访问这个网页来启动应用程序。

    更新应用程序:当应用程序有更新时,只需重新发布应用程序,ClickOnce 会自动检测到更新,并提示用户进行更新。用户点击更新后,应用程序会自动下载并安装最新版本。

五、部署与发布中的常见问题及解决方法

5.1 依赖项管理

    问题描述
    WPF 应用程序通常依赖于一些外部库和组件,如数据库驱动、第三方控件等。在部署过程中,如果这些依赖项没有正确安装或配置,应用程序可能无法正常运行。

    解决方法
    在打包时,将所有依赖项一并打包到安装文件中。例如,使用 Visual Studio 的 “依赖项” 功能,将第三方库添加到项目中,并设置为 “复制到本地”。

    在安装过程中,使用安装程序自动检测并安装依赖项。例如,使用 Inno Setup 的[Run]部分,添加安装依赖项的命令。

[Run]
Filename: "{app}\Dependencies\InstallDependency.exe"; Parameters: "/silent"; Flags: waituntilterminated

5.2 权限问题

    问题描述
    在安装和运行应用程序时,可能会遇到权限不足的问题,导致安装失败或应用程序无法正常访问某些资源。

    解决方法
    在安装程序中,使用管理员权限运行安装过程。例如,在 Inno Setup 中,可以设置RequestExecutionLevel为admin。

[Setup]
RequestExecutionLevel=admin

    在应用程序中,使用适当的权限管理策略。例如,在访问敏感资源时,使用WindowsIdentity和WindowsPrincipal类来检查用户权限。

WindowsIdentity identity = WindowsIdentity.GetCurrent();
WindowsPrincipal principal = new WindowsPrincipal(identity);
if (principal.IsInRole(WindowsBuiltInRole.Administrator))
{
    // 执行管理员权限的操作
}
else
{
    // 提示用户需要管理员权限
}

5.3 版本管理

    问题描述
    在应用程序的更新过程中,可能会出现版本冲突或更新失败的问题。

    解决方法
    使用版本号来管理应用程序的版本。在 Visual Studio 中,可以在项目属性的 “应用程序” 选项卡中设置版本号。

    在更新过程中,使用版本比较来判断是否需要更新。例如,在 ClickOnce 更新中,通过比较当前应用程序版本和服务器上的版本来决定是否提示用户更新。
ApplicationDeployment deployment = ApplicationDeployment.CurrentDeployment;
Version currentVersion = Assembly.GetExecutingAssembly().GetName().Version;
Version latestVersion = deployment.CurrentVersion;
if (latestVersion > currentVersion)
{
// 提示用户更新
}

六、部署与发布的优化策略

6.1 减小安装包大小

    压缩文件:在打包过程中,使用压缩算法对文件进行压缩,减小安装包的体积。例如,Inno Setup 和 Advanced Installer 都支持文件压缩功能。

    精简依赖项:仔细检查应用程序的依赖项,去除不必要的库和组件。例如,如果应用程序只使用了某个第三方库的部分功能,可以考虑使用更轻量级的替代品。

6.2 提高安装速度

    优化安装流程:减少安装过程中的不必要操作,如减少文件复制次数、优化数据库初始化过程等。

    使用并行安装:对于一些可以并行安装的组件或依赖项,可以使用多线程或异步操作来提高安装速度。例如,在安装多个依赖项时,可以使用Task类来并行执行安装命令。

List<Task> tasks = new List<Task>();
tasks.Add(Task.Run(() => InstallDependency1()));
tasks.Add(Task.Run(() => InstallDependency2()));
Task.WaitAll(tasks.ToArray());

6.3 增强用户体验

    提供详细的安装向导:在安装过程中,提供清晰、易懂的安装向导,引导用户完成安装操作。可以在安装向导中添加说明文字、图片等,帮助用户更好地理解安装过程。

    实时显示安装进度:在安装过程中,实时显示安装进度,让用户了解安装的进展情况。例如,在 Inno Setup 中,可以使用ProgressMeter组件来显示安装进度。

procedure CurStepChanged(CurStep: TSetupStep);
begin
    if CurStep = ssInstall then
    begin
        WizardForm.ProgressMeter.Position := 0;
        WizardForm.ProgressMeter.Max := TotalFileCount;
    end;
end;

procedure NextFile(FileName: string);
begin
    WizardForm.ProgressMeter.Position := WizardForm.ProgressMeter.Position + 1;
end;

七、总结

    WPF 应用程序的部署与发布是一个复杂而重要的过程,它涉及到多个环节和技术。通过合理选择打包工具、发布平台,妥善解决常见问题,并采取有效的优化策略,开发者可以确保应用程序能够顺利地交付到用户手中,为用户提供良好的使用体验。随着技术的不断发展,部署与发布的方式和工具也在不断更新和改进,开发者需要持续关注最新的技术动态,不断优化自己的部署与发布流程,以适应不断变化的市场需求。只有这样,才能让自己的 WPF 应用程序在竞争激烈的软件市场中脱颖而出,赢得用户的信任和喜爱。

结束语

        展望未来,WPF 布局系统依然有着广阔的发展前景。随着硬件技术的不断革新,如高分辨率屏幕、折叠屏设备的日益普及,WPF 布局系统有望进一步强化其自适应能力,为用户带来更加流畅、一致的体验。在应对高分辨率屏幕时,能够更加智能地缩放和布局元素,确保文字清晰可读、图像不失真;对于折叠屏设备,可动态调整布局结构,充分利用多屏空间,实现无缝切换。

        性能优化方面,微软及广大开发者社区将持续努力,进一步降低复杂布局的计算开销,提高布局更新的效率,使得 WPF 应用在处理大规模数据、动态界面时依然能够保持高效响应。通过改进算法、优化内存管理等手段,让 WPF 布局系统在性能上更上一层楼。

        亲爱的朋友,无论前路如何漫长与崎岖,都请怀揣梦想的火种,因为在生活的广袤星空中,总有一颗属于你的璀璨星辰在熠熠生辉,静候你抵达。

         愿你在这纷繁世间,能时常收获微小而确定的幸福,如春日微风轻拂面庞,所有的疲惫与烦恼都能被温柔以待,内心永远充盈着安宁与慰藉。

        至此,文章已至尾声,而您的故事仍在续写,不知您对文中所叙有何独特见解?期待您在心中与我对话,开启思想的新交流。


--------------- 业精于勤,荒于嬉 ---------------
 

请添加图片描述

--------------- 行成于思,毁于随 ---------------

优质源码分享

  • 【百篇源码模板】html5各行各业官网模板源码下载

  • 【模板源码】html实现酷炫美观的可视化大屏(十种风格示例,附源码)

  • 【VUE系列】VUE3实现个人网站模板源码

  • 【HTML源码】HTML5小游戏源码

  • 【C#实战案例】C# Winform贪吃蛇小游戏源码


在这里插入图片描述


     💞 关注博主 带你实现畅游前后端

     🏰 大屏可视化 带你体验酷炫大屏

     💯 神秘个人简介 带你体验不一样得介绍

     🎀 酷炫邀请函 带你体验高大上得邀请


     ① 🉑提供云服务部署(有自己的阿里云);
     ② 🉑提供前端、后端、应用程序、H5、小程序、公众号等相关业务;
     如🈶合作请联系我,期待您的联系。
    :本文撰写于CSDN平台,作者:xcLeigh所有权归作者所有) ,https://blog.csdn.net/weixin_43151418,如果相关下载没有跳转,请查看这个地址,相关链接没有跳转,皆是抄袭本文,转载请备注本文原地址。


     亲,码字不易,动动小手,欢迎 点赞 ➕ 收藏,如 🈶 问题请留言(评论),博主看见后一定及时给您答复,💌💌💌


原文地址:https://blog.csdn.net/weixin_43151418/article/details/145476406(防止抄袭,原文地址不可删除)

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Mybatis 的关联映射(一对一,一对多,多对多)

前言 在前面我们已经了解了&#xff0c;mybatis 的基本用法&#xff0c;动态SQL&#xff0c;学会使用mybatis 来操作数据库。但这些主要操作还是针对 单表实现的。在实际的开发中&#xff0c;对数据库的操作&#xff0c;常常涉及多张表。 因此本篇博客的目标&#xff1a;通过my…

在Linux中开发OpenGL——检查开发环境对OpenGL ES的支持

由于移动端GPU规模有限&#xff0c;厂商并没有实现完整的OpenGL特性&#xff0c;而是实现了它的子集——OpenGL ES。因此如果需要开发的程序要支持移动端平台&#xff0c;最好使用OpenGL ES开发。 1、 下载支持库、OpenGL ES Demo 1.1、下载PowerVRSDK支持库作为准备&#xff…

【Python项目】基于深度学习的电影评论情感分析系统

【Python项目】基于深度学习的电影评论情感分析系统 技术简介&#xff1a;采用Python技术、Flask框架、MySQL数据库、Word2Vec模型等实现。 系统简介&#xff1a;该系统基于深度学习技术&#xff0c;特别是Word2Vec模型&#xff0c;用于分析电影评论的情感倾向。系统分为前台…

SLAM评估工具安装及使用EVO(Ubuntu20.04安装evo)--缺少 onnx 库还有Pandas 版本不兼容解决

介绍一下我的是ubuntu20.04.机载电脑是orinnx&#xff0c;通过源码烧写的系统。 首先打开终端&#xff0c;输入 pip install evo --upgrade --no-binary evo 安装过程中出现如下问题 缺少 onnx 库还有Pandas 版本不兼容&#xff0c; ONNX&#xff08;Open Neural Network E…

Arcgis中添加脚本工具箱

文章目录 准备资料1、打开arcmap2、找到目录窗口3、复制粘贴工具箱的路径4、添加或者确认python脚本路径准备资料 (1)工具箱 (2)python脚本 1、打开arcmap 2、找到目录窗口 3、复制粘贴工具箱的路径 4、添加或者确认python脚本路径 脚本上右键属性(注意:脚本内容和路径…

第二次CCF-CSP认证(思路及源码)

第二次CCF-CSP认证 第一道&#xff08;easy&#xff09;思路及AC代码 第二道&#xff08;easy&#xff09;基本思路及AC代码 第三道&#xff08;mid&#xff09;基本思路及AC代码solution 1 (模拟)solution 2&#xff08;KMP&#xff09; 第一道&#xff08;easy&#xff09; 题…

RAGflow 无法加载Embedding模型

部署0.17版本的RAGflow&#xff0c;在模型列表中已经添加了嵌入模型&#xff0c;但是知识库配置时&#xff0c;嵌入模型灰显&#xff1a; 问题原因&#xff1a; 提前上传了一个文档&#xff0c;在知识库有文档之后&#xff0c;就不能够修改嵌入模型了。删除文档之后&#xff0…

C++ Primer 拷贝、赋值与销毁

欢迎阅读我的 【CPrimer】专栏 专栏简介&#xff1a;本专栏主要面向C初学者&#xff0c;解释C的一些基本概念和基础语言特性&#xff0c;涉及C标准库的用法&#xff0c;面向对象特性&#xff0c;泛型特性高级用法。通过使用标准库中定义的抽象设施&#xff0c;使你更加适应高级…

【够用就好006】如何从零开发游戏上架steam面向AI编程的godot独立游戏制作实录001流程

记录工作实践 这是全新的系列&#xff0c;一直有个游戏制作梦 感谢AI时代&#xff0c;让这一切变得可行 长欢迎共同见证&#xff0c;期更新&#xff0c;欢迎保持关注&#xff0c;待到游戏上架那一天&#xff0c;一起玩 面向AI编程的godot独立游戏制作流程实录001 本期是第…

计算机毕业设计Python+DeepSeek-R1大模型空气质量预测分析(源码+文档+PPT+讲解)

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 作者简介&#xff1a;Java领…

【文生图】windows 部署stable-diffusion-webui

windows 部署stable-diffusion-webui AUTOMATIC1111 stable-diffusion-webui Detailed feature showcase with images: 带图片的详细功能展示: Original txt2img and img2img modes 原始的 txt2img 和 img2img 模式 One click install and run script (but you still must i…

单片机项目复刻需要的准备工作

一、前言 复刻单片机的项目的时候&#xff0c;有些模块是需要焊接的。很多同学对焊接没有概念。 这里说一下做项目的基本工具。 比如&#xff1a;像这种模块&#xff0c;都需要自己焊接了排针才可以链接的。 二、基本模块 2.1 单排排针 一些模块买回来是没有焊接的&#x…

微服务概览与治理

微服务概览与治理 1. 微服务架构的演进 1.1 引言 当我们讨论微服务时&#xff0c;我们并不是在谈论一种炫酷的新技术&#xff0c;而是在寻找一种更好的方式来组织我们的软件系统&#xff0c;使其更易扩展、更易维护。软件架构的发展历程往往是对业务需求和技术挑战的回应。从…

《代码随想录第五十七天》——孤岛的总面积、沉没孤岛、水流问题、建造最大岛屿

《代码随想录第五十七天》——孤岛的总面积、沉没孤岛、水流问题、建造最大岛屿 本篇文章的所有内容仅基于C撰写。 1. 孤岛的总面积 1.1 题目 孤岛的总面积 题目描述 给定一个由 1&#xff08;陆地&#xff09;和 0&#xff08;水&#xff09;组成的矩阵&#xff0c;岛屿指…

IntelliJ IDEA 华为云远程开发配置步骤

1.连接华为云主机,点击New Project 2.输入用户名与主机IP后连接 3.输入密码授权连接 4.继续连接 注意,远程主机内存最少要4G才能启动后端IDE 5.连接华为云主机成功,下载IDE并连接 选择项目位置

23种设计模式之单例模式(Singleton Pattern)【设计模式】

文章目录 一、简介二、关键点三、实现单例模式的步骤四、C#示例4.1 简单的单例模式4.2 线程安全的单例模式&#xff08;双重检查锁定&#xff09;4.3 静态初始化单例模式 五、单例模式优缺点5.1 优点5.2 缺点 六、适用场景七、示例的现实应用 一、简介 单例模式&#xff08;Si…

c盘爆红后,使用diskgenius给C盘无损扩容,操作记录

diskgenius下载链接 参考链接 操作前环境 之前电脑配置了一个每天定时清理c盘临时文件的脚本&#xff0c;依然阻止不了c盘爆红。 实测DISKGENIUS 无损扩容有效&#xff0c;扩容前的环境&#xff1a; 扩容前&#xff0c;C区可用空间 9G,爆红C盘D盘都是 NTFS 格式&#xff0c;D…

【音视频】ffplay简单过滤器

一、ffplay简单过滤器 视频旋转&#xff1a;借助transpose滤镜 ffplay -i 1.mp4 -vf transpose1这里选择不同的数字是不同的方向&#xff1a; 视频翻转&#xff1a;借助hflip/vflip实现水平和垂直翻转&#xff1a; 水平翻转 ffplay 1.mp4 -vf hflip垂直翻转 ffplay 1.mp4 …

蓝桥杯备考:动态规划路径类dp之迷雾森林

step1 :确定状态表示 f[i][j]表示 n,n 到 i,j的方案数 step2 : 推导状态转移方程初始化 step3 确认填表顺序 应该是从下往上&#xff0c;从左往右 step4:答案在f[1][m] 代码实现&#xff1a; #include <iostream> #include <cstring> using namespace std; i…

零售交易流程相关知识(top-down拆解)

引入 关于POS机交易时的后台数据交互 模块之间数据交换&#xff0c;都可以能被窃取或篡改。由此引入加密、解密机制和签名、验签机制 经典的加密、解密机制&#xff1a; 对称加密&#xff1a;DES\ TDES\ AES\ RC4 非对称加密&#xff1a;RSA\ DSA\ ECC 经典的签名、验签…