随笔分类 - go 每日一题
摘要:1 题目(单选题) 如下Go语言程序的输出结果是() package main import "fmt" func f1(name string) string { fmt.Println("in f1", name) return name } func f2(name string) strin
阅读全文
摘要:1 什么是二进制? 2. 计算机为啥要使用二进制? 3.二进制的位操作? 先自己思考3s再看答案 1.十进制是以10作为基数,二进制则是以2作为基数 2.二进制具有抗干扰能力强,高可靠的优点,二进制是否适合逻辑计算。 3.移位操作=》*2 or /2 逻辑操作 或 只要有一个1,则是1 ; 与 全部
阅读全文
摘要:1 原理 操作系统中我们会使用select或者epool等实现 I/O 多路复用, Go 语言中关键字select用法与之类似,但go中的select只能等待Channel中的事件。Go 语言中的 select 够让 Goroutine 同时等待多个 Channel 可读或者可写,在多个文件或者 C
阅读全文
摘要:最近管理物料经常遇到这样的问题:以前都可以直接用root登录的环境,现在必须先登录普通用户,再用develop切换登录root,非常不方便,而且在此种情况下,上传文件的功能也丧失了。 在3ms上搜索了很多帖子,按照他们的解决方法还是没有解决问题(少了以下第三点) 正确修改方法: 1、普通用户登录,然
阅读全文
摘要:一、 问题描述 在将代码git push时,出现如下报错: 二、 尝试解决 1、 更换自己远程仓的分支: 改为新分支: 没有解决问题。 2、 上网查找“git did not exit cleanly (exit code 128)”的解决方法: 网上说一般是因为SSH设置或者配置了代理引起的,检查
阅读全文
摘要:工作中有时对同一个代码仓需要同时做开发、问题单定位等事项,以前都是把本地的代码文件copy一份或者重新拉取一份,但这样还是很不方便而且容易混淆。用拉分支的方法来并行开发更有效率。 首先,git branch查看个人分支: 创建一个分支专门用于定位问题单: 切到DTS分支: 接下来要让新分支和主仓保持
阅读全文
摘要:golang中,同时读写map是线程不安全的,可能会出现panic错误: fatal error: concurrent map read and map write Go语言在 1.9 版本中提供了一种效率较高的并发安全的 sync.Map,sync.Map 和 map 不同,不是以语言原生形态提
阅读全文
摘要:在做内存分析时,用到了pprof,这里做一下部署介绍和入门级别的使用。 pprof是golang的性能工具,有两种交互方式:命令行交互和web交互,同时还支持性能分析数据的图形化展示。 部署pprof: 在我们的kubeedge代码的edgecore.go里,import导入两个包,再加入访问ppr
阅读全文
摘要:以前,Go语言的依赖包的管理一直被诟病,Go官方从最初的GOPATH到GO VENDOR,再到目前的GO Modules,一直在努力提供更方便的包管理方案。 目前最主流的方案是官方推荐的GO Modules。先介绍一下以前的GOPATH和GO VENDOR,了解它们的发展历程,才能知道GO Modu
阅读全文
摘要:上篇介绍了Channel是什么以及它的类型,这篇总结一下Channel的用法。 基本语法 (1) 声明channel 声明channel的语法格式为: var ChannelName chan ElementType 与其他变量声明不同的是,在类型前面多了一个chan关键字。ElementType指
阅读全文
摘要:Golang在并发编程上有两大利器,分别是channel和goroutine。Golang中有一句名言:“使用通信来共享内存,而不是通过共享内存来通信”。这句话有两层意思,Go语言确实在sync包中提供了传统的锁机制,但更推荐使用channel来解决并发问题。这里先对Channel做一个基本的介绍,
阅读全文
摘要:在使用pprof工具分析性能时,发现我们的环境上默认没有装go,所以执行不了go tool pprof命令,于是自己手动装了下。步骤如下: 首先下载一个对应系统架构的golang包,这里我用的是arm包,装的1.14.12版本。(见附件)。在环境上创一个个人目录,把包传上去,然后执行以下命令解压到/
阅读全文
摘要:Golang中的切片是很基本的数据结构,它的底层是一个数组,表层是一个包含三个变量的结构体: type slice struct { array unsafe.Pointer //指针,指向底层的数组 length int //切片的长度 capcity int //切片的容量 } 当把一个切片赋值
阅读全文
摘要:package main func main() { var x *struct { s [][32]byte } println(len(x.s[99])) } 答题结果如下: 正确率只有 16%。 本文就讲解下为什么结果是 32。 01 解析题目 先剖析下这段代码,x 变量: var x *st
阅读全文
摘要:1. 学习不能只学皮毛,冰山一角,深入到下面去 eg: defer的本质 2.1 defer不仅仅是栈的结构 2.2 defer 是如何存放入参和返回值的,如何执行的,这些都需要了解 defer 理解 输出: 2910 var age int = 10 defer fmt.Println(age)
阅读全文