随笔分类 -  GO语言

摘要:package main import ( "fmt" "github.com/faceair/jio" "log" ) func typeof(v interface{}) string { return fmt.Sprintf("%T", v) } func main() { data := [ 阅读全文
posted @ 2020-07-15 16:47 独角兕大王 阅读(215) 评论(0) 推荐(0)
摘要:Fiber:高效、极速、极简的Web框架 Go 语言构建的 Web 框架一大堆,Beego、Iris、Gin 等 。今天带来一个足够有吸引力的新的Web框架。不同于其他的框架,他的性能极佳,代码量又足够小,上手和使用都能使你有驾轻就熟的感觉。Fiber是一个基于Express的Web框架,建立在Go 阅读全文
posted @ 2020-07-13 10:01 独角兕大王 阅读(877) 评论(0) 推荐(0)
摘要:Go语言是谷歌2009发布的第二款开源编程语言 Go语言专门针对多处理器系统应用程序的编程进行了优化,使用Go编译的程序可以媲美C或C++代码的速度,而且更加安全、支持并行进程。 因而一直想的是自己可以根据自己学习和使用Go语言编程的心得,写一本Go的书可以帮助想要学习Go语言的初学者快速入门开发和 阅读全文
posted @ 2020-06-02 10:01 独角兕大王 阅读(375) 评论(0) 推荐(0)
摘要:Generator Pattern 生成器模式 Generators yields a sequence of values one at a time. 生成器一次生成一个值序列。 package main import "fmt" func Count(start int, end int) c 阅读全文
posted @ 2020-05-01 16:10 独角兕大王 阅读(145) 评论(0) 推荐(0)
摘要:Proxy Pattern 代理模式 The proxy pattern provides an object that controls access to another object, intercepting all calls. 代理模式提供一个对象,该对象控制对另一个对象的访问,拦截所有 阅读全文
posted @ 2020-04-30 15:00 独角兕大王 阅读(133) 评论(0) 推荐(0)
摘要:反射是指在程序运行期对程序本身进行访问和修改的能力。 程序在编译时,变量被转换为内存地址,变量名不会被编译器写入到可执行部分。在运行程序时,程序无法获取自身的信息。支持反射的语言可以在程序编译期将变量的反射信息,如字段名称、类型信息、结构体信息等整合到可执行文件中,并给程序提供接口访问反射信息,这样 阅读全文
posted @ 2020-04-28 13:29 独角兕大王 阅读(197) 评论(0) 推荐(0)
摘要:对象池模式 The object pool creational design pattern is used to prepare and keep multiple instances according to the demand expectation. 实例: package main i 阅读全文
posted @ 2020-04-28 11:38 独角兕大王 阅读(153) 评论(0) 推荐(0)
摘要:A curated collection of idiomatic design & application patterns for Go language。 这是一组用于Go语言的惯用设计和应用模式 Creational Patterns 创造者模式 Abstract Factory:provi 阅读全文
posted @ 2020-04-28 10:25 独角兕大王 阅读(573) 评论(0) 推荐(0)
摘要:建造者模式 将一个复杂的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 以下情况适合使用呢建造者模式 .当创造复杂对象的算法一个独立于该对象的组成部分以及它们的装配方式时。 .当构造过程必须允许构造的对象有不同表示时。 Builder pattern separates the cons 阅读全文
posted @ 2020-04-27 23:52 独角兕大王 阅读(208) 评论(0) 推荐(0)
摘要:单例模式 Singleton creational design pattern restricts the instantiation of a type to a single object. 单例模式说白了,就是在整个golang单体服务中,如果说把所有博客比喻成一个服务,那么所有原创的文章都 阅读全文
posted @ 2020-04-27 13:47 独角兕大王 阅读(503) 评论(0) 推荐(0)
摘要:之前我们通过Watch机制实现了简化版本的监视服务,这里我们基于这种机制实现一个发布订阅模式,但是因为RPC缺乏流机制导致每次只能返回一个结果,在发布订阅模式中,由调用者主动发起的发布行为类似于一个普通函数调用,而被动的订阅者则类似gRPC客户端单向流中的接收者。现在我们可以尝试基于gRPC的流特性 阅读全文
posted @ 2020-04-24 10:24 独角兕大王 阅读(5354) 评论(0) 推荐(0)
摘要:gRPC介绍 gRPC是Google公司基于Protobuf开发的跨语言的开源RPC框架。gRPC基于HTTP/2协议设计,可以基于一个HTTP/2链接提供多个服务,对于移动设备更加友好。本节将讲述gRPC的简单用法。 gRPC的技术栈: 最底层为TCP或Unix Socket协议,在此之上是HTT 阅读全文
posted @ 2020-04-23 13:36 独角兕大王 阅读(1442) 评论(0) 推荐(0)
摘要:RPC实现上下文信息 基于上下文可以针对不同的客户端提供定制化的RPC服务,我们可以通过为每个连接提供独立的RPC服务来实现对上下文的特性的支持,下面我们将针对每个RPC服务进行登陆验证,如果通过服务登陆就可以调用RPC,首先是proto目录下的proto文件: syntax = "proto3"; 阅读全文
posted @ 2020-04-23 09:10 独角兕大王 阅读(257) 评论(0) 推荐(0)
摘要:Protofbuf与RPC实例 下面已网上最多的一个RPC实例进行分析。首先定义好proto文件,在proto目录下创建message.proto文件: syntax = "proto3"; package proto; // 订单请求参数 message OrderRequest { string 阅读全文
posted @ 2020-04-22 22:04 独角兕大王 阅读(314) 评论(0) 推荐(0)
摘要:Protobuf介绍 Protobuf 是Protocol Buffers 的简称,它是谷歌公司开发的一种数据描述语言, 2008开源时定位类似于XML、JSON等描述语言,通过附带的工具生成代码并实现结构化数据的功能,但我们更关注的是Protobuf作为接口规范的描述语言,可以作为设计安全的跨语言 阅读全文
posted @ 2020-04-21 18:01 独角兕大王 阅读(890) 评论(0) 推荐(0)
摘要:跨语言的RPC 标准库的RPC默认采用Go语言特有的Gob编码,因此从其他语言调用Go语言实现RPC服务将比较困难,在互联网的为服务时代,每个RPC以及服务的使用都可能采用不同的编码语言,因此跨语言是互联网时代RPC的一个首要 条件。Go语言的RPC框架有两个比较有特色的设计: 一个是RPC数据包可 阅读全文
posted @ 2020-04-19 22:20 独角兕大王 阅读(390) 评论(0) 推荐(0)
摘要:RPC和Protobuf RPC是远程过程调用(Remote Procedure Call) 的缩写, 通俗地来说就是调用远处的一个函数,远处到底有多远?可能是同一个机器的另一个进程,也可能是远在火星好奇号上的一个秘密东西。因为RPC涉及的函数可能非常远,远到它们之间说着不同的语言,所以我们需要解决 阅读全文
posted @ 2020-04-19 15:31 独角兕大王 阅读(1072) 评论(0) 推荐(0)
摘要:参考文档:https://gobyexample.com/ 数组 package main import "fmt" func main() { var a [5]int fmt.Println("emp:", a) a[4] = 100 fmt.Println("set:", a) fmt.Pri 阅读全文
posted @ 2020-04-14 09:55 独角兕大王 阅读(714) 评论(0) 推荐(1)
摘要:Gin框架介绍 Gin是一个用Go语言编写的web框架。它是一个类似于martini但拥有更好性能的API框架, 由于使用了httprouter,速度提高了近40倍。 如果你是性能和高效的追求者, 你会爱上Gin。Go世界里最流行的Web框架,Github上有32K+star。 基于httprout 阅读全文
posted @ 2020-04-10 22:23 独角兕大王 阅读(1606) 评论(0) 推荐(0)
摘要:切片诞生的背景 数组的长度是固定的并且数组长度属于类型的一部分,所以数组有很多的局限性。 例如: func arraySum(x [3]int) int{ sum := 0 for _, v := range x{ sum = sum + v } return sum } //这个求和函数只能接受[ 阅读全文
posted @ 2020-04-08 22:55 独角兕大王 阅读(205) 评论(0) 推荐(0)