diff --git a/2023/11/25/linux/index.html b/2023/11/25/linux/index.html index b055bfa..73cecfc 100644 --- a/2023/11/25/linux/index.html +++ b/2023/11/25/linux/index.html @@ -24,7 +24,7 @@ - + @@ -209,7 +209,7 @@
@@ -220,7 +220,7 @@ - 18 mins + 20 mins @@ -492,10 +492,24 @@实时查看GPU使用情况
1 |
|
行代码的意思是只选择指定标号GPU进行使用,执行完该行代码之后python环境无法检测到指定GPU之外的其他
+对于MACOS,用VIM进入
+1 |
|
添加环境变量的语句是,这里以增加路径为例子
+1 |
|
添加完环境变量之后,激活一下设置
+1 |
|
同样对于Linux系统而言也是相同的步骤
+1 |
|
添加完成之后最后激活一下设定
+1 |
|
如果想直接查看当前某个环境变量的设置的值可以用以下的命令进行查看
+1 |
|
输出的值是当前的这个环境变量设置的值,比如会输出:user/workspace/golang
ping 一般用于检测当前计算机到目标计算机之间的网络 是否通畅,数值越大,速度越慢
1 |
|
首先先查看对应的GPU内存:nvidia-smi
然后在终端输出代码:
diff --git "a/2023/11/27/go-\345\237\272\347\241\200/index.html" "b/2023/11/27/go-\345\237\272\347\241\200/index.html" index f06dcb6..f2448a4 100644 --- "a/2023/11/27/go-\345\237\272\347\241\200/index.html" +++ "b/2023/11/27/go-\345\237\272\347\241\200/index.html" @@ -26,7 +26,7 @@ - + @@ -211,7 +211,7 @@ @@ -222,7 +222,7 @@ - 3 mins + 31 mins @@ -285,12 +285,183 @@GOROOT 表示的是安装包所在的位置,一般不需要修改
+GOPATH表示的是运行文件所在的位置,表示的是workspace的文件位置,里面新建三个文件夹:bin +pkg src,src一般用来表示工程文件所在的位置
+修改GOPATH的路径
+1 |
|
将文件查找的路径设置为GOROOT和GOPATH的并集合
+1 |
|
注意这个地方不能将gomod设置为on,否则有问题
+将两个部分并在一起之后,就能从两个地方开始寻找定义的包
+ +首先会从GOROOT进行搜索,接着从GOPATH进行搜索
+对于已经写好的go文件,这里以hello.go作为例子,直接使用以下语句进行编译并运行
1 |
|
或者将编译和运行两个过程分开,先编译后运行:
1 |
|
首先给出基本框架
+1 |
|
程序的第一行声明了名为main的package。一个package会包含一个或多个.go源代码文件。每一个源文件都是以package开头。比如我们的例子里是package +main。这行声明语句表示该文件是属于哪一个package。
+同时需要注意,一个程序的main
入口函数必须不带任何输入参数和返回结果
多个返回值初始化设置了函数的形参之后,初始值是0
+go每次设置一个变量值之后都有初始值,如果是数据就是0,如果是字符串那么就是空,防止出现一些野指针的情况
+分别建不同的文件夹对应的就是package的名字,相应的在.go文件内部声明package的名字
+注意: +在包中设置接口的时候,函数名称必须第一个字母是大写,如果是小写的话将无法识别
+如果函数名第一个是大写就是对外开放的函数,认为是public
+如果函数名第一个是小写的话就认为是私有的函数,认为是private
+ +init函数的调用过程,首先会对包中的init进行初始化再进行调用接口
+ +如果你导入了包比如lib1,但是没有使用这个包里面的接口函数,仍然会报错
+ +但是如果我不想调用lib1的函数接口,但是想使用lib1的init()函数怎么办呢,如果这个时候直接导入了包 +但是不调用接口,就会出现上述的错误
+匿名导包方式
+在导入的包前面加上下划线来认为这个包是匿名的,这样就能知进行init操作
+ + +给新导入的包起个别的名字,比如叫mylib作为新的别名
+ +或者直接使用·来进行调用
+ +最好别使用这种,如果两个包的函数名称一样那么可能会导致出现歧义的情况
+和C++以及C中的是一样的
+定义的时候 *int 传递变量的地址&
+ + +通过这种方式进行初始化数组以及进行切片操作,通过range关键字进行遍历数组,并给出index和value进行给出不同的下标和数值
+ +固定数组传递的是一个值拷贝
+动态数组 slice
+但是动态数组或者是说切片是一个引用传递
+同时动态数组传递的过程中的参数形式是一致的,能够适配所有的slice参数类型,但是对于
+ + +这里面的下划线表示的是不需要考虑的index的数值,可以忽略
+这里是关于切片slice的声明和打印
+1 |
|
打印的结果是
+ +声明slice但是不一定声明了空间,因此需要注意的是声明的同时并给出空间大小,同时没办法中途增加空间
+1 |
|
注意if else的格式有要求
+ + + +关于切片的截取操作
+1 |
|
变量结构
+ diff --git a/local-search.xml b/local-search.xml index cb67cf4..5565c39 100644 --- a/local-search.xml +++ b/local-search.xml @@ -8,7 +8,7 @@学习网站:
go的官网下载网站,选择合适的系统版本进行安装
下载安装包并按照安装包的指引下载相关的内容
对于Mac系统会直接配置好环境变量,根据官网的安装手册进行安装
测试GO的版本
1 |
|
测试GO的环境变量
1 |
|
对于已经写好的go文件,这里以hello.go作为例子,直接使用以下语句进行编译并运行
1 |
|
或者将编译和运行两个过程分开,先编译后运行:
1 |
|
学习网站:
go的官网下载网站,选择合适的系统版本进行安装
下载安装包并按照安装包的指引下载相关的内容
对于Mac系统会直接配置好环境变量,根据官网的安装手册进行安装
测试GO的版本
1 |
|
测试GO的环境变量
1 |
|
GOROOT 表示的是安装包所在的位置,一般不需要修改
GOPATH表示的是运行文件所在的位置,表示的是workspace的文件位置,里面新建三个文件夹:binpkg src,src一般用来表示工程文件所在的位置
修改GOPATH的路径
1 |
|
将文件查找的路径设置为GOROOT和GOPATH的并集合
1 |
|
注意这个地方不能将gomod设置为on,否则有问题
将两个部分并在一起之后,就能从两个地方开始寻找定义的包
首先会从GOROOT进行搜索,接着从GOPATH进行搜索
对于已经写好的go文件,这里以hello.go作为例子,直接使用以下语句进行编译并运行
1 |
|
或者将编译和运行两个过程分开,先编译后运行:
1 |
|
首先给出基本框架
1 |
|
程序的第一行声明了名为main的package。一个package会包含一个或多个.go源代码文件。每一个源文件都是以package开头。比如我们的例子里是packagemain。这行声明语句表示该文件是属于哪一个package。
同时需要注意,一个程序的main
入口函数必须不带任何输入参数和返回结果
多个返回值初始化设置了函数的形参之后,初始值是0
go每次设置一个变量值之后都有初始值,如果是数据就是0,如果是字符串那么就是空,防止出现一些野指针的情况
分别建不同的文件夹对应的就是package的名字,相应的在.go文件内部声明package的名字
注意:在包中设置接口的时候,函数名称必须第一个字母是大写,如果是小写的话将无法识别
如果函数名第一个是大写就是对外开放的函数,认为是public
如果函数名第一个是小写的话就认为是私有的函数,认为是private
init函数的调用过程,首先会对包中的init进行初始化再进行调用接口
如果你导入了包比如lib1,但是没有使用这个包里面的接口函数,仍然会报错
但是如果我不想调用lib1的函数接口,但是想使用lib1的init()函数怎么办呢,如果这个时候直接导入了包但是不调用接口,就会出现上述的错误
匿名导包方式
在导入的包前面加上下划线来认为这个包是匿名的,这样就能知进行init操作
给新导入的包起个别的名字,比如叫mylib作为新的别名
或者直接使用·来进行调用
最好别使用这种,如果两个包的函数名称一样那么可能会导致出现歧义的情况
和C++以及C中的是一样的
定义的时候 *int 传递变量的地址&
通过这种方式进行初始化数组以及进行切片操作,通过range关键字进行遍历数组,并给出index和value进行给出不同的下标和数值
固定数组传递的是一个值拷贝
动态数组 slice
但是动态数组或者是说切片是一个引用传递
同时动态数组传递的过程中的参数形式是一致的,能够适配所有的slice参数类型,但是对于
这里面的下划线表示的是不需要考虑的index的数值,可以忽略
这里是关于切片slice的声明和打印
1 |
|
打印的结果是
声明slice但是不一定声明了空间,因此需要注意的是声明的同时并给出空间大小,同时没办法中途增加空间
1 |
|
注意if else的格式有要求
关于切片的截取操作
1 |
|
变量结构
]]>终端中输入
1 |
|
cd .. #返回父级目录
cd | 切换到当前用户的主目录(/home/用户目录) |
---|---|
cd ~ | 切换到当前用户的主目录(/home/用户目录) |
cd . | 保持在当前目录不变 |
cd … | 切换到上级目录 |
cd - | 可以在最近两次工作目录之间来回切换 |
相对路径 在输入路径时,最前面不是 / 或者 ~,表示相对 当前目录所在的目录位置 绝对路径 在输入路径时,最前面是 / 或者 ~,表示从根目录/家目录 开始的具体目录位置
mv 文件名 指定的路径位置 -i 用于提示
修改文件夹名称:mv 原来的文件夹名称 后来的文件夹名称
cp 当前文件夹下某个文件名(带后缀) 目标路径 -i用于提示
命令 | 对应英文 | 作用 | |
---|---|---|---|
01 | tree [目录名] | tree | 以树状图列出文件目录结构 |
02 | cp 源文件目标文件 | copy | 复制文件或者目录 |
03 | mv 源文件 目标文件 | move | 移动文件或者目录/文件或者目录重命名 |
1 |
|
使用rm来对文件进行删除 -i 进行删除前的查询
选项 | 含义 |
---|---|
-f | 强制删除,忽略不存在的文件,无需提示 |
-r | 递归地删除目录下的内容,删除文件夹时必须加此参数 |
Top 来显示CPU的占用情况:
PID 进程的ID USER 进程所有者 PR 进程的优先级别,越小越优先被执行 NInice 值 VIRT 进程占用的虚拟内存 RES 进程占用的物理内存 SHR 进程使用的共享内存 S 进程的状态。S表示休眠,R表示正在运行,Z表示僵死状态,N表示该进程优先值为负数 %CPU 进程占用CPU的使用率 %MEM 进程使用的物理内存和总内存的百分比 TIME+ 该进程启动后占用的总的CPU时间,即占用CPU使用时间的累加值 COMMAND 进程启动命令名称
top退出方式是==用q进行退出==
free查看内存的使用情况
total 总计物理内存的大小 used 已使用多大 free 可用有多少 Shared 多个进程共享的内存总额 Buffers/cached 磁盘缓存的大小
vmstat指令也是用于查看内存的使用
Procs(进程): r:运行队列中进程数量,这个值也可以判断是否需要增加CPU。(长期大于1) b:等待IO的进程数量
Memory(内存):swpd: 使用虚拟内存大小;free:空闲物理内存大小;buff: 用作缓冲的内存大小;cache:用作缓存的内存大小
Swap: si:每秒从交换区写到内存的大小,由磁盘调入内存;so:每秒写入交换区的内存大小,由内存调入磁盘
IO:bi: 每秒读取的块数,bo:每秒写入的块数
系统: in: 每秒中断数,包括时钟中断。 cs:每秒上下文切换数。
CPU(以百分比表示):us:用户进程执行时间百分比(user time) sy: 内核系统进程执行时间百分比(systemtime) ;wa: IO等待时间百分比; id: 空闲时间百分比
实时查看GPU使用情况
1 |
|
行代码的意思是只选择指定标号GPU进行使用,执行完该行代码之后python环境无法检测到指定GPU之外的其他
序号 | 命令 | 作用 |
---|---|---|
01 | date | 查看系统时间 |
02 | cal | calendar 查看日历, -y 选项可以查看一年的日历 |
序号 | 命令 | 作用 |
---|---|---|
01 | df -h | disk free 显示磁盘剩余空间 |
02 | du -h [目录名] | disk usage 显示目录下的文件大小 |
所谓进程,通俗地说就是当前正在执行的一个程序
序号 | 命令 | 作用 |
---|---|---|
01 | ps aux | process status 查看进程的详细状况 |
02 | top | 动态显示运行中的进程并且排序 |
03 | kill [-9] 进程代号 | 终止指定代号的进程, -9 表示强行终止 |
ping 一般用于检测当前计算机到目标计算机之间的网络是否通畅,数值越大,速度越慢
1 |
|
首先先查看对应的GPU内存:nvidia-smi
然后在终端输出代码:
1 |
|
再或者使用**torch.cuda.set_device()**函数
指定gpu使用编号:
1 |
|
终端中输入
1 |
|
cd .. #返回父级目录
cd | 切换到当前用户的主目录(/home/用户目录) |
---|---|
cd ~ | 切换到当前用户的主目录(/home/用户目录) |
cd . | 保持在当前目录不变 |
cd … | 切换到上级目录 |
cd - | 可以在最近两次工作目录之间来回切换 |
相对路径 在输入路径时,最前面不是 / 或者 ~,表示相对 当前目录所在的目录位置 绝对路径 在输入路径时,最前面是 / 或者 ~,表示从根目录/家目录 开始的具体目录位置
mv 文件名 指定的路径位置 -i 用于提示
修改文件夹名称:mv 原来的文件夹名称 后来的文件夹名称
cp 当前文件夹下某个文件名(带后缀) 目标路径 -i用于提示
命令 | 对应英文 | 作用 | |
---|---|---|---|
01 | tree [目录名] | tree | 以树状图列出文件目录结构 |
02 | cp 源文件目标文件 | copy | 复制文件或者目录 |
03 | mv 源文件 目标文件 | move | 移动文件或者目录/文件或者目录重命名 |
1 |
|
使用rm来对文件进行删除 -i 进行删除前的查询
选项 | 含义 |
---|---|
-f | 强制删除,忽略不存在的文件,无需提示 |
-r | 递归地删除目录下的内容,删除文件夹时必须加此参数 |
Top 来显示CPU的占用情况:
PID 进程的ID USER 进程所有者 PR 进程的优先级别,越小越优先被执行 NInice 值 VIRT 进程占用的虚拟内存 RES 进程占用的物理内存 SHR 进程使用的共享内存 S 进程的状态。S表示休眠,R表示正在运行,Z表示僵死状态,N表示该进程优先值为负数 %CPU 进程占用CPU的使用率 %MEM 进程使用的物理内存和总内存的百分比 TIME+ 该进程启动后占用的总的CPU时间,即占用CPU使用时间的累加值 COMMAND 进程启动命令名称
top退出方式是==用q进行退出==
free查看内存的使用情况
total 总计物理内存的大小 used 已使用多大 free 可用有多少 Shared 多个进程共享的内存总额 Buffers/cached 磁盘缓存的大小
vmstat指令也是用于查看内存的使用
Procs(进程): r:运行队列中进程数量,这个值也可以判断是否需要增加CPU。(长期大于1) b:等待IO的进程数量
Memory(内存):swpd: 使用虚拟内存大小;free:空闲物理内存大小;buff: 用作缓冲的内存大小;cache:用作缓存的内存大小
Swap: si:每秒从交换区写到内存的大小,由磁盘调入内存;so:每秒写入交换区的内存大小,由内存调入磁盘
IO:bi: 每秒读取的块数,bo:每秒写入的块数
系统: in: 每秒中断数,包括时钟中断。 cs:每秒上下文切换数。
CPU(以百分比表示):us:用户进程执行时间百分比(user time) sy: 内核系统进程执行时间百分比(systemtime) ;wa: IO等待时间百分比; id: 空闲时间百分比
实时查看GPU使用情况
1 |
|
行代码的意思是只选择指定标号GPU进行使用,执行完该行代码之后python环境无法检测到指定GPU之外的其他
对于MACOS,用VIM进入
1 |
|
添加环境变量的语句是,这里以增加路径为例子
1 |
|
添加完环境变量之后,激活一下设置
1 |
|
同样对于Linux系统而言也是相同的步骤
1 |
|
添加完成之后最后激活一下设定
1 |
|
如果想直接查看当前某个环境变量的设置的值可以用以下的命令进行查看
1 |
|
输出的值是当前的这个环境变量设置的值,比如会输出:user/workspace/golang
序号 | 命令 | 作用 |
---|---|---|
01 | date | 查看系统时间 |
02 | cal | calendar 查看日历, -y 选项可以查看一年的日历 |
序号 | 命令 | 作用 |
---|---|---|
01 | df -h | disk free 显示磁盘剩余空间 |
02 | du -h [目录名] | disk usage 显示目录下的文件大小 |
所谓进程,通俗地说就是当前正在执行的一个程序
序号 | 命令 | 作用 |
---|---|---|
01 | ps aux | process status 查看进程的详细状况 |
02 | top | 动态显示运行中的进程并且排序 |
03 | kill [-9] 进程代号 | 终止指定代号的进程, -9 表示强行终止 |
ping 一般用于检测当前计算机到目标计算机之间的网络是否通畅,数值越大,速度越慢
1 |
|
首先先查看对应的GPU内存:nvidia-smi
然后在终端输出代码:
1 |
|
再或者使用**torch.cuda.set_device()**函数
指定gpu使用编号:
1 |
|
实时查看GPU使用情况
|
行代码的意思是只选择指定标号GPU进行使用,执行完该行代码之后python环境无法检测到指定GPU之外的其他
+对于MACOS,用VIM进入
+
|
添加环境变量的语句是,这里以增加路径为例子
+
|
添加完环境变量之后,激活一下设置
+
|
同样对于Linux系统而言也是相同的步骤
+
|
添加完成之后最后激活一下设定
+
|
如果想直接查看当前某个环境变量的设置的值可以用以下的命令进行查看
+
|
输出的值是当前的这个环境变量设置的值,比如会输出:user/workspace/golang
ping 一般用于检测当前计算机到目标计算机之间的网络 是否通畅,数值越大,速度越慢
|
首先先查看对应的GPU内存:nvidia-smi
然后在终端输出代码:
@@ -1424,12 +1437,183 @@ href="https://go.dev/doc/install">https://go.dev/doc/installGOROOT 表示的是安装包所在的位置,一般不需要修改
+GOPATH表示的是运行文件所在的位置,表示的是workspace的文件位置,里面新建三个文件夹:bin +pkg src,src一般用来表示工程文件所在的位置
+修改GOPATH的路径
+
|
将文件查找的路径设置为GOROOT和GOPATH的并集合
+
|
注意这个地方不能将gomod设置为on,否则有问题
+将两个部分并在一起之后,就能从两个地方开始寻找定义的包
+ +首先会从GOROOT进行搜索,接着从GOPATH进行搜索
+对于已经写好的go文件,这里以hello.go作为例子,直接使用以下语句进行编译并运行
|
或者将编译和运行两个过程分开,先编译后运行:
|
首先给出基本框架
+
|
程序的第一行声明了名为main的package。一个package会包含一个或多个.go源代码文件。每一个源文件都是以package开头。比如我们的例子里是package +main。这行声明语句表示该文件是属于哪一个package。
+同时需要注意,一个程序的main
入口函数必须不带任何输入参数和返回结果
多个返回值初始化设置了函数的形参之后,初始值是0
+go每次设置一个变量值之后都有初始值,如果是数据就是0,如果是字符串那么就是空,防止出现一些野指针的情况
+分别建不同的文件夹对应的就是package的名字,相应的在.go文件内部声明package的名字
+注意: +在包中设置接口的时候,函数名称必须第一个字母是大写,如果是小写的话将无法识别
+如果函数名第一个是大写就是对外开放的函数,认为是public
+如果函数名第一个是小写的话就认为是私有的函数,认为是private
+ +init函数的调用过程,首先会对包中的init进行初始化再进行调用接口
+ +如果你导入了包比如lib1,但是没有使用这个包里面的接口函数,仍然会报错
+ +但是如果我不想调用lib1的函数接口,但是想使用lib1的init()函数怎么办呢,如果这个时候直接导入了包 +但是不调用接口,就会出现上述的错误
+匿名导包方式
+在导入的包前面加上下划线来认为这个包是匿名的,这样就能知进行init操作
+ + +给新导入的包起个别的名字,比如叫mylib作为新的别名
+ +或者直接使用·来进行调用
+ +最好别使用这种,如果两个包的函数名称一样那么可能会导致出现歧义的情况
+和C++以及C中的是一样的
+定义的时候 *int 传递变量的地址&
+ + +通过这种方式进行初始化数组以及进行切片操作,通过range关键字进行遍历数组,并给出index和value进行给出不同的下标和数值
+ +固定数组传递的是一个值拷贝
+动态数组 slice
+但是动态数组或者是说切片是一个引用传递
+同时动态数组传递的过程中的参数形式是一致的,能够适配所有的slice参数类型,但是对于
+ + +这里面的下划线表示的是不需要考虑的index的数值,可以忽略
+这里是关于切片slice的声明和打印
+
|
打印的结果是
+ +声明slice但是不一定声明了空间,因此需要注意的是声明的同时并给出空间大小,同时没办法中途增加空间
+
|
注意if else的格式有要求
+ + + +关于切片的截取操作
+
|
变量结构
+ ]]>