上一页 1 2 3 4 5 6 7 8 ··· 33 下一页

2023年6月9日

golang实现设计模式之责任链模式-优缺点,适用场景

摘要: `责任链模式`是一种行为型的设计模式,也叫职责链,定义:在这样的场景中,请求需要经过一系列的处理者,通过列表或者链表将处理者组合起来,请求依次被处理者处理,如果需要中断,也可以及时退出处理。上述的这种的应用场景,典型的就是在 `web` 应用中的 `中间件或者拦截器`,比如 `Gin框架` 的中间件 阅读全文

posted @ 2023-06-09 18:19 进击的davis 阅读(286) 评论(0) 推荐(0) 编辑

golang实现设计模式之策略模式-优缺点,适用场景

摘要: `策略模式`是一种行为型的设计模式,该模式定义了一系列算法,并将每个算法封装起来,使它们可以相互替换,且算法的变化不会影响使用算法的客户,或者认为把使用算法的责任和算法的实现分割开来,并委派给不同的对象对这些算法进行管理。 **结构** * 1.抽象策略(Strategy)类。定义了一个公共接口,各 阅读全文

posted @ 2023-06-09 18:19 进击的davis 阅读(266) 评论(0) 推荐(0) 编辑

golang实现设计模式之适配器模式-优缺点,适用场景

摘要: `适配器模式`是一种结构型设计模式,它是通过接口转换,使得原先接口不被兼容的其他类可以一起工作。 **类型** * 类结构型 特点: \- 程序耦合性高 \- 要求程序员对组件内部结构熟悉 \- 应用相对少些 类适配器模式可以用过继承的方式来实现。 * 对象结构型 特点:可重用性较差。 对象适配器允 阅读全文

posted @ 2023-06-09 18:18 进击的davis 阅读(165) 评论(0) 推荐(0) 编辑

golang实现设计模式之组合模式-优缺点与适用场景

摘要: `组合模式`是一种将对象组合成树状的层次结构的模式,用来表示“整体-部分”的关系,使用户对单个对象和组合对象具有一致的访问性,属于结构型设计模式。 **结构** * `抽象构件(Component)角色`:它的主要作用是为树叶构件和树枝构件声明公共接口,并实现它们的默认行为。在透明式的组合模式中抽象 阅读全文

posted @ 2023-06-09 18:18 进击的davis 阅读(70) 评论(0) 推荐(0) 编辑

golang实现设计模式之代理模式-优缺点,适用场景

摘要: `代理模式`作为一种结构型的设计模式,因为某种原因,需要对访问的对象通过代理访问目标对象,访问对象不适合或者不能直接引用该目标对象,代理就成为访问对象和目标对象的中介。 **结构** * 1.抽象主题(Subject)类。通过接口或抽象类声明真实主题和代理对象实现的业务方法。 * 2.真实主题(Re 阅读全文

posted @ 2023-06-09 18:17 进击的davis 阅读(160) 评论(0) 推荐(0) 编辑

golang实现设计模式之装饰器模式-优缺点,适用场景

摘要: `装饰器模式`是一种结构型设计模式,简单概括就是:不改变先有对象结构下,动态给对象增加一些职责。 装饰器模式通过组合方式实现,与继承的异同: * 使用继承方式,具有静态特征,耦合度高,并且随着扩展功能的增多,子类会很膨胀。 * 使用组合方式,创建装饰对象来装饰真实对象,原对象功能不变,另外扩展。 * 阅读全文

posted @ 2023-06-09 18:17 进击的davis 阅读(296) 评论(0) 推荐(0) 编辑

2023年6月2日

golang实现设计模式之享元模式总结-代码、优缺点、适用场景

摘要: 享元模式是一种结构型的设计模式,通过共享细粒度对象实现对象的复用,从而达到减少对象创建与销毁,减少内存消耗,其本质是本质是缓存共享对象,降低内存消耗。 享元模式的定义提出了两个要求,细粒度和共享对象。因为要求细粒度,所以不可避免地会使对象数量多且性质相近,此时我们就将这些对象的信息分为两个部分:内部 阅读全文

posted @ 2023-06-02 11:01 进击的davis 阅读(61) 评论(0) 推荐(0) 编辑

2023年6月1日

golang实现设计模式之构建者模式总结-代码、优缺点、适用场景

摘要: 构建者模式也是一种创建型的设计模式,该模式将一个复杂对象的构造与它的表示分离,使同样的构建过程可以创建不同的对象。大白话就是,构建者模式,从输出角度看依然是创建个对象实例,但是构建者模式更关注创建的细节,或者说一个对象的创建可以拆分为多个步骤,所有的步骤完成才创建出这个对象实例,而对于之前分享的工厂 阅读全文

posted @ 2023-06-01 11:24 进击的davis 阅读(79) 评论(0) 推荐(0) 编辑

2023年5月31日

golang实现设计模式之抽象工厂模式总结-代码、优缺点、适用场景

摘要: 抽象工厂模式也是一种创建型的设计模式,其是在工厂模式的基础上实现更高程度的内聚。我们知道在工厂模式中,一种产品类就需要新建个对应的工厂类生成产品的实例,这会有什么问题呢? 虽然工厂模式解决了简单工厂模式不好扩展的问题,实现了OCP,但一种产品就需要新建一个工厂类,比如有10000种产品,是不是也是新 阅读全文

posted @ 2023-05-31 15:46 进击的davis 阅读(134) 评论(0) 推荐(0) 编辑

golang实现设计模式之工厂模式总结-代码、优缺点、适用场景

摘要: 工厂模式也是一种创建型模式,它与简单工厂不同的是将实例的创建推迟到具体的工厂类方法中实现,每一种产品生成一个对应的工厂,从而替换掉简单工厂方法模式中那个静态工厂方法。所以在工厂模式中,不同产品就由不同的工厂生产,每次增加产品时,我们就不需要在类似在简单工厂中,在统一的工厂类方法中修改,而是通过直接新 阅读全文

posted @ 2023-05-31 14:02 进击的davis 阅读(127) 评论(0) 推荐(0) 编辑

golang实现设计模式之简单工厂模式总结-代码、优缺点、适用场景

摘要: 今天分享另外一种创建型类型的设计模式-简单工厂模式,简单工厂模式简单概括:客户端请求时,通过工厂类的创建接口,传入不同的参数,进而实现返回不同类的实例,可见运用简单工厂模式,是为了获取不同类的实例。 举个例子,有个工厂,生产不同的水果罐头,有代号01的黄桃罐头,代号02的荔枝罐头,代号03的苹果罐头 阅读全文

posted @ 2023-05-31 07:46 进击的davis 阅读(130) 评论(0) 推荐(0) 编辑

2023年5月30日

golang实现设计模式之单例模式总结-代码、优缺点、适用场景

摘要: 在日常业务开发中,适当应用设计模式,可以实现我们的业务需求,例如全局唯一配置,这里就需要用到单例模式。 什么情况下,我们可以使用单例模式呢? 这得考虑该模式的适用场景: * 用来控制类型实例的数量的,当需要确保一个类型只有一个实例 ### 单例模式的适用场景: * 1.统计当前在线人数(网站计数器) 阅读全文

posted @ 2023-05-30 08:16 进击的davis 阅读(285) 评论(0) 推荐(0) 编辑

2023年4月26日

golang 使用 net包实现 tcp server 示例

摘要: 之前用到 golang 进行网络编程时,主要就是使用 net/http 和 web 框架 gin,这些网络库的底层其实也还是用的标准库自带的 net包,很多是对路由或者其他做封装,而且 golang 本身的长处之一也是网络IO的处理,这也得益于其底层的 IO模型,今天我们分享的是基于 TCP ser 阅读全文

posted @ 2023-04-26 10:10 进击的davis 阅读(232) 评论(0) 推荐(0) 编辑

2023年4月25日

golang 中通过 strings/bytes/bufio 等包实现相关IO

摘要: 在 go 的 IO 中,除了 io 、os 等包,我们还有 strings 、 bytes 、bufio 等实现 IO 读写,这其中有些实现了 io.Reader,有些同时实现了 io.Reader和io.Writer 接口。接下来我们一个个看相关的使用。 1.strings 在 strings包 阅读全文

posted @ 2023-04-25 17:50 进击的davis 阅读(229) 评论(0) 推荐(0) 编辑

golang 通过 os 包进行文件读写

摘要: go 中 os包 主要与操作系统打交道,实际底层还是通过相关的系统调用实现文件的读写操作,今天我们就来聊聊通过 os包 实现文件的读写操作。 我们在使用 os包 进行相关操作时,主要流程: 读操作 open -> read -> close 写操作 open -> read -> write -> 阅读全文

posted @ 2023-04-25 16:03 进击的davis 阅读(665) 评论(0) 推荐(0) 编辑

golang 通过 io 包进行文件读写

摘要: 在 golang 语言中,实现io的读与写,只要实现了如下的读写接口即可: // go 1.19/src/io/io.go type Reader interface { Read(p []byte) (n int, err error) } type Writer interface { Writ 阅读全文

posted @ 2023-04-25 14:39 进击的davis 阅读(356) 评论(0) 推荐(0) 编辑

2023年4月23日

golang中sync.Pool的使用示例

摘要: 先上代码: package main import ( "fmt" "sync" ) var pool sync.Pool type person struct { Name string Age int } func init() { pool = sync.Pool{New: func() an 阅读全文

posted @ 2023-04-23 23:26 进击的davis 阅读(114) 评论(0) 推荐(0) 编辑

2023年4月21日

golang中通过原始socket实现tcp/udp的服务端和客户端示例

摘要: 这些天稍微空点,总结下golang中通过tcp/udp实现服务端客户端的编程实现,毕竟长久以来,如果要截单的http服务,我们直接使用net/http包实现服务,或者使用框架如gin/echo/beego等。 以下就直接上代码,稍微看看都能懂起。 1.TCP的实现 server package ma 阅读全文

posted @ 2023-04-21 14:37 进击的davis 阅读(475) 评论(0) 推荐(0) 编辑

golang 中常用的超时控制的方案示例

摘要: 在 go 中,我们很容易就可以实现超时控制,今天分享2种解决方案: 1.select + time.After 2.select + context 其实两种方案中,我们都是通过 channel 来控制的,在方案1中,对于 time.After, 通过返回一个只读 <- chan Time 实现,而 阅读全文

posted @ 2023-04-21 14:25 进击的davis 阅读(585) 评论(0) 推荐(0) 编辑

2023年4月12日

聊聊python的标准库 threading 的中 start 和 join 的使用注意事项

摘要: python 的多线程机制可以的适用场景不适合与计算密集型的,因为 GIL 的存在,多线程在处理计算密集型时,实际上也是串行的,因为每个时刻只有一个线程可以获得 GIL,但是对于 IO 处理来说,不管是网络IO还是文件读写IO还是数据库IO,由于从用户态切换到内核态时,此时线程就陷入等待,线程让出对 阅读全文

posted @ 2023-04-12 18:26 进击的davis 阅读(1070) 评论(0) 推荐(0) 编辑

上一页 1 2 3 4 5 6 7 8 ··· 33 下一页

导航