自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(82)
  • 收藏
  • 关注

原创 一起用Go做一个小游戏(下)

打包资源使用file2byteslice包我们可以将图片和config.json文件打包进二进制程序中,之后编译生成一个二进制程序。然后拷贝这一个文件即可,不用再拷贝图片和其他配置文件了。golang有很多第三方包可以将打包资源,原理其实很简单——读取资源文件的内容,然后生成一个go文件,在这个文件中创建一个变量保存这个文件的二进制内容。我们将使用ebiten作者编写的file2byteslice...

2022-12-08 00:00:57 817

原创 一起用Go做一个小游戏(中)

限制飞船的活动范围上一篇文章还留了个尾巴,细心的同学应该发现了:飞船可以移动出屏幕!!!现在我们就来限制一下飞船的移动范围。我们规定飞船可以左右超过半个身位,如下图所示:很容易计算得出,左边位置的x坐标为:x=-W2/2右边位置的坐标为:x=W1-W2/2修改input.go的代码如下:func(i*Input)Update(ship*Ship,cfg*Config){...

2022-12-07 00:12:41 473

原创 一起用Go做一个小游戏(上)

引子最近偶然看到一个Go语言库,口号喊出“一个超级简单(dead simple)的2D游戏引擎”,好奇点开了它的官网。官网上已经有很多可以在线体验的小游戏了(利用WASM技术)。例如曾经风靡一时的2048:当然只要安装了Go,我们也键入下面的命令本地运行这个游戏:$gorun-tags=examplegithub.com/hajimehoshi/ebiten/v2/examples/204...

2022-12-06 23:43:38 1839

原创 Go中调用外部命令的几种姿势

引子在工作中,我时不时地会需要在Go中调用外部命令。前段时间我做了一个工具,在钉钉群中添加了一个机器人,@这个机器人可以让它执行一些写好的脚本程序完成指定的任务。机器人倒是不难,照着钉钉开发者文档添加好机器人,然后@这个机器人就会向一个你指定的服务器发送一个POST请求,请求中会附带文本消息。所以我要做的就是搭一个Web服务器,可以用go原生的net/http包,也可以用gin/fasthttp/...

2022-11-01 23:54:14 615

原创 一个好玩的 Go 语言 REPL 工具

简介周末闲逛 GitHub 的时候发现一个很好玩的 Go 语言的 REPL(read-eval-print-loop)工具。本文和大家分享一下这个工具:gore。首先放一张 GitHub 的动图感受一下:快速使用gore 是一个命令行工具,需要配合 Go Module 安装。Go 环境安装完成之后,执行下面的命令安装 gore:$ go install github.co...

2022-07-20 10:00:15 361

原创 Go 每日一库之 roaring

简介集合是软件中的基本抽象。实现集合的方法有很多,例如 hash set、tree等。要实现一个整数集合,位图(bitmap,也称为 bitset 位集合,bitvector 位向量)是个不错的方法。使用 n 个位(bit),我们可以表示整数范围[0, n)。如果整数 i 在集合中,第 i 位设置为 1。这样集合的交集(intersection)、并集(unions)和差...

2022-07-19 00:04:01 343

原创 Go 每日一库之 bitset

简介我们都知道计算机是基于二进制的,位运算是计算机的基础运算。位运算的优势很明显,CPU 指令原生支持、速度快。基于位运算的位集合在有限的场景中替换集合数据结构可以收到意想不到的效果。bitset库实现了位集合及相关操作,不妨拿来即用。安装本文代码使用 Go Modules。创建目录并初始化:$ mkdir -p bitset && cd bitset$...

2022-07-16 22:37:51 720

原创 Go 每日一库之 testify

简介testify可以说是最流行的(从 GitHub star 数来看)Go 语言测试库了。testify提供了很多方便的函数帮助我们做assert和错误信息输出。使用标准库testing...

2021-08-12 08:22:43 1291

原创 Go 每日一库之 testing

简介testing是 Go 语言标准库自带的测试库。在 Go 语言中编写测试很简单,只需要遵循 Go 测试的几个约定,与编写正常的 Go 代码没有什么区别。Go 语言中有 3 种类型的测试...

2021-08-04 21:23:30 683

原创 Go 每日一库之 goth

简介当前很多网站直接采用第三方认证登录,例如支付宝/微信/ Github 等。goth封装了接入第三方认证的方法,并且内置实现了很多第三方认证的实现:图中截取的只是goth支持的一部分,完...

2021-07-27 23:59:00 360

原创 Go 每日一库之 gorilla/sessions

简介上一篇文章《Go 每日一库之 securecookie》中,我们介绍了 cookie。同时提到 cookie 有两个缺点,一是数据不宜过大,二是安全问题。session 是服务器端的存...

2021-07-26 00:46:43 1341

原创 Go 每日一库之 gorilla/securecookie

简介cookie 是用于在 Web 客户端(一般是浏览器)和服务器之间传输少量数据的一种机制。由服务器生成,发送到客户端保存,客户端后续的每次请求都会将 cookie 带上。cookie ...

2021-07-24 23:59:00 605

原创 Go 每日一库之 gorilla/schema

简介gorilla/schema 是 gorilla 开发工具包中用于处理表单的库。它提供了一个简单的方式,可以很方便地将表单数据转为结构体对象,或者将结构体对象转为表单数据。快速使用本文...

2021-07-23 07:13:39 573

原创 Go 每日一库之 gorilla/handlers

简介上一篇文章中,我们介绍了 gorilla web 开发工具包中的路由管理库gorilla/mux,在文章最后我们介绍了如何使用中间件处理通用的逻辑。在日常 Go Web 开发中,开发者...

2021-07-22 07:35:27 428

原创 Go 每日一库之 gorilla/mux

简介gorilla/mux是 gorilla Web 开发工具包中的路由管理库。gorilla Web 开发包是 Go 语言中辅助开发 Web 服务器的工具包。它包括 Web 服务器开发的...

2021-07-20 08:00:58 2185

原创 Go 每日一库之 net/http(基础和中间件)

简介几乎所有的编程语言都以Hello World作为入门程序的示例,其中有一部分以编写一个 Web 服务器作为实战案例的开始。每种编程语言都有很多用于编写 Web 服务器的库,或以标准库,...

2021-07-14 07:09:28 1847

原创 Go 每日一库之 termtables

简介今天学个简单点的????,termtables处理表格形式数据的输出。适用于随时随地的输出一些状态或统计数据,便于观察和调试。是一个很小巧的工具库。我在学习dateparse库时偶尔见...

2021-07-03 23:00:00 180

原创 Go 每日一库之 colly

简介colly是用 Go 语言编写的功能强大的爬虫框架。它提供简洁的 API,拥有强劲的性能,可以自动处理 cookie&session,还有提供灵活的扩展机制。首先,我们介绍co...

2021-07-02 08:46:55 1425

原创 Go 每日一库之 resty

简介resty是 Go 语言的一个 HTTP client 库。resty功能强大,特性丰富。它支持几乎所有的 HTTP 方法(GET/POST/PUT/DELETE/OPTION/HEA...

2021-06-27 12:15:35 4088

原创 Go 每日一库之 dateparse

简介不管什么时候,处理时间总是让人头疼的一件事情。因为时间格式太多样化了,再加上时区,夏令时,闰秒这些细枝末节处理起来更是困难。所以在程序中,涉及时间的处理我们一般借助于标准库或第三方提供...

2021-06-25 07:32:43 187

原创 用 Go 实现一个 GitHub Trending API

背景上一篇文章Go 每日一库之 bubbletea我们介绍了炫酷的 TUI 程序框架 — bubbletea。最后实现了一个拉取 GitHub Trending 仓库,并显示在控制台的程序...

2021-06-17 23:58:00 283 2

原创 Go 每日一库之 bubbletea

简介bubbletea是一个简单、小巧、可以非常方便地用来编写 TUI(terminal User Interface,控制台界面程序)程序的框架。内置简单的事件处理机制,可以对外部事件做...

2021-06-16 07:16:31 758

原创 为 tunny 提交的一次 PR

背景上周我写了一篇文章Go 每日一库之 ants,深入剖析了ants这个 goroutine 池的实现。在反复阅读了多遍panjf2000关于ants的起源的文章——GMP 并发调度器深度...

2021-06-14 23:50:00 237

原创 Go 每日一库之 tunny

简介之前写过一篇文章介绍了ants这个 goroutine 池实现。当时在网上查看相关资料的时候,发现了另外一个实现tunny。趁着时间相近,正好研究一番。也好比较一下这两个库。那就让我们...

2021-06-10 23:30:00 707 5

原创 你不知道的 Go 之 pprof

简介Go 有非常多好用的工具,pprof 可以用来分析一个程序的性能。pprof 有以下 4 种类型:CPU profiling(CPU 性能分析):这是最常使用的一种类型。用于分析函数或...

2021-06-09 21:55:37 711

原创 Go 每日一库之 ants(源码赏析)

简介继上一篇Go 每日一库之 ants,这篇文章我们来一起看看ants的源码。Pool通过上篇文章,我们知道ants池有两种创建方式:p, _ := ants.NewPool(cap):这...

2021-06-08 07:31:23 1959 2

原创 Go 每日一库之 ants

简介处理大量并发是 Go 语言的一大优势。语言内置了方便的并发语法,可以非常方便的创建很多个轻量级的 goroutine 并发处理任务。相比于创建多个线程,goroutine 更轻量、资源...

2021-06-04 07:22:39 2656 2

原创 Go 每日一库之 reflect

简介反射是一种机制,在编译时不知道具体类型的情况下,可以透视结构的组成、更新值。使用反射,可以让我们编写出能统一处理所有类型的代码。甚至是编写这部分代码时还不存在的类型。一个具体的例子就是...

2021-06-01 23:30:00 275

原创 你不知道的 Go 之 const

简介常量可以说在每个代码文件中都存在,使用常量有很多好处:避免魔法字面量,即直接出现在代码中的数字,字符串等。阅读代码的时候无法一眼看出它的含义。另外可以避免使用字面量可能出现的不一致,当...

2021-05-31 23:32:17 855

原创 Go 每日一库之 fasttemplate

简介fasttemplate是一个比较简单、易用的小型模板库。fasttemplate的作者valyala另外还开源了不少优秀的库,如大名鼎鼎的fasthttp,前面介绍的bytebuff...

2021-05-25 08:43:18 478 2

原创 Go 每日一库之 gotalk

简介gotalk专注于进程间的通信,致力于简化通信协议和流程。同时它:提供简洁、清晰的 API;支持 TCP,WebSocket 等协议;采用非常简单而又高效的传输协议格式,便于抓包调试;...

2021-05-21 08:48:28 528

原创 你不知道的 Go 之 string

简介字符串(string)是 Go 语言提供的一种基础数据类型。在编程开发中几乎随时都会使用。本文介绍字符串相关的知识,帮助你更好地理解和使用它。底层结构字符串底层结构定义在源码runti...

2021-05-18 22:43:06 335

原创 你不知道的 Go 之 slice

简介切片(slice)是 Go 语言提供的一种数据结构,使用非常简单、便捷。但是由于实现层面的原因,切片也经常会产生让人疑惑的结果。掌握切片的底层结构和原理,可以避免很多常见的使用误区。底...

2021-05-10 00:00:00 154

原创 Go 每日一库之 bytebufferpool

简介在编程开发中,我们经常会需要频繁创建和销毁同类对象的情形。这样的操作很可能会对性能造成影响。这时,常用的优化手段就是使用对象池(object pool)。需要创建对象时,我们先从对象池...

2021-05-09 13:49:37 351

原创 Go 每日一库之 rxgo

简介ReactiveX,简称为 Rx,是一个异步编程的 API。与 callback(回调)、promise(JS 提供这种方式)和 deferred(Python 的 twisted 网络编程库就是使用这种方式)这些异步编程方式有所不同,Rx 是基于事件流的。这里的事件可以是系统中产生或变化的任何东西,在代码中我们一般用对象表示。在 Rx 中,事件流被称为 Observable(可观察的)。事件流需要被 Observer(观察者)处理才有意义。想象一下,我们日常作为一个 Observer,一个重要的工作

2020-10-15 02:49:21 1745

原创 Go 每日一库之 goquery

简介goquery是用 Go 语言编写的一个类似于 jQuery 的库。它基于 HTML 解析库net/html和 CSS 库cascadia,提供与 jQuery 相近的接口。Go 著...

2020-10-11 15:41:10 557

原创 Go 每日一库之 air

简介air是 Go 语言的热加载工具,它可以监听文件或目录的变化,自动编译,重启程序。大大提高开发期的工作效率。快速使用本文代码使用 Go Modules,在 Mac 上运行。先创建目录...

2020-10-02 11:15:58 528 1

原创 Go 每日一库之 quicktemplate

简介最近在整理我们项目代码的时候,发现有很多活动的代码在结构和提供的功能上都非常相似。为了方便今后的开发,我花了一点时间编写了一个生成代码框架的工具,最大程度地降低重复劳动。代码本身并不...

2020-09-26 22:01:30 358

原创 Go 每日一库之 commonregex

简介有时,我们会遇到一些需要使用字符串的匹配和查找的任务。并且我们知道这种情况下,使用正则表达式是最简洁和优雅的。为了完成某个任务特地去系统地学习正则表达式费时费力,而且一段时间不用又很...

2020-09-14 21:43:55 179

原创 Go 每日一库之 gabs

简介JSON 是一种非常流行的数据交换格式。每种编程语言都有很多操作 JSON 的库,标准库、第三方库都有。Go 语言中标准库内置了 JSON 操作库encoding/json。我们之前...

2020-09-07 23:37:55 908

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除