云原生:未来云计算的新趋势

2023-05-16

云原生:未来云计算的新趋势

随着云计算技术的迅速发展,云原生已成为最新的趋势。它不仅是云计算的新技术,也是未来云计算的新趋势。

什么是云原生?

云原生是指将应用程序设计为在云环境中运行的方式。它强调了高可用性、弹性、可扩展性、安全性和灵活性,以满足不断变化的业务需求。云原生应用程序使用微服务架构进行设计,每个微服务都独立部署和运行,并通过API相互通信。它还使用容器化技术,将应用程序和所有相关依赖项打包到一个容器中,并在云环境中运行。

云原生应用程序的设计理念是将应用程序分解成更小、更容易管理的部分,从而使应用程序更易于维护和扩展。每个部分都可以独立开发、测试、部署和扩展,从而提高了应用程序的可靠性和可扩展性。此外,云原生应用程序还具有自愈能力,即它们可以自动识别和处理故障。

云原生技术的特点

云原生技术有以下特点:

  • 微服务架构
    微服务架构是云原生应用程序的核心。它将应用程序分解成更小、更容易管理的部分,每个部分都可以独立部署、扩展和管理。这使得应用程序更加可靠、可扩展和易于维护。

容器化技术

容器化技术是云原生应用程序的另一个核心。它将应用程序及其所有相关依赖项打包到一个容器中,并在云环境中运行。这使得应用程序的部署和管理更加简单、可靠和高效。

自动化部署和运维

云原生应用程序的部署和运维是自动化的。这意味着应用程序可以自动部署、自动扩展和自动修复。这样可以减少人工干预,提高应用程序的可靠性和可用性。

云原生安全

云原生应用程序的安全性是非常重要的。云原生应用程序通过多层安全措施来保护应用程序和数据安全,例如身份验证、访问控制、加密和安全审计等。

云原生应用程序的设计

云原生应用程序的设计需要考虑以下几个方面:

微服务架构的设计

云原生应用程序的设计必须基于微服务架构。微服务架构将应用程序分解成更小、更易管理的部分,每个部分都可以独立部署、扩展和管理。为了实现微服务架构,需要考虑以下几个方面:

  • 定义服务边界:确定每个微服务的功能和接口,以及它们之间的依赖关系。

  • 确定数据模型:确定每个微服务的数据模型,并定义如何存储和访问数据。

  • 实现服务接口:定义每个微服务的API接口,以及它们之间的通信方式。

  • 部署和管理服务:定义如何部署、扩展和管理每个微服务,以确保应用程序的高可用性和可靠性。

容器化技术的应用

容器化技术是云原生应用程序的核心。容器化技术将应用程序及其所有相关依赖项打包到一个容器中,并在云环境中运行。为了实现容器化技术,需要考虑以下几个方面:

  • 容器镜像的设计:设计每个容器镜像的组件和依赖项,并定义如何构建和发布容器镜像。

  • 容器运行时的管理:定义如何管理容器运行时,例如如何启动、停止和删除容器。

  • 网络配置和安全性:定义如何配置容器网络和安全性,以确保容器之间的通信和数据安全。

自动化部署和运维

自动化部署和运维是云原生应用程序的核心。自动化部署和运维可以减少人工干预,提高应用程序的可靠性和可用性。为了实现自动化部署和运维,需要考虑以下几个方面:

  • 持续集成和部署:使用持续集成和持续部署技术来自动构建、测试和部署应用程序。

  • 自动扩展和缩减:使用自动扩展和缩减技术来自动调整应用程序的容量,以应对不同的业务需求。

  • 自动修复和升级:使用自动修复和升级技术来自动修复应用程序的故障和升级应用程序的版本。

云原生安全性

云原生应用程序的安全性是非常重要的。云原生应用程序需要使用多层安全措施来保护应用程序和数据安全。为了实现云原生安全性,需要考虑以下几个方面:

  • 身份验证和访问控制:使用身份验证和访问控制技术来控制应用程序和数据的访问权限。

  • 数据加密和安全传输:使用数据加密和安全传输技术来保护应用程序和数据的机密性和完整性。

  • 漏洞扫描和防御:使用漏洞扫描和防御技术来检测和预防应用程序和数据的安全漏洞。

  • 安全审计和监控:使用安全审计和监控技术来监视应用程序和数据的使用情况,以及检测和响应安全事件。

实践案例

下面我们将以一个简单的电子商务网站为例,来演示如何使用云原生技术构建和部署一个应用程序。

架构设计

首先,我们需要设计应用程序的架构。我们将应用程序分解为以下几个微服务:

  • 用户服务:管理用户信息和身份验证。

  • 商品服务:管理商品信息和订单管理。

  • 购物车服务:管理购物车信息和订单管理。

  • 支付服务:处理订单支付和退款。

每个微服务都使用Spring Boot框架编写,并使用MySQL作为数据库。每个微服务都打包为一个Docker容器镜像,并使用Kubernetes进行部署和管理。

容器镜像设计

接下来,我们需要设计容器镜像。每个微服务都需要包含以下几个组件:

应用程序:使用Spring Boot框架编写的Java应用程序。

应用程序依赖项:应用程序所需的所有依赖项。

运行时环境:Java运行时环境。

数据库客户端:MySQL数据库客户端。

我们可以使用以下Dockerfile来构建用户服务的容器镜像:

FROM openjdk:8-jdk-alpine

ENV APP_HOME /app
RUN mkdir $APP_HOME
WORKDIR $APP_HOME

# 添加应用程序和依赖项
ADD target/user-service.jar $APP_HOME/app.jar
ADD target/lib $APP_HOME/lib

# 添加MySQL客户端
RUN apk update && apk add mysql-client

EXPOSE 8080
ENTRYPOINT ["java","-jar","app.jar"]

部署和管理微服务

接下来,我们需要使用Kubernetes部署和管理微服务。我们可以使用以下Kubernetes YAML文件来部署用户服务:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: user-service
  labels:
    app: user-service
spec:
  replicas: 3
  selector:
    matchLabels:
      app: user-service
  template:
    metadata:
      labels:
        app: user-service
    spec:
      containers:
      - name: user-service
        image: my-registry/user-service:1.0.0
        ports:
        - containerPort: 8080
        env:
        - name: MYSQL_HOST
          value: "mysql-service"
        - name: MYSQL_PORT
          value: "3306"
        - name: MYSQL_USER
      	  value: "user"
        - name: MYSQL_PASSWORD
          value: "password"
---
apiVersion: v1
kind: Service
metadata:
name: user-service
spec:
selector:
app: user-service
ports:
- name: http
protocol: TCP
port: 80
targetPort: 8080

此Kubernetes YAML文件定义了一个名为“user-service”的部署和一个名为“user-service”的服务。该服务将通过端口80暴露给外部网络,并将流量路由到部署的三个副本之一。在容器内部,应用程序将使用MySQL数据库客户端连接到名为“mysql-service”的MySQL服务。

我们可以使用类似的Kubernetes YAML文件来部署其他微服务。使用Kubernetes部署和管理微服务的优点是可以实现高可用性、自动扩展和故障恢复。

实现服务发现和负载均衡

服务发现和负载均衡是实现高可用性和自动扩展的关键技术。在Kubernetes中,可以使用以下两种方法来实现服务发现和负载均衡:

  • Kubernetes服务:使用Kubernetes服务可以自动为部署的Pod提供负载均衡和服务发现功能。Kubernetes服务是一个抽象层,它将一组Pod包装在一个可访问的网络端点中。通过向Kubernetes服务发送请求,可以自动将请求路由到可用的Pod之一。Kubernetes服务还可以使用Kubernetes DNS自动解析到服务的IP地址。

  • Istio服务网格:Istio是一个开源的服务网格平台,它提供了服务发现、负载均衡、流量管理、安全性、监控和跟踪等功能。Istio通过注入Envoy代理到Pod中来实现服务网格。Envoy代理负责管理流量和请求路由,并提供高级路由、负载均衡、故障恢复和安全功能。

实现持续交付和自动化部署

持续交付和自动化部署是云原生的关键技术之一。它可以实现快速、可靠和可重复的部署流程,并减少人为错误的发生。在云原生环境中,可以使用以下工具来实现持续交付和自动化部署:

  • Jenkins:Jenkins是一个开源的持续集成和持续交付工具。它提供了构建、测试、部署和自动化工作流的功能。Jenkins可以与Kubernetes集成,以实现自动化部署和扩展。

  • Spinnaker:Spinnaker是一个开源的持续交付平台。它提供了可重复、可预测和可扩展的部署流程。Spinnaker可以与Kubernetes和其他云平台集成,以实现自动化部署和持续交付。

下面是一个使用Jenkins和Kubernetes的持续交付示例:

  1. 安装Jenkins和Kubernetes插件。

  2. 创建一个Jenkins Pipeline作业,该作业从源代码存储库中拉取代码,构建Docker镜像,并将镜像推送到Docker镜像仓库中。

pipeline {
    agent any

    stages {
        stage('Build') {
            steps {
                sh 'docker build -t my-image .'
            }
        }
        stage('Push') {
            steps {
                withCredentials([usernamePassword(credentialsId: 'docker-creds', usernameVariable: 'DOCKER_USERNAME', passwordVariable: 'DOCKER_PASSWORD')]) {
                    sh 'docker login -u $DOCKER_USERNAME -p $DOCKER_PASSWORD'
                    sh 'docker push my-image'
                }
            }
        }
    }
}

  1. 创建一个Kubernetes部署作业,该作业使用kubectl工具在Kubernetes集群上部署应用程序。
pipeline {
    agent any

    environment {
        KUBECONFIG = credentials('kubernetes-config')
    }

    stages {
        stage('Deploy') {
            steps {
                sh 'kubectl apply -f kubernetes.yaml'
            }
        }
    }
}
  1. 创建一个Jenkins Pipeline多分支作业,该作业可以根据不同的Git分支自动触发不同的Pipeline作业。
pipeline {
    agent any

    stages {
        stage('Build') {
            steps {
                sh 'docker build -t my-image .'
            }
        }
        stage('Push') {
            steps {
                withCredentials([usernamePassword(credentialsId: 'docker-creds', usernameVariable: 'DOCKER_USERNAME', passwordVariable: 'DOCKER_PASSWORD')]) {
                    sh 'docker login -u $DOCKER_USERNAME -p $DOCKER_PASSWORD'
                    sh 'docker push my-image'
                }
            }
        }
        stage('Deploy') {
            when {
                branch 'master'
            }
            steps {
                sh 'kubectl apply -f kubernetes.yaml'
            }
        }
    }
}

在这个示例中,我们使用Jenkins和Kubernetes实现了一个简单的持续交付流程。我们还可以添加其他阶段,例如测试、代码质量检查、部署到不同环境等。

实现监控和日志管理

监控和日志管理是云原生环境中不可或缺的功能。在Kubernetes中,可以使用以下工具来实现监控和日志管理:

  • Prometheus:Prometheus是一个开源的监控系统。它使用pull模型从目标应用程序中收集指标,并提供了强大的查询语言和可视化工具。

  • Grafana:Grafana是一个开源的数据可视化和仪表盘工具。它可以与Prometheus等数据源集成,并提供丰富的可视化选项。

  • Fluentd:Fluentd是一个开源的日志收集器。它可以从容器日志和宿主机日志中收集数据,并将数据发送到后端存储中。

  • Elasticsearch:Elasticsearch是一个开源的搜索和分析引擎。它可以用于存储Fluentd收集的日志,并提供强大的搜索和分析功能。

下面是一个使用Prometheus、Grafana和Fluentd的示例:

  1. 部署Prometheus和Grafana。
    可以使用Helm来部署Prometheus和Grafana。以下是使用Helm部署Prometheus和Grafana的示例命令:
helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
helm repo update
helm install prometheus prometheus-community/prometheus
helm install grafana grafana/grafana

  1. 配置Prometheus来收集指标。
    在Kubernetes集群中部署应用程序时,可以使用Prometheus Operator来自动创建Prometheus监控配置。以下是一个示例Prometheus监控配置:
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
  name: my-app
  namespace: my-namespace
spec:
  selector:
    matchLabels:
      app: my-app
  endpoints:
  - port: web

该配置指定了一个ServiceMonitor资源,该资源定义了要监控的服务。在这个示例中,ServiceMonitor将监控所有具有“app=my-app”的标签的Pod,并将使用名为“web”的端口来收集指标。

  1. 配置Fluentd来收集日志。
    以下是一个示例Fluentd配置,该配置从容器日志中收集数据,并将数据发送到Elasticsearch中:
apiVersion: v1
kind: ConfigMap
metadata:
  name: fluentd-config
  namespace: kube-system
data:
  fluent.conf: |
    <source>
      @type tail
      path /var/log/containers/*.log
      pos_file /var/log/fluentd-containers.log.pos
      tag kubernetes.*
      read_from_head true
      <parse>
        @type json
        time_format %Y-%m-%dT%H:%M:%S.%N%Z
      </parse>
    </source>
    <match kubernetes.**>
      @type elasticsearch
      host elasticsearch.logging.svc.cluster.local
      port 9200
      logstash_format true
      flush_interval 10s
      include_timestamp true
      <buffer>
        @type file
        path /var/log/fluentd-buffers/kubernetes.buffer
        flush_thread_count 2
        flush_interval 5s
        chunk_limit_size 2M
        queue_limit_length 8
        retry_max_interval 30
      </buffer>
    </match>

  1. 配置Grafana来显示指标和日志。
    可以使用Grafana的Prometheus和Elasticsearch数据源来显示指标和日志。以下是一个示例Grafana仪表盘,该仪表盘显示应用程序的HTTP请求数量和响应时间,并显示应用程序的日志;
    在这个示例中,我们使用Prometheus、Grafana和Fluentd来实现监控和日志管理。我们还可以使用其他工具来实现监控和日志管理,例如:
  • Loki:一个分布式日志聚合系统,由Grafana开发,与Prometheus紧密集成。
  • Elasticsearch:一个分布式搜索和分析引擎,可用于存储和搜索日志数据。
  • Kibana:一个开源的数据可视化平台,可与Elasticsearch集成,用于搜索、分析和可视化日志数据。
  • Fluent Bit:一个轻量级日志收集器,与Fluentd兼容,可用于从Kubernetes容器中收集日志。

总结

云原生是一种设计和部署应用程序的方法,旨在提高应用程序的可靠性、可伸缩性和安全性。使用云原生技术,我们可以将应用程序部署在容器中,并使用Kubernetes进行管理和编排。在容器化应用程序中,日志是重要的调试和监控工具。使用Fluentd、Elasticsearch和Kibana等工具,我们可以轻松地管理和分析容器日志。此外,Prometheus和Grafana等工具可用于收集和显示指标,以帮助我们监控应用程序的运行状况。

虽然云原生技术已经成为现代应用程序开发的标准,但是在实践中使用云原生技术并不容易。需要花费大量的时间和精力来学习和实践这些技术。但是,随着云原生技术的普及和发展,越来越多的工具和资源将变得可用,使得使用云原生技术更加容易和高效。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

云原生:未来云计算的新趋势 的相关文章

  • CDH开启高可用后,NameNode主备节点切换

    查看nn1的状态 hdfs haadmin getServiceState nn1 span class token comment standby span hdfs haadmin getServiceState nn2 span cl
  • git分支从master切换到main

    git分支从master切换到main 背景 本地当前分支为master xff0c 远程仓库为main xff0c 且远程仓库与本地仓库有 unrelated histories这样的问题 xff0c 如远程仓库有README md但本地
  • Docker学习第三天——Docker网络

    文章目录 摘要Linux 网络命名空间Docker bridge网络容器之间的Link容器的端口映射容器网络之host和none多容器复杂应用的部署多机器通信 摘要 Docker学习之旅第三天 Docker 网络 看完这篇文章将收获dock
  • 大津阈值法(OTSU)功能实现

    具体的公式推导参见冈萨雷斯 数字图像处理 Otsu方法又称最大类间方差法 xff0c 通过把像素分配为两类或多类 xff0c 计算类间方差 xff0c 当方差达到最大值时 xff0c 类分割线 xff08 即灰度值 xff09 就作为图像分
  • cas-server服务端搭建

    1 下载cas服务代码 xff0c https github com apereo cas overlay template tree 5 3 2 使用idea工具打开cas overlay template 5 3包 xff0c 使用ma
  • 自适应阈值canny边缘检测(功能实现)

    学习记录 1 概述 canny边缘检测是一种特别常用且性能优秀的边缘检测算法 xff0c 相比于普通的边缘检测算法 xff0c canny获得的边缘较细且具有连续的边缘轮廓 xff0c 为之后的一系列图像处理带来极大的便利 canny边缘检
  • OpenCV实现图像基础频率域滤波

    写在前面 xff1a 刚开始接触数字图像处理频率域滤波时 xff0c 很是陌生 xff0c 感觉这个技术使用范围很窄 xff0c 不如空域直接处理来的实在 xff0c 最近看书发现有些情况又不得不在频率域中进行操作 xff0c 个人感觉图像
  • OpenCV实现同态滤波

    同态滤波是属于图像增强的一个小算法 xff0c 其原理和代码实现在众多博客中均有提及 xff0c 再此 xff0c 只对学习中一些自认为有用的知识点进行总结 实现和学习过程中的一些总结 xff1a 同态滤波类似于灰度变换 xff0c 都是对
  • OpenCV实现击中击不中变换和形态学细化

    1 击中击不中变换 1 1 HMT概述 形态学Hit or Miss是形状检测基本工具 xff0c 只要结构元设置得当 xff0c 就可以检测一些基本的形状图案 xff0c HMT变换只能作用于二值图像 xff0c 结构元 xff08 核
  • OpenCV综合练习1——水瓶水位线合格检测

    数字图像处理综合练习 水瓶水位线合格检测 马上就要转到学习深度学习的主干线了 xff0c 这也是大势所趋 xff0c 但不能忘本 xff0c 传统图像处理的知识也是非常重要的 xff0c 特此记录一下之前学习时做过的小练习 整个项目的资源放
  • 目标检测学习1——iou计算与非极大值抑制NMS

    刚开始学习目标检测 xff0c 都是在学习一些经典的目标检测框架 xff0c 个人认为在大量阅读和理解别人现成的代码时 xff0c 也要懂得去动手模仿 xff0c 尝试着去修改别人的代码 xff0c 即使是自己抄一遍别人的代码 xff0c
  • OpenCV实现按指定间隔抽取视频中的图像帧

    习惯了C 43 43 语言的OpenCV突然用Python语言OpenCV还是感觉有点不适应 xff0c 但是慢慢在写的过程中 xff0c 觉得Python语言的风格也挺美的 但自己的写的还是很丑 xff0c 晚上回宿舍的剩余时间 xff0
  • 深度估计berHu损失函数和语义分割带权值交叉熵损失函数

    深度估计berHu损失函数和语义分割带权值交叉熵损失函数 最近在做联合深度估计和语义分割的深度学习算法 xff0c 深度估计默认使用的是L1 loss xff0c 语义分割使用的是普通的交叉熵损失函数 xff0c 继续改进模型对于指标的提升
  • 游览器是如何工作的

    游览器是如何工作的 浏览器的主要功能浏览器的主要构成一次网络请求浏览器发生了什么 xff1a 如果请求使用了HTTPS那么流程会有什么不同 xff1f 总结 浏览器的主要功能 浏览器的主要功能是将用户选择得web资源呈现出来 xff0c 它
  • OSG QT 完整附加依赖项(.lib)

    OSG QT 完整附加依赖项 lib 可在VS等需要添加附加依赖项的环境使用 注 xff1a OSG版本 xff1a 3 6 4 xff1b QT版本 xff1a 5 9 8 带d的为debug xff0c 不带d的release省掉了Qt
  • Ubuntu登陆账户后自动运行VNCserver

    问题 xff1a 远程桌面时 xff0c 如果重启远程Ubuntu xff0c 则VNC会话失效 解决 xff1a 一个解决的方法就是用putty将重启的Ubuntu登陆入账户后 xff0c 再开启VNC会话 为了方便 xff0c 可以设置
  • RAP与RARP原理

    ARP与RARP都属于网络层协议 xff0c 但是他们是为了解决链路层的帧转发问题 xff0c ARP的功能是将IP解析成MAC地址 xff0c 而RARP则相反 ARP 地址解析协议 xff08 Address Resolution Pr
  • eyeshot官方样例说明

    Eyeshot 12 例子 1 wings拖动按钮改变机翼的尺寸参数 xff0c 并导出到step文件 2 snaptogrid鼠标画平面 xff0c 类似于CATIA的多段线功能 3 sceneeditor控制灯光点和变换位置 xff0c
  • Python爬虫实现获取股票信息并保存到文件(亲测可运行)

    主要参考了北京理工大学嵩天老师的视频 xff0c 因老师所讲的网址已做更改 xff0c 将获取股票列表信息和股票价格的网站做了更改 xff0c 用到了beautiful soup库 xff0c re库 xff0c requests库 xff

随机推荐

  • 为什么要内存对齐?

    CPU访问非对齐的内存时为何需要多次读取再拼接 xff1f 首先简单说一下何为内存对齐 例如 xff0c 当cpu需要取4个连续的字节时 xff0c 若内存起始位置的地址可以被4整除 xff0c 那么我们称其对齐访问 反之 xff0c 则为
  • 读AQS源码-关于shouldParkAfterFailedAcquire函数的返回值

    先上源码 final boolean acquireQueued final Node node int arg boolean failed 61 true try boolean interrupted 61 false for fin
  • 读AQS源码-关于同步队列与锁的公平性

    先上部分源码 xff1a public final void acquire span class token punctuation span int arg span class token punctuation span span
  • FreeRTOS 正点原子教程学习笔记

    正点原子视频教程 FreeRTOS 教程非常详细 xff09 小知识 如果创建了任务却完全空着 xff0c 没有while xff08 1 xff09 延时 的话 xff0c 整个程序会卡住 xff0c 其他正常的任务无法运行 如果任务里单
  • 数据分析之Matplotlib(一)简介

    Matplotlib简介 Matplotlib是一个Python 2D绘图库 xff0c 可以生成各种硬拷贝格式和跨平台的交互式环境的出版物质量数据 Matplotlib可用于Python脚本 xff0c Python和IPython sh
  • 【2018-AAAI】Spatial As Deep: Spatial CNN for Traffic Scene Understanding

    概述 提出了SCNN语义分割网络 xff0c 将传统的深度逐层卷积推广到特征图中的逐片卷积 xff0c 在同一特征图的行和列上做信息传递 xff0c 可有效识别强先验结构的目标 此外论文还发布了一个大型的车道线检测数据集CULane Dat
  • 安装Code Blocks时出现can‘t find compiler的解决方法

    安装Code Blocks时出现can t find compiler的解决方法 1 首先我们要下载Code Blocks xff0c 我们可以去官方网站下载https www codeblocks org xff0c 或者直接点击该链接跳
  • OSPF网路拓扑结构(rfc2328)

    OSPF网路拓扑结构 xff08 rfc2328 xff09 OSPF rfc文档 xff08 rfc2328 xff09 中的拓扑结构对理解OSPF分区 区域内路由 区域边界路由 自治系统边界路由等基本概念很有帮助 并且整个文档打大部分内
  • Win10下使用WinSCP+PuTTY实现远程文件操作和终端访问

    Win10下使用WinSCP 43 PuTTY实现远程文件操作和终端访问 0 软件安装 安装WinSCP xff0c 参考官网安装PuTTY xff0c 从这个页面下载 1 WinSCP使用技巧 1 1 连接到远程主机 如下图所示 xff0
  • KVM创建的虚拟机创建快照、查看以及恢复

    KVM虚拟机要使用快照功能 xff0c 磁盘格式必须为qcw2如果不满足qcw2 xff0c 可以参考下面的链接进行修改 xff1a https www jianshu com p f6cc295a2108 创建快照方法 xff1a 创建快
  • KTT条件

    以下都是个人理解 xff0c 刚刚有点理解 xff0c 所以可能表达不清楚 但是又想把一些理解表达出来 xff0c 故写了这篇 上篇文章说了 xff0c 拉格朗日乘子法 xff0c 可以在等式约数的条件下 xff0c 求得某函数f的极大或极
  • github.com 拒绝了我们的连接请求。

    github com 拒绝了我们的连接请求 1 解决方法 1 解决方法 打开Dns检测 Dns查询 站长工具 在检测输入栏中输入GitHub官网 把检测列表里某个IP xff08 我选择最大的IP试了可以 xff09 输入到hosts里 x
  • Git操作详解以及在VScode中的使用

    我们先理清Git和Github的区别 xff0c Git是个版本控制的工具 xff0c 用来管理本地的代码工程 xff0c 它可以记录代码内容的变更 xff1b 而Github是一个代码托管平台 xff0c 我们可以使用Git将本地代码上传
  • 前端性能优化的指标和工具

    目录 一 xff1a 性能指标和优化目标 1 1 网络加载性能 1 2 用户交互体验 二 xff1a RAIL测量模型 2 1 Response xff08 响应 xff09 处理事件应在在50ms内完成 2 2 Animation xff
  • Windows下nvm的安装配置及使用

    目录 一 xff1a nvm简介 二 xff1a nvm下载及安装 三 xff1a nvm配置镜像 四 xff1a nvm的基本使用 五 xff1a nvm的一些常用命令 一 xff1a nvm简介 nvm 全名叫做 nodejs vers
  • SQLyog 链接MYSQL 8.0错误代码1251

    错误代码1251 2018 08 20 15 51 48 打开Navicat 的时候发现报错 xff0c 无法连接mySql数据库 感觉莫名奇妙 xff0c 报错 xff1a 1251 解决方法 xff1a 第一种方式 xff1a 打开Co
  • 关于Mysql数据库连接Navicat时出现1251报错问题的解决方法

    在Mysql数据库出问题后 xff0c 如果按照方法去解决 xff0c 还不如直接删除重装 xff0c 当然这里就要看自己的彻底删除MySQL数据库的方法对不对 xff0c 后面成功彻底删除了MySQL数据库 xff0c 配置好了MySQL
  • ROS初学订阅subscriber

    官方示例 include span class token string 34 ros ros h 34 span include span class token string 34 std msgs String h 34 span s
  • 解决andriod studio每次新建项目都要重新配置gradle的问题

    xff08 知道解决项目的gradle问题 xff0c 想要解决andriod studio每次新建项目都要重新配置gradle的问题的直接看最后一段 xff09 使用andriod studio出现Error Unknown host 3
  • 云原生:未来云计算的新趋势

    云原生 xff1a 未来云计算的新趋势 随着云计算技术的迅速发展 xff0c 云原生已成为最新的趋势 它不仅是云计算的新技术 xff0c 也是未来云计算的新趋势 什么是云原生 xff1f 云原生是指将应用程序设计为在云环境中运行的方式 它强