golang常用的http请求操作

之前用python写各种网络请求的时候写的非常顺手,但是当打算用golang写的时候才发现好不习惯,习惯golang的用法之后也就差别不大了,下面主要整理了常用的通过golang发起的GET请求以及POST请求的代码例子: //基本的GET请求 package main import ( "fmt" "io/ioutil" "net/http" ) func main() { resp, err := http.Get("http://httpbin.org/get") if err != ni...阅读全文

简书 2021-01-24 21:33:07 小安静子

golang基于heap库实现简易优先队列

优先队列在C++/Java等语言中已经存在于标准库中,而go语言中却没有。今天用了下,留个纪念吧 package main import ( "container/heap" "fmt" ) type IntHeap []int func (h IntHeap) Len() int { return len(h) } func (h IntHeap) Less(i, j int) bool { return h[i] < h[j] } // 大顶堆,返回值决定是否交换元素 func (h Int...阅读全文

简书 2021-01-24 21:33:06 克罗地亚催眠曲

golang基础数据类型字符串

一个字符串是一个不可改变的字节序列,字符串可以包含任意数据,文本字符串通常被解释为采用UTF8编码的Unicode码点(rune)序列 表现形式 golang中的字符串支持两种表现形式 func TestString(t *testing.T) { // 形式一: 双引号,会识别转义字符 str1 := "这是字符串的表现形式一。\n你可以看到换行了" // 形式二: 反引号,以字符串的原生形式输出,包括换行和特殊字符,可以防止攻击,输出源代码等效果 str2 := `源代码 func Test...阅读全文

简书 2021-01-24 21:33:06 大白能_3db0

golang基础数据类型-布尔和字符

布尔型 一个布尔类型的值只有两种:true和false 字符 golang中没有专门的字符类型,一般使用byte或rune来保存单个字符 其中byte是int8的别名,rune是int32的别名 // byte is an alias for uint8 and is equivalent to uint8 in all ways. It is // used, by convention, to distinguish byte values from 8-bit unsigned // in...阅读全文

简书 2021-01-24 21:33:06 大白能_3db0

全局唯一ID设计

image-20210124162352373.png 一、前言 这周网上的各种瓜真的是吃到肚子里都是水啊。按照惯例周末聊点轻松的,这次我们讲几种全局唯一ID。 平常一些小项目,我们用数据库自增ID就够了,但如果做了分布式、多主数据库、分表分库等场景,那数据库自增可能就无法满足业务需求了。所以这里介绍几种唯一ID的设计,客官根据实际项目按需选择了。 二、唯一ID的几种方式 1. 数据库自增 当服务使用的数据库只有单库单表时,可以直接使用数据库的自增,如MySQL的auto_increment、C...阅读全文

简书 2021-01-24 21:33:06 道听真说

Go error实践

1. Go原生errorGo原生的error是一个接口类型,只要实现Error()方法就是一个error。type error interface { Error() string}复制代码一般我们使用errors.New()来生成一个error,注意这个方法返回的每个error都是不同的,即使表示错误的字符串是完全相同的,因为这个方法返回的是error的对象指针// New returns an error that formats as the given text.// Each call...阅读全文

51CTO博客 2021-01-24 18:35:51 mb600bea0083c0f

拓展学习-golang生产环境的部署与博客网站系统发布上线

前面我们已经完成了博客网站项目的功能开发,并且在本地测试通过使用了。那么现在我们还需要将它发布的到服务器生产环境上,才能绑定域名给其他用户看到。下面介绍如何将我们开发好的博客网站部署的服务器上。服务器的购置和域名的购买需要部署到线上服务器,我们首先需要购置一台云服务器。云服务器可以从阿里云、腾讯云、百度云、华为云、小鸟云等云服务器提供商上购买。他们有服务上的优势、价格上的优势等各不相同,根据个人需求来购买。默认情况下,一个博客的流量并不会太大,因此我们只需要购买最低配置即可,如果有活动价,也可以...阅读全文

51CTO博客 2021-01-24 11:07:42 mb600be85f1b06a

[系列] Go - 基于 GORM 获取当前请求所执行的 SQL 信息

前言为了便于精准排查问题,需要将当前的请求信息与当前执行的 SQL 信息设置对应关系记录下来,记录的 SQL 信息包括:执行 SQL 的当前时间;执行 SQL 的文件地址和行号;执行 SQL 的花费时长;执行 SQL 的影响行数;执行的 SQL 语句;数据库组件使用的是 GORM。思路1、在执行 SQL 前,设置开始执行时间(计算执行时长会用到);2、在执行 SQL 后,第一,获取当前请求的上下文,为什么获取上下文,因为需要从上下文中获取本次请求信息,第二,获取 SQL 执行前的时间,用来计算执...阅读全文

51CTO博客 2021-01-24 10:47:21 mb600be85f1b06a

源码剖析panic与recover,看不懂你打我好了!

前言哈喽,大家好,我是asong,今天与大家来聊一聊go语言中的"throw、try.....catch{}"。如果你之前是一名java程序员,我相信你一定吐槽过go语言错误处理方式,但是这篇文章不是来讨论好坏的,我们本文的重点是带着大家看一看panic与recover是如何实现的。上一文我们讲解了defer是如何实现的,但是没有讲解与defer紧密相连的recover,想搞懂panic与recover的实现也没那么简单,就放到这一篇来讲解了。废话不多说,直接开整。什么是panic、recove...阅读全文

Segmentfault 2021-01-27 12:32:33 .container .car 等

Go - 基于 GORM 获取当前请求所执行的 SQL 信息

前言为了便于精准排查问题,需要将当前的请求信息与当前执行的 SQL 信息设置对应关系记录下来,记录的 SQL 信息包括:执行 SQL 的当前时间;执行 SQL 的文件地址和行号;执行 SQL 的花费时长;执行 SQL 的影响行数;执行的 SQL 语句;数据库组件使用的是 GORM。思路1、在执行 SQL 前,设置开始执行时间(计算执行时长会用到);2、在执行 SQL 后,第一,获取当前请求的上下文,为什么获取上下文,因为需要从上下文中获取本次请求信息,第二,获取 SQL 执行前的时间,用来计算执...阅读全文

51CTO博客 2021-01-24 10:30:39 mb600be85f1b06a

Go - 常用签名算法的基准测试

签名验证是为了保证接口安全和识别调用方身份,同时还需要满足以下几点:可变性:每次的签名必须是不一样的。时效性:每次请求的时效性,过期作废。唯一性:每次的签名是唯一的。完整性:能够对传入数据进行验证,防止篡改。签名规则大同小异,根据自己的业务情况进行制定即可。签名过程中我们会用到的几种算法,接下来分享一下每个算法的基准测试,可能会存在误差,供大家参考。MD5 单向散列加密func BenchmarkEncrypt(b *testing.B) { b.ResetTimer() for i := 0;...阅读全文

51CTO博客 2021-01-24 10:30:08 mb600be85f1b06a

2021-01-23:LFU手撸,说下时间复杂度和空间复杂度。

福哥答案2021-01-23: 这道题复杂度太高,短时间内很难写出来。面试的时候不建议手撕代码。 一个存节点的map+一个存桶的map+一个存桶的双向链表。桶本身也是一个双向链表。 存节点的map:key是键,value是节点。 存桶的map:key是次数,value是桶。 代码用golang编写,代码如下: package main import ( "container/list" "fmt" ) func main() { cache := Constructor(2) cache.Put...阅读全文

简书 2021-01-24 09:32:39 福大大架构师每日一题

Podinfo,迷你的 Go 微服务模板

项目介绍 Podinfo 是一个用 Go 制作的小型 web 应用程序,它展示了在 Kubernetes 中运行微服务的最佳实践。 它已实现的技术指标(截选自官方 README.md ): 里面每一项技术指标的实现方式,其实都可以拿出来单独讲好久,相关理论也有好多。 这里我只是讲针对这个项目,我们该如何使用 Docker 去试玩它。 构建容器调试环境 IDE VSCode + golang/vscode-go Go 国内加速镜像 https://learnku.com/go/wikis/3812...阅读全文

简书 2021-01-24 09:32:39 Java互联网架构师小马

[Golang]如何优雅的管理几十个UDF(API)

组内一个服务中有个叫算子的模块,所谓算子可以理解为UDF(User Defined Function),这个模块的核心思想是:在做业务需求时,把业务拆解为几块通用的业务代码(UDF),不同的代码块承担不同的业务功能。这些代码块提供出不同的配置项(或者叫“函数签名”),用户传入对应的参数调用这块代码。 这样做的好处是:后续接业务需求时只需要通过编排算子配置就可以复用通用算子。业务不复杂时,单个算子即可支持业务;业务复杂时,通过多个算子组合为pipeline支持业务。 编个🌰,现在有个业务需求:用户...阅读全文

简书 2021-01-24 09:32:39 一根薯条

腾讯人工作日常—在沟通和扯皮中度过的一周

## 小介绍 腾讯后台开发一枚,四年多工作经验。 连载每周工作日常,是一种爱好, 有时,也促使自己反思。 希望能和大家多多交流, 收获开心,收获成长。 ## 20210116 今天和产品去爬山,一个实习生的困惑: 大公司不想干的活,中型公司想干的活,该怎么选择呢? 这个问题的答案还得问自己,我给的思路是: 核心目标 主要矛盾 最短路径; 得想清楚自己一年后、三年后的**核心目标**是什么? 要成为什么样的人,想达到什么状...阅读全文

Go语言中文网 2021-01-23 23:53:26 leidachui

Golang 定时器详解

定时器是一种通过设置一项任务,在未来的某个时刻执行该任务的机制。定时器的种类通常只有两种,一种是只执行一次的延时模式,一种是每隔一段时间执行一次的间隔模式。在现代编程语言中,定时器几乎是标配。除了设置定时器外,还需要有提供定时器的方法。比如在 JavaScript 中,提供了 setTimeout、setInterval、clearTimeout 和 clearInterval 四个 API,相比较而言是比较简单的。Go 语言中定时器的 API 就比较完善,所有的 API 都在 time 包中。...阅读全文

51CTO博客 2021-01-23 19:00:48 mb600be85f1b06a