《计算机网络简易速速上手小册》第7章:云计算与网络服务(2024 最新版)

在这里插入图片描述

文章目录

  • 7.1 云服务模型(IaaS, PaaS, SaaS)- 你的技术魔法盒
    • 7.1.1 基础知识
    • 7.1.2 重点案例:构建和部署 Python Web 应用
      • 实现步骤
      • 具体操作
        • 步骤1:创建 Flask Web 应用
        • 步骤2:准备应用部署
    • 7.1.3 拓展案例1:使用 IaaS 托管数据库
      • **实现步骤**
      • 具体操作
        • 准备工作
        • Python 脚本示例
    • 7.1.4 拓展案例2:利用 SaaS 工具进行项目管理
      • 实现步骤
      • 具体操作
        • 准备工作
        • Python 脚本示例
  • 7.2 虚拟化技术 - 数字世界的变形金刚
    • 7.2.1 基础知识
    • 7.2.2 重点案例:使用 Python 管理 VMware 虚拟机
      • 准备工作
      • Python 脚本示例
    • 7.2.3 拓展案例1:使用 Python 和 VirtualBox 进行虚拟机快照管理
    • 7.2.4 拓展案例2:使用 Python 实现基于 KVM 的虚拟机动态迁移
      • 准备工作
      • Python 脚本示例
      • 注意事项
  • 7.3 云安全和隐私 - 守护云端的宝藏
    • 7.3.1 基础知识
    • 7.3.2 重点案例:使用 Python 实现 AWS S3 存储桶的加密
      • 准备工作
      • Python 脚本示例
    • 7.3.3 拓展案例1:使用 Python 进行 SSL/TLS 证书验证
        • 准备工作
      • Python 脚本示例
    • 7.3.4 拓展案例2:使用 Python 实现简单的入侵检测系统
      • 准备工作
      • Python 脚本示例

7.1 云服务模型(IaaS, PaaS, SaaS)- 你的技术魔法盒

在这个数字化时代,云服务模型就像是技术界的魔法盒,无论你是一名开发者、企业老板,还是只想在互联网上留下自己足迹的普通人,总有一款服务适合你。让我们深入了解这三种服务模型,并通过实用案例,探索它们如何在现实世界中发挥作用。

7.1.1 基础知识

  • IaaS(基础设施即服务):提供虚拟化的计算资源,如虚拟机、存储空间和网络。它就像是在线的计算机硬件店,你可以租用所需的硬件资源,自由地在其上安装操作系统和应用。
  • PaaS(平台即服务):在IaaS之上增加了一层,提供了软件开发的平台,包括操作系统、数据库、开发工具等。它就像是提供了一个预装了各种工具的工作台,让开发者能够专注于创建软件。
  • SaaS(软件即服务):向最终用户提供完全功能的在线应用。用户无需安装任何东西,直接通过浏览器访问和使用软件。这就像是网络上的应用商店,你可以直接使用软件,而无需关心其背后的技术细节。

7.1.2 重点案例:构建和部署 Python Web 应用

假设你是一名Python开发者,想要构建一个Web应用,并将其部署到云上。这个案例将展示如何使用PaaS平台来实现这一目标。

实现步骤

  1. 开发Web应用:使用Flask或Django这样的Python框架开发你的Web应用。
  2. 选择PaaS提供商:选择如Heroku、Google App Engine或Azure App Service这样的PaaS提供商。
  3. 部署应用:遵循所选PaaS提供商的指南,将你的应用部署到云上。

让我们以主案例:构建和部署一个Python Web应用到PaaS平台为例,提供一个实用的Python示例。我们将使用Flask框架来创建一个简单的Web应用,并介绍如何将它部署到Heroku——一个流行的PaaS提供商。

具体操作

步骤1:创建 Flask Web 应用

首先,确保你已经安装了Flask。如果没有,请通过以下命令安装:

pip install Flask gunicorn

然后,创建一个名为app.py的文件,并添加以下代码来创建一个基本的Web应用:

from flask import Flask

app = Flask(__name__)

@app.route('/')
def home():
    return 'Hello, Cloud!'

if __name__ == '__main__':
    app.run(debug=True)

这段代码创建了一个简单的Flask应用,它在根路径/上响应一个简单的消息"Hello, Cloud!"。

步骤2:准备应用部署

为了将你的应用部署到Heroku,请遵循以下步骤:

  1. 创建requirements.txt文件:这个文件列出了你的应用依赖的所有Python库。你可以通过运行pip freeze > requirements.txt命令来创建它。

  2. 创建Procfile:Heroku需要一个名为Procfile的文件,来知道如何启动你的应用。在Procfile中添加以下内容:

    web: gunicorn app:app
    
  3. 初始化一个Git仓库:Heroku使用Git进行部署。在应用的根目录下运行以下命令来初始化一个仓库:

    git init
    git add .
    git commit -m "Initial commit"
    
  4. 安装Heroku CLI:如果你还没有安装Heroku命令行工具,从Heroku的官网上下载并安装它。

  5. 创建Heroku应用:登录到你的Heroku账户,并通过运行以下命令创建一个新的应用:

    heroku login
    heroku create
    
  6. 部署应用到Heroku:使用Git将你的应用推送到Heroku:

    git push heroku master
    
  7. 访问你的应用:部署完成后,Heroku会提供一个URL来访问你的应用。在浏览器中打开这个URL,你应该会看到"Hello, Cloud!"的消息。

通过以上步骤,你已经成功地将一个简单的 Python Web 应用部署到了 Heroku 平台。这个过程展示了 PaaS 的便利性,开发者可以专注于应用的开发,而不用担心底层的基础设施和运行环境的配置。

7.1.3 拓展案例1:使用 IaaS 托管数据库

在这个案例中,我们将使用IaaS服务来托管一个数据库,比如MySQL或PostgreSQL,为你的应用提供数据存储。

实现步骤

  1. 选择IaaS提供商:如Amazon EC2、Google Compute Engine或Microsoft Azure VMs。
  2. 创建虚拟机:在所选的IaaS平台上创建一个虚拟机实例。
  3. 安装数据库:在虚拟机上安装并配置数据库软件。
  4. 连接应用:将你的应用配置为使用这个数据库。

为了进一步探索云服务模型的实用性,我们将提供两个拓展案例的Python脚本示例。这些示例将模拟使用IaaS托管数据库和利用SaaS工具进行项目管理的基本流程。

具体操作

在这个案例中,我们将演示如何使用Python脚本连接到一个在云基础设施(如Amazon EC2或Google Compute Engine上)托管的MySQL数据库。这里假设你已经在云平台上设置了MySQL数据库,并且具有访问它的权限。

准备工作
  1. 确保你的Python环境中安装了mysql-connector-python库。如果未安装,请通过以下命令安装:

    pip install mysql-connector-python
    
  2. 准备好连接数据库所需的信息,包括主机地址、数据库名、用户名和密码。

Python 脚本示例
import mysql.connector

# 替换以下变量为你的数据库连接信息
db_host = "your_database_host"
db_name = "your_database_name"
db_user = "your_database_user"
db_password = "your_database_password"

try:
    # 连接到数据库
    conn = mysql.connector.connect(
        host=db_host,
        database=db_name,
        user=db_user,
        password=db_password
    )
    
    cursor = conn.cursor()
    cursor.execute("SELECT VERSION()")
    
    version = cursor.fetchone()
    print("Database version : {}".format(version[0]))
    
except mysql.connector.Error as err:
    print(f"Error: {err}")
    
finally:
    if conn.is_connected():
        cursor.close()
        conn.close()
        print("MySQL connection is closed")

这个脚本尝试连接到一个 MySQL 数据库,并查询数据库的版本号来验证连接成功。

7.1.4 拓展案例2:利用 SaaS 工具进行项目管理

想象你正在管理一个分布在全球的开发团队,需要一个工具来协调工作。使用SaaS产品,如Trello、Asana或Jira,可以极大地简化项目管理。

实现步骤

  1. 选择SaaS工具:根据你的团队规模和项目需求,选择合适的项目管理工具。
  2. 配置工作流:根据项目需求,配置看板、任务列表和工作流。
  3. 邀请团队成员:将你的团队成员添加到项目中,分配任务。

具体操作

对于利用SaaS工具进行项目管理的案例,我们将展示如何使用Python脚本调用Trello的API来自动化创建看板(boards)和任务卡片(cards)。假设你已经有了Trello账号,并获取了API密钥和令牌。

准备工作
  1. 获取Trello API密钥和令牌。访问Trello的API介绍页面获取详细指南。

  2. 安装requests库来发送HTTP请求:

    pip install requests
    
Python 脚本示例
import requests

# 替换以下变量为你的Trello API信息
api_key = "your_trello_api_key"
token = "your_trello_token"
board_name = "Project Management Board"

# 创建一个新的看板
url = "https://api.trello.com/1/boards/"
query = {
    'name': board_name,
    'key': api_key,
    'token': token
}

response = requests.post(url, params=query)

if response.status_code == 200:
    board_id = response.json()["id"]
    print(f"Board '{board_name}' created successfully with ID {board_id}")
else:
    print("Failed to create board")

# 在这里,你可以进一步添加卡片或列表到看板,根据需要扩展脚本

这个简单的脚本展示了如何使用 Trello 的 API 创建一个新的项目管理看板。通过扩展这个脚本,你可以自动化管理项目的许多方面,如添加任务卡片、分配任务给团队成员等。

通过上述两个拓展案例,我们看到了云服务模型(IaaS 和 SaaS)在实际生产环境中的应用,展示了 Python 在云服务集成和自动化方面的强大能力。这些案例只是入门级示例,实际应用中可能需要处理更复杂的逻辑和安全性问题。

这些案例展示了云服务模型如何满足不同层次的技术需求。从直接使用SaaS应用简化日常任务,到利用PaaS平台快速开发和部署应用,再到通过IaaS提供的灵活性和控制力来管理底层基础设施,云服务为现代技术工作提供了广泛的支持。通过这些案例,我们可以看到,无论是开发者、项目经理还是企业,都能在云服务的帮助下,更高效地实现目标。

在这里插入图片描述


7.2 虚拟化技术 - 数字世界的变形金刚

虚拟化技术是现代云计算和网络服务不可或缺的一部分,它允许我们在单个物理硬件上运行多个虚拟机(VMs),每个虚拟机都可以拥有独立的操作系统和应用程序。这种技术不仅提高了资源的利用率,还增加了系统的灵活性和可扩展性。让我们深入探讨虚拟化技术的魔法,并通过实际的案例看看如何利用 Python 来发挥它的威力。

7.2.1 基础知识

  • 虚拟化类型:最常见的虚拟化类型包括服务器虚拟化、网络虚拟化和存储虚拟化。服务器虚拟化允许多个操作系统在同一台物理服务器上同时运行;网络虚拟化将物理网络资源抽象化,以创建虚拟的网络接口;存储虚拟化则是将来自不同物理存储设备的存储资源汇聚在一起,形成一个统一的存储池。
  • 虚拟化技术的优势:包括成本节约、提高灵活性和可扩展性、简化管理和增强安全性。
  • 常用工具:如 VMware、VirtualBox 和 KVM,都是流行的虚拟化解决方案,它们提供了创建和管理虚拟机的平台。

7.2.2 重点案例:使用 Python 管理 VMware 虚拟机

在这个案例中,我们将展示如何使用 Python 脚本通过 VMware vSphere API 来管理 VMware 虚拟机。这包括创建、启动和停止虚拟机等操作。

准备工作

  1. 安装必要的 Python 库:pyVmomi 是 VMware vSphere API 的 Python 绑定,可用于与 vSphere 交云。

    pip install pyvmomi
    
  2. 确保你有 VMware vCenter Server 的访问权限,并获取必要的连接信息,如服务器地址、用户名和密码。

Python 脚本示例

由于与 VMware vSphere API 的交互较为复杂,这里提供一个简化的示例,展示如何连接到 vCenter Server 并列出所有虚拟机的名称:

from pyVim.connect import SmartConnectNoSSL, Disconnect
from pyVmomi import vim
import sys

# vCenter Server 的连接信息
vc_host = 'vcenter_server_host'
vc_user = 'username'
vc_password = 'password'

def list_vms(host, user, password):
    try:
        service_instance = SmartConnectNoSSL(host=host, user=user, pwd=password)
        content = service_instance.RetrieveContent()

        for child in content.rootFolder.childEntity:
            if hasattr(child, 'vmFolder'):
                vm_folder = child.vmFolder
                vm_list = vm_folder.childEntity
                for vm in vm_list:
                    print(f"VM Name: {vm.name}")
    except Exception as e:
        print(f"Failed to connect to vCenter: {e}")
        sys.exit(1)
    finally:
        if 'service_instance' in locals():
            Disconnect(service_instance)

if __name__ == "__main__":
    list_vms(vc_host, vc_user, vc_password)

7.2.3 拓展案例1:使用 Python 和 VirtualBox 进行虚拟机快照管理

快照可以保存虚拟机在某一时刻的状态,对于测试和恢复非常有用。这个案例将展示如何使用 Python 脚本利用 VirtualBox 的命令行工具 VBoxManage 来创建和恢复虚拟机快照。

由于操作 VirtualBox 快照通常涉及到命令行交互,这里建议使用 subprocess 模块来执行相关命令。示例代码如下:

import subprocess

def create_snapshot(vm_name, snapshot_name):
    try:
        subprocess.run(["VBoxManage", "snapshot", vm_name, "take", snapshot_name], check=True)
        print(f"Snapshot '{snapshot_name}' created successfully for VM '{vm_name}'.")
    except subprocess.CalledProcessError as e:
        print(f"Failed to create snapshot: {e}")

def restore_snapshot(vm_name, snapshot_name):
    try:
        subprocess.run(["VBoxManage", "snapshot", vm_name, "restore", snapshot_name], check=True)
        print(f"VM '{vm_name}' restored to snapshot '{snapshot_name}'.")
    except subprocess.CalledProcessError as e:
        print(f"Failed to restore snapshot: {e}")

if __name__ == "__main__":
    vm_name = "Your_VM_Name"
    snapshot_name = "Test_Snapshot"
    create_snapshot(vm_name, snapshot_name)
    # restore_snapshot(vm_name, snapshot_name)

7.2.4 拓展案例2:使用 Python 实现基于 KVM 的虚拟机动态迁移

虚拟机的动态迁移是虚拟化环境中的一个高级功能,允许运行中的虚拟机在不中断服务的情况下从一个物理主机迁移到另一个。这个案例比较高级且依赖于特定的环境配置,因此这里不提供具体的实现代码,而是建议使用如 libvirt 库来实现,它提供了 Python 绑定来管理使用 KVM、Xen 等的虚拟机。

提到的虚拟机动态迁移是一个复杂的过程,通常涉及到底层虚拟化管理工具和 API 的深入使用。虽然这个过程对于一个简短的示例来说可能过于复杂,但我们可以提供一个概念性的代码示例,展示如何使用libvirt库与 KVM 虚拟化进行交互,特别是如何列出当前运行的虚拟机,作为理解虚拟机管理的起点。

准备工作

首先,确保你的Python环境中安装了libvirt Python 绑定。在大多数Linux发行版中,你可以通过包管理器安装它,例如,在Ubuntu上,你可以使用以下命令:

sudo apt-get install libvirt-dev
pip install libvirt-python

Python 脚本示例

以下是一个简单的Python脚本,它使用libvirt连接到本地KVM实例,并列出所有当前运行的虚拟机:

import libvirt

def list_running_vms():
    conn = None
    try:
        # 连接到本地的 KVM 虚拟化实例
        conn = libvirt.open('qemu:///system')
        if conn is None:
            print('Failed to open connection to qemu:///system')
            return
        
        # 获取所有活动(运行中)的虚拟机的ID列表
        active_vms = conn.listDomainsID()
        if active_vms == -1:
            print('Failed to get a list of domain IDs')
            return
        
        print(f"Total {len(active_vms)} running VMs:")
        for vm_id in active_vms:
            vm = conn.lookupByID(vm_id)
            print(f"VM Name: {vm.name()}")
    except libvirt.libvirtError as e:
        print(f"Libvirt connection error: {e}")
    finally:
        if conn is not None:
            conn.close()

if __name__ == "__main__":
    list_running_vms()

这个脚本首先尝试连接到本地的KVM实例。成功连接后,它会查询并列出所有当前活动(即运行中)的虚拟机的名称。请注意,这个示例假设你已经在你的系统上设置了KVM虚拟化环境,并且有一些虚拟机正在运行。

注意事项

虚拟机的动态迁移通常要求虚拟机在共享存储上运行,以便源主机和目标主机都能访问虚拟机的磁盘镜像。动态迁移的具体命令和步骤依赖于你的虚拟化环境配置以及所使用的存储解决方案。由于涉及的配置和细节较多,这里的示例主要旨在介绍如何使用libvirt进行基础的虚拟化管理任务。

通过学习和实践这些基础操作,你可以逐步深入到更高级的虚拟化管理任务中,包括但不限于虚拟机的创建、配置调整、快照管理以及动态迁移等。

虚拟化技术的这些案例展示了其在实际生产环境中的应用范围,从基本的虚拟机管理到高级功能如快照管理和动态迁移。虽然具体的实现可能会因技术栈而异,但 Python 和相关库提供了强大的工具来简化这些任务,使得虚拟化管理更加高效和自动化。

在这里插入图片描述


7.3 云安全和隐私 - 守护云端的宝藏

随着企业和个人越来越多地依赖云服务,云安全和隐私成为了一个不容忽视的重要议题。保护云端数据不被未授权访问、泄露或篡改,确保服务的可靠性和用户隐私的保护,是每个使用云服务的人的共同责任。

7.3.1 基础知识

  • 数据加密:在存储和传输数据时对其进行加密,是保护云端数据安全的基本方法之一。加密可以分为数据传输加密(如使用 SSL/TLS)和数据静态加密(如数据库加密)。
  • 身份和访问管理(IAM):通过精细的访问控制,确保只有授权用户才能访问特定的资源和数据。IAM 系统通常包括用户身份验证、授权和审计等功能。
  • 网络安全:使用防火墙、入侵检测系统(IDS)和入侵防御系统(IPS)等工具来保护云服务免受外部攻击。
  • 隐私保护:确保个人数据的收集、存储和处理符合适用的隐私法律和标准,如 GDPR。

7.3.2 重点案例:使用 Python 实现 AWS S3 存储桶的加密

在这个案例中,我们将演示如何使用 Python 和 AWS SDK(Boto3)为 Amazon S3 存储桶配置服务器端加密,以提高存储在云中数据的安全性。

准备工作

  1. 确保已安装 Boto3 库,并配置好 AWS 访问凭证。如果未安装 Boto3,可以通过以下命令安装:

    pip install boto3
    
  2. 确保你有一个 AWS 账户,并获取到了访问密钥和密钥 ID。

Python 脚本示例

import boto3

def enable_s3_bucket_encryption(bucket_name):
    s3 = boto3.client('s3')
    try:
        s3.put_bucket_encryption(
            Bucket=bucket_name,
            ServerSideEncryptionConfiguration={
                'Rules': [{
                    'ApplyServerSideEncryptionByDefault': {
                        'SSEAlgorithm': 'AES256'
                    }
                }]
            }
        )
        print(f"Enabled encryption on bucket: {bucket_name}")
    except Exception as e:
        print(f"Error enabling encryption on bucket {bucket_name}: {e}")

if __name__ == "__main__":
    bucket_name = "your-bucket-name"
    enable_s3_bucket_encryption(bucket_name)

7.3.3 拓展案例1:使用 Python 进行 SSL/TLS 证书验证

这个案例展示如何使用 Python 的 requests 库安全地访问 HTTPS 网站,包括 SSL/TLS 证书的验证。

准备工作
  1. 确保已安装 requests 库。如果未安装,可以通过以下命令安装:

    pip install requests
    

Python 脚本示例

import requests

def verify_ssl_certificate(url):
    try:
        response = requests.get(url)
        print(f"Successfully accessed {url}")
    except requests.exceptions.SSLError as e:
        print(f"SSL Certificate verification failed for {url}: {e}")

if __name__ == "__main__":
    url = "https://your-secure-site.com"
    verify_ssl_certificate(url)

7.3.4 拓展案例2:使用 Python 实现简单的入侵检测系统

此案例演示如何使用 Python 实现一个简单的网络入侵检测系统(IDS),监控可疑的 HTTP 请求。

准备工作

假设你有一个简单的 Flask Web 应用,并希望监控对其的访问。

Python 脚本示例

from flask import Flask, request

app = Flask(__name__)

@app.route('/')
def home():
    user_agent = request.headers.get('User-Agent')
    if "suspicious" in user_agent.lower():
        print(f"Suspicious access detected from {request.remote_addr}")
    return 'Hello, World!'

if __name__ == '__main__':
    app.run(debug=True)

这个 Flask 应用会检查访问者的 User-Agent,如果包含 “suspicious” 关键字,则认为是可疑访问并记录下来。在实际应用中,入侵检测系统会更加复杂,包括对多种攻击模式的识别和响应。

通过这些案例,我们可以看到 Python 在实现云安全和隐私措施中的实用性,从存储加密到网络安全,再到入侵检测,Python 提供了强大的工具和库来帮助开发者保护云环境。

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

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

相关文章

机器学习5-线性回归之损失函数

在线性回归中,我们通常使用最小二乘法(Ordinary Least Squares, OLS)来求解损失函数。线性回归的目标是找到一条直线,使得预测值与实际值的平方差最小化。 假设有数据集 其中 是输入特征, 是对应的输出。 线性回归的…

查看docker服务的IP地址

要查看Docker容器服务的IP地址,可以使用以下命令: 如果你知道容器名称或容器ID,直接通过容器ID或容器名称来获取IP地址: # 使用容器ID获取IP地址 docker inspect -f {{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}} …

cesium-加载谷歌影像

cesium在开发的时候有可能会加载不同的影像&#xff0c;今天就先看一下加载谷歌的吧。 使用谷歌有个好处就是基本不会出现此区域无卫星图的情况 闲言话语不多说&#xff0c;看代码 <template><div id"cesiumContainer" style"height: 100vh;"&g…

【SpringBoot】application配置文件(4)

freemarker:cache: false 这是关于 freemarker 模板引擎的一个配置&#xff0c;用于控制模板的缓存行为 当cache 设置为 false 时&#xff0c;意味着每次请求时都会重新加载和编译模板&#xff0c;而不是从缓存中获取 编译模板。 将 cache 设置为 false 是为了在开发过程中获…

python求解中位数

首先将数组nums进行排序&#xff0c;然后找到中间位置的数值 如果数组长度n为奇数&#xff0c;则(n1)/2处对应值为中位数&#xff0c;如果数组下标从0开始&#xff0c;还需要减去1 如果数组长度n为偶数&#xff0c;则n/2,n/21两个位置数的平均值为中位数 假设中位数为x&#x…

机器学习复习(2)——线性回归SGD优化算法

目录 线性回归代码 线性回归理论 SGD算法 手撕线性回归算法 模型初始化 定义模型主体部分 定义线性回归模型训练过程 数据demo准备 模型训练与权重参数 定义线性回归预测函数 定义R2系数计算 可视化展示 预测结果 训练过程 sklearn进行机器学习 线性回归代码…

CSC联合培养博士申请亲历|联系外导的详细过程

在CSC申报的各环节中&#xff0c;联系外导获得邀请函是关键步骤。这位联培博士同学的这篇文章&#xff0c;非常详细且真实地记录了申请过程、心理感受&#xff0c;并提出有益的建议&#xff0c;小编特推荐给大家参考。 2024年国家留学基金委公派留学项目即将开始&#xff0c;其…

网络原理TCP/IP(2)

文章目录 TCP协议确认应答超时重传连接管理断开连接 TCP协议 TCP全称为"传输控制协议(Transmission Control Protocol").⼈如其名,要对数据的传输进⾏⼀个详细 的控制; TCP协议段格式 • 源/目的端口号:表⽰数据是从哪个进程来,到哪个进程去; • 32位序号/32位确认…

会声会影下载 Corel VideoStudio 2023 v26.1.0.268中文激活版

会声会影Corel VideoStudio 2023破解版是领先的视频编辑和转换软件&#xff01;提供直观友好的功能&#xff0c;让用户能够更快速便捷地制作独特的视频&#xff0c;高质量的效果&#xff0c;各种滤镜、贴纸、过渡、模板等都将让您事半功倍&#xff01;软件允许您导入自己的剪辑…

社区店加盟:如何选择适合的品牌和项目?

在当下创业热潮中&#xff0c;社区店加盟成为了许多创业者的首选。特别是鲜奶吧这种深受各年龄段人群喜爱的项目&#xff0c;更是备受关注。然而&#xff0c;面对众多品牌和项目&#xff0c;如何选择适合自己的社区店加盟品牌和项目呢&#xff1f; 作为一位资深的鲜奶吧创业者…

关于node.js奇数版本不稳定 将11.x.x升级至16.x.x不成功的一系列问题(一)

据说vue2用16稳定一些 vue3用18好一点&#xff08;但之前我vue3用的16.18.1也可以&#xff09; 为维护之前的老项目 先搞定node版本切换 下载nvm node版本管理工具 https://github.com/coreybutler/nvm-windows/releases 用这个nvm-setup.zip安装包 安之前最好先将之前的nod…

西瓜书学习笔记——k近邻学习(公式推导+举例应用)

文章目录 算法介绍实验分析 算法介绍 K最近邻&#xff08;K-Nearest Neighbors&#xff0c;KNN&#xff09;是一种常用的监督学习算法&#xff0c;用于分类和回归任务。该算法基于一个简单的思想&#xff1a;如果一个样本在特征空间中的 k k k个最近邻居中的大多数属于某个类别…

git命令上传本地项目到远程仓库的悲惨遭遇

git命令上传本地项目到远程仓库的悲惨遭遇。我想把前端后端合并到一个仓库下2个分支&#xff0c;结果呢&#xff0c;不仅合并没有成功&#xff0c;还把代码丢失了。 如图&#xff0c;原始我写好了完整的后端代码&#xff0c;都丢失了。 远程仓库里也都没有了。奇怪了。 难道远…

二、Java学习 数据类型与变量

目录 一、字面常量 二、数据类型 三、变量 语法格式 四、类型转换 隐式类型转换 强制类型转换 字符串类型 五、类型提升 1.int与long 2.byte与byte 小结 一、字面常量 常量即运行期间&#xff0c;固定不变的量。 字面常量的分类&#xff1a; 1.字符串常量&#xff…

TQ15EG开发板教程:开发板资源介绍

时钟资源 采用时钟芯片CDCM6208提供系统时钟 PL端时钟 PS 收发器时钟 PL收发器时钟 电源 BANK500 BANK501 BANK502 BANK503(专用) 1.8V 1.8V 1.8V 1.8V PS端外设 QSPI 采用2片MT25QU256 拼接成8bit的QSPI存储系统。采用1.8V供电 SD卡 SATA接口 PS端以太网接口 D…

Java宝典-数据类型

目录 1.变量与常量2.Java中的数据类型3.整型3.1 字节型byte3.2 短整型short3.3 整型int3.4 长整型long 4.浮点型4.1 单精度浮点型float4.2 双精度浮点型double 5.字符型6.布尔型7.类型转换7.1 隐式类型转换7.2 显示类型转换(强制类型转换) 8.类型提升 大家好,我是你们的Vampire…

了解UDP发送过快导致的问题和对应解决方案

在当今这个以数据为核心的时代&#xff0c;企业对于数据传输的速度和稳定性有着日益增长的需求。UDP凭借其低延迟和高效率的特性&#xff0c;在实时通信和大规模数据传输领域扮演着关键角色。然而&#xff0c;UDP的无连接特性和缺乏可靠性也给数据传输带来了挑战&#xff0c;尤…

【python错误】Pytorch1.9 ImportError: cannot import name ‘zero_gradients‘

错误&#xff1a;Pytorch1.9 ImportError: cannot import name ‘zero_gradients’ 错误提示&#xff1a; ImportError: cannot import name ‘zero_gradients’ from ‘torch.autograd.gradcheck’ (/root/miniconda3/envs/d2l/lib/python3.9/site-packages/torch/autograd/g…

3种JWT验证和续签的策略

3 种JWT验证和续签的策略 好文推荐&#xff1a;一文教你搞定所有前端鉴权与后端鉴权方案&#xff0c;让你不再迷惘 - 掘金 (juejin.cn) 3 种jwt 验证的策略 通过解析去验证&#xff1a;每次访问api时parse jwt 判断是否vaild jwt有效 正常调用api jwt无效 返回401 缺点&a…

AVR 328pb串口基本介绍和使用

AVR 328pb串口基本介绍和使用 &#x1f4cd;相关篇《AVR 328pb定时器0基本介绍和使用》 &#x1f516;基于Atmel Studio 7.0开发环境。 &#x1f4cd;结合参考同架构lgt8f328p中文文档&#xff1a;http://www.prodesign.com.cn/wp-content/uploads/2023/03/LGT8FX8P_databook…
最新文章