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

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

golang 通过 os 包进行文件读写

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

posted @ 2023-04-25 16:03 进击的davis 阅读(708) 评论(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 阅读(366) 评论(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 阅读(116) 评论(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 阅读(485) 评论(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 阅读(605) 评论(0) 推荐(0) 编辑

2023年4月12日

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

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

posted @ 2023-04-12 18:26 进击的davis 阅读(1210) 评论(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 阅读(90) 评论(0) 推荐(0) 编辑

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

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

posted @ 2023-04-11 18:32 进击的davis 阅读(224) 评论(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 阅读(6330) 评论(0) 推荐(1) 编辑

2023年3月25日

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

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

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

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

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

posted @ 2023-03-25 12:45 进击的davis 阅读(292) 评论(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 阅读(27) 评论(0) 推荐(0) 编辑

2023年3月22日

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

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

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

Golang 大杀器之性能剖析 PProf

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

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

2023年3月21日

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

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

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

go 常用设计模式-行为型模式

摘要: 本次分享的行为型模式,主要包含: 责任链模式 策略模式 观察者模式 模板模式 访问者模式 1.责任链模式 package chainOfResponsibility import "fmt" /* 行为模式: 通过账目报销的例子说明,不同的级别领导,其权限不同,如100元级别,100元级别等 */ 阅读全文

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

go 常用设计模式-创建型模式

摘要: 本次分享的创建型模式主要包括: 单例模式 简单工厂模式 工厂模式 抽象共工厂模式 1.单例模式 package singleton import "sync" /* 创建型模式 */ var ( instance Singleton once sync.Once ) type Singleton s 阅读全文

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

2023年3月20日

go 1.19 gRPC的简单实操

摘要: 学习一段时间的grpc了,今天简单记录下grpc的使用流程。 在进入今天的分享前,请确保自己已经安装好相关的环境: go 1.19 protoc v3.19.4 protoc-gen-go v1.28.1 protoc-gen-go-grpc v1.3.0 1.项目目录结构 如下图显示: 2.pro 阅读全文

posted @ 2023-03-20 15:12 进击的davis 阅读(143) 评论(0) 推荐(0) 编辑

golang grpc编译工具的安装

摘要: 本次安装前提是已经安装go环境,我的环境是ubuntu20.04。 安装环境主要是: protoc protoc-gen-go protoc-gen-go-grpc 1.编译器:protoc的安装 参考官方安装方式, 方式一 如果你是ubuntu类似的系统, $ apt install -y pro 阅读全文

posted @ 2023-03-20 10:37 进击的davis 阅读(198) 评论(0) 推荐(0) 编辑

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

导航