
《Go从放弃到入门》
文章平均质量分 69
Data-Mining
一枚典型的音视频技术爱好者
展开
-
Golang杀死子进程的三种方式
熟悉Golang语言的小伙伴一定都知道,杀死子进程有三种方式,今天就来简单介绍一下。原创 2024-01-20 21:20:01 · 1250 阅读 · 0 评论 -
Golang编译生成可执行程序的三种方法
Golang是一种强类型、编译型、跨平台的编程语言,相同代码在不同平台上都可以编译出对应的可执行程序。今天就来简单介绍一下如何使用命令编译出可执行程序,本文以windows平台为例进行介绍。原创 2023-10-06 18:51:04 · 4441 阅读 · 0 评论 -
Golang 单元测试规范
目录前言正文1. 单元测试文件命名规则2. 单元测试包命令规则3. 单元测试方法命名规则4. 单元测试方法参数结尾前言说到代码的健壮性,单元测试是少不了的,基本上所有语言都有自己的单元测试方案。工作这么多年,单元测试也没少写,像 Java、C++、Golang 都有过恶补单元测试的经历,为的就是应付各种 KPI,但是也不能说单元测试没有用,只是大多数时候不是为了单元测试而单元测试,而是为了应付检查而单元测试。上一篇文章已经大致介绍了如何在 VSCode 中配置 Golan原创 2022-02-16 21:04:56 · 467 阅读 · 0 评论 -
VSCode配置Golang单元测试实例
前言说到代码的健壮性,单元测试是少不了的,基本上所有语言都有自己的单元测试方案。工作这么多年,单元测试也没少写,像 Java、C++、Golang 都有过恶补单元测试的经历,为的就是应付各种 KPI,但是也不能说单元测试没有用,只是原始动力不是为了单元测试而单元测试,而是为了应付检查而单元测试。今天呢,就来说一说 Golang 语言的单元测试(这次真的是我自己主动要加的^_^)。正文Golang 单元测试的工具包有很多,在 VSCode 插件超市里可以找到很多。今天我们主要介绍 Golang 内原创 2022-02-16 21:03:40 · 2239 阅读 · 0 评论 -
Golang 如何限制木马图片上传服务器
目录项目背景 问题 解决项目背景自己开发了一个云对象存储服务,用于存储某个项目中所有的文件资源。问题在进行安全测试时,自己遇到了一个问题:无法限制木马病毒模拟的图片文件进行上传。看似是一个图片后缀的文件,其实是一个木马脚本。比如图片文件:muma.jpeg,我们使用 UltraEdit 编辑器打开这个文件,文件内容如下图所示:然而,一个正常的 jpeg 图片文件的内容如下图所示:解决那么如何解决这个问题呢?毫无疑问,我们要做的就是区分正真的图片和木马图片。经过我原创 2022-02-16 20:57:33 · 867 阅读 · 0 评论 -
八股文写春联会是什么样子?
什么是八股文八股文(英译:Stereotyped Writing;Eight-Legged Essay),也称制义、制艺、时文、八比文,是明清科举考试的一种文体。八股文章就“四书五经”取题,内容必须用古人的语气,绝对不允许自由发挥,而句子的长短、字的繁简、声调的高低等也都要相对成文,字数也有限制。 八股文就是指文章的八个部分,文体有固定格式:由破题、承题、起讲、入题、起股、中股、后股、束股八部分组成,题目一律出自四书五经中的原文。后四个部分每部分有两股排比对偶的文字,合起来共八股。旧时科举,八股文要用孔原创 2022-02-16 20:52:11 · 806 阅读 · 1 评论 -
Golang 中比较常见的 panic 异常原因之一
目录前言正文结尾前言在 Golang 中,当异常发生时不管是主动触发 panic 还是由于编码错误导致的 panic,我们都可以使用 recover 进行捕获。当时前提必须定义 defer 语句,且 defer 必须放在 panic 之前定义,另外 recover 只有在 defer 调用的函数中才有效。正文今天本文介绍一个编码不规范导致的 panic 异常,下面是错误日志,从日志中我们可以看到程序发生了 panic 异常,并且这个 panic 已经 Gin 框架自带的 Reco原创 2021-11-27 15:52:14 · 5962 阅读 · 0 评论 -
Golang Gin 框架之中间件(六)
目录 前言 正文 结尾 前言Gin 是使用纯 Golang 语言实现的 HTTP Web 框架,Gin 的接口设计简洁,性能极高,现在被广泛使用。上一篇文章介绍了 Gin 的基本使用方式,今天我们详细看一看 Gin 在中间件方面的内容。正文默认情况下没有中间件的空白 Gin一般情况下,我们会这样初始化 Gin,代码如下:r := gin.Default()其实,这样的话,gin 就默认使用了日志中间件和 Recovery 中间件。其中,日志中间件大家都原创 2021-11-27 15:46:38 · 383 阅读 · 0 评论 -
Golang Gin 框架之分组路由(五)
目录前言正文分组路由编码简单,结构清晰扩展方便,便于管理结尾前言Gin 是使用纯 Golang 语言实现的 HTTP Web 框架,Gin 的接口设计简洁,性能极高,现在被广泛使用。上一篇文章介绍了 Gin 的基本使用方式,今天我们详细看一看 Gin 在分组路由方面的内容。正文分组路由说到分组路由,你一定会问为什么要搞分组路由?分组路由有什么优势?下面就详细介绍一下。编码简单,结构清晰使用分组路由可以为我们带来很多好处,比如编码会非常简单,结构也会非常清晰原创 2021-11-27 15:42:54 · 621 阅读 · 2 评论 -
Golang Gin 框架上传介绍(四)
目录前言正文结尾前言利用 Gin 框架,我们可以非常简单的实现上传服务接口的开发,今天我们就来看看 Gin 在这方面都支持哪些能力,能够为我们减少多少任务量。正文当设计开发一个存储服务的时候,首先就要想到如何实现上传存储功能,Gin 框架能够非常简单的支持单文件上传和多文件同时上传,接下来通过实例分别介绍这两方面的内容。单文件上传首先,我们来看 Gin 框架如何实现单文件上传,一般上传文件格式会被定义成 multipart forms 类型,并且保存在 file 字段中。原创 2021-11-21 22:47:08 · 697 阅读 · 0 评论 -
Golang Gin 框架参数解析介绍(三)
目录 前言 正文 Query 参数解析 Multipart/Urlencoded Form 参数解析 query + post form 参数解析 Map 参数解析 结尾 前言Gin 是使用纯 Golang 语言实现的 HTTP Web 框架,Gin 的接口设计简洁,性能极高,现在被广泛使用。今天,我们就来详细看看 Gin 是如何进行参数解析的。正文Query 参数解析在所有的请求中,Query 参数属于最常见的一种,下面通过一段代码来看一下,代原创 2021-11-21 22:42:21 · 1298 阅读 · 0 评论 -
Golang Gin 框架入门介绍(二)
目录前言 正文 一、定义 GET, POST, PUT, PATCH, DELETE 和 OPTIONS 的接口 二、解析 path 中的参数 结尾前言Gin 是使用纯 Golang 语言实现的 HTTP Web 框架,Gin 的接口设计简洁,性能极高,现在被广泛使用。上一篇文章介绍了 Gin 的基本使用方式,今天我们详细看一看 Gin 在接口定义和参数解析方面的内容。正文一、定义 GET, POST, PUT, PATCH, DELETE 和 OPTIONS 的接口p原创 2021-11-21 22:39:58 · 1528 阅读 · 0 评论 -
Golang Gin 框架入门介绍(一)
目录前言 正文 结尾前言Gin 是使用纯 Golang 语言实现的 HTTP Web 框架,Gin 的接口设计简洁,性能极高,现在被广泛使用。我司的 Web 后端服务基本是都是基于 Gin 开发的。正文安装首次使用 Gin 框架时,需要先进行安装,命令如下:go get -u github.com/gin-gonic/gin可能会出现如下报错信息:# cd .; git clone -- https://github.com/gin-contrib/sse /Us原创 2021-11-21 22:37:51 · 1420 阅读 · 0 评论 -
sonar 使用常见问题总结
目录前言 正文 问题一、ERROR: Not authorized. Please check the properties sonar.login and sonar.password. 问题二、SCM provider autodetection failed. Both svn and git claim to support this project. Please use sonar.scm.provider to define SCM of your project. 问题三、E原创 2021-11-13 12:29:06 · 9806 阅读 · 0 评论 -
解决:interface conversion: interface {} is float64, not int
目录前言 正文 结尾前言今天遇到一个小坑,但是自己陷进去好久,说起来有些不好意思,但是感觉还是应该拿出来晒一晒,希望大家别再被类似的问题耽误了。解析下面的 json 结构:"video": { "width": 1280, "height": 720}首先,我们把问题简化,假设我们拿到了 map[string]interface{} 类型的 video 实例,如何基于 video 实例读取 width 和 height 的值,注意是整形数值,不是原创 2021-11-13 18:00:00 · 9413 阅读 · 0 评论 -
手把手教你开发一款1024程序员节日历提醒服务
前言关于这次程序员节1024征文的内容,自己确实想了好久,作为一名后端研发工程师,不太想去搞一个酷炫的界面,感觉那是前端同学的蛋糕,想利用自己的 Golang 技术栈搞一波儿事情。同时又想有所创新,搞点别人没有搞过的,终于昨天确定了文章的内容——开发一款1024程序员节的日历提醒服务,今天开始正式干活儿。正文本文介绍的1024程序员节日历提醒服务,主要有两个功能,一个提供主动查询能力,另一个是注册节日的回调通知,下面将分别进行介绍。一、主动查询1024程序员节日历提醒服务提供了节日查询接原创 2021-10-24 21:30:14 · 976 阅读 · 7 评论 -
MongoDB中间件工具mgm入门介绍(二)
目录前言正文步骤一、导入mgm步骤二、创建数据库模型步骤三、增删改查操作结尾往期推荐博文:MongoDB中间件工具mgm入门介绍(一)前言众所周知,MongoDB 是一个通用、基于文档的分布式数据库,非常适合云原生服务的应用场景。上一篇文章已经简单介绍了 MongoDB 数据库的中间件工具 mgm,今天就来聊一聊 mgm 的接口使用方法。正文步骤一、导入mgm导入 mgm 工具包,设置默认配置项,代码参考如下:import ( "github.com/k原创 2021-08-21 22:11:37 · 741 阅读 · 0 评论 -
MongoDB中间件工具mgm入门介绍(一)
目录前言正文背景mgm介绍mgm基础特性软件要求安装方式代码实例结尾前言众所周知,MongoDB 是一个通用、基于文档的分布式数据库,在云原生生态下具有非常强大的适应性,帮助现代应用程序开发人员迎接云时代的到来。就数据库而言,效率是一个永不过时的话题,这一点也是 MongoDB 非常出色的地方。正文背景MongoDB 数据库确实好用,但是也要依托一定的生态环境,其中就包括我们在开发过程中经常会用到的工具集。在连接 MongoDB 时,我们不可能自己单独去开发基础的功能原创 2021-08-20 23:25:39 · 2186 阅读 · 0 评论 -
MongoDB中间件工具mgm入门介绍(三)
目录前言正文数据库记录中的默认项数据库记录中的钩子函数数据库配置项结尾往期推荐博文:MongoDB中间件工具mgm入门介绍(一)MongoDB中间件工具mgm入门介绍(二)前言众所周知,MongoDB 是一个通用、基于文档的分布式数据库,非常适合云原生服务的应用场景。上一篇文章已经简单介绍了 MongoDB 数据库的中间件工具 mgm 的一般使用方法,今天就来聊一聊 mgm 的高级使用方法。正文数据库记录中的默认项在声明数据库模型时,如果使用 DefaultModel原创 2021-08-20 23:22:11 · 676 阅读 · 0 评论 -
分片上传Minio存储服务的问题集锦[推荐收藏]
前言通过前面文章的介绍,我相信小伙伴们已经对 MinIO 存储服务有了一定的认识。知道 MinIO 是一款非常热门的开源对象存储服务器,能够完美兼容亚马逊的 S3 协议, 对 K8s 也能够进行非常友好的支持,专为 AI 等云原生工作负载而设计。今天我们就来聊一聊在集成 MinIO 过程中遇到的一些上传相关的问题。常见问题当我们开发上传功时,特别是通过分片的形式上传文件到 MinIO 存储服务会遇到各种问题。本文记录这些问题是为了便于日后回顾查看,也是为了帮助遇到相同问题的小伙伴。那么,具体都有哪些常原创 2021-08-18 22:52:44 · 2512 阅读 · 2 评论 -
关于 go run 命令执行过程中的“坑坑点点”
问题解决结尾问题在使用 Golang 编写程序的时候,经常会遇到单文件编译运行的场景,当我们使用一般的编译语句去编译的时候往往会报错,到底是怎么回事儿呢?接下我们结合具体的例子分析一下。解决下面是一段 Golang 最简单的的“Hello,world”代码:package mainimport "fmt"func main() { fmt.Println("Hello, World!")}将上述代码保存成到 helloworld.go 文件中,当我们想要编译运行这个文件的时原创 2021-08-03 23:20:21 · 2020 阅读 · 0 评论 -
Golang中数组和切片的区别与联系
目录前言正文什么是数组?什么是切片?二者的区别二者的联系前言Golang中不仅含有数组,还有切片的概念,二者有什么联系和区别呢?今天就带大家了解一二。正文什么是数组?数组是用来存储一组相同数据类型的数据结构。从这一点上来讲,Golang和其他语言区别不大。区别主要发生在语法上,比如Golang声明一个数组的语法格式如下:var 数组名称 [长度]数据类型举例:声明一个长度为10,数据类型为int的数组aar,代码如下:var aar [10]原创 2021-07-20 22:45:43 · 1076 阅读 · 0 评论 -
Golang指针和C++指针的简单剖析
目录前言正文什么是指针?指针怎么用?前言不止C++才有指针,Golang也有指针呦!二者有哪些区别呢?今天就来看一看。正文什么是指针?指针是用来指向任何一个变量的内存地址的类型,它所指向的变量的内存地址在 32 和 64 位机器上分别占用 4 或 8 个字节,占用字节的大小与所指向的值的大小无关。下面我们通过一个例子来了解一下指针是如何表示地址的。实例代码:package mainimport ( "fmt")func mai.原创 2021-05-25 22:57:25 · 1420 阅读 · 12 评论 -
Golang中字符串的常用方法
目录前言正文常用字符串处理函数前言大家都知道,字符串是Golang一种基础数据类型,那么Golang都有哪些API让我们来处理字符串呢?今天就开始我们的探索。正文在Golang中说到字符串,就必须要提到strings包,这可是Golang语言处理字符串的内置包,也是一款基础工具包。既然说到基础,那么他都有哪些常用函数呢?接下来,我们一个一个介绍。常用字符串处理函数1.Contains作用:是否包含指定的子串内容,包含返回true,不包含返回false。..原创 2021-04-10 21:55:42 · 893 阅读 · 0 评论 -
Golang中的反射机制
目录前言正文何为反射?关键用途结尾前言Golang中也存在反射机制,具体怎么使用呢?先睹为快。正文何为反射?反射就是Golang通过来获取对象的类型信息或者结构信息,再进行访问或者修改的能力。Golang语言是利用reflect 关键字进行反射调用的。一般情况下,Golang声明的变量都包括两部分基本内容,一部分是变量类型,比如int、string、bool;另一部分是变量的值,比如0,“123”,true。在Golang语言中可以通过 refle..原创 2021-04-09 23:15:59 · 645 阅读 · 0 评论 -
聊聊Golang中的那些默认值
package mainimport "fmt"func main() { // 基础类型:整型、浮点型、布尔类型、字符串、复数 var a int var b float32 var c bool var d string var e complex64 fmt.Println("整型默认值:", a) fmt.Println("浮点型默认值:", b) fmt.Println("布尔类型默认值:", c) fmt.Println("字符串默认值:", d) f...原创 2021-04-04 23:19:03 · 1427 阅读 · 0 评论 -
Golang中的时间表示问题
目录前言正文前言Golang作为服务开发语言,很多时候都有需要校验时间问题。那么,Golang一般怎么表示时间呢?都有哪些格式问题?具体的使用方式都有哪些?今天就来看一看。正文说到时间,我们都比较关心现在的时间。那我们先来看一下,Golang是如何获取当前时间的,以及都哪些表示方式。直接上代码:package mainimport ( "fmt" "time")func main() { // 获取当前时间 t := .原创 2021-04-04 20:24:33 · 784 阅读 · 0 评论 -
Mac:was built for newer OSX version (10.15) than being linked (10.14)
ld: warning: object file (/var/folders/r5/7b3lfd015v53ddp05qpjwcdh0000gn/T/go-link-507589565/000007.o) was built for newer OSX version (10.15) than being linked (10.14)ld: warning: object file (/var/folders/r5/7b3lfd015v53ddp05qpjwcdh0000gn/T/go-link-...原创 2021-02-17 10:21:40 · 3894 阅读 · 2 评论 -
Go判断结构体类型是否为空(nil)
目录前言正文前言使用任何编程语言都会遇到判空的问题,那么Golang如何判空呢?说真的,这种方式我还是很意外的。正文说到Golang的判空机制,确实刷新了我的认知,多少有些丑 ^_^,特别是对于自定义的结构体类型,并不是简单的与 nil 做比较。直接上代码:package main import ( "fmt")type Person struct { Name string Age int}func main() { var one Per.原创 2021-01-16 11:21:43 · 8811 阅读 · 4 评论 -
Go编译器的编译顺序是DFS还是BFS?
Golang编译器main.go:19:2: HTTPHeader redeclared during import "test/v2/util" previous declaration during import "test/v2"原创 2021-01-08 00:09:13 · 590 阅读 · 0 评论 -
Go解析post请求中的json字符串
type recordConfig struct {StreamPath string `json:"streamPath"`Append bool `json:"append"`Protocol string `json:"protocol"`Url string `json:"url"`}body, err := ioutil.ReadAll(r.Body)defer r.Body.Close()if err != nil {return}var ..原创 2020-12-06 09:32:12 · 2362 阅读 · 0 评论 -
有没有颠覆你的认知:Main方法一定是入口方法吗?
前言作为一名程序员,一定对main方法非常熟悉,一般我们会认为main方法就是执行程序的入口方法,程序首先执行main方法,真的是这样吗?正文main方法是程序执行的入口方法吗?这里先卖个关子。首先来看一段Go的代码:// Declaration of the main package package main // Importing package import "fmt"// One init() function func init() { fmt.Prin.原创 2020-12-02 22:30:02 · 721 阅读 · 2 评论 -
Go打印cmd.Process.Pid报错
2020/11/27 16:21:15 http: panic serving [::1]:57413: runtime error: invalid memory address or nil pointer dereferencegoroutine 72 [running]:net/http.(*conn).serve.func1(0xc0017228c0) /usr/local/Cellar/go/1.15.4/libexec/src/net/http/server.go:1801...原创 2020-12-02 22:21:15 · 850 阅读 · 0 评论 -
Go根据流地址判断流媒体协议类型
目录问题解决问题如何根据一个流媒体地址URL判断对应的流媒体协议,比如RTMP、RTSP协议等。解决这里提供一个方法,可以直接拿来用。func getProtocol(url string) (string, error) { if url != "" { index := strings.Index(url, ":") if index > 0 { return strings.ToUpper(url[0:index]), nil } else.原创 2020-11-29 21:28:54 · 713 阅读 · 0 评论 -
Go如何关闭exec可执行程序
一、syscallvar cmd *exec.Cmdsyscall.Kill(-cmd.Process.Pid, syscall.SIGKILL)二、Processvar cmd *exec.Cmdcmd.Process.Kill()原创 2020-11-27 20:29:19 · 1523 阅读 · 0 评论