Go语言的RPC包的路径为net/rpc,也就是放在了net包目录下面。因此我们可以猜测该RPC包是建立在net包基础之上的。我们基于http实现了一个打印例子。下面我们尝试基于rpc实现一个类似的例子。

RPC(Remote Procedure Call)远程过程调用协议,一种通过网络从远程计算机上请求服务,而不需要了解底层网络技术的协议。RPC它假定某些协议的存在,例如TPC/UDP等,为通信程序之间携带信息数据。在OSI网络七层模型中,RPC跨越了传输层和应用层,RPC使得开发,包括网络分布式多程序在内的应用程序更加容易。

在 Go 语言中编写数据库操作代码真的非常痛苦!database/sql标准库提供的都是比较底层的接口。我们需要编写大量重复的代码。大量的模板代码不仅写起来烦,而且还容易出错。有时候字段类型修改了一下,可能就需要改动很多地方;添加了一个新字段,之前使用select *查询语句的地方都要修改。如果有些地方有遗漏,可能就会造成运行时panic。即使使用 ORM 库,这些问题也不能完全解决!这时候,sqlc来了!sqlc可以根据我们编写的 SQL 语句生成类型安全的、地道的 Go 接口代码,我们要做的只是调用这些方法。

在项目中,因需求的变更常常影响到数据库表结构的设计及数据的更新,导致大量的 sql 脚本难以维护。正因为如此,数据库迁移工具的设计之前,就旨在帮助开发者更合理、有效地管理数据库。

Go1.18在今天(3-16)已经发布,Go 1.18 是一个包含大量新功能的版本,同时不仅改善了性能,也对语言本身做了有史以来最大的改变。毫不夸张地说,Go 1.18 的部分设计十多年前,在第一次发布 Go 时就开始了构思(例如泛型,最早的时候在2009年Russ Cox 在博客里面讨论过泛型如何设计https://research.swtch.com/generic)。

如果你想探索使用泛型优化和简化代码的最佳方法。查看最新版本的发行说明(https://go.dev/doc/go1.18) 有更多关于在 Go 1.18 中使用泛型的详细信息。

在平常我们做权限控制或者认证的时候,大多数是基于 token 的身份验证。在众多类型中的token中,JSON Web Token(JWT)是最流行的之一。但是人们发现了JWT中一些安全问题,主要是因为它设计了不良的标准。

本文主要介绍JWT的弊端,以及一种新的token验证PASETO