随笔分类 -  golang

摘要:gRPC是什么? gRPC是什么可以用官网的一句话来概括 A high performance, open source universal RPC framework 所谓RPC(remote procedure call 远程过程调用)框架实际是提供了一套机制,使得应用程序之间可以进行通信,而且 阅读全文
posted @ 2020-04-30 16:23 ZhiChao& 阅读(1676) 评论(0) 推荐(0) 编辑
摘要:目的:根据不同策略来执行对象的相应操作 和工厂模式很像,不同点在于: 工厂模式是传入参数后创建对象,根据传入的参数写逻辑来判断应该创建什么类型的对象,模式的使用者调用对象统一的方法操作。 策略模式是模式的使用者必须先创建好对象,将该对象作为参数传进去,然后通过该对象调用相应的方法。 设计场景如下: 阅读全文
posted @ 2020-04-06 10:41 ZhiChao& 阅读(654) 评论(0) 推荐(0) 编辑
摘要:目的:在工厂类中选择接口的实现类来实例化,功能模块中不需要关心具体逻辑。 使用条件:已经明确不同条件下创建相应实例。 优点:调用者只需要创建一个对象并调用;扩展功能时也只需要扩展工厂类;屏蔽接口的具体实现,调用者只需要关心接口的调用。 注意: 工厂模式与策略模式 差别在于此处是选择对接实体,而对接的 阅读全文
posted @ 2020-04-06 10:27 ZhiChao& 阅读(392) 评论(0) 推荐(0) 编辑
摘要:使用人比较多的zookeeper go client有 gozk 文档地址: https://wiki.ubuntu.com/gozk go zookeeper 文档地址: http://godoc.org/github.com/samuel/go zookeeper/zk 后者文档比较全一点,本文 阅读全文
posted @ 2020-04-05 23:55 ZhiChao& 阅读(10462) 评论(0) 推荐(2) 编辑
摘要:代码结构 代码 client.go coder.go server.go session.go coder_test.go session_test.go rpc_test.go 阅读全文
posted @ 2020-04-05 17:40 ZhiChao& 阅读(1644) 评论(0) 推荐(0) 编辑
摘要:服务端 go package main import ( "errors" "fmt" "net" "net/rpc" ) // rpc服务端 // 实现两个Rpc接口 // 1. 计算除数和被除数两个数的乘积,返回乘积结果 // 2. 计算除数和被除数两个数的除法结果,返回商和余数 // 请求参数 阅读全文
posted @ 2020-04-04 23:53 ZhiChao& 阅读(340) 评论(0) 推荐(0) 编辑
摘要:查看可用命令 直接在终端中输入 go help 即可显示所有的 go 命令以及相应命令功能简介,主要有下面这些: 命令的使用方式为: , 除此之外,可以使用 来显示指定命令的更多帮助信息。 在运行 go help 时,不仅仅打印了这些命令的基本信息,还给出了一些概念的帮助信息: 同样使用 来查看这些 阅读全文
posted @ 2020-03-18 12:51 ZhiChao& 阅读(2264) 评论(0) 推荐(0) 编辑
摘要:生成RSA证书: openssl方式生成 生成私钥 生成公钥 Go代码方式生成 RSA数据加/解密 阅读全文
posted @ 2020-03-18 12:44 ZhiChao& 阅读(16774) 评论(0) 推荐(0) 编辑
摘要:golang的交叉编译要保证golang版本在1.5以上,本解决方案实例代码1.9版本执行的。 这里用到了两个变量: GOOS:目标操作系统 GOARCH:目标操作系统的架构 OS | ARCH | OS Version | | linux | 386 / amd64 / arm | = Linux 阅读全文
posted @ 2020-03-18 12:03 ZhiChao& 阅读(429) 评论(0) 推荐(0) 编辑
摘要:默认指针类型 | 类型 | 名称 | 长度 | 默认值 | | | | | | | pointer | 指针 | | nil | | array | 数组 | | 0 | | slice | 切片 | | nil | | map | 字典 | | nil | | struct | 结构体 | 1. 阅读全文
posted @ 2020-03-17 13:28 ZhiChao& 阅读(376) 评论(0) 推荐(0) 编辑
摘要:网络基本概念 网络编程的目的:直接或间接地通过网络协议与其他计算机进行通讯 网络编程中两个主要问题: 如何准确定位网络上一台或多台主机(通过 IP 地址) 找到主机后如何进行数据传输(有 OSI 模型和 TCP/IP 模型) OSI 模型将网络分为 7 层,过于理想化,未能广泛推广 TCP/IP 是 阅读全文
posted @ 2020-03-17 13:27 ZhiChao& 阅读(430) 评论(0) 推荐(0) 编辑
摘要:Go 自带了测试框架和工具,在 testing 包中,以便完成单元测试(T 类型)和性能测试(B 类型)。一般测试代码放在 文件中,与被测代码放于同一个包中。 单元测试 测试函数名称格式是: ,即以 Test 开头,跟上非小写字母开头的字符串。每个测试函数都接受一个 类型参数,用于输出信息或中断测试 阅读全文
posted @ 2020-03-17 13:24 ZhiChao& 阅读(931) 评论(0) 推荐(0) 编辑
摘要:在 Golang 中没有 class,使用 struct 实现 class 的思想 1. 结构体的定义和初始化 结构体定义: 结构体初始化 2. 结构体参数 结构体作为函数的参数传递(值和指针传递不一样) 3. 结构体内存结构 一个结构体,会占用一段连续的内存空间 4. 构造函数 go 语言中没有构 阅读全文
posted @ 2020-03-17 13:18 ZhiChao& 阅读(390) 评论(0) 推荐(0) 编辑
摘要:1. 简介 go 没有面向对象语法等的要求 go 语言对于面向对象的设计非常简洁而优雅 没有封装(让数据更加安全,例如年龄不能是负的)、继承(减少代码冗余,父类和子类)、多态(可以产出不同的实例)这些概念,但同样通过别的方式实现这些特性 封装:通过方法实现 继承:通过匿名字段实现 多态:通过接口实现 阅读全文
posted @ 2020-03-17 13:15 ZhiChao& 阅读(399) 评论(0) 推荐(0) 编辑
摘要:注释的意义 注释可以帮我们很好的完成文档的工作,写得好的注释可以方便我们以后的维护。 /\ \ / 的块注释和 // 的单行注释两种注释风格, 在我们的项目中为了风格的统一,全部使用单行注释,注释的质量决定了生成的文档的质量。 下面从包注释、结构体(接口)注释、函数(方法)注释、代码逻辑注释以及注释 阅读全文
posted @ 2020-03-17 13:14 ZhiChao& 阅读(21254) 评论(0) 推荐(2) 编辑
摘要:字符串的原理 字符串底层就是一个 字符串是由 组成 字符串中的字符是不能直接修改的 类型用于表示 的字符 如果是一个中文字符串不能将其转换为 数组修改,因为一个中文占 3 个字符 字符串操作 golang 中字符串操作可以通过 和`strconv`两个包来实现 求字符串长度 字符串 s 中是否包含 阅读全文
posted @ 2020-03-17 13:12 ZhiChao& 阅读(414) 评论(0) 推荐(0) 编辑
摘要:1. 切片的定义和初始化 切片是基于数组类型的封装,非常灵活,可以自动扩容 切片是真正意义上的动态数组,而且是一个引用类型,切片指向一个底层数组 定义切片 创建切片方式 2. 切片操作 | 操作 | 含义 | | | | | s[n] | 切片 s 中索引位置为 n 的项 | | s[:] | 从切 阅读全文
posted @ 2020-03-17 13:11 ZhiChao& 阅读(291) 评论(0) 推荐(1) 编辑
摘要:反射是指程序运行期间对程序本身进行访问和修改的能力 变量的内在机制 变量包含类型信息和值信息 类型信息:是静态的元信息,是预先定义好的 值信息:是程序运行过程中动态改变的 反射的使用 reflect 包封装了反射相关的方法 获取类型信息:reflect.TypeOf,是静态的 获取值信息:refle 阅读全文
posted @ 2020-03-17 13:10 ZhiChao& 阅读(420) 评论(0) 推荐(0) 编辑
摘要:1. 选择结构 if 语句 if else else if 写法 2 在 java 和 js 等其他语言中 语句中需要添加 来终止当前 语句的执行,如果不写 则会自动穿透到下一个 语句块。但是在 go 语言中每个 语句结束默认 ,不会穿透到下一个 语句块,如果要想使当前 语句块穿透到下一个 语句块, 阅读全文
posted @ 2020-03-17 13:09 ZhiChao& 阅读(326) 评论(0) 推荐(0) 编辑
摘要:1. map 的定义和初始化 Map 是 go 内置的数据结构,是一种无序的键值对的集合,可以通过 key 快速找到 value 的值 Map 必须初始化才能使用,否则报错 定义 Map 创建 map 初始化 map 2. 键值操作 3. 遍历 4. 其他操作 查找某个键是否存在 对无序的 map 阅读全文
posted @ 2020-03-17 13:07 ZhiChao& 阅读(353) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示