鱼弦
【gzh:红尘灯塔,CSDN博客专家、内容合伙人、新星导师、全栈领域优质创作者
、51CTO(Top红人+专家博主)
】有时间会陆续对不同付费专栏做视频教学,敬请关注!!!
展开
-
Go 设计模式中观察者模式
观察者模式(Observer Pattern)是一种行为型设计模式,它定义了一种一对多的依赖关系,让多个观察者对象同时监听一个主题对象,当主题对象发生变化时,会通知所有观察者对象进行相应的更新。观察者模式可以将两个方面的变化封装在各自的对象中,使其相互独立,提高系统的可维护性和可扩展性。当一个对象的状态变化需要通知其他多个对象,并且这些对象的操作依赖于该状态变化时,可以考虑使用观察者模式。主题对象负责管理观察者对象的注册、注销和通知操作,而观察者对象则负责定义更新的逻辑。在状态变化时,它通过调用观察者的。原创 2023-08-25 13:00:00 · 115 阅读 · 0 评论 -
Go 设计模式中外观模式
外观模式(Facade Pattern)是一种结构型设计模式,提供了一个统一的接口,用于访问子系统中的一组接口。外观模式隐藏了子系统的复杂性,使得客户端可以通过简单的接口与子系统进行交互,而不需要了解子系统的内部实现细节。外观模式的核心思想是简化客户端与子系统之间的交互,并降低客户端对子系统的依赖。jQuery:jQuery 是一个流行的 JavaScript 库,它提供了一个简化的接口,用于处理浏览器兼容性和操作 DOM。是外观类,封装了一组子系统的接口,负责将客户端的请求转发给适当的子系统对象。原创 2023-08-13 21:26:15 · 82 阅读 · 0 评论 -
Go 设计模式中模板模式
父类中定义了一个模板方法,该方法封装了算法的整体结构,它通常是一个具体方法,内部包含了多个抽象方法和具体方法。抽象方法由子类实现,用于定义算法的具体步骤,而具体方法在父类中已经实现好,用于提供算法中的通用逻辑。模板模式通过将通用的算法流程放在父类中,并通过抽象方法和钩子方法来让子类实现具体的步骤,从而实现代码复用和扩展性。,并实现了其中的抽象方法。某些Web框架中的控制器类通常也使用模板模式,其中定义了处理请求的整体结构,而具体的请求处理方法则由子类实现。是抽象类,定义了算法的整体结构,并包含了模板方法。原创 2023-08-17 18:00:00 · 156 阅读 · 0 评论 -
Go 设计模式中代理模式
代理对象在客户端和真实对象之间起到了中介的作用,客户端通过代理对象来间接访问真实对象。代理对象可以对真实对象的访问进行控制,例如,可以在访问前后执行一些附加操作,如权限验证、缓存、日志记录等。代理对象和真实对象实现相同的接口,客户端通过代理对象来访问真实对象,从而可以在访问前后进行一些额外的操作。Java中的动态代理(Dynamic Proxy)机制也是代理模式的一种应用,它允许在运行时创建代理对象并动态地处理对真实对象的调用。是代理对象,它持有一个真实对象的引用,并在访问前后执行一些额外的操作。原创 2023-08-15 13:30:00 · 194 阅读 · 0 评论 -
Go 设计模式中备忘录模式
备忘录模式的核心思想是将对象的状态保存到一个备忘录对象中,然后可以根据需要恢复到之前的状态。当需要保存对象的状态,并且希望在之后的某个时间点恢复到先前的状态时,可以使用备忘录模式。备忘录模式可以捕获对象的内部状态并存储到备忘录对象中,然后可以根据需要恢复到之前的状态。备忘录模式通过封装对象的状态到备忘录对象中,可以保护对象的封装性,使得外部无法直接访问和修改对象的状态。备忘录模式可以保存对象的多个状态,并且可以根据需要回滚到先前的状态或者重新应用之前的状态。是备忘录的角色,用于存储发起人对象的内部状态。原创 2023-08-23 13:30:00 · 46 阅读 · 0 评论 -
Go 设计模式中建造者模式应用
这个例子中,我们通过建造者模式将创建一个复杂的游戏角色对象的过程分解成了多个步骤,并且将具体的实现细节隐藏在了 GameRoleBuilder 中。这样,我们就可以更加灵活地创建游戏角色对象,并且在需要添加新的属性或修改构建流程时,只需要修改 GameRoleBuilder 即可,不会影响到其他代码。建造者模式是一种创建型模式,用于将一个复杂对象的构建与其表示分离。在该模式中,一个单独的建造器对象负责创建与组装产品对象。下面介绍一个简单的例子,说明如何在 Go 中使用建造者模式来创建复杂对象。原创 2023-03-27 16:22:19 · 135 阅读 · 1 评论 -
Go 设计模式中解释器模式
解释器模式的核心思想是将语言的文法表示为一个抽象语法树(Abstract Syntax Tree, AST),并通过递归地解释执行树上的节点来实现对语言的解释。解释器模式(Interpreter Pattern)是一种行为型设计模式,用于定义一种语言的文法表示,并解释执行该语言中的句子。当需要实现一种语言的解释器,对语言中的句子进行解释和执行时,可以使用解释器模式。解释器模式允许将语言的文法表示为一个抽象语法树,并通过解释器类递归地解释执行树上的节点。解释器模式的实现相对简单,适用于规模较小的语言解释器。原创 2023-08-19 15:38:17 · 85 阅读 · 0 评论 -
Go 设计模式中责任链模式
在责任链模式中,多个对象组成一条责任链,每个对象都有机会处理请求,如果当前对象无法处理请求,则将请求传递给下一个对象,直到请求被处理或链结束。责任链模式的核心思想是将请求的发送者和接收者解耦,使多个对象都有机会处理请求。责任链模式将发送者和接收者解耦,每个处理者只需关注自己的逻辑,而不必了解其他处理者的存在。Spring 框架中的拦截器(Interceptor)也使用了责任链模式,允许在请求处理前后执行自定义的逻辑。是抽象处理者,定义了处理请求的接口,并包含一个指向下一个处理者的引用。原创 2023-08-18 13:00:00 · 117 阅读 · 0 评论 -
Go 设计模式中迭代器模式
迭代器模式的核心思想是将对集合的遍历操作封装到一个独立的迭代器对象中,该迭代器对象可以依次访问集合中的元素,而无需了解集合的具体实现方式。这样可以将集合对象的遍历算法与集合对象本身解耦,并且可以提供不同类型的迭代器来满足不同的遍历需求。迭代器模式可以定义多个不同类型的迭代器,每个迭代器可以实现不同的遍历算法,从而满足不同的遍历需求。迭代器模式(Iterator Pattern)是一种行为型设计模式,用于提供一种统一的方式来遍历集合对象中的元素,而无需暴露集合对象的内部结构。接口,返回具体的迭代器对象。原创 2023-08-22 08:52:18 · 151 阅读 · 0 评论 -
Go 设计模式中命令模式
命令模式的核心思想是将请求的发送者(Client)与请求的接收者(Receiver)解耦,通过引入命令对象(Command)作为中介,将请求封装成一个对象,使得发送者和接收者不直接交互。命令模式(Command Pattern)是一种行为型设计模式,用于将请求封装成一个对象,从而使得可以将不同的请求参数化、延迟执行或者将请求放入队列中等。命令对象可以封装请求的参数,使得可以灵活地设置和修改请求的参数,并且可以在需要的时候执行请求。是命令的发送者,负责创建具体的命令对象,并设置命令对象的接收者。原创 2023-08-21 13:30:00 · 69 阅读 · 0 评论 -
Go 设计模式中状态模式
鱼弦:CSDN内容合伙人、CSDN新星导师、全栈领域创作新星创作者 、51CTO(Top红人+专家博主) 、github开源爱好者(go-zero源码二次开发、游戏后端架构 https://github.com/Peakchen)在Go设计模式中,状态模式是一种行为型模式,用于在对象内部状态改变时改变其行为。状态模式通过将对象的行为封装成不同的状态对象,使得对象的行为可以根据其内部状态的变化而变化,从而实现了状态和行为的解耦。原创 2023-08-28 13:00:00 · 90 阅读 · 0 评论 -
Go 设计模式中装饰模式应用
装饰模式通过创建一个装饰器类,该类实现了与被装饰对象相同的接口,并持有一个被装饰对象的引用。装饰器类在调用被装饰对象的方法之前或之后,执行额外的行为,从而扩展了被装饰对象的功能。可以看到,装饰器模式允许我们在不修改具体组件的情况下,通过装饰器的组合来动态地添加新的功能。在上述示例中,装饰器A和装饰器B分别添加了额外的操作,而不影响具体组件的原有功能。的操作,实际上会按照装饰器链的顺序依次执行装饰器的操作,最终执行到具体组件的操作。是具体的装饰器实现类,通过扩展装饰器的功能来增强被装饰对象。原创 2023-08-09 13:30:00 · 103 阅读 · 0 评论 -
Go 设计模式中享元模式
享元模式的核心思想是将对象分为可共享的内部状态(Intrinsic State)和不可共享的外部状态(Extrinsic State)。而外部状态是对象的变化部分,每个对象都有自己的外部状态。通过共享对象,享元模式可以显著减少内存使用,特别是当需要大量相似对象时。享元模式是一种常用的设计模式,许多软件和框架都使用了该模式。注意到当获取相同的内部状态时,工厂会返回同一个享元对象,实现了对象的共享。享元接口定义了操作享元对象的方法,具体享元实现了该接口并包含内部状态。是享元接口,定义了操作享元对象的方法。原创 2023-08-11 10:25:51 · 97 阅读 · 0 评论 -
Go 设计模式中原型模式应用
在 Go 设计模式中,原型模式是一种创建型模式,它允许通过克隆现有对象来创建新对象,而无需从头开始重新创建对象。原型模式提供了一种简单的方式来创建对象,而无需从头开始重新创建对象,因为它可以避免在对象创建时进行重复的初始化工作。该方法将返回当前对象的副本,因此需要实现深度拷贝以确保返回的副本是一个新对象,而不是与原始对象共享相同的数据。原型模式提供了一种灵活的方式来创建对象,因为它允许通过克隆现有对象来创建新对象,而无需从头开始重新创建对象。我们修改了这些新对象的属性,但原型对象的属性保持不变。原创 2023-08-07 15:44:09 · 112 阅读 · 0 评论 -
Go 设计模式中策略模式
鱼弦:CSDN内容合伙人、CSDN新星导师、全栈领域创作新星创作者 、51CTO(Top红人+专家博主) 、github开源爱好者(go-zero源码二次开发、游戏后端架构 https://github.com/Peakchen)在Go设计模式中,策略模式是一种行为型模式,用于在运行时选择算法的行为。策略模式将不同的算法封装成各自的策略对象,并使得这些策略对象可以互相替换,从而使得算法的选择可以独立于客户端而变化。原创 2023-08-29 08:58:14 · 208 阅读 · 0 评论 -
Go 设计模式中中介者模式
中介者模式可以将复杂的交互逻辑集中在中介者对象中,使得各个对象之间的通信变得简单,并且减少了对象之间的直接依赖关系。中介者模式将对象间的交互逻辑封装在中介者对象中,因此可以通过修改中介者对象来改变对象间的交互方式,而无需修改各个同事类。中介者模式的核心思想是将多个对象之间的复杂交互逻辑集中在一个中介者对象中,从而使各个对象之间的耦合度降低。中介者对象充当了对象间的调度者和协调者,负责处理对象之间的通信和交互。是具体中介者的角色,实现了中介者接口,并具体处理对象间的通信和交互逻辑。然后,通过调用同事类的。原创 2023-08-24 09:11:40 · 70 阅读 · 0 评论 -
Go 设计模式适配器模式应用
适配器模式通过创建一个包装器(wrapper)对象,将一个类的接口转换为客户端所期望的另一个接口,从而使原本由于接口不兼容而不能在一起工作的两个类可以协同工作。在Go语言中,适配器模式常常应用于将一个已有的接口转化为另一个接口,使得原本不能兼容的两个接口可以协同工作。适配器模式是一个非常实用的设计模式,可以用来解决不兼容接口的问题,并且在Go语言中非常容易实现。以下是一个简单的示例,展示了适配器模式如何在Go语言中实现。当我们在主函数中创建适配器实例,并调用它的。在这个例子中,我们有一个原始接口。原创 2023-05-29 09:20:26 · 169 阅读 · 0 评论 -
Go 设计模式中访问者模式
数据结构中的每个元素都要实现一个接受访问者的方法,将自身传递给访问者,并在访问者中调用相应的操作方法。当一个数据结构中的元素类型较多,但每个元素都需要进行不同的操作时,可以使用访问者模式。在Go设计模式中,访问者模式(Visitor Pattern)是一种行为型模式,用于将算法与数据结构分离,使得算法可以独立地操作数据结构的不同元素,同时遵循开闭原则。编译器和解析器:访问者模式常用于编译器和解析器的实现中,用于遍历抽象语法树(Abstract Syntax Tree,AST)并执行相应的操作。原创 2023-08-30 13:35:41 · 123 阅读 · 0 评论 -
Go 设计模式组合模式应用
组合模式通过建立一个抽象类或接口来表示树形结构中的节点(Component),并定义了一些操作,如添加子节点、删除子节点、获取子节点等。复合节点(Composite)是具有子节点的节点,它可以包含其他叶子节点或复合节点,并对子节点进行操作。可以看到,装饰器模式允许我们在不修改具体组件的情况下,通过装饰器的组合来动态地添加新的功能。在上述示例中,装饰器A和装饰器B分别添加了额外的操作,而不影响具体组件的原有功能。的操作,实际上会按照装饰器链的顺序依次执行装饰器的操作,最终执行到具体组件的操作。原创 2023-08-10 15:00:00 · 101 阅读 · 0 评论 -
golang+http+mysql 客户端服务器传送图片数据存储设计
在 Go 语言中实现 HTTP 客户端和服务器之间传输图片数据,并使用 MySQL 存储图片数据,可以结合前面提到的示例代码进行操作。下面是一个完整的示例,包括客户端发送图片数据到服务器,服务器将图片数据存储到 MySQL 数据库,以及从数据库中获取图片数据并在服务器上显示的过程。根据图片的大小和实际需求,你可以选择适合的数据类型。函数中,我们从请求中获取图片数据,并将其保存到服务器端的文件中。数据类型来存储图片数据,具体选择哪种类型取决于图片的大小。函数将图片数据存储到 MySQL 数据库中。原创 2023-08-19 18:15:20 · 299 阅读 · 0 评论 -
golang +mysql 实现图片存储数据库和从数据库获取显示
在Go语言中实现图片存储到数据库和从数据库获取显示的原理是将图像数据以二进制格式存储在数据库中。这种方法可以将图像数据与其他数据一起保存在数据库记录中,方便管理和检索。要在 Go 语言中实现图片的存储到数据库和从数据库获取显示,你可以结合使用 MySQL 数据库和第三方库来实现。这种方法的好处是可以将图片与其他相关数据一起存储在数据库中,实现一对一或一对多的关联关系,从而方便数据管理和检索。代码中的数据库连接字符串、数据库表结构和路径等需要根据实际情况进行调整。上述代码演示了图片的存储和获取显示过程。原创 2023-08-19 17:21:59 · 583 阅读 · 0 评论 -
Go 设计模式中工厂方法模式应用
在工厂方法模式中,我们定义一个抽象的工厂接口,用于创建一系列相关或依赖的对象。具体的工厂实现了这个接口,并实现了工厂方法,用于创建具体的对象。这样做的好处在于,我们可以将对象的创建和使用解耦,并且能够更加灵活地管理对象的生命周期。工厂方法模式(Factory Method Pattern)是一种常见的设计模式,它属于创建型模式。在 Go 语言中,工厂方法模式经常被用于对象的创建和初始化。总体而言,工厂方法模式在 Go 语言中非常常见,它是一种简单而灵活的设计模式,可以帮助我们更好地管理对象的创建和初始化。原创 2023-05-27 13:04:46 · 2253 阅读 · 0 评论 -
Go 并发的 20+ 种踩坑案例
Go语言天生支持并发,这也是其广受欢迎的一个原因。原创 2023-05-27 13:05:13 · 2321 阅读 · 0 评论 -
基于Golang的分布式数据运营与流式计算实战
此外,Golang还提供了标准库中的encoding/json和encoding/gob包,可以方便地进行JSON和二进制数据的序列化和反序列化。在Golang中,我们可以使用各种分布式框架和工具,如etcd、consul、ZooKeeper等,来协调和管理分布式系统的节点和资源。基于Golang的分布式数据运营和流式计算系统具有高效、灵活和可伸缩的特点,可以帮助我们更好地处理大规模数据和实现业务需求。在实际开发中,我们需要结合具体业务场景和技术特点,进行合理的设计和优化,以达到最佳的性能和效果。原创 2023-05-26 09:18:04 · 1704 阅读 · 0 评论 -
详细介绍一下Go1.17 特性,优缺点以及需要改进的地方
Go1.17 对 runtime/debug 包进行了改进,使得其能够更加方便地对程序进行调试。新增的 ReadGCStats 函数能够读取当前 GC 的统计信息,而 SetGCPercent 函数则能够设置 GC 执行的频率。新的 AddInt64、LoadInt64、StoreInt64 等函数能够通过编译器进行内联,从而避免了使用锁带来的额外开销。Go1.17 对编译器进行了一系列优化,包括对函数内联的优化、对切片相关的优化以及对协程切换相关的优化等。这些优化能够使得程序的性能得到进一步提升。原创 2023-05-25 15:38:31 · 1175 阅读 · 0 评论 -
go-zero和dtm分布式事务实现
通过使用DTM的机制和go-zero提供的工具,你可以在go-zero的微服务架构中实现分布式事务,并保证事务的一致性和可靠性。go-zero是一个基于Go语言的微服务开发框架,而DTM(Distributed Transaction Manager)是一个分布式事务管理器,用于实现跨多个微服务的分布式事务。发起DTM事务:在需要进行分布式事务的地方,通过调用DTM提供的API发起一个DTM事务。注册TCC参与者:在适当的位置,通过调用DTM提供的API,将TCC参与者注册到DTM事务管理器中。原创 2023-05-16 14:35:21 · 988 阅读 · 0 评论 -
Go 设计模式中抽象工厂模式应用
当我们需要添加新的产品时,我们只需实现产品接口并创建新的具体工厂即可,而无需修改客户端代码。然而,使用抽象工厂模式也可能导致代码更加复杂,并且在需要添加新产品族时,可能需要修改接口。因此,我们需要在实践中仔细权衡使用抽象工厂模式的利弊。抽象工厂模式是一种创建型设计模式,旨在提供一种封装一组具有共同主题的单独工厂,而无需指定其具体类。在 Go 中,抽象工厂模式可以帮助我们创建一组相关的对象,而无需关心其具体实现。在 Go 中,我们可以使用接口来定义抽象工厂和具体工厂。原创 2023-03-27 16:16:58 · 162 阅读 · 0 评论 -
Go 设计模式中单例模式应用
由于单例对象被所有组件共享,因此对该对象的任何修改都可能会对应用程序的其他部分产生意外的影响。因此,在设计和使用单例模式时需要权衡利弊,确保它适用于特定的应用场景。单例模式(Singleton Pattern)是一种创建型设计模式,它保证一个类只有一个实例,并提供一个访问该实例的全局访问点。在 Go 语言中,可以通过结构体和函数的方式实现单例模式。通过单例模式可以确保在应用程序中只有一个实例对象被创建,并且可以在全局范围内访问该对象。函数用于获取单例对象的实例,如果实例尚未创建,则创建一个新的实例。原创 2023-03-27 16:19:58 · 141 阅读 · 0 评论 -
Go 设计模式中工厂方法模式应用
在工厂方法模式中,我们定义一个抽象的工厂接口,用于创建一系列相关或依赖的对象。具体的工厂实现了这个接口,并实现了工厂方法,用于创建具体的对象。这样做的好处在于,我们可以将对象的创建和使用解耦,并且能够更加灵活地管理对象的生命周期。工厂方法模式(Factory Method Pattern)是一种常见的设计模式,它属于创建型模式。在 Go 语言中,工厂方法模式经常被用于对象的创建和初始化。总体而言,工厂方法模式在 Go 语言中非常常见,它是一种简单而灵活的设计模式,可以帮助我们更好地管理对象的创建和初始化。原创 2023-03-27 16:13:49 · 369 阅读 · 1 评论 -
golang timewheel 时间轮定时器设计与实现
源码实现:https://github.com/Peakchen/akTimeWheel效果图:原创 2020-12-02 14:35:54 · 730 阅读 · 0 评论 -
【golang】解决 error: go get xxx time out
终端cmd:mkdir -p $GOPATH/src/xxxcd $GOPATH/src/xxxgit clone https://github.com/golang/net.git netgit clone https://github.com/golang/crypto.git cryptogit clone https://github.com/gola原创 2018-01-31 15:41:52 · 1091 阅读 · 0 评论