Angular教程前言:历史、安装与用途
Angular 是一个强大且流行的开源前端 Web 应用程序框架,由 Google 开发并维护 1。它在现代 Web 开发中占据着重要的地位,尤其在构建动态、高效且可扩展的 Web 应用程序方面表现出色,特别适用于单页应用程序 (SPA) 和复杂的用户界面 1。本教程旨在为读者提供一个全面且易于理解的 Angular 入门指南,内容涵盖其历史发展历程、实际的安装步骤以及在 Web 开发中的各种应用场景。我们将简要介绍 Angular 从其前身 AngularJS (Angular 1.x) 到当前版本 (Angular 2+) 的演变,重点介绍其在架构和技术上的重大进步。
Angular的历史
AngularJS (Angular 1.x) 的起源与发展
AngularJS,通常被称为 Angular 1,是该框架的第一个版本,由 Miško Hevery 于 2009 年在 Brat Tech LLC 创建,最初是为一个在线 JSON 存储服务提供的软件 8。该项目后来开源,并逐渐获得广泛关注,最终主要由 Google 和一个活跃的社区进行维护和支持 3。它的官方首次发布日期是 2010 年 10 月 20 日 1。
AngularJS 的主要目标是简化单页应用程序 (SPA) 的开发和测试,它提供了一个基于模型-视图-控制器 (MVC) 和模型-视图-视图模型 (MVVM) 架构模式的结构化框架 2。AngularJS 引入了许多关键特性和概念,包括用于模型和视图之间自动同步的双向数据绑定 3,使用指令扩展 HTML 并添加自定义属性 8,以及用于管理应用程序组件和服务的依赖注入 1。
最初开发 AngularJS 的动机非常具体——解决与企业应用程序开发相关的特定问题。这表明许多成功的技术往往源于解决实际需求,而不是抽象的概念 8。Hevery 最初的项目在商业上并未获得成功,但随后将其开源,这一转变最终促成了一个被广泛采用的框架。
AngularJS 在全栈 JavaScript 开发中也扮演了重要的角色,它是流行的 MEAN 技术栈(MongoDB、Express.js、AngularJS、Node.js)的前端组成部分 8。AngularJS 的核心理念强调使用声明式编程来构建用户界面和连接软件组件,而将命令式编程更适合用于定义应用程序的业务逻辑 8。其设计目标包括将 DOM 操作与应用程序逻辑解耦、分离客户端和服务器端以实现并行开发,并为从 UI 设计到测试的整个开发过程提供结构化的指导 8。AngularJS 通过解析带有嵌入式自定义属性(指令)的 HTML 页面来工作,并将这些属性解释为将页面的输入或输出部分绑定到由标准 JavaScript 变量(模型)表示的数据 8。
值得注意的是,AngularJS 的活跃开发已于 2018 年 6 月结束,长期支持也于 2021 年 12 月 31 日终止 1。AngularJS 长达十多年的生命周期及其长期支持的提供,表明了它在 Web 开发领域曾经产生的重要影响以及大量使用该框架构建的项目。最终的停止支持也促使开发者转向更新的版本。
从AngularJS到Angular
Angular(版本 2 及更高版本)并非仅仅是对 AngularJS 的升级,而是 Google 团队使用 TypeScript 作为其主要语言进行的完全重写 1。这次彻底重写的主要原因是解决 AngularJS 的性能瓶颈,尤其是在处理大型和复杂的应用程序时 15,以及通过更模块化和基于组件的架构来提高可伸缩性和可维护性 1,并拥抱现代 Web 开发标准和实践 1。
关键的架构变化中最显著的是从基于 MVC/MVVM 的架构转向了基于组件的架构,在这种架构中,应用程序被组织成可重用的组件层次结构 1。决定将 AngularJS 完全重写为 Angular 2 表明了框架设计理念的重大演变,优先考虑了现代 Web 应用程序对性能和可伸缩性的需求。这是一个大胆的举动,表明了解决原始框架缺点的决心 9。
Angular 采用了 TypeScript,这是一种静态类型的 JavaScript 超集,它为大型项目提供了增强的类型安全性、改进的工具支持和更好的代码可维护性 1。为了避免开发者社区中的混淆,“AngularJS”专门指代 1.x 版本,而“Angular”(不带“JS”)则指代 2 及更高版本,这种命名上的区分旨在明确两个框架之间的差异 1。
Angular 主要版本演进
Angular 的版本历史清晰地展示了其持续改进的承诺,每个主要版本都带来了性能、开发者体验和新功能的显著提升,这些都与不断发展的 Web 开发环境保持一致 1。下表总结了 Angular 的主要版本、发布年份以及每个版本引入的一些关键特性:
版本 | 发布年份 | 主要特性 |
---|---|---|
AngularJS | 2010 | 双向数据绑定、指令、MVC 架构、依赖注入。 |
Angular 2 | 2016 | 使用 TypeScript 完全重写、基于组件的架构、改进的性能。 |
Angular 4 | 2017 | 更小的包大小、更快的渲染速度、*ngIf 和 *ngFor。 |
Angular 5 | 2017 | 支持渐进式 Web 应用 (PWA)、构建优化器。 |
Angular 6 | 2018 | Angular CLI 改进 (ng update, ng add)、Angular Material 更新。 |
Angular 7 | 2018 | CLI 提示、Angular Material 增强、虚拟滚动、拖放功能。 |
Angular 8 | 2019 | 差异加载、路由懒加载的动态导入、Ivy (可选)。 |
Angular 9 | 2020 | 默认启用 Ivy 编译器、更小的包、更快的编译速度。 |
Angular 10 | 2020 | 支持 TypeScript 3.9、日期范围选择器。 |
Angular 11 | 2020 | 支持 TypeScript 4.0、更快的构建速度、改进的 HMR。 |
Angular 12 | 2021 | 支持 Tailwind CSS、严格的空值检查、支持 Webpack 5、移除 IE 11 支持。 |
Angular 13 | 2021 | 移除 IE 11 支持、RxJS 7 默认、独立的组件 API。 |
Angular 14 | 2022 | 强类型响应式表单、独立的组件。 |
Angular 15 | 2022 | 独立的组件稳定版、指令组合 API、改进的水合作用。 |
Angular 16 | 2023 | Signals (预览)、更快速的水合作用、Jest 支持 (实验性)。 |
Angular 17 | 2023 | 内置控制流 (@if, @for)、延迟加载、改进的 SSR、独立的组件默认。 |
Angular 18 | 2024 | 无 Zone.js 的变更检测 (实验性)、改进的 SSR、增强的控制流、CLI 改进。 |
Angular 19 | 2024 | 独立的组件默认、部分水合作用、增强的 Signals、改进的组件 API、更快的构建速度。 |
版本历史清晰地表明,Angular 致力于持续改进,每个主要版本都为性能、开发者体验带来了显著的进步,并添加了与不断发展的 Web 开发环境相符的新功能。最近对 Signals 反应式编程的关注以及向独立组件的转变,代表了框架架构上的重大变革,旨在简化开发并提高性能 1。
AngularJS 的生命周期结束
AngularJS (版本 1.x) 的官方长期支持已于 2021 年 12 月 31 日结束 1。虽然 Google 不再积极开发或支持 AngularJS,但仍然有 HeroDevs 和 OpenLogic 等第三方供应商为那些仍在维护使用 AngularJS 构建的应用程序的组织提供商业扩展长期支持 11。由于缺乏持续的安全更新以及新版 Angular 提供的诸多优势,建议不要使用 AngularJS 开始新的开发项目。鼓励开发者在条件允许的情况下将现有的 AngularJS 应用程序迁移到更新的 Angular 版本。AngularJS 的生命周期结束标志着一个重要的转折点,敦促开发者社区拥抱新版 Angular 提供的进步和优势,以构建现代 Web 应用程序 1。
Angular的安装教程
环境准备
安装 Node.js 和 npm
Node.js 和 npm (Node 包管理器) 是 Angular 开发的基本先决条件,因为 Angular CLI 和许多 Angular 工具及库都作为 npm 包分发 7。请访问官方 Node.js 网站 (nodejs.org) 并下载 LTS(长期支持)版本以确保稳定性 7。根据您的操作系统(Windows、macOS、Linux)按照官方指南进行安装。您可以在终端或命令提示符中运行命令 node -v 和 npm -v 来验证 Node.js 和 npm 是否成功安装,这两个命令应该显示已安装的版本号 7。Node.js 和 npm 的普遍要求凸显了它们在 JavaScript 生态系统和 Angular 开发工作流程中的基础作用。确保正确安装它们是任何 Angular 项目的关键第一步。
(可选) 安装 TypeScript
Angular 是使用 TypeScript 构建的,TypeScript 是 JavaScript 的静态类型超集,可以提高代码质量和可维护性 1。虽然 Angular CLI 负责处理 TypeScript 代码的编译,但全局安装 TypeScript 对于使用特定的 TypeScript 工具或开发者在 Angular 项目之外使用 TypeScript 可能会有所帮助 20。您可以使用 npm 在全局范围内安装 TypeScript,命令是 npm install -g typescript 20。安装完成后,您可以在终端或命令提示符中运行命令 tsc -v 来验证 TypeScript 是否成功安装,该命令应该显示已安装的 TypeScript 版本 20。虽然 Angular 项目并非严格要求单独全局安装 TypeScript(因为 CLI 包含了必要的 TypeScript 编译器),但对于那些广泛使用该语言的开发者来说,全局安装可以提升开发体验。
安装 Angular CLI (全局安装)
Angular CLI(命令行界面)是创建、管理、构建和提供 Angular 应用程序的重要工具。它简化了许多常见的开发任务 1。要全局安装 Angular CLI,请在终端或命令提示符中运行以下命令:npm install -g @angular/cli 6。-g 标志确保 CLI 安装在全局范围内,并且可以从系统上的任何目录访问。对于 Windows 用户,如果遇到由于 PowerShell 的执行策略导致无法运行全局 npm 二进制文件的问题,建议以管理员身份在 PowerShell 中运行命令 Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSigned 以允许脚本执行 24。@angular/cli 是 npm 上的一个作用域包,表明它是 Angular 组织的一部分 6。Angular CLI 是现代 Angular 开发的基石,其全局安装为开发者提供了一种一致且高效的方式来与 Angular 生态系统进行交互。
创建新的 Angular 项目
要使用 Angular CLI 创建一个新的 Angular 项目,请在终端或命令提示符中运行命令 ng new <项目名称> 6。将 <项目名称> 替换为您希望的应用程序名称。在项目创建过程中,会出现一些交互式提示,例如是否添加 Angular 路由(用于单页应用程序的导航)以及使用哪种样式表格式(CSS、SCSS 等)来为您的应用程序设置样式 6。然后,Angular CLI 将创建一个新目录,其中包含指定的项目名称,生成包含必要配置文件的基本项目结构,并自动安装所需的 npm 包和依赖项 6。此过程可能需要几分钟。Angular CLI 创建的 Angular 项目的基本文件夹结构包括 src 文件夹(包含应用程序代码)、app 文件夹(组件、服务等驻留的地方)、angular.json(项目的配置文件)和 package.json(列出项目依赖项)6。ng new 命令通过自动化基本结构和配置的设置,显著简化了启动新 Angular 项目的过程,使开发者能够专注于编写应用程序特定的代码。
运行 Angular 应用程序
要运行 Angular 应用程序,首先需要在终端或命令提示符中使用命令 cd <项目名称> 导航到新创建的项目目录 7。然后,使用 Angular CLI 提供的命令 ng serve --open(或简写为 ng serve -o)在本地构建并提供 Angular 应用程序 6。此命令会编译应用程序,启动本地开发服务器,并在默认情况下将应用程序托管在 http://localhost:4200 上 6。–open(或 -o)标志会自动在您的默认 Web 浏览器中打开该应用程序。此外,ng serve 命令还会监视项目文件中的更改,并自动重新构建和重新加载浏览器中的应用程序,从而提供实时的开发体验 6。ng serve 命令提供了一个简化的开发工作流程,具有诸如实时重新加载等功能,使开发者能够快速在浏览器中看到代码更改的结果,而无需手动刷新。
检查 Angular 版本
您可以使用终端或命令提示符中的 ng version 或 ng v 命令来验证已安装的 Angular CLI 和 Angular 框架的版本 6。在 Angular 项目目录之外运行此命令通常会显示全局安装的 Angular CLI 版本。在 Angular 项目目录中执行时,它将显示该特定项目正在使用的 Angular CLI 和 Angular 框架的版本 41。您还可以在项目的 package.json 文件中找到 Angular 版本。打开该文件,并在 dependencies 部分查找 @angular/core 包,在 devDependencies 部分查找 @angular/cli 包。版本号将列在这些包名称旁边 40。值得一提的是,在较旧的 Angular 版本中,有时可以通过在浏览器的开发者控制台中键入 angular.version 来检查版本 45。但是,此方法可能并非在所有 Angular 版本中都可靠。此外,检查浏览器开发者工具中根 HTML 元素(例如 <app-root> 或类似元素)上的 ng-version 属性有时也可以显示 Angular 版本 46。提供多种检查 Angular 版本的方法可以满足不同的用户偏好和故障排除场景。ng version 命令是 Angular CLI 提供的最直接和信息最丰富的方法。
Angular的用途
构建单页应用程序 (SPAs)
Angular 非常适合开发单页应用程序 (SPA),这些应用程序通过加载单个 HTML 页面并动态更新内容以响应用户交互,而无需完全重新加载页面,从而提供高度交互和响应迅速的用户体验 1。Angular 内置的路由模块 7 有助于在 SPA 内的不同视图之间进行导航,而无需页面刷新,从而提供无缝的用户流程。SPA 的优点包括初始加载后更快的感知性能、更流畅和类似应用程序的用户界面以及后续交互的服务器负载减少。Angular 的核心架构及其对组件和路由的强调,使其成为构建 SPA 的绝佳选择,而 SPA 由于其性能和用户体验优势,在现代 Web 应用程序中越来越受欢迎。
开发企业级 Web 应用程序
Angular 强大的架构、可伸缩性 1、可维护性(归功于 TypeScript 和基于组件的结构)1 以及全面的工具支持(Angular CLI)使其成为开发大型和复杂的企业级 Web 应用程序的理想选择 1。Angular 的模块化(通过 NgModules 和现在的独立组件 2)、依赖注入 1 以及明确定义的开发生命周期等特性,都有助于在企业环境中实现高效的团队协作和长期应用程序维护。Angular 的设计原则和特性与企业级应用程序的严格要求非常契合,在这些应用程序中,可伸缩性、可维护性、安全性以及团队协作至关重要。
创建 Progressive Web Apps (PWAs)
Angular 为构建渐进式 Web 应用 (PWA) 提供了强大的支持和特定的工具。PWA 是一种 Web 应用程序,它提供了类似于原生移动应用程序的增强用户体验,包括离线功能、推送通知以及添加到用户主屏幕的能力 1。使用 Angular CLI 命令 ng add @angular/pwa 可以轻松地将 PWA 功能添加到 Angular 项目中,该命令会自动配置必要的 Service Workers 和 manifest 文件。PWA 的优点包括改进的性能、可靠性(在离线或低网络条件下工作)以及通过类似应用程序的功能提高用户参与度。Angular 与 PWA 标准的集成使开发者能够利用 Web 技术创建可以弥合传统网站和原生移动应用程序之间差距的应用程序,从而在不同平台上提供引人注目的用户体验。
移动应用开发 (通过 Ionic 等框架)
虽然 Angular 主要是一个用于构建 Web 应用程序的框架,但其架构和基于组件的模型使其成为使用 Ionic 等框架开发跨平台移动应用程序的合适基础 7。Ionic 利用 Web 技术(HTML、CSS、JavaScript/TypeScript)并借助 Angular 的强大功能来构建混合移动应用程序,这些应用程序可以从单个代码库在 iOS 和 Android 平台上运行。虽然 Angular 本身并不直接编译为原生移动代码,但其与 Ionic 等框架的兼容性将其应用范围扩展到了移动应用程序开发领域,提供了一种经济高效的方式来构建跨平台应用程序。
其他应用场景
Angular 的功能还扩展到构建各种其他类型的交互式 Web 应用程序,包括用于数据可视化和商业智能的仪表板、复杂的基于表单的应用程序、具有丰富用户界面的电子商务平台以及组织的内部工具 2。其灵活性以及可与 Angular 集成以满足各种特定应用程序要求的庞大第三方库和工具生态系统,使其能够适应广泛的 Web 开发需求。Angular 全面的特性集和活跃的社区支持使其能够适应广泛的 Web 应用程序场景,使其成为许多不同类型项目的多功能选择。
总结
本入门教程涵盖了 Angular 的关键方面:从 AngularJS 到当前版本的历史演变、设置开发环境和安装 Angular 的分步指南,以及该框架在现代 Web 开发中的各种应用和用例概述。Angular 作为一个强大、多功能且不断发展的框架,使开发者能够构建复杂且高性能的 Web 应用程序。鼓励读者通过探索更高级的概念、深入研究官方 Angular 文档 (angular.dev) 并开始构建自己的 Angular 项目以获得实践经验,继续他们的学习之旅。学习 Angular 在 Web 开发领域将开启充满回报的可能性。
相关文章:
Angular教程前言:历史、安装与用途
Angular 是一个强大且流行的开源前端 Web 应用程序框架,由 Google 开发并维护 1。它在现代 Web 开发中占据着重要的地位,尤其在构建动态、高效且可扩展的 Web 应用程序方面表现出色,特别适用于单页应用程序 (SPA) 和复杂的用户界面 1。本教程…...
node.js模块化步骤(各标准区别)CommonJS规范、AMD规范、UMD规范、ES Modules (ESM)
前后端建议统一使用ESM 文章目录 Node.js模块化发展历程与标准对比一、模块化的意义1.1 解决的核心问题1.2 没有模块化的问题 二、CommonJS规范2.1 核心特征2.2 实现示例 三、AMD (Asynchronous Module Definition)3.1 特点3.2 代码示例 四、UMD (Universal Module Definition)…...
Unity图片导入设置
🏆 个人愚见,没事写写笔记 🏆《博客内容》:Unity3D开发内容 🏆🎉欢迎 👍点赞✍评论⭐收藏 🔎Unity支持的图片格式 ☀️BMP:是Windows操作系统的标准图像文件格式,特点是…...
MySQL与分布式架构的碰撞
目录 一、分布式架构的核心挑战与MySQL的应对策略 1.1 高并发与扩展性 1.3 高可用与容灾 二、MySQL分布式架构的核心技术实现 2.1 读写分离与主从复制(扩展) 2.2 数据分片与分布式存储(扩展) 2.3 MySQL Cluster与NDB引擎&am…...
python-MySQL鏈接
python鏈接MySQL,主要利用庫 pip install mysql-connector-pythonimport mysql.connector# 配置连接参数 config {"user": "your_username","password": "your_password","host": "localhost", # 或…...
cv::remap() 和 cv::undistortion() 的区别
在 OpenCV 中,cv::remap 和 cv::undistort 都用于处理图像畸变校正,但它们的实现方式和应用场景有显著区别。以下是详细对比: 1. cv::undistort:直接畸变校正 功能 输入:原始畸变图像 相机内参矩阵 (cameraMatrix) …...
【AI提示词】决策树专家
提示说明 一位熟悉决策树算法的机器学习专家,擅长用树状图量化不同选择的结果概率。 提示词 # Role: 决策树专家## Profile - language: 中文 - description: 一位熟悉决策树算法的机器学习专家,擅长用树状图量化不同选择的结果概率 - background: 决…...
【中间件】bthread_数据结构_学习笔记
bthread数据结构 bthread_数据结构_学习笔记1 pthread_cond_t1.1 definition1.2 解释1.3 设计动机1.4 使用示例1.5 注意事项1.6 进一步延伸:pthread_cond_s 2 pthread_mutex_t bthread_数据结构_学习笔记 1 pthread_cond_t POSIX线程库 /usr/include/x86_64-linux…...
VM虚拟机安装CentOS7.9
目录 1.下载CentOS7.9 2.VM虚拟机选择自定义,然后一直傻瓜式下一步 3.选择编辑虚拟机设置,然后选择刚刚下载的ISO 4.输入 ip addr 获取ip地址 5.用Xshell连接 1.下载CentOS7.9 链接:https://pan.baidu.com/s/1kW2gGWnbcjNtq4kz46LKVw?p…...
C++/SDL 进阶游戏开发 —— 双人塔防(代号:村庄保卫战 18)
🎁个人主页:工藤新一 🔍系列专栏:C面向对象(类和对象篇) 🌟心中的天空之城,终会照亮我前方的路 🎉欢迎大家点赞👍评论📝收藏⭐文章 文章目录 二…...
Cribl 数据脱敏 更多方法 MASK (三)
我做过好几个cribl 数据脱敏的实验: Cribl 脱敏mask-CSDN博客...
【笔记】深度学习模型训练的 GPU 内存优化之旅⑤:内存分配篇
开设此专题,目的一是梳理文献,目的二是分享知识。因为笔者读研期间的研究方向是单卡上的显存优化,所以最初思考的专题名称是“显存突围:深度学习模型训练的 GPU 内存优化之旅”,英文缩写是 “MLSys_GPU_Memory_Opt”。…...
【5G 架构】边缘计算平台是如何与3GPP网络连接的?
博主未授权任何人或组织机构转载博主任何原创文章,感谢各位对原创的支持! 博主链接 本人就职于国际知名终端厂商,负责modem芯片研发。 在5G早期负责终端数据业务层、核心网相关的开发工作,目前牵头6G技术研究。 博客内容主要围绕…...
5.0.0 GripSpliter的使用(探讨水平竖直对齐参数)
布局控件Grid 配合 GridSplitter 无需编写任何代码 就能实现网格大小可拖动。 其HorizontalAlignment、VerticalAlignment属性的使用非常具有迷惑性;本文做了一些一些实验,总结为把这两个属性均设置为strech即可。 总结如下:经过实验,发现以下情况可以正常工作。 水平方向…...
python如何把pdf转word
在Python中将PDF转换为Word文档(.docx)比反向转换(Word转PDF)更具挑战性,因为PDF是固定格式,而Word是可编辑格式。以下是几种可行的方法及详细步骤: 方法1:使用 pdf2docx 库 pdf2do…...
go实现双向链表
需求 实现双向链表的节点生成、正反向遍历、指定删除。 实现 package mainimport ("fmt" )type zodiac_sign struct {number intdizhi stringanimal stringyear intprevious *zodiac_signnext *zodiac_sign }// 添加 // func add_node_by_order(pr…...
33、VS中提示“以下文件中的行尾不一致。是否将行尾标准化?“是什么意思?
在Visual Studio(VS)中遇到提示“以下文件中的行尾不一致。是否将行尾标准化?”时,意味着当前打开或正在编辑的文件内部存在行尾符(EOL,End-Of-Line)格式不统一的情况。以下是详细解释和应对建议…...
C 语言 第五章 指针(5)
目录 函数参数传递机制:地址传递 值传递 简单变量指针作为形参 举例1: 举例2: 举例3: 数组作为形参 举例: 函数参数传递机制:地址传递 值传递 void test(int a, int b) { a 10; b 20; print…...
Python项目源码69:Excel数据筛选器1.0(tkinter+sqlite3+pandas)
功能说明:以下是一个使用Tkinter和Pandas实现的完整示例,支持Excel数据读取、双表格展示和高级条件筛选功能: 1.文件操作:点击"打开文件"按钮选择Excel文件(支持.xlsx和.xls格式),自…...
机器人--架构及设备
机器人的四大组成部分 控制系统 驱控系统 驱控驱动系统控制系统。 注意,这里的控制系统不是机器人层面的控制系统,属于更小层级的,驱控系统的控制系统。 驱动系统: 一般指硬件设备,比如电机驱动器,I/O…...
机器人--主机--控制系统
机器人主机 机器人主机,即控制系统。 作用 机器人主机的核心功能 传感器数据处理:处理摄像头、激光雷达、IMU等数据。 运行SLAM/导航算法:如Google Cartographer、RTAB-Map。 路径规划与控制:执行A*、DWA等算法。 通信管理&a…...
Stm32 烧录 Micropython
目录 前言 准备工作 开始操作 问题回顾 后记 前言 去年曾经尝试Pico制作openmv固件,由于知识储备不够最后失败了,留了一个大坑,有了前几天的基础,慢慢补齐知识,最近这一周一直在学习如何编译Stm固件并烧录到单片机…...
leetcode 977. Squares of a Sorted Array
题目描述 双指针法一 用right表示原数组中负数和非负数的分界线。 nums[0,right-1]的是负数,nums[right,nums.size()-1]是非负数。 然后用合并两个有序数组的方法。合并即可。 class Solution { public:vector<int> sortedSquares(vector<int>&…...
使用Nexus搭建远程maven仓库
1、Nexus介绍 Nexus 是 Sonatype 公司的一款用于搭建私服的产品,使用非常广泛。在早期,我们都拿Nexus当maven私服仓库,后来,随着版本不断更新,它支持的数据类型越来越多,比如npm仓库,nuget仓库&…...
坚鹏:工行《DEEPSEEK赋能银行智能办公及数字化营销服务》培训
中国工商银行上海市分行《DEEPSEEK赋能银行智能办公及数字化营销服务》培训圆满落幕 中国工商银行作为全球领先的综合性金融服务集团,始终走在金融科技创新的前沿。截至2024年末,工商银行总资产规模突破40万亿元,连续多年稳居全球银行榜首。在…...
操作系统OS是如何指挥外围设备的呢?
众所周知,OS的职责之一就是管理外围设备,比如常见的磁盘、硬盘、显示器、麦克风等,但并不是外围设备的一切都必须由OS管理,比如无线鼠标上的开关键,当你通过它关闭鼠标时,这个操作并不会经过OS,…...
实现Sentinel与Nacos的规则双向同步
实现Sentinel与Nacos的规则双向同步:完整解决方案 前言 在微服务架构中,流量控制和熔断降级是保障系统稳定性的重要手段。阿里开源的Sentinel作为一款轻量级的流量控制组件,常被用于实现这些功能。然而,在实际生产环境中&#x…...
2025五一杯数学建模A题:支路车流量推测问题,思路分析+模型代码
一持续更新,见文末名片 二、问题背景 想象一下,城市的道路如同一张巨大的脉络图,主路如同大动脉,配备着车流量监测设备,能实时记录车流量数据,就像我们身体的传感器一样。然而,当多条支路像毛细…...
Linux51 安装baidunetdisk yum install rpm -ivh
推测网卡 感觉是不是以前哪里设置了下 deepseek说的这个设置 我没有设置过 这个不会弄啊 准备用虚拟机安个软件 神奇 换了这个命令又能打开网卡了 参考了这个 参考 之前地址我觉得配置错误 动态分配 我就删掉ip地址了 路由表中无ip地址吗? OK 卸载 运…...
【Python-Day 8】从入门到精通:Python 条件判断 if-elif-else 语句全解析
Langchain系列文章目录 01-玩转LangChain:从模型调用到Prompt模板与输出解析的完整指南 02-玩转 LangChain Memory 模块:四种记忆类型详解及应用场景全覆盖 03-全面掌握 LangChain:从核心链条构建到动态任务分配的实战指南 04-玩转 LangChai…...
若依 FastAPI + Vue3 项目 Docker 部署笔记( 启动器打包教程)
本文记录了将 start.bat 打包成 .exe 启动器的详细教程,适合项目交付或导师演示用。 🧭 一、如何将 start.bat 打包为启动器 .exe(含图标 自动打开浏览器) ✅ 1. 创建三大功能脚本 start.bat → 启动项目(docke…...
Lebesgue测度和积分理论发展概观
1. 发展背景 积分可以从两个角度来理解。首先,积分是微分的逆函数,因此积分是反导数(译注:但积分是独立于微分的,不能微分的函数也可能可积)。然而,这是一个非常抽象的概念。其次,两点之间的积分可以看…...
算法题题型总结
二叉树题型 解法综述:二叉树的解法,基本上都是依赖遍历,再加上递归的思路来做的。那递归又分为深度优先和广度优先。深度优先算法,前序,中序,后序。广度优先,利用先进先出队列,一层…...
网络编程——TCP和UDP详细讲解
文章目录 TCP/UDP全面详解什么是TCP和UDP?TCP如何保证可靠性?1. 序列号(Sequence Number)2. 确认应答(ACK)3. 超时重传(Timeout Retransmission)4. 窗口控制(Sliding Win…...
Qt多线程TCP服务器实现指南
在Qt中实现多线程TCP服务器可以通过为每个客户端连接分配独立的线程来处理,以提高并发性能。以下是一个分步实现的示例: 1. 自定义工作线程类(处理客户端通信) // workerthread.h #include <QObject> #include <QTcpSo…...
【经管数据】A股上市公司资产定价效率数据(2000-2023年)
数据简介:资产定价效率是衡量市场是否能够有效、准确地反映资产内在价值的重要指标。在理想的市场条件下,资产的市场价格应该与其内在价值保持一致,即市场定价效率达到最高。然而,在实际市场中,由于信息不对称、交易摩…...
打包 Python 项目为 Windows 可执行文件:高效部署指南
Hypackpy 是一款由白月黑羽开发的 Python 项目打包工具,它与 PyInstaller 等传统工具不同,通过直接打包解释器环境和项目代码,并允许开发者修改配置文件以排除不需要的内容,从而创建方便用户一键运行的可执行程序。以下是使用 Hyp…...
【QNX+Android虚拟化方案】138 - USB 底层传输原理
【QNX+Android虚拟化方案】138 - USB 底层传输原理 1. USB 数据包的格式2. 数据传输事务过程3. 四种传输类型3.1 批量传输3.2 中断传输3.3 实时传输3.4 控制传输4. USB 设备枚举过程4.1 Attached: 发送控制传输,读取设备描述符4.2 Power -> Default 这个状态无数据传输4.3 …...
QT6 源(66)篇三:阅读与注释类 QAbstractSpinBox ,这是螺旋框的基类,附上源码
(9)所有代码来自于头文件 qabstractspinbox . h : #ifndef QABSTRACTSPINBOX_H #define QABSTRACTSPINBOX_H#include <QtWidgets/qtwidgetsglobal.h> #include <QtWidgets/qwidget.h> #include <QtGui/qvalidator.h>/* QT_CONFIG宏实…...
MCP入门
什么是mcp mcp(model context protocol,模型上下文协议) 标准化协议:让大模型用统一的方式来调用工具,是llm和工具之间的桥梁 A2A:Agent-to-Agent协议 mcp通信机制 提供mcp服务查询的平台 具有工具合集…...
FPGA中级项目8———UART-RAM-TFT
FPGA中级项目8———UART-RAM-TFT UART串口我们学过,RAM IP核学过,TFT同样也学过。那如何将它们联合起来呢? 言简意赅:实现从串口写入图像到RAM并且由TFT显示屏输出! 首先第一步,便是要将UART_RX与RAM之间…...
Ocelot\Consul\.NetCore的微服务应用案例
案例资料链接:https://download.csdn.net/download/ly1h1/90733765 1.效果 实现两个微服务ServerAPI1和ServerAPI2的负载均衡以及高可用。具体原理,看以下示意图。 2.部署条件 1、腾讯云的轻量化服务器 2、WindowServer2016 3、.NETCore7.0 4、Negut …...
数值求解Eikonal方程的方法及开源实现
Eikonal方程是一类非线性偏微分方程,形式为 ( |\nabla u(x)| f(x) ),常见于波传播、几何光学、最短路径等问题。以下是数值求解Eikonal方程的方法及开源实现参考: 一、数值求解方法 有限差分法(FDM) 快速行进法&#…...
Http详解
🧱 一、从 TCP 三次握手到访问网页:两层过程 🧩 1. TCP 三次握手(网络传输层) 这是 建立连接 的前提,跟 HTTP 无关,但 HTTP 要依赖它。 举例:你打开浏览器访问 https://example.c…...
实验五 完整性
一、引言 本次上机实验的目的主要是让学生掌握数据库完整性的三大类型(实体完整性、参照完整性、用户自定义完整性),并通过实际建库建表和数据操作加深理解。 下面将为分别展示 student、course、sc 三个表的创建语句,并设置对应的…...
《原码、反码与补码:计算机中的数字奥秘》
🚀个人主页:BabyZZの秘密日记 📖收入专栏:C语言 🌍文章目入 一、原码:最直观的表示法1. 正数的原码2. 负数的原码3. 原码的特点 二、反码:原码的“反转”1. 正数的反码2. 负数的反码3. 反码的特…...
论文笔记——QWen2.5 VL
目录 引言架构创新数据整理与训练策略性能与基准测试精细感知能力应用与现实世界影响与现有模型比较结论 引言 视觉理解和自然语言处理的集成一直是人工智能研究的一个重要焦点,促成了日益复杂的视觉语言模型 (VLMs) 的发展。由阿里巴巴集团 Qwen 团队开发的 Qwe…...
前端HTML基础知识
1.HTML介绍 HTML(HyperText Markup Language,超文本标记语言)是构成网页的基本元素,是一种用于创建网页的标准化标记语言。HTML不是一种编程语言,而是一种标记语言,通过标签来描述网页的结构和内容。 超文本:超文本是…...
程序代码篇---ESP32云开发
文章目录 前言 前言 本文简单介绍了实现 ESP32-S3 传感器数据上传至云平台 手机远程控制电机 的完整方案,涵盖推荐的云平台、手机端。 一、推荐云平台及工具 云平台选择 阿里云 IoT 平台 优势:国内稳定、支持大规模设备接入、提供完整设备管理及安全…...
【C语言】文本操作函数fseek、ftell、rewind
一、fseek int fseek ( FILE * stream, long int offset, int origin ); 重新定位文件指针的位置,使其指向以origin为基准、偏移offset字节的位置。 成功返回0,失败返回非零值(通常为-1)。 origin有如下三种:分别是…...