摘要: 书卷多情似故人,晨昏忧乐每相亲。 ——(明)于谦《观书》 阅读全文
posted @ 2022-03-12 16:51 EthanWell 阅读(141) 评论(0) 推荐(0) 编辑
摘要: 由于有时候跑脚本几个小时看不到进度,所以想着写一个简单的命令行的进度条。类似下面这样的 其中的原理主要是\r回车符(将光标移动到行首)。这样的话就可以重新打印一行以覆盖之前的那一行。 func main() { for i := 0; i < 10; i++ { fmt.Printf("\r#### 阅读全文
posted @ 2022-03-12 13:47 EthanWell 阅读(1914) 评论(0) 推荐(0) 编辑
摘要: go语言在设计上确保了一些安全的属性,限制了程序可能出错的途径。例如严格的类型转换规则。但也使得很多实现的细节无法通过go程序来访问,例如对于聚合类型(如结构体)的内存布局,或者一个函数对应的机器码。 这里我们将讨论unsafe包,它是由编译器实现的,实现了对语言内置特性的访问功能,这些特性一般是不 阅读全文
posted @ 2022-03-02 00:15 EthanWell 阅读(667) 评论(0) 推荐(0) 编辑
摘要: 我们在设计产品的时候通常都会遇到消息通知的时候,比如用户下单支付成功,比如用户有站内信来可以实时通知。而http是单向的,客户端请求,服务端返回,这次请求就已经结束。而websocket可以保持连接实现长连接,在遇到通知时往往使用websocket来达到服务端主动向客户端发送消息的目的。 我们的目标 阅读全文
posted @ 2022-02-23 00:16 EthanWell 阅读(4254) 评论(0) 推荐(2) 编辑
摘要: 应用程序在运行时,总是会出现一些你意想不到的问题,例如:CPU使用率过高,内存不断增大(疑似内存泄露),或者是Goroutine数量不断增加(goroutine泄露)。那么在这些问题出现时如何进行排查呢,这里介绍pprof工具。 pprof是什么 pprof是析性能分析数据的工具,可以生成可视化的文 阅读全文
posted @ 2022-02-12 00:55 EthanWell 阅读(1380) 评论(0) 推荐(0) 编辑
摘要: 解释器模式是什么 解释器是一种行为型设计模式,指给分析对象定义一个语言,并定义该语言的文法表示,再设计一个解析器来解释语言中的句子。也就是说,用编译语言的方式来分析应用中的实例。这种模式实现了文法表达式处理的接口,该接口解释一个特定的上下文。 为什么用解释器模式 在软件开发中,会遇到有些问题多次重复 阅读全文
posted @ 2022-04-25 22:54 EthanWell 阅读(157) 评论(0) 推荐(0) 编辑
摘要: 访问者模式是什么 访问者是一种行为型设计模式, 允许你在不修改已有代码的情况下向已有类层次结构中增加新的行为。 为什么用访问者模式 访问者模式建议将新行为放入一个名为访问者的独立类中,而不是试图将其整合到已有类中。现在需要执行操作的原始对象将作为参数被传递给访问者中的方法, 让方法能访问对象所包含的 阅读全文
posted @ 2022-04-25 21:28 EthanWell 阅读(117) 评论(0) 推荐(0) 编辑
摘要: 状态模式是什么 状态模式是一种行为设计模式,让你能在一个对象的内部状态变化时改变其行为,使其看上去就像改变了自身所属的类一样。 为什么要用状态模式 如果对象需要根据自身当前状态进行不同行为,同时状态的数量非常多且与状态相关的代码会频繁变更的话,可使用状态模式。相似状态和基于条件的状态机转换中存在许多 阅读全文
posted @ 2022-04-24 21:59 EthanWell 阅读(122) 评论(0) 推荐(0) 编辑
摘要: 中介模式是什么 中介者模式是一种行为设计模式,用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以相互独立地改变它们之间地交互。 为什么用中介模式 中介者模式建议你停止组件之间的直接交流并使其相互独立。这些组件必须调用特殊的中介者对象,通过中介者对象重 阅读全文
posted @ 2022-04-23 23:05 EthanWell 阅读(106) 评论(0) 推荐(0) 编辑
摘要: 备忘录模式是什么 备忘录模式是一种行为设计模式, 允许在不暴露对象实现细节的情况下保存和恢复对象之前的状态。 为什么要用备忘录模式 当你需要创建对象状态快照来恢复其之前的状态时,可以使用备忘录模式。或者当直接访问对象的成员变量、获取器或设置器将导致封装被突破时, 可以使用该模式。 备忘录模式怎么实现 阅读全文
posted @ 2022-04-23 13:16 EthanWell 阅读(98) 评论(0) 推荐(0) 编辑
摘要: 迭代器模式是什么 迭代器模式是一种行为设计模式, 让你能在不暴露集合底层表现形式 (列表、 栈和树等) 的情况下遍历集合中所有的元素。 为什么用迭代器模式 当集合背后为复杂的数据结构, 且你希望对客户端隐藏其复杂性时(出于使用便利性或安全性的考虑),可以使用迭代器模式。迭代器封装了与复杂数据结构进行 阅读全文
posted @ 2022-04-19 22:28 EthanWell 阅读(118) 评论(0) 推荐(0) 编辑
摘要: 策略模式是什么 策略模式是一种行为设计模式, 它能让你定义一系列算法, 并将每种算法分别放入独立的类中, 以使算法的对象能够相互替换。 为什么用策略模式 当你想使用对象中各种不同的算法变体,并希望能在运行时切换算法时,可使用策略模式。策略模式让你能将不同行为抽取到一个独立类层次结构中, 并将原始类组 阅读全文
posted @ 2022-04-17 17:04 EthanWell 阅读(143) 评论(0) 推荐(0) 编辑
摘要: 责任链模式是什么 责任链模式是一种行为设计模式, 允许你将请求沿着处理者链进行发送。 收到请求后, 每个处理者均可对请求进行处理, 或将其传递给链上的下个处理者。 为什么要用责任链模式 如果有多个对象可以处理同一个请求,具体哪个对象处理该请求由运行时刻自动确定。或者所需处理者及其顺序必须在运行时进行 阅读全文
posted @ 2022-04-16 15:17 EthanWell 阅读(95) 评论(0) 推荐(0) 编辑
摘要: 命令模式是什么 命令模式是一种行为型设计模式,它可以将一个请求封装为一个对象,使发出请求的责任和执行请求的责任分割开。这样两者之间通过命令对象进行沟通,这样方便将命令对象进行储存、传递、调用、增加与管理。 为什么用命令模式 在软件开发系统中,“方法的请求者”与“方法的实现者”之间经常存在紧密的耦合关 阅读全文
posted @ 2022-04-13 22:21 EthanWell 阅读(98) 评论(0) 推荐(0) 编辑
摘要: 模板方法模式是什么 模版方法模式是设计模式中的行为型的一种模式,它在基类中定义了一个算法的框架,允许子类在不修改结构的情况下重写算法的特定步骤。 为什么要用模板方法模式 模板方法将整个算法转换为一系列独立的步骤,以便子类能对其进行扩展,同时还可让超类中所定义的结构保持完整。或者当多个类的算法步骤一致 阅读全文
posted @ 2022-04-12 22:27 EthanWell 阅读(114) 评论(0) 推荐(0) 编辑