随笔分类 - golang
初学者的探索
摘要:在 Go 中,可以使用类型为 map[T]bool 的映射来判断切片中是否包含某个元素。 例如,假设你想要判断整型切片 s 中是否包含元素 x。你可以这样做: // 声明一个名为 m 的映射,其中键的类型为 int,值的类型为 bool。 m := make(map[int]bool) // 将 s
阅读全文
摘要:本文译自:How To Close Channels in Golang Elegantly。几天前,我写了一篇文章来说明golang中channel的使用规范。在reddit和HN,那篇文章收到了很多赞同,但是我也收到了下面几个关于Go channel设计和规范的批评: 在不能更改channel状
阅读全文
摘要:原始依赖管理方式 1.Go语言可以利用本身的能力做基础依赖管理,几个重要的组件包括GOPATH工作目录,Go命令工具(get install build)等,通过go get下载依赖包的最新版本到GOPATH指定目录。 Go语言有个重要的环境变量 GOPATH,保存工作目录路径(working sp
阅读全文
摘要:close函数是用于关闭通道的。官方解释(摘自close函数源代码注释): The close built-in function closes a channel, which must be eitherbidirectional or send-only. It should be execu
阅读全文
摘要:排除应用程序故障是比较复杂的,特别是处理像 Go 这样的高并发语言。它更容易在具体位置使用 print 打印语句来确定程序状态,但是 这个方法 很难根据条件发展去动态响应 你的代码 。 调试器提供了一个强大得令人难以置信的故障排除机制。添加排除故障的代码可以巧妙地影响到应用程序该如何运行。调试器可以
阅读全文
摘要:1.读写锁 2.channel介绍 单纯地将函数并发执行是没有意义的。函数与函数间需要交换数据才能体现并发执行函数的意义。 虽然可以使用共享内存进行数据交换,但是共享内存在不同的goroutine中容易发生竞态问题。为了保证数据交换的正确性,必须使用互斥量对内存进行加锁,这种做法势必造成性能问题。
阅读全文
摘要:33MEHOB8W0-eyJsaWNlbnNlSWQiOiIzM01FSE9COFcwIiwibGljZW5zZWVOYW1lIjoiUG9saXRla25payBNZXJsaW1hdSBNZWxha2EiLCJhc3NpZ25lZU5hbWUiOiJtYWdnaWUgc2VyIiwiYXNzaWd
阅读全文
摘要:由于一时心血来潮、想针对谷歌三驾马车(MapReduce, GFS, BigTable)分别写点啥,故我上个月在Google File System及其继任者Colossus中针对以GFS为代表的谷歌存储系统写了一篇日志。而这次,以三者中最出名的MapReduce为展开点,让我们随便谈谈相关的有趣东
阅读全文
摘要:概述 Golang 中 slice 极似其他语言中数组,但又有诸多不同,因此容易使初学者产生一些误解,并在使用时不易察觉地掉进各种坑中。本篇小文,首先从 Go 语言官方博客出发,铺陈官方给出的 slice 的相关语法;其次以图示的方式给出一种理解 slice 的模型;最后再总结分析一些特殊的使用情况
阅读全文
摘要:数组是存放元素的容器,Go语言中数组的长度是数组类型的一部分,定义数组时必须指定存放元素的类型和容量(长度) 定义 var a1 [3]bool var a2 [4]int fmt.Printf("a1:%T\na2:%T\n", a1, a2) 复制代码 打印结果: 数组初始化 默认值 定义数组时
阅读全文
摘要:缘起 我一直在想,有什么方式可以让人比较轻易地保持每日学习,持续输出的状态。写博客是一种方式,但不是每天都有想写的,值得写的东西。 有时候一个技术比较复杂,写博客的时候经常会写着写着发现自己的理解有偏差,或者细节还没有完全掌握,要去查资料,了解了之后又继续写,如此反复。 这样会导致一篇博客的耗时过长
阅读全文
摘要:Go语言相比C++/Java等语言是优雅且简洁的,是笔者最喜爱的编程语言之一,它既保留了C++的高性能,又可以像Java,Python优雅的调用三方库和管理项目,同时还有接口,自动垃圾回收和goroutine等让人拍案叫绝的设计。 有许多基于Go的优秀项目。Docker,Kubernetes,etc
阅读全文
摘要:文件校验方式 读取或者写入文件时必须文件进行校验,防止软连接攻击或者提权攻击,如果校验后再打开文件操作,很容易被构造条件竞争攻击。因此较安全的方式是先将文件打开,然后再校验,校验不通过时关闭文件,打开文件后文件不可能再被修改。 常见文件相关攻击路径 OOM(Out of Memory): 角色: 所
阅读全文
摘要:1 对从go源码和汇编源码生成可执行程序的过程,下面描述错误的是() A. 使用go tool compile可以将go源码编译成目标文件 B. 使用go tool asm可以将go源码编译成汇编代码 C. 使用go tool link可以将目标文件链接为可执行程序 D. 使用cgo特性时,需要使
阅读全文
摘要:Kubeedge Edged概述 Overview EdgeD是管理节点生命周期的边缘节点模块。它可以帮助用户在边缘节点上部署容器化的工作负载或应用程序。这些工作负载可以执行任何操作,从简单的远程遥测数据操作到分析或ML推理等等。使用kubectl云端的命令行界面,用户可以发出命令来启动工作负载。
阅读全文
摘要:目录 application assembler UserReq.go UserRsp.go dto MessageResult.go UserDTO.go services UserService.go domain aggregates Member.go models IModel.go Us
阅读全文
摘要:dao.go ``` package daoimport ( "fmt" "github.com/astaxie/beego/orm" "html" "strings" "sync")//constant metatable name referenceconst ( MetaTableName =
阅读全文
摘要:package mainimport ( "encoding/json" "fmt" "github.com/jinzhu/gorm" "github.com/pborman/uuid" "os" "reflect" "strings" _ "github.com/mattn/go-sqlite3"
阅读全文