go
文章平均质量分 50
liuqun0319
个人微信 liuqun0319 欢迎交流
道阻且长,行则将至
有容乃大,无欲则刚,容是别人,欲是自己
展开
-
go 调用函数 函数里边defer、log和调用函数层级 defer、log执行顺序
go 调用函数 函数里边defer、log和调用函数层级 defer、log执行顺序原创 2022-06-21 16:56:48 · 359 阅读 · 0 评论 -
panic recovered, err: runtime error: invalid memory address or nil pointer dereference 怎么排查问题
panic recovered, err: runtime error: invalid memory address or nil pointer dereference原创 2022-05-11 15:54:23 · 1036 阅读 · 0 评论 -
go get: disabled by -mod=vendor
go get: disabled by -mod=vendor怎么解决原创 2022-03-31 16:25:48 · 496 阅读 · 0 评论 -
go-xorm 报错 “( could not be the first charactor”
go-xorm 报错 “( could not be the first charactor”原创 2022-03-13 16:29:08 · 284 阅读 · 0 评论 -
go-trace设计
一、为什么要传递trace信息? 现在微服务开发已经成为主流,从用户发起请求到最终返回结果,中间可能会跨越好几个服务,调用链路会非常长,因为无法把用户请求上下游串联起来所以定位问题就会非常头疼,所以就需要通过trace信息把用户完整请求链路串联起来 主要目的:1、后期全链路追踪 2、快速排查定位问题 3、设置链路最长执行时间,超时自动返回,防止由于下游服务调用异常引起雪崩效应二、trace传递规范流程原创 2021-12-14 14:15:27 · 591 阅读 · 0 评论 -
go -Unmarshal 错误的几种情况
情况1 返回的json是string,struct里边的tag是其他类型比如是int.则报错返回的json如下 :{"loan_product_id":"101","manage_rate":"0.41","overdue_rate":"0.09","late_fee_rate":"0.00"}type OrderRet struct { ProductId int `json:"loan_product_id,int"` OverdueRate float64 `json:原创 2021-12-13 18:04:46 · 13108 阅读 · 1 评论 -
go net/http: HTTP/1.x transport connection broken: malformed MIME header line:
当碰到错误 :net/http: HTTP/1.x transport connection broken: malformed MIME header line:********A服务版本为go 1.13.5调用 B服务1.9.2出现这个问题主要是由于go的版本过低解决方案: 升级对应服务器的低版本的go, go版本1.10之前都会有这种错误所以升级之后就解决了github原文链接 https://github.com/C-Sto/recursebuster/issues/18...原创 2021-09-08 17:49:39 · 3082 阅读 · 0 评论 -
签名校验 go & php
一.签名传参(统一在header头里面进行传递)参数名称参数说明sign签名值ak调用方标识,服务端根据此标识匹配SK秘钥timestamp签名时间戳,服务端需要进行过期检测二.签名步骤1.GET请求将URL请求中的传参构造成url方式得到urlstring如:a=1&b=2&c=3根据请求来源确定加密秘钥SK(秘钥可以是设备ID+动态token根据业务进行确定)拼接加密串 urlstring+timestamp(请求参数+请求时间)如:原创 2021-09-03 15:21:17 · 452 阅读 · 0 评论 -
go json.Unmarshal 精度问题怎么解决
golang使用json.Unmarshal的时候,有些数字类型的数据会默认转为float64,而一些数据因其比较大,导致输出的时候会出现数据与原数据不等的现象,var jsonBlob = []byte(`[ {"Name": "2000.00", "Order": "200.23"}, {"Name": "100.00", "Order": "12.00"} ]`) type Animal struct { Name float32 Order float32 } va原创 2021-08-17 21:21:09 · 667 阅读 · 0 评论 -
go map的实现
1. map数据结构Golang的map使用哈希表作为底层实现,一个哈希表里可以有多个哈希表节点,也即bucket,而每个bucket就保存了map中的一个或一组键值对。map数据结构由runtime/map.go:hmap定义:type hmap struct { count int // 当前保存的元素个数 ... B uint8 ... buckets unsafe.Pointer // bucket数组指针,数组的大小为2^原创 2021-06-29 09:38:34 · 552 阅读 · 2 评论 -
go protobuf 的使用
protobuf是google旗下的一款平台无关,语言无关,可扩展的序列化结构数据格式。所以很适合用做数据存储和作 为不同应用,不同语言之间相互通信的数据交换格式,只要实现相同的协议格式即同一 proto文件被编译成不同的语言版本,加入到各自的工程中去。这样不同语言就可以解析其他语言通过 protobuf序列化的数据。目前官网提供了 C++,Python,JAVA,GO等语言的支持。google在2008年7月7号将其作为开源项目对外公布。protoBuf简介Google Pro.原创 2021-06-10 19:51:48 · 822 阅读 · 0 评论 -
go负载机器的加锁
比如两台机器同时执行代码 为了防止两台机器重复执行 加上redis锁来防止重复执行import ( "fmt" "git.liebaopay.com/INA_financial/main/model" "git.liebaopay.com/INA_financial/main/service" "github.com/astaxie/beego/logs" "github.com/garyburd/redigo/redis" "time")type runTdTaskTimer stru原创 2021-05-20 14:53:08 · 221 阅读 · 0 评论 -
Go面试: 求101-200之间的素数 (Golang经典编程案例)
例:判断101-200之间有多少个素数,并输出所有素数。思路分析:判断素数的方法:用一个数分别去除2,如果能被整除,则表明此数不是素数,反之是素数。package mainimport "fmt"func main() { for i := 101; i <= 200; i++ { for j := 2; j <= i; j++ { if i != j && i%j == 0 { break } if i == j &&原创 2021-05-02 12:49:47 · 332 阅读 · 0 评论 -
go 垃圾回收:三色算法
转载自https://studygolang.com/articles/22194?fr=sidebar三色算法go垃圾回收器的操作都是基于三色算法,这篇文章主要来说明此算法。注意:三色算法并不是go独有的,它也会在其它编程语言中使用到严格来说,在Go中这个算法的官方名称是叫做三色标记清除算法(tricolor mark-and-sweep algorithm)。它可以和程序一起并发工作并且使用写屏障(write barrier)。这就意味着,当Go程序员运行起来,go调度器去负责应用程序的调度,而原创 2021-03-21 12:22:52 · 520 阅读 · 0 评论 -
golang之树遍历
转载自https://studygolang.com/articles/16314go语言在区块链编程中有巨大的优势,其中fabric和ethereum都是基于go语言编写的。为了能更好的学习区块链的底层技术,先将go的基础打好。本篇文章使用golang来实现树的遍历树的定义package maintype Node struct { Val int Left *Node Right *Node}深度优先遍历深度优先遍历需要优先使用栈栈的定义package main原创 2021-03-14 14:08:12 · 1093 阅读 · 0 评论 -
go orm框架对比
订单系统重构技术选型针对目前订单系统由PHP系统重构成go系统orm 技术调研选型ormgormxorm地址官网 :https://gorm.cn/ github:https://github.com/go-gorm/gorm官网:https://xorm.io/ github: https://github.com/go-xorm/xormstar(目前)226666305优势1.全功能 ORM 2.关联 (has one,has many,bel原创 2021-02-06 21:55:18 · 6791 阅读 · 0 评论 -
go mod tidy 报错:verifying ...: checksum mismatch
转载自 https://maiyang.me/post/2019-01-23-go-mod-tidy-occure-verify-checksum-mismatch/杨文大佬整理的博客在编译阶段时执行 go mod tiny 报错go: verifying github.com/docker/docker@v1.13.1: checksum mismatch解决办法$ go clean -modcache$ cd project && rm go.sum$ go mod转载 2021-01-17 13:07:09 · 956 阅读 · 0 评论 -
GO 获得当前月,当前周,当前季度的初始和结束日期
转载自 https://blog.csdn.net/Srodong/article/details/107843680/** * @Author: Dong * @Description:获得当前月,当前周,当前季度的初始和结束日期 * @File: tools * @Date: 2020/08/06 16:24 */package tools import ( "strconv" "time") /** * @Author Dong * @Description 获得当原创 2021-01-11 23:55:46 · 2037 阅读 · 0 评论 -
浅析Go中的MPG模式(一)
Goroutine(协程)首先了解一下协程(goroutine)这个东西1、Go线程(主线程,一般称为线程,有的大佬们也直接叫进程),也可理解为进程。是一个物理级线程,重量级的,非常耗费CPU资源2、一个线程上可以有多个协程(goroutine),协程是轻量级的线程(go对于线程进行的特殊处理)。逻辑态,消耗资源相对少。按照消耗资源可以这样排序:进程 >= 主线程 > 子线程 >= 协程3、Go协程特点(1)有独立的栈空间(2)共享程序堆空间(3)调度由用户(程序)控制转载 2020-12-20 15:55:32 · 545 阅读 · 0 评论 -
panic: assignment to entry in nil map
转载自:https://github.com/kevinyan815/gocookbook/issues/7golang中map是引用类型,应用类型的变量未初始化时默认的zero value是nil。直接向nil map写入键值数据会导致运行时错误panic: assignment to entry in nil map看一个例子:package mainconst alphabetStr string = "abcdefghijklmnopqrstuvwxyz"func main() {原创 2020-12-15 16:54:00 · 6042 阅读 · 0 评论 -
Golang 新手可能会踩的 50 个坑
前言 Go 是一门简单有趣的编程语言,与其他语言一样,在使用时不免会遇到很多坑,不过它们大多不是 Go 本身的设计缺陷。如果你刚从其他语言转到 Go,那这篇文章里的坑多半会踩到。 如果花时间学习官方 doc、wiki、讨论邮件列表、 Rob Pike 的大量文章以及 Go 的源码,会发现这篇文章中的坑是很常见的,新手跳过这些坑,能减少大量调试代码的时间。 初级篇:1-34 1. 左大括号 { 不能单独放一行 在其他大多数语言中,{ 的..转载 2020-12-15 15:46:56 · 2907 阅读 · 0 评论 -
go 单元测试整理
testinggo语言package提供的自动化测试框架,是质检云团队最初采用的单测工具。testing支持普通用例测试、压力测试、并行测试,基本能满足单测需求;不足:testing不支持mock,想要mock数据必须自己实现mock逻辑,这会增加许多不必要的工作量。mock的重要性理想情况下,一个好的函数结构必须有入参、出参,完成的是一项单一、独立的工作,比如:func add(a int, b int) int {return a + b}这样的函数写单测很简单,且轻易就能达到100原创 2020-12-02 10:32:48 · 297 阅读 · 0 评论 -
go test 测试单个文件和测试单个函数
测试单个文件,一定要带上被测试的原文件go test -v wechat_test.go wechat.go测试单个方法go test -v -test.run TestRefreshAccessToken转载 2020-10-23 17:21:32 · 2342 阅读 · 0 评论 -
go json返回时间字符串处理time.Time类型
go json返回时间字符串处理time.Time类型go json 字符串转成 time.Time类型go -62135596800原创 2020-09-06 16:01:52 · 2645 阅读 · 0 评论 -
go 堆排序 希尔排序 归并排序
go 堆排序package mainimport "fmt"func main() { list := []int{1, -2, -3, 12, 25, 96, 38, 19, 49, 59, 57, 29, 55, 66} HeapSort(list) fmt.Println(list)}func HeapSort(list []int) { length := len(list) //建立初始堆 sift(list, 0, length-1) for idx := leng原创 2020-06-28 17:30:21 · 316 阅读 · 0 评论 -
小刘整理的 go 面试题
Go相关map、channel、slice的底层实现,sync.map、sync.pool、sync.Once的原理GC的过程、写屏障的含义及作用GMP模型,触发Goroutine切换的原因有哪些?for死循环会怎么样?全局goroutine里面存储什么?interface的底层实现,怎么判空?reflect的使用逃逸分析context的使用go 性能问题的定位过程(pprof的使用)协程池的使用Mysql相关索引的分类为什么选择B+树实现索引?一般深度为多少?b+树和红黑树原创 2020-06-17 10:27:13 · 1961 阅读 · 3 评论 -
go 反转一个单链表
输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL代码实现// ListNode Definition for singly-linked list.type ListNode struct { Val int Next *ListNode}func reverseList(head *ListNode) *ListNode { if head == nil ||原创 2020-05-27 10:39:09 · 274 阅读 · 0 评论 -
go中 type func()用法分析
@[TOC](go type func() 自定义函数类型)因看不懂 go 中的自定义函数类型,看了https://www.jianshu.com/p/431abe0d2ed5 理解了不少,特此搬运到自己博客在看golang 的http服务部分代码时,被golang 中的 type func()写法难住了,一时没看懂代码。后来查资料后,有了一点理解。在golang中可以通过这样简单实现一个http服务package mainimport "net/http"func mHttp() {转载 2020-05-15 10:48:52 · 2055 阅读 · 1 评论 -
beego邮件发送
QQ 邮箱网页上需要设置授权码,开启POP3/STMP服务具体可以点击网址 https://service.mail.qq.com/cgi-bin/help?subtype=1&&id=28&&no=1001256查看操作步骤1、什么是授权码?授权码是QQ邮箱推出的,用于登录第三方客户端的专用密码。适用于登录以下服务:POP3/IMAP/SMTP/Exc...原创 2020-04-22 15:39:33 · 923 阅读 · 0 评论 -
go 利用beego orm的数据库设计
比如利用 go web框架 beego中的orm 对象关系映射创建表type Article struct { Id int `orm:"pk;auto"` ArticleName string `orm:"size(20)"` Atime time.Time `orm:"auto_now"` Acount int ...原创 2020-04-13 10:17:46 · 447 阅读 · 0 评论 -
go mod module declares its path as: gtihub.com/xxx-xx but was required as:xx-xx
go mod的坑使用go-mod 引入某个包出错例子为go: github.com/beego/bee imports github.com/beego/bee/cmd imports github.com/beego/bee/cmd/commands/dlv imports github.com/derekparker/delve/servic...原创 2020-01-20 17:23:50 · 24860 阅读 · 2 评论 -
Go Modules与GOPROXY 配置
随着Go 1.13发布,GOPROXY默认值proxy.golang.org在中国大陆不能被访问。七牛云顺势推出goproxy.cn,以利于中国开发者更好使用Go Modules,它是非盈利性的项目,首先感谢七牛云。Windows下使用教程:(1)升级到Go1.13(2)运行<go env -w GO111MODULE=on> ...原创 2019-11-23 13:51:03 · 3232 阅读 · 0 评论 -
ubuntu/deepin 下增加 goland 桌面快捷方式 goland.desktop
我们知道,在 Linux 下使用 goland 可以直接下载官网的压缩包,最后在 bin 目录下直接运行脚本即可。但是每次需要运行脚本就比较难过了,当然可以使用 alias 来解决这个问题,但是我们还有另外一种方案,就是把下载好的应用程序加到应用列表中。ubuntu 所有的应用是在 /usr/share/applications 里的,其中每个应用都有自己的 .desktop 文件,这就是应用...原创 2019-10-26 14:25:07 · 986 阅读 · 0 评论 -
go语言的冒泡 选择 快排 二分 算法实现
冒泡算法的实现:func bubbleSort(arr []int) []int { n := len(arr) for i := 0; i < n-1; i++ { for j:=0;j<n-1-i;j++{ if arr[j]>arr[j+1]{ arr[j],arr[j+1] = arr[j+1],arr[j] } } } return...原创 2019-10-26 13:09:03 · 348 阅读 · 0 评论 -
激活golang编辑器
下载https://pan.baidu.com/s/1V9wpmFtKfZYnCR-XTacSnQ 6scn2018.3.1将 jetbrainsCrack.jar 放 安装目录/lib/下修改 安装目录/bin/phpstorm64.exe.vmoptions 文件,在最后添加 -javaagent:安装目录\lib\JetbrainsCrack.jar打开编辑器,激活项 Activa...原创 2019-09-27 17:03:35 · 1687 阅读 · 0 评论 -
go sql.Open sql: unknown driver "mysql" (forgotten import?)
用beego框架连接mysql,你可能会遇到 sql: unknown driver “mysql” (forgotten import?) 这个报错。 注意需要在main.go(对应)文件中引入自己使用的mysql框架。加上这个包 注意这个包前边要有个下划线 为了只初始化,而不使用...原创 2019-09-23 15:39:34 · 2102 阅读 · 0 评论 -
go协程 && channel
goroutine(协程)&& channel(管道)使用并发或者并行的方式,CPU线程和进程说明进程就是程序在操作系统中的一次执行过程中,是系统进行资源分配和调度的基本单位。线程是进程的一个执行实例,是程序执行的最小单元,它是比进程更小的能独立运行的基本单位。一个进程可以创建和销毁多个线程,同一个进程中的多个线程可以并发执行一个程序至少有一个进程,一个进程至少有一个...原创 2019-07-23 20:56:00 · 1883 阅读 · 0 评论 -
go笔记
时间和日期函数时间和日期相关函数,需要导入time包获取当前时间 now := time.Now()如何获取到其他的日期信息 now.Format()fmt.Printf(’%d-%d-%d %d:%d:%d’, now.Year(),now.Month(),…)格式化日期时间的第二种方式fmt.Printf(now.Format(“2006-01-02 15:04:05”))...原创 2019-07-19 12:44:09 · 299 阅读 · 0 评论 -
go笔记
go的原创 2019-06-29 10:16:32 · 408 阅读 · 0 评论 -
runnerw.exe: CreateProcess failed with error 216 (no message available) 解决
golang IDE工具创建包文件时候动将包名导成了当前的目录名(模块)解决方案package main修改包名,改成main原创 2019-07-01 22:17:26 · 530 阅读 · 0 评论