golang 面试题

分享出来几个go面试题,都非常简单,如果您有一些开发时候使用到的小技巧欢迎评论。 目前我写出来11个(再更新一道题目),未来会不定期更新。。。 1、写出下面代码输出内容。 package main import ( "fmt" ) func main() { defer_call() } func defer_call() { defer func() { fmt.Println("打印前") }() defer func() { fmt.Println("打印中") }() ...阅读全文

阅读:21387 评论:29

Golang性能调优(go-torch, go tool pprof)

Go语言已经为开发者内置配套了很多性能调优监控的好工具和方法,这大大提升了我们profile分析的效率。此外本文还将重点介绍和推荐uber开源的go-torch,其生成的火焰图更方便更直观的帮我们进行性能调优。我也是在实际一次的性能调优中,接触到go-torch,非常棒。 go tool pprof简介 Golang内置cpu, mem, block profiler Go强大之处是它已经在语言层面集成了profile采样工具,并且允许我们在程序的运行时使用它们,使用Go的profiler我们能...阅读全文

2017年01月04日 15:27:58 WaltonWang
阅读:1668 评论:0

golang实现图片上传

## golang实现图片上传 该代码为使用beego实现前后端图片上传。话不多说,直接上代码。 #### 1.前端代码 html代码: ~~~ <div class="col-5 f-l text text-r">背景图(必须):</div> <div class="img-box"> <label> <span class="copy-btn Hui-iconfont">&#xe679;</span> <input t...阅读全文

2017-12-25 11:43:04 dlay0806
阅读:5631 评论:5

golang 高并发下 tcp 建连数暴涨的原因分析

背景:服务需要高频发出GET请求,然后我们封装的是 golang 的net/http 库, 因为开源的比如req 和gorequsts 都是封装的net/http ,所以我们还是选用原生(req 使用不当也会掉坑里)。我们的场景是多协程从chan 中取任务,并发get 请求,然后设置超时,设置代理,完了。我们知道net/http 是自带了连接池的,能自动回收连接,但是,发现连接暴涨,起了1万个连接。 首先,我们第一版的代码是基于python 的,是没有连接暴涨的问题的,封装的requests,封...阅读全文

2018-03-14 23:33:04 caucy
阅读:3194 评论:5

Go 执行追踪器(execution tracer)

## 概述 你有没有好奇过 Go 运行时是如何调度 goroutine 的?有没有深入研究过为什么有时候加了并发但是性能没有提高? Go 提供了执行跟踪器,可以帮助你诊断性能问题(如延迟、竞争或低并发等)、解决前面那些疑问。 Go 从 1.5 版本开始有执行跟踪器这么一个工具,原理是:监听 Go 运行时的一些特定的事件,如: 1. goroutine的创建、开始和结束。 2. 阻塞/解锁goroutine的一些事件(系统调用,channel,锁) 3. 网络I/O相关事件 ...阅读全文

2018-03-21 11:31:09 polaris
阅读:4062 评论:0

Golang 项目中如何对 API 进行测试?

本文首发于我的博客 简述 在日常后端业务开发中,我们经常会写一些 api,然后用 postman 测试下是否可用,可能就直接丢到线上去了。 然鹅这样做非常不严谨, 大部分情况下还是需要对 api 进行测试,以保证可用性。 我在项目中用到的是 httpexpect, 跟 nodejs 中的 mocha 有一些类似。在这里就不对基本的单元测试做介绍了,大家翻翻 golang 入门指南之类的文档就能看到。 使用 httpexpect 是一个端对端 api 测试工具 End-to-end HTTP an...阅读全文

2018-03-31 16:59 掘金
阅读:1684 评论:0

gf框架之基本介绍 - 哈喽世界!

文章来源:http://gf.johng.cn/494366 gf框架提供了非常强大的Web Server模块,由ghttp包支持,API文档地址: godoc.org/github.com/johng-cn/gf/g/net/ghttp。 哈喽世界! 老规矩,我们先来一个Hello World: package main import "gitee.com/johng/gf/g/net/ghttp" func main() { s := ghttp.GetServer() s.BindHand...阅读全文

2018-04-16 23:34:38 John
阅读:914 评论:0

gf框架之分页模块(四) - Ajax分页

文章来源:http://gf.johng.cn/597434 Ajax分页与其他分页方式的区别在于,分页链接会使用Javascript方法来实现,该Javascript方法是分页方法,参数固定为该分页对应的分页URL地址。 完整示例如下: package main import ( "gitee.com/johng/gf/g/os/gview" "gitee.com/johng/gf/g/net/ghttp" "gitee.com/johng/gf/g/util/gpage" ) func ma...阅读全文

2018-05-21 12:34:38 John
阅读:252 评论:0

gf框架之平滑重启特性 - 功能强大灵活

文章来源:http://gf.johng.cn/625833 基本介绍 平滑重启(热重启)是指Web Server在重启的时候不会中断已有请求的执行。该特性在不同的项目版本发布的时候特别有用,例如,当需要先后发布两个版本:A、B,那么在A执行的过程当中,我们可以将B的程序直接发布覆盖A的程序,并使用平滑重启特性无缝地将请求过渡到新版本的服务中。 需要注意的是,该特性仅限于*nix系统(Linux/Unix/FreeBSD等等),在Windows下仅支持完整重启功能(请求无法平滑过渡)。 管理功能...阅读全文

阅读:594 评论:1

10个常见"刁钻"的Redis面试问题

来源:老钱 高可用架构 导读:在程序员面试过程中Redis相关的知识是常被问到的话题。作为一名在互联网技术行业打击过成百上千名的资深技术面试官,本文作者总结了面试过程中经常问到的问题。十分值得一读。 作者简介:钱文品(老钱),互联网分布式高并发技术十年老兵,目前任掌阅科技资深后端工程师。熟练使用 Java、Python、Golang 等多种计算机语言,开发过游戏,制作过网站,写过消息推送系统和MySQL 中间件,实现过开源的 ORM 框架、Web 框架、RPC 框架等 Redis在互联网技术存储...阅读全文

2018.07.24 10:09 Lewe超
阅读:1217 评论:0

Golang包管理工具之govendor的使用

本文个人博客地址为:http://www.huweihuang.com/article/golang/govendor-usage/ 本文个人博客地址为:https://huweihuang.net/article/golang/govendor-usage/ 更多golang包管理工具参考 golang包管理工具之glide的使用1. govendor简介golang工程的依赖包经常使用go get命令来获取,例如:go get github.com/kardianos/govendor ,会...阅读全文

2018年07月03日 20:25:24 tianlongtc
阅读:347 评论:0

golang适合做什么?哪里有GoLand macv2019.1.2版激活码?

JetBrAIns GoLand 2019 for Mac激活教程带给需要的朋友,这款golang适合做什么?下面一起来看看吧!Go语言主要用作服务器端开发,其定位是用来开发“大型软件”的,适合于很多程序员一起开发大型软件,并且开发周期长,支持云计算的网络服务。Go语言能够让程序员快速开发,并且在软件不断的增长过程中,它能让程序员更容易地进行维护和修改。它融合了传统编译型语言的高效性和脚本语言的易用性和富于表达性。Go语言作为服务器编程语言,很适合处理日志、数据打包、虚拟机处理、文件系统、分布式...阅读全文

2019-05-19 17:38:47 咋么回事儿
阅读:1183 评论:1

我要在栈上。不,你应该在堆上

原文地址:我要在栈上。不,你应该在堆上 MySql 性能优化的资料分享 PPT+视频 链接: https://pan.baidu.com/s/1_d6KgmvCxtLIjReYV3H5Rw 提取码: fgv5 MySQL to ES的开源项目 https://github.com/siddontang/go-mysql-elasticsearch InnoDB锁: http://blog.itpub.net/column/29 前言 我们在写代码的时候,有时候会想这个变量到底分配到哪里了?这时候...阅读全文

阅读:1176 评论:1

读源码:redigo为什么多线程不安全

redigo是golang的一个操作redis的第三方库,之所以选择这个库,是因为它的文档十分丰富,操作起来也比较简单。一个典型的redigo的使用如下所示: package main import ( "github.com/gomodule/redigo/redis" "log" ) func main() { conn, err := redis.Dial("tcp", "192.168.1.2:6379") if err != nil { log.Fatalf("dial redis f...阅读全文

2019年06月18日 CoolJee
阅读:810 评论:0

Go内存分配那些事,就这么简单!

原文链接:https://mp.weixin.qq.com/s/3g... 新老朋友好久不见,我是大彬,这篇文章准备了很久,不是在拖延,而是中间做了一些其他事情,耽搁了一些。 这篇文章主要介绍Go内存分配和Go内存管理,会轻微涉及内存申请和释放,以及Go垃圾回收。 从非常宏观的角度看,Go的内存管理就是下图这个样子,我们今天主要关注其中标红的部分。 友情提醒:文章有点长,建议先收藏,后阅读,绝对是学习内存管理的好资料。 本文基于go1.11.2,不同版本Go的内存管理可能存在差别,比如1.9与1...阅读全文

阅读:443 评论:0

Golang关于匿名结构体的一些总结

我们的故事的主人公是一个刚毕业的大学生小明: type User struct { RealName string Age int } user := User{RealName:"小明",Age:21} 25岁的时候他有了一辆车,于是我们为他定义一个车子的结构体: type Cart struct{ Brand string Price float64 } type User struct { RealName string Age int Cart Cart } cart := Cart{B...阅读全文

2019-12-13 21:32:42 游天小虾
阅读:2331 评论:0

golang 操作 elasticsearch

1、前提 1.1 docker 安装elasticsearch 查询elasticsearch 版本 docker search elasticsearch 将对应的版本拉到本地 docker.elastic.co/elasticsearch/elasticsearch:7.3.0 创建一个网络 docker network create esnet 启动容器 docker run --name es -p 9200:9200 -p 9300:9300 --network esnet -e "d...阅读全文

2020-06-11 08:32:54 hw_owen
阅读:446 评论:0