手撸golang 创建型设计模式 单例模式

手撸golang 创建型设计模式 单例模式缘起最近复习设计模式拜读谭勇德的<<设计模式就该这样学>>本系列笔记拟采用golang练习之单例模式单例模式(Singleton Pattern)指确保一个类在任何情况下都绝对只有一个实例,并提供一个全局访问点,属于创建型设计模式。_三种常见单例模式饿汉式单例类/模块初始化时立即创建的静态全局单例双重检查单例提供获取单例的方法在该方法中通过双重检查静态实例是否为null, 以延迟初始化全局单例首次检查不加同步锁, 二次检查加同步锁, 以保证单例只创建一次...阅读全文

Segmentfault 2021-02-03 23:32:32 .container .car 等

手撸golang 创建型设计模式 抽象工厂

手撸golang 创建型设计模式 抽象工厂缘起最近复习设计模式拜读谭勇德的<<设计模式就该这样学>>本系列笔记拟采用golang练习之抽象工厂抽象工厂模式(Abstract Factory Pattern)指提供一个创建一系列相关或相互依赖对象的接口,无须指定它们具体的类。意思是客户端不必指定产品的具体类型,创建多个产品族中的产品对象。_抽象工厂vs工厂方法抽象工厂是创建一系列对象, 且这些对象之间可能存在相关性. 工厂方法通常是创建单一类别的对象场景某智能家居场景, 需要通过app统一控制各种...阅读全文

Segmentfault 2021-02-03 19:32:33 .container .car 等

手撸golang 创建型设计模式 工厂方法

手撸golang 创建型设计模式 工厂方法缘起最近复习设计模式拜读谭勇德的<<设计模式就该这样学>>该书以java语言演绎了常见设计模式本系列笔记拟采用golang练习之工厂方法工厂方法模式(Factory Method Pattern)又叫作多态性工厂模式,指定义一个创建对象的接口,但由实现这个接口的类来决定实例化哪个类,工厂方法把类的实例化推迟到子类中进行。在工厂方法模式中,不再由单一的工厂类生产产品,而是由工厂类的子类实现具体产品的创建。因此,当增加一个产品时,只需增加一个相应的工厂类的子...阅读全文

Segmentfault 2021-02-03 18:32:34 .container .car 等

手撸golang 创建型设计模式 简单工厂

手撸golang 创建型设计模式 简单工厂缘起最近复习设计模式拜读谭勇德的<<设计模式就该这样学>>该书以java语言演绎了常见设计模式本系列笔记拟采用golang练习之简单工厂简单工厂模式(Simple Factory Pattern)又叫作静态工厂方法模式(Static Factory Method Pattern),简单来说,简单工厂模式有一个具体的工厂类,可以生成多个不同的产品,属于创建型设计模式。_场景某智能家居场景, 需要通过app统一控制智能照明灯的开关智能灯可以打开 - Open...阅读全文

Segmentfault 2021-02-03 17:32:38 .container .car 等

3.树莓派常用软件&篇程语言&篇程环境(32位/64位)

1.软件Thunderbird(电子邮件)安装:sudo apt-get install thunderbirdLibreOffice(办公软件)安装:sudo apt-get install libreoffice(中文包:sudo apt-get installlibreoffice-l10n-zh-cn)Rtorrent(种子下载器)安装:sudo apt-get install rtorrentSynaptic(软件包管理器):sudo apt-get install synapticD...阅读全文

简书 2021-02-02 15:32:39 唐剑仙

又掉进slice切片的坑里面了

最近在写一个函数时遇到了一个不知名的错误,排查了很久才发现了问题,这里做个笔记,下面以简短的代码复现一个这个问题 ```go func main() { s := [5]int{1, 2, 3, 4, 5} s1 := s[1:3] s2 := s[2:5] fmt.Println(s1,s2)//[2 3] [3 4 5] s1=append(s1,9) fmt.Println(s1,s2)//? } ``` 当slice1在append一个元素...阅读全文

Go语言中文网 2021-02-02 14:08:27 TonoT

golang etcd clientv3踩坑,rpc error: code = 1 desc = "context canceled"以及github.com\coreos\etcd@v3.3...

golang使用etcd,使用的库为: github.com/coreos/etcd/clientv3 或者 go.etcd.io/etcd 这两个库其实都是一样的 直接说坑所在,上代码 package main import ( "context" "log" "time" "github.com/coreos/etcd/clientv3" ) func main() { conf := clientv3.Config{ Endpoints: []string{"127.0.0.1:2379"...阅读全文

简书 2021-02-02 11:32:40 哆啦在这A梦在哪

手撸golang 架构设计原则 合成复用原则

手撸golang 架构设计原则 合成复用原则缘起最近复习设计模式拜读谭勇德的<<设计模式就该这样学>>该书以java语言演绎了常见设计模式本系列笔记拟采用golang练习之合成复用原则合成复用原则(Composite/Aggregate Reuse Principle, CARP)指尽量使用对象组合(has-a)或对象聚合(contanis-a)的方式实现代码复用,而不是用继承关系达到代码复用的目的。合成复用原则可以使系统更加灵活,降低类与类之间的耦合度,一个类的变化对其他类造成的影响相对较小。...阅读全文

Segmentfault 2021-02-03 15:32:32 .container .car 等

手撸golang 架构设计原则 里氏替换原则

手撸golang 架构设计原则 里氏替换原则缘起最近复习设计模式拜读谭勇德的<<设计模式就该这样学>>该书以java语言演绎了常见设计模式本系列笔记拟采用golang练习之里氏替换原则里氏替换原则(Liskov Substitution Principle, LSP):如果对每一个类型为T1的对象O1都有类型为T2的对象O2使得以T1定义的所有程序P在所有对象O1都替换成O2时程序P的行为没有发生变化那么类型T2是类型T1的子类型_可以理解为: 所有引用父类的地方必须能透明地使用其子类对象子类对...阅读全文

Segmentfault 2021-02-03 10:32:33 .container .car 等

手撸golang 架构设计原则 迪米特法则

手撸golang 架构设计原则 迪米特法则缘起最近复习设计模式拜读谭勇德的<<设计模式就该这样学>>该书以java语言演绎了常见设计模式本系列笔记拟采用golang练习之迪米特法则迪米特法则(Law of Demeter, LoD)又叫作最少知道原则(Least KnowledgePrinciple, LKP),指一个对象应该对其他对象保持最少的了解,尽量降低类与类之间的耦合。_场景TeamLeader每天需要查看未完成的项目任务数TeamLeader指派TeamMember进行任务统计Team...阅读全文

Segmentfault 2021-02-03 10:32:33 .container .car 等

手撸golang 架构设计原则 接口隔离原则

手撸golang 架构设计原则 接口隔离原则缘起最近复习设计模式拜读谭勇德的<<设计模式就该这样学>>本系列笔记拟采用golang练习之接口隔离原则接口隔离原则(Interface Segregation Principle, ISP)指用多个专门的接口,而不使用单一的总接口,客户端不应该依赖它不需要的接口。设计接口时,应当注意以下几点:(1)一个类对另一个类的依赖应该建立在最小接口上。(2)建立单一接口,不要建立庞大臃肿的接口。(3)尽量细化接口,接口中的方法尽量少。_场景设计一个动物接口不同...阅读全文

Segmentfault 2021-02-03 10:32:32 .container .car 等

手撸golang 架构设计原则 单一职责原则

手撸golang 架构设计原则 单一职责原则缘起最近复习设计模式拜读谭勇德的<<设计模式就该这样学>>本系列笔记拟采用golang练习之单一职责原则单一职责原则(Simple Responsibility Principle, SRP)指不要存在一个以上导致类变更的原因。假设有一个Class负责两个职责,一旦发生需求变更,修改其中一个职责的逻辑代码,有可能会导致另一个职责的功能发生故障。分别用两个Class来实现两个职责,进行解耦。总体来说就是一个Class、Interface、Method只负...阅读全文

Segmentfault 2021-02-03 10:32:32 .container .car 等

手撸golang 架构设计原则 依赖倒置原则

golang 架构设计原则 依赖倒置原则缘起最近复习设计模式拜读谭勇德的<<设计模式就该这样学>>该书以java语言演绎了常见设计模式本系列笔记拟采用golang练习之依赖倒置原则依赖倒置原则(Dependence Inversion Principle, DIP)指设计代码结构时,高层模块不应该依赖底层模块,二者都应该依赖其抽象。抽象不应该依赖细节,细节应该依赖抽象。常见的依赖注入方式有: 方法参数注入, 构造器参数注入, setter方法注入_场景线上学校有一系列课程用户可选择若干门课程进行...阅读全文

Segmentfault 2021-02-03 10:32:32 .container .car 等

手撸golang 架构设计原则 开闭原则

golang 架构设计原则 开闭原则缘起最近复习设计模式拜读谭勇德的<<设计模式就该这样学>>该书以java语言演绎了常见设计模式本系列笔记拟采用golang练习之开闭原则开闭原则(Open-Closed Principle, OCP)指一个软件实体如类、模块和函数应该对扩展开放,对修改关闭。所谓开闭,也正是对扩展和修改两个行为的一个原则。实现开闭原则的核心思想就是面向抽象编程。场景某线上学习平台, 提供系列课程产品(接口: ICourse)每个课程有id,name,price等属性现在平台搞促...阅读全文

Segmentfault 2021-02-03 10:32:32 .container .car 等

手撸golang 四则运算 计算器 yacc 归约

手撸golang 四则运算 计算器 yacc 归约缘起最近拜读前桥和弥[日]的<<自制编程语言>>开头一章便是教读者使用lex/yacc工具制作四则运算器其中yacc的移进/归约/梯度下降的思想很有启发于是使用golang练习之目标制作一个四则运算器, 从os.Stdin读入一行表达式, 然后输出计算过程和结果支持+ - * /支持左右括号支持负数难点记号扫描(lexer)逐字符扫描记号单字符记号可直接识别, + - * / ( )多字符记号, 此处只有浮点数, 通过有限状态的转换进行识别<IN...阅读全文

Segmentfault 2021-02-03 10:32:32 .container .car 等

boomer-环境配置

一、安装go 参考链接: https://studygolang.com/articles/14812 1.1 删除低版本go 使用root权限,删除当前已经安装的低版本go # 之前安装的1.10,如果直接升级到1.13在后续操作中会有异常 # 需要先清理环境 sudo rm -rf /usr/local/go 删除低版本go.png 1.2 下载1.13版本的go 从官方地址:https://golang.org/dl/ 上下载合适的 二进制发行版 # 使用ops权限安装,这样后续ops方便...阅读全文

简书 2021-02-01 23:32:40 bonnie_xing

手撸golang 结构型设计模式 门面模式

手撸golang 结构型设计模式 门面模式 缘起 最近复习设计模式 拜读谭勇德的<<设计模式就该这样学>> 本系列笔记拟采用golang练习之 门面模式 门面模式(Facade Pattern)又叫作外观模式,提供了一个统一的接口,用来访问子系统中的一群接口。其主要特征是定义了一个高层接口,让子系统更容易使用,属于结构型设计模式。 _ 场景 某在线商城, 推出了积分兑换礼品的功能 兑换礼品有几个步骤, 涉及到若干子系统: 积分系统, 检查用户积分是否足够 库存系统, 检查礼品是否有库存 物流系统...阅读全文

golang中自定义包

导出 golang中默认以文件夹名作为包名,导入的文件的路径为$GOPATH/src 例如我们在 $GOPATH/src下面建立一个gopackage的一个文件夹,下面建立一个abc.go的文件,文件内容如下 package gopackage import "fmt" const X = 5 var Y = 10 // Add int 加 func Add(x, y int) int { return x + y } // Minus int 减 func Minus(x, y int) in...阅读全文

简书 2021-02-01 23:32:38 小刀田田