Golang中遇到“note module requires Go xxx”后的解决方案,不升级Go版本!
前几天,需要对一个两年前写的项目添加点儿新功能,需要用到一个 Http 客户端包,于是就用了 https://github.com/go-resty/resty
这个插件包。
我先是直接在项目根目录下执行了以下包的安装命令:
go get -v github.com/go-resty/resty
然后,在业务代码中按照官方文档实例化了 client := resty.New()
对象,紧接着我想先启动一下项目,看这个包是否正常可用,结果,执行 go run main.go
命令时,就报以下错误了。

问题分析
我们可以看到报错提示是:note: module requires Go 1.17
因为,我现在维护的这个项目是两年前写的,那个时候 Go 比较稳定的版本还是 go 1.16
因此,这个项目也是基于 go 1.16
版本写的。可近期 Go 的版本迭代非常快,截止发稿,现在 Go 已经迭代到 go 1.22.2
版本了,并且每个版本之间差异也不小,因此跨版本之后就需要解决一些兼容性问题。
回到刚刚的报错提示:module requires Go 1.17
我们大致可见就是有部分插件包依赖了 Go 1.17 高版本,而我现在本地版本还是 Go 1.16,版本不兼容导致,那么,应该如何解决这个问题呢?
探讨解决方案
当然,我们可以直接升级一下 Go 的版本,这个问题应该就会迎刃而解。但是,这个项目已经在生产环境上跑了两年多了,现在贸然的去升级 Go 版本,感觉还是有些不妥,毕竟没有什么比项目稳定更加重要了。
不能去升级 Go 版本,那就只有一种解决方案了。
找到有问题的插件包,然后对有问题的依赖包进行降级就好了。但是,问题是:如何快速且准确的找到这个依赖包呢?
我们再回到刚刚的报错提示,可以仔细查看到,可能跟 golang.org/x/sys@v0.13.0
这个包有关系,毕竟错误信息中就含有它。
那么,按照这个思路,我们可以一步一步查到每个包的依赖,方便我们好定位问题。
一般情况下,此时,我们可能会想到直接使用 go mod graph
命令来查看项目现有的结构图,但是,如果这个项目依赖的包不算多,我们还可以勉勉强强捋得清楚相关的依赖,如果依赖包比较多了,估计也看麻了吧……
借助工具来查找依赖关系
你会发现根本无从看起,那么,我们是否可以借助某些工具来查看呢?其实,我也不确定有没有这样的工具,那还是老套路呗,直接去 Github 上搜一波试了看,结果,一搜还真有!
就是这个包:https://github.com/PaulXu-cn/go-mod-graph-chart
看了下包介绍:“一个能将 go mod graph
输出内容可视化的无依赖小工具” ,这不正是我需要的嘛!
果断用起来!
由于这个小工具是一个二进制文件,于是直接使用 go install
命令安装了下。

然后在项目根目录下执行 go mod graph | gmchart -keep 1
(设置 -keep 1
是为了保证 HTTP 服务永不退出,当然也可以完全不设置,如果不设置的话 gmchart 启动的 HTTP 服务就只会启动一分钟。)

当你执行完以上命令之后,会在浏览器中自动打开一个可视化的展示图表。这个工具其实就是将 go mod graph
命令输出的内容以树状的形式渲染成 web 页面展示了出来,更加方便我们查看每个包的依赖关系。

有了这个工具的协助,我们再回过头来去解决刚刚的报错问题。我们可以直接在浏览器中搜索 sys@v0.13.0
关键词,看这个包被哪些包依赖,然后依次检查各个依赖包所支持的版本,如果高于 go 1.16
那么则直接将这个包降级就好了。
搜到 x/sys@v0.13.0
之后,我们对着它点击一下,就可以看见如下,有三个包依赖了 golang.org/x/sys@v0.13.0
包。

现在的思路就是一个一个包去找,把依赖高版本的包找出来。此时我们可以直接访问包的下载地址 golang.org/x/net
发现它会自动重定向到 https://pkg.go.dev/golang.org/x/net
地址上,这是由于官方包换了域名导致,不用太在意这点。

截至写这篇文章时,golang.org/x/net
的 Latest 版本是 v0.22.0,那么,我们如何知道此时的版本依赖于什么版本的 Go 呢?是的,我们可以通过直接去查看这个包的 go.mod
文件,就一目了然了。
在 Go Modules 模式下,项目根目录的 go.mod 文件中,都会记录当前项目依赖的 Go 最低版本。

我们对着 Latest 左侧的版本点一下,以便我们可以查看到所有的版本。因为在我的项目中采用的版本是 golang.org/x/net@v0.17.0
因此,我们先优先查看这个版本的 go.mod
文件。

进入到指定版本页面之后,再点击页面右上方侧的 go.mod
处。

我们就可以看到这个版本的 go.mod 文件了,诶…… 是不是一下子就看到了 go 1.17
字眼了?有点儿小激动了,是不是?那么,我们只需要往前面的版本中去找,只要找到有一个最大的版本是依赖于 go 1.16
就行,然后,我就开始继续找呀找……

点击依赖包的版本位置处,可见所有的版本,然后我们一个版本一个版本的点击后看看。

发现,比较恶心的一幕出现了!连最低的版本 v0.1.0 就是依赖于 go 1.17 ! 真是 WTF !
再次碰壁!遇到难题
那……这个问题就没有解了吗?其实并不是,我们忽略了一点,还有一种版本形式,就是类似于 v0.0.0-20211029224645-99673261e6eb
这种的版本,为什么会有这样的版本,感兴趣的童鞋可以自行去查一查,今天的重点不在这里。
虽然我们知道,这样的版本肯定是小于 v0.1.0 版本的,但是我们又该如何去找到这种版本号的插件包呢?问题一下子就棘手了起来……
此时,我们再把这个事情好好捋顺一下。我是因为要在项目中用到 github.com/go-resty/resty
包,所以我就使用 go get -v github.com/go-resty/resty
命令去下载了这个插件包,然后启动项目的时候就直接报错了。报错内容分析得出是某些包依赖了高版本的 go 1.17 我自己本地使用的是 go 1.16 ,好吧,那我先在项目中不使用 github.com/go-resty/resty
包,看项目是否能够跑得起来。当我在项目中没有去掉了 resty 包之后,项目跑起来了,没有发生错误,证明我之前的项目是正常的,就是因为下载了 resty 包之后导致无法启动的。可是,我现在就想用 resty 包,并且根据以上的排查,我们还发现了 golang.org/x/net
包只能用 v0.0.0 某个具体版本的。
有了这些经验之后,那么,我们来到 resty 包的 go.mod 文件中查看一下。

我们可以看到,当前最新的 resty v2.12.0 版本是支持 go 1.16 的,但是问题就在于此时用的 golang.org/x/net
包是 v0.22.0 版本,通过以上我们的结论来看 v0.22.0 版本是不支持 go 1.16 的,那么,问题就出现在这里了!

找到问题所在了之后,我们就一个版本一个版本的去找,最后终于锁定了 resty v2.7.0
版本!
解决方案
- 直接去项目的
go.mod
文件中添加require github.com/go-resty/resty/v2 v2.7.0
- 再去执行
go mod download github.com/go-resty/resty/v2
下载了指定 v2.7.0 版本的 resty 包 - 再去运行一下项目,就发现跑起来啦!完美!
最后总结一下
- 我本地之前是没有拉取过
resty
包的,因此当我使用go get
命令且没有明确指定版本号的情况下,是直接会拉取最新版本的,也就是go get -v github.com/go-resty/resty
。 - 其实不管是
golang.org/x/sys
包还是golang.org/x/net
包,在我项目中并没直接引用它们,因此,根本就无法在go.mod
文件中去调整它们的版本。另外,哪怕是存在go.mod
文件中,但是后面带了有// indirect
注释的,就算是我们在go.mod
文件中删了这个依赖也没有啥用!
indirect 标识表示该模块为间接依赖,也就是在当前应用程序中的 import 语句中,并没有发现这个模块的明确引用,有可能是你先手动 go get 拉取下来的,也有可能是你所依赖的模块所依赖的,情况有好几种。
- 虽然这两个有冲突的包在
go.mod
文件中不存在,但是在go.sum
文件中是存在的,可不可以直接在go.sum
文件中将其修改或者删除呢?回答是:不可以! 因为此时你只需要执行下go mod tidy
命令,马上又回来了。
其实遇到这个报错时,我也去搜索引擎上查询了一些解决方案,但是多数人的回答都是要升级 go 版本。可是,这个项目已经在生产环境上运行了一段时间了,能够稳定运行的项目,肯定是不能做调整大版本这种大动干戈动作的,不然,出了大问题,可能就直接拿我祭天了。
要是你也遇到了类似的问题,你也不想通过升级 go 版本来解决,也可以试试我说的这个方案。

喜欢的朋友记得点赞、收藏、关注哦!!!
相关文章:
Golang中遇到“note module requires Go xxx”后的解决方案,不升级Go版本!
前几天,需要对一个两年前写的项目添加点儿新功能,需要用到一个 Http 客户端包,于是就用了 https://github.com/go-resty/resty 这个插件包。 我先是直接在项目根目录下执行了以下包的安装命令: go get -v github.com/go-resty/res…...
ubuntu编译ijkplayer,支持rmvb以及mkv
1. 准备环境 sudo apt-get update apt install gcc yasm cmake python p7zip-full vim pkg-config autoconf automake build-essential dos2unix mercurial cmake-curse-gui -y apt-get -y --force-yes install libass-dev libtheora-dev libtool libva-dev libvdpau-dev libv…...
mysql之sql的优化方案(重点)
1、全字段匹配是最棒的 假如一个Staffs 这个表,将 name,age ,pos 组合成了一个联合索引,在where条件下,能够使用到的索引越多越好。 EXPLAIN SELECT * FROM staffs WHERE NAME July; EXPLAIN SELECT * FROM staffs WHERE NAME July AND age…...
使用Qt实现json数据的格式检测并序列化输出 Qt5.4.0环境
问题: 使用 Qt 实现 JSON 数据的格式检测,并输出各个键值 代码: widget.h #include <QWidget> #include <QJsonDocument> /*序列化 反序列化(F1查看帮助文档)*/ #include <QJsonObject> /*利用对象代表了一段json数据*/ …...
Internet协议原理
文章目录 考试说明Chapter 0: 本书介绍Chapter 1: Introduction And Overview 【第1章:引言与概述】Chapter 2: Overview Of Underlying Network Technologies 【第2章:底层网络技术的回顾】Chapter 3: Internetworking Concept And Architectural Model…...
国标GB28181-2022视频平台EasyGBS小知识:局域网ip地址不够用怎么解决?
在局域网中,IP地址不足的问题通常不会在小型网络中出现,但在拥有超过255台设备的大型局域网中,就需要考虑如何解决IP地址不够用的问题了。 在企业局域网中,经常会出现私有IP地址如192.168.1.x到192.168.1.255不够用的情况。由于0…...
CentOS 使用 yum 方式安装 Nginx
CentOS 使用 yum 方式安装 Nginx 文章目录 CentOS 使用 yum 方式安装 Nginx1、Nginx 安装前提条件步骤 1:更新系统软件包步骤 2:查看 Nginx 相关的软件包步骤 3:安装 Nginx步骤 4:启动并启用 Nginx步骤 5:验证 Nginx 是…...
Spring Boot教程之五十一:Spring Boot – CrudRepository 示例
Spring Boot – CrudRepository 示例 Spring Boot 建立在 Spring 之上,包含 Spring 的所有功能。由于其快速的生产就绪环境,使开发人员能够直接专注于逻辑,而不必费力配置和设置,因此如今它正成为开发人员的最爱。Spring Boot 是…...
消息队列:原理、问题与设计全解析
1.如何保证消息的顺序性 保证消息顺序性通常是在分布式系统或网络通信中遇到的一个挑战。以下是几种常见的方法来确保消息的顺序性: 单生产者单消费者模型: 如果系统设计为只有一个生产者和一个消费者,那么保持消息顺序相对简单,…...
成功!QT 5.15.2编译mysql驱动
首选要说明,5.15与6.7编译驱动是完全不同的。搞错了永远编译不出来。 参考 主要是参考安装QT,安装mysql等。 编译成功!QT/6.7.2/Creator编译Windows64 MySQL驱动(MSVC版)_mingw编译qt6.7-CSDN博客 复制mysql的include和lib到一个方便的目…...
【玩转全栈】----Django连接MySQL
阅前先赞,养好习惯! 目录 1、ORM框架介绍 选择建议 2、安装mysqlclient 3、创建数据库 4、修改settings,连接数据库 5、对数据库进行操作 创建表 删除表 添加数据 删除数据 修改(更新)数据: 获取数据 1、OR…...
【Spring Boot】Spring AOP 快速上手指南:开启面向切面编程新旅程
前言 🌟🌟本期讲解关于spring aop的入门介绍~~~ 🌈感兴趣的小伙伴看一看小编主页:GGBondlctrl-CSDN博客 🔥 你的点赞就是小编不断更新的最大动力 🎆那么废话不…...
力扣--54.螺旋矩阵
题目 给你一个 m 行 n 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。 提示: m matrix.length n matrix[i].length 1 < m, n < 10 -100 < matrix[i][j] < 100代码 class Solution { public List spiralOr…...
【Uniapp-Vue3】image媒体组件属性
如果我们想要在页面上展示图片就需要使用到image标签。 这部分最重要的是图片的裁剪,图片的裁剪和缩放属性: mode 图片裁剪、缩放的模式 默认值是scaleToFill 我将用两张图片对属性进行演示,一张是pic1.jpg(宽更长…...
Ubuntu上安装Apache Spark
在Ubuntu上安装Apache Spark的步骤如下: 1. 安装Java Spark是用Scala编写的,并且依赖Java。因此,首先需要安装Java。 安装OpenJDK 8(或更高版本) 执行以下命令安装OpenJDK: sudo apt update sudo apt …...
Nginx入门笔记
Nginx入门笔记 一、Nginx基本概念二、代理1、正向代理2、反向代理 三、准备工作1、CentOS 7安装nginx(1). 安装必要的依赖(2)下载nginx(3)编译安装(4)编译并安装 Nginx(5)启动nginx …...
HTML5 滑动效果(Slide In/Out)详解
HTML5 滑动效果(Slide In/Out)详解 滑动效果(Slide In/Out)是一种常见的动画效果,使元素从一侧滑入或滑出,增强页面的动态感和用户体验。以下是滑动效果的详细介绍及实现示例。 1. 滑动效果的特点 动态视…...
unity学习8:unity的基础操作 和对应shortcut
目录 1 unity的基础操作的工具,就在scene边上 1.1 对应shortcut快捷键 2 物体的重置/ 坐标归到0附近 3 F:快速找到当前gameobject 4 Q:小手和眼睛,在场景中移动 5 W:十字箭头,移动gameobject 6 …...
计算机网络 (32)用户数据报协议UDP
前言 用户数据报协议(UDP,User Datagram Protocol)是计算机网络中的一种重要传输层协议,它提供了无连接的、不可靠的、面向报文的通信服务。 一、基本概念 UDP协议位于传输层,介于应用层和网络层之间。它不像TCP那样提…...
java内存区域 - 栈
目录 java内存区域 - 栈1. Java虚拟机栈的组成2. 栈帧中的详细内容2.1 局部变量表2.2 操作数栈2.3 动态链接2.4 方法返回地址2.5 附加信息 3. JVM栈的生命周期4. 示例解析 - 运行时的栈帧分布5. 栈中的异常6.栈配置7.本地方法栈 java内存区域 - 栈 在JDK11中,JVM栈…...
AI大模型-提示工程学习笔记5
卷首语:我所知的是我自己非常无知,所以我要不断学习。 写给AI入行比较晚的小白们(比如我自己)看的,大神可以直接路过无视了。 零提示是什么 “零提示”(Zero-shot)是指在没有提供任何特定示例…...
跨站脚本攻击(XSS)详解
跨站脚本攻击(XSS)详解 跨站脚本攻击(XSS,Cross-Site Scripting)是一种通过在网页中注入恶意脚本,攻击用户浏览器的漏洞。攻击者可以利用XSS窃取用户敏感信息、劫持会话、或在受害者浏览器中执行恶意操作。…...
【图像加密解密】Logistic混沌映射的彩色图像加密算法复现(含相关性检验)【Matlab完整源码 1期】
1、说明 本文给出详细完整代码、完整的实验报告和PPT。 环境:MATLAB2019a 复现文献:[1]黄硕.基于改进的Logistic混沌映射彩色图像加密算法[J].河南工程学院学报(自然科学版),2015,27(02):63-67. 主要目的是为了快速了解何为混沌序列、混沌序列产生、…...
VUE学习
import { ref } from vue; 引入了 Vue 的 ref 函数,用于创建响应式数据。const message ref(Hello Vue3); 创建了一个响应式变量 message 并初始化为字符串 Hello Vue3。<h1>{{ message }}</h1> 使用了 Vue 的插值表达式 {{ message }} 来显示 message…...
buildroot 编译 x264 及 ffmpeg
buildroot 编译 x264 及 ffmpeg 依赖安装x264编译安装解压源码并修改配置文件配置及编译编译错误: aarch64-linux-ar: two different operation options specified编译结果ffmpeg安装源码编译错误 : ERROR: x264 not found using pkg-config为在rk3568平台上开发音视频采集及…...
HarmonyOS开发:ArkTS初识
ArkTS基本语法 ArkTS语言简介 ArkTS是鸿蒙生态的应用开发语言。基本语法风格与TypeScript(简称TS)相似,在TS的生态基础上进一步扩展,继承了TS的所有特性,是TS的超集。 基本语法概述 扩展能力 基础语法:…...
C++ STL map和set的使用
序列式容器和关联式容器 想必大家已经接触过一些容器如:list,vector,deque,array,forward_list,string等,这些容器统称为系列容器。因为逻辑结构为线性的,两个位置的存储的值一般是…...
VisionPro软件Image Stitch拼接算法
2D图像拼接的3种情景 1.一只相机取像位置固定,或者多只相机固定位置拍图,硬拷贝拼图,采用CopyRegion工具实现 2.一只或多只相机在多个位置拍照,相机视野互相重叠,基于Patmax特征定位后,无缝 拼图ÿ…...
缓存-Redis-缓存更新策略-主动更新策略-Cache Aside Pattern(全面 易理解)
**Cache-Aside Pattern(旁路缓存模式)**是一种广泛应用于缓存管理的设计模式,尤其在使用 Redis 作为缓存层时尤为常见。该模式通过在应用程序与缓存之间引入一个旁路,确保数据的一致性和高效性。本文将在之前讨论的 Redis 主动更新…...
Linux(Centos 7.6)命令详解:cd
1.命令作用 改变当前工作目录(change directory) 2.命令语法 Usage: cd [-L|[-P [-e]]] [dir] 3.参数详解 -L,当目标路径是符号链接时,强制使用符号链接,这是一个默认选项。-P,使用物理路径代替符号链接。-e࿰…...
oracle位运算、左移右移、标签算法等
文章目录 位运算基础与或非同或同或应用场景 异或异或应用场景 什么是真值表 oracle基础函数创建bitor(按位或)函数bitnot(按位非)函数bitxor(按位异或)函数左移函数BITSHIFT()函数(实测不可用,废弃掉该方案)右移函数(略,有此场景吗?) 实际应用资质字典…...
预训练语言模型——BERT
1.预训练思想 有了预训练就相当于模型在培养大学生做任务,不然模型初始化再做任务就像培养小学生 当前数据层面的瓶颈是能用于预训练的语料快被用完了 现在有一个重要方向是让机器自己来生成数据并做微调 1.1 预训练(Pre - training)vs. 传…...
基于Thinkphp6+uniapp的陪玩陪聊软件开发方案分析
使用uni-app框架进行前端开发。uni-app是一个使用Vue.js开发所有前端应用的框架,支持一次编写,多端发布,包括APP、小程序、H5等。 使用Thinkphp6框架进行后端开发。Thinkphp6是一个轻量级、高性能、面向对象的PHP开发框架,具有易…...
C++异常处理
C异常处理 C中的异常处理机制是通过try、throw和catch三个关键字来实现的,主要用于捕获和处理程序执行过程中可能出现的错误或异常情况,从而提高程序的健壮性和可维护性。 基本概念 try块:用于定义一个可能抛出异常的代码块。在这个代码块…...
UVM: TLM机制
topic overview 不建议的方法:假如没有TLM TLM TLM 1.0 整个TLM机制下,底层逻辑离不开动作发起者和被动接受者这个底层的模型基础,但实际上,在验证环境中,任何一个组件,都有可能成为动作的发起者࿰…...
基于机器学习的故障诊断(入门向)
一、原始信号的特征提取 1.EMD经验模态分解的作用 信号分析:EMD可以将信号分解为多个IMFs,每个IMF代表信号中的一个特定频率和幅度调制的成分。这使得EMD能够提供对信号的时频特征进行分析的能力(特征提取用到的)。信号去噪&…...
Linux 磁盘管理命令:使用xfs 管理命令
文章目录 Linux磁盘管理命令使用xfs 管理命令1.命令说明2.建立 XFS 文件系统4.调整 XFS 文件系统各项参数5.在线调整 XFS 文件系统的大小6.暂停和恢复 XFS 文件系统7.尝试修复受损的 XFS 文件系统8.备份和恢…...
《Spring Framework实战》8:4.1.3.Bean 概述
欢迎观看《Spring Framework实战》视频教程 Spring IoC 容器管理一个或多个 bean。这些 bean 是使用 您提供给容器的配置元数据(例如,以 XML <bean/>定义的形式)。 在容器本身中,这些 bean 定义表示为BeanDefinition对象&a…...
Spring Boot教程之五十二:CrudRepository 和 JpaRepository 之间的区别
Spring Boot – CrudRepository 和 JpaRepository 之间的区别 Spring Boot建立在 Spring 之上,包含 Spring 的所有功能。由于其快速的生产就绪环境,使开发人员能够直接专注于逻辑,而不必费力配置和设置,因此如今它正成为开发人员…...
MyBatis面试-1
1、什么是MyBatis? MyBatis是一个半ORM框架(对象关系映射)。---》Hibernate全ORM框架 ---》基于JDBC封装的框架 专注于SQL语句,不用关心JDBC操作的其他流程 2、MyBatis有什么优点 基于SQL语句的编程,相对来说会更加的灵活和JDBC相比&#…...
GDPU Android移动应用 重点习题集
目录 程序填空 ppt摘选 题目摘选 “就这两页ppt,你还背不了吗” “。。。” 打开ppt后 “Sorry咯,还真背不了😜” 程序填空 网上摘选的大题也挺合适的,太难的帮大家过滤掉了,大家可以看一下。 ✨SharedPrefere…...
软件开发为什么要用CI/CD方法
现代化业务离不开应用。事实上,62% 的企业认为,应用对其业务至关重要,还有 36% 的企业认为,通过应用提升了竞争优势2。快速可靠的应用开发是在数字世界取得成功的关键。持续集成/持续部署(CI/ CD)方法可帮助…...
湘潭大学人机交互复习
老师没给题型也没划重点,随便看看复习了 什么是人机交互 人机交互(Human-Computer Interaction,HCI)是关于设计、评价和实现供人们使用的交互式计算机系统,并围绕相关的主要现象进行研究的学科。 人机交互研究内容 …...
Java高频面试之SE-10
hello啊,各位观众姥爷们!!!本牛马baby今天又来了!哈哈哈哈哈嗝🐶 equals和 的区别? 在 Java 中,equals() 方法和 运算符都是用于比较两个对象之间的相等性,但它们的工…...
Java 注解详解:RetentionPolicy 与 ElementType
文章目录 1. RetentionPolicy:注解的生命周期RetentionPolicy 的详细说明SOURCE 示例CLASS 示例RUNTIME 示例 2. ElementType:注解的应用范围ElementType 的详细说明ElementType 示例用于类用于方法用于局部变量 3. RetentionPolicy 与 ElementType 的结…...
javafx 将项目打包为 Windows 的可执行文件exe
要将 JavaFX 项目打包为 .exe 文件,你可以使用一些工具将你的应用程序封装为 Windows 可执行文件。以下是两种常用的方法: 方法 1:使用 jpackage(适用于 JDK 14 及更高版本) jpackage 是 JDK 内置的工具,…...
使用Chrome谷歌浏览器中内置翻译功能
谷歌Chrome浏览器作为全球最受欢迎的网络浏览器之一,提供了强大且便捷的内置翻译功能。这一功能帮助用户轻松跨越语言障碍,浏览试听包括音乐视频直播等网页内容了。 一、启用Chrome内置翻译功能 1、打开谷歌Chrome浏览器:确保你已经安装了最…...
Clojure语言的数据库编程
Clojure语言的数据库编程 引言 在当今社会,数据的处理和管理已经成为一个不可或缺的部分。无论是互联网应用、企业系统还是移动应用,都需要与数据库进行频繁的交互。因此,选择一种合适的编程语言和相应的库来进行数据库编程显得尤为重要。C…...
从零开始:使用VSCode搭建Python数据科学开发环境
引言 在数据科学领域,一个高效、稳定的开发环境是成功的关键。本文将详细介绍如何使用Visual Studio Code搭建一个完整的Python数据科学开发环境。通过本指南,您将学会: 安装和配置VSCode,包括基本设置和快捷键配置设置Python开…...
docker minio镜像arm64架构
minio版本为RELEASE.2021-09-03T03-56-13Z 原项目信创改造,服务器资源改为了arm64架构,统信uos docker镜像库内没有对应的minio镜像,当前镜像为拉取源码后,自编译打包镜像,亲测可用。 使用方式 将tar包导入到服务器…...