手机随时阅读
新人专享大礼包¥24
前言Golang 作为一门还在快速成长的编程语言,想要与时俱进,还得多看看这几个开源项目。听说你想学习 Go 语言,那我就来总结一下:那些目前我所了解的优质 Golang 开源项目。Go 自己学习 Go 语言,可别忘记了 Go 本身是一门可以轻松构建简单,可靠和高效软件的开源编程语言。官网:https://go.dev/GitHub 地址:https://github.com/gola
安全问题,让人既爱又恨,不管是云原生应用还是本地或其他,安全是任何应用程序的一个重要特性。但往往很多时候,安全问题被忽视,成为最后考虑的问题,这样的结果就是:一旦出现问题,就会带来灾难性结果。传统环境有丰富的工具和既定的安全最佳实践,但对于云原生应用来说,情况就不一样了,云原生应用往往采取几个小的、往往是短暂的微服务的形式。这种架构提供了巨大的灵活性和可扩展性优势。TLS 简要介绍TLS(Tran
RPC(Remote Procedure Call) 是远程过程调用的简称,是分布式系统中不同节点间流行的通信方式。在互联网时代,RPC 已经和 IPC 一样成为一个不可或缺的基础构件。因此 Go 语言的标准库也提供了一个简单的 RPC 实现:net/rpc 包。RPC 的目的是成为网络系统的函数调用模式。客户端执行 RPC 就像调用原生函数一样,只是它们将函数参数打包并通过网络发送到服务
theme: devui-blue highlight: a11y-dark0 前言相信大家以前在做阅读理解的时候,一定有从老师那里学一个技巧或者从参考答案看个:结合上下文。根据上下文我们能够找到有助于解题的相关信息,也能更加了解段落的思想。在开发过程中,也有这个上下文(Context)的概念,而且上下文也必不可少,缺少上下文,就不能获取完整的程序信息。那么什么是程序中的上下文呢?简单来说,就是在
链表中删除重复项从链表中移除一个重复的值,链表是有序的。在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5Go 语言实现如下:func(list *List) RemoveDuplicate() { curr := list.h
0 前言扇出/扇入模式是更高级 API 集成的主要内容。这些应用程序并不总是表现出相同的可用性或性能特征。扇出是从电子工程中借用的一个术语,它描述了输入的逻辑门连接到另一个输出门的数量。输出需要提供足够的电流来驱动所有连接的输入。在事务处理系统中,用来描述为了服务一个输入请求而需要做的请求总数。扇入是指为逻辑单元的输入方程提供输入信号的最大数量。扇入是定义单个逻辑门可以接受的最大数字输入数量的术语
本文利用到的技术:Gorilla/Mux:功能强大的 URL 路由器和调度组件CockroachDB:开源,云原生分布式 SQL 数据库系统GORM:神奇的 ORM 库APIfox:Apifox = Postman + Swagger + Mock + JMeter本文运行环境:Ubuntu 18.04.6 LTS本文将使用功能强大的 Gorilla Mux、GOR
Go ContextGolang 的 Context 应用开发常用的并发控制工具,用于在程序中的 API 层或进程之间共享请求范围的数据、取消信号以及超时或截止日期。Context 又被称为上下文,与 WaitGroup 不同的是,context 对于派生 goroutine 有更强的控制力,可以管理多级的 goroutine。Context Tree在实际实现中,我们通常使用派生上下文。我们创建
gRPC is a modern, open source remote procedure call (RPC) framework that can run anywhere.什么是 gRPCgRPC 由谷歌开发的,是一种语言中立、平台中立、开源的远程调用过程。什么是远程调用过程?简单理解就是公开本地应用给其他应用程序调用的方法。gRPC 是一项进程间通信技术,可以用来连接、调用、操作和调式分
在文本上使用凯撒密码来移动字符。调用 strings.Map 方法。1 凯撒密码加密凯撒密码(英语:Caesar cipher),或称凯撒加密、凯撒变换、变换加密,是一种最简单且最广为人知的加密技术。凯撒密码是一种替换加密技术,明文中的所有字母都在字母表上向后(或向前)按照一个固定数目进行偏移后被替换成密文。例如,当偏移量是 3 的时候,所有的字母 A 将被替换成 D;B 变成E,以此类推
0 前言为了弥补内置测试库的缺陷,诞生了优秀的第三方库 goconvey,目前 gtihub stars 数量达到了 7.4k,官网链接:http://goconvey.co/。口号:Write behavioral tests in your editor. Get live results in your browser.GoConvey 完美兼容 Go 内置的
从 Golang 的 net 包到发送 UDP 消息时调用的 Linux 内核方法。虽然在 Golang 中看到 TCP 服务器的实现很普遍,但在 UDP 中看到相同的实现并不常见。除了 UDP 和 TCP 之间的许多差异之外,使用 Go 感觉它们非常相似,除了每个协议细节产生的小细节。如果您觉得一些 Golang UDP 知识很有价值,请确保您坚持到底。另外,本文还介绍了 TCP 和 UDP 在
在 Go 中,可以通过关键字select来完成从不同的并发执行的协程中获取值,它和switch控制语句非常相似,也被称作通信开关;它的行为像是“你准备好了吗”的轮询机制;select监听进入通道的数据,也可以是用通道发送值的时候。 语法格式:select {case u:= <- ch1: ...case v:= <- ch2: ... ..
前言网络验证可能是一个难题。 有句话在 Web 开发中流传很广的原则:我们不能相信来自客户端用户表单的任何内容。所以我们必须在使用这些数据之前验证所有传入数据。实现 REST API 是 Go 应用程序的典型用例。 API 接受的格式错误的数据可能会导致系统其他部分出现严重错误。最好的情况是您的数据库有一些机制来防止存储格式错误的数据。如果不这样做,这些数据可能会导致您面向客户的应用程序出现错误和
在本教程中,我们将在 Golang 中构建一个 CRUD 应用程序。我们将使用 gorilla/mux 库作为 api 和 PostgreSQL DB 来存储数据。在 $GOPATH 之外创建一个新的项目目录 go-postgres。在 go-postgres 项目中打开终端。实例化 go 模块。go mod init go-postgres安装依赖我们将在这个项目中使用 3 个包,在 g
在 Go 中,可以通过关键字select来完成从不同的并发执行的协程中获取值,它和switch控制语句非常相似,也被称作通信开关;它的行为像是“你准备好了吗”的轮询机制;select监听进入通道的数据,也可以是用通道发送值的时候。语法格式:select {case u:= <- ch1: ...case v:= <
前言Golang(或通常称为 GO)是由于用户应用程序广泛的应用程序,如今已越来越受欢迎的编程语言之一。由于其表现力,高性能和汇编速度能够为企业主和开发人员解决很多问题。此外,GO 语言非常灵活且可扩展,跨行业的企业正在使用它来利用机器学习,网络,编程,大数据,网站构建,音频/视频编辑等。它引起了许多杰出的商业巨头的注意,包括 Uber,Alibaba,Facebook,BBC,Intel,Net
如何在 Go 中创建 WebSocket 应用程序上一篇文章我们先介绍了什么是 WebSockets 协议。本篇文章将来介绍如何利用 Go 来实现一个 要基于 net/http 库编写一个简单的 WebSocket 响应服务器,您需要:建立握手从客户端接收数据帧向客户端发送数据帧关闭握手WebSockets 无需客户端事先请求即可从服务器传输数据,允许来回传递消息并保持连接打开,直到客户端或服务
前言中间件通常位于前端的客户端站点请求和请求的后端资源之间。中间件非常有用,尤其是当我们希望在进行 API 调用之前进行一些验证,例如请求方法、标头和 JWT 等。日志中间件http.Handler 包装器是一个具有一个输入参数和一个输出参数的函数,两者都是 http.Handler 类型。func Middleware(next http.Handler) http.Handle
引言Advanced Encryption Standard, AES 又名 Rijndael 是 NIST 于 2001 年创建的一种加密算法。它使用 128 位数据块进行加密,是一种对称块密码。在这篇文章中,我们将在 Go 中使用 AES 加密和解密数据。我们需要 crypto/aes 包才能使其工作。import ( "crypto/aes" "encod
Go pongo2 教程展示了如何使用 pongo2 模板引擎在 Golang 中使用模板。模板引擎是一个库,旨在将模板与数据结合起来以生成文档。模板引擎用于生成大量电子邮件、源代码预处理或生成动态 HTML 页面。模板由静态数据和动态区域组成。动态区域稍后被数据替换。渲染函数稍后将模板与数据结合起来。模板引擎用于将模板与数据模型相结合以生成文档。pongo2 库是一个受 Django 模
Exec 是 os 包中的一个子包,它可用于使用 Go 运行外部命令。Go exec 命令教程展示了如何在 Golang 中执行 shell 命令和程序。要使用这个包,我们需要按如下方式导入:import "os/exec"使用 GoLang exec 包运行命令我们可以运行任何我们希望的命令。就像我们使用 CMD、bash 或其他一些 shell 来运行命令一样,它可以运行这些命令。这是运行
Go Fiber 教程展示了如何使用 Fiber 框架在 Golang 中创建简单的 Web 应用程序。Fiber 是一个简单快速的 Go Web 框架。 Fiber 专注于极致性能和低内存占用。它的灵感来自流行的 Express JS 框架。Fiber 创建一个 HelloWorldpackage mainimport ( "log" "github.com/gofiber/
引言Go 的 net/http 包为 HTTP 协议提供了很多功能。它做得不好的一件事是复杂的请求路由,例如将请求 url 分割成单个参数。幸运的是,有一个非常流行的包,它在 Go 社区中以良好的代码质量而闻名。在此示例中,您将看到如何使用 gorilla/mux 包创建具有命名参数、GET/POST 处理程序和域限制的路由。安装 gorilla/mux 包gorilla/mu
引言在上一篇文章中,我们成功连接了 MySQL 数据库,并成功打印出 MySQL 的版本号,本篇文章就来介绍如何使用 Go 语言操作数据库。创建数据库表我们在 DB_TEST 数据库中新建一个 user 数据库,包含主键 id 和名字 name,可以使用如下语句:_, err2 := db.Exec("CREATE TABLE user(id INT NOT NULL , name
引言MySQL是一个基于结构化查询语言(SQL)的开源关系数据库管理系统。它是一种关系数据库,可将数据组织到一个或多个表中,其中数据相互关联。MySQL 是行业领先的开源数据库管理系统。它是一个多用户、多线程的数据库管理系统。数据库驱动程序:数据库驱动程序实现了用于数据库连接的协议。驱动程序就像一个适配器,连接到特定数据库的通用接口。Go 有 sql 包,它提供了一个围绕 SQL(或类似
Fork-Join 模型在并发中,Fork-Join 模型是一种设置和执行并发程序的方式,使得执行在指定点处分支,并在后续点处加入或合并,并恢复顺序执行。 Fork 一词指的是程序运行时的任何时间点,它可以创建一个或多个子执行分支,以同时运行或在某些情况下与父级并行运行。 Join 一词指的是将来并发执行分支连接回父级的时间点。WaitGroups现在,我们对并发模型 Fork-Join 有了更多
树可以有许多不同的形状,并且它们可以在每个节点允许的子节点数量或它们在节点内组织数据值的方式上有所不同。 而在其中最常用的树之一是二叉树。 二叉树是一棵树,其中每个节点最多可以有两个孩子。 一个孩子被识别为左孩子,另一个孩子被识别为右孩子。 二叉树是一种数据结构,在每个节点下面最多存在两个其他节点。即一个节点要么连接至一个、两个节点或不连接其他节点。树形结构的深度(也被称作高度)则被定义为根节点为
使用JSON Encoding 和 DecodingJSON,全称 JavaScript Object Notation (JSON) 是一种基于文本的标准格式,用于使用 JavaScript 对象语法表示数据。 它是一种轻量级且易于解析的数据表示语言,通常用于网络服务器和客户端之间的连接。如今,JSON 越来越流行。 它通常用于数据表示以及数据交换。 JSON 不像 XML 那样冗长,但这正是它
内置类型基本类型和结构化类型每一种编程语言都会内置几种基本的数据结构。例如:Python的List、Dict、Set等。基本数据类型可以大概分为两类:基本类型基础类型的值一般是原子性的,意味着基础类型不能被再被划分了。例如,一般编程语言中的基本类型包括:整型interger布尔型Boolean字符型character浮点型floating point枚举类型en
Copyright © 2005-2022 51CTO.COM 版权所有 京ICP证060544号