AWS 专题学习 P8 (ECS、EKS、Lambda、CloudFront、DynamoDB)

news2024/11/26 18:45:36

文章目录

  • 什么是 Docker?
    • 操作系统上的 Docker
    • Docker 镜像存储
    • Docker vs. Virtual Machines
    • Docker 入门
    • AWS 中的 Docker Containers Management
  • Amazon ECS
    • EC2 Launch Type
    • Fargate Launch Type
    • ECS 的 IAM Roles
    • Load Balancer Integrations
    • Data Volumes (EFS)
    • ECS Service Auto Scaling
    • EC2 Launch Type – Auto Scaling EC2 实例
  • Amazon ECR
  • Amazon EKS 概述
    • Amazon EKS - Diagram
    • Amazon EKS – 节点类型
    • Amazon EKS – 数据卷
    • AWS App Runner
  • Serverless 概述
    • 什么是无服务?
    • AWS 中的无服务
    • 为什么选择 AWS Lambda
    • AWS Lambda 的优点
    • AWS Lambda 语言支持
    • AWS Lambda 集成
    • AWS Lambda 定价:示例
    • AWS Lambda 的限制(per region)
    • Customization At The Edge
    • CloudFront Functions vs. Lambda[@Edge ](/Edge )
      • CloudFront Functions
      • Lambda[@Edge ](/Edge )
    • 总结
      • CloudFront Functions
      • Lambda[@Edge ](/Edge )
    • 默认的 Lambda
    • VPC 中的 Lambda
    • 带有 RDS 代理的 Lambda
  • Amazon DynamoDB
    • DynamoDB - 基础知识
    • DynamoDB – 表示例
    • DynamoDB – 读/写容量模式
    • DynamoDB 加速器 (DAX)
      • DynamoDB 加速器 (DAX) vs. ElastiCache
    • DynamoDB – 流处理
      • DynamoDB 流
      • Kinesis Data Streams(较新)
    • DynamoDB Global Tables
    • DynamoDB – 生存时间 (TTL)
    • DynamoDB – 用于灾难恢复的备份
    • DynamoDB – 与 Amazon S3 集成

什么是 Docker?

  • Docker 是一个用于部署应用程序的软件开发平台
  • Docker 容器可以在任何操作系统上运行,应用程序运行在容器中
  • 应用程序运行过程相同,无论它们在何处运行 —> 行为可预测
  • 无兼容性问题,更易于维护和部署
  • 减少工作量
  • 使用案例:微服务架构、将应用程序从本地直接迁移到 AWS 云,…

操作系统上的 Docker

Screenshot 2023-08-06 at 12.50.20.png

Docker 镜像存储

  • Docker 镜像存储在 Docker Repositories
  • Docker Hub (https://hub.docker.com)
    • 公共存储库
    • 查找多种技术或操作系统的基础映像(例如 Ubuntu、MySQL…)
  • Amazon ECR(Amazon Elastic Container Registry)
    • 私有存储库
    • 公共存储库(Amazon ECR Public Gallery: https://gallery.ecr.aws)

Docker vs. Virtual Machines

  • Docker 趋近于一种虚拟化技术,但并不完全是
  • 区别:与主机共享资源 => 一台服务器上有许多容器

Screenshot 2023-08-06 at 12.54.47.png

Docker 入门

Screenshot 2023-08-06 at 12.55.19.png

AWS 中的 Docker Containers Management

  • Amazon 弹性容器服务 (Amazon ECS)
    • Amazon 自己的容器平台
  • Amazon Elastic Kubernetes 服务 (Amazon EKS)
    • Amazon 托管的 Kubernetes(开源)
  • AWS Fargate
    • Amazon 自己的无服务容器平台
    • 可与 ECS 和 EKS 配合使用
  • Amazon ECR:
    • 存储容器的镜像

Amazon ECS

EC2 Launch Type

  • ECS = 弹性容器服务
  • 在 AWS 上启动 Docker 容器 = 在 ECS 集群上启动 ECS Tasks
  • EC2 启动类型:用户必须配置和维护基础设施(EC2 实例)
  • 每个 EC2 实例必须运行 ECS Agent 才能在 ECS 集群中注册
  • AWS 负责启动/停止容器
    在这里插入图片描述

Fargate Launch Type

  • 在 AWS 上启动 Docker 容器
  • 用户无需配置基础设施(无需管理 EC2 实例)
  • 一切都是无服务的!
  • 用户只需创建任务定义
  • AWS 只是根据用户需要的 CPU/RAM 为用户运行 ECS Tasks
  • 如果要扩展,只需增加 Task 数量即可。 简单 —— 不会有更多的 EC2 实例
    在这里插入图片描述

ECS 的 IAM Roles

  • EC2 实例配置文件(仅限 EC2 启动类型):
    • 由 ECS Agent 使用
    • 对 ECS 服务进行 API 调用
    • 将容器日志发送到 CloudWatch Logs
    • 从 ECR 拉取 Docker 镜像
    • 引用 Secrets Manager 或 SSM 参数存储中的敏感数据
  • ECS Task Role:
    • 允许每个任务具有特定的角色
    • 对不同 ECS 服务使用不同的角色
    • Task Role 是在 Task Definition 中定义
      在这里插入图片描述

Load Balancer Integrations

  • 应用程序负载均衡器(ALB):支持并适用于大多数用例
  • 网络负载均衡器(NLB):建议仅用于高吞吐量/高性能用例,或将其与 AWS Private Link 配对
  • 弹性负载均衡器(ELB):支持但不推荐(无高级功能 - 如 Fargate)

Screenshot 2023-08-06 at 13.08.52.png

Data Volumes (EFS)

  • 将 EFS 文件系统挂载到 ECS Tasks 上
  • 适用于 EC2 和 Fargate 启动类型
  • 在任何 AZ 中运行的任务将共享 EFS 文件系统中的相同数据
  • Fargate + EFS = Serverless
  • 使用案例:EFS 作为多可用区共享存储,实现容器的持久化
  • 注意:
    • Amazon S3 无法作为文件系统安装
      Screenshot 2023-08-06 at 13.11.44.png

ECS Service Auto Scaling

  • 自动增加/减少所需的 ECS Tasks 数量
  • ECS 实现自动扩展的方式是使用 AWS Application Auto Scaling 服务
    • ECS 服务平均 CPU 利用率
    • ECS 服务 RAM 上的 平均内存利用率规模
    • 每个目标的 ALB 请求计数 (来自 ALB 的指标)
  • 目标跟踪(Target Tracking): 根据特定 CloudWatch 指标的目标值进行扩展
  • 步进扩展(Step Scaling): 根据指定的 CloudWatch 警报进行扩展
  • 计划扩展(Scheduled Scaling): 根据指定日期/时间进行扩展(可预测的变化)
  • ECS Service Auto Scaling(任务级别)≠ EC2 Auto Scaling(EC2 实例级别)
  • Fargate Auto Scaling 更容易设置(因为无服务)

EC2 Launch Type – Auto Scaling EC2 实例

  • 通过添加底层 EC2 实例来适应 ECS 服务扩展
  • Auto Scaling Group (ASG)
    • 根据CPU 利用率扩展用户的 ASG
    • 随着时间的推移添加 EC2 实例
  • ECS Cluster Capacity Provider
    • 用于自动配置和扩展 ECS Tasks的基础设施
    • 通常与 ASG 配合使用
    • 当用户缺少容量(CPU、RAM…)时添加 EC2 实例

ECS Scaling - Service CPU 使用示例
在这里插入图片描述

Event Bridge 调用的 ECS Tasks
在这里插入图片描述

Event Bridge Schedule 调用的 ECS Tasks
在这里插入图片描述

ECS – SQS 队列示例
在这里插入图片描述

Amazon ECR

  • ECR = Elastic Container Registry
  • 在 AWS 上存储和管理 Docker 映像
  • 私有和公共存储库(Amazon ECR 公共库 https://gallery.ecr.aws)
  • 与 ECS 完全集成,由 Amazon S3 支持
  • 访问通过 IAM 控制(权限错误 => 策略)
  • 支持镜像漏洞扫描、版本控制、镜像标签、镜像生命周期…
    在这里插入图片描述

Amazon EKS 概述

  • Amazon EKS = Amazon Elastic Kubernetes Service
  • 这是在 AWS 上启动托管 Kubernetes 集群的一种方法
  • Kubernetes 是一个开源系统,用于自动部署、扩展和管理容器化(通常是 Docker)应用程序
  • EKS 是 ECS 的一种替代方案,目标类似但 API 不同
  • EKS 支持 EC2(如果要部署工作节点),也支持 Fargate(如果要部署无服务器容器)。
  • 使用案例:如果用户的公司已在本地或其他云中使用 Kubernetes,并且希望使用 Kubernetes 迁移到 AWS
  • Kubernetes 与云无关(可以在任何云中使用 – Azure、GCP…)
  • 对于多个区域,需要在每个区域部署一个 EKS 集群
  • 使用 CloudWatch Container Insights 收集日志和指标

Amazon EKS - Diagram

Screenshot 2023-08-06 at 13.22.03.png

Amazon EKS – 节点类型

  • 受托管节点组
    • 为用户创建和管理节点(EC2 实例)
    • 节点是EKS 管理的ASG 的一部分
    • 支持按需实例或 Spot 实例
  • 自我管理节点
    • 由用户创建并注册到 EKS 集群并由 ASG 管理的节点
    • 用户可以使用预构建的 AMI - Amazon EKS 优化的 AMI
    • 支持按需实例或 Spot 实例
  • AWS Fargate
    • 无需维护; 没有管理节点

Amazon EKS – 数据卷

  • 需要在 EKS 集群上指定 StorageClass 清单
  • 利用 Container Storage Interface (CSI) 兼容的驱动程序
  • 支持…
    • Amazon EBS
    • Amazon EFS(与 Fargate 配合使用)
    • Amazon FSx for Lustre
    • 适用于 NetApp ONTAP 的 Amazon FSx

AWS App Runner

  • 完全托管的服务,可以轻松大规模部署 Web 应用程序和 API
  • 无需基础架构经验
  • 从源代码或容器映像开始
  • 自动构建和部署 Web 应用程序
  • 自动扩展、高可用性、负载均衡器、加密
  • VPC 访问支持
  • 连接到数据库、缓存和消息队列服务
  • 使用案例:Web 应用程序、API、微服务、快速生产部署

Serverless 概述

什么是无服务?

  • 无服务是一种新范式,开发人员无需再管理服务器…
  • 只部署xx代码、xx功能!
  • 最初,无服务 == FaaS(函数即服务)
  • 无服务由 AWS Lambda 开创,但现在还包括任何托管内容:“数据库、消息传递、存储等”。

AWS 中的无服务

  • AWS Lambda
  • DynamoDB
  • AWS Cognito
  • AWS API Gateway
  • Amazon S3
  • AWS SNS & SQS
  • AWS Kinesis Data Firehose
  • Aurora Serverless
  • Step Functions
  • Fargate
    Screenshot 2023-08-06 at 13.22.33.png |

为什么选择 AWS Lambda

  • Amazon EC2
    • 云中的虚拟服务器
    • 受 RAM 和 CPU 限制
    • 连续运行
    • 扩展意味着需要人工干预去添加/删除服务器
  • Amazon Lambda
    • 虚拟功能——无需管理服务器!
    • 受时间限制 - 执行时间短
    • 按需运行
    • 缩放是自动的!

AWS Lambda 的优点

  • 轻松定价:
    • 按请求和计算时间付费
    • 提供免费的使用额度,包括1,000,000个AWS Lambda请求和400,000 GB的计算时间
  • 与整个 AWS 服务套件集成
  • 与多种编程语言集成
  • 通过AWS CloudWatch 轻松监控
  • 轻松为函数获取更多资源(高达 10GB RAM!)
  • 增加 RAM 也能提高CPU和网络性能

AWS Lambda 语言支持

  • Node.js (JavaScript)
  • Python
  • Java(兼容 Java 8)
  • C#(.NET 核心)
  • Go 语言
  • C# / Powershell
  • 红宝石
  • 自定义运行时 API(社区支持,例如 Rust)
  • Lambda 容器映像
    • 容器映像必须实现Lambda Runtime API
    • ECS / Fargate 是运行任意 Docker 镜像的首选

AWS Lambda 集成

Main ones
Screenshot 2023-08-06 at 13.24.42.png
示例:无服务缩略图创建
Screenshot 2023-08-06 at 13.25.22.png
示例:无服务 CRON 作业
Screenshot 2023-08-06 at 13.26.07.png

AWS Lambda 定价:示例

  • 用户可以在此处找到总体定价信息:
    https://aws.amazon.com/lambda/pricing/
  • 按调用量付费:
    • 前 1,000,000 个请求免费
    • 此后每 100 万个请求 0.20 美元(每个请求 0.0000002 美元)
  • 按持续时间付费:(以 1 毫秒为增量)
    • 每月免费 400,000 GB-秒 的计算时间
      • exp: 400,000 秒(如果函数为 1GB RAM)
      • exp: 3,200,000 秒(如果函数为 128 MB RAM)
    • 此后 600,000 GB 秒 1.00 美元
  • 运行 AWS Lambda 通常非常便宜,因此非常受欢迎

AWS Lambda 的限制(per region)

  • 执行:
    • 内存分配:128 MB ~ 10GB(1 MB 增量)
    • 最长执行时间:900 秒(15 分钟)
    • 环境变量 (4 KB)
    • “功能容器”中的磁盘容量(/tmp):512 MB 至 10GB
    • 并发执行:1000(可以增加)
  • 部署:
    • Lambda 函数部署大小(压缩的.zip):50 MB
    • 未压缩部署的大小(代码+依赖项):250 MB
    • 可以使用/tmp目录在启动时加载其他文件
    • 环境变量的大小:4 KB

Customization At The Edge

  • 许多现代应用程序在边缘执行某种形式的逻辑
  • 边缘功能:
    • 用户编写并附加到 CloudFront 分配的代码
    • 靠近用户运行以最大限度地减少延迟
  • CloudFront 提供两种类型:CloudFront Functions 和 Lambda@Edge
  • 用户无需管理全球部署的任何服务器
  • 使用案例:定制CDN 内容
  • 仅按使用量付费
  • 完全无服务

CloudFront Functions vs. Lambda@Edge

Screenshot 2023-08-06 at 13.26.44.png
用例:

  • 网站安全和隐私
  • 边缘的动态 Web 应用程序
  • 搜索引擎优化(SEO)
  • 智能路由跨源和数据中心
  • 边缘机器人缓解
  • 实时图像转换
  • A/B 测试
  • 用户身份验证和授权
  • 用户优先级
  • 用户跟踪和分析

CloudFront Functions

  • 用 JavaScript 编写的轻量级函数
  • 适用于大规模、延迟敏感的 CDN 定制
  • 亚毫秒级启动时间,每秒数百万个请求
  • 用于更改查看器请求和响应:
    • 查看者请求:CloudFront 收到查看者的请求后
    • 查看器响应:在 CloudFront 将响应转发给查看器之前
  • CloudFront 的本机功能(完全在 CloudFront 内管理代码)

Lambda@Edge

  • 用 NodeJS 或 Python 编写的 Lambda 函数
  • 可扩展到每秒 1000 个请求
  • 用于更改 CloudFront 请求和响应:
    • 查看者请求:CloudFront 收到查看者的请求后
    • 源请求:在 CloudFront 将请求转发到源之前
    • 源响应:CloudFront 收到来自源的响应后
    • 查看器响应:在 CloudFront 将响应转发给查看器之前
  • 在一个 AWS 区域 (us-east-1) 中编写用户的函数,然后 CloudFront 复制到其位置

总结

CloudFront Functions

  • 缓存键规范化
    • 转换请求属性(标头、cookie、查询字符串、URL)以创建最佳缓存键
  • Header 操作
    • 在请求或响应中插入/修改/删除 HTTP 标头
  • URL 重写或重定向
  • 请求身份验证和授权
    • 创建并验证用户生成的令牌(例如 JWT)以允许/拒绝请求
      在这里插入图片描述

Lambda@Edge

  • 较长的执行时间(几毫秒)
  • 可调节CPU或内存
  • 用户的代码依赖于第三个库(例如,用于访问其他 AWS 服务的 AWS SDK)
  • 网络访问以使用外部服务进行处理
  • 文件系统访问或对 HTTP 请求正文的访问
    Screenshot 2023-08-06 at 13.30.38.png

默认的 Lambda

  • 默认情况下,用户的 Lambda 函数在用户自己的 VPC 外部(在 AWS 拥有的 VPC 中)启动
  • 因此,它无法访问用户的VPC 中的资源(RDS、ElastiCache、内部ELB…)

Screenshot 2023-08-06 at 13.32.37.png

VPC 中的 Lambda

  • 用户必须定义 VPC ID、子网和安全组
  • Lambda 将在用户的子网中创建 ENI(弹性网络接口)

Screenshot 2023-08-06 at 13.32.59.png

带有 RDS 代理的 Lambda

  • 如果 Lambda 函数直接访问用户的数据库,它们可能会在高负载下打开太多连接
  • RDS 代理
    • 通过池化和共享数据库连接来提高可扩展性
    • 通过减少 66% 的故障转移时间并保留连接来提高可用性
    • 通过在 Secrets Manager 中强制执行 IAM 身份验证和存储凭证来提高安全性
  • Lambda 函数必须部署在用户的 VPC 中,因为 RDS Proxy 永远无法公开访问

Screenshot 2023-08-06 at 13.33.42.png

Amazon DynamoDB

  • 完全托管、高度可用,可跨多个可用区进行复制
  • NoSQL 数据库,具有事务支持
  • 可扩展到海量工作负载、分布式数据库
  • 每秒数百万个请求、数万亿行、数百TB 存储
  • 快速且一致的性能(个位数毫秒)
  • 与 IAM 集成以实现安全、授权和管理
  • 低成本和自动扩展功能
  • 无需维护或修补,始终可用
  • 标准和不频繁访问 (IA) 表类

DynamoDB - 基础知识

  • DynamoDB 由表组成
  • 每个表都有一个主键(必须在创建时决定)
  • 每个表可以有无限数量的项目(= 行)
  • 每个项目都有属性(可以随着时间的推移添加 - 可以为空)
  • 项目的最大大小为 400KB
  • 支持的数据类型有:
    • 标量类型 – 字符串、数字、二进制、布尔值、空值
    • 文档类型 – 列表、地图
    • 集合类型 – 字符串集合、数字集合、二进制集合
  • 因此,在 DynamoDB 中,用户可以快速发展架构

DynamoDB – 表示例

Screenshot 2023-08-06 at 13.34.14.png

DynamoDB – 读/写容量模式

  • 控制管理表容量的方式(读/写吞吐量)
  • 配置模式(默认)
    • 用户指定每秒读/写的数量
    • 用户需要提前规划容量
    • 支付预配置的读取容量单位 (RCU) 和写入容量单位 (WCU) 费用
    • 可以为 RCU 和 WCU 添加自动缩放模式
  • 点播模式
    • 读/写会根据用户的工作负载自动扩展/缩减
    • 无需进行容量规划
    • 按使用量付费,价格更高 ($$$)
    • 非常适合不可预测的工作负载、陡峭的突然峰值

Screenshot 2023-08-06 at 13.34.42.png

DynamoDB 加速器 (DAX)

  • DynamoDB 的完全托管、高可用性、无缝内存缓存
  • 通过缓存帮助解决读取拥塞
  • 缓存数据的微秒级延迟
  • 不需要修改应用程序逻辑(与现有的DynamoDB API 兼容)
  • 5 分钟 TTL 缓存(默认)

DynamoDB 加速器 (DAX) vs. ElastiCache

Screenshot 2023-08-06 at 13.35.08.png

DynamoDB – 流处理

  • 表中项目级修改(创建/更新/删除)的有序流
  • 用例:
    • 实时响应变化(向用户发送欢迎电子邮件)
    • 实时使用情况分析
    • 插入衍生表
    • 实施跨区域复制
    • 对 DynamoDB 表的更改调用 AWS Lambda

DynamoDB 流

  • 24 小时保留期
  • 消费者数量有限
  • 使用 AWS Lambda 触发器或 DynamoDB Stream Kinesis 适配器进行处理

Kinesis Data Streams(较新)

  • 保留 1 年
  • 消费者数量多
  • 使用 AWS Lambda、Kinesis Data Analytics、Kineis Data Firehose、AWS Glue Streaming ETL 进行处理…

DynamoDB 流
Screenshot 2023-08-06 at 13.35.51.png

DynamoDB Global Tables

  • 使 DynamoDB 表可在多个区域中以低延迟进行访问
  • 主动-主动复制
  • 应用程序可以读取和写入任何区域的表
  • 必须启用 DynamoDB Streams 作为先决条件

Screenshot 2023-08-06 at 13.36.36.png

DynamoDB – 生存时间 (TTL)

  • 在过期时间戳后自动删除项目
  • 使用案例:通过仅保留当前项目来减少存储的数据、遵守监管义务、Web 会话处理…

Screenshot 2023-08-06 at 13.37.17.png

DynamoDB – 用于灾难恢复的备份

  • 使用时间点恢复 (PITR) 进行连续备份
    • 可选择在过去 35 天内启用
    • 时间点恢复到备份窗口内的任何时间
    • 恢复过程创建一个新表
  • 按需备份
    • 完整备份可长期保留,直至明确删除
    • 不影响性能或延迟
    • 可以在AWS Backup 中进行配置和管理(支持跨区域复制)
    • 恢复过程创建一个新表

DynamoDB – 与 Amazon S3 集成

  • 导出到S3(必须启用PITR)
    • 适用于过去 35 天内的任何时间点
    • 不影响表的读取容量
    • 在DynamoDB 之上执行数据分析
    • 保留快照以供审核
    • 在导入回 DynamoDB 之前对 S3 数据进行 ETL
    • 以DynamoDB JSON 或ION 格式导出
  • 导入到 S3
    • 导入 CSV、DynamoDB JSON 或 ION 格式
    • 不消耗任何写入容量
    • 创建一个新表
    • 导入错误记录在CloudWatch Logs 中

Screenshot 2023-08-06 at 13.37.52.png
示例:构建无服务 APIScreenshot 2023-08-06 at 13.38.12.png

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

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

相关文章

代码随想录算法训练营第三天 | 链表理论基础 203.移除链表元素 707.设计链表 206.反转链表

链表理论基础 链表是一种通过指针串连在一起的线性结构,每一个节点由两部分组成,一个是数据域,一个是指针域(存放指向下一个节点的指针)。最后一个节点的指针指向 null。链表的存储方式:数组在内存中是连续…

TypeScript教程(一)在vscode中的配置TypeScript环境

TypeScript教程(一)在vscode中的配置TypeScript环境 文章目录 TypeScript教程(一)在vscode中的配置TypeScript环境一、前言二、具体步骤1、Node.js安装2、TypeScript安装3、helloworld 一、前言 未来的开发者们请上座&#xff0c…

EasyRecovery2024电脑数据恢复工具好不好用?

Ontrack是我们综述中的第一个产品,由于该软件的功效和广度,我认为它完全基于业务。有一个具有基本功能的免费版本和一系列付费版本,不仅可以恢复文件(免费版和家庭版),还可以创建磁盘映像/从 CD 和 DVD 恢复…

如何自学Python:一份详细的指南

📝个人主页:五敷有你 🔥系列专栏:有感而谈⛺️稳中求进,晒太阳 引言 Python是一种广泛使用的高级编程语言,以其简洁明了的语法和强大的功能而受到许多程序员的喜爱。无论是数据分析、网络开发&#…

基于JavaWeb+SSM+Vue基于微信小程序的在线投稿系统的设计和实现

基于JavaWebSSMVue基于微信小程序的在线投稿系统的设计和实现 滑到文末获取源码Lun文目录前言主要技术系统设计功能截图 滑到文末获取源码 Lun文目录 目录 1系统概述 1 1.1 研究背景 1 1.2研究目的 1 1.3系统设计思想 1 2相关技术 2 2.1微信小程序 2 2.2 MYSQL数据库 3 2.3 u…

11、Kafka ------ Kafka 核心API 及 生产者API 讲解

目录 Kafka核心API 及 生产者API讲解★ Kafka的核心APIKafka包含如下5类核心API: ★ 生产者APIKafka 的API 文档 ★ 使用生产者API发送消息 Kafka核心API 及 生产者API讲解 官方文档 ★ Kafka的核心API Kafka包含如下5类核心API: Producer API&#x…

ESP32-HTTP_webServer库(Arduino)

ESP32-HTTP 介绍 ESP32是一款功能强大的微控制器,具有丰富的网络和通信功能。其中之一就是支持HTTP协议,这使得ESP32可以用于创建Web服务器。 HTTP是什么? HTTP(Hyper Text Transfer Protocol),即超文本传…

如何快速打开github

作为一个资深码农,怎么能不熟悉全球最大的同性交友社区——github呢,但头疼的是github有时能打开,有时打不开,这是怎么回事? 其实问题出在github.com解析DNS上,并不是需要FQ。下面提供一个方法,…

前端打同一个包可以从测试晋升到生产的配置方案

前端打同一个包从测试晋升到生产环境的方案,是一种高效、可靠且易于维护的部署方式。在这种方案中,前端代码在开发完成后,经过测试验证无误后,可以直接打包部署到生产环境,无需进行额外的配置或修改。这样可以减少部署…

HarmonyOS 应用开发入门

HarmonyOS 应用开发入门 前言 DevEco Studio Release版本为:DevEco Studio 3.1.1。 Compile SDK Release版本为:3.1.0(API 9)。 构建方式为 HVigor,而非 Gradle。 最新版本已不再支持 (”Java、JavaScrip…

已解决Error:AttributeError: module ‘numpy‘ has no attribute ‘complex‘

文章目录 引言报错分析解决方案1:降低NumPy版本解决方案2:更改NumPy源码 结尾 引言 在Python编程的世界里,NumPy无疑占据着举足轻重的地位,它承担着处理大规模数值计算的重要任务。然而,与所有强大工具一样&#xff0…

晶振负载电容公式,怎么计算?

晶振,或称晶体振荡器,是电子设备中的关键元件,尤其在时序电路中扮演着重要角色。晶振的性能直接影响到整个电路的稳定性和精度。在晶振设计中,负载电容是一个重要的参数。理解如何计算负载电容对于正确配置和使用晶振至关重要。今…

Find My卡片正成为消费电子香饽饽,伦茨科技ST17H6x可以帮到您

今年CES许多公司发布支持苹果Find My的卡片产品,这种产品轻薄可充电,放在钱包、背包或者手提包可以防丢查找,在智能化加持下,防丢卡片使得人们日益关心自行车的去向。最新的防丢卡片与苹果Find My结合,智能防丢&#x…

Chatgpt+Comfyui绘图源码说明及本地部署文档

其他文档地址: ChatgptComfyui绘图源码运营文档 ChatgptComfyui绘图源码线上部署文档 一、源码说明 1、源码目录说明 app_home:app官网源码chatgpt-java:管理后台服务端源码、用户端的服务端源码chatgpt-pc:电脑网页前端源码cha…

Halcon 边缘提取

文章目录 算子Halcon edges_image 示例Halcon frei_amp 示例Halcon kirsch_amp示例Halcon sobel_amp示例Halcon sobel_amp 算子示例Halcon sobel_dir 算子示例Halcon close_edges关闭图像间隙示例Halcon close_edges_length关闭图像间隙示例 算子 edges_image 对于图像进行边缘…

64 C++对象模型探索。类对象占用空间问题分析

0.没有任何成员变量的空类,实际上占用空间为1字节。 这是因为当你的使用代码实例化一个类的时候,tea对象就有了空间,&tea是有地址的,那么你这个地址至少要占用1个字节才合理。 Teacher tea; 就像我们买房子,你的…

爬虫接口获取外汇数据(汇率,外汇储备,贸易顺差,美国CPI,M2,国债利率)

akshare是一个很好用的财经数据api接口,完全免费!!和Tushare不一样。 除了我标题显示的数据外,他还提供各种股票数据,债券数据,外汇,期货,宏观经济,基金,银行…

JDK 动态代理(Spring AOP 的原理)(面试重点)

代理模式 也叫委托模式.定义:为其他对象提供⼀种代理以控制对这个对象的访问.它的作⽤就是通过提供⼀个代理类,让我们 在调⽤⽬标⽅法的时候,不再是直接对⽬标⽅法进⾏调⽤,⽽是通过代理类间接调⽤,在某些情况下,⼀个对象不适合或者不能直接引⽤另⼀个对…

Stream toList不能滥用以及与collect(Collectors.toList())的区别

Stream toList()返回的是只读List原则上不可修改,collect(Collectors.toList())默认返回的是ArrayList,可以增删改查 1. 背景 在公司看到开发环境突然发现了UnsupportedOperationException 报错,想到了不是自己throw的应该就是操作collection不当。 发…

Jetbrains Writerside 使用教程

系列文章目录 前言 一、入门 Writerside 是基于 IntelliJ 平台的 JetBrains 集成开发环境。使用它可以编写、构建、测试和发布技术文档。 如果你想将 Writerside 作为另一个 JetBrains IDE 的插件,请参阅 Writerside 作为插件。 1.1 安装 Writerside…