基于Go和Gin的环境配置方法

1.官方下载Go版本,安装相应平台的程序。2.配置Go的环境变量:GOROOT:GO安装路径,例如GOROOT = D:\GoGOPATH: 项目源码所在目录(例如GOPATH = E:\go),该目录下面主要包括三个子目录,分...

golang http连接复用方法

server端golang httpserver 默认开启keepalive连接复用选项handler函数需要完整读body数据,构造返回消息,否则当数据不能一次发送完成时,连接复用就会失效。示例如下package ma...

golang并发下载多个文件的方法

背景说明假设有一个分布式文件系统,现需要从该系统中并发下载一部分文件到本地机器。已知该文件系统的部分节点ip, 以及需要下载的文件fileID列表,并能通过这些信息来拼接下载...

go实现整型的二进制转化的方法

go中已经实现了int->bin的转化函数,我这里只是化过程逻辑的实现,至于原理我就假设大家都知道了本案例只考虑  int->bin 的转化包含了正整数,负整数,0 的转化package mainimpo...

Go 实现百万WebSocket连接的方法示例

大家好!我是 Sergey Kamardin,是 Mail.Ru 的一名工程师。本文主要介绍如何使用 Go 开发高负载的 WebSocket 服务。如果你熟悉 WebSockets,但对 Go 了解不多,仍希望你对这篇文章...

golang 中获取字符串个数的方法

在 golang 中不能直接用 len 函数来统计字符串长度,查看了下源码发现字符串是以 UTF-8 为格式存储的,说明 len 函数是取得包含 byte 的个数// string is the set of all strin...

一个简单的Golang实现的HTTP Proxy方法

最近因为换了Mac,以前的Linux基本上不再使用了,但是我的SS代理还得用。SS代理大家都了解,一个很NB的socks代理工具,但是就是因为他是Socks的,想用HTTP代理的时候很不方便。以前在...

golang抓取网页并分析页面包含的链接方法

1. 下载非标准的包,"golang.org/x/net/html"2. 先安装git,使用git命令下载git clone https://github.com/golang/net3. 将net包,放到GOROOT路径下比如:我的是:GOROOT = E:\go\所...

golang日志框架之logrus的使用

golang日志库golang标准库的日志框架非常简单,仅仅提供了print,panic和fatal三个函数对于更精细的日志级别、日志文件分割以及日志分发等方面并没有提供支持。所以催生了很多...

C语言的10大基础算法

算法是一个程序和软件的灵魂,作为一名优秀的程序员,只有对一些基础的算法有着全面的掌握,才会在设计程序和编写代码的过程中显得得心应手。本文是近百个C语言算法系列的第二篇,...

2021-05-08

golang对etcd存取和数值监测的实现

测试代码如下package mainimport ( "fmt" "log" "time" "go.etcd.io/etcd/clientv3" "golang.org/x/net/context")var ( dialTimeout = 5 * time.Second requestTim...

Golang TCP粘包拆包问题的解决方法

什么是粘包问题
最近在使用Golang编写Socket层,发现有时候接收端会一次读到多个数据包的问题。于是通过查阅资料,发现这个就是传说中的TCP粘包问题。下面通过编写代码来重现这...

Golang 使用http Client下载文件的实现方法

之前使用beego的http库的时候,有的情况需要下载文件。beego是能实现,但就是有点问题:不支持回调,没法显示下载速度,这在日常开发中是不可忍受的。看了下beego的实现主要是使用...

golang并发ping主机的方法

利用了golang对高并发的良好支持,同目录下将ip每行一个写入pinglist.txt文件即可其实这个功能用linux一条命令就能搞定: cat pinglist.txt | xargs -P 10 -I {} ping -fc 100...

Go返回int64类型字段超出javascript Number范围的解决方法

最近在项目中,一个go服务给前端提供了一个接口,返回json格式数据,其中Int64字段会超出javascript Number可表示的最大的Int值会丢精度,可以通过返回string类型值来屏蔽这个问题...

详解golang 模板(template)的常用基本语法

模板
在写动态页面的网站的时候,我们常常将不变的部分提出成为模板,可变部分通过后端程序的渲染来生成动态网页,golang提供了html/template包来支持模板渲染。这篇文章不讨论go...

go语言实现http服务端与客户端的例子

go语言的net/http包的使用非常的简单优雅(1)服务端package main import ( "flag" "fmt" "net/http") func main() { host := flag.String("host", "127.0.0.1", "listen host"...

Golang开发动态库的实现

我们平时使用的动态库都是由C/C++开发最后生成的.so文件。可以先看看一个JNI的开发过程。一. 开发JNI有两种方式,现在一种比较快的方式是AndroidStudio你在创建项目选择Modul...

深入理解Golang之http server的实现

前言对于Golang来说,实现一个简单的 http server 非常容易,只需要短短几行代码。同时有了协程的加持,Go实现的 http server 能够取得非常优秀的性能。这篇文章将会对go标准库 n...

Go实现双向链表的示例代码

本文介绍什么是链表,常见的链表有哪些,然后介绍链表这种数据结构会在哪些地方可以用到,以及 Redis 队列是底层的实现,通过一个小实例来演示 Redis 队列有哪些功能,最后通过 Go 实...

golang之数据校验的实现代码示例

目前大都是使用 validator安装
go get gopkg.in/go-playground/validator.v9原理当然只能通过反射来实现了,之前写过一篇反射的文章 golang之反射和断言 ,里面有写到怎么通过...

Go中http超时问题的排查及解决方法

背景最新有同事反馈,服务间有调用超时的现象,在业务高峰期发生的概率和次数比较高。从日志中调用关系来看,有2个调用链经常发生超时问题。问题1: A服务使用 http1.1 发送请求到...

Golang实现拓扑排序(DFS算法版)

问题描述:有一串数字1到5,按照下面的关于顺序的要求,重新排列并打印出来。要求如下:2在5前出现,3在2前出现,4在1前出现,1在3前出现。该问题是一个非常典型的拓扑排序的问题,一般解决...

详解使用Go添加Nginx代理的方法示例

简介Nginx 是一个高性能的 HTTP 服务器和反向代理服务器.最常用的两个功能是反向代理和负载均衡.反向代理反向代理是正向代理的反面.普通的代理服务器是需要用户主动去设置...

如何在Go中使用切片容量和长度

来做一个快速测验-以下代码输出什么?vals := make([]int, 5)for i := 0; i < 5; i++ { vals = append(vals, i)}fmt.Println(vals)Run it on the Go Playground → https://...

利用systemd部署golang项目的实现方法

简介
- CentOS 7 继承了 RHEL 7 的新的特性,例如强大的 systemd, 而 systemd 的使用也使得以往系统服务的 /etc/init.d 的启动脚本的方式就此改变, 也大幅提高了系统服务的运...

go切片的copy和view的使用方法

语义理解切片
go 语言中的切片是 go 语言的一个特色,从语义上来说,切片就是把一个整体的东西切分成小的部分,那么对于语言中的切片也是同理。
举个例子看如下代码:package maini...

golang切片内存应用技巧详解

在 Go 语言中切片是使用非常频繁的一种聚合类型,它代表变长的序列,底层引用一个数组对象。一个切片由三个部分构成:指针、长度和容量。指针指向该切片自己第一个元素对应的底层...

golang协程池设计详解

Why Poolgo自从出生就身带“高并发”的标签,其并发编程就是由groutine实现的,因其消耗资源低,性能高效,开发成本低的特性而被广泛应用到各种场景,例如服务端开发中使用的HTTP服务...

使用go在mangodb中进行CRUD操作

我在学习go语言之前,在对数据库进行CRUD的操作基本是用java和sql来对mysql数据库进行操作,但是到了实习中公司业务都是用的是mangodb,通过一段学习时间后,我有了一些收获。简述...

解决Go中使用seed得到相同随机数的问题

1. 重复的随机数
废话不多说,首先我们来看使用seed的一个很神奇的现象。func main() { for i := 0; i < 5; i++ { rand.Seed(time.Now().Unix()) fmt.Println(rand.Intn...

golang中使用proto3协议导致的空值字段不显示的问题处理方案

最近在使用grpc协议的时候,由于采用的是Proto3协议,在查找记录信息的时候,由于某些字段会有默认空值,导致在通过协议调用后,返回的json结构中并没有这些字段,虽然作为前端使用没有...

Golang实现异步上传文件支持进度条查询的方法

业务背景
业务需求要求开发一个异步上传文件的接口,并支持上传进度的查询。需求分析
ZIP压缩包中,包含一个csv文件和一个图片文件夹,要求:解析csv数据存入mongo,将图片文件夹中的...

使用 Go 管理版本的方法示例

简介
如果你曾经运行过 docker version,
就会发现它提供了很多信息:PS C:\Users\tzh> docker versionClient: Docker Engine - Community Version: 19.03.4 API versio...

使用Go进行单元测试的实现

简介
日常开发中, 测试是不能缺少的.
Go 标准库中有一个叫做 testing 的测试框架, 可以用于单元测试和性能测试.
它是和命令 go test 集成使用的.
测试文件是以后缀 _test.g...

浅析go中的map数据结构字典

1. map的使用  golang中的map是一种数据类型,将键与值绑定到一起,底层是用哈希表实现的,可以快速的通过键找到对应的值。  类型表示:map[keyType][valueType] key一定要是可...

Go中recover与panic区别详解

概念
panic 与 recover 是 Go 的两个内置函数,这两个内置函数用于处理 Go 运行时的错误。panic用于主动抛出错误, recover 用来捕获panic 抛出的错误。func main() { //捕获...

golang 网络框架之gin的使用方法

golang 原生 http 库已经可以很方便地实现一个 http server 了,但对于复杂的 web 服务来说,路由解析,请求参数解析,对象返回等等,原生 api 就显得有些不太够用了,而 gin 是一个功...

分享6个Go处理字符串的技巧小结

如果你从 Ruby 或者 Python 转型到 Go,将会有很多语言差异需要学习,其中很多问题都是围绕处理 string 类型。
下面是一些字符串的技巧,这些技巧解决了我在使用 Golang 的最初几...

浅谈用Go构建不可变的数据结构的方法

共享状态是比较容易理解和使用的,但是可能产生隐晦以至于很难追踪的 bugs。尤其是在我们的数据结构只有部分是通过引用传递的。切片就是这么一个很好的例子。后续我会作出更...

golang实现对docker容器心跳监控功能

自己写的go程序放到线上本来编译成二进制扔上去就行啦,但是怀着一颗docker的心,最终还是将它放到docker容器中运行起来了,运行起来也ok,一个最小容器64M,统一管理起来也方便,但是...

Golang实现请求限流的几种办法(小结)

在开发高并发系统时,有三把利器用来保护系统:缓存、降级和限流。那么何为限流呢?顾名思义,限流就是限制流量,就像你宽带包了1个G的流量,用完了就没了。简单的并发控制
利用 channe...

浅谈Go中数字转换字符串的正确姿势

在许多语言中,你可以轻松地将任何数据类型转换为字符串,只需将其与字符串连接,或者使用类型转换表达式即可。但是,如果你在Go中尝试执行似乎很明显的操作(例如将int转换为字符串),...

golang之反射和断言的具体使用

1. 反射
反射这个概念绝大多数语言都有,比如Java,PHP之类,golang自然也不例外,反射其实程序能够自描述和自控制的一类机制。
比如,通过PHP的反射,你可以知道一个类有什么成员,有什...

Go 高效截取字符串的一些思考

最近我在Go Forum 中发现了String size of 20 character 的问题,“hollowaykeanho” 给出了相关的答案,而我从中发现了截取字符串的方案并非最理想的方法,因此做了一系列实验并...

Go语言实现钉钉发送通知

具体代码如下所示:package mainimport ( "bufio" "io" "fmt" "io/ioutil" "os/exec" "net/http" "os" "strings")func GetKey() (timestamp string ,sign string, er...

golang环形队列实现代码示例

Summary 什么是环形队列 实现环形队列图示过程 golang版本代码实现过程 参考全部代码什么是环形队列在一个指定大小的数组里循环写入数据,借用二个指针分别实现入队标记...

golang执行命令获取执行结果状态(推荐)

这几天在用golang写一个工具,要执行外部命令工具,而且还要将外部命令工具输出的日志也要输出出来。网上找了一下,资料很多,关键是执行的结果成功或失败状态没找到好的方法获取到...

Go 如何基于IP限制HTTP访问频率的方法实现

如果你运行 HTTP 服务,并且希望限制 HTTP 的访问频率,那么你可以借助一些比较稳定的工具,例如: github.com/didip/tollbooth。不过如果你构建的应用比较简单,也可以自己来实现。...

如何利用Golang解析读取Mysql备份文件

前言
前期误操作,导致数据库表删除,虽然数据量不多,但是通过binlog恢复比较麻烦,通过备份文件来恢复,备份文件达36个G打开都是问题;使用备份文件恢复
大文件编辑器,glogg-latest-x8...

返回顶部
顶部