首页
学习
活动
专区
工具
TVP
发布

跟着asong学Golang

专栏成员
95
文章
57078
阅读量
18
订阅数
Go语言实现的可读性更高的并发神库
Go语言标准库有提供sync.waitGroup控制等待goroutine,我们一般会写出如下代码:
Golang梦工厂
2023-02-26
8120
Go Modules知识点总结
起初Go语言在1.5之前没有依赖管理工具,若想引入依赖库,需要执行go get命令将代码拉取放入GOPATH/src目录下,作为GOPATH下的全局依赖,这也就意味着没有版本控制及隔离项目的包依赖;
Golang梦工厂
2023-02-26
6730
面试官:net/http库知道吗?能说说优缺点吗?
哈喽,大家后,我是asong;这几天看了一下Go语言标准库net/http的源码,所以就来分享一下我的学习心得;为什么会突然想看http标准库呢?因为在面试的时候面试官问我你知道Go语言的net/http库吗?他有什么有缺点吗?因为我没有看过这部分源码,所以一首凉凉送给我;
Golang梦工厂
2022-12-08
7260
Gophers如何准备面试?
当前互联网环境人尽皆知,不少公司都在降本增效,所以招人的公司并不多,除了宇宙条、砍一砍公司从未停止过招人,其他公司基本都停止了招聘,所以这个时候找工作真的难,如果有朋友想跳槽,我劝你最好冷静一下,骑驴找马最好。
Golang梦工厂
2022-12-08
7590
一个Go语言实现的流量回放工具
goreplay是一个开源网络监控工具,可以实时记录TCP/HTTP流量,支持把流量记录到文件或者elasticSearch实时分析,也支持流量的放大、缩小,还支持频率限制;goreplay不是代理,无需任何代码入侵,只需要在服务相同的机器上运行goreplay守护程序,其会在后台侦听网络接口上的流量,goreplay的设计遵循 Unix 设计哲学:一切都是由管道组成的,各种输入将数据复用为输出;可以看一下官网画的架构图:
Golang梦工厂
2022-12-08
1.1K0
伙计,Go项目怎么使用枚举?
我们以java语言为例子,在JDK1.5之前没有枚举类型,我们通常会使用int常量来表示枚举,一般使用如下:
Golang梦工厂
2022-12-08
8700
几个提升Go语言开发效率的小技巧
Go语言允许一个函数把任意数量的值作为参数,Go语言内置了...操作符,在函数的最后一个形参才能使用...操作符,使用它必须注意如下事项:
Golang梦工厂
2022-12-08
8610
超全总结:Go语言如何操作文件
本文所有代码已经上传github:https://github.com/asong2020/Golang_Dream/tree/master/code_demo/file_operate_demo
Golang梦工厂
2022-12-08
3480
面试官:哥们Go语言的读写锁了解多少?
互斥锁我们都知道会锁定代码临界区,当有一个goroutine获取了互斥锁后,任何goroutine都不可以获取互斥锁,只能等待这个goroutine将互斥锁释放,无论读写操作都会加上一把大锁,在读多写少场景效率会很低,所以大佬们就设计出了读写锁,读写锁顾名思义是一把锁分为两部分:读锁和写锁,读锁允许多个线程同时获得,因为读操作本身是线程安全的,而写锁则是互斥锁,不允许多个线程同时获得写锁,并且写操作和读操作也是互斥的,总结来说:读读不互斥,读写互斥,写写互斥;
Golang梦工厂
2022-07-11
4790
面试官:哥们Go语言互斥锁了解到什么程度了?
sync 包下的mutex就是互斥锁,其提供了三个公开方法:调用Lock()获得锁,调用Unlock()释放锁,在Go1.18新提供了TryLock()方法可以非阻塞式的取锁操作:
Golang梦工厂
2022-07-11
3520
Go语言如何自定义linter(静态检查工具)
通常我们在业务项目中会借助使用静态代码检查工具来保证代码质量,通过静态代码检查工具我们可以提前发现一些问题,比如变量未定义、类型不匹配、变量作用域问题、数组下标越界、内存泄露等问题,工具会按照自己的规则进行问题的严重等级划分,给出不同的标识和提示,静态代码检查助我们尽早的发现问题,Go语言中常用的静态代码检查工具有golang-lint、golint,这些工具中已经制定好了一些规则,虽然已经可以满足大多数场景,但是有些时候我们会遇到针对特殊场景来做一些定制化规则的需求,所以本文我们一起来学习一下如何自定义linter需求;
Golang梦工厂
2022-07-11
1.2K0
分享如何阅读Go源码
以我个人理解,Go源码主要分为两部分,一部分是官方提供的标准库,一部分是Go语言的底层实现,Go语言的所有源码/标准库/编译器都在src目录下:https://github.com/golang/go/tree/master/src,想看什么库的源码任君选择;
Golang梦工厂
2022-07-11
5920
如何在测试中发现goroutine泄漏
不知道你们在日常开发中是否有遇到过goroutine泄漏,goroutine泄漏其实就是goroutine阻塞,这些阻塞的goroutine会一直存活直到进程终结,他们占用的栈内存一直无法释放,从而导致系统的可用内存会越来越少,直至崩溃!简单总结了几种常见的泄漏原因:
Golang梦工厂
2022-07-11
4070
Go语言将引入新型排序算法:pdqsort
哈喽,大家好,我是asong。最近在逛Go仓库时看到了一个commit是关于排序算法的,即pdqsort排序算法,Go计划将在下一个版本中支持该排序算法,下面我们就具体来看一看这个事情;
Golang梦工厂
2022-07-11
2710
Go语言切片原生支持并发吗?
实践是检验真理的唯一标准,所以当我们遇到一个不确定的问题,直接写demo来验证,因为切片的特点,我们可以分多种情况来验证:
Golang梦工厂
2022-07-11
9660
面试官:来说一说Go语言的函数调用惯例
在Go1.17版本之前,Go语言函数调用是通过栈来传递的,我们使用Go1.12版本写个例子来看一下:
Golang梦工厂
2022-07-11
2110
一道正确率只有15%的命名返回值和闭包的问题
这道题考查的点就是命名返回值+闭包,把上面的代码换成等效的匿名返回值代码你就明白了:
Golang梦工厂
2022-07-11
5240
探讨两种 option 编程模式的实现
在我们日常开发中,经常在初始化一个对象时需要进行属性配置,比如我们现在要写一个本地缓存库,设计本地缓存结构如下:
Golang梦工厂
2022-07-11
3380
Go语言切片面试真题8连问
切片是对数组的抽象,因为数组的长度是不可变的,在某些场景下使用起来就不是很方便,所以Go语言提供了一种灵活,功能强悍的内置类型切片("动态数组"),与数组相比切片的长度是不固定的,可以追加元素。切片是一种数据结构,切片不是数组,切片描述的是一块数组,切片结构如下:
Golang梦工厂
2022-07-11
5890
面试官:Context携带数据是线程安全的吗?
先说答案,context本身就是线程安全的,所以context携带value也是线程安全的,写个简单例子验证一下:
Golang梦工厂
2022-07-11
4710
点击加载更多
社区活动
AI代码助手快速上手训练营
鹅厂大牛带你玩转AI智能结对编程
Python精品学习库
代码在线跑,知识轻松学
博客搬家 | 分享价值百万资源包
自行/邀约他人一键搬运博客,速成社区影响力并领取好礼
技术创作特训营·精选知识专栏
往期视频·千货材料·成员作品 最新动态
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档