随笔分类 -  golang

上一页 1 2 3 4 下一页
defer使用小结
摘要:defer 前言 defer的定义 defer执行的规则 为什么需要defer defer进阶 作为匿名函数 作为函数参数 defer命令执行的时机 defer配合recover 总结 参考 defer 前言 defer作为go里面一个延迟调用的机制,它的存在能够大大的帮助我们优化我们的代码结构。但 阅读全文
posted @ 2020-03-13 09:12 ZhanLi 阅读(1325) 评论(0) 推荐(0) 编辑
go mod 使用总结,如何拉取私有仓库资源
摘要:go module了解 前言 开启go mod 简单使用 1、初始化 2、依赖升级(降级) 3、更改使用的pkg 4、清除不需要的依赖包 GoProxy 拉取私有仓库 安全性问题 总结 参考 go module了解 前言 Go 的包管理方式是逐渐演进的, 最初是 monorepo 模式,所有的包都放 阅读全文
posted @ 2020-02-18 08:54 ZhanLi 阅读(1458) 评论(0) 推荐(0) 编辑
golang环境安装和配置
摘要:go中环境安装 前言 最近在工作中需要新配置go环境,每次都要去网上查找教程,浪费时间,那么就自己总结下。 下载安装 linuxGolang官网下载地址:https://golang.org/dl/1、选择你要安装的版本 File name Kind OS Arch Size SHA256 Chec 阅读全文
posted @ 2020-02-16 13:05 ZhanLi 阅读(1630) 评论(0) 推荐(0) 编辑
excel中存储的时间的类型是什么
摘要:做了一个excel导入数据的功能,其中需要导入时间,默认到天。在开发过程中发现了一个问题, 导入的数据解析到的时间格式是 02-03-19,发现年份前面的两位数丢失了。这当然是导入数据 的解析包的问题。深入代码里面查看,发现excel解析到的原始数据是一个数字,但是并不是时 间戳,那么存储的是什么呢 阅读全文
posted @ 2020-01-15 22:14 ZhanLi 阅读(1321) 评论(0) 推荐(0) 编辑
go 中的WaitGroup
摘要:wait_group sync.WaitGroup 类型是并发安全的,也是开箱就能用的。 该类型有三个指针方法,即:Add,Done和Wait. sync.WaitGroup是一个结构体类型。其中一个代表计数的字节数组类型的字段,该 字段用4字节表示给定计数,另4字节表示等待计数。当一个sync.W 阅读全文
posted @ 2019-12-11 09:42 ZhanLi 阅读(916) 评论(0) 推荐(0) 编辑
go中的unsafe
摘要:unsafe 前言 什么是unsafe,为什么需要unsafe unsafe实现原理 unsafe.Pointer && uintptr类型 unsafe.Pointer uintptr 总结 参考 unsafe 前言 在阅读go源码的时候,发现很多地方使用了unsafe.Pointer来处理指针类 阅读全文
posted @ 2019-12-04 09:01 ZhanLi 阅读(785) 评论(0) 推荐(0) 编辑
GO中的逃逸分析
摘要:1、什么是逃逸分析 以前写c/c++代码时,为了提高效率,常常将pass-by-value(传值)“升级”成pass-by-reference,企图避免构造函数的运行,并且直接返回一个指针。 那么这里还隐藏了一个很大的坑:在函数内部定义了一个局部变量,然后返回这个局部变量的地址(指针)。这些局部变量 阅读全文
posted @ 2019-11-06 15:18 ZhanLi 阅读(1377) 评论(0) 推荐(0) 编辑
GO代码风格指南 Uber Go (转载)
摘要:原文地址:https://github.com/uber-go/guide/blob/master/style.md 译文出处:https://github.com/uber-go/guide 本文永久链接:https://github.com/gocn/translator/blob/master 阅读全文
posted @ 2019-10-15 08:37 ZhanLi 阅读(459) 评论(0) 推荐(0) 编辑
coding 注意事项(总结中)
摘要:Uber Go 语言代码风格指南可以参考下:https://www.cnblogs.com/ricklz/p/11670932.html 最近写代码,老是被吐槽,代码写的不好,细节处理的不好。 那么下面来总结下平时遇到的点,并且需要改进的地方。 一、命名不规范 1、经常遇到变量的名字写错 2、命名不 阅读全文
posted @ 2019-10-10 08:52 ZhanLi 阅读(226) 评论(0) 推荐(0) 编辑
go中内存泄露的发现与排查
摘要:内存泄露 前言 场景 暂时性内存泄露 永久性内存泄露 goroutine内存泄露 发送端channel满了 接收端消费的channel为空 生产者消费者异常退出,导致channel满了或者channel为空 channel未初始化 未添加超时处理 使用pprof排查 什么是pprof 浏览器查看 命 阅读全文
posted @ 2019-07-29 09:22 ZhanLi 阅读(10306) 评论(1) 推荐(4) 编辑
GO中的channel使用小结
摘要:go关键字可以用来开启一个goroutine(协程))进行任务处理,而多个任务之间如果需要通信,就需要用到channel了。 上面这个简单的例子就是新开启的goroutine向intChan发送了一个1的值,那么在主线程的intChan就会收到这个值的信息。 channel类型:无缓冲和缓冲类型ch 阅读全文
posted @ 2019-07-21 00:23 ZhanLi 阅读(644) 评论(0) 推荐(0) 编辑
go中的线程的实现模型-P G M的调度
摘要:线程实现模型 go中线程的实现是依靠 P G M M machine的缩写。一个M代表一个内核线程,或称“工作线程” P processor的缩写。一个P代表执行一个Go代码片段所需要的资源(或称“上下文环境”) G goroutine的缩写。一个G代表一段Go代码片段。前者是对后者的一种封装。 可 阅读全文
posted @ 2019-05-31 08:26 ZhanLi 阅读(878) 评论(0) 推荐(0) 编辑
Golang中的Gosched、Goexit、GOMAXPROCS
摘要:Golang进程权限调度包runtime三大函数Gosched,Goexit,GOMaXPROCS runtime.Gosched(),用于让出CPU时间片,让出当前goroutine的执行权限,调度器安排其它等待的任务运行,并在下次某个时候从该位置恢复执行。这就像跑接力赛,A跑了一会碰到代码run 阅读全文
posted @ 2019-05-14 21:47 ZhanLi 阅读(494) 评论(0) 推荐(0) 编辑
go语言学习--内核态和用户态(协程)
摘要:go中的一个特点就是引入了相比于线程更加轻量级的协程(用户态的线程),那么什么是用户态和内核态呢? 一、什么是用户态和内核态 当一个任务(进程)执行系统调用而陷入内核代码中执行时,我们就称进程处于内核运行态(或简称为内核态)。此时处理器处于特权级最高的(0级)内核代码中执行。当进程处于内核态时,执行 阅读全文
posted @ 2019-04-21 14:54 ZhanLi 阅读(2766) 评论(0) 推荐(0) 编辑
go语言学习--go中godep的使用小结
摘要:go中的godep 本文参考:http://www.cnblogs.com/me115/p/5528463.html#h20 http://studygolang.com/articles/4385 关于Godep 发现好多golang项目都使用到godep作为包管理的工具,像比较大型的项目,比如k 阅读全文
posted @ 2019-04-04 19:11 ZhanLi 阅读(5319) 评论(0) 推荐(0) 编辑
go语言学习--go中的map切片
摘要://定义一个结构 type Car struct { Brand string Age int } func Pluck() map[int][]Car { carMap := make(map[int][]Car) carArr := make([]Car, 0) carArr = append(carArr, Car{ Brand: ... 阅读全文
posted @ 2019-03-10 18:08 ZhanLi 阅读(254) 评论(0) 推荐(0) 编辑
go语言学习--处理map的无序输出
摘要:最近工作中遇到了这样的一个场景,需要处理一个无限极分类的问题,对于数据结构的定义首先想到了,map,map[int]map[int]struct。通过两层map的定义归类parent_id和id的关系,然后有个递归进行数据的绑定处理。想想就开心,map确实好用,虽然不是并发安全,但是在查询速度和检查 阅读全文
posted @ 2019-03-10 18:04 ZhanLi 阅读(636) 评论(0) 推荐(0) 编辑
if else和switch case那个效率更高一点
摘要:switch...case写法: switch (表达式){ case 值1 : 语句1 break; case 值2 : 语句2 break; ... default : 语句n break; } if...else写法: if(boolean){ }else if(boolean){ }else 阅读全文
posted @ 2019-02-01 15:07 ZhanLi 阅读(21079) 评论(0) 推荐(4) 编辑
go语言学习--go中闭包
摘要:关于闭包有句话说的很好,闭包捕获的变量和常量是引用传递不是值传递。 Go语言支持匿名函数,即函数可以像普通变量一样被传递或使用。 使用方法如下: package main import ( "fmt" ) func main() { var v func(a int) int v = func(a 阅读全文
posted @ 2019-01-13 17:53 ZhanLi 阅读(380) 评论(0) 推荐(0) 编辑
go中的无限极分类的问题
摘要:最近在开发的过程中遇到一个无限极分类的问题,这种问题在php中写过很多,想着很简单,3-5分钟就能解决,结果竟然写了半小时,既然这样,就把这个给总结下。 思路 1、循环数据,放到hash中,把标识的数据作为key。 2、处理数据,循环数据,通过hash的查找拼接数据 3、go中的难点在于定义数据的格 阅读全文
posted @ 2018-12-29 17:28 ZhanLi 阅读(391) 评论(0) 推荐(0) 编辑

上一页 1 2 3 4 下一页