
golang
文章平均质量分 72
愿学习golang的人,能创造更多的技术!
billgates_wanbin
这个作者很懒,什么都没留下…
展开
-
拉卡拉支付 Go SDK
拉卡拉支付的接口SDK,目前只会增加聚合平台的支付接口采用泛型的方式进行接口封装。原创 2024-07-11 16:18:37 · 743 阅读 · 0 评论 -
Gin 请求流程源码分析
只要实现接口就可以注册到标准库的中,然后就会启动一个web应用。原创 2022-06-08 09:00:00 · 801 阅读 · 1 评论 -
gin Engine源码分析
Gin 是一个用 Go (Golang) 编写的 HTTP Web 框架。 它具有类似 Martini 的 API,但性能比 Martini 快 40 倍。如果你需要极好的性能,使用 Gin 吧。原创 2022-06-07 09:15:28 · 588 阅读 · 0 评论 -
golang time包的单调时钟处理
我们今天主要是来看一看golang time 包的时间应用方式。在说到计算机处理时钟上,主要的分为2种方式:墙上时钟(wall time)单调时钟(monotonic clocks)两者的一般规则是「wall time」用于告知时间,而「monotonic clock」用于测量时间;除外还有其他的时钟处理方式。如果你还不了解上面两种时钟的概念,那么我推荐你可以先访问:你真的了解计算机的时间吗?这篇文章详细说明了这两种时钟的来历。再看下面的内容之前,我会认为你已经知道了什么是 墙上时钟 和 单原创 2022-05-25 14:03:56 · 895 阅读 · 0 评论 -
对于升级go1.18的goland问题
截止目前,go1.18 已经发布了22 天,当前有很多的小伙伴已经在使用最新的版本,尝试着各种解锁新姿势。但是更新之后,在goland中打开发现全是报错,是不是怀疑自己打开的方式不对?报错:'main'redeclared as the imported package name报错:Cannot use 'fmt.Sprintf("xxx:%v" , err)' (type string) as the type any对于这类完全不知道的新问题,尝试着删除 .idea 文件;重启 gola原创 2022-04-06 11:23:09 · 9072 阅读 · 9 评论 -
限流算法-常见的4种限流算法
首先我们先来看看什么是限流?限流是指在系统面临高并发、大流量请求的情况下,限制新的流量对系统的访问,从而保证系统服务的安全性。另一种解释:在计算机网络中,限流就是控制网络接口发送或接收请求的速率,它可防止DoS攻击和限制Web爬虫。那么我们为什么会限流?日常的业务上有类似秒杀活动、双十一大促或者突发新闻等场景,用户的流量突增,后端服务的处理能力是有限的,如果不能处理好突发流量,后端服务很容易就被打垮,导致整个系统崩溃!亦或是爬虫等不正常流量,我们对外暴露的服务都要以最大恶意去防备我们的调用者。我们原创 2022-03-17 17:50:53 · 20305 阅读 · 0 评论 -
goland 高效开发golang的配置
1. 配置Goland项目为了达到项目的代码规范化建议设置 go fmt 和 goimports 的 File Watcher ,有顺序 go fmt goimports goimports 需要自己手动下载官方:go install golang.org/x/tools/cmd/goimports@latest修改后的地址:https://github.com/workwb/tools/releases/download/v0.1.11/goimport原创 2021-12-15 16:56:20 · 1473 阅读 · 0 评论 -
golang文件传输工具,支持大文件
在局域网中需要传输文件,并且放在指定的位置,简单的在网上寻找了一下,发现这类软件都不少,但是没有一个是符合现在需要的,简单,快速,大文件。所以你懂的,作为一个程序猿,是时候自己写一个工具了。特性:支持超大文件传输 支持局域网最大上传速度(瓶颈在下载或者上传的上限) 使用 tcp 可靠传输 也可以在外网传输,至少一个可以连接另一个(可互通)的情况下 内存占用很少 支持指定文件存放的文件夹目录源代码我已经提交到github 上,有兴趣的朋友可以看看,并提出意见,或者学习也是可以的 【ft原创 2021-05-13 11:38:18 · 2146 阅读 · 2 评论 -
golang利用C语言调用脚本实现
问题:在使用golang自带的调用命令时,不知道你们是否有遇到执行脚本已经完成,但是程序还在一直等待。如果没有你不妨试一下在脚本中添加一个脚本,比如在 a.sh 中在执行b.sh 。这个时候你就会发现程序退不出来;当然不只是脚本中执行脚本的问题,还有在脚本中执行某些命令也会出现这样的问题。为了方便使用,比如某些项目中的脚本太多,或者在不同的文件夹项目有相同的脚本,我们不妨把脚本都提出来,使用golang 写一个程序来调用这些脚本。我们先说一下C语言调用脚本或者命令的方式:system() 就原创 2021-01-13 14:15:41 · 424 阅读 · 0 评论 -
实现 etcd + confd + prometheus 自动发现
根据服务注册metrics到etcd,confd 拉取etcd的配置,自动生成配置文件到promethoues,然后热加载来提供自动的指标监控。具体代码和实现请查看github 仓库etcd_confd_promethoues原创 2020-11-18 12:39:03 · 1580 阅读 · 2 评论 -
golang使用redis分布式锁 [2020年更新]
我还记得上一篇文章golang使用redis分布式锁还是18年写的,但是对于现在来说已经不适用,所以今天我更新了go使用redis分布式锁,对想用redis分布式锁的人一个简单的讲解,并快速用于实践。首先,最需要的还是redis的go客户端github.com/gomodule/redigo 已经不是之前的那个路径了。 然后下载github.com/go-redsync/redsync这个库,他就是实现分布式锁的核心。 当然你也可以自己实现,但是我今天只说这个库的用法。// A Mute...原创 2020-05-15 13:48:49 · 4449 阅读 · 2 评论 -
golang GF框架
GF(Go Frame)是一款模块化、松耦合、轻量级、高性能的Go语言Web开发框架。支持热重启、热更新、多域名、多端口、多服务、HTTP/HTTPS、动态路由等特性 ,并提供了Web服务开发的系列核心组件,如:Router、Cookie、Session、服务注册、配置管理、模板引擎、数据校验、分页管理、数据库ORM等等等等, 并且提供了数十个实用开发模块集,如:缓存、日志、时间、命令行、二进制、...转载 2018-10-24 15:22:52 · 5968 阅读 · 0 评论 -
golang使用redis分布式锁
昨天由于项目需求,需要使用redis分布式锁,在网上找了半天,也没有找到一个简单的教程,经过自己研究,了解简单使用方法,都可以直接拿过来自己用,下面我就发出来给大家分享一下。首先下载 github.com/garyburd/redigo,因为这个分布式锁是根据上面所实现; 下载 gopkg.in/redsync.v1这个就是实现分布式锁的源代码(如果测试需要下载 github.c...原创 2018-09-19 11:52:56 · 12409 阅读 · 16 评论 -
GoLand 下载
GoLand 2018.2.1 下载2018.09.06(亲测,可以使用)https://download.youkuaiyun.com/download/billgates_wanbin/10649921原创 2018-09-17 15:31:29 · 1007 阅读 · 0 评论 -
go语言工具IntelliJ IDEA 说明
IntelliJ IDEA 2017.3.* 中可以使用go插件来开发,后面的版本都不能兼容go插件,需要重新下载goland这个软件;现在最新版本是goland 2018.2.2 ,其中的添加了多种工具和功能。性能比我之前用goland2017 好太多了 。下面有我的一个下载链接,你们也可以自己在网上自己下载。https://download.youkuaiyun.com/download/...原创 2018-09-06 16:17:14 · 1340 阅读 · 1 评论 -
golang DES加密解密
我写了一个例子,方便看懂或者直接拿来用。直接上代码:package mainimport ( "crypto/des" "fmt" "crypto/cipher" "encoding/hex" "bytes")func main() { //key的长度必须都是8位 var key = "12345678" var info = &原创 2018-04-13 14:40:49 · 6301 阅读 · 11 评论 -
Go语言中database/sql包操作MySQL(使用预先准备的语句)
准备好的陈述和连接在数据库级别,准备好的语句绑定到单个数据库连接。典型的流程是客户端向服务器发送带占位符的SQL语句以供准备,服务器用语句ID作出响应,然后客户端通过发送其ID和参数来执行语句。然而,在Go中,连接并不直接暴露给database/sql包的用户 。你不准备在连接上发表声明。你准备在一个DB或一个Tx。并database/sql具有一些便利行为,例如自动重试。由于这些原因,准备好的语...翻译 2018-03-20 10:30:08 · 795 阅读 · 0 评论 -
Go语言中database/sql包操作MySQL(修改数据和使用事务)
修改数据的语句用Exec(),最好用事先准备好的声明,来实现的INSERT, UPDATE,DELETE,或其他不返回行的语句。以下示例显示如何插入行并检查有关操作的元数据:stmt, err := db.Prepare("INSERT INTO users(name) VALUES(?)")if err != nil { log.Fatal(err)}res, err := stmt.E...翻译 2018-03-20 10:23:09 · 1827 阅读 · 0 评论 -
Go语言中database/sql包操作MySQL(检索结果集)
有几种习惯操作可以从数据存储中检索结果。执行一个返回行的查询。准备重复使用的声明,多次执行并销毁它。以一次性方式执行陈述,而不准备重复使用。执行一个返回单行的查询。这个特例有一个捷径。Go的database/sql函数名称很重要。如果一个函数名包含Query,它被设计为询问数据库的问题,并且将返回一组行,即使它是空的。不返回行的语句不应该使用Query函数; 应该使用Exec()。从数据库获取数据...翻译 2018-03-20 10:15:14 · 4638 阅读 · 4 评论 -
Go语言中database/sql包操作MySQL(访问数据库)
现在你已经加载了驱动程序包,你已经准备好创建一个数据库对象了sql.DB。创建一个sql.DB,你使用sql.Open()。将返回一个*sql.DB:func main() { db, err := sql.Open("mysql", "user:password@tcp(127.0.0.1:3306)/test") if err != nil { log.Fatal(err) }...翻译 2018-03-20 09:51:39 · 4574 阅读 · 0 评论 -
Go语言中database/sql包操作MySQL(导入数据库驱动程序)
要使用database/sql你需要导入包本身,以及你想要使用的特定数据库的驱动程序。您通常不应该直接使用驱动程序包,但有些驱动程序会鼓励您这样做。(在我们看来,这通常是一个坏主意。)相反database/sql,如果可能的话,你的代码只应该引用定义的类型。这有助于避免让代码依赖于驱动程序,以便可以用最少的代码更改来更改底层驱动程序(从而更改您访问的数据库)。它还会强迫你使用Go语言,而不是特定的...翻译 2018-03-20 09:42:39 · 1188 阅读 · 0 评论 -
Go语言中database/sql包操作MySQL(1)
要在Go中访问数据库,可以使用sql.DB。使用此类型来创建语句和事务,执行查询和获取结果。你应该知道的第一件事是sql.DB不是数据库连接。它也没有映射到任何特定数据库软件的“数据库”或“模式”的概念。它是数据库接口和存在的抽象,可能与本地文件一样多样,可通过网络连接访问,或者内存中和进程中。在sql.DB为您执行一些重要的任务幕后:它通过驱动程序打开和关闭与实际底层数据库的连接。它根据需要管理...翻译 2018-03-20 09:33:38 · 473 阅读 · 0 评论 -
golang实现最简单的麻将胡牌算法(不包括牌型,有需求后续可以更新牌型计算)
话不多说,代码先给出来 文件名 mahjong.go很多的实现方法,写的注释我觉得已经很详细了,多看下注释。package mainimport ( "sort" "fmt")//牌类型type CardType intconst ( CardType_Unknown CardType = iota CardType_W CardType_T CardType_S...原创 2019-11-28 16:26:58 · 1375 阅读 · 0 评论 -
golang 读写锁的那点事
快捷目录RWMutex简介应用场景问题解决方案RWMutex简介读写锁实际是一种特殊的自旋锁,它把对共享资源的访问者划分成读者和写者,读者只对共享资源进行读访问,写者则需要对共享资源进行写操作。这种锁相对于自旋锁而言,能提高并发性,因为在多处理器系统中,它允许同时有多个读者来访问共享资源,最大可能的读者数为实际的逻辑CPU数。写者是排他性的,一个读写锁同时只能有一个写者或多个读者(与CPU数相...原创 2019-11-26 20:24:33 · 1354 阅读 · 3 评论