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

Silverlight发展历程(微软2021年已经停止支持Silverlight 5)

Microsoft Silverlight 发展历程

引言

Microsoft Silverlight 是微软在 Web 多媒体和富互联网应用 (RIA) 领域的一次重要尝试,它从诞生到消亡的过程折射出了 Web 技术发展的变迁和行业格局的演变。本文将详细回顾 Silverlight 的完整发展历程,探讨其技术特点、应用场景、成功与失败的原因,以及它在互联网技术发展史上的地位和影响。

起源与背景(2006-2007)

互联网技术格局与微软的挑战

2000 年代中期,随着宽带互联网的普及,Web 应用开始向更加丰富的媒体体验和交互模式发展。当时的 Web 技术生态主要由几个关键技术主导:

  • Adobe Flash:主导着 Web 动画、游戏和富媒体内容市场
  • Java Applet:在企业应用领域有一定市场
  • AJAX:刚刚兴起,代表了基于标准的 Web 技术发展方向

微软在这一领域面临严峻挑战。Internet Explorer 虽然是主流浏览器,但在富媒体和交互体验上完全依赖第三方插件,尤其是 Adobe Flash。这一情况不符合微软的战略利益,因为它:

  1. 使微软在 Web 平台的核心体验上依赖竞争对手的技术
  2. 无法充分利用微软在桌面软件和开发工具上的技术优势
  3. 使 .NET 平台无法延伸到 Web 富媒体领域

WPF/E 项目的启动

面对这一挑战,微软在 2006 年启动了代号为 “WPF/E”(WPF Everywhere)的项目,旨在将 Windows Presentation Foundation (WPF) 技术扩展到跨平台的浏览器环境。这一项目的目标是:

  • 创建一个基于 .NET 的跨平台 Web 富客户端技术
  • 提供比 Flash 更强大的媒体和图形处理能力
  • 与现有的微软技术栈(如 Visual Studio、Expression Studio、.NET Framework)无缝集成
  • 支持 XAML(可扩展应用程序标记语言)作为声明式 UI 描述语言

2006 年 9 月,微软在 MIX 06 大会上首次展示了 WPF/E 的原型,并计划在 2007 年正式发布。

Silverlight 1.0 的诞生(2007)

正式命名与首次发布

2007 年 4 月,微软正式将 WPF/E 更名为 “Silverlight”,这一名称反映了其作为 Web "银光"的定位,并于 2007 年 9 月正式发布 Silverlight 1.0 版本。

Silverlight 1.0 的核心特性包括:

  • 基于 JavaScript 的编程模型
  • 支持播放高质量的视频和音频
  • 支持 XAML 进行用户界面描述
  • 提供基础的 2D 矢量图形和动画支持
  • 支持 Windows 和 Mac OS 平台

这一版本的 Silverlight 功能相对有限,主要聚焦于媒体播放,尚未包含完整的 .NET 运行时支持,因此开发者需要使用 JavaScript 进行编程。

初步的市场定位

Silverlight 1.0 的市场定位主要针对媒体播放和基础的富互联网应用,直接挑战 Adobe Flash 在媒体播放和简单交互应用方面的主导地位。微软通过与内容提供商的合作,特别是在流媒体领域,试图快速建立 Silverlight 的市场份额。

Silverlight 2.0:真正的突破(2008)

技术飞跃

Silverlight 2.0(原计划命名为 1.1)于 2008 年 10 月发布,代表了 Silverlight 技术的真正成熟。这一版本的核心创新是集成了精简版的 .NET Framework,称为 “.NET Framework for Silverlight”,这使得开发者可以使用 C# 或 VB.NET 进行 Silverlight 应用开发。

Silverlight 2.0 的主要技术特性包括:

  • 集成 .NET 运行时环境,支持 C# 和 VB.NET 开发
  • 引入控件框架,提供约 20 种内置 UI 控件
  • 数据绑定支持
  • 强化的网络栈,支持 REST、SOAP、RSS 等服务
  • 引入了线性布局系统,支持复杂界面设计
  • 增强的媒体支持,包括改进的流媒体能力
  • Deep Zoom 技术,支持高分辨率图像的平滑缩放

开发工具的成熟

伴随 Silverlight 2.0 的发布,微软推出了完整的开发工具链:

  • Visual Studio 2008 对 Silverlight 开发的全面支持
  • Expression Blend 2 SP1,提供专业的界面设计工具
  • 丰富的 SDK 和示例代码

这套完整的工具链是 Silverlight 相对于 Flash 的重要优势,尤其对于已熟悉 .NET 开发的企业开发者来说,显著降低了学习曲线。

市场扩展与战略合作

Silverlight 2.0 的发布使微软能够拓展其在 RIA 市场的目标:

  • 与 NBC 合作转播 2008 年北京奥运会,成为 Silverlight 的首个重要应用案例
  • 与 Netflix 合作,为其流媒体服务提供技术支持
  • 积极推进在企业应用领域的应用

Silverlight 在 2008 年获得了显著增长,到年底已有约 1 亿台设备安装了 Silverlight 运行时。

年份Silverlight 版本主要新特性安装基数估计重要事件
20071.0JavaScript 编程模型,XAML 支持<5000万首次发布
20082.0.NET Framework 集成,控件框架>1亿北京奥运会,Netflix 采用

扩展与成熟期(2009-2010)

Silverlight 3.0(2009)

Silverlight 3.0 于 2009 年 7 月发布,进一步增强了其功能集,主要改进包括:

  • 引入离线应用支持和 Out-of-Browser 功能
  • 新增 GPU 硬件加速支持
  • 加入 3D 变换能力
  • 增强了媒体功能,包括 H.264 视频支持和平滑流技术
  • 引入元素绑定数据模型
  • 新增 40 多种控件和组件
  • 增强了业务应用开发能力,包括验证和数据表单支持

Out-of-Browser 功能是 Silverlight 3.0 的重要创新,它允许 Silverlight 应用在浏览器外运行,具有更接近本地应用的体验,同时保持 Web 应用的部署和更新便利性。这一功能反映了微软将 Silverlight 定位为连接 Web 和桌面的桥梁的战略。

Silverlight 4.0(2010)

2010 年 4 月,微软发布了 Silverlight 4.0,这被认为是 Silverlight 技术最成熟的版本,主要特性包括:

  • 增强的 Out-of-Browser 体验,支持更多本地系统集成
  • 打印支持
  • 网络摄像头和麦克风支持
  • 增强的企业功能,包括更好的数据绑定和富文本编辑
  • Google Chrome 浏览器支持
  • 支持鼠标右键和滚轮事件
  • COM 自动化支持,允许与 Office 应用集成
  • 通知窗口支持

Silverlight 4.0 明显加强了企业应用和 LOB(Line of Business)应用的支持,表明微软认识到 Silverlight 在企业市场比消费市场更有竞争力。

市场渗透与竞争态势

到 2010 年底,Silverlight 已安装在约 6 亿台设备上,安装率在北美地区达到了约 60-70%。然而,这一数字仍远低于 Flash 的 97% 以上的渗透率。

在市场竞争方面,Silverlight 面临的主要挑战是:

  • Adobe Flash 拥有绝对的市场主导地位和更广泛的开发者生态
  • HTML5 标准的快速发展,开始提供原生媒体播放和高级图形支持
  • Apple 设备(特别是 iPhone 和 iPad)不支持 Silverlight,而 iOS 市场快速增长
  • Google 通过推进 HTML5 和开源技术,间接与 Silverlight 竞争

Web插件2010市场份额

转折点:战略调整与移动化挑战(2010-2011)

移动互联网的冲击

2010 年是移动互联网爆发的关键年,带来了几个对 Silverlight 战略性的挑战:

  1. Apple 公开拒绝在 iOS 设备上支持 Flash,并发表了著名的《关于 Flash 的思考》文章,为整个插件技术敲响警钟
  2. HTML5 标准快速成熟,开始提供原生视频播放和高级动画支持
  3. 智能手机和平板电脑市场迅速扩张,而 Silverlight 在这些平台上的支持有限

微软最初尝试通过 Windows Phone 7 平台推动 Silverlight 移动化。Windows Phone 7 采用 Silverlight 作为应用开发框架,试图利用现有 Silverlight 开发者生态系统快速建立移动应用市场。然而,Windows Phone 平台市场份额有限,未能为 Silverlight 提供足够的移动生态支持。

战略调整的信号

2010 年 10 月,在 PDC(专业开发者大会)上,微软首席软件架构师 Bob Muglia 在接受采访时表示,“我们的 Silverlight 策略已经调整”,并指出 HTML5 将成为跨平台解决方案,而 Silverlight 将更专注于 Windows 平台。这一表态被广泛解读为微软降低了对 Silverlight 的战略重视,引发了开发者社区的广泛担忧。

虽然微软随后通过博客文章澄清了对 Silverlight 的持续承诺,但这一事件被视为 Silverlight 命运的转折点,表明微软内部已经开始重新评估其插件技术策略。

最后的辉煌:Silverlight 5(2011-2012)

Silverlight 5.0 的发布

2011 年 12 月,微软发布了 Silverlight 5.0,这是 Silverlight 的最后一个主要版本。Silverlight 5.0 的主要特性包括:

  • 改进的媒体播放能力,包括硬件解码和 GPU 加速
  • 低延迟实时音频流支持
  • 3D 图形支持,基于 XNA 框架
  • 增强的文本渲染,支持 OpenType 字体
  • 改进的数据绑定调试
  • 远程控制支持
  • P/Invoke 支持,允许调用本地 C/C++ 代码
  • 改进的打印支持

Silverlight 5.0 是一个功能强大的版本,特别是在企业应用和媒体应用领域提供了丰富的能力。然而,与此同时,HTML5 技术也在快速发展,与 Silverlight 的功能差距不断缩小。

Windows 8 与战略转向

2011-2012 年,随着 Windows 8 开发的推进,微软的平台战略发生了重大转变:

  1. Windows 8 引入了 WinRT (Windows Runtime) 作为新的应用平台
  2. WinRT 应用可以使用 HTML/JavaScript 或 XAML/C# 开发
  3. Windows 应用商店被定位为新的应用分发渠道
  4. 微软开始明确向 HTML5 标准靠拢

虽然 WinRT 的 XAML/C# 编程模型借鉴了 Silverlight 的许多概念,但它是一个全新的平台,与 Silverlight 不兼容。这一战略调整表明,微软已经开始为"后 Silverlight 时代"布局。

企业领域的深耕

在公众关注度下降的同时,Silverlight 在 2011-2012 年在企业应用领域仍然保持了相对强势的地位:

  • 微软 SharePoint 2010 使用 Silverlight 增强用户体验
  • 多家企业软件供应商推出基于 Silverlight 的 LOB 应用
  • Silverlight 在内部网应用中获得广泛应用,特别是在需要丰富交互和媒体能力的场景
年份Silverlight 版本主要新特性市场状况重要事件
20093.0Out-of-Browser 支持,GPU 加速快速增长安装基数突破 3 亿
20104.0增强的企业功能,更多本地集成增长放缓战略调整争议
20115.03D 支持,媒体播放增强企业市场稳定Windows 8 战略公布

衰落期:HTML5 时代的到来(2012-2015)

市场环境的变化

2012-2015 年期间,Web 技术环境发生了深刻变化,对 Silverlight 形成了多重挑战:

  • HTML5 成为 W3C 推荐标准,主流浏览器提供了完善支持
  • WebGL 技术成熟,提供了强大的 3D 图形能力
  • CSS3 动画和过渡效果被广泛支持
  • JavaScript 性能大幅提升,ECMAScript 标准持续演进
  • 响应式设计成为主流,适应多种屏幕尺寸成为必要
  • 移动设备上网流量超过桌面设备

这些变化使得基于标准的 Web 技术能够提供与插件技术相当的功能,同时避免了插件的兼容性和安全性问题。

浏览器支持的削减

随着 Web 标准的发展,主要浏览器厂商开始减少对插件技术的支持:

  • 2013 年,Google Chrome 开始逐步淘汰 NPAPI 插件支持
  • 2014 年,Mozilla Firefox 宣布计划终止 NPAPI 插件支持
  • 2015 年,Microsoft Edge 浏览器发布,不支持 ActiveX 和 Silverlight
  • 2015 年,Google Chrome 完全移除 NPAPI 支持,使 Silverlight 无法在 Chrome 中运行

这些变化极大地减少了 Silverlight 的可访问市场,迫使开发者考虑替代方案。

微软战略的明确转向

这一时期,微软的战略转向变得更加明确:

  • 2012 年,微软发布 TypeScript,为大型 JavaScript 应用提供更好的工具支持
  • 2013 年,微软对 Office 365 进行改版,减少 Silverlight 依赖,增加 HTML5 支持
  • 2014 年,微软新任 CEO Satya Nadella 推动"移动为先,云为先"战略,强调跨平台
  • 2015 年,微软宣布 Windows 10 将支持托管的 Web 应用

最终,微软于 2015 年 7 月正式宣布 Silverlight 5 将是最终版本,并公布了产品支持的最终时间表,确认将在 2021 年 10 月完全终止支持。

遗产与影响(2015 年后)

技术遗产的转移

尽管 Silverlight 作为产品走向终结,但其许多技术概念和设计理念被转移到了微软的其他技术中:

  • WinRT/UWP:继承了 Silverlight 的 XAML 编程模型和许多控件设计
  • Xamarin:采用类似的 XAML 布局系统,允许 C# 开发跨平台移动应用
  • .NET MAUI:进一步整合了 XAML 和 C# 的跨平台应用开发模型
  • Blazor:重新实现了在 Web 平台上使用 C# 开发的能力,但基于 WebAssembly 而非插件

影响与教训

Silverlight 的兴衰为软件行业提供了一些重要教训:

  1. 标准的重要性:专有技术即使技术先进,也难以抵抗开放标准的长期发展
  2. 移动优先的必要性:未能及时适应移动浪潮是 Silverlight 衰落的关键因素
  3. 开发者生态的价值:尽管 Silverlight 拥有出色的开发工具,但其生态系统规模从未超过 Flash
  4. 平台战略的复杂性:微软多次调整的平台战略给开发者带来了困惑和不确定性

企业应用中的长尾效应

虽然 Silverlight 在公共互联网上的应用在 2015 年后急剧减少,但在企业内部网应用中,Silverlight 应用的淘汰和迁移是一个缓慢的过程:

  • 许多企业应用继续使用 Silverlight 直到支持期结束
  • 大型组织投入大量资源将 Silverlight 应用迁移到 HTML5 或其他技术
  • 金融、医疗和政府部门是最后淘汰 Silverlight 的行业

技术特点回顾

Silverlight 的主要技术特点

Silverlight 作为一项技术,有其独特的优势和局限性:

技术方面强项弱项
开发模型强类型语言,完整 IDE 支持插件部署,浏览器兼容性问题
图形渲染高质量矢量图形,硬件加速复杂场景性能不如 Flash
媒体播放高品质视频播放,平滑流编解码器支持有限
应用架构MVVM 模式,良好的代码组织复杂应用初始加载较慢
跨平台性Windows 和 Mac 支持移动设备支持有限,Linux 支持缺失
安全模型沙盒执行,代码访问安全性需要提升权限才能访问本地资源

与竞争技术的比较

Silverlight 与其主要竞争技术相比:

  • vs. Flash:开发工具更现代,媒体播放优越,但市场渗透率低,游戏开发能力弱
  • vs. HTML5:应用架构更成熟,性能更一致,但部署复杂,需要插件安装
  • vs. Java Applet:用户体验更佳,启动更快,但企业功能不如 Java 丰富

结论:Silverlight 的历史意义

Silverlight 虽然最终未能取得商业上的持久成功,但它在技术发展史上具有重要意义:

  1. 技术创新:Silverlight 推动了 Web 富应用开发模型的创新,影响了后续标准的发展
  2. 开发范式:XAML 声明式 UI 和数据绑定模型对现代前端开发有深远影响
  3. 微软转型:从专有技术向开放标准的转变,反映了微软战略的重大变革
  4. 行业教训:为科技行业提供了关于技术选择和平台战略的宝贵教训

Silverlight 的故事告诉我们,技术选择不仅仅是技术问题,也是市场、生态和战略的问题。在快速变化的技术环境中,适应变化的能力往往比技术本身的先进性更加重要。

虽然 Silverlight 作为产品已经成为历史,但它的许多理念和创新已经融入到了更广泛的软件开发生态中,继续以不同的形式影响着软件行业的发展。

相关文章:

Silverlight发展历程(微软2021年已经停止支持Silverlight 5)

Microsoft Silverlight 发展历程 引言 Microsoft Silverlight 是微软在 Web 多媒体和富互联网应用 (RIA) 领域的一次重要尝试&#xff0c;它从诞生到消亡的过程折射出了 Web 技术发展的变迁和行业格局的演变。本文将详细回顾 Silverlight 的完整发展历程&#xff0c;探讨其技…...

“星睿O6” AI PC开发套件评测 - 部署PVE搭建All in One NAS服务器

Radxa O6平台上部署PVE搭建All in One NAS服务器 Radxa O6是一款性能卓越的单板计算机&#xff0c;其强劲的硬件配置和多样化的接口设计&#xff0c;使其成为家庭和小型企业理想的All in One服务器解决方案。值得一提的是&#xff0c;O6原生配备了两个5G网口&#xff0c;便于直…...

【路由交换方向IE认证】BGP选路原则之AS-Path属性

文章目录 一、路由器BGP路由的处理过程控制平面和转发平面选路工具 二、BGP的选路顺序选路的前提选路顺序 三、AS-Path属性选路原则AS-Path属性特性AS-Path管进还是管出呢&#xff1f;使用AS-Path对进本AS的路由进行选路验证AS-Path不接收带本AS号的路由 四、BGP邻居建立配置 一…...

《软件设计师》复习笔记(14.3)——设计模式

目录 一、设计模式分类 1. 创建型模式&#xff08;Creational Patterns&#xff09; 2. 结构型模式&#xff08;Structural Patterns&#xff09; 3. 行为型模式&#xff08;Behavioral Patterns&#xff09; 真题示例&#xff1a; 一、设计模式分类 架构模式 高层设计决…...

Windows10,11账户管理,修改密码,创建帐户...

在这里&#xff0c;我们使用微软操作系统的一款工具:netplwiz 它可以非常便捷的管理用户账户. 一:修改密码(无需现在密码) 01修改注册表 运行命令&#xff1a;regedit 在地址栏输入&#xff1a; HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Passwor…...

数据类型相关问题导致的索引失效 | OceanBase SQL 优化实践

背景 针对在OceanBase 论坛中遇到的一些典型SQL调优问题&#xff0c;进行记录与总结&#xff0c;分享给大家。本文介绍的事3个场景&#xff1a;数据类型不匹配、字符集相关属性不匹配&#xff0c;和过滤/联接条件上包含系统函数。 场景一&#xff1a;数据类型不匹配 类型不匹…...

银行卡风险画像在社交行业网络安全的应用

据中国支付清算协会统计&#xff0c;2023年银行卡欺诈案件造成的经济损失同比增长21%&#xff0c;而社交平台中超过35%的诈骗行为涉及金融账户盗用。本文将讲述如何使用风险画像技术助力社交网络安全。 银行卡风险画像的核心逻辑 银行卡风险画像是通过多维度数据分析构建的用…...

C++程序设计基础实验:C++对C的扩展特性与应用

C程序设计基础实验&#xff1a;C对C的扩展特性与应用 &#x1f525; 本文详细讲解C基础实验&#xff0c;包含C对C语言的扩充与增强特性&#xff0c;从零开始掌握函数重载、引用、指针等核心概念&#xff0c;附详细代码分析与运行结果。适合C初学者和有C语言基础想学习C的同学&a…...

极狐GitLab 外部授权控制机制是怎样的?

极狐GitLab 是 GitLab 在中国的发行版&#xff0c;关于中文参考文档和资料有&#xff1a; 极狐GitLab 中文文档极狐GitLab 中文论坛极狐GitLab 官网 外部授权控制 (BASIC SELF) 在高度控制的环境中&#xff0c;访问策略可能需要由外部服务控制&#xff0c;该服务允许基于项目…...

告别Feign:基于Spring 6.1 RestClient构建高可用声明式HTTP客户端

&#x1f9d1; 博主简介&#xff1a;CSDN博客专家&#xff0c;历代文学网&#xff08;PC端可以访问&#xff1a;https://literature.sinhy.com/#/?__c1000&#xff0c;移动端可微信小程序搜索“历代文学”&#xff09;总架构师&#xff0c;15年工作经验&#xff0c;精通Java编…...

极狐GitLab 项目和群组的导入导出速率限制如何设置?

极狐GitLab 是 GitLab 在中国的发行版&#xff0c;关于中文参考文档和资料有&#xff1a; 极狐GitLab 中文文档极狐GitLab 中文论坛极狐GitLab 官网 项目和群组的导入导出速率限制 (BASIC SELF) 您可以为项目和群组的导入和导出配置速率限制&#xff1a; 更改速率限制&#…...

中华传承-医山命相卜-铁板神数

铁板神数 子平法 子平法 徐子平 倪海夏 一月&#xff08;公历2025年1月29日-2025年2月27日&#xff09; 运势&#xff1a;事业开局不利&#xff0c;难以快速适应工作节奏&#xff0c;可能面临上级的质疑或竞争压力。财富方面容易财来财去&#xff0c;需留意理财陷阱。 原因&…...

C++学习:六个月从基础到就业——面向对象编程:接口设计

C学习&#xff1a;六个月从基础到就业——面向对象编程&#xff1a;接口设计 本文是我C学习之旅系列的第十五篇技术文章&#xff0c;重点讨论在C中进行接口设计的原则、技术和最佳实践。查看完整系列目录了解更多内容。 引言 在面向对象的软件开发中&#xff0c;良好的接口设计…...

工作总结(十二)——迁移svn单项目到gitlab上,保留历史提交记录

文章目录 前言一、目的二、操作步骤1.创建项目库2.复制历史提交者账号3.复制待迁移项目以及历史记录4.push到gitlab远程仓库 总结 前言 本系列文章主要记录工作中一些需要记录的内容 一、目的 因为一些原因&#xff0c;我需要将svn库上的某个项目迁移到公司的gitlab库管理平台…...

PS中制作一张扣洞贴图

要在PS制作如下一张贴图&#xff0c;如下图所示 步骤&#xff1a; 1.首先复制一张图层 2.将最底层图层的透明度调整为0 3.选择画笔的模式为清除 4.设置画笔大小 5.选中需要清除的图层&#xff0c;然后就可以将图层的像素点清除了 6.导出成PNG文件即可 注&#xff1…...

STM32 HAL库 Freertos创建多任务

1. 引言 STM32F407 是 ST 公司推出的一款高性能微控制器&#xff0c;具有丰富的外设资源和强大的处理能力。HAL&#xff08;Hardware Abstraction Layer&#xff09;库是 ST 为其微控制器提供的硬件抽象层&#xff0c;它简化了硬件操作&#xff0c;提高了开发效率。FreeRTOS 是…...

android测试硬件工具 安卓硬件测试命令

Android开发常用ADB命令大全 在Android开发过程中&#xff0c;ADB(Android Debug Bridge)是一个非常重要的调试工具。掌握这些命令可以大大提高开发效率。如果你正在使用克魔开发助手(Keymob)这样的开发工具&#xff0c;你会发现它已经集成了很多ADB功能&#xff0c;让调试变得…...

第12篇:Linux程序访问控制FPGA端Switch<一>

Q&#xff1a;如何写.c代码访问读取FPGA端的滑动开关SW的值&#xff1f; A&#xff1a;DE1-SoC开发板上有10个滑动开关连接到DE1_SoC_Computer系统的并行输入端口&#xff0c;该端口只有一个10位只读Data寄存器映射到地址0xFF200040&#xff0c;对Data寄存器进行读操作并将读出…...

硬盘变废为宝!西部数据携微软等启动稀土回收 效率可达90%

快科技4月18日消息&#xff0c;西部数据&#xff08;Western Digital&#xff09;宣布&#xff0c;与微软、Critical Materials Recycling及PedalPoint Recycling携手&#xff0c;在美国启动一项跨产业前导计划-稀土回收。 目前&#xff0c;西部数据已经成功从报废硬盘&#x…...

元宇宙概念兴起,B 端数字孪生迎来哪些新机遇?

在科技飞速发展的当下&#xff0c;元宇宙概念如同一颗璀璨新星&#xff0c;迅速吸引了全球的目光。随着元宇宙的兴起&#xff0c;与之紧密相关的 B 端数字孪生技术也迎来了前所未有的发展机遇。元宇宙与 B 端数字孪生的融合&#xff0c;正悄然改变着多个行业的运作模式&#xf…...

用 NLP + Streamlit,把问卷变成能说话的反馈

网罗开发 &#xff08;小红书、快手、视频号同名&#xff09; 大家好&#xff0c;我是 展菲&#xff0c;目前在上市企业从事人工智能项目研发管理工作&#xff0c;平时热衷于分享各种编程领域的软硬技能知识以及前沿技术&#xff0c;包括iOS、前端、Harmony OS、Java、Python等…...

stl 容器 – map

stl 容器 – map 1. map 和 multimap的使用文档 参考文档 参考文档点这里哟 &#x1f308; &#x1f618; 2. map 类的介绍 map的声明如下 template < class Key, // map::key_type class T, // map::mapped_type class Compare less<Key>, // map::key_…...

20250417-vue-动态插槽名

动态指令参数在 v-slot 上也是有效的&#xff0c;即可以定义下面这样的动态插槽名&#xff1a; <base-layout><template v-slot:[dynamicSlotName]>...</template><!-- 缩写为 --><template #[dynamicSlotName]>...</template> </base…...

010301-cdn_waf-web扩展1-基础入门-网络安全

文章目录 1 WAF1.1WAF 的核心功能1.2 WAF 的部署类型1.3 WAF 的应用场景1.4 主流 WAF 产品1.5 如何选择 WAF&#xff1f;1.6 注意事项1.7 waf总结和演示 2 CDN2.1 核心原理2.2 关键功能2.3 典型应用场景2.4 优势2.5 主流CDN服务商2.6 技术实现2.7 注意事项2.8cdn安全测试和演示…...

CentOS7执行yum命令报错 Could not retrieve mirrorlist http://mirrorlist.centos.org

CentOS7执行yum命令报错 引更新yum源备份原有源创建新的源文件清理并重建缓存 引 CentOS 7 系统无法连接到 CentOS 的官方镜像站点。这通常是由于网络问题或 CentOS 7 已停止维护导致的&#xff08;2024年6月30日后 CentOS 7 已进入 EOL&#xff09; 报错明细&#xff1a; 已…...

在阿里云虚拟主机上启用WordPress伪静态

在阿里云虚拟主机上启用WordPress伪静态&#xff0c;需要根据虚拟主机的Web服务器类型(Nginx或Apache)进行相应的设置。以下是具体步骤&#xff1a; 1. 确认虚拟主机的Web服务器类型 登录阿里云虚拟主机管理控制台。 查看主机的配置信息&#xff0c;确认是使用Nginx还是Apac…...

【java 13天进阶Day06】Map集合,HashMapTreeMap,斗地主、图书管理系统,排序算法

Map集合 Collection是单值集合体系。 Map集合是另一个集合体系&#xff0c;是一种双列集合&#xff0c;每个元素包含两个值。 Map集合的每个元素的格式&#xff1a;keyvalue(键值对元素)。 Map集合也被称为“键值对集合”。 Map集合的完整格式&#xff1a;{key1value1 , ke…...

从代码学习深度学习 - 小批量随机梯度下降 PyTorch 版

文章目录 前言一、数据准备与处理1.1 数据集简介1.2 数据加载与预处理二、训练工具与辅助类三、可视化工具四、模型训练五、执行训练总结前言 深度学习是人工智能领域的核心技术之一,而小批量随机梯度下降(Mini-Batch Stochastic Gradient Descent, SGD)是训练神经网络的基…...

03、GPIO外设(三):标准库代码示例

标准库代码示例 1、点亮LED2、LED闪烁3、LED流水灯4、按键控制LED5、蜂鸣器 本章源代码链接&#xff1a; 链接: link 1、点亮LED 实验要求&#xff1a;点亮LED ①LED.c文件的代码如下: #include "LED.h"/*** LED引脚初始化*//* 定义数组&#xff0c;想要添加引脚…...

PyTorch 深度学习实战(37):分布式训练(DP/DDP/Deepspeed)实战

在上一篇文章中&#xff0c;我们探讨了混合精度训练与梯度缩放技术。本文将深入介绍分布式训练的三种主流方法&#xff1a;Data Parallel (DP)、Distributed Data Parallel (DDP) 和 DeepSpeed&#xff0c;帮助您掌握大规模模型训练的关键技术。我们将使用PyTorch在CIFAR-10分类…...

MCP系列之架构篇:深入理解MCP的设计架构

前言 在上一篇《MCP系列之基础篇》中,我们初步了解了MCP(模型上下文协议)的基本概念和价值。本篇文章将深入探讨MCP的技术架构,帮助开发者和技术爱好者更全面地理解这一协议的内部工作机制。我们将剖析MCP的核心组件、通信模型和工作流程,解析Host、Client和Server三者之…...

RT-Thread RTThread studio 初使用

RT-Thread Studio 下载 https://www.rt-thread.org/studio.html 安装使用 https://bbs.elecfans.com/jishu_2425653_1_1.html 4 编译问题解决 问题一&#xff1a;error: unknown type name clock_t 具体的类型值是在sys/_types.h中定义的&#xff0c;需要包含sys/_types.h 这个…...

设计模式 --- 外观模式

外观模式是一种结构型设计模式&#xff0c;为复杂子系统提供​​统一的高层接口​​&#xff0c;通过定义一个外观类来​​简化客户端与子系统的交互​​&#xff0c;降低系统耦合度。这种模式隐藏了子系统的复杂性&#xff0c;将客户端与子系统的实现细节隔离开来&#xff0c;…...

第十二节:原理深挖-React Fiber架构核心思想

链表结构、时间切片&#xff08;Time Slicing&#xff09; 优先级调度实现&#xff08;如用户输入>网络请求&#xff09; React Fiber架构深度解析&#xff1a;从链表到优先级调度的革命性升级 一、Fiber架构核心设计思想 React Fiber是React 16的底层协调算法重构&#x…...

利用DeepSeek设计一个HTML批量转换工具设计

需求词&#xff1a;需要设计一个能够批量转换HTML文件格式的网页在线工具&#xff0c;界面简洁易用 功能概述 设计一个网页在线工具&#xff0c;允许用户批量上传HTML文件并进行格式转换&#xff0c;包括&#xff1a; HTML美化/格式化 HTML压缩/最小化 HTML到XHTML转换 HT…...

TypeScript 从入门到精通:完整教程与实战应用(一)

1. TypeScript 简介 什么是 TypeScript&#xff1f; TypeScript 是 JavaScript 的超集&#xff0c;添加了静态类型系统&#xff0c;由微软开发并开源。它编译成纯 JavaScript 运行在任何 JavaScript 环境中。 为什么使用 TypeScript&#xff1f; 类型安全&#xff1a;在编译时…...

什么是Python单例模式

什么是Python单例模式 Python单例模式是一种创建型设计模式,目的是确保一个类仅有一个实例,并提供一个全局访问点来获取该实例。以下从作用和示例进行介绍: 作用 控制资源使用:避免对系统资源的重复消耗,像数据库连接、文件句柄等稀缺资源,只创建一个实例来管理使用,防…...

PHP8.2.9NTS版本使用composer报错,扩展找不到的问题处理

使用composer install时报错&#xff1a; The openssl extension is required for SSL/TLS protection but is not available. If you can not enable the openssl extension, you can disable this error, at y our own risk, by setting the ‘disable-tls’ option to true.…...

memcache使用

Memcache 是一款高性能的分布式内存对象缓存系统&#xff0c;以下是其使用方法&#xff1a; 安装与配置 • 安装 Memcached &#xff1a;在 CentOS 7 系统中&#xff0c;可使用命令sudo yum install memcached进行安装&#xff0c;也可从源码编译安装&#xff0c;如下载 memca…...

旅游资源网站登录(jsp+ssm+mysql5.x)

旅游资源网站登录(jspssmmysql5.x) 旅游资源网站是一个为旅游爱好者提供全面服务的平台。网站登录界面简洁明了&#xff0c;用户可以选择以管理员或普通用户身份登录。成功登录后&#xff0c;用户可以访问个人中心&#xff0c;进行修改密码和个人信息管理。用户管理模块允许管…...

Nacos 中使用了哪些缓存?缓存的目的是什么?是如何实现的?

Nacos 在服务端和客户端都广泛的使用了缓存机制&#xff0c;下面着重介绍一下。 一、 Nacos 服务端缓存 (Server-Side Caching) Nacos 服务端缓存的主要目的是提高读取性能、降低对底层存储&#xff08;数据库或磁盘文件&#xff09;的压力&#xff0c;并加速对客户端请求的响…...

「GitHub热榜」AIGC系统源码:AI问答+绘画+PPT+音乐生成一站式

—零门槛搭建私有化AI内容工厂&#xff0c;源码开放商业落地指南 为什么全栈AIGC系统成为企业刚需&#xff1f; 1. 传统方案的致命缺陷 痛点 使用ChatGPTMidjourneyCanva 本全栈方案 工具割裂 需切换5平台 一个系统全搞定 成本 年费50万 一次部署永久免费 数据安全 …...

Dify LLM大模型参数(一)

深入了解大语言模型&#xff08;LLM&#xff09;的参数设置 模型的参数对模型的输出效果有着至关重要的影响。不同的模型会拥有不同的参数&#xff0c;而这些参数的设置将直接影响模型的生成结果。以下是 DeepSeek 模型参数的详细介绍&#xff1a; 温度&#xff08;Tempera…...

快速使用工具Cursor

Cursor 是一款面向开发者的集成开发环境&#xff0c;用途如下&#xff1a; 代码编写&#xff1a;支持多语言&#xff0c;有语法高亮、智能补全与格式化功能。代码生成&#xff1a;能依据自然语言描述生成代码。协作开发&#xff1a;支持多人实时协作编辑项目。调试程序&#x…...

JVM之经典垃圾回收器

一、垃圾回收算法 1. 标记-清除&#xff08;Mark-Sweep&#xff09; 步骤&#xff1a; 标记&#xff1a;遍历对象图&#xff0c;标记所有存活对象。清除&#xff1a;回收未被标记的垃圾对象。 特点&#xff1a;简单&#xff0c;但会产生内存碎片。 2. 标记-复制&#xff08;…...

【“星瑞” O6 评测】—NPU 部署 face parser 模型

前言 瑞莎星睿 O6 (Radxa Orion O6) 拥有高达 28.8TOPs NPU (Neural Processing Unit) 算力&#xff0c;支持 INT4 / INT8 / INT16 / FP16 / BF16 和 TF32 类型的加速。这里通过通过官方的工具链进行FaceParsingBiSeNet的部署 1. FaceParsingBiSeNet onnx 推理 首先从百度网盘…...

hadoop的三大结构及其各自的作用

Hadoop 主要有三大核心组件&#xff0c;分别是 HDFS&#xff08;Hadoop Distributed File System&#xff09;、MapReduce 和 YARN&#xff0c;以下是它们各自的作用&#xff1a; HDFS&#xff08;Hadoop Distributed File System&#xff09; 存储数据&#xff1a;HDFS 是一个…...

免费将静态网站部署到服务器方法(仅支持HTML,CSS,JS)

原视频链接&#xff1a;把HTML免费部署到网站上&#xff0c;实现别人也能访问的教程来啦QAQ_哔哩哔哩_bilibili 注意&#xff1a;仅支持HTML、CSS、JS。不支持Vue等框架。 1.打开网站www.wordpress.org 点击红框按钮 点击红框按钮下载wordpress模板文件并解压。 将自己编写的…...

2、SpringAI接入ChatGPT与微服务整合

2、SpringAI接入ChatGPT与微服务整合 小薛博客AI 大模型资料 1、SpringAI简介 https://spring.io/projects/spring-ai Spring AI是一个人工智能工程的应用框架。其目标是将Spring生态系统的设计原则&#xff08;如可移植性和模块化设计&#xff09;应用于人工智能领域&#…...

6.7.图的深度优先遍历(英文缩写DFS)

树是特殊的图&#xff0c;没有回路的图就是树 BFS与DFS的区别在于&#xff0c;BFS使用了队列&#xff0c;DFS使用了栈 一.深度优先遍历&#xff1a; 1.树的深度优先遍历&#xff1a; 树的深度优先遍历分为先根遍历和后根遍历。 以树的先根遍历为例&#xff1a; 上述图片里…...