Go 微服务开发框架DMicro设计思路详解
目录背景概述架构设计理念面向接口设计会话 Session消息 Message协议 Proto编码 Codec连接 Socket有机的组合插件 Plugin组件未来展望背景DMicro 诞生的背景,是因为我写了 10...
目录背景概述架构设计理念面向接口设计会话 Session消息 Message协议 Proto编码 Codec连接 Socket有机的组合插件 Plugin组件未来展望背景DMicro 诞生的背景,是因为我写了 10...
目录前言结构体内存布局结构体大小内存对齐总结前言结构体在Go语言中是一个很重要的部分,在项目中会经常用到,大家在写Go时有没有注意过,一个struct所占的空间不一定等于各个字...
目录背景测试程序一、为gc预留空间方案二、调整gc参数背景golang版本:1.16之前遇到的问题,docker启动时禁用了oom-kill(kill后服务受损太大),导致golang内存使用接近docker上限后...
我们先看一个简单的例子,我们自定义一个错误,用来把多个错误放在一起输出:type CustomError struct {
errors []string
}func (c *CustomError) Add(err string) {
c.errors =...
目录一、背景二、官网代码示例三、锁的实现一、背景在kubernetes的世界中,很多组件仅仅需要一个实例在运行,比如controller-manager或第三方的controller,但是为了高可用性,需要...
目录进程内加锁trylock基于redis的setnx基于zk基于etcdredlock如何选择在单机程序并发或并行修改全局变量时,需要对修改行为加锁以创造临界区。为什么需要加锁呢?可以看看下段...
目录1. 引言2.分析过程2.1 s[:]的方式截取元素2.2 append的方式截取元素3. 结论浅析golang切片截取(删除)功能1. 引言golang的切片被认为是和C++的vector容器类似,都可以认为是...
目录1.strings.Builder结构体1.1strings.Builder结构体1.2Write方法1.3WriteByte方法1.4WriteRune方法1.5.WriteString方法1.6String方法1.7Len方法1.8Cap方法1.9Reset方法1...
目录前言Improvements1. Genesis (Runes)2. Bytes3. Remainder4. Masking5. Masking Improved6. Source7. Utilizing strings.Builder8. "Mimicing" strings.Builder with p...
目录Go素数筛选分析1. 素数筛选介绍2. 代码分析3. 代码验证4. 总结Go素数筛选分析1. 素数筛选介绍学习Go语言的过程中,遇到素数筛选的问题。这是一个经典的并发编程问题,是某...
目录正文GORM 写接口原理CreateSaveUpdate & UpdatesFirstOrInitFirstOrCreate方案一:FirstOrCreate + Assign方案二:Upsert总结正文CreateOrUpdate 是业务开发中很常见的场景...
目录1、字符串编码2、字符串遍历3、字符串中的字符数4、字符串trim5、字符串连接6、字节切片转字符串1、字符串编码在go中rune是一个unicode编码点。我们都知道UTF-8将字符...
目录引言String底层stringStruct结构引言本人因为种种原因(说来听听),放弃大学学的java,走上了golang这条路,本着干一行爱一行的情怀,做开发嘛,不能只会使用这门语言,所以打算开一个...
目录1、Go语言简介2、安装Git3、Go 工具链(编译器)安装3.1、环境变量GOROOT3.2、环境变量GOPATH3.3、Go常用命令4、包管理4.1、go module4.2、gopm5、编写Go语言代码的IDE或编辑...
目录CAS算法(compare and swap)CAS是如何运行的Go中的CAS源码CAS的缺陷CAS算法(compare and swap)CAS算法涉及到三个操作数需要读写的内存值V进行比较的值A拟写入的新值B当且仅...
目录停止信号任务定时解耦生产方和消费方控制并发数停止信号channel 用于停止信号的场景还是挺多的,经常是关闭某个 channel 或者向 channel 发送一个元素,使得接收 channel...
目录依赖注入是什么开源选型wireprovidersinjectors类型区分总结依赖注入是什么Dependency Injection is the idea that your components (usually structs in go) should r...
目录1.channel 简介2.channel 内部结构3.创建channel4.发送数据5.接收数据6.关闭channel7.总结1.channel 简介Go语言有个很出名的话是“以通信的手段来共享内存”...
目录1.数组和切片有什么区别2.拷贝大切片一定比拷贝小切片代价大吗3.切片的深浅拷贝4.零切片 空切片 nil切片是什么4.1零切片4.2nil切片4.3空切片5.切片的扩容策略1.17之前1...
目录前言基本规范基本语法package定义包import 导入包定义Message定义Service前言最近项目是采用微服务架构开发的,各服务之间通过gPRC调用,基于ProtoBuf序列化协议进行数据通...
目录Python 中的 reverse 函数实现一个 reverse 反转函数利用两个切片实现前后两两原地交换反转为原切片的副本总结Python 中的 reverse 函数Go 语言不像其他语言如 Python,...
目录简介gopacket是如何构建的?演示demo准备静态库指定编译参数简介最近碰到一个问题,有一个流量采集的组件中使用到了github.com/google/gopacket 这个库,这个库使用一切正常,...
目录如何在Go中循环字符串如何在Go中循环map结构如何在Go中循环Struct数组是存储类似类型数据的强大数据结构。您可以通过索引识别和访问其中的元素。在Golang中,您可以通过...
目录golang的defer什么是defer理解deferdefer什么时间执行(defer、 return、返回值 三者的执行顺序)defer输出的值,就是定义时的值。而不是defer真正执行时的变量值(注意引用情...
目录Go-RESTful实现下载功能下载实现思路文件系统IO:网络IO:服务建立配置路由总结Go-RESTful实现下载功能下载实现思路下图为实现一个文件下载所需要考虑的因素:文件系统IO:●...