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

2023年5月31日

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

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

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

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

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

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

2023年5月30日

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

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

posted @ 2023-05-30 08:16 进击的davis 阅读(212) 评论(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 阅读(194) 评论(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 阅读(189) 评论(0) 推荐(0) 编辑

golang 通过 os 包进行文件读写

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

posted @ 2023-04-25 16:03 进击的davis 阅读(580) 评论(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 阅读(324) 评论(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 阅读(112) 评论(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 阅读(442) 评论(0) 推荐(0) 编辑

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

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

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

2023年4月12日

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

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

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

2023年4月11日

golang 代码实现单调栈

摘要: 有种特殊的栈,叫做单调栈,顾名思义就是栈底到栈顶呈现单调特性,比如对于列表:[]int{6, 10, 3, 7, 4, 12},如果要实现单调栈,并不是所有入栈后呈降序或升序排列就是单调栈,如单调递增栈: 6 | 栈空,入栈 | [6] 10 | 10 > 6, 符合递增,入栈 | [6, 10] 阅读全文

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

python 多线程使用中关于daemon和join的用途

摘要: 我们在遇到 IO 耗时的时候,一般可以考虑使用到 python 的多线程操作,有的时候,我们主线程不必等待子线程运行结束,有的时候主线程需要等待子线程运行结束再执行主线程的逻辑,这里就涉及到 python 中的 daemon 和 join 的用途了。 在创建子线程时,考虑是否让子线程作为后台守护线程 阅读全文

posted @ 2023-04-11 18:33 进击的davis 阅读(204) 评论(0) 推荐(0) 编辑

2023年4月8日

elasticsearch 查询超10000的几种解决方案

摘要: 在es中,默认查询的 from + size 数量不能超过一万,官方对于超过1万的解决方案使用游标方案,今天介绍下几种方案,希望对你有用。 数据准备,模拟较大数据量,往es中灌入60w的数据,其中只有2个字段,一个seq,一个timestamp,如下图: 方案1:scroll 游标 游标方案中,我们 阅读全文

posted @ 2023-04-08 10:18 进击的davis 阅读(5149) 评论(0) 推荐(1) 编辑

2023年3月25日

go gin web 应用 实现 参数校验 自定义功能

摘要: 1.准备工作 在进行 web 业务开发时,尽管 validator/v10 这个库已经为我们预置了很多校验的字段约束,难免有些场景下,我们想自定义一些规则进去,比如校验用户注册的密码,约束是含数字、大写字母、小写字母,特殊字符("*|&|$|#")的至少3种,常规的字段约束此时就不管用了,怎么办,当 阅读全文

posted @ 2023-03-25 12:47 进击的davis 阅读(257) 评论(0) 推荐(0) 编辑

go gin web应用-通过中间件形式实现通用的参数检验

摘要: 都知道 gin 在web开发方面应用广泛,但在参数校验上,之前写一堆 POST 接口的时候,每个接口的业务代码里都要去实现 validate 校验逻辑,感觉代码复用糟糕。 为解决这问题,想到通过 reflect 包是不是可以实现通用的校验处理呢。如果可以实现,业务逻辑就只需要专注与业务实现,进一步实 阅读全文

posted @ 2023-03-25 12:45 进击的davis 阅读(254) 评论(0) 推荐(0) 编辑

2023年3月23日

go 标准包flag的基本用法

摘要: 相关用法见代码 flag.Type() # 通过 flag.Type() 返回对应类型的指针,姐应用后使用该值 package main import ( "flag" "fmt" "time" ) func main() { // 通过 flag.Type() 返回对应类型的指针,姐应用后使用该值 阅读全文

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

2023年3月22日

基于go/pprof用于常用排序场景下的性能分析

摘要: 我们常用的排序常见的有: 冒泡 选择 插入 希尔 快排 归并 堆排 计数 基数 桶排序 关于排序算法的时间复杂度、空间复杂度这里不加赘述,今天主要分享通过 go 性能分析工具 pprof 看看几种常见排序的性能情况。 sort.go 点击查看代码 package sort import "math" 阅读全文

posted @ 2023-03-22 12:21 进击的davis 阅读(31) 评论(0) 推荐(0) 编辑

Golang 大杀器之性能剖析 PProf

摘要: 参考文章: Golang 大杀器之性能剖析 PProf Graphviz安装及入门教程 接触了那么久的go,一直也在用go写项目代码,有时遇到一些性能、内存问题,一时不好下手,幸好go自带性能大杀器,帮助我们及时知悉项目代码运行情况与cpu耗时、内存占用等一系列问题。 本次分享主要基于 Golang 阅读全文

posted @ 2023-03-22 11:36 进击的davis 阅读(332) 评论(0) 推荐(0) 编辑

2023年3月21日

go 常用设计模式-结构型模式

摘要: 本次分享结构型模式,主要包括: 代理模式 装饰器模式 适配器模式 享元模式 1.代理模式 package proxy import "fmt" /* 结构型模式 代理,代表打理,以他人的名义代表委托人打理其本职工作之外或不所能及的事务,达成合作关系并更高效地促成事务完成的目的。 强调的是对被代理对象 阅读全文

posted @ 2023-03-21 18:10 进击的davis 阅读(14) 评论(0) 推荐(0) 编辑

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

导航