golang利用pprof与go-torch如何做性能分析

前言软件开发过程中,项目上线并不是终点。上线后,还要对程序的取样分析运行情况,并重构现有的功能,让程序执行更高效更稳写。 golang的工具包内自带pprof功能,使找出程序中占内存...

浅谈go语言renderer包代码分析

renderer是Go语言的一个简单的、轻量的、快速响应的呈现包,它可以支持JSON、JSONP、XML、HYAML、HTML、File等类型的响应。在开发web应用或RESTFul API的时候,这个包是非常方...

Go Web框架gin的入门教程

目前,基于Go的web框架也可谓是百花齐放了,之所以选择 gin ,没其他原因,就只是因为其在github上的star数是最多的,而且仅仅从README看,其文档也是相当丰富的。安装gin直接使用 go g...

用golang实现一个定时器任务队列实例

很有幸得到公司信任,采用新的语言进行一些底层服务的开发,在实现功能的同时,也获得了一些感悟,因此在这记录一下,方便自己查看也可以共享给大家。
golang中定时器golang中提供了...

go语言学习之包和变量详解

前言本文主要介绍了关于go语言之包和变量的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧。一、包的概念
包是go语言中不可缺少部分,在每个go源码的...

Golang 中整数转字符串的方法

整形转字符串经常会用到,本文讨论一下 Golang 提供的这几种方法。基于 go1.10.1fmt.Sprintf
fmt 包应该是最常见的了,从刚开始学习 Golang 就接触到了,写 ‘hello, world' 就得...

golang如何实现抓取IP地址的蜘蛛程序详解

背景
要做IP地址归属地查询,量比较大,所以想先从网上找到大部分的分配数据,写个蜘蛛程序来抓取入库,以后在程序的运行中不断进行维护、更新、完善。一些关键点
goroutine的使...

Go语言包管理工具dep的安装与使用

什么是dep?dep和go,在一定程度上相当于maven之于Java,composer之于PHP,dep是go语言官方的一个包管理工具。相比较go get而言,dep可以直接给引入的第三方包一个专门的目录,并且可以...

Golang中切片的用法与本质详解

前言Go 数组的长度不可改变,在特定场景中这样的集合就不太适用,Go中提供了一种灵活,功能强悍的内置类型切片("动态数组"),与数组相比切片的长度是不固定的,可以追加元素,在追加时...

golang基础之Interface接口的使用

接口是一个或多个方法签名名的集合,定义方式如下
type Interface_Name interface { method_a() string method_b() int .... } 只要某个类型拥有该接口的所有方法签名,就算实...

Go语言开发中redis的使用详解

前段时间因为忙一些其它的事情,分享的有些少,最近学习一下redis在Go语言开发中的应用。一、理论知识
Redis是一个开源的、使用C语言编写的、支持网络交互的、可基于内存也可持...

golang不到30行代码实现依赖注入的方法

本文介绍了golang不到30行代码实现依赖注入的方法,分享给大家,具体如下:项目地址
go-di-demo本项目依赖
使用标准库实现,无额外依赖依赖注入的优势
用java的人对于spring框架一...

Golang 统计字符串字数的方法示例

比如新浪微博发微博的输入框有一个已输入字数的统计,它的规则推测是:汉字和中文标点算 1 个字数,英文和其他符号算 0.5 个字数。不足 1 个字算 1 个。大家可以去微博体验一下计...

详解Go语言RESTful JSON API创建

RESTful API在Web项目开发中广泛使用,本文针对Go语言如何一步步实现RESTful JSON API进行讲解, 另外也会涉及到RESTful设计方面的话题。也许我们之前有使用过各种各样的API,...

go语言中排序sort的使用方法示例

前言sort包中实现了3种基本的排序算法:插入排序.快排和堆排序.和其他语言中一样,这三种方式都是不公开的,他们只在sort包内部使用.所以用户在使用sort包进行排序时无需考虑使用那种...

Golang中的路由使用详解

之前有篇文章比较浅显的分析了一下golang的服务器如何实现,还有Handler, DefaultServeMux,HandlerFunc的用处。我们现在已经明白了DefaultServeMux就是存放pattern和handler...

golang grpc 负载均衡的方法

微服务架构里面,每个服务都会有很多节点,如果流量分配不均匀,会造成资源的浪费,甚至将一些机器压垮,这个时候就需要负载均衡,最简单的一种策略就是轮询,顺序依次选择不同的节点访问...

Golang中定时器的陷阱详解

前言在业务中,我们经常需要基于定时任务来触发来实现各种功能。比如TTL会话管理、锁、定时任务(闹钟)或更复杂的状态切换等等。百纳网主要给大家介绍了关于Golang定时器陷阱...

golang设置http response响应头与填坑记录

1、 设置WriteHeader的顺序问题之前遇到个问题,在一段代码中这样设置WriteHeader,最后在header中取Name时怎么也取不到。w.WriteHeader(201)w.Header().Set("Name", "my name...

golang利用unsafe操作未导出变量-Pointer使用详解

前言unsafe.Pointer其实就是类似C的void *,在golang中是用于各种指针相互转换的桥梁。uintptr是golang的内置类型,是能存储指针的整型,uintptr的底层类型是int,它和unsafe.Point...

go语言实现聊天服务器的示例代码

看了两天 go 语言,是时候练练手了。
go 的 routine(例程) 和 chan(通道) 简直是神器,实现多线程(在 go 里准确的来说是 多例程)简直不要太轻松。于是动手码了一个傻瓜版的黑框聊天器...

golang中命令行库cobra的使用方法示例

简介
Cobra既是一个用来创建强大的现代CLI命令行的golang库,也是一个生成程序应用和命令行文件的程序。下面是Cobra使用的一个演示:
Cobra提供的功能
简易的子命令行模式,如...

golang搭建静态web服务器的实现方法

我胡汉三又回来啦。好久没发文了,为保持平台上的活跃度,我今天就分享下个刚学到的知识,使用golang搭建静态web服务器,亲测可用,附代码!使用过golang语言的程序猿都应该知道,在使用g...

解析Go 标准库 http.FileServer 实现静态文件服务

http.FileServer 方法属于标准库 net/http,返回一个使用 FileSystem 接口 root 提供文件访问服务的 HTTP 处理器。可以方便的实现静态文件服务器。http.ListenAndServe(":808...

Golang如何交叉编译各个平台的二进制文件详解

Golang交叉编译平台的二进制文件熟悉golang的人都知道,golang交叉编译很简单的,只要设置几个环境变量就可以了# mac上编译linux和windows二进制CGO_ENABLED=0 GOOS=linux GOAR...

Go 并发实现协程同步的多种解决方法

go 简洁的并发多核处理器越来越普及。有没有一种简单的办法,能够让我们写的软件释放多核的威力?是有的。随着Golang, Erlang, Scala等为并发设计的程序语言的兴起,新的并发模式...

基于golang如何实现error工具包详解

前言
对于一门编程语言的开发者,类库包管理是一项考核编程语言成熟度的重要指标之一,Golang 也不例外。笔者在日常使用Golang语言开发系统程序时发现,在 Golang 的世界里,存在着...

golang实现分页算法实例代码

前言本文主要给大家介绍了关于golang分页算法的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧示例代码如下://分页方法,根据传递过来的页数,每页数,总数...

详解Go 语言中的比较操作符

这篇文章专注于 6 个操作符,==,!=,<,<=,> 和 >=。我们将深入探讨它们的语法和用法的细微差别。对很多人来说,这听起来不像是吸引人的事,或者他们可能已经从其他编程语言获得了糟糕...

详解golang避免循环import问题(“import cycle not allowed”)

前言golang不允许循环import package ,如果检测到 import cycle ,会在编译时报错,通常import cycle是因为设计错误或包的规划问题。
以下面的例子为例,package a依赖package b...

golang利用不到20行代码实现路由调度详解

前言本文主要介绍了关于golang实现路由调度的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧项目地址
github (本地下载)本项目依赖
使用标准库实现,无...

关于golang中平行赋值浅析

对于golang, 交换两个数很简单,如下这么写就可以了:i, j = j, i等号左边和右边含有多个表达式,这就是平行赋值。 赋值分为两个步骤: 计算等号左边的操作数的索引表达式和取址表...

Go语言利用time.After实现超时控制的方法详解

前言在开始之前,对time.After使用有疑问的朋友们可以看看这篇文章:https://www.jb51.net/article/146063.htm我们在Golang网络编程中,经常要遇到设置超时的需求,本文就来给大家...

Golang中time.After的使用理解与释放问题

Golang中的time.After的使用理解关于在goroutine中使用time.After的理解, 新手在学习过程中的“此时此刻”的理解,错误还请指正。
先线上代码:package mainimport ( "fmt" "tim...

golang中为什么Response.Body需要被关闭详解

前言本文主要介绍了关于golang中Response.Body需要被关闭的相关内容,文中通过示例代码介绍的非常详细,对各位学习或者使用golang具有一定参考学习价值,下面话不多说了,来一起看...

特殊字符的json序列化总结大全

前言JSon 数据中的String 传递数据时,需要处理好特殊字符.本文主要给大家总结介绍了关于golang、rust、java和Python对特殊字符的json序列化处理操作,下面话不多说了,来一起看...

Go语言的http/2服务器功能及客户端使用

前言大家都知道,Go的标准库HTTP服务器默认支持HTTP/2。那么,在这篇文章中,我们将首先展示Go的http/2服务器功能,并解释如何将它们作为客户端使用。在这篇文章中,我们将首先展示Go...

使用golang获取linux上文件的访问/创建/修改时间

在linux上想获取文件的元信息,我们需要使用系统调用lstat或者stat。在golang的os包里已经把stat封装成了Stat函数,使用它比使用syscall要方便不少。这是os.Stat的原型:func Sta...

golang 40行代码实现通用协程池

代码仓库goroutine-poolgolang的协程管理golang协程机制很方便的解决了并发编程的问题,但是协程并不是没有开销的,所以也需要适当限制一下数量。不使用协程池的代码(示例代码...

golang中使用mongo的方法介绍

前言笔者使用的mongo驱动是mgo, 这个使用的人比较多,文档也比较齐全官网地址:http://labix.org/mgo
文档地址:https://godoc.org/labix.org/v2/mgo
源码地址:https://github.com...

Golang报“import cycle not allowed”错误的2种解决方法

前言相信不少 Gopher 在写 Golang 程序都遇到过 import cycle not allowed 问题,本人最近研读 go-ethereum 源码时,发现定义 interface 也能解决此问题, 还能解决连分包都不能...

golang中import cycle not allowed解决的一种思路

发现问题项目中碰到了一些问题,使用了指针函数的思路来解决相应问题
在实际项目中,因为两个项目互相引了对方的一些方法,导致了循环引用的错误,原本可以使用http的请求来解决,经...

Golang学习之平滑重启

在上一篇博客介绍TOML配置的时候,讲到了通过信号通知重载配置。我们在这一篇中介绍下如何的平滑重启server。与重载配置相同的是我们也需要通过信号来通知server重启,但关键在...

详解Golang实现http重定向https的方式

以前写代码时,都是直接将程序绑定到唯一端口提供http/https服务,在外层通过反向代理(nginx/caddy)来实现http和https的切换。随着上线后的服务越来越多,有一些服务无法直接通过...

浅谈Go Channel 高级实践

channel 是 golang 里相当有趣的一个功能,在我使用 golang 编码的经验里,大部分事件都会是在享受 channel 和 goroutine 配合的乐趣。所以本文主要介绍 channel 的一些有趣的...

golang sql连接池的实现方法详解

前言golang的”database/sql”是操作数据库时常用的包,这个包定义了一些sql操作的接口,具体的实现还需要不同数据库的实现,mysql比较优秀的一个驱动是:github.com/go-sql-driver...

详解Go hash算法的支持

散列函数(散列算法,又称哈希函数)是一种从任何一种数据中创建小的数字“指纹”的方法。散列函数把消息或数据压缩成摘要,使得数据量变小,将数据的格式固定下来。该函数将数据打乱...

golang编程入门之http请求天气实例

golang学习第一波,使用http get请求高德天气接口。一、准备内容:
1、注册高德开发者账号,申请key
2、golang开发工具LiteIDE(可自行百度)。
或者https://www.jb51.net/softjc/11...

浅析Go语言版本的forgery

使用过Python语言的朋友们可能使用过 forgery_py ,它是一个伪造数据的工具。能伪造一些常用的数据。在我们开发过程和效果展示是十分有用。但是没有Go语言版本的,所以就动手折...

golang新手们容易犯的3个错误总结

前言从golang小白到成为golang工程师快两个月了,我要分享一下新手在开发中常犯的错误,都是我亲自踩过的坑。这些错误中有些会导致无法通过编译,这种错容易发现,而有些错误在编译...

返回顶部
顶部