Go
文章平均质量分 68
Cliven_
这个作者很懒,什么都没留下…
展开
-
Golang多版本环境安装并存
注意这里我们按照平台下载,对应平台的Archive 类型压缩包。出现超时,或断开连接属于正常,应为他需要去。的历史归档版本中下载我们需要的GO环境。若未配置镜像该步骤可能超时或连接失败。将该压缩包放到刚才SDK的空文件夹中。此时将提示解压,成功后提示可以使用。会提示在 sdk目录中找不到。请先安装最新版本的Go,详见。以安装Go 1.11 为例。下载成功后将提示,可以使用。此时可以打开该目录查看例如。替换为需要安装的版本。下载已经归档Go程序。接下来下载Go的环境。原创 2024-08-13 10:54:14 · 524 阅读 · 0 评论 -
移除代码注释 软著代码材料
下面写了个简单的代码用于将所有包含某种后缀的文件的内容复制到同一个文件中。所生成除去注释的文件将会生成在当前工作目录中。将其复制到空的文件夹内。原创 2023-03-04 18:00:04 · 550 阅读 · 1 评论 -
Golang文件写入数据断电丢失
Golang在使用写入文件,或是直接使用文件接口读写文件时,在写入后立刻断电,重启后文件存在,但是为空,没有任何数据,造成了数据丢失,代码如下:原因及解决操作系统为了系统性能考,写入文件并不会直接写入到磁盘,而是写入到缓存中,当满足一定条件时,一次性写入磁盘。实际上操作系统也提供一些API可以将缓存写入磁盘,因此Golang对其进行了封装。使用时只需要在打开文件时增加 标识就可以完整代码如下:参考文献[1]. studygolang . Go语言标准库 - 6.1 文件 I/O . https:原创 2022-06-14 15:02:37 · 475 阅读 · 0 评论 -
Gin 根路径静态资源映射
前后端分离一站式解决方案。Gin静态资源代理中间件,该中间件由 Gin官方 gin-contrib/static 开发[1]. gin-contrib/static . https://github.com/gin-contrib/static原创 2022-06-13 21:16:35 · 1399 阅读 · 0 评论 -
Golang Window TUN 虚拟网卡
1. wintunLinux 2.4以后下有一种特殊的虚拟网络设备tun,用户可以直接创建虚拟网卡tun,直接以文件读写方式从设备处读取到网络层数据包(IP数据包),该网卡可以像是真实网卡一样设置IP、配置路由、读写数据,只不过数据的读写由用户编写的程序完成。Jason A. Donenfeld 基于tun 向Linux社区贡献了WireGuard 用于实现虚拟网络。为了开发Windows的WireGuard,开发了wintun并且开源,以动态库的方式分发。[3]2. 下载Wintunwintun原创 2022-03-30 13:35:30 · 14071 阅读 · 5 评论 -
Linux Golang Cgo编译
与 i386 输出不兼容/usr/local/go/pkg/tool/linux_386/link: running gcc failed: exit status 1/usr/bin/ld: i386:x86-64 架构于输入文件 /tmp/go-link-175888364/000000.o 与 i386 输出不兼容/usr/bin/ld: /tmp/go-link-175888364/000007.o: 未识别的重定向 (0x2b),位于 `.text' 区/usr/bin/ld: 最后的链结原创 2022-03-11 17:07:10 · 3015 阅读 · 0 评论 -
Vite 打包 Gin静态资源代理 页面空白
Vite + Vue3 使用 npm run build 打包完成打包使用Golang Gin框架进行代理,如下:router.StaticFS("/static", http.Dir(filepath.Join(locExe, "web")))问题描述出现该问题Failed to load module script: Expected a JavaScript module script but the server responded with a MIME type of “text/原创 2022-03-09 17:41:19 · 1101 阅读 · 0 评论 -
Golang 逆序读取文件行
思路通过Seek函数从末尾移动游标然后每次读取一个字节判断是否为换行符换行符,新起一个逆序buff,新建字符串非换行符,加入缓冲buff直到文档开头,或限制行数。实现import ( "fmt" "io" "os")func main() { f, err := os.Open("readend/test.log") if err != nil { panic(fmt.Sprintf("open file error:%s", err.Error())) }原创 2022-03-09 11:20:58 · 852 阅读 · 0 评论 -
zorm 达梦适配问题
使用zorm适配达梦数据库驱动程序问题安装go get gitee.com/chunanyong/dm配置驱动import ( "fmt" _ "gitee.com/chunanyong/dm" "gitee.com/chunanyong/zorm" "strings")// Conn MySQL数据库连接func Conn(username, password, addr string) (*zorm.DBDao, error) { dsn := fmt.Sprintf(原创 2022-03-09 08:07:53 · 1637 阅读 · 0 评论 -
Cgo空指针 映射
Cgo中使用unsafe.Pointer 表示空指针void*例如如下Cgo代码// export recvfunc recv(fd C.int, buf unsafe.Pointer, len C.int) C.int 等于C代码extern int recv(int fd , void* buf, int len );参考文献[1]. go.dev . cgo Documentation . https://pkg.go.dev/cmd/cgo...原创 2022-02-21 14:49:01 · 909 阅读 · 0 评论 -
Go 32位程序原子指令 panic
type MySt struct { a uint8 b uint64}func main() { var my MySt my.a = 0 my.b = 16 atomic.AddUint64(&my.b, 1)}上述在64位操作系统上工作正常。当我们设置编译参数编译32位程序SET GOARCH=386go build再次运行该程序就会发生Paincsync/atomic.AddUint64(0x10d7a004, 0x1, 0x0, 0x10d2e280,原创 2022-02-11 17:24:10 · 501 阅读 · 0 评论 -
Go XP开发,以GoLand为例
背景在Go1.10 之后golang不再支持 Windows XP操作系统见 Go 1.10 Release Notes https://go.dev/doc/go1.10Golang在1.11增加了模块管理功能mod,让使用和应用三方模块变得更加简单和方便。环境搭建为了编译能够支持XP操作系统的程序,需要下载Go1.10的SDK,并且使用GOPATH的方式进行包管理。通过GO官方提供的历史归档下载,来下载go1.10 https://go.dev/dl/在页面最下方找到归档的版本,然后找到原创 2022-01-18 13:23:23 · 2270 阅读 · 1 评论 -
shamir 门限 分散图文详解
概述算法基本原理也就是多项式求值,详情见博客 [1]从上面的算法思路中了解到,待加密明文 s ∈ Zp 。事实上在实际该算法使用过程的,上面的数学表达需要装换为代码,待加密明文 s 可能存在多种情况,这造成有限群GF§取值多样,不便于算法代码实现。我们能够将 待加密明文 s 拆解多个分块,每个 分块 都处于 属于某个 固定的有限域G 内。以每个 分块 作为我们待加密的内容,这样我们就可以利用 固定的有限域G 实现算法。加密时,利用 Shamir算法加密独立每个分块。解密时分别解密每个分块原创 2021-08-03 12:06:27 · 1774 阅读 · 0 评论 -
Windows golang cgo交叉编译 linux arm64
在Windows上编译Linux Arm64 架构的go程序,最简单的方式是使用 WSL (Windows的linux子系统)安装 WSL编译环境在控制面板找到 程序 然后 选择 启用或关闭 Windows功能找到 适用于Linux的Windows子系统 勾选,然后确定,根据提示完成系统重启。重启后在开始菜单中找到 Windows store 并打开,然后搜索 Linux或者点这个链接打开 https://www.microsoft.com/zh-cn/search/result.asp原创 2021-05-20 00:05:21 · 7987 阅读 · 3 评论 -
如何判断两个网段是否存在覆盖
把需要讨论的2个的网段(CIDR),称作: A网段 ,B网段,简称:A,B。把网段的子网掩码1的数目的,写作:Mask[n],例如:A网段子网掩码1的数目为:Mask[A]。把网段的网络地址写作:Net[n],例如:A网段的网络地址为:Net[A]B网段是A网段应该满足下面条件:Mask[A] < Mask[B]Net[B] 属于 A网段例如:1.0.0.0/241.0.1.0/241.0.0.0/161.0.0.1/32以1.0.0.0/24 与 1.0.0.0/.原创 2021-04-16 15:50:15 · 1764 阅读 · 0 评论 -
Go Web服务重启
重启实现思路通过go 1.8 提供的net/http/server.go 中的 func (srv *Server) Shutdown(ctx context.Context) error 方法可以实现运行中的Web服务关闭。如下:监听端口启动服务关闭后再次启动: 监听端口,启动服务package mainimport ( "context" "io" "log" "net" "net/http" "time")func off(w http.ResponseWrit原创 2020-10-15 16:04:07 · 701 阅读 · 0 评论 -
Cgo 运行时 test2json: exit status 3221225781
Cgo在使用了动态库的情况,通过了编译,在运行时候推出程序并提示下面错误....test2json: exit status 3221225781这是应为在编译时能够找到对应的动态文件而在运行时无法找到的原因。解决可以有多种方式解决该问题。通用的解决方法:把动态库文件放置于可执行程序的相同路径。如果是测试文件(_test.go)中需要调用cgo出现该问题,因为在运行_test时是在操作系统的临时文件目录下生成的测试可执行文件。所以需要把动态库放置于用户的临时文件目录中例如wind原创 2020-09-22 09:39:47 · 3470 阅读 · 0 评论 -
cgo编译后的程序无法运行
在cgo 在引用了动态连接库之后编译之后生成的可执行文件运行在windows出现Process finished with exit code -1073741515 (0xC0000135)这是因为程序找不到编译时候使用的动态连接库导致的。解决方法 1把编译时候使用到的动态连接库放置到与可执行程序同一个路径。解决方法 2把动态连接库放置到操作系统目录linux:/lib/lib64windows:C:\WINDOWS\System32...原创 2020-09-17 14:50:02 · 1012 阅读 · 0 评论 -
Go拉取最新模块
例如仓库地址为github.com/Trisia/gosysproxy目前已经发布了v1.0.0的版本,但是该版本存在BUG,项目维护者对修复了该BUG但是没有发布新的版本,那可以通过下面命令拉取主分支下最新版本的库go get 仓库地址@分支名称例如go get github.com/Trisia/gosysproxy@master...原创 2020-09-15 17:53:01 · 1500 阅读 · 1 评论 -
Golang 命名规则
文章目录项目名(Module)和包名文件名常量和变量命名结构体 | 接口方法注释换行和风格参考文献项目名(Module)和包名涉及:项目名称,模块的名称,就是在go.mod里面第一行的名称。包名称:也就是项目中的目录名称(文件夹)。使用全小写作为名称,应使用短命名(单词音节缩写),不与标准库不要冲突。特殊的:针对于需要共享的库包名应包含完整的仓库路径。与标准库冲突的情况可以在包名后增加x表示扩展,如:net -> netx。例:项目名称: Support Tool Set原创 2020-09-15 10:51:42 · 1646 阅读 · 0 评论 -
Go 私有仓库模块拉取
使用自建的Gitlab作为代码仓库1.从Gitlab上获取一个你的用户的Token点击头像 > Settings选择 Access Tokens随便给个名字, 勾选上 read_repository 点创建就行复制下来你的Demo2.配置gitgit config --global http.extraheader "PRIVATE-TOKEN: 你的TOKEN"把token替换上去go 1.5.1 版本go mod 默认使用http的方式拉取,所以就不需要配置ssh转换原创 2020-09-05 16:52:18 · 2250 阅读 · 1 评论 -
Go mkwinsyscall 系统调用转换
mkwinsyscall Golang 官方提供将windows系统调用生成GO函数的工具。mkwinsyscall 文档mkwinsyscall 是处于golang.org/x/sys模块下的Windows平台的一个工具,所以需要安装golang.org/x/sys模块。go get -u golang.org/x/sys使用方式如下go run golang.org/x/sys/windows/mkwinsyscall [flags] [path ...]这里进行快速入门详细说原创 2020-09-01 11:54:48 · 554 阅读 · 0 评论