04 2023 档案

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

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

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 阅读(373) 评论(0) 推荐(0)

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

posted @ 2023-04-25 16:03 进击的davis 阅读(966) 评论(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 阅读(483) 评论(0) 推荐(0)

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 阅读(141) 评论(0) 推荐(0)

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 阅读(672) 评论(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 阅读(709) 评论(0) 推荐(0)

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

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

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

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

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

posted @ 2023-04-11 18:32 进击的davis 阅读(282) 评论(0) 推荐(0)

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

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

导航