随笔分类 -  Golang

摘要:前言 在1.4版本之前go的协程栈管理使用分段栈机制实现。实现方式:当检测到函数需要更多栈时,分配一块新栈,旧栈和新栈使用指针连接起来,函数返回就释放。 这样的机制存在2个问题: 多次循环调用同一个函数会出现“hot split”问题,例子:stacksplit.go 每次分配和释放都要额外消耗 为 阅读全文
posted @ 2022-04-05 16:25 林锅 阅读(411) 评论(0) 推荐(0) 编辑
摘要:什么是 map 维基百科里这样定义 map: In computer science, an associative array, map, symbol table, or dictionary is an abstract data type composed of a collection o 阅读全文
posted @ 2021-10-31 21:33 林锅 阅读(275) 评论(0) 推荐(0) 编辑
摘要:前言​ 在golang中有很多的数据结构是很常用的数据结构,比如array,slice,map等,其中最为常用的就是array和slice还有map了,理论上来讲array和slice在数据结构上是一种结构,都是顺序结构,但是由于array的固定长度特性,在有些时候对于需要动态的长度的使用情况很不友 阅读全文
posted @ 2021-10-31 18:07 林锅 阅读(314) 评论(0) 推荐(0) 编辑
摘要:它是一种基本类型,并且是一个不可改变的UTF-8字符序列 回过来看 GO 里面的字符串,字符也是根据英文和中文不一样,一个字符所占用的字节数也是不一样的,大体分为如下 2 种 英文的字符,按照ASCII 码来算,占用 1 个字节 其他的字符,包括中文字符在内的,根据不同字符,占用字节数是 2 -- 阅读全文
posted @ 2021-10-31 17:51 林锅 阅读(628) 评论(0) 推荐(0) 编辑
摘要:sync.Mutex是一个不可重入的排他锁。 这点和Java不同,golang里面的排它锁是不可重入的。当一个 goroutine 获得了这个锁的拥有权后, 其它请求锁的 goroutine 就会阻塞在 Lock 方法的调用上,直到锁被释放。 数据结构与状态机 sync.Mutex 由两个字段 st 阅读全文
posted @ 2021-10-31 11:52 林锅 阅读(644) 评论(0) 推荐(0) 编辑
该文被密码保护。
posted @ 2021-10-29 20:45 林锅 阅读(2) 评论(0) 推荐(0) 编辑
摘要:源码展示 这里展示了 net/http 包的两个接口的源码:ListenAndServe、Serve ListenAndServe接口做了以下事情: 设置地址类型 生成侦听器 开启Serve func (srv *Server) ListenAndServe() error { if srv.shu 阅读全文
posted @ 2021-10-28 11:39 林锅 阅读(98) 评论(0) 推荐(0) 编辑
摘要:Go 语言是一门简单、易学的编程语言,对于有编程背景的工程师来说,学习 Go 语言并写出能够运行的代码并不是一件困难的事情,对于之前有过其他语言经验的开发者来说,写什么语言都像自己学过的语言其实是有问题的,想要真正融入生态写出优雅的代码就一定要花一些时间和精力了解语言背后的设计哲学和最佳实践。 如果 阅读全文
posted @ 2021-10-26 16:05 林锅 阅读(248) 评论(0) 推荐(0) 编辑
摘要:GM模型 第一个M怎么来的?,G怎么找到对应的P? 1. 系统启动的时候,首先跑的是主线程,那第一个M应该就是主线程吧M1 2. 然后这个主线程会绑定第一个P1 3. 咱们写的main函数,其实是作为一个goroutine来执行的(雨痕说的) 4. 也就是第一个P1就有了一个G1任务,然后第一个M1 阅读全文
posted @ 2021-10-23 20:35 林锅 阅读(107) 评论(0) 推荐(0) 编辑
摘要:go-micro 支持很多通信协议:http、tcp、grpc等,支持的编码方式也很多有json、protobuf、bytes、jsonrpc等。也可以根据自己的需要实现通信协议和编码方式。go-micro 默认的通信协议是http,默认的编码方式是protobuf。 主要代码定义如下: // Cl 阅读全文
posted @ 2021-05-10 16:00 林锅 阅读(593) 评论(0) 推荐(0) 编辑
摘要:go-micro 支持很多通信协议:http、tcp、grpc等,支持的编码方式也很多有json、protobuf、bytes、jsonrpc等。也可以根据自己的需要实现通信协议和编码方式。go-micro 默认的通信协议是http,默认的编码方式是protobuf。 主要代码定义如下: type 阅读全文
posted @ 2021-05-10 11:27 林锅 阅读(275) 评论(0) 推荐(0) 编辑
摘要:broker是用于消息的订阅和发布,即异步处理,不过通常会使用队列方式替代,很少使用go-micro的broker 默认是http方式 // Broker is an interface used for asynchronous messaging. type Broker interface { 阅读全文
posted @ 2021-04-20 17:28 林锅 阅读(411) 评论(0) 推荐(0) 编辑
摘要:transport 用于服务之间的通信,自定义了socket接口,封装了Send、Recv、Close接口,可以有HTTP、NATS、RPC等实现,默认使用http type Message struct { Header map[string]string Body []byte } type S 阅读全文
posted @ 2021-04-20 15:37 林锅 阅读(304) 评论(0) 推荐(0) 编辑
摘要:codec 用于各种信息的加解密,具体接口如下: // Codec encodes/decodes various types of messages used within go-micro. // ReadHeader and ReadBody are called in pairs to re 阅读全文
posted @ 2021-04-19 17:34 林锅 阅读(129) 评论(0) 推荐(0) 编辑
摘要:selecor是一种基于registry的选择服务节点和标记它们状态的的机制,有Random、RoundRobin两种策略,代码如下: // Selector builds on the registry as a mechanism to pick nodes // and mark their 阅读全文
posted @ 2021-04-19 16:22 林锅 阅读(377) 评论(0) 推荐(0) 编辑
摘要:go-micro的服务发现插件有mdns、consul、etcd等,默认使用mdns server、client的服务注册和发现的逻辑如下图: go-micro在客户端做的负载,典型的Balancing-aware Client模式。 服务端把服务的地址信息保存到Registry, 然后定时的心跳检 阅读全文
posted @ 2021-04-18 16:16 林锅 阅读(1690) 评论(0) 推荐(0) 编辑
摘要:1.1.1. go-micro简介 Go Micro是一个插件化的基础框架,基于此可以构建微服务,Micro的设计哲学是可插拔的插件化架构 在架构之外,它默认实现了consul作为服务发现(2019年源码修改了默认使用mdns),通过http进行通信,通过protobuf和json进行编解码 1.1 阅读全文
posted @ 2021-02-08 10:48 林锅 阅读(1106) 评论(0) 推荐(0) 编辑
摘要:一、安装 https://github.com/go-delve/delve 直接去github上查看各种系统的安装教程,应该基本上都是 go get 二、命令 1 Available Commands: 2 attach Attach to running process and begin de 阅读全文
posted @ 2020-09-15 20:28 林锅 阅读(1320) 评论(0) 推荐(0) 编辑
摘要:进程 进程是系统资源分配的最小单位, 系统由一个个进程(程序)组成。一般情况下,包括文本区域(text region)、数据区域(data region)和堆栈(stack region)。 文本区域存储处理器执行的代码 数据区域存储变量和进程执行期间使用的动态分配的内存; 堆栈区域存储着活动过程调 阅读全文
posted @ 2020-03-22 12:08 林锅 阅读(317) 评论(0) 推荐(1) 编辑
摘要:微服务:https://github.com/micro/go-micro https://github.com/istio/istio 监控:https://github.com/prometheus/prometheus 权限:https://github.com/casbin/casbin R 阅读全文
posted @ 2020-03-07 23:22 林锅 阅读(1708) 评论(0) 推荐(1) 编辑

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