一篇理解什么是CanSet, CanAddr?

# 一篇理解什么是CanSet, CanAddr? # 什么是可设置( CanSet ) 首先需要先明确下,可设置是针对 reflect.Value 的。普通的变量要转变成为 reflect.Value 需要先使用 reflect.ValueOf() 来进行转化。 那么为什么要有这么一个“可设置”的方法呢?比如下面这个例子: ``` golang var x float64 = 3.4 v := reflect.ValueOf(x) fmt.Println(v.CanS...阅读全文

Go语言中文网 2020-10-27 12:38:41 jianfengye110

加密算法推荐清单

1. 背景 文中所列出的推荐算法皆已经过全世界密码学家验证和各国际标准化组织认证, 并在市场中广泛应用, 有望在未来足够长的时间内保证安全性和实现性能。 2. 密码学家的工具箱 2.1 散列算法 散列算法是密码学算法中非常重要的一个分支, 通过对所有数据提取指纹信息以实现数据签名、 数据完整性校验等功能。 用于消息唯一性和数据完整性验证的散列函数, 其安全性依赖于函数本身的属性和对抗碰撞的抵抗, 因此散列函数的选择至关重要。 MD 系列函数已宣告破解, 可被轻易伪造, 不能作为安全散列函数使用。...阅读全文

Golang interface

接口在Golang中表示一种抽象的数据类型,它用来定义对象的行为,具体的实现由对象决定。程序编写时如果仅仅定义接口是没有实际意义的,我们需要自定义类型,如果类型对某个接口的所有方法提供了定义,就说这个类型实现了该接口。 定义接口 Golang中接口的定义使用interface关键字,后面紧跟一个大括号,里面包含若干函数(参数和返回值不是必需的),比如, type People interface { GetName() string // 带有返回值的方法 GetAge(id int) // 带...阅读全文

简书 2020-10-26 22:32:41 aneirin

【Go基础】GOPATH、GOROOT、GOMOD

我们可以输入go env查看我们的go环境变量 GOPATH="/Users/inf/go" GOROOT="/usr/local/go" GO111MODULE="auto" GOPATH GOPATH 是 Go语言中使用的一个环境变量,它使用绝对路径提供项目的工作目录。 工作目录:一个工程开发的相对参考目录。工作区的概念与工作目录的概念也是类似的。如果不使用工作目录的概念,在多人开发时,每个人有一套自己的目录结构,读取配置文件的位置不统一,输出的二进制运行文件也不统一,这样会导致开发的标准不...阅读全文

简书 2020-10-26 22:32:41 abboo

Golang singleflight

golang/groupcache 用处 保护下游,针对下游的同一批请求,只有一个负责去请求,其他等待结果; 例如:缓存更新能够做到对同一个失效key的多个请求,只有一个请求执行对key的更新操作。 示例 func TestDoDupSuppress(t *testing.T) { var g Group c := make(chan string) var calls int32 fn := func() (interface{}, error) { atomic.AddInt32(&call...阅读全文

简书 2020-10-26 19:32:38 梦工厂

小白求助

今天完成了go的环境安装后,跑了一个demo,可以跑也输出结果了。 但是我修改了main.go以后再debug就开始报错 debug: 16:19 Error running 'go build main.go': Cannot run program "C:\Program Files\JetBrains\GoLand 2020.2.2\plugins\go\lib\dlv\windows\dlv.exe" (in directory "D:\code\go-study\testt"):...阅读全文

Go语言中文网 2020-10-26 16:22:12 nanke1meng

Linux 服务器开发学习路线总结(配图 c/c++ )后台开发、Golang后台开发、后端技术栈

本文总结了目前互联网行业Linux c/c++ 后端岗位开发工程师、服务器开发架构师以及Golang开发工程师技术栈知识点、大家可以看看还有没有需要补充的。Linux后台开发工程师专栏一、算法与设计专题二、后台组件编程专题三、代码化过程专题四、网络服务专题Linux服务器高级开发视频学习、文档资料+qun 720209036获取五、开源框架专题六、性能测试专题七、Linux系统专题Linux高级互联网架构师专栏一、源码分析专题二、中间件开发专题三、集群专题四、Linux系统专题五、性能与测试专题...阅读全文

Segmentfault 2020-10-27 13:32:38 Linux服务器开发

阿里 双11 同款,流量防卫兵 Sentinel go 源码解读

简介:本文主要分析阿里巴巴集团开源的流量控制中间件 Sentinel,其原生支持了 Java/Go/C++ 等多种语言,本文仅仅分析其 Go 语言实现。下文如无特殊说明,sentinel 指代 Sentinel-Go。 image 1 基本概念 Resource 和 Rule 1.1 Resource <pre class="public-DraftStyleDefault-pre" data-offset-key="80ci-0-0"> <pre class="Editable-styled"...阅读全文

简书 2020-10-26 11:32:51 阿里云云栖号

Go发起HTTP2.0请求流程分析(后篇)——标头压缩

来自公众号:新世界杂货铺阅读建议这是HTTP2.0系列的最后一篇,笔者推荐阅读顺序如下:Go中的HTTP请求之——HTTP1.1请求流程分析Go发起HTTP2.0请求流程分析(前篇)Go发起HTTP2.0请求流程分析(中篇)——数据帧&流控制回顾在前篇(*http2ClientConn).roundTrip方法中提到了写入请求header,而在写入请求header之前需要先编码(源码见https://github.com/golang/go/...)。在中篇(*http2ClientConn)....阅读全文

Segmentfault 2020-10-27 13:32:40 新世界杂货铺

如何利用go-zero在Go中快速实现JWT认证

关于JWT是什么,大家可以看看官网,一句话介绍下:是可以实现服务器无状态的鉴权认证方案,也是目前最流行的跨域认证解决方案。要实现JWT认证,我们需要分成如下两个步骤客户端获取JWT token。服务器对客户端带来的JWT token认证。1. 客户端获取JWT Token我们定义一个协议供客户端调用获取JWT token,我们新建一个目录jwt然后在目录中执行 goctl api -o jwt.api,将生成的jwt.api改成如下:type JwtTokenRequest struct { }...阅读全文

Segmentfault 2020-10-27 13:32:39 kevinwan

Drone 自定义 UI

Drone 是一款开源的 CI/CD 工具,基于容器提供了强大的插件系统。多年前我有写过《基于Docker的CI工具——Drone》中有详细的介绍它的优点。Drone 采用的是 Server/Agent 架构,Server 端用来处理请求派发任务给 Agent,最终在 Agent 上执行任务。Drone 整体是使用 Golang 写的,drone/drone-ui 是它的前端页面仓库,采用 Vue.js 进行开发(很早之前是使用 React 进行开发的)。前后端分离的项目,比较正常的中间会使用 ...阅读全文

Segmentfault 2020-10-27 13:32:39 公子

使用Goland IDE go mod 方式构建项目

不管学习什么编程语言一开始都会经历的四步开发工具安装IDE安装设置 依赖/包 国内镜像项目构建工具,管理依赖/包一、Golang 开发工具安装https://golang.org/ 官网(需要各自手段)https://github.com/golang/go github地址http://docscn.studygolang.com/ golang中文网二、Goland IDE安装https://www.jetbrains.com/zh-...三、设置 依赖/包 国内镜像常用镜像地址:阿里云: ...阅读全文

Segmentfault 2020-10-27 13:32:39 阿壮Jonsson

Golang 基础整理 这一篇就够了

第一个golang程序package main import "fmt" func main() { fmt.Println("hello golang") }基本数据类型布尔型( true 或者 false)数字类型( 整型 int 和 浮点型 float32、float64 )字符串类型( 字符串就是一串固定长度的字符连接起来的字符序列 )派生类型:指针类型(Pointer)数组类型结构化类型(struct)Channel 类型函数类型切片类型接口类型(interface)Map 类型数字类...阅读全文

Segmentfault 2020-10-27 13:32:38 阿壮Jonsson

【Go基础】字符类型

rune类型 Go语言的字符有以下两种: 一种是 uint8 类型,或者叫 byte 型,代表了 ASCII 码的一个字符。 另一种是 rune 类型,代表一个 UTF-8 字符,当需要处理中文、日文或者其他复合字符时,则需要用到 rune 类型。rune 类型等价于 int32 类型。 byte 类型是 uint8 的别名,对于只占用 1 个字节的传统 ASCII 编码的字符来说,完全没有问题,例如 var ch byte = 'A',字符使用单引号括起来。 Go语言同样支持 Unicode(...阅读全文

简书 2020-10-25 16:32:38 abboo

Golang中panic与recover的实现原理

今天我们讲讲golang中panic异常,以及recover对异常的捕获,由于panic、recover、defer之间非常亲密,所以今天就放在一起讲解,这里会涉及到一些defer的知识,有兴趣可以看我的另一篇关于defer的文章 Golang中defer的实现原理. Panic异常 Go的类型系统会在编译时捕获很多错误,但有些错误只能在运行时检查,如数组访问越界、 空指针引用等。这些运行时错误会引起painc异常。 一般而言,当panic异常发生时,程序会中断运行,并立即执行在该gorouti...阅读全文

简书 2020-10-25 11:32:39 书生也爱羊

Golang标准库——unsafe

unsafe unsafe包提供了一些跳过go语言类型安全限制的操作。 type ArbitraryType type ArbitraryType int ArbitraryType在本文档里表示任意一种类型,但并非一个实际存在与unsafe包的类型。 type Pointer type Pointer *ArbitraryType Pointer类型用于表示任意类型的指针。有4个特殊的只能用于Pointer类型的操作: 1) 任意类型的指针可以转换为一个Pointer类型值 2) 一个Poin...阅读全文

简书 2020-10-25 02:32:39 DevilRoshan

编程语言的力量

也许正是学会了八卦才让智人击败了其他人种 最早的人类是从大约250万年前的东非开始演化,祖先是一种更早的猿属“南方古猿”。他们一部分人离开家园踏上旅途,足迹遍布北非、欧洲和亚洲,逐渐开始分化出不同的特征,以适应不同地域的环境。在那样一个史前时代,他们又是如何团结在一起克服困难维持种族的生存呢?我想正是语言的产生,让他们有了高效的机动能力,也正是语言的产生,让我们的祖先开始叽叽喳喳的八卦族内族外的事情,信息的获取由此开始,人类文明也借助语言开始往高阶的方向发展起来。 德国曾出版过一本语言工具手册—...阅读全文

简书 2020-10-25 02:32:38 果仁不仁