关于对切片操作导致基底数组变更的问题

## 总结: **s := []int{1, 2, 3, 4, 5}** 长度**5** 容量**5** **newS := s[a:b]** 以**s**为基底生成切片时, 长度 **b-a** 容量 **len(s)-a** 当**newS**进行**append**后: 若容量不超 ,那么**[]s**也会跟着改变 若超了,则**[]s**不改变,**[]newS**可视为**new**出来的一个切片 且容量翻倍直至足够容纳新切片,当超过**1000**时...阅读全文

Go语言中文网 2022-01-20 11:04:35 0x25w

从CPU角度理解Go中的结构体内存对齐

大家好,我是Go学堂的渔夫子。今天跟大家聊聊结构体字段内存对齐相关的知识点。 原文链接:https://mp.weixin.qq.com/s/H3399AYE1MjaDRSllhaPrw 大家在写Go时有没有注意过,一个struct所占的空间不见得等于各个字段加起来的空间之和,甚至有时候把字段的顺序调整一下,struct的所占空间又有不同的结果。 本文就从cpu读取内存的角度来谈谈内存对齐的原理。 **01 结构体字段对齐示例** 我们先从一个示例开始。T1...阅读全文

Go语言中文网 2022-01-20 08:52:26 yudotyang

消息最终一致性的最简新架构

## 概述 跨服务更新数据是应用开发常见的任务,如果一些关键数据对一致性的要求较高,而业务上也不需要支持回滚的话,那么通常就会采用本地消息表的方式来保证最终一致。许多公司在处理跨服务更新数据一致性问题时,都会先引入本地消息表,后续随着业务场景复杂化,再引入更多的事务模式 本文提出的二阶消息,是一种新模式,新架构,优雅的解决了消息最终一致性的问题,带来更加简易快捷的开发新体验。 下面我们以跨行转账作为例子,给大家详解这种新架构。业务场景介绍如下: 我们需要跨行从A转给B 30元...阅读全文

Go语言中文网 2022-01-17 10:27:01 yedf

理解go中空结构体的应用和实现原理

大家好,我是「Go学堂」的渔夫子,欢迎关注Go学堂,学习更多实战应用案例。 原文地址:https://mp.weixin.qq.com/s/h8vhy8IJKnA8aNbTlCoQtg 在实际项目或开源程序中,相信大家都见过将一个空结构体作为map值的场景: ``` // CanSkipFuncs will skip valid if RequiredFirst is true and the struct field's value is empty var CanSkipF...阅读全文

Go语言中文网 2022-01-15 15:56:05 yudotyang

并发请求量限制组件分享

## 背景 关于限流Go官方通过一个采用令牌池的算法的实现:golang.org/x/time/rate,但是,这个限制的是每秒的请求数,有的时候我们希望限制的是系统并发处理的请求数量,类似线程池的功能,需求如下: 1. 设置一个最大的请求处理数量,当请求超过时,后续请求将等待,直到有请求处理完后被唤醒。 2. 请求的等待时间能够指定,超出等待时间就返回,提示给客户端。 3. 等待请求的个数需要能够限制,数量超过时就直接返回,提示给客户端。 ## 设计 设计思路是实现...阅读全文

Go语言中文网 2022-01-11 21:10:04 uuid

用Go语言实现多协程文件上传,断点续传,你如何实现?

网上很多文件基本都是多协程下载文件要么就只有单协程的断点续传,这里给大家写一个支持有进度条的多协程下载文件,也支持断点续传。 好了,直接看代码就好了,小编已加上详细的解释与说明 ``` package main import ( "fmt" "io" "os" "regexp" "strconv" "sync" "github.com/qianlnk/pgbar" ) /** * 需求: 1. 多协程下载文件 2.断点续连 **...阅读全文

Go语言中文网 2022-01-11 09:57:18 goCenter

Go 实战 | 基于有向无环图的并发执行流的实现

大家好,我是「Go学堂」的渔夫子。今天跟大家聊聊基于有向无环图的工作流的实现。 原文链接:https://mp.weixin.qq.com/s/F5BbHeMP7gBZHjiUL0qeeQ ### 01 工作流(workflow)概述 工作流,是对工作流程中的工作按一定的规则组织在一起并按其进行执行的一种模型。比如常见的行政系统中的加班申请、请假申请;工作流要解决的问题就是为了实现某个特定的目标,让多个参与者之间按某种预订的规则自动的传递信息。 本文介绍了一种基于有向无环图...阅读全文

Go语言中文网 2022-01-11 08:25:32 yudotyang

GORM-GEN初识与入门,和SQL注入说拜拜

# 背景 数据库操作是大多数程序员必不可少的工作, GORM 作为一个拥有 25k star 的项目已经是 Go 语言操作关系型数据库的首选。 - 由于 GORM 中提供了很多 interface{} 形式的参数,这让程序员很容易误用,导致线上项目存在 SQL 注入的风险。 - 在操作数据库时候,因为没有对应的结构体可以绑定,最后只能默默的拼接出一条SQL去执行。 - 复杂的数据库表查询场景时,开发者需逐条手写数据表中的列与对应结构体的成员变量,逐条核对字段类型。...阅读全文

Go语言中文网 2022-01-10 15:57:03 idersec

Go 语言的 :=的具体使用与区别

**单变量 :=** Go 语言中新增了一个特殊的运算符:=,这个运算符可以使变量在不声明的情况下直接被赋值使用。其使用方法和带值声明变量类似,只是少了var关键字,形如变量名:=变量值,这样就等于声明了一个带值的变量,该变量的类型与其变量值一致。   ![image.png](https://static.studygolang.com/220110/7e4fd5e9a383dba00dce05d9a4abb261.png) 可以看到,上面的代码中我们并没有提...阅读全文

Go语言中文网 2022-01-10 10:22:32 goCenter

[Go] context.Context 解析

## 结论 context 的意义就是在函数之间的调用过程中维护一个统一的 “上下文”。在 “上下文” 中使用保存 “状态” 的方式共享信息。 所谓的超时取消等 “功能” 也属于 “状态” 的一种。 且 context.Context ”碰巧“ 拥有了并发安全性。所以才会被广泛地应用到各种函数和方法中。 可以从几个方面来说明这个问题。 ### 状态共享 用一个例子来说明状态共享的意义: fn1 创建了 int 类型的 "状态" `i` 并将其传递了下去。...阅读全文

Go语言中文网 2022-01-08 13:34:12 kvii

go get 安装gitlab私有包

- 获取gitlab的token 进入Gitlab—>Settings—>Access Tokens,然后创建一个personal access token,这里权限最好选择只读(read_repository)。 - git配置添加access token 有了access token后,我们还需要在git中进行配置,这样才能go get下了私有仓库的包,需要把刚刚的token添加进git的请求头中,操作如下: ```bash git config --g...阅读全文

Go语言中文网 2022-01-05 00:27:17 hickey666

Goland 使用教程 01:高效的处理 json 文本

大家好,我是渔夫子。 工欲善其事,必先利其器。今天我们讲解Goland是如何高效的处理json的。 ### 01 将json直接转换成结构体 首先我们有一个段json格式的数据如下,看下Goland是如何快捷的转换成结构体的。 ```json { "email": "noah.poulsen@example.com", "gender": "male", "first_name": "noah", "last_name": "po...阅读全文

Go语言中文网 2022-01-04 21:00:59 yudotyang

Casbin开源社区推出开源身份认证、单点登录框架Casdoor!

开源地址:https://github.com/casbin/casdoor 在线演示:https://door.casbin.com/ 技术文档:https://casdoor.org/docs/overview 目前支持以下特性: 1. 前后端分离架构,Go语言开发,支持高并发,具有Web可视化管理界面,支持多语言(中文、英文) 2. GitHub, Google, QQ, 微信等几十种OAuth 2.0第三方登录,支持阿里云IDaaS、KeyCloak等SAML第三...阅读全文

Go语言中文网 2022-01-01 11:42:17 douke0320

最好的 6 个免费天气 API 接口对比测评

本文首发:[最好的 6 个免费天气 API 接口对比测评 - 卡拉云](https://kalacloud.com/blog/free-weather-api/) **天气 API**包含丰富的天气数据,不仅有实时温度、湿度、风速、降水等这些基础数据,还有过去的历史天气数据和未来的天气预测数据,**顶级的天气 API 接口**还会包括天气灾害预警,空气质量指数,日出日落、潮汐及月相相关的天文气象等数据。**天气 API 也并不难获得,本教程将介绍 6 款国内外免费的天气 API,并手把...阅读全文

Go语言中文网 2021-12-31 17:30:48 HiJiangChuan

Postman 使用教程 - 手把手教你 API 接口测试

![Postman 使用教程 - 手把手教你 API 接口测试](https://kalacloud.com/static/933d39be1cfa83183ff0f68b3cdcef92/ef245/head.jpg) 本文首发:[Postman 使用教程 - API 接口自动化测试初探 - 卡拉云](https://kalacloud.com/blog/postman-tutorial/) Postman 是一套 API 接口测试工具,它的强大在于灵活趁手的接口测试功能,极大的提...阅读全文

Go语言中文网 2021-12-31 17:06:22 HiJiangChuan

IntelliJ IDEA 2021.3激活破解图文教程(亲测有用)

笔者发现一个可以 无限重置 IDEA 30天试用期的方法, 暴力无解,简单又稳定,再也不用担心激活码经常失效的问题了,具体步骤跟着下面的图文教程一步一步来就行,非常简单哟。​​注意本教程适用于 IntelliJ IDEA 2021.1.3 以下所有版本,请放心食用~本教程适用于 JetBrains 全系列产品,包括 Pycharm、IDEA、WebStorm、Phpstorm、Datagrip、RubyMine、CLion、AppCode 等。本教程适用 Windows/Mac/Linux 系统...阅读全文

Go语言中文网 2021-12-31 15:36:03 Elaine1218