Linux运维_Bash脚本_源码安装Go-1.21.11
Linux运维_Bash脚本_源码安装Go-1.21.11
Bash (Bourne Again Shell) 是一个解释器,负责处理 Unix 系统命令行上的命令。它是由 Brian Fox 编写的免费软件,并于 1989 年发布的免费软件,作为 Sh (Bourne Shell) 的替代品。
您可以在 Linux 和 MacOS 机器上使用 Bash,甚至可以通过适用于 Linux 的 Windows 子系统在 Windows 10 机器上使用。
使用方法
- 下载源码包:
go1.4-bootstrap-20171003.tar.gz
go1.16.src.tar.gz
go1.17.3.src.tar.gz
go1.21.11.src.tar.gz
- 放于指定路径:
这里 Bash Shell 脚本的全局变量 STORAGE 指定的存放源码包的路径 /home/goufeng 可进行修改。
- 执行 Bash Shell 脚本:
输入 /[路径名]/[脚本名].sh 即可进行自动编译部署,过程中提示输入 (y/n) 输入 y 则进行下一步,这样分阶段确认的原因是为了确保能够看到上一个源码编译结果中可能的错误和提示。
完整脚本
#! /bin/bash
# Create By GF 2024-08-03 01:34# --------------------------------------------------
# Install First:
# * GCC# ----------------- Dep for Go 1.16 ----------------
# Need File: go1.4-bootstrap-20171003.tar.gz
# -------------------- Go - 1.16 -------------------
# Need File: go1.16.src.tar.gz
# ------------------- Go - 1.17.3 ------------------
# Need File: go1.17.3.src.tar.gz
# ------------------- Go - 1.21.11 -----------------
# Need File: go1.21.11.src.tar.gz# ##################################################
STORAGE=/home/goufeng# ########################################## Dep for Go 1.16 ########################################## Function: 制作安装(Make Install) Go-1.4-Bootstrap-20171003
# ##################################################
function Make_Install_Go_1_4_Bootstrap_20171003() {# Compile Error Handle:# ----------------------------------------------# /home/liu/go1.4/src/lib9/fmt/fltfmt.c: In function '__efgfmt':# /home/liu/go1.4/src/lib9/fmt/fltfmt.c:437:5: error: this statement may fall through [-Werror=implicit-fallthrough=]# if(ndigits > prec) {# ^# /home/liu/go1.4/src/lib9/fmt/fltfmt.c:451:2: note: here# default:# ^~~~~~~# cc1: all warnings being treated as errors# ..............................................# 1. 确认 switch 语句: 找到包含 default: 的 switch 语句。# 2. 检查 case 分支: 查看在 default: 之前的所有 case 分支, 确保每个分支在结束时都有适当的 break (或 return、continue 等, 取决于上下文)。# 3. 理解逻辑: 确保 switch 语句的逻辑是你所期望的。如果某个 case 分支确实应该允许控制流落入下一个 case 或 default, 那么确保这是有意的, 并且代码的可读性和可维护性不会因此受损。# 4. 修改代码: 如果发现有不必要的 fall through, 添加缺失的 break 语句。如果 fall through 是有意的, 但编译器警告你, 你可以考虑使用编译器特定的注释来指示这是预期的行为 (例如, 对于 GCC 和 Clang, 你可以在两个 case 之间添加 // fall through 注释)。# ----------------------------------------------# /home/goufeng/go/src/cmd/6c/txt.c: In function 'gmove':# /home/goufeng/go/src/cmd/6c/txt.c:995:28: error: left shift of negative value [-Werror=shift-negative-value]# f->vconst |= (vlong)~0 << 32;# ^~# /home/goufeng/go/src/cmd/6c/txt.c:1045:28: error: left shift of negative value [-Werror=shift-negative-value]# f->vconst |= (vlong)~0 << 32;# ^~# cc1: all warnings being treated as errors# ..............................................# 这个错误是由于在 C 语言中, 对负数进行左移操作是不被允许的, 尤其是在严格的编译环境下 (如你的编译器将所有警告视为错误)。# 在代码中, (vlong)~0 << 32 试图将一个全为 1 的负数 (通过 ~0 得到) 左移 32 位。这通常用于设置一个特定大小的数据类型的所有位为 1, 但在 C 语言中, 直接对负数进行位移操作可能会导致未定义行为。# 可以通过确保参与位移操作的值是正数或无符号数来避免这个错误。可以显式地将 ~0 转换为无符号类型来解决这个问题, 例如:# 将 "f->vconst |= (vlong)~0 << 32;" 改为 "f->vconst |= (vlong)((unsigned long long)~0ULL << 32);"。if [[ ! -d "/opt/go-1.4-bootstrap-20171003" ]]; thenlocal VERIFYlocal STEP_UNZIPPED=0local STEP_MOVED=0local STEP_CHANGE_DIRECTORY=0local STEP_MADE=0# ------------------------------------------read -p "[Confirm] Make and Install ( go-1.4-bootstrap-20171003 )? (y/n)>" VERIFYif [[ "$VERIFY" != "y" ]]; then exit 1; fi# ------------------------------------------tar -zxvf $STORAGE/go1.4-bootstrap-20171003.tar.gz && STEP_UNZIPPED=1# ------------------------------------------# The compilation directory of "Go" needs to be stored properly. After compilation, "GOROOT" defaults to the compilation directory.# Go 的编译目录需要妥善存放, 编译完成后, GOROOT 默认在编译目录下。cp -r $STORAGE/go /opt/go-1.4-bootstrap-20171003 && STEP_MOVED=1# ------------------------------------------cd /opt/go-1.4-bootstrap-20171003/src && STEP_CHANGE_DIRECTORY=1# ------------------------------------------sed -i "1045s%(vlong)~0 << 32%(vlong)((unsigned long long)~0ULL << 32)%" /opt/go-1.4-bootstrap-20171003/src/cmd/6c/txt.csed -i "995s%(vlong)~0 << 32%(vlong)((unsigned long long)~0ULL << 32)%" /opt/go-1.4-bootstrap-20171003/src/cmd/6c/txt.c# ------------------------------------------sed -i "451i // fall through" /opt/go-1.4-bootstrap-20171003/src/lib9/fmt/fltfmt.c# ..........................................sed -i "204i // fall through" /opt/go-1.4-bootstrap-20171003/src/lib9/fmt/strtod.csed -i "198i // fall through" /opt/go-1.4-bootstrap-20171003/src/lib9/fmt/strtod.csed -i "187i // fall through" /opt/go-1.4-bootstrap-20171003/src/lib9/fmt/strtod.csed -i "145i // fall through" /opt/go-1.4-bootstrap-20171003/src/lib9/fmt/strtod.c# ..........................................sed -i "53i // fall through" /opt/go-1.4-bootstrap-20171003/src/libbio/bflush.c# ..........................................sed -i "53i // fall through" /opt/go-1.4-bootstrap-20171003/src/libbio/bseek.c# ..........................................sed -i "2618i // fall through" /opt/go-1.4-bootstrap-20171003/src/liblink/asm5.csed -i "1353i // fall through" /opt/go-1.4-bootstrap-20171003/src/liblink/asm5.c# ..........................................sed -i "3380i // fall through" /opt/go-1.4-bootstrap-20171003/src/liblink/asm6.csed -i "2702i // fall through" /opt/go-1.4-bootstrap-20171003/src/liblink/asm6.csed -i "2200i // fall through" /opt/go-1.4-bootstrap-20171003/src/liblink/asm6.csed -i "2158i // fall through" /opt/go-1.4-bootstrap-20171003/src/liblink/asm6.csed -i "2013i // fall through" /opt/go-1.4-bootstrap-20171003/src/liblink/asm6.csed -i "1985i // fall through" /opt/go-1.4-bootstrap-20171003/src/liblink/asm6.csed -i "1910i // fall through" /opt/go-1.4-bootstrap-20171003/src/liblink/asm6.c# ..........................................sed -i "2696i // fall through" /opt/go-1.4-bootstrap-20171003/src/liblink/asm8.csed -i "2138i // fall through" /opt/go-1.4-bootstrap-20171003/src/liblink/asm8.csed -i "1467i // fall through" /opt/go-1.4-bootstrap-20171003/src/liblink/asm8.c# ..........................................sed -i "385i // fall through" /opt/go-1.4-bootstrap-20171003/src/liblink/obj5.c# ..........................................sed -i "171i // fall through" /opt/go-1.4-bootstrap-20171003/src/liblink/sym.csed -i "151i // fall through" /opt/go-1.4-bootstrap-20171003/src/liblink/sym.c# ..........................................sed -i "177i // fall through" /opt/go-1.4-bootstrap-20171003/src/cmd/cc/acid.c# ..........................................sed -i "303i // fall through" /opt/go-1.4-bootstrap-20171003/src/cmd/cc/com64.csed -i "301i // fall through" /opt/go-1.4-bootstrap-20171003/src/cmd/cc/com64.csed -i "265i // fall through" /opt/go-1.4-bootstrap-20171003/src/cmd/cc/com64.c# ..........................................sed -i "297i // fall through" /opt/go-1.4-bootstrap-20171003/src/cmd/cc/dcl.c# ..........................................sed -i "122i // fall through" /opt/go-1.4-bootstrap-20171003/src/cmd/cc/dpchk.c# ..........................................sed -i "339i // fall through" /opt/go-1.4-bootstrap-20171003/src/cmd/cc/lex.csed -i "309i // fall through" /opt/go-1.4-bootstrap-20171003/src/cmd/cc/lex.c# ..........................................sed -i "1131i // fall through" /opt/go-1.4-bootstrap-20171003/src/cmd/cc/sub.csed -i "956i // fall through" /opt/go-1.4-bootstrap-20171003/src/cmd/cc/sub.csed -i "902i // fall through" /opt/go-1.4-bootstrap-20171003/src/cmd/cc/sub.csed -i "882i // fall through" /opt/go-1.4-bootstrap-20171003/src/cmd/cc/sub.csed -i "865i // fall through" /opt/go-1.4-bootstrap-20171003/src/cmd/cc/sub.csed -i "530i // fall through" /opt/go-1.4-bootstrap-20171003/src/cmd/cc/sub.c# ..........................................sed -i "1428i // fall through" /opt/go-1.4-bootstrap-20171003/src/cmd/gc/const.csed -i "1051i // fall through" /opt/go-1.4-bootstrap-20171003/src/cmd/gc/const.csed -i "472i // fall through" /opt/go-1.4-bootstrap-20171003/src/cmd/gc/const.csed -i "240i // fall through" /opt/go-1.4-bootstrap-20171003/src/cmd/gc/const.csed -i "226i // fall through" /opt/go-1.4-bootstrap-20171003/src/cmd/gc/const.c# ..........................................sed -i "900i // fall through" /opt/go-1.4-bootstrap-20171003/src/cmd/gc/esc.c# ..........................................sed -i "628i // fall through" /opt/go-1.4-bootstrap-20171003/src/cmd/gc/fmt.c# ..........................................sed -i "552i // fall through" /opt/go-1.4-bootstrap-20171003/src/cmd/gc/gen.c# ..........................................sed -i "1689i // fall through" /opt/go-1.4-bootstrap-20171003/src/cmd/gc/lex.csed -i "1683i // fall through" /opt/go-1.4-bootstrap-20171003/src/cmd/gc/lex.c# ..........................................sed -i "470i // fall through" /opt/go-1.4-bootstrap-20171003/src/cmd/gc/mparith1.csed -i "385i // fall through" /opt/go-1.4-bootstrap-20171003/src/cmd/gc/mparith1.csed -i "354i // fall through" /opt/go-1.4-bootstrap-20171003/src/cmd/gc/mparith1.c# ..........................................sed -i "733i // fall through" /opt/go-1.4-bootstrap-20171003/src/cmd/gc/order.csed -i "513i // fall through" /opt/go-1.4-bootstrap-20171003/src/cmd/gc/order.csed -i "455i // fall through" /opt/go-1.4-bootstrap-20171003/src/cmd/gc/order.csed -i "143i // fall through" /opt/go-1.4-bootstrap-20171003/src/cmd/gc/order.c# ..........................................sed -i "158i // fall through" /opt/go-1.4-bootstrap-20171003/src/cmd/gc/racewalk.c# ..........................................sed -i "146i // fall through" /opt/go-1.4-bootstrap-20171003/src/cmd/gc/range.c# ..........................................sed -i "291i // fall through" /opt/go-1.4-bootstrap-20171003/src/cmd/gc/select.csed -i "225i // fall through" /opt/go-1.4-bootstrap-20171003/src/cmd/gc/select.csed -i "130i // fall through" /opt/go-1.4-bootstrap-20171003/src/cmd/gc/select.c# ..........................................sed -i "1453i // fall through" /opt/go-1.4-bootstrap-20171003/src/cmd/gc/sinit.csed -i "1376i // fall through" /opt/go-1.4-bootstrap-20171003/src/cmd/gc/sinit.csed -i "1042i // fall through" /opt/go-1.4-bootstrap-20171003/src/cmd/gc/sinit.c# ..........................................sed -i "2986i // fall through" /opt/go-1.4-bootstrap-20171003/src/cmd/gc/subr.csed -i "2746i // fall through" /opt/go-1.4-bootstrap-20171003/src/cmd/gc/subr.csed -i "1293i // fall through" /opt/go-1.4-bootstrap-20171003/src/cmd/gc/subr.c# ..........................................sed -i "341i // fall through" /opt/go-1.4-bootstrap-20171003/src/cmd/gc/typecheck.c# ..........................................sed -i "1130i // fall through" /opt/go-1.4-bootstrap-20171003/src/cmd/gc/walk.csed -i "221i // fall through" /opt/go-1.4-bootstrap-20171003/src/cmd/gc/walk.c# ..........................................sed -i "1142i // fall through" /opt/go-1.4-bootstrap-20171003/src/cmd/ld/elf.c# ..........................................sed -i "316i // fall through" /opt/go-1.4-bootstrap-20171003/src/cmd/ld/data.c# ..........................................sed -i "876i // fall through" /opt/go-1.4-bootstrap-20171003/src/cmd/ld/ldelf.c# ..........................................sed -i "299i // fall through" /opt/go-1.4-bootstrap-20171003/src/cmd/ld/ldpe.c# ..........................................sed -i "418i // fall through" /opt/go-1.4-bootstrap-20171003/src/cmd/ld/macho.csed -i "359i // fall through" /opt/go-1.4-bootstrap-20171003/src/cmd/ld/macho.c# ..........................................sed -i "618i // fall through" /opt/go-1.4-bootstrap-20171003/src/cmd/ld/pe.c# ..........................................sed -i "248i // fall through" /opt/go-1.4-bootstrap-20171003/src/cmd/ld/symtab.c# ..........................................sed -i "87i // fall through" /opt/go-1.4-bootstrap-20171003/src/cmd/6l/obj.c# ..........................................sed -i "753i // fall through" /opt/go-1.4-bootstrap-20171003/src/cmd/6c/peep.csed -i "577i // fall through" /opt/go-1.4-bootstrap-20171003/src/cmd/6c/peep.csed -i "113i // fall through" /opt/go-1.4-bootstrap-20171003/src/cmd/6c/peep.c# ..........................................sed -i "343i // fall through" /opt/go-1.4-bootstrap-20171003/src/cmd/6c/reg.c# ..........................................sed -i "773i // fall through" /opt/go-1.4-bootstrap-20171003/src/cmd/6c/txt.c# ..........................................sed -i "201i // fall through" /opt/go-1.4-bootstrap-20171003/src/cmd/gc/cplx.csed -i "57i // fall through" /opt/go-1.4-bootstrap-20171003/src/cmd/gc/cplx.c# ..........................................sed -i "1130i // fall through" /opt/go-1.4-bootstrap-20171003/src/cmd/6g/cgen.c# ..........................................sed -i "1283i // fall through" /opt/go-1.4-bootstrap-20171003/src/cmd/6g/gsubr.csed -i "1216i // fall through" /opt/go-1.4-bootstrap-20171003/src/cmd/6g/gsubr.csed -i "689i // fall through" /opt/go-1.4-bootstrap-20171003/src/cmd/6g/gsubr.csed -i "387i // fall through" /opt/go-1.4-bootstrap-20171003/src/cmd/6g/gsubr.csed -i "375i // fall through" /opt/go-1.4-bootstrap-20171003/src/cmd/6g/gsubr.c# ..........................................sed -i "526i // fall through" /opt/go-1.4-bootstrap-20171003/src/cmd/6g/reg.c# ------------------------------------------if [[ $STEP_CHANGE_DIRECTORY == 1 ]]; then# make.bash / all.bash must be run from $GOROOT/src./make.bash && STEP_MADE=1fi# ------------------------------------------cd $STORAGE && rm -rf $STORAGE/go && return 0elseecho "[Caution] Path: ( /opt/go-1.4-bootstrap-20171003 ) Already Exists."# ------------------------------------------return 0fi
}# ############################################# Go - 1.16 ############################################# Function: 制作安装(Make Install) Go-1.16
# ##################################################
function Make_Install_Go_1_16() {# 源码安装 Go 1.5 版本以上时会报 ERROR: Cannot find /root/go1.4/bin/go 这个错误。# 因为 Go 1.5 开始编译器和运行时用 Go 自身编写, 要编译它们, 首先要安装 Go 编译器。所以如果想要通过源码方式安装高版本 Go, 必须先安装好 Go 1.4 版本。if [[ ! -d "/opt/go-1.16" ]]; thenlocal VERIFYlocal STEP_UNZIPPED=0local STEP_MOVED=0local STEP_CHANGE_DIRECTORY=0local STEP_MADE=0# ------------------------------------------read -p "[Confirm] Make and Install ( go-1.16 )? (y/n)>" VERIFYif [[ "$VERIFY" != "y" ]]; then exit 1; fi# ------------------------------------------tar -zxvf $STORAGE/go1.16.src.tar.gz && STEP_UNZIPPED=1# ------------------------------------------# The compilation directory of "Go" needs to be stored properly. After compilation, "GOROOT" defaults to the compilation directory.# Go 的编译目录需要妥善存放, 编译完成后, GOROOT 默认在编译目录下。cp -r $STORAGE/go /opt/go-1.16 && STEP_MOVED=1# ------------------------------------------cd /opt/go-1.16/src && STEP_CHANGE_DIRECTORY=1# ------------------------------------------if [[ $STEP_CHANGE_DIRECTORY == 1 ]]; then# make.bash / all.bash must be run from $GOROOT/src./make.bash && STEP_MADE=1fi# ------------------------------------------cd $STORAGE && rm -rf $STORAGE/go && return 0elseecho "[Caution] Path: ( /opt/go-1.16 ) Already Exists."# ------------------------------------------return 0fi
}# ############################################ Go - 1.17.3 ############################################ Function: 制作安装(Make Install) Go-1.17.3
# ##################################################
function Make_Install_Go_1_17_3() {if [[ ! -d "/opt/go-1.17.3" ]]; thenlocal VERIFYlocal STEP_UNZIPPED=0local STEP_MOVED=0local STEP_CHANGE_DIRECTORY=0local STEP_MADE=0# ------------------------------------------read -p "[Confirm] Make and Install ( go-1.17.3 )? (y/n)>" VERIFYif [[ "$VERIFY" != "y" ]]; then exit 1; fi# ------------------------------------------tar -zxvf $STORAGE/go1.17.3.src.tar.gz && STEP_UNZIPPED=1# ------------------------------------------# The compilation directory of "Go" needs to be stored properly. After compilation, "GOROOT" defaults to the compilation directory.# Go 的编译目录需要妥善存放, 编译完成后, GOROOT 默认在编译目录下。cp -r $STORAGE/go /opt/go-1.17.3 && STEP_MOVED=1# ------------------------------------------cd /opt/go-1.17.3/src && STEP_CHANGE_DIRECTORY=1# ------------------------------------------if [[ $STEP_CHANGE_DIRECTORY == 1 ]]; then# make.bash / all.bash must be run from $GOROOT/src./make.bash && STEP_MADE=1fi# ------------------------------------------cd $STORAGE && rm -rf $STORAGE/go && return 0elseecho "[Caution] Path: ( /opt/go-1.17.3 ) Already Exists."# ------------------------------------------return 0fi
}# ############################################ Go - 1.21.11 ########################################### Function: 制作安装(Make Install) Go-1.21.11
# ##################################################
function Make_Install_Go_1_21_11() {# Compilation Time Error of "Go":# ----------------------------------------------# found packages main (build.go) and building_Go_requires_Go_1_17_13_or_later (notgo117.go) in /opt/Go-1.21.0/src/cmd/dist# ..............................................# Go 1.21.0 依赖的某个包需要 Go 语言的版本至少是 Go 1.17.13 或更高版本。# ..............................................# Building Go cmd/dist using /opt/go-1.4-bootstrap-20171003. (go1.4-bootstrap-20170531 linux/amd64)# cmd/dist/build.go:13:2: cannot find package "io/fs" in any of:# /opt/go-1.4-bootstrap-20171003/src/io/fs (from $GOROOT)# ($GOPATH not set)# ..............................................# 无法在指定的目录中找到 io/fs 包。这通常是因为 io/fs 包是在 Go 1.16 版本引入的, 而报错中提到的 Go 版本是 1.4。需要先安装 Go 1.16。if [[ ! -d "/opt/go-1.21.11" ]]; thenlocal VERIFYlocal STEP_UNZIPPED=0local STEP_MOVED=0local STEP_CHANGE_DIRECTORY=0local STEP_MADE=0# ------------------------------------------read -p "[Confirm] Make and Install ( go-1.21.11 )? (y/n)>" VERIFYif [[ "$VERIFY" != "y" ]]; then exit 1; fi# ------------------------------------------tar -zxvf $STORAGE/go1.21.11.src.tar.gz && STEP_UNZIPPED=1# ------------------------------------------# The compilation directory of "Go" needs to be stored properly. After compilation, "GOROOT" defaults to the compilation directory.# Go 的编译目录需要妥善存放, 编译完成后, GOROOT 默认在编译目录下。cp -r $STORAGE/go /opt/go-1.21.11 && STEP_MOVED=1# ------------------------------------------cd /opt/go-1.21.11/src && STEP_CHANGE_DIRECTORY=1# ------------------------------------------if [[ $STEP_CHANGE_DIRECTORY == 1 ]]; then# all.bash / make.bash must be run from $GOROOT/src./all.bash && STEP_MADE=1fi# ------------------------------------------cd $STORAGE && rm -rf $STORAGE/go && return 0elseecho "[Caution] Path: ( /opt/go-1.21.11 ) Already Exists."# ------------------------------------------return 0fi
}function main() {# ----------- Compilation Environment ----------ORIGINAL_PATH=$PATH# --------------- Dep for Go 1.16 --------------Make_Install_Go_1_4_Bootstrap_20171003# ------------------ Go - 1.16 -----------------export PATH=/opt/go-1.4-bootstrap-20171003/bin:$ORIGINAL_PATHMake_Install_Go_1_16# ----------------- Go - 1.17.3 ----------------export PATH=/opt/go-1.16/bin:$ORIGINAL_PATHMake_Install_Go_1_17_3# ----------------- Go - 1.21.11 ---------------export PATH=/opt/go-1.17.3/bin:$ORIGINAL_PATHMake_Install_Go_1_21_11
}main
总结
以上就是关于 Linux运维 Bash脚本 源码安装Go-1.21.11 的全部内容。
更多内容可以访问我的代码仓库:
https://gitee.com/goufeng928/public
https://github.com/goufeng928/public
相关文章:
Linux运维_Bash脚本_源码安装Go-1.21.11
Linux运维_Bash脚本_源码安装Go-1.21.11 Bash (Bourne Again Shell) 是一个解释器,负责处理 Unix 系统命令行上的命令。它是由 Brian Fox 编写的免费软件,并于 1989 年发布的免费软件,作为 Sh (Bourne Shell) 的替代品。 您可以在 Linux 和…...

ShareSDK Twitter
创建应用 1.登录Twitter控制台并通过认证 2.点击Developer Portal进入Twitter后台 3.点击Sign up for Free Account创建应用 4.配置应用信息 以下为创建过程示例,图中信息仅为示例,创建时请按照真实信息填写,否则无法正常使用。 权限申请…...
word2vec 如何用多个词表示一个句子
word2vec 模型通常用于将单词映射为固定大小的向量。为了使用多个词表示一个句子,我们可以采用以下几种方法: 词袋模型 (Bag of Words, BoW): 将句子中所有词的向量加起来,不考虑词的顺序。这种方法简单,但会丢失词序信息。 计算…...

IDEA中查看接口的所有实现类和具体实现类
1.IDEA中接口的所有实现类查看 1.CTRLH(hierarchy 结构) 我们选中要查看的接口 按住快捷键ctrlh 在界面右侧可以看到该接口的所有可能实现类 2.右击diagrams->show diagram 选中要查看的接口 右击选择diagrams->show diagram 即可以以图表的方式查看接口和所有实现类…...

DLL的导出和调用
动态链接库在C中非常重要,写了一个简单的例子用于DLL的导出和调用。 DLL的生成 头文件 #include<iostream> #include<stdexcept> using namespace std;#define TESTAPI __declspec(dllexport)// 函数定义 extern "C" {TESTAPI int add(in…...
vscode中调试cuda kernel
关于vscode中调试cpp可参考之前的博客:ubuntu vscode 基本设置 和 调试设置_ubuntu vscode 调试-CSDN博客 这篇我们来讲如何调试.cu的kernel,主要参考的是:https://www.zhihu.com/question/431782036/answer/2468791220 1、基本准备不多说&am…...
SQL的连接查询与pandas的对应关系
在SQL和Pandas中,连接查询(join)是处理数据集之间关系的重要工具。下面是SQL中的各种连接查询类型及其与Pandas中相应操作的对应关系: 1. INNER JOIN SQL: INNER JOIN 返回两个表中具有匹配值的行。 Pandas: merge() 方法的 how…...
【JS】中断和恢复任务序列
前言 封装processTasks函数,实现以下需求 /*** 依次顺序执行一系列任务* 所有任务全部完成后可以得到每个任务的执行结果* 需要返回两个方法,start用于启动任务,pause用于暂停任务* 每个任务具有原子性,即不可中断,只…...

CentOS系统下安装NVIDIA显卡驱动
一、安装显卡驱动 1.安装依赖项 yum -y install gcc pciutils yum -y install gcc yum -y install gcc-c yum -y install make2.查看内核版本 uname -a3.查看显卡版本 lspci | grep -i nvidia4.屏蔽系统自带的nouveau (1)查看nouveau lsmod | grep nouveau (2)打开blackl…...

Linux 与 Windows 服务器操作系统 | 全面对比
在服务器操作系统的领域,Linux 和 Windows 一直是两个备受关注的选择。 首先来看 Windows 操作系统。它由 Microsoft Corporation 开发,在桌面领域占据显著份额,其中 Windows 10 是使用最广泛的版本,广泛应用于个人计算机和企业桌…...
给既有exe程序添加一机一码验证
原文地址:李浩的博客 lihaohello.top 本科期间开发过一款混凝土基本构件设计程序,该程序是一个独立的exe可执行文件,采用VC静态链接MFC库编制而成。近期,需要为该程序添加用户注册验证的功能,从而避免任何用户获取该程…...

【Datawhale X 魔搭 】AI夏令营第四期大模型方向,Task2:头脑风暴会,巧灵脑筋急转弯(持续更新)
队伍名称:巧灵脑筋急转弯 队伍技术栈:python,LLM,RAG,大模型,nlp,Gradio,Vue,java 队友:知唐(队长),我真的敲不动…...
mysql 多个外键
在MySQL中,一个表可以有多个外键约束,它们分别关联到不同的主表。在创建表时,可以在每个外键约束上指定不同的外键名称。以下是一个简单的例子,演示如何在创建表时定义多个外键: CREATE TABLE orders (order_id INT AU…...

解决方案上新了丨趋动科技推出基于银河麒麟操作系统的异构算力池化解决方案
趋动科技携手麒麟软件打造基于银河麒麟操作系统的异构算力池化解决方案,共同探索AI领域新场景。 人工智能技术作为数字经济发展的重要推手,在各行业业务场景中落地需要大量AI算力资源的有效保障。在IT基础设施普遍云化的今天,AI算力一方面需…...
14.创建一个实战maven的springboot项目
项目核心主要部分 pom.xml文件 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://mave…...

docker部署LNMP
docker部署LNMP nginx 1.22 172.111.0.10 docker-nginx mysql 8.0.30 172.111.0.20 docker-mysql php 8.1.27 172.111.0.30 docker-php docker:单节点部署,只能在一台机器上部署,如果跨机器容器无法操作,无法通信。 做高可用…...
在Spring Boot应用中,如果你希望在访问应用时加上项目的名称或者一个特定的路径前缀
在Spring Boot应用中,如果你希望在访问应用时加上项目的名称或者一个特定的路径前缀 在Spring Boot应用中,如果你希望在访问应用时加上项目的名称或者一个特定的路径前缀,你可以通过配置server.servlet.context-path属性来实现。这通常在app…...
东南大学:Wi-Fi 6搭档全光以太,打造“数智东南”信息高速路
东南大学:Wi-Fi 6搭档全光以太,打造“数智东南”信息高速路 - 华为企业业务 打好ICT底座,平台和应用层面就会非常通畅了。首先,出海企业的需求既有普遍性,也有垂直性行业的特性需求。普遍性需求需要通信、沟通数据和传…...

C++:stack类(vector和list优缺点、deque)
目录 前言 数据结构 deque vector和list的优缺点 push pop top size empty 完整代码 前言 stack类就是数据结构中的栈 C数据结构:栈-CSDN博客 stack类所拥有的函数相比与string、vector和list类都少很多,这是因为栈这个数据结构是后进先出的…...

负载均衡、高可用
负载均衡 负载均衡(Load Balance):可以利用多个计算机和组合进行海量请求处理,从而获得很高的处理效率,也可以用多个计算机做备份(高可用),使得任何一个机器坏了整个系统还是能正常…...
c++ 面试题(1)-----深度优先搜索(DFS)实现
操作系统:ubuntu22.04 IDE:Visual Studio Code 编程语言:C11 题目描述 地上有一个 m 行 n 列的方格,从坐标 [0,0] 起始。一个机器人可以从某一格移动到上下左右四个格子,但不能进入行坐标和列坐标的数位之和大于 k 的格子。 例…...

1.3 VSCode安装与环境配置
进入网址Visual Studio Code - Code Editing. Redefined下载.deb文件,然后打开终端,进入下载文件夹,键入命令 sudo dpkg -i code_1.100.3-1748872405_amd64.deb 在终端键入命令code即启动vscode 需要安装插件列表 1.Chinese简化 2.ros …...

第一篇:Agent2Agent (A2A) 协议——协作式人工智能的黎明
AI 领域的快速发展正在催生一个新时代,智能代理(agents)不再是孤立的个体,而是能够像一个数字团队一样协作。然而,当前 AI 生态系统的碎片化阻碍了这一愿景的实现,导致了“AI 巴别塔问题”——不同代理之间…...

新能源汽车智慧充电桩管理方案:新能源充电桩散热问题及消防安全监管方案
随着新能源汽车的快速普及,充电桩作为核心配套设施,其安全性与可靠性备受关注。然而,在高温、高负荷运行环境下,充电桩的散热问题与消防安全隐患日益凸显,成为制约行业发展的关键瓶颈。 如何通过智慧化管理手段优化散…...

NLP学习路线图(二十三):长短期记忆网络(LSTM)
在自然语言处理(NLP)领域,我们时刻面临着处理序列数据的核心挑战。无论是理解句子的结构、分析文本的情感,还是实现语言的翻译,都需要模型能够捕捉词语之间依时序产生的复杂依赖关系。传统的神经网络结构在处理这种序列依赖时显得力不从心,而循环神经网络(RNN) 曾被视为…...
根据万维钢·精英日课6的内容,使用AI(2025)可以参考以下方法:
根据万维钢精英日课6的内容,使用AI(2025)可以参考以下方法: 四个洞见 模型已经比人聪明:以ChatGPT o3为代表的AI非常强大,能运用高级理论解释道理、引用最新学术论文,生成对顶尖科学家都有用的…...

SpringTask-03.入门案例
一.入门案例 启动类: package com.sky;import lombok.extern.slf4j.Slf4j; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cache.annotation.EnableCach…...

HarmonyOS运动开发:如何用mpchart绘制运动配速图表
##鸿蒙核心技术##运动开发##Sensor Service Kit(传感器服务)# 前言 在运动类应用中,运动数据的可视化是提升用户体验的重要环节。通过直观的图表展示运动过程中的关键数据,如配速、距离、卡路里消耗等,用户可以更清晰…...

基于PHP的连锁酒店管理系统
有需要请加文章底部Q哦 可远程调试 基于PHP的连锁酒店管理系统 一 介绍 连锁酒店管理系统基于原生PHP开发,数据库mysql,前端bootstrap。系统角色分为用户和管理员。 技术栈 phpmysqlbootstrapphpstudyvscode 二 功能 用户 1 注册/登录/注销 2 个人中…...

pikachu靶场通关笔记19 SQL注入02-字符型注入(GET)
目录 一、SQL注入 二、字符型SQL注入 三、字符型注入与数字型注入 四、源码分析 五、渗透实战 1、渗透准备 2、SQL注入探测 (1)输入单引号 (2)万能注入语句 3、获取回显列orderby 4、获取数据库名database 5、获取表名…...