golang
文章平均质量分 84
咖啡色的羊驼
我愿望是世界和平
展开
-
一看就懂系列之Golang的pprof
前言这是一篇给网友的文章,正好最近在研究分析golang的性能,我觉得是时候来一个了断了。正文1.一句话简介Golang自带的一款开箱即用的性能监控和分析工具。(全篇看的过程中没必要特意记忆、看完自然让你有不一样的感觉)2.使用姿势?2.1 runtime/pprof手动调用runtime.StartCPUProfile/runtime.StopCPUProfile等API来进行...原创 2020-03-02 15:26:30 · 3062 阅读 · 0 评论 -
踩坑系列之go的unexpected directory layout
前言在本地起了一个test项目,用于日常的小测试,然后写了一个单测的代码,发现报错了。网上找了一下答案,发现也有小伙伴遇到。说实话没看懂,写的太不直接了。所以用最短的话,记录一下。正文在执行go test命令的时候,报错内容:unexpected directory layout: import path: _/Users/didi/go/src/test/gotest/lib r...原创 2020-02-29 16:35:14 · 6154 阅读 · 11 评论 -
一看就懂系列之Golang的Map如何做到最省空间?
前言今天在看源码的时候,发现一个东西,“空间”和“时间”一直是对立的,那么在“空间换时间”的时候,通常使用的是map中的key来快速判断,很多时候其value是用不到的。那么问题来了,既然很多时候value用不到,那么怎么写才是最节省空间的?正文说实话,我没有直接想到这个问题的答案。不过我查到了。struct{} 的巧妙使用当声明为map[int]struct{},由于stru...原创 2019-12-01 17:17:59 · 1534 阅读 · 3 评论 -
踩坑系列之 mysql的effect rows
前言这周的时候,和老铁就GoLang中mysql的“effect rows”这个问题讨论起来。关键点在于:在进行update操作的时候,如果不进行更新(也可以理解为当前数据库就是这样子了)或者没这条数据,effect rows都会为0。假设一个场景,需要区分这两种情况,就没法解决了。正文解决方案寻找过程1. 命令行验证通过命令行操作数据库,可以看到,mysql客户端是区分了match...原创 2019-11-10 21:49:43 · 2533 阅读 · 3 评论 -
由浅入深聊聊Golang的context
前言正文原创 2018-10-07 01:49:13 · 24265 阅读 · 6 评论 -
如何判断Golang接口是否实现?
前言在看一个底层库的的时候,看到了一个比较奇怪的写法,于是乎有了本文。主要探讨两个问题:1.利用编译来判断Golang接口是否实现2.延伸出的make和new的区别正文1.利用编译来判断Golang接口是否实现看了一个底层通用链接池的库,有这么一行代码:var _ Pooler = new(WeightedRoundRobin)需要解释的是:Pooler是一个接口类型。typ...原创 2018-10-27 14:45:07 · 8991 阅读 · 1 评论 -
Golang优化之内存对齐
前文话说今天在用uintptr进行指针运算的时候,突然想起来有个内存对齐的东西,那么对这个uintptr计算是否会有影响?带着疑问,开始吧。你将获得以下知识点:1.什么是内存对齐?2.为什么需要内存对齐?3.如何进行内存对齐?4.golang的内存对齐如何体现?5.如何利用内存对齐来优化golang?正文1.什么是内存对齐?在想象中内存应该是一个一个独立的字节组成的。像这样:...原创 2018-12-18 03:57:12 · 3854 阅读 · 8 评论 -
一看就懂系列之Golang的String
前言今天在写代码的时候,遍历Golang中的字符串时候,发现竟然和想象中不同,从而认真研究了一下,做个记录与string做一给了断,这是一篇实战贴。你将知道一下知识点:1.字符串的组成?2.如何遍历字符串?3.如何将字符串与整型互转?4.如何改变其中某个字符?5.如何截取字符串?6.如何计算长度?7.如何连接字符串?正文1.字符串的组成?Golang的字符串都是由单个字节连...原创 2019-02-24 16:36:58 · 811 阅读 · 0 评论 -
如何处理Golang中int64类型变为科学计数法?
背景这周时候在处理订单消息传递的时候,发现定义的orderID大多数时候是正常的(例如:1152921570135310348)偶现科学计数法(例如:1.1529215701353103e+18)。传参的结构是这样的:map[string]interface{}赋值:data[“id”] = 1152921570135310348后面就开始调接口,记录日志等一系列操作。查了一会儿发现正常流...原创 2019-05-11 16:21:36 · 7620 阅读 · 5 评论 -
由浅入深聊聊Golang的sync.Map
前言今天在技术群中有小伙伴讨论并发安全的东西,其实之前就有写过map相关文章:由浅入深聊聊Golang的map。但是没有详细说明sync.Map是怎么一回事。回想了一下,竟然脑中只剩下“两个map、一个只读一个读写,xxxxx”等,关键词。有印象能扯,但是有点乱,还是写一遍简单记录一下吧。1.为什么需要sync.Map?2.sync.Map如何使用?3.理一理sync.Map源码实现?...原创 2019-07-21 01:22:34 · 15559 阅读 · 5 评论 -
由浅入深聊聊Golang的sync.Pool
前言今天在思考优化GC的套路,看到了sync.Pool,那就来总结下,希望可以有个了断。用最通俗的话,讲明白知识。以下知识点10s后即将到来。1.pool是什么?2.为什么需要sync.Pool?3.如何使用sync.Pool?4.走一波源码5.源码关键点解析6.用上池子效率怎么样?正文1.sync.Pool是什么?Golang在 1.3 版本的时候,在sync包中加入一个新...原创 2019-07-31 02:02:41 · 1802 阅读 · 0 评论 -
由浅入深聊聊Golang的slice
前言今天本来想去外地玩耍,结果睡过头错过了动车,只好总结一下slice,希望能与slice之间做一个了断。文章由浅入深,遵从能用代码说话就不bb的原则。正文1.基本操作1.1 声明var stringSlice []stringstringSlice := []string{"咖啡色的羊驼"}var intSlice []int64intSlice := []int{18}...原创 2018-10-04 20:04:09 · 940 阅读 · 4 评论 -
关于goroutine的一些小理解
前言今天看一个大神的代码,看到了runtime.Gosched(),瞬间把我看懵了。。后面梳理了下,其实这个竟然之前学习goroutine的时候没学到,所以顺便记录下,以便日后留恋。知识点理解这个goroutine必须要知道以下三大块东西。进程、线程、协程并发、并行Golang中的M、P、G我会用非常通熟易懂的方式来进行说明。(我也怕很烦的解释,不利于记忆啊!)进程、线程、...原创 2018-10-11 21:55:04 · 12483 阅读 · 1 评论 -
一看就懂系列之Golang的goroutine和通道
前言10s后,以下知识点即将靠近:1.从并发模型说起 2.goroutine的简介 3.goroutine的使用姿势 4.通道(channel)的简介 5.重要的四种通道使用 6.goroutine死锁与处理 7.select的多路复用 8.select死锁正文1.从并发模型说起看过很多大神简介,各种研究高并发,那么就通俗的说下并发。 并发目前来看比较主流的...原创 2018-07-24 08:04:03 · 31104 阅读 · 16 评论 -
一看就懂系列之Golang的方法
前言在Go里头是没有类的概念的,但是Go一样实现了同样的效果。 本文主要通过Go和PHP的对比来做笔记,致力于”一篇讲清楚go方法”,对于说phper的同学,看完印象会更深刻。即将get到以下知识小点: 1.Go的方法 vs PHP的类 2.Go的继承 vs PHP的继承 3.重载?重写? 4.指针接收者的方法 5.封装&访问权限说明正文1.Go的方法 vs...原创 2018-07-20 02:33:34 · 4538 阅读 · 0 评论 -
咖啡色的羊驼学习Golang
前言四年前便与golang结缘,学了一波由于没有应用场景便雪藏了,前几个月重新开始学习,此篇用于自己的总结备忘录。正文[先写标题,先留坑日后再填]1.golang基础操作总结...原创 2018-07-16 00:24:03 · 2157 阅读 · 2 评论 -
一看就懂系列之Golang的反射
前言10s后,以下知识点即将靠近: 1.反射的简介 2.为什么使用反射? 3.反射的实现 4.反射具体能做什么?https://www.jianshu.com/p/53adb1e92710正文1.反射的简介Golang提供了一种机制,在编译时不知道类型的情况下,可更新变量、运行时查看值、调用方法以及直接对他们的布局进行操作的机制,称为反射。2.为什么使用反射...原创 2018-07-29 09:35:42 · 29886 阅读 · 7 评论 -
一看就懂系列之Golang准备
前言开始学习之前要做的一些准备: 1.golang的简历 2.本地开发环境的搭建 3.编辑器的选择 4.推荐的书籍正文golang的简历golang的背景和背影都很多,简单一句话介绍: ··· 123123123123 ···...原创 2018-07-16 01:50:16 · 4118 阅读 · 0 评论 -
一看就懂系列之Golang的测试
前言10s后以下知识点即将靠近: 1.为什么需要测试? 2.Golang的测试规矩 3.功能测试 4.压力测试 5.测试代码的覆盖率测试 6.测试框架正文原创 2018-07-30 01:15:27 · 21195 阅读 · 1 评论 -
一看就懂系列之Golang的接口
前言接口在面向对象编程中是经常使用的招式,也是体现多态很重要的手段。 是的。Golang中也有接口这玩意儿。本文将以通俗易懂的方式,走一波Golang的接口。10s后,以下知识点即将到达战场: 1.接口是什么?如何定义? 2.为什么需要接口? 3.接口实战初体验 4.如何测试是否已实现该接口? 5.接口零值 6.空接口&类型断言&switch判断 7.一...原创 2018-07-22 03:12:02 · 41489 阅读 · 8 评论 -
Golang如何获取Request Payload的数据
前言话说今天对接fe,发现一直出现参数错误的报错。对了参数格式没问题,后面发现数据不是Form Data的,而是Request Payload的,所以来总结备忘下。正文了解Request Payload这个要从POST请求说起: POST请求有两种方式:1.方式一: Form Data形式 当POST请求的请求头里设置Content-Type: applicatio...原创 2018-08-20 23:43:13 · 7872 阅读 · 2 评论 -
Golang中defer的三个实战要点
前言Golang中的defer是使用频次比较高的,能创造出延迟生效特效的一种方式。defer也有自己的矫情,需要注意的。 本文将从通过代码的方式来说明defer的三点矫情。1.defer的生效顺序 2.defer与return,函数返回值之间的顺序 3.defer定义和执行两个步骤,做的事情。正文1.defer的生效顺序先说结论:defer的执行顺序是倒序执行(同入栈...原创 2018-08-25 16:42:34 · 4820 阅读 · 0 评论 -
由浅入深聊聊Golang的map
前言今日听了大佬们对于map的讲解,结合自己之前的积累,专门来由浅入深的总结一下,希望可以与map之间做一个了断。文章的深浅顺序是递进的,当你看完这篇文章,你也基本掌握了map的99%的知识点了,可以装逼和吹牛逼了。正文1.map的基本使用1.1声明 & 默认值// 声明var m map[string]stringmap的声明的时候默认值是nil ,此时进行取值,返回的...原创 2018-10-04 00:32:51 · 26809 阅读 · 9 评论 -
一看就懂系列之Golang实战基础
前言学习任何东西都是从模仿开始的。 golang最精华的基础部分,在网上找了半天没发现合适的,还是自己总结一篇吧。 本文包括以下内容:1.Golang的基础语法 2.Golang的基础命令此文浏览即可无需记住,使用时当字典来查会有惊喜哦~正文Golang的基础语法1.官方关键字与变量的类型 关键字 break...原创 2018-07-19 02:40:09 · 8241 阅读 · 2 评论