Go 模块--开始使用 Go Modules

Go的1.11和1.12版本包括对模块--新的Go依赖管理系统的初步支持,使依赖版本信息变得明确且更易于管理。这篇博客文章介绍了开始使用模块所需的基本操作。 模块是存储在根目录有一个 go.mod文件的文件树中的 Go 包(package)的集合。go.mod文件定义了模块的module path(也是模块根目录的导入路径)以及模块依赖的其他模块的要求,满足了依赖要求模块才能被成功构建起来。每个依赖模块的要求被写为一个模块路径和相应的模块版本。 下面展示了一个简单的go.mod文件 module...阅读全文

2020年01月05日 kevinyan
阅读:780 评论:0

Go Modules 终极入门

Go modules 是 Go 语言中正式官宣的项目依赖解决方案,Go modules(前身为vgo)于 Go1.11 正式发布,在 Go1.14 已经准备好,并且可以用在生产上(ready for production)了,Go官方也鼓励所有用户从其他依赖项管理工具迁移到 Go modules。 而 Go1.14,在近期也终于正式发布,Go 官方亲自 “喊” 你来用: 因此在今天这篇文章中,我将给大家带来 Go modules 的 “终极入门”,欢迎大家一起共同探讨。 Go modules 是...阅读全文

阅读:3166 评论:1

Go:一文读懂 Wire

> 本文作者:Che Dan > > 原文链接:<https://medium.com/@dche423/master-wire-cn-d57de86caa1b> ## Wire 是啥 [Wire](https://github.com/google/wire "Wire") 是一个轻巧的 Golang 依赖注入工具。它由 Go Cloud 团队开发,通过自动生成代码的方式在编译期完成依赖注入。 [依赖注入](https://en.wikipedia.org/wiki/...阅读全文

2020-03-13 10:03:21 polaris
阅读:10401 评论:0

gin-vue-admin 基于vue和gin 搭建的后台管理系统脚手架

gin-vue-admin 基于vue和gin 搭建的后台管理系统脚手架 项目地址:https://github.com/piexlmax/gin-vue-admin开发者(贡献者)列表开发者功能姓名@piexlmax 项目发起者 蒋*兆@krank666 前端联合作者 尹*@1319612909 前端css优化 杜*兰@granty1 代码积极贡献者 印*林gin-vue-admin gin+vue开源快速项目模板更新代码后如果遇到前端报错请执行 npm i 前端开发会不定期增加新的依赖 请注...阅读全文

2020-03-21 16:32:45 Mr奇淼
阅读:9868 评论:1

Go项目简单接入travis ci

上一篇文章提到了npm的接入 travis 实现自动发布 npm 包的方法,本文主要讲述 Go 项目的使用,主要分为执行单元测试和 build 打包发步到 github release。具体 travis 的基本操作参考上文即可,本文只讲述不同的部分 单元测试 本文不讲述 Go 的单元测试如何编写,这里直接以filenamify(一个合法化文件路径的库)为例子。已为filenamify.go编写测试文件filenamify_test.go。只需要在tracis中执行go test -v即可。 #...阅读全文

2020年03月21日 flytam
阅读:732 评论:0

关于收集,标准化和集中化处理Golang日志的一些建议

依赖分布式系统的公司组织和团队经常使用Go语言编写其应用程序,以利用Go语言诸如通道和goroutine之类的并发功能。如果你负责研发或运维Go应用程序,则考虑周全的日志记录策略可以帮助你了解用户行为,定位错误并监控应用程序的性能。 这篇文章将展开聊一些用于管理Go日志的工具和技术。我们将首先考虑要使用哪种日志记录包来满足各种记录要求。然后会介绍一些使日志更易于搜索和可靠,减少日志资源占用以及使日志消息标准化的技术。 日志包的选择 Go标准库的日志库非常简单,仅仅提供了print,panic和f...阅读全文

阅读:496 评论:0

优化 Golang 服务来减少 40% 以上的 CPU

十年前,谷歌正在面临一个由 C++ 编译时间过长所造成的严重瓶颈,并且需要一个全新的方式来解决这个问题。谷歌的工程师们通过创造了一种新的被称作 Go (又名 Golang)的语言来应对挑战。这个新语言 Go 带来了 C++ 最好的部分(最主要的是它的性能和稳定性),又与 Python 的速度相结合,使得 Go 能够在实现并发的同时快速地使用多核心。 在 Coralogix(译者注:一个提供全面日志分析的服务产品,[官网](https://coralogix.com/)),我们为了去给我们的...阅读全文

2020-03-23 21:08:13 shiluo
阅读:2233 评论:0

常用的gitignore

包括各种语言的.gitinore https://github.com/github/gitignore 如golang .idea/ .DS_Store output/ # Binaries for programs and plugins *.exe *.exe~ *.dll *.so *.dylib # Test binary, built with `go test -c` *.test # Output of the go coverage tool, specifically whe...阅读全文

2020-03-27 01:32:56 百里江山
阅读:4454 评论:0

golang 性能测试 (1)

本文介绍golang 如何做基准性能测试。 编写完代码除了跑必要的单元测试外,还需要考虑代码跑起来的性能如何。性能的衡量其实就是程序运行时候进程的内存分配,CPU消耗情况。 golang 语言在提供了功能测试的基础上,提供了丰富的性能测试功能。 SHOW CODE 首先,从一个例子来讲起。 随便写一个简单的快速排序,然后和系统自带的排序做一个性能比较。 如下为简版快排的代码: package benchmark import "sort" func QSort(data []int) { myq...阅读全文

2020-04-20 09:32:34 搬砖程序员带你飞
阅读:1578 评论:1

Golang 性能测试 (3) 协程追踪术

本文简单介绍 golang 如何做跟踪刨析。 简介 对于绝大部分服务,跟踪刨析是用不到的。但是如果遇到了下面问题,可以不妨一试: 怀疑哪个协程慢了 系统调用有问题 协程调度问题 (chan 交互、互斥锁、信号量等) 怀疑是 gc (Garbage-Collect) 影响了服务性能 网络阻塞 等等 坦白的讲,通过跟踪刨析可以看到每个协程在某一时刻在干什么。 做跟踪刨析,首先需要获取trace 数据。可以通过代码中插入trace, 或者上节提到的通过pprof 下载即可。 Example Code ...阅读全文

2020-04-20 11:32:38 搬砖程序员带你飞
阅读:1422 评论:0

2020 Golang字节面试经验分享

2020年4月份字节跳动后端面试经验 第一面 远程使用牛客网进行面试 面试官首先介绍说会有几轮面试 算法题 1.1 将整数转换二进制然后将负数 算法题 1.2 买卖股票的最大利润 给定一个数组代表股票每天的价格,请问买卖多次的情况下,最大化利润是多少?日期不重叠的情况下,可以买卖多次?输入: {100, 80, 120, 130, 70, 60, 100, 125} 可以买卖多次: 115(80买进,130卖出;60 买进,125卖出)提示:不用输出买卖的序列,只需要得到最大利润 时间复杂度是多...阅读全文

2020-04-23 11:32:35 阿俊
阅读:4502 评论:0

2020 腾讯社招Golang后端面试经验分享

file 技术一面 基础面试 一面是通过电话直接沟通 go的调度 go struct能不能比较 go defer(for defer) select可以用于什么 context包的用途 client如何实现长连接 主协程如何等其余协程完再操作 slice,len,cap,共享,扩容 map如何顺序读取 实现set 实现消息队列(多生产者,多消费者) 大文件排序 基本排序,哪些是稳定的 http get跟head http 401,403 http keep-alive http能不能一次连接多次...阅读全文

2020-04-19 03:32:46 开发者阿俊
阅读:17307 评论:2

排序算法-归并排序、堆排序、插入排序、选择排序、冒泡排序 golang

1.冒泡排序(Bubble Sort) 冒泡排序也叫做起泡排序 执行流程 1 从头开始比较每一对相邻元素,如果第1个比第2个大,就交换它们的位置 ✓ 执行完一轮后,最末尾那个元素就是最大的元素 2 忽略 1 中曾经找到的最大元素,重复执行步骤 1,直到全部元素有序 for end := len(this.Array) - 1; end > 0; end-- { for begin := 1; begin <= end; begin++ { if this.ComWithIndex(begin, ...阅读全文

2020-04-23 10:32:52 SteveKwok
阅读:685 评论:0

Golang面试题:二叉树的最大深度

问题:求二叉树的最大深度 给定一个二叉树,返回其最大深度。 示例: 1 / \ 2 3 / \ / \ 4 5 6 7 返回最大深度为3 解题思路 利用深度优先或者广度优先遍历二叉树,找到树的最大深度。 二叉树的结构体 type TreeNode struct { left *TreeNode // 左子节点 right *TreeNode // 右子节点 value int // 值 } 深度优先搜索 主要思路 1.深度优先搜索和二叉树的前序遍历比较类似。 2.利用递归的方式不停下探树的深度。...阅读全文

阅读:1437 评论:0

Linux端口转发的几种常用方法

在一些实际的场景里,我们需要通过利用一些端口转发工具,比如系统自带的命令行工具或第三方小软件,来绕过网络访问限制触及目标系统。本文总结了Linux端口转发的一些常用方法 1. SSH 端口转发 SSH 提供了一个非常有意思的功能,就是端口转发,它能够将其他 TCP 端口的网络数据通过 SSH 链接来转发,并且自动提供了相应的加密及解密服务。 (1) 本地端口转发 ssh -fgN -L 2222:localhost:22 localhost (2) 远程端口转发 ssh -fgN -R 2222...阅读全文

2020-10-10 00:32:41 易霂
阅读:779 评论:0

记一次 Go 服务内存泄漏问题调查

原文地址:https://github.com/x1nchen/bl...记录下这个问题是因为这不同于传统典型的 Go 服务内存泄漏。8月15日前后,钉钉监控告警群不定时出现服务机器内存占用超 80%告警,一开始以为是 Prometheus exporter 堆积造成的,准备下掉 Prometheusexporter 的集成代码,后来觉 得这个堆积速度太快了点,不到一天就吃掉6GB,十分夸张,所以有空的时候用 gops 快照了 一下,内存情况如下图(pprof) /app/bin # gops ...阅读全文

2020-12-25 23:32:33 .container .car 等
阅读:1639 评论:1

Go:实现秒级读取16GB文件

【译文】原文地址 如今任何计算机系统每天都会产生大量的日志或数据。随着系统的增长,将调试数据存储到数据库中是不可行的,因为它们是不可变的,主要用于分析和解决故障的目的。因此,企业倾向于将其存储在文件中,并保存在本地磁盘中。 我们将使用Golang从大小为16 GB的.txt或.log文件中提取日志,该文件有数百万行。 直接上代码,首先打开文件,将使用标准Go os.File来读取文件IO: f, err := os.Open(fileName) if err != nil { fmt.Print...阅读全文

2021-02-19 13:32:38 汪明军_3145
阅读:1511 评论:0

如果你是一个Golang面试官,你会问哪些问题?

这篇文章翻译自一位外国友人的关于面试后端程序员的文章,我比较喜爱这篇文章。一是因为它极大的拓宽了我的视角,另一方面是其中的一些问题非常具有启发性。不仅对于面试者,对于面试官来说也是个不错的参考。于是迫不及待的翻译了一下,给各位看官做个参考。原文参见 @arialdomartini的: Back-End Developer Interview Questions以下是原文翻译。通用问题开放式问题设计模式相关问题代码设计相关问题语言相关问题Web相关问题数据库相关问题非关系型数据库相关问题代码版本管...阅读全文

2021-04-27 13:37:34 mb6066e504cce6f
阅读:1066 评论:0