![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Go语言编程
文章平均质量分 81
学习和记录Go语言的基础知识和编程中遇到解决的错误
CcoWzh
一个初出茅庐的码农
展开
-
群签名和Go语言实现细节(BBS04--Short Group Signatures)
本文主要介绍论文《Short Group Signatures》群签名的go语言版本的具体实现。本文是在参考 yunfeiyanggzq 的实现基础上,进行了进一步的改造加工,以此为基础进行的详细解释。其代码地址为:https://github.com/yunfeiyangbuaa/BBS04_signature群签名在一个群签名方案中,一个群体中的任意一个成员可以以匿名的方式代表整个群体对消息进行签名。与其他数字签名一样,群签名是可以公开验证的,而且可以只用单个群公钥来验证。群签名主要流程:原创 2021-05-31 15:25:44 · 3065 阅读 · 2 评论 -
gRPC实践--Server&Client
前言在gRPC中,客户端应用程序可以直接在其他计算机上的服务器应用程序上调用方法,就好像它是本地对象一样,从而使您更轻松地创建分布式应用程序和服务。与许多RPC系统一样,gRPC围绕定义服务的思想,指定可通过其参数和返回类型远程调用的方法。 在服务器端,服务器实现此接口并运行gRPC服务器以处理客户端调用。 在客户端,客户端具有一个存根(在某些语言中仅称为客户端),提供与服务器相同的方法。例如,你可以使用Go,Python或Ruby的客户端轻松地用 Java 创建 gRPC 服务器。前提知识点:.原创 2021-04-23 15:57:58 · 926 阅读 · 0 评论 -
Google--Proto Buffer的序列化原理
Google–Proto Buffer的序列化原理这篇文档将讨论 protocol buffer 消息的二进制编码格式,了解不同的 protocol buffer 格式如何影响编码消息的大小可能非常有用!!!简单示例让我们来看一看非常简单的消息定义:message Person { string user_name = 1; int64 favorite_number = 2; repeated string interests = 3;}## 赋值:oldData := &am原创 2021-03-10 14:36:00 · 853 阅读 · 1 评论 -
使用 dockerfile构建golang的web服务
在使用docker时,如何将自己的下golang 应用打包成一个镜像呢?1. 编写web应用package mainimport ( "fmt" "log" "net/http")func handler(w http.ResponseWriter, r *http.Request) { if _, err := fmt.Fprintf(w, "hello,you visit url is %q\n", r.URL.Path); err != nil { log.Println(e原创 2021-02-27 16:32:25 · 554 阅读 · 0 评论 -
golang 的基础数据类型
机器级程序将内存视为一个非常大的字节数组,称为虚拟内存(virtual memory)。内存的每个字节都由一个唯一的数字来标识,称为它的地址(address),所有可能地址的集合就称为虚拟地址空间(virtual memory space)。所以,从内存管理上看,编程语言中的数据类型表示的是存储的何种类型的数据,就是一个类型占用的内存大小。也就是说,数据类型的出现是为了把数据分成所需内存大小不同的数据在程序中,我们通过指定其类型,能实现以特定字节数为单位来进行读写。Go语言提供了丰富的数据组织形式原创 2021-01-12 14:58:35 · 176 阅读 · 1 评论 -
golang---素数筛从单机到并发
使用 golang 的并发特性,可以很好的提高程序的执行速度。其中,并发版本的素数筛是一个经典的例子,通过它我们可以更深刻地理解Go语言的并发特性。首先,我们看看什么是素数筛:素数筛顾名思义,就是将素数筛选出来。首先,我们是怎么判断一个数是素数的呢?我们一般是这样做的:// 判断整数 n 是否是素数func isPrime(n int) bool { for i := 2; i*i <= n; i++ { if n%i == 0 { return false } } re原创 2021-01-09 17:56:53 · 399 阅读 · 1 评论 -
Go语言编程--Slice
本系列为探究golang中,基本类型的一些底层实现。一者是为了在面试中,能对答出来,增加面试通过的几率;一者,是为了彻底了解语言的底层实现,在今后使用的过程中,才能知道自己需要注意什么,在哪里怎么优化。本章节,我们将讨论Go的切片的用法首先,我们看看slice的底层数据结构:数据结构type SliceHeader struct { Data uintptr //指向数组的指针 Len int //当前切片的长度 Cap int //当前切片的容量}Data原创 2021-01-05 18:21:48 · 250 阅读 · 0 评论 -
记一次项目构建错误---Use of internal package is not allowed
出错背景最近在写一个项目,是属于两个人合写的,一个人写一个包,最后合并在一起。但是,最后在 main.go 中,需要应用到某个函数时,发现不能引用,报错:报错:Use of internal package is not allowed如下图所示:寻找原因一开始,以为是 GOPATH 的问题,因为看字面意思,我们很容易想到是内部函数出了问题。但是,仔细想想,这个也不是内部函数啊。理所当然的,把这个项目放到 GOPATH/src 下运行,也不会有什么改变,一样报错。真正的原因最后,发现原创 2021-01-04 12:10:51 · 10395 阅读 · 0 评论 -
Golang--序列化和反序列化方法
在编程过程中,我们总是要遇到这样的问题,就是将我们的数据对象要在网络中传输或保存到文件,这就需要对其编码和解码动作。目前存在很多编码格式:json, XML, Gob, Google Protocol Buffer 等,在Go 语言中,如何对数据进行这样的编码和解码呢?本文记录数据序列化的方法和需要注意的问题原创 2020-12-30 17:19:27 · 3762 阅读 · 1 评论