随笔分类 -  golang

golang 中 channel cap设为1原理 | 有无缓冲的channel
摘要:目录1.无缓冲的channel2.有缓冲的channel总结 在golang中,如果涉及消息传递或者是并发控制等,我们常常用到 channel,channel的具体原理这里不讨论,今天主要看看有无缓冲以及缓冲值的设计。 1.无缓冲的channel 联系 channel 的数据结构 mchan 可知, 阅读全文

posted @ 2024-03-20 23:40 进击的davis 阅读(93) 评论(0) 推荐(0)

golang 多返回值的实现原理-转载
摘要:之前一次面试时,面试官问到 你知道golang的多返回值的实现吗,一脸懵逼,平时主要注重项目应用开发,对这块确实没关注,答得不好,各位大佬,以后建议也加强下基础哦。 今天看看 golang 中多返回值的实现。 可以简单认为 c 中多返回值的实现,其实就是通过寄存器将返回参数以指针形式传入传入参数中, 阅读全文

posted @ 2024-03-20 23:20 进击的davis 阅读(373) 评论(0) 推荐(0)

golang vs python 应用项目语言选择
摘要:目录1.语言选择2.python语言特点及应用场景2.1 语言特点1.简单2.易于学习3.自由且开放4.丰富的库5.互动模式6.跨平台性7.可扩展8.数据库9.可嵌入10.高级语言2.2 应用场景Python在系统编程中的应用Python在网络爬虫方面的应用Python在人工智能、科学计算中的应用P 阅读全文

posted @ 2024-03-20 23:02 进击的davis 阅读(671) 评论(0) 推荐(0)

golang 随机数组的性能对比测试
摘要:最近需要用到随机数,但在随机数的生成方面遇到些问题,如加了 seed 后反而生成的数组是固定的,没有加是随机的,后面查资料了解到,如果 seed 值是一样的,序列中的值就固定的,而不加 seed 时,每次的都是随机的,后面想到如果用来做负载均衡呢,性能又如何。 下面是源码: package benc 阅读全文

posted @ 2024-03-15 11:29 进击的davis 阅读(71) 评论(0) 推荐(0)

golang实现冒泡排序的三种方法
摘要:今天重温排序的一些简单方法-冒泡排序,了解排序的同学们应该知道,冒泡排序是一种朴素的排序方法,通常我们都会用2个for-loop搞定,第一层遍历每个元素,第二层则遍历前面的元素,第一层每次循环后,都会把当次遍历的最大值移动到数组的后面位置,数组后几位即成升序的状态。 根据冒泡排序的方法论,整理出以下 阅读全文

posted @ 2023-02-01 16:24 进击的davis 阅读(514) 评论(0) 推荐(0)

go 格式化输出
摘要:直接上代码: package main import "fmt" func main() { // %s s1 := "hello" s2 := []byte("world") fmt.Printf("string: %s, slice: %s\n", s1, s2) // string: hell 阅读全文

posted @ 2023-01-14 14:41 进击的davis 阅读(34) 评论(0) 推荐(0)

go time的定时器简单总结
摘要:go的标准库中的time包为我们提供了多个定时器的接口,总共分为以下几个: time.After,到了给定的duration的时间时,返回可读chan,也不会阻止程序运行,相当于一个消息通知 time.Sleep,在给定的duration中,阻塞当前goroutine,过了休眠时间,goroutin 阅读全文

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

go通过chan和go func进行并发控制
摘要:原文: Go 并发实战核心编程【一】 1. 需求 启动一个goroutine,将1-10000的数字放入chan中 启动4个goroutine从chan中读取数字,并计算是不是素数 是素数就讲结果放入结果chan中 最后遍历结果chan,打印素数集合 2. 思路 这道题思路很简单,首先明确一个点就是 阅读全文

posted @ 2022-12-21 15:59 进击的davis 阅读(190) 评论(0) 推荐(0)

go使用sync.Pool的性能对比
摘要:在业务代码编码中,涉及到经常用前创建,用后销毁的资源,为了提高性能,减少内存分配,减轻GC压力,自然而然地就会联想到使用对象池的应用。 go在很多方面都有着sync.Pool的应用,我们经常使用的fmt.Println("balabala"),其实也用到了sync.Pool,不信可以自己去阅读源码。 阅读全文

posted @ 2022-12-20 11:09 进击的davis 阅读(317) 评论(0) 推荐(0)

gin源码学习-bind(6)
摘要:xxx 阅读全文

posted @ 2022-12-19 15:45 进击的davis 阅读(40) 评论(0) 推荐(0)

gin源码学习-request/response(5)
摘要:xxx 阅读全文

posted @ 2022-12-19 15:45 进击的davis 阅读(53) 评论(0) 推荐(0)

gin源码学习-context(4)
摘要:gin的context封装了request和response,gin框架在处理具体的请求时,也都是以context作为载体,gin的context的覆盖了很多功能,在gin的源码中其实已经很简单明了了,接下来讲分享个人对gin.context的一些理解。 首先看看gin中对context结构体的定义 阅读全文

posted @ 2022-12-19 15:39 进击的davis 阅读(1181) 评论(0) 推荐(0)

gin源码学习-中间件解析(3)
摘要:1.net/http中间件 net/http部分参照-Go 每日一库之 net/http(基础和中间件),看原文请移步:https://cloud.tencent.com/developer/article/1852023 标准库net/http中并没有实现中间件这种功能,net/http为我们提供 阅读全文

posted @ 2022-12-09 16:44 进击的davis 阅读(256) 评论(0) 推荐(0)

gin源码学习-路由注册(2)
摘要:gin框架主要是在标准库net/http的基础上对路由进行改写,本文将从net/http与gin的路由注册分享路由方面的一些理解。 1.net/http的路由注册 1.1 路由注册 首先来个demo: package main import ( "log" "net/http" ) func mai 阅读全文

posted @ 2022-12-08 16:45 进击的davis 阅读(333) 评论(0) 推荐(0)

gin框架项目实战系列汇总
摘要:最近打算整理重构项目的一些使用心得,打算做以下系列更新: gin-注册路由 gin-中间件 gin-http/https配置 gin-配置初始化-viper gin-错误定义 gin-统一响应response gin-zap日志及滚动 gin-缓存redis的使用 gin-数据库gorm的使用 gi 阅读全文

posted @ 2022-12-07 18:03 进击的davis 阅读(316) 评论(0) 推荐(0)

gin源码学习-项目启动(1)
摘要:最近公司后台项目也在用golang的gin框架进行重构,从gin官方给出的性能对比数据来看,性能十分优秀,而且干净整洁,少量代码就可以起一个web项目,简直不要太爽,目前github上的star数量已经65k(截至2022-12),十分亮眼。 已经有一定实践经验之后,这下来看看gin的具体实现,一来 阅读全文

posted @ 2022-12-07 15:27 进击的davis 阅读(327) 评论(0) 推荐(1)

[go-每日一库] go-gin项目使用realize实现代码、文件改动热更新
摘要:之前用django编写web应用时,每次保存,django应用都是重新加载-热更新,最近在写gin应用,了解到golang常用的热更新可以用到fresh/gin/gowatch/bee/realize/air等,本文主要分享realize的热更新应用。 realize 举个例子,有个叫demo的gi 阅读全文

posted @ 2022-12-05 23:55 进击的davis 阅读(553) 评论(0) 推荐(0)

[go每日一库] go-gin 使用swagger生成api文档
摘要:日常web开发的项目,由于涉及与前端同事沟通,每次修改都要去更新api文档,比较恼火,但好在有款api生成利器-swagger。 本文主要介绍swagger的基本使用,如需深入了解学习,请前往官方:https://github.com/swaggo/gin-swagger env go 1.19 g 阅读全文

posted @ 2022-12-03 14:32 进击的davis 阅读(1479) 评论(0) 推荐(0)

golang 标准库log的封装并实现日志切分
摘要:都知道golang的log库可以拿来就用,但对于生产来说还不够,需要基于log库做点封装。除了这些还有其他问题,比如打印字段定制化,性能问题。本文不讨论太多,只对log进行简单封装,实现log的持久化、loglevel、日志切分等功能。 参考: go原生log模块的简易封装 Golang 语言三方库 阅读全文

posted @ 2022-12-01 12:14 进击的davis 阅读(778) 评论(0) 推荐(0)

golang 生成MD5、SHA256摘要
摘要:golang生成常用摘要字符串比较简单,简单总结下用的比较多的两种。 method-1 func GenerateMd5(str string) string { // method_1, cannot reset hash := md5.Sum([]byte(str)) return fmt.Sp 阅读全文

posted @ 2022-11-30 11:07 进击的davis 阅读(694) 评论(0) 推荐(0)

导航