范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

go。sum工作机制

  为了确保一致性构建,Go引入了go.mod文件来标记每个依赖包的版本,在构建过程中go命令会下载go.mod中的依赖包,下载的依赖包会缓存在本地,以便下次构建。 考虑到下载的依赖包有可能是被黑客恶意篡改的,以及缓存在本地的依赖包也有被篡改的可能,单单一个go.mod文件并不能保证一致性构建。
  为了解决Go module的这一安全隐患,Go开发团队在引入go.mod的同时也引入了go.sum文件,用于记录每个依赖包的哈希值,在构建时,如果本地的依赖包hash值与go.sum文件中记录得不一致,则会拒绝构建。
  go.sum文件记录
  go.sum文件中每行记录由module名、版本和哈希组成,并由空格分开: [/go.mod] 
  比如,某个go.sum文件中记录了github.com/google/uuid 这个依赖包的v1.1.2版本的哈希值:github.com/google/uuid v1.1.2 h1:EVhdT+1Kseyi1/pUmXKaFxYsDNy9RQYkMWRH68J/W7Y= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
  正常情况下,每个依赖包版本会包含两条记录,第一条记录为该依赖包版本整体(所有文件)的哈希值,第二条记录表示该依赖包版本中go.mod文件的哈希值,如果该依赖包版本没有go.mod文件,则只有第一条记录。如上面的例子中,v1.1.2表示该依赖包版本整体,而v1.1.2/go.mod表示该依赖包版本中go.mod文件。
  依赖包版本中任何一个文件(包括go.mod)改动,都会改变其整体哈希值,此处再额外记录依赖包版本的go.mod文件主要用于计算依赖树时不必下载完整的依赖包版本,只根据go.mod即可计算依赖树。
  每条记录中的哈希值前均有一个表示哈希算法的h1:,表示后面的哈希值是由算法SHA-256计算出来的
  go.sum文件中记录的依赖包版本数量往往比go.mod文件中要多,这是因为二者记录的粒度不同导致的。go.mod只需要记录直接依赖的依赖包版本,只在依赖包版本不包含go.mod文件时候才会记录间接依赖包版本,而go.sum则是要记录构建用到的所有依赖包版本。
  生成
  当我们在GOMODULE模式下引入一个新的依赖时,通常会使用go get命令获取该依赖,比如:go get github.com/google/uuid@v1.0.0
  go get命令首先会将该依赖包下载到本地缓存目录$GOPATH/pkg/mod/cache/download,该依赖包为一个后缀为.zip的压缩包,如v1.0.0.zip。go get下载完成后会对该.zip包做哈希运算,并将结果存放在后缀为.ziphash的文件中,如v1.0.0.ziphash。如果在项目的根目录中执行go get命令的话,go get会同步更新go.mod和go.sum文件,go.mod中记录的是依赖名及其版本,如:require ( 	github.com/google/uuid v1.0.0 )
  go.sum文件中则会记录依赖包的哈希值(同时还有依赖包中go.mod的哈希值),如:github.com/google/uuid v1.0.0 h1:b4Gk+7WdP/d3HZH8EJsZpvV7EtDOgaZLtnaNGIu1adA= github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
  在更新go.sum之前,为了确保下载的依赖包是真实可靠的,go命令在下载完依赖包后还会查询GOSUMDB环境变量所指示的服务器,以得到一个权威的依赖包版本哈希值。如果go命令计算出的依赖包版本哈希值与GOSUMDB服务器给出的哈希值不一致,go命令将拒绝向下执行,也不会更新go.sum文件。
  go.sum存在的意义在于,希望别人或者在别的环境中构建当前项目时所使用依赖包跟go.sum中记录的是完全一致的,从而达到一致构建的目的。
  校验
  假设我们拿到某项目的源代码并尝试在本地构建,go命令会从本地缓存中查找所有go.mod中记录的依赖包,并计算本地依赖包的哈希值,然后与go.sum中的记录进行对比,即检测本地缓存中使用的依赖包版本是否满足项目go.sum文件的期望。
  如果校验失败,说明本地缓存目录中依赖包版本的哈希值和项目中go.sum中记录的哈希值不一致,go命令将拒绝构建。 这就是go.sum存在的意义,即如果不使用期望的版本,就不能构建。
  校验和数据库
  环境变量GOSUMDB标识一个checksum database,即校验和数据库,实际上是一个web服务器,该服务器提供查询依赖包版本哈希值的服务。
  该数据库中记录了很多依赖包版本的哈希值,比如Google官方的sum.golang.org则记录了所有的可公开获得的依赖包版本。除了使用官方的数据库,还可以指定自行搭建的数据库,甚至干脆禁用它(export GOSUMDB=off)。
  如果系统配置了GOSUMDB,在依赖包版本被写入go.sum之前会向该数据库查询该依赖包版本的哈希值进行二次校验,校验无误后再写入go.sum。
  如果系统禁用了GOSUMDB,在依赖包版本被写入go.sum之前则不会进行二次校验,go命令会相信所有下载到的依赖包,并把其哈希值记录到go.sum中。

从芯片到系统FPGA加速卡的发展历程与展望AI先锋周刊是家关注人工智能学术研究产业生态链技术落地边缘应用等维度的先锋电子新媒体。欢迎广大热爱AI的同道中人阅读评论转发投稿,记得点击关注,随时获取全球AI最新讯息。来源老石谈明年开始机器人将开始取代人类进行工作?市场研究机构ForresterResearch去年公开发布了两份题为预测2019自动化以及预测2019人工智能的报告。报告中显示,在2019年,机器人流程自动化(RPA)和人工智能Audacity2。3。1发布,恢复Linux支持Audacity2。3。1已发布,这是一款跨平台的开源音频编辑器和录制工具,可在MacOSXMicrosoftWindowsGNULinux和其它操作系统上运行。Audacity在苹果的AR智能眼镜可能距离生产开始还有几个月的时间玩懂手机网3月10日资讯,苹果公司对于增强现实硬件的产品一直非常有兴趣,多年来苹果收购了多个这方面的专利来试图推动AR,蒂姆库克也希望借助AR和iPhone相互结合让苹果的技术潜力一起来了解一下HTTP3HTTPoverQUIC被重命名为HTTP3IETF同意将下一个主要的HTTP迭代基于Google的QUIC协议互联网工程任务组(IETF)官员透露,HTTPoverQUIC实验协AntDesign3。15。0发布,企业级UI设计语言和React实现AntDesign3。15。0发布了,AntDesign是蚂蚁金服开发和正在使用的一套企业级前端设计语言和基于React的前端框架实现。特性提炼自企业级中后台产品的交互语言和视觉风跨境电商概念联络互动基本面杭州联络互动信息科技股份有限公司,公司是国内首家移动互联网上市公司。公司目前公司主营业务分为联络电商联络传媒联络智能三大版块。联络电商拥有北美第二大科技类电商平台Newegg深度全息全息与深度神经网络的相遇随着数学优化和计算硬件的迅猛发展,深度神经网络(DeepNeuralNetworks,DNN)(名词解释)已然成为解决各领域中许多挑战性问题的强大工具,包括决策计算成像全息技术等。醒醒,不要再假装上课了近期,教育部等五部门印发关于加强普通高等学校在线开放课程教学管理的若干意见。其中强调,严格学生在线学习规范与考试纪律,严禁通过非法软件或委托第三方提供的人工或技术服务等方式获取学习比亚迪老总承认比亚迪名字是瞎编的,这是怎么回事?谁能想到,一家年营收超过千亿元,市值更是逼近7000亿大关的A股上市公司,其企业名称竟然是瞎编的?近日,比亚迪董事长王传福在被问及为什么会取名叫比亚迪时,表示深圳的企业很多,起两个京东裁员杀红眼了!说要给n1,员工签字后,公司又反悔了如今又有京东员工爆料京东裁员杀红了眼,谈话时说要给n1,字都签了,又反悔不想给了!该员工感叹去年做的最错的决定就是选择了京东offer,所谓的大厂稳定就是个伪命题!网友说,大厂是最
网友称有手机软件开屏广告摇一摇即进入工信部回应来源人民日报加大手机软件广告治理力度(建议回复)近日,河北石家庄市网友邹先生在人民网领导留言板反映,有些手机软件开屏广告是摇一摇进入的,如果手机没拿稳,轻微摇晃一下,就会进入广告,大学生需要建模,设计,画图需要买什么样的电脑?大学生需要建模,设计,画图需要买什么样的电脑?首先不要买轻薄本和超级本,最好选择游戏本,就是有点重,带出去不太方便,当然像部分不太注重电脑性能,又很需要经常外出携带的专业,还是可以当年卖肾的高中生怎么样了?9年前,17岁高中生将一个肾脏卖给了黑市,作为报酬他得到了2。2万元,而他就用这笔钱换取了自己梦寐以求的iPhone4s。自此以后,iPhone也被网友调侃为肾机。但是拿到自己心爱美媒评出消费电子展最酷新品索尼Master系列Z9K据美国新闻周刊网站1月5日报道,今年的消费电子展(CES)延续了为接下来的一年里我们可以期待的各种技术定下基调的传统。在这里,我们能看到最酷的电视机机器人头戴式耳机儿童玩具和介于它美媒评出消费电子展最酷新品三星BespokeJet吸尘器据美国新闻周刊网站1月5日报道,今年的消费电子展(CES)延续了为接下来的一年里我们可以期待的各种技术定下基调的传统。新闻周刊刊文介绍了2022年美国消费电子展25款最酷的新产品装美媒评出消费电子展最酷新品三星Freestyle投影仪据美国新闻周刊网站1月5日报道,今年的消费电子展(CES)延续了为接下来的一年里我们可以期待的各种技术定下基调的传统。新闻周刊刊文介绍了2022年美国消费电子展25款最酷的新产品装小米双接口U盘新品上线99元起1月21日,官方宣布,小米双接口U盘新品上线,售价99元起,提供64GB和128GB两种容量可选,在小米商城小米之家小米有品天猫同步开售。小米双接口U盘兼容USBTypeC和USB外媒谷歌正在研发带有定制处理器的AR耳机1月21日消息,据外媒报道,谷歌正在研发一款新的AR耳机。该项目内部被称为ProjectIris,专注于开发一款面向消费者的AR头戴式设备,目前仍处于开发的早期阶段。谷歌的新一代A国内混不下去,却在非洲躺赢成王者,中国制造到底还藏着多少惊喜这样一部手机(12纳米芯片6。52英寸屏幕4800万像素前后双摄人脸解锁双卡双待6000mAh电池可待机36天)你猜卖多少?(这句说完停顿下)折合人民币747元(TecnoSpar2022年键盘操作大全键盘操作方法。1Esc取消键2F1F12键功能键。在不同的软件中,起为其定义的相应功能的作用,也可以配合其他的键起作用。例如在常用软件中按一下F1是帮助功能。3Tab切换键。4Ca加大手机软件广告治理力度来源人民网人民日报近日,河北石家庄市网友邹先生在人民网领导留言板反映,有些手机软件开屏广告是摇一摇进入的,如果手机没拿稳,轻微摇晃一下,就会进入广告,建议相关部门督促改进。对此,工