基于KubeSphere图形编辑面板构建微服务项目的DevOps 系统

news2024/9/21 14:50:14

文章目录

  • 相关文章
  • 部署过程
    • 准备工作
    • 创建 DevOps 项目
    • 创建凭证
    • 创建流水线
    • 编辑流水线
      • JAVA后端微服务
        • 拉取源码
        • 构建源码
        • 构建镜像
        • 推送镜像
        • 部署项目
      • VUE前端
        • 拉取源码
        • 构建源码
        • 构建镜像
        • 推送镜像
        • 部署项目
    • 运行流水线
    • 查看流水线详情
    • 完整流水线脚本
      • 微服务后端
      • VUE前端
    • 参考

相关文章

  • kubernetes集群基于kubeadm部署以及常见问题解决
  • kubernetes集群配置默认存储类(nfs)
  • Docker工作中常用知识总结
  • Ubuntu本地安装MySQL8.0以及常见问题设置方法
  • kubernetes集群安装Ingress-nginx
  • Spring Cloud微服务迁移到Kubernetes容器化
  • 持续补充中…

KubeSphere (https://Kubesphere.io) 是在 Kubernetes 之上构建的以应用为中心的多租户容器平台,完全开源,支持多云与多集群管理,提供全栈的 IT 自动化运维的能力,简化企业的 DevOps 工作流。KubeSphere 提供了运维友好的向导式操作界面,帮助企业快速构建一个强大和功能丰富的容器云平台。

部署过程

在这里插入图片描述

准备工作

创建 DevOps 项目

DevOps 系统为用户提供了一个自动化的环境,应用可以自动发布到同一个平台。它还兼容第三方私有镜像仓库(如 Harbor)和代码库(如 GitLab/GitHub/SVN/BitBucket)。它为用户提供了全面的、可视化的 CI/CD 流水线,打造了极佳的用户体验,而且这种兼容性强的流水线能力在离线环境中非常有用。
在这里插入图片描述

创建凭证

  • 在 DevOps 项目设置下的凭证页面创建以下凭证
    在这里插入图片描述

在这里插入图片描述

创建流水线

在这里插入图片描述

编辑流水线

  • 编辑流水线,可以参考提供的模板,也可以选择自定义流水线
    在这里插入图片描述

流水线的五个阶段:

拉取源码 -> 构建源码 -> 构建镜像->推送镜像 -> 部署项目

在这里插入图片描述

JAVA后端微服务

拉取源码

  • 在图形编辑面板上,从类型下拉列表中选择 node,从 Label 下拉列表中选择 maven。
    在这里插入图片描述

  • 请点击左侧的加号图标来添加阶段。点击添加步骤上方的文本框,然后在右侧的名称字段中为该阶段设置名称。
    在这里插入图片描述

  • 点击添加步骤。在列表中选择 git,以从 GitLab 拉取项目代码。在弹出的对话框中,填写必需的字段。点击确定完成操作。
    在这里插入图片描述

在这里插入图片描述

构建源码

在这里插入图片描述

mvn clean package -Dmaven.test.skip=true -Pdev

在这里插入图片描述

构建镜像

  • 点击前一个阶段右侧的加号图标添加一个新的阶段,以构建镜像。
docker build -t wms-gateway:v1 -f wms-gateway/Dockerfile ./wms-gateway/

在这里插入图片描述在这里插入图片描述

  • 选择添加 添加并行阶段, 重复以上步骤添加其他微服务。

推送镜像

  • 点击前一个阶段右侧的加号图标添加一个新的阶段,以推送镜像至Harbor。点击任务下的添加步骤,选择添加凭证
    在这里插入图片描述
  • 将其填写完成,然后点击确定。
    • 凭证名称:选择您创建的 harbor 凭证。
    • 密码变量:输入 HARBOR_PWD_VAR
    • 用户名变量:输入 HARBOR_USER_VAR

出于安全原因,帐户信息在脚本中显示为变量。

在这里插入图片描述

  • 点击添加嵌套步骤添加一个嵌套步骤。
    在这里插入图片描述
  • 在列表中选择 shell 并在弹出窗口中输入以下命令,点击确定完成操作。
echo "$HARBOR_PWD_VAR" | docker login $REGISTRY -u "$HARBOR_USER_VAR" --password-stdin
  • 下面两条命令参考上面命令依次添加输入。
# 镜像打tag
docker tag  wms-gateway:v1 $REGISTRY/$DOCKERHUB_NAMESPACE/wms-gateway:SNAPSHOT-$BUILD_NUMBER
# 推送镜像
docker push  $REGISTRY/$DOCKERHUB_NAMESPACE/wms-gateway:SNAPSHOT-$BUILD_NUMBER

在这里插入图片描述

  • 选择添加 添加并行阶段, 重复以上步骤添加其他微服务。

部署项目

  • 添加凭证
    在这里插入图片描述
  • 添加嵌套步骤,执行shell脚本
envsubst < devops/deploy/gateway.yaml | kubectl apply -f -

在这里插入图片描述

VUE前端

拉取源码

在这里插入图片描述

构建源码

在这里插入图片描述

构建镜像

在这里插入图片描述

推送镜像

在这里插入图片描述

部署项目

在这里插入图片描述

运行流水线

在这里插入图片描述

查看流水线详情

  • 如果所有配置都成功运行,可以看到所有阶段都已完成。
    在这里插入图片描述

  • 在右上角点击查看日志,查看所有日志。点击每个阶段查看其详细日志。您可以根据日志排除故障和问题,也可以将日志下载到本地进行进一步分析。

完整流水线脚本

  • 可以在这儿把下面的模板填充进去,然后在这个基础上进行修改。

在这里插入图片描述

微服务后端

pipeline {
  agent {
    node {
      label 'maven'
    }

  }
  stages {
    stage('clone code') {
      agent none
      steps {
        container('maven') {
          git(url: 'http://192.168.0.126/saas-wms/linkinsense-wms-public.git', credentialsId: 'gitlab', changelog: true, poll: false, branch: "$env_name")
        }

        sh 'ls -al'
      }
    }

    stage('编译 构建代码') {
      agent none
      steps {
        container('maven') {
          sh 'ls'
          sh 'mvn clean package -Dmaven.test.skip=true -Pdev'
        }

      }
    }

    stage('default-2') {
      parallel {
        stage('构建gateway镜像') {
          agent none
          steps {
            container('maven') {
              sh 'ls'
              sh 'docker build -t wms-gateway:v1 -f wms-gateway/Dockerfile ./wms-gateway/'
            }

          }
        }

        stage('构建auth镜像') {
          agent none
          steps {
            container('maven') {
              sh 'ls'
              sh 'docker build -t wms-auth:v1 -f wms-auth/Dockerfile ./wms-auth/'
            }

          }
        }

        stage('构建admin镜像') {
          agent none
          steps {
            container('maven') {
              sh 'ls'
              sh 'docker build -t wms-admin:v1 -f wms-admin/Dockerfile ./wms-admin/'
            }

          }
        }

        stage('构建warehouse镜像') {
          agent none
          steps {
            container('maven') {
              sh 'ls'
              sh 'docker build -t wms-warehouse:v1 -f wms-warehouse/Dockerfile ./wms-warehouse/'
            }

          }
        }

        stage('构建orders镜像') {
          agent none
          steps {
            container('maven') {
              sh 'ls'
              sh 'docker build -t wms-orders:v1 -f wms-orders/Dockerfile ./wms-orders/'
            }

          }
        }

        stage('构建outbound镜像') {
          agent none
          steps {
            container('maven') {
              sh 'ls'
              sh 'docker build -t wms-outbound:v1 -f wms-outbound/Dockerfile ./wms-outbound/'
            }

          }
        }

        stage('构建log镜像') {
          agent none
          steps {
            container('maven') {
              sh 'ls'
              sh 'docker build -t wms-log:v1 -f wms-log/Dockerfile ./wms-log/'
            }

          }
        }

      }
    }

    stage('default-3') {
      parallel {
        stage('推送gateway镜像') {
          agent none
          steps {
            container('maven') {
              withCredentials([usernamePassword(credentialsId : 'harbor' ,passwordVariable : 'HARBOR_PWD_VAR' ,usernameVariable : 'HARBOR_USER_VAR' ,)]) {
                sh 'echo "$HARBOR_PWD_VAR" | docker login $REGISTRY -u "$HARBOR_USER_VAR" --password-stdin'
                sh 'docker tag  wms-gateway:v1 $REGISTRY/$DOCKERHUB_NAMESPACE/wms-gateway:SNAPSHOT-$BUILD_NUMBER '
                sh 'docker push  $REGISTRY/$DOCKERHUB_NAMESPACE/wms-gateway:SNAPSHOT-$BUILD_NUMBER '
              }

            }

          }
        }

        stage('推送auth镜像') {
          agent none
          steps {
            container('maven') {
              withCredentials([usernamePassword(credentialsId : 'harbor' ,passwordVariable : 'HARBOR_PWD_VAR' ,usernameVariable : 'HARBOR_USER_VAR' ,)]) {
                sh 'echo "$HARBOR_PWD_VAR" | docker login $REGISTRY -u "$HARBOR_USER_VAR" --password-stdin'
                sh 'docker tag  wms-auth:v1 $REGISTRY/$DOCKERHUB_NAMESPACE/wms-auth:SNAPSHOT-$BUILD_NUMBER '
                sh 'docker push  $REGISTRY/$DOCKERHUB_NAMESPACE/wms-auth:SNAPSHOT-$BUILD_NUMBER '
              }

            }

          }
        }

        stage('推送admin镜像') {
          agent none
          steps {
            container('maven') {
              withCredentials([usernamePassword(credentialsId : 'harbor' ,passwordVariable : 'HARBOR_PWD_VAR' ,usernameVariable : 'HARBOR_USER_VAR' ,)]) {
                sh 'echo "$HARBOR_PWD_VAR" | docker login $REGISTRY -u "$HARBOR_USER_VAR" --password-stdin'
                sh 'docker tag  wms-admin:v1 $REGISTRY/$DOCKERHUB_NAMESPACE/wms-admin:SNAPSHOT-$BUILD_NUMBER '
                sh 'docker push  $REGISTRY/$DOCKERHUB_NAMESPACE/wms-admin:SNAPSHOT-$BUILD_NUMBER '
              }

            }

          }
        }

        stage('推送warehouse镜像') {
          agent none
          steps {
            container('maven') {
              withCredentials([usernamePassword(credentialsId : 'harbor' ,passwordVariable : 'HARBOR_PWD_VAR' ,usernameVariable : 'HARBOR_USER_VAR' ,)]) {
                sh 'echo "$HARBOR_PWD_VAR" | docker login $REGISTRY -u "$HARBOR_USER_VAR" --password-stdin'
                sh 'docker tag  wms-warehouse:v1 $REGISTRY/$DOCKERHUB_NAMESPACE/wms-warehouse:SNAPSHOT-$BUILD_NUMBER '
                sh 'docker push  $REGISTRY/$DOCKERHUB_NAMESPACE/wms-warehouse:SNAPSHOT-$BUILD_NUMBER '
              }

            }

          }
        }

        stage('推送orders镜像') {
          agent none
          steps {
            container('maven') {
              withCredentials([usernamePassword(credentialsId : 'harbor' ,passwordVariable : 'HARBOR_PWD_VAR' ,usernameVariable : 'HARBOR_USER_VAR' ,)]) {
                sh 'echo "$HARBOR_PWD_VAR" | docker login $REGISTRY -u "$HARBOR_USER_VAR" --password-stdin'
                sh 'docker tag  wms-orders:v1 $REGISTRY/$DOCKERHUB_NAMESPACE/wms-orders:SNAPSHOT-$BUILD_NUMBER '
                sh 'docker push  $REGISTRY/$DOCKERHUB_NAMESPACE/wms-orders:SNAPSHOT-$BUILD_NUMBER '
              }

            }

          }
        }

        stage('推送outbound镜像') {
          agent none
          steps {
            container('maven') {
              withCredentials([usernamePassword(credentialsId : 'harbor' ,passwordVariable : 'HARBOR_PWD_VAR' ,usernameVariable : 'HARBOR_USER_VAR' ,)]) {
                sh 'echo "$HARBOR_PWD_VAR" | docker login $REGISTRY -u "$HARBOR_USER_VAR" --password-stdin'
                sh 'docker tag  wms-outbound:v1 $REGISTRY/$DOCKERHUB_NAMESPACE/wms-outbound:SNAPSHOT-$BUILD_NUMBER '
                sh 'docker push  $REGISTRY/$DOCKERHUB_NAMESPACE/wms-outbound:SNAPSHOT-$BUILD_NUMBER '
              }

            }

          }
        }

        stage('推送log镜像') {
          agent none
          steps {
            container('maven') {
              withCredentials([usernamePassword(credentialsId : 'harbor' ,passwordVariable : 'HARBOR_PWD_VAR' ,usernameVariable : 'HARBOR_USER_VAR' ,)]) {
                sh 'echo "$HARBOR_PWD_VAR" | docker login $REGISTRY -u "$HARBOR_USER_VAR" --password-stdin'
                sh 'docker tag  wms-log:v1 $REGISTRY/$DOCKERHUB_NAMESPACE/wms-log:SNAPSHOT-$BUILD_NUMBER '
                sh 'docker push  $REGISTRY/$DOCKERHUB_NAMESPACE/wms-log:SNAPSHOT-$BUILD_NUMBER '
              }

            }

          }
        }

      }
    }

    stage('default-4') {
      parallel {
        stage('部署gateway到dev环境') {
          agent none
          steps {
            container('maven') {
              withCredentials([
                                                kubeconfigFile(credentialsId : env.KUBECONFIG_CREDENTIAL_ID ,variable : 'KUBECONFIG' ,)]) {
                  sh 'envsubst < devops/deploy/gateway.yaml | kubectl apply -f -'
                }

              }

            }
          }

          stage('部署auth到dev环境') {
            agent none
            steps {
              container('maven') {
                withCredentials([
                                                      kubeconfigFile(credentialsId: env.KUBECONFIG_CREDENTIAL_ID, variable: 'KUBECONFIG')]) {
                    sh 'envsubst < devops/deploy/auth.yaml | kubectl apply -f -'
                  }

                }

              }
            }

            stage('部署admin到dev环境') {
              agent none
              steps {
                container('maven') {
                  withCredentials([
                                                                                                                                                                                              kubeconfigFile(credentialsId: env.KUBECONFIG_CREDENTIAL_ID, variable: 'KUBECONFIG')]) {
                      sh 'envsubst < devops/deploy/admin.yaml | kubectl apply -f -'
                    }

                  }

                }
              }

              stage('部署warehouse到dev环境') {
                agent none
                steps {
                  container('maven') {
                    withCredentials([
                                                                                                                                                                                                                kubeconfigFile(credentialsId: env.KUBECONFIG_CREDENTIAL_ID, variable: 'KUBECONFIG')]) {
                        sh 'envsubst < devops/deploy/warehouse.yaml | kubectl apply -f -'
                      }

                    }

                  }
                }

                stage('部署orders到dev环境') {
                  agent none
                  steps {
                    container('maven') {
                      withCredentials([
                                                                                                                                                                                                                                  kubeconfigFile(credentialsId: env.KUBECONFIG_CREDENTIAL_ID, variable: 'KUBECONFIG')]) {
                          sh 'envsubst < devops/deploy/orders.yaml | kubectl apply -f -'
                        }

                      }

                    }
                  }

                  stage('部署outbound到dev环境') {
                    agent none
                    steps {
                      container('maven') {
                        withCredentials([
                                                                                                                                                                                                                                                    kubeconfigFile(credentialsId: env.KUBECONFIG_CREDENTIAL_ID, variable: 'KUBECONFIG')]) {
                            sh 'envsubst < devops/deploy/outbound.yaml | kubectl apply -f -'
                          }

                        }

                      }
                    }

                    stage('部署log到dev环境') {
                      agent none
                      steps {
                        container('maven') {
                          withCredentials([
                                                                                                                                                                                                                          kubeconfigFile(credentialsId: env.KUBECONFIG_CREDENTIAL_ID, variable: 'KUBECONFIG')]) {
                              sh 'envsubst < devops/deploy/log.yaml | kubectl apply -f -'
                            }

                          }

                        }
                      }

                    }
                  }

                }
                environment {
                  DOCKER_CREDENTIAL_ID = 'dockerhub-id'
                  GITHUB_CREDENTIAL_ID = 'github-id'
                  KUBECONFIG_CREDENTIAL_ID = 'demo-kubeconfig'
                  REGISTRY = '192.168.0.127:8084'
                  DOCKERHUB_NAMESPACE = 'onlee'
                  GITHUB_ACCOUNT = 'kubesphere'
                  APP_NAME = 'devops-java-sample'
                }
                parameters {
                  choice(description: '你需要选择哪条环境进行构建?', name: 'env_name', choices: ["test", "dev", "k8s"])
                }
              }

VUE前端

pipeline {
  agent {
    node {
      label 'nodejs'
    }

  }
  stages {
    stage('拉取代码') {
      agent none
      steps {
        git(url: 'http://192.168.0.126/saas-wms/linkinsense-wms-admin.git', credentialsId: 'gitlab', branch: 'main', changelog: true, poll: false)
      }
    }

    stage('构建代码') {
      agent none
      steps {
        container('nodejs') {
          sh 'npm cache clean -f'
          sh 'npm config set registry http://registry.npmmirror.com'
          sh 'npm install -g n --registry=http://registry.npmmirror.com'
          sh 'n v17.9.0'
          sh 'node -v'
          sh 'npm i'
          sh 'npm run build:dev'
        }

      }
    }

    stage('构建镜像') {
      agent none
      steps {
        container('nodejs') {
          sh 'ls'
          sh 'docker build -t wms-web:v1 -f  Dockerfile .'
        }

      }
    }

    stage('推送镜像') {
      agent none
      steps {
        container('nodejs') {
          withCredentials([usernamePassword(credentialsId : 'harbor' ,passwordVariable : 'HARBOR_PWD_VAR' ,usernameVariable : 'HARBOR_USER_VAR' ,)]) {
            sh 'echo "$HARBOR_PWD_VAR" | docker login $REGISTRY -u "$HARBOR_USER_VAR" --password-stdin'
            sh 'docker tag  wms-web:v1 $REGISTRY/$DOCKERHUB_NAMESPACE/wms-web:v1 '
            sh 'docker push  $REGISTRY/$DOCKERHUB_NAMESPACE/wms-web:v1 '
          }

        }

      }
    }

    stage('部署项目') {
      agent none
      steps {
        container('nodejs') {
          withCredentials([
                                                                                        kubeconfigFile(credentialsId : env.KUBECONFIG_CREDENTIAL_ID ,variable : 'KUBECONFIG' ,)]) {
              sh 'envsubst < deploy-dev.yaml | kubectl apply -f -'
            }

          }

        }
      }

    }
    environment {
      DOCKER_CREDENTIAL_ID = 'dockerhub-id'
      GITHUB_CREDENTIAL_ID = 'github-id'
      KUBECONFIG_CREDENTIAL_ID = 'demo-kubeconfig'
      REGISTRY = '192.168.0.127:8084'
      DOCKERHUB_NAMESPACE = 'onlee'
      GITHUB_ACCOUNT = 'kubesphere'
      APP_NAME = 'devops-java-sample'
    }
  }

参考

  • KubeSphere 文档

你知道的越多,你不知道的越多。

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

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

相关文章

Grafana+Prometheus打造运维监控系统(一)-安装篇

1. Prometheus、Grafana介绍 Prometheus是一个开源的系统监控和报警系统&#xff0c;Grafana 是一个开源的监控数据分析和可视化套件&#xff0c;利用GrafanaPrometheus组合&#xff0c;打造运维日常的各种指标监控以及数据可视化。 2. Prometheus 2.1 下载 访问&#xff1…

专利-分析方法总结

目录 一、专利分析的意义 二、专利分析的方法&#xff1a; 2.1、行业专利信息分析 2.1.1、专利技术发展趋势分析 2.1.2、专利区域分布分析 2.1.3、专利相关人分析 2.1.4、专利技术主题分析 2.1.5、技术发展路线分析 2.1.6、专利技术功效分析 2.1.7、专利运营分析 3.…

node环境的搭建

一、node的安装&#xff08;可以去文末直接安装nvm管理器&#xff0c;就不用配置了&#xff09; 1 下载 | Node.js,也可以下载以往版本,window是以msi结尾的文件 2 安装,直接一直安装就行,如果有之前安装的版本,先进行卸载,然后再进行安装 3 安装完成后查看版本号 node -vnp…

Linux下文件目录权限管理chmod, chown, chgrp,umask命令使用总结

在Linux系统下常用的文件目录权限管理命令有chmod, chown, chgrp,umask&#xff0c;一直以来都在用&#xff0c;但是没有太注意它们的区别&#xff0c;今天就在这篇文章做个总结。 目录 1. chmod 2. chown 3. chgrp 4. umask 1. chmod 作用&#xff1a;修改某个目录或文件…

C语言实现学生管理系统(顺序表版)

前言 设计知识 使用语言&#xff1a;C语言 数据结构类型&#xff1a;顺序表 内容导图 效果展示 内容目录前言设计知识内容导图效果展示静态管理系统菜单的实现选择功能实现静态开辟空间实现增删功能增加功能实现删除功能实现实现查找功能实现修改功能实现排序功能动态管理系…

rollup打包工具快速入门

0.开始 教学视频出处 https://www.bilibili.com/video/BV1w84y1z77V?p3&spm_id_frompageDriver&vd_source0f7f337dd5a99bb975b88a48ae1b3711 日期&#xff1a;2022/12/3 rollup目前版本&#xff1a; "rollup": "^3.5.1"1.rollup概述 官网 http…

N32G45之串口+DMA数据收发

N32G45之串口DMA数据收发 1.串口简介   通用同步异步收发器(USART)提供了一种灵活的方法与使用工业标准NRZ异步串行数据格式的外部设备之间进行全双工数据交换。 USART利用分数波特率发生器提供宽范围的波特率选择。它支持同步单向通信和半双工单线通信&#xff0c;也支持LI…

【云原生】nacos权限制认证

鉴权 服务端如何开启鉴权 非Docker环境 按照官方文档配置启动,默认是不需要登录的&#xff0c;这样会导致配置中心对外直接暴露。而启用鉴权之后&#xff0c;需要在使用用户名和密码登录之后&#xff0c;才能正常使用nacos。 开启鉴权之前&#xff0c;application.properti…

0115 查找算法Day4

剑指 Offer 03. 数组中重复的数字 在一个长度为 n 的数组 nums 里的所有数字都在 0&#xff5e;n-1 的范围内。数组中某些数字是重复的&#xff0c;但不知道有几个数字重复了&#xff0c;也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。 示例 1&#xff1a; …

Linux-CPU之平均负载

一般我们觉得系统变慢了&#xff0c;都会执行 top 或者 uptime 命令&#xff0c;来了解系统的负载情况。 uptime11:29:06 up 0 min, 2 users, load average: 1.21, 0.29, 0.10// 当前时间 // 系统运行时间 // 正在登录用户数 //1 分钟、5 分钟、15 分钟的平均负载概念&…

补知识点:Stream API

一、创建Stream 首先创建Stream的话&#xff0c;有四种创建方式&#xff1a; 注&#xff1a; 第一种集合的方式是最常用的 package com.atguigu.gulimall.gateway;import com.atguigu.gulimall.streamapi.Employee; import com.atguigu.gulimall.streamapi.EmployeeData; impo…

【应用】Docker

DockerDocker 的安装基本安装流程配置镜像加速Docker 常用命令镜像相关命令容器相关命令DockerfileDockerfile 常用指令Dockerfile 简单使用案例Dockerfile 构建 java 项目镜像Docker ComposeDocker compose 基本参数services 配置参数Docker 的安装 基本安装流程 使用虚拟机…

Linux JDK8下载安装

JDK安装 整体步骤介绍 操作步骤: 1 查看自己linux版本位 getconf LONG_BIT(64位) 2. 下载jdk的安装包 这里提供三种方法下载: (以jdk-8u171-linux-x64.tar.gz为例) 2.1 官网下载jdk: 官网: https://www.oracle.com/downloads/ jdk最新版本下载: https://www.oracle.com…

带你玩转序列模型之seq2seq模型定向(集束)搜索

目录 一.基础模型 二.选择最可能的句子 三.定向搜索 四.改进定向搜索 五.定向搜索的误差分析 一.基础模型 在这一周&#xff0c;你将会学习seq2seq&#xff08;sequence to sequence&#xff09;模型&#xff0c;从机器翻译到语音识别&#xff0c;它们都能起到很大的作用…

【数据结构1】数据结构的基本概念

数据结构的基本概念 数据&#xff1a;数据是信息的载体&#xff0c;是描述客观事物属性的数、字符及所有能输入到计算机中并被计算机程序识别和处理的符号的集合。数据是计算机程序加工的原料。 数据元素、数据项&#xff1a;数据元素是数据的基本单位&#xff0c;通常作为一…

以太网 TCP协议(TCP交互过程中出现丢包时的解决机制-列举部分)

2.7.3 以太网 TCP协议&#xff08;TCP交互过程中出现丢包时的解决机制-列举部分&#xff09; 参考&#xff1a;CSDN_TCP的重传机制_博主.Pr Young&#xff0c;对描述进行了整理与结合个人的理解进行编写。 一、超时重传机制 在发送数据时&#xff0c;设定一个定时器&#xff0c…

Ubuntu下cmake使用入门

CMake是一个跨平台的安装&#xff08;编译&#xff09;工具&#xff0c;可以用简单的语句来描述所有平台的安装(编译过程)。他能够输出各种各样的makefile或者project文件。其包含自己的语法结构&#xff0c;只要按照其语法编写成CMakeLists.txt&#xff0c;然后camke程序就能对…

MAML:User Diverse Preference Modeling by Multimodal AttentiveMetric Learning

一、摘要 大多数现有的推荐系统用特征向量表示用户的偏好&#xff0c;当预测该用户对不同项目的偏好时&#xff0c;假设该特征向量是固定的。然而&#xff0c;同一个向量不能准确地捕捉用户对所有项目的不同偏好&#xff0c;特别是在考虑各种项目的不同特征时。为了解决这个问…

【应用】Kubernetes

Kubernetesk8s 安装流程安装前配置安装 docker 以及 k8s 组件初始化 k8s 集群测试使用&#xff1a;安装 kubernetes-dashboardk8s 基础概念k8s 核心技术概念k8s 内部组件k8s 中的 IP 地址K8S 服务暴露的三种方式k8s 安装流程 k8s-masterk8s-node01k8s-node02192.168.86.140192…

【编程题】【Scratch四级】2022.09 三个数排序

三个数排序 输入三个数&#xff0c;比较三个数的大小&#xff0c;并将这三个数按照从小到大的顺序说出。 1. 准备工作 &#xff08;1&#xff09;保留小猫角色&#xff0c;默认位置&#xff1b; &#xff08;2&#xff09;白色背景。 2. 功能实现 &#xff08;1&#xff…