当前位置: 首页 > news >正文

Go语言中的包管理工具之Go Modules的使用

GoLang 中常用的包管理的方式

  • 常用的有三种
    • Go Path
    • Go Vendor
    • Go Modules

关于 Go Modules


1 ) 概述

  • Go的包管理,经过社区和官方的共同努力下,最终在百家争鸣后
  • Go官方在 2018.8 推出了go 1.11版本中的Go Modules,并且很快成为一统江湖的包管理方式
  • Go Modules已经成为目前最主流的包管理工具
  • 需要注意的是,go从1.13版本开始 Go Modules 被默认选择使用
  • 在go的1.11 和 go的1.12 版本中,需要我们手动开启 Go Modules
管理方式版本发布时间
GoPath 模式< 1.5 版本2009.11.10
Go Vendor >= 1.5 版本2015.8.19
Go Modules >=1.11 版本 2018.8.24
  • 关于Go Modules,我们必须要搞明白下面这几个问题
    • 第一个是 Go Modules 的用法
    • 第二个是 go.mod 文件是什么时候生成的,有什么作用,具体有哪些内容
    • go.sum 文件是什么时候生成的,有什么作用,具体有哪些内容,其中的哈希值是怎么计算的, 怎么实现包校验的

2 ) Go Modules 用法

  • 在go1.11的时候就发布了 Go Modules, 但是功能默认是关闭的,直到go的1.13版本才开始开启
  • 所以在go 1.11 和 go 1.12 版本中,我们需要通过go提供的变量,GO111MODULE 来开启 Go Modules
    • 这里跟之前的 Go Vendor 里面开启 govendor 的环境变量
    • 即:GO15VENDOREXPERIMENT 这个环境变量类似
  • GO111MODULE 也属于go的阶段性变量
    • 通常在某个功能发布之初的几个版本,是需要手动去开启的
    • 等稳定下来,被开发者接受之后,会在后续的版本中默认开启
  • GO111MODULE,它有三个值
    • 第一个是 on, 它表示开启 Go Modules
    • 第二个是 off 它表示关闭 Go Modules
    • 第三个是 auto
  • 当项目路径在Go Path目录外部时
    • 如果你设置的是 auto 的话,我们这个 GO111MODULE 就会被设置成 on
  • 那当项目路径在 Go Path内部时
    • 即使存在 go.mod 文件, 也会将 GO111MODULE 设置成 off
  • 在Unix环境下(Linux, MacOS)
    • 需要把 GO111MODULE 设置成 on,然后通过 export 将这个环境变量导出
    • export GO111MODULE=on
  • 在Windows环境
    • 我们可以通过 set命令将 GO111MODULE 设置成 on
      • $ set GO111MODULE=on
    • 当然直接修改 Go 的 Path 环境变量也是可以的
  • 还有一种方式是两种类型的操作系统都可以支持的
    • 我们可以通过 $ go env -w GO111MODULE=on
    • 加上 -w 参数来将这个 GO111MODULE 设置成on
    • 如果没有任何输出就是正常了
    • 注意,我们在执行上面这个命令的时候可能会抛出一个 warning
    • 这个waring的意思, 就是说我们不能通过这个 go env 指令去覆盖我们环境变量的设置
    • 也就是说,如果我们在环境变量里面已经设置了 GO111MODULE 这个环境变量
    • 我们就需要去改环境变量里面这个 GO111MODULE 这个值,而不能通过命令的方式去设置
    • 通常这些环境变量可能会在
      • /etc/profile 文件里
      • 或者是 ~/bash.profile文件里
      • 或者是 /etc/.bashrc 文件里
      • 或者是 ~/.bashrc 文件里
      • 或者是 ~/.profile 文件里
    • 需要注意的是,仅仅设置 GO111MODULE,这个环境变量为on
    • 并不能代表项目就使用了 Go Modules 方式来管理包
  • 我们使用 $ go mod init 将项目初始化成一个 Go Modules 工程
  • 这个命令需要在项目的根目录下执行执行成功后,在当前目录下面生成一个 go.mod 的文件

3 ) go mod 的具体用法

  • 需要准备好环境,go版本 需要 >= 1.11
    • 如果go的版本没有到 1.13, 就需要将 GO111MODULE 设置成 on
    • 查看我们当前使用的go版本,通过 $ go version
  • 之后,可能需要设置go代理
    • 如果我们是开发环境,我们可以直接在这个编辑器IDE上进行设置,比如 GoLand
    • 在这个编辑器上,file / settings里面,就可以对这个go的环境变量进行配置
    • 可以找到Go Modules
      • 需要勾选这个 Enable Go modules integration
      • 填入 Environment, 设置 Go Path 和 Go Proxy
      • GOPROXY https://goproxy.cn/,https://mirrors.aliyun.com/goproxy/,direct
      • 这里 direct的意思是当从上面两个途径无法获取,就从源码获取
      • GOPRIVATE 这个变量是内部包的配置,一般在公司部署的私网内的地址
  • 在生产环境中的设置
    • 比如在Unix环境下
      • 我们可以通过将下面
      • export GOPROXY https://goproxy.cn/,https://mirrors.aliyun.com/goproxy/,direct
      • 放入 /etc/profile 里面
    • 在Windows下,通过 set 指令设置 GOPROXY
      • $ set GOPROXY=https://goproxy.cn/,https://mirrors.aliyun.com/goproxy/,direct
    • 也支持 $ go env -w GOPROXY=https://goproxy.cn/,https://mirrors.aliyun.com/goproxy/,direct

4 ) 工程示例

  • $ mkdir go-mod-test && cd go-mod-test 目录, 仅作为示例
  • $ go mod init go-mod 创建一个go-mod工程目录
  • 可看到里面生成一个 go.mod 文件
  • 在这里就可以编写程序了,$ touch main.go
    package mainimport 'github.com/astaxie/beego/logs'func main() {logs.Warn('demo')
    }
    
  • 现在解决 第三方包 引用的问题, 到工程根目录中执行
  • $ go mod tidy
    • 这时候就会自动找到项目以来的包
    • 解决工程中包依赖的关系,如果缺少包,则下载并维护信息到 go.mod
    • 如果没有用的,则移除
  • 执行 go run main.go 正常输出
  • 在 go.mod 下又生成了 go.sum的文件
    • 这里写的是工程所有直接依赖包和间接依赖包
  • go mod download
    • 下载依赖包到本地缓存
    • 如果 go.mod 和 go.sum 已经包含依赖包的信息,而且依赖包还没有下载到本地
    • 这个指令会把依赖包下载到本地
  • go mod vendor
    • 为了兼容 go vendor 模式
    • 在 go mod 发布之前,go vender 使用是比较普遍的
    • go mod 也支持将依赖包通过我们这个go mod vender 指令复制到我们项目 vendor 目录当中
    • 可以看到我们当前这个项目里面是没有 vendor 目录的
    • 那我们在这个项目的根目录里面,执行 go mod vendor
      • 刷新一下,我们可以看到它就为我们生成的一个vendor目录
      • 在 vendor 里面还有一个 modules.txt 文件
      • 这个文件记录了我们当前这个venders里面依赖的包以及包的版本信息。
  • 那上面四个指令是最常用的,还有一些其他指令
    • 比如 $ go help mod 可以看到我们go mod支持的一些指令
    • 这里面包括还有一些 go mod graphgo mod why, 以及 go mod verify
    • 这些是查看和校验依赖的一些指令
    • go mod edit, 我们可以用来编辑这个 go.mod 文件, 平时也很少使用, 我们了解即可

5 ) 关于 go.mod 和 go.sum

  • 接下来需要重点了解两个文件
    • 1 ) go.mod

      • 这个文件里面主要是描述了模块的一些属性
      • 包括它的其他模块的go版本的依赖的信息
        • 里面第一行就是 module 的name,这个name一般使用 git仓库上的路径
        • 第二行是版本信息,项目依赖的最低版本要求,只是获取当前go版本的信息
        • 第三行,require 指令,包含导入的 非工程项目内的包
        • 后面都是 require
        • 工程依赖包有直接依赖包,如beego, 还有间接依赖包
          • 所谓间接依赖包就是直接依赖包的依赖包
          • 如果beego中需要依赖一些包,有一些包没有 go.mod 文件则会添加到工程的 go.mod中
          • 并且生成一个尾版本号
            • 尾版本号格式: 版本号 - UTC的提交时间(提交到github的时间) - commit 哈希的前缀
    • 2 ) go.sum

      • 在触发项目编译后生成,如 go buildgo run等指令
      • 里面详细罗列了项目直接或间接依赖的所有模块的版本
      • 每一条包含了模块依赖的路径,导入的版本和哈希值
      • 每个依赖包有可能有多条信息
        • 一种是有 go mod 标识,后面哈希值是 go.mod 的哈希
        • 另一种没有,则后面的哈希是包的每一个文件的哈希
      • 实现包的校验
        • 当我们拿到某个项目的源代码,并尝试在构地进行构建的时候
        • go命令会从本地缓存中去查找所有 go.mod 中记录的依赖包
        • 并且会计算出本地依赖包的哈希值
        • 然后与我们 go.sum 文件中的记录进行对比, 也就是说
        • 它会检测某地缓存中使用的依赖包的版本是否满足项目中 go.sum 文件中期望的版本
        • 如果不满足,就说明本地缓存目录当中的依赖包版本和项目中go.sum文件记录的版本的哈希值是不一致的
        • 这个时候构建就会被拒绝。
        • 这样就可以确保相同的依赖包在任何环境使用这些依赖包的源码,它都是一样的
        • 依赖包中任何一个文件,包括 go.mod 的改动,都会改变它整体的哈希值
        • 在 go.sum 中记录额外的 go.mod 的文件,就是为了在计算这个依赖树的时候
        • 不用去下载完整的依赖包版本,只根据 go.mod 就可以计算出这个依赖信息
        • 主要目的就是加快这个依赖包的校验
        • 那每条记录的哈希值, 都有一个表示的哈希算法的一个h1的哈希算法。
        • 这个哈希算法是由SHA-256计算出来的
        • 那模块版本的SHA-256的哈希值主要是用来校验当前缓存的模块
        • 用来准备go在今后的操作过程中,保证项目中所有的依赖的那些模块版本都不会被篡改
        • 在每次我们构建项目发现有模块缺少的时候,如果在缓存中不存在
        • 那就需要下载并且计算这个包的哈希
        • 并且添加到 go.sum当中,如果缓存中已经存在,就需要匹配 go.sum 中已有的记录
        • 需要注意的是,在每次缺少模块的时候,也就是说我们需要的依赖包
        • 它不在 go.sum 文件当中,而且是一个公网可下载的包
        • go命令就会去go的校验数据库获取模块的校验和,它的默认配置是这个 sum.golang.org
        • 我们也可以使用中国大陆官方的这个校验数据库 sum.golang.google.cn
        • 这个校验数据库,会查询并获取这个模块的校验和
        • 如果下载的这个模块的校验和与它计算出来的校验和不匹配
        • 那我们的 go mod 命令就没办法成功执行, 那如果能够匹配
        • 就会把校验和写到go.sum文件当中
        • 这里有三种情况,它不会对依赖包做哈希校验
          • 第一种, 就是我们配置的这个 GOPRIVATE 匹配到的包
            • 当我们配置的 GO PRIVATE 这个环境变量被我们 GO PRIVATE 匹配到的这些模块包就不会check sum校验
            • GO PRIVATE 这个变量主要是用来设置我们内部的一些包, 不走 GO PROXY 配置的代理
            • 因为内部的包,基于代码安全的考虑,都不会上传到我们的github上面
          • 第二个, 就是我们可以通过 go mod vendor 命令将依赖包全部下载到我们工程的根目录下的 vendor 目录下面
            • 它可以用来做离线编译
            • 打包到 vendor 目录中的包也不会再做哈希校验
          • 第三个, 就是 GOSUMDB 设置为off的时候
            • 所有的包都不会做包校验,相当于关闭了我们这个go sum的校验
    • 需要注意的是,同一个模块版本的数据只会缓存一份。那所有其他模块呢都会共享使用。

    • 如果你希望清除当前已经缓存的模块的版本数据,可以执行这个 $ go clean -modcache

6 ) go.mod 和 go.sum 对比

  • 为什么我们看到的 go.sum 文件中记录的依赖包的版本数量会比go.mod 文件要多很多
  • go.mod 记录的是直接依赖的依赖包版本,直接依赖包版本,不含 go.mod 文件时,才记录构建依赖赖的版本
  • go.sum则是要记录构建依赖到的所有依赖包的版本,它包括直接依赖包和间接依赖包

7 )关闭依赖包校验

  • 如果不希望进行依赖包校验,可以关闭
  • 可以将这个GOSUMDB 设置成 off 就可以关闭我们当前的 go sum 校验
    • $ go env -w GOSUMDB=off
    • 或 将环境变量添加到 /etc/profile

8 ) 依赖包的存储对比

  • Go Path 模式下和 Go Modules 模式下,依赖包的存储路径是不一样的
  • 在 Go Path 模式下,依赖包存储在这个 $GOPATH/src
  • 这个目录下只保存特定依赖包的一个版本
  • 我们通过 go get 下载的包,也包含完整的仓库信息的,也就是包含了 .git 的目录
  • 而我们在 GOMODULES 模式下,依赖包会存储在这个 $GOPATH/pkg/mod 下面
    • 而且这个目录下面可以存储特定依赖包的多个版本
    • 每个版本会占用一个目录,那这个目录里面,只包含依赖包文件,不包含 .git 的目录

Go编码原则与建议

  • 构建go项目的时候,也需要遵循一些原则和规范性的建议
  • 1 ) 我们一个目录名,下面只能有一个package,否则我们的编译器就会报错
  • 2 ) 建议一个package名的内容放在一个目录下面, 方便我们做项目管理
  • 3 ) 建议目录名和package名保持一致,这样也能方便我们对项目进行管理

相关文章:

Go语言中的包管理工具之Go Modules的使用

GoLang 中常用的包管理的方式 常用的有三种 Go PathGo VendorGo Modules 关于 Go Modules 1 ) 概述 Go的包管理&#xff0c;经过社区和官方的共同努力下&#xff0c;最终在百家争鸣后Go官方在 2018.8 推出了go 1.11版本中的Go Modules&#xff0c;并且很快成为一统江湖的包…...

【c/c++】指针例图基础详解

文章目录 指针变量内存指针详解例1例2练习&答案解析 指针变量内存 int main(){// 各类型变量占字节数printf("char: %d\n",sizeof(char)); // 1printf("short: %d\n",sizeof(short)); // 2printf("int: %d\n",sizeof(int)); // 4pri…...

TCP/IP的网络层(即IP层)之IP地址和网络掩码,在视频监控系统中的配置和应用

在给客户讲解我们的AS-V1000视频监控平台的时候&#xff0c;有的客户经常会配置错误IP地址的掩码和网关&#xff0c;导致出现一些网路问题。而在视频监控系统中&#xff0c;IP地址和子网掩码是用于标识网络中设备的重要标识符。IP地址被用来唯一地标识一个网络设备&#xff0c;…...

代码随想录刷题 | Day1

今日学习目标 一、基础 数组 array类 模板类vector 数组是存放在连续内存空间上的相同类型数据的集合。 数组可以方便的通过下标索引的方式获取到下标下对应的数据。 需要两点注意的是 数组下标都是从0开始的。 数组内存空间的地址是连续的 而且大家如果使用C的话&…...

查看IOS游戏FPS

摘要 本篇技术博客将介绍如何使用克魔助手工具来查看iOS游戏的帧率&#xff08;FPS&#xff09;。通过克魔助手&#xff0c;开发者可以轻松监测游戏性能&#xff0c;以提升用户体验和游戏质量。 引言 在iOS游戏开发过程中&#xff0c;了解游戏的帧率对于优化游戏性能至关重要…...

挑战Python100题(7)

100+ Python challenging programming exercises 7 Question 61 Print a unicode string "hello world". Hints: Use ustrings format to define unicode string. 打印一个unicode字符串“helloworld”。 提示:使用u“字符串”格式定义unicode字符串。 Solution…...

HarmonyOS自学-Day4(TodoList案例)

目录 文章声明⭐⭐⭐让我们开始今天的学习吧&#xff01;TodoList小案例 文章声明⭐⭐⭐ 该文章为我&#xff08;有编程语言基础&#xff0c;非编程小白&#xff09;的 HarmonyOS自学笔记&#xff0c;此类文章笔记我会默认大家都学过前端相关的知识知识来源为 HarmonyOS官方文…...

LTPI协议的理解——2、LTPI实现的底层架构

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 LTPI协议的理解——2、LTPI实现的底层架构 前言一、体系结构三、实现细节四、物理接口信号传输方法总结 前言 前面讲了LTPI的定义和大概结构&#xff0c;接下来继续理解LTPI…...

CentOS 8.2 安装 Mysql 5.7.26(单机)

Mysql二进制包: mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz 1、卸载旧环境 rpm -qa|grep mysql rpm -qa|grep mariadb rpm -e XXX.rpm --nodeps # 强制卸载rpm包 rm -rf /etc/my.cnf rm -rf /etc/mysql rm -rf /usr/local/mysql 2、安装依赖包 yum -y install libaio yum…...

Vue Tinymce富文本组件自定义带下拉框的操作按钮

想实现如下效果 首先在init方法中的props&#xff0c;toolbar属性增加一个自定义按钮 增加一个setup方法 代码 setup: function(editor) { editor.ui.registry.addSplitButton(myDateButton, {text: 日期时间,onAction: (_) > editor.insertContent(getJsMonthDay(getNowDat…...

YOLOv5算法进阶改进(10)— 更换主干网络之MobileViTv3 | 轻量化Backbone

前言:Hello大家好,我是小哥谈。MobileViTv3是一种改进的模型架构,用于图像分类任务。它是在MobileViTv1和MobileViTv2的基础上进行改进的,通过引入新的模块和优化网络结构来提高性能。本节课就给大家介绍一下如何在主干网络中引入MobileViTv3网络结构,希望大家学习之后能够…...

Java UDP

接收方 创建DatagramSocket实例并指定端口。创建DatagramPacket实例接收信息。调用DatagramSocket的receive()方法将接收信息并传递给DatagramPacket。通过DatagramPacket的getData()方法获取信息内容&#xff0c;getLength()方法获取长度。 package io.github.jast90.udp;im…...

Halcon阈值处理的几种分割方法threshold/auto_threshold/binary_threshold/dyn_threshold

Halcon阈值处理的几种分割方法 文章目录 Halcon阈值处理的几种分割方法1. 全局阈值2. 基于直方图的自动阈值分割方法3. 自动全局阈值分割方法4. 局部阈值分割方法5. var_threshold算子6 . char_threshold 算子7. dual_threshold算子 在场景中选择物体或特征是图像测量或识别的重…...

FB混合C语言编译

这是群友分享的方法&#xff0c;这里只是作为记录和分享。 有了这个功能&#xff0c;可以很方便的拷贝一下C或者C代码直接用到FB上。 既然是混合C语言编译&#xff0c;当然得有C的代码。比如随便去网上找两个排序&#xff1a;冒泡排序和选择排序&#xff0c;代码如下&#xf…...

【机器学习】深度学习概论(二)

五、受限玻尔兹曼机&#xff08;Restricted Boltzmann Machine&#xff0c;RBM&#xff09; 5.1 RBM介绍 示例代码&#xff1a; Python 编写了一个简单的 RBM 实现&#xff0c;并用一些假数据训练了它。然后&#xff0c;他展示了如何用 RBM 来解释用户的电影偏好&#xff0c;以…...

词法语法语义分析程序设计及实现,包含出错提示和错误恢复

词法说明 (1)关键字 main, int, char, if, else, for, while, void (2)运算符 - * / < < > > ! (3)界符 ; ( ) { } (4)标识符 ID letter(letter|digit)* (5)整型常数 NUM digit digit* (6)空格 ‘ ‘ ‘\n’ ‘\r’ ‘\t’ 空格用来分隔ID,NUM,运算符,界…...

Linux的capability深入分析

from:https://www.cnblogs.com/iamfy/archive/2012/09/20/2694977.html 一)概述: 1)从2.1版开始,Linux内核有了能力(capability)的概念,即它打破了UNIX/LINUX操作系统中超级用户/普通用户的概念,由普通用户也可以做只有超级用户可以完成的工作. 2)capability可以作用在进程上…...

【自然语言处理】类似GPT的模型

除了GPT (Generative Pre-trained Transformer) 之外&#xff0c;还有一些其他的好用的类似工具可以用来生成文本。以下是几个受欢迎的工具&#xff1a; BERT (Bidirectional Encoder Representations from Transformers): BERT 是一个预训练的深度双向 Transformer 模型&#…...

【Unity】【FBX】如何将FBX模型导入Unity

【背景】 网上能够找到不少不错的FBX模型资源&#xff0c;大大加速游戏开发时间。如何将这些FBX导入Unity呢&#xff1f; 【步骤】 打开Unity项目文件&#xff0c;进入场景。 点击Projects面板&#xff0c;右键选择Import New Assets 选中FBX文件后导入。Assets文件夹中就会…...

腾讯云标准型S5服务器4核8G配置优惠价格表

腾讯云4核8G服务器S5和轻量应用服务器优惠价格表&#xff0c;轻量应用服务器和CVM云服务器均有活动&#xff0c;云服务器CVM标准型S5实例4核8G配置价格15个月1437.3元&#xff0c;5年6490.44元&#xff0c;轻量应用服务器4核8G12M带宽一年446元、529元15个月&#xff0c;腾讯云…...

学习笔记:R语言基础

文章目录 一、R语言简介二、选择R的原因三、R基本数据对象&#xff08;一&#xff09;向量&#xff08;二&#xff09;矩阵&#xff08;三&#xff09;数组&#xff08;四&#xff09;因子&#xff08;五&#xff09;列表&#xff08;六&#xff09;数据框&#xff08;七&#…...

初识智慧城市

文章目录 智慧家居 智慧社区 智慧交通 智慧医疗 智慧教育 智慧旅游 智慧农业 智慧安防 智慧家居 利用智能语音、智能交互等技术,实现用户对家居系统各设备的远程操控和能控制如开关窗帘(窗户)、操控家用电器和照明系统、打扫卫生等操作。利用计算机视觉等技术,对被照看…...

Zookeeper之手写一个分布式锁

前言 我之前写了一篇快速上手ZK的文章&#xff1a;https://blog.csdn.net/qq_38974073/article/details/135293106 本篇最要是进一步加深学习ZK&#xff0c;算是一次简单的实践&#xff0c;巩固学习成果。 设计一个分布式锁 对锁的基本要求 可重入&#xff1a;允许同一个应…...

【音视频 ffmpeg 学习】 RTMP推流 mp4文件

1.RTMP(实时消息传输协议)是Adobe 公司开发的一个基于TCP的应用层协议。 2.RTMP协议中基本的数据单元称为消息&#xff08;Message&#xff09;。 3.当RTMP协议在互联网中传输数据的时候&#xff0c;消息会被拆分成更小的单元&#xff0c;称为消息块&#xff08;Chunk&#xff…...

跨进程通信 macOS XPC 创建实例

一&#xff1a;简介 XPC 是 macOS 里苹果官方比较推荐和安全的的进程间通信机制。 集成流程简单&#xff0c;但是比较绕。 主要需要集成 XPC Server 这个模块&#xff0c;这个模块最终会被 apple 的根进程 launchd 管理和以独立进程的方法唤起和关闭&#xff0c; 我们主app 进…...

Python圣诞树代码

Python圣诞树代码 # 小黄 2023/12/25import turtle as t # as就是取个别名&#xff0c;后续调用的t都是turtle from turtle import * import random as rn 100.0speed(20) # 定义速度 pensize(5) # 画笔宽度 screensize(800, 800, bgblack) # 定义背景颜色&#xff0c;可…...

flask之文件管理系统-项目 JRP上线啦!!! ---修订版,兼容Windows和Linux系统

上一章的版本https://blog.csdn.net/weixin_44517278/article/details/135275066&#xff0c;在Windows下debug完成无异常后&#xff0c;上传到我的树莓下开始正式服役 由于开发环境是Windows&#xff0c;使用环境是Linux&#xff0c;导致最后没能成功运行起来 这个版本是今天去…...

希尔排序:排序算法中的调优大师

希尔排序&#xff1a;排序算法中的调优大师 大家好&#xff0c;我是免费搭建查券返利机器人赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01;今天&#xff0c;让我们一同探讨一个经典而高效的排序算法——希尔排序。…...

LeetCode 1185. 一周中的第几天

一、题目 1、题目描述 给你一个日期&#xff0c;请你设计一个算法来判断它是对应一周中的哪一天。 输入为三个整数&#xff1a;day、month 和 year&#xff0c;分别表示日、月、年。 您返回的结果必须是这几个值中的一个 {"Sunday", "Monday", "Tues…...

大数据学习(30)-Spark Shuffle

&&大数据学习&& &#x1f525;系列专栏&#xff1a; &#x1f451;哲学语录: 承认自己的无知&#xff0c;乃是开启智慧的大门 &#x1f496;如果觉得博主的文章还不错的话&#xff0c;请点赞&#x1f44d;收藏⭐️留言&#x1f4dd;支持一下博主哦&#x1f91…...

做网站都需要数据库吗/民宿平台搜索量上涨

编辑&#xff1a;哈雷 | 来源&#xff1a;巨盒创意 | 欢迎转发到朋友圈 日常工作中&#xff0c;我们可能有这样的需求&#xff0c;我们的数据分别存放在N个工作簿里&#xff0c;我们需要把这些零散的数据都移动到一个工作簿里面&#xff0c;而且每张工作表分别存在&#xf…...

网站建设公司谁家好/百度搜索关键词优化

今天突然注意到$ls -l显示文件时&#xff0c;权限列后面有个点。如&#xff1a;-rw-rw-r--. 1 user group 13767 12月 25 2014 index.html解释&#xff1a;开启了SELinux功能的Linux系统才会有这个点。那个点表示文件带有“SELinux的安全上下文”。CentOS7默认是开启SELinux的&…...

wordpress视频略缩图/域名解析查询工具

这篇文章主要为大家详细介绍了python小程序: 剪子&#xff0c;石头&#xff0c;布实例代码,具有一定的参考价值&#xff0c;感兴趣的小伙伴们可以参考一下 闲来无事&#xff0c;写一个小程序&#xff0c;练习一下python&#xff0c;哈哈&#xff1a; #!/usr/bin/env python #co…...

建设银行上海黄浦支行网站/应用关键词优化

本文介绍如何搭建四节点的Oracle Linux 7集群以及oozie的High Availability。环境如下图&#xff1a;一、创建HA集群1、安装集群软件包分别在4个节点上安装&#xff0c;如下&#xff1a; [roothdp01 ~]# yum install pcs fence-agents-all -y [roothdp02 ~]# yum install pcs…...

wordpress 非80端口/怎么快速刷排名

目录LVS介绍LVS集群类型LVS调度算法ipvsadm/ipvsLVS-NAT模型演练LVS-DR模型演练LVS定义多集群FWM实现多集群统一调度LVS持久连接每端口持久每FWM持久每客户端持久LVS介绍一般来说&#xff0c;LVS采用三层结构&#xff1a;负载调度器、服务器池、共享存储。工作在TCP/IP协议的四…...

企业宣传软文/seo网站关键词优化怎么做

文章目录前言一、ELK添加SQL插件和浏览器插件1.配置插件2.浏览器插件3.Elasticsearch术语介绍4.测试SQL插件和浏览器插件前言 下载SQL插件地址&#xff1a;https://github.com/NLPchina/elasticsearch-sql 我们选择7.15.2版本&#xff0c;ES页选择7.15.2版本把最后面的下载链…...