
Go常见设计模式
设计模式是为了语言擦屁股。不同语言由于自身优劣不同,常见的设计模式及其实现有些小差别。 Go的思想是“组合优于继承”,不依托于复杂的类层次来实现多态,推荐使用Interface、高阶函数(行为参数化)、Goroutine/Channel 来实现各类设计模式。 策略模式 与大多数oop语言相同,go策略模式也依托于接口来实现。 在实际工程中,我们经常会搭配策略模式和简单工厂模式。对于不...

设计模式是为了语言擦屁股。不同语言由于自身优劣不同,常见的设计模式及其实现有些小差别。 Go的思想是“组合优于继承”,不依托于复杂的类层次来实现多态,推荐使用Interface、高阶函数(行为参数化)、Goroutine/Channel 来实现各类设计模式。 策略模式 与大多数oop语言相同,go策略模式也依托于接口来实现。 在实际工程中,我们经常会搭配策略模式和简单工厂模式。对于不...
传统IO 背景:传统IO场景下,服务器把磁盘文件网络IO发送给客户端Socket read(file_fd, user_buf, ...); // 读文件到用户缓冲区 write(sock_fd, user_buf, ...); // 从用户缓冲区写到网络 这个过程中会发生很多次内核用户态切换: read() 磁盘→内核缓存(DMA读入) DMA:Direc...
请先安装 dotnet sdk 8.0或更高版本sdk 官方文档 https://www.datable.cn/docs/beginner 官方样例demo https://gitee.com/focus-creative-games/luban_examples 概念术语 一、表结构 上图是一张excel表。红框单元格声明该行类型,蓝框单元格为各类型对应的值。数据...
众所周知,Go不支持方法重载。我们如果想写一个 n -> n*n 的平方方法,最简单粗暴的方法就是针对不同的类型编写不同方法名但具有类似方法体的方法。 func SquareInt(n int) int{ return n*n } func SquareFloat(n float64) float64{ return n*n } 如果该场景只针对int\floa...
这段实习应该把什么东西写到简历上? 新体验 游戏项目与传统web项目的架构区别 Go语言本身:游戏服务器大多都已转型为go,而web项目的主体仍是java占大头。故在此讨论java与go的一些区别。go作为一门09年才正式发布的年轻语言,设计理念围绕“简洁”二字。其特点有:静态类型和编译型、跨平台、自动GC、原生并发支持、风格强统一、多范式编程。 ...
目标与原则 目标 分支职责清晰,避免混乱 提交记录可读、可追溯、可回滚 支持多人并行开发、快速发布与问题回溯 基本原则 一个分支只做一类事情 一个提交只解决一个问题 提交信息能“脱离上下文”被理解 永远不要直接在main/master/dev分支上开发 永远不要将dev分支的代码合并到自己的功能分支上 分支模型 主干分支(长...