第一个Go程序

学习一门新的编程语言,当然躲不过hello world了。下面是go版本的hello world package main // 声明自己属于main包 import "fmt" // 导入标准库代码包fmt // 入口函数,也称主函数 func main() { fmt.Println("Hello World") // 打印Hello World } goland可以直接点run运行,也可以使用命令行来执行。 cd到该文件目录下 go build main.go // main.go是该文件...阅读全文

Segmentfault 2020-02-28 11:32:33 iuoui

爬虫管理平台 Crawlab v0.4.7 发布(界面上配置 Scrapy + Git 同步)

前言 本次更新包括几个部分: 更好的支持 Scrapy 爬虫 支持 Git 仓库同步 支持长任务 更好的爬虫管理 更新日志 功能 / 优化 更好的支持 Scrapy. 爬虫识别,settings.py 配置,日志级别选择,爬虫选择. #435 Git 同步. 允许用户将 Git 项目同步到 Crawlab. 长任务支持. 用户可以添加长任务爬虫,这些爬虫可以跑长期运行的任务. 425 爬虫列表优化. 分状态任务列数统计,任务列表详情弹出框,图例. 425 版本升级检测. 检测最新版本,通知用户升...阅读全文

Segmentfault 2020-02-28 09:32:34 MarvinZhang

Go交叉编译windows程序

在Mac下编译一个调用了 sqlite3 的程序。 安装 sqlite3 运行 go get github.com/mattn/go-sqlite3 go install github.com/mattn/go-sqlite3 windows安装sqlite3 请访问 SQLite 下载页面,从 Windows 区下载预编译的二进制文件。 您需要下载 sqlite-tools-.zip 和 sqlite-dll-.zip 压缩文件。然后创建文件夹 C:\sqlite,并在此文件夹下解压上面两个压...阅读全文

Segmentfault 2020-02-27 19:32:32 xfstart07

关于go get的小知识

1. go get与go install 可能有同学在刚使用go get的时候会有一个小疑问,就是有些包go get下来的时候,有些包会“下载”一个二进制包在GOPATH/bin目录下,有些又没有。其实这是因为go get这个命令会分两步走,一个是下载源码包,一个是执行go install。所以有些包里面有main包的时候,下载完源码包就可以被go install编译放在GOPATH/bin目录下。来看个小例子。 起先,我的GOPATH/bin目录下没有something.exe,在执行"go ...阅读全文

51CTO博客 2020-02-23 17:04:45 wx5e1abbbb0a5e5

golang接口使用记录

golang接口使用记录 1. 总述 接口类型是对其他类型行为的概括与抽象,Go语言的独特之在于它是隐式实现,无需申明它实现哪些接口,只要提供接口所必须的方法即可。 接口即约定 实现单词和行的计数器,考虑使用bufio.ScanWords // counter.go // 计数器 type Counter interface { Count(fileName string) error } // 单词计数 type WordCount int func (w *WordCount) Count(...阅读全文

Segmentfault 2020-02-27 18:32:36 进击的大只文

第三十章: Go语言与RabbitMQ

RabbitMQ 概述 RabbitMQ是采用Erlang编程语言实现了高级消息队列协议AMQP (Advanced Message Queuing Protocol)的开源消息代理软件(消息队列中间件) 市面上流行的消息队列中间件有很多种,而RabbitMQ只是其中比较流行的一种 我们简单说说消息队列中间件的作用 解耦 削峰 异步处理 缓存存储 消息通信 提高系统拓展性 RabbitMQ 特点 可靠性 通过一些机制例如,持久化,传输确认等来确保消息传递的可靠性 拓展性 多个RabbitMQ节点...阅读全文

简书 2020-02-24 01:32:45 captain89

Go基础-012 练习题集合

1.老鼠试毒 10 只老鼠(小白鼠),1000 瓶水,其中一瓶有毒药,老鼠喝毒药水 1 个小时死掉。 要求利用 10 只老鼠,在 1 个小时内找出那瓶水有毒。 经典思路: 将 1000 瓶水从 1 至 1000 编号。 将10只老鼠从 1 至 10 编号。 将水瓶的编号转为 2 进制数据,至多有 1000 瓶水,至多需要 10 个位即可。 例如: 之后控制老鼠喝水,将老鼠的编号与水瓶编号二进制位对应。如果某瓶水的编号第一位为 1,则让 1 号老鼠喝水,第二位为 1 则让 2 号老鼠喝水,以此类推...阅读全文

简书 2020-02-24 01:32:44 LikePlayAPiano

Gin 源码学习(一)丨请求中 URL 的参数是如何解析的?

If you need performance and good productivity, you will love Gin. 这是 Gin 源码学习的第一篇,为什么是 Gin 呢? 正如 Gin 官方文档中所说,Gin 是一个注重性能和生产的 web 框架,并且号称其性能要比 httprouter 快近40倍,这是选择 Gin 作为源码学习的理由之一,因为其注重性能;其次是 Go 自带函数库中的 net 库和 context 库,如果要说为什么 Go 能在国内这么火热,那么原因肯定和 ne...阅读全文

掘金 2020年02月23日 ColeLie

深入理解Golang之context

前言 这篇文章将介绍Golang并发编程中常用到一种编程模式:context。本文将从为什么需要context出发,深入了解context的实现原理,以及了解如何使用context。 为什么需要context 在并发程序中,由于超时、取消操作或者一些异常情况,往往需要进行抢占操作或者中断后续操作。熟悉channel的朋友应该都见过使用done channel来处理此类问题。比如以下这个例子: func main() { messages := make(chan int, 10) done :=...阅读全文

掘金 2020年02月23日 Turling_hu

goim 中的 watchOps 在监听什么?

goim 文章系列(共6篇): goim 架构与定制 从goim定制, 浅谈 golang 的 interface 解耦合与gRPC goim中的 bilibili/discovery (eureka)基本概念及应用 goim 的 data flow 数据流 goim的业务集成(分享会小结与QA) goim 中的 watchOps 在监听什么? 问题在这里github.com/Terry-Mao/g… 提到的询问是: 对于watchOps的理解,理解成房间应该是有偏差的。 1、watchOps ...阅读全文

掘金 2020年02月23日 tsingson

Golang 简单的读负责均衡

read-loadbalance master-slave(n) 读库集群负载均衡器(简单轮询)+时间间隔错峰。github 地址:https://github.com/Plen-wang/read-loadbalance 使用场景 1.一般我们会有多个从库,需要在从库的读取上做负载均衡。 2.在数仓拉取数据的时候经常对产线DB造成影响,所以会独立一个从库专门用来拉取,但是这个从库的利用率非常低。数仓拉取数据一般在业务低峰期进行,iops峰值较高,但是持续时间很短。我们可以错开这个时间段,让这台...阅读全文

51CTO博客 2020-02-23 16:01:51 王清培

第三章 九析带你轻松完爆 go - 变量声明

1 前言 go 语言跟很多编译型语言一样,在使用变量前首先需要声明。声明方式有两种:单行声明和批量声明,声明关键字为 var,且如果声明局部变量而不使用则会编译报错。 同时需要注意的是,go 语言语句并没有分号“;”做结尾,并且单行声明语法如下:var var_name var_type 例如:var name string 批量声明语法如下:var ( name string age int gender string)2 代码样例 如下是 go 语言使用过程中一个代码样例:package m...阅读全文

51CTO博客 2020-02-23 14:10:57 九析

第二章 九析带你轻松完爆 go - vscode 集成开发环境

1 前言 使用 vscode 作为 go 语言的开发环境,vscode 下载和安装过程就不介绍了,直接下二进制包然后图形化安装即可。2 下载 go 语言支持包 选择 vscode 的扩展菜单(extensions),填写 go,然后选择安装:3 编写 hello world 根据我上章内容设置 GO 项目结构,然后用 vscode 打开目录,比如我的目录结构如下:$GOPATH/src/jiuxi.org/jiuxi/helloworld 创建 main.go 文件,内容如下:4 编译 hell...阅读全文

51CTO博客 2020-02-23 00:06:01 九析

第一章 九析带你轻松完爆 go - 项目结构

目录1 前言2 GO 项目结构 2.1 随意开发者 2.2 不随意开发者 2.3 企业开发者1 前言 忽略了 GO SDK 的下载安装环节,因为我觉得这东西也要写的话,实在是侮辱各位的智商。 忽略了 GO PATH 环境变量配置环节,其实你只是在环境变量里加一个 GOPATH,里面存放你将来编写的代码而已。仅此而已。 好了,那我们开始吧。2 GO 项目结构 所谓 GO 项目结构,完全就是一种标准化的推荐,就像你进了一家饭店,总是有些招牌菜一样,所谓的招牌菜,也就是店家和客人都觉得好的菜,但是到底...阅读全文

51CTO博客 2020-02-22 23:12:08 九析

gob 新的数据编码方式(序列化与反序列化数据)

介绍 数据在网络上传输,不同的服务端通信需要基于一定的协议进行交换数据。发送端encode编码数据,接收端decode解码数据。 常见的的一些数据编码方式:json,xml,proto buffers, html等 gob 与json,xml类似是一种基于go原生的数据 使用场景 为什么go 定义了新的一种数据编码方式? 常见的数据编码如json,xml等,是为了兼容已经存在的数据编码方式,可以与其他语言服务进行通信。 对于两端同样是go开发的服务,可以使用gob进行更快,更高效的数据传输。 优...阅读全文

go语言中那样让你吃惊的东西

本文面向golang的新手,第一次接触golang时可能会吃惊的地方 1. 以大小写开头来决定一个声明是包内可见,还是包外可见 如果一个常量/变量/类型/函数 它的名称是小写字母开头,则它是一个内部的,只能在同一个包内访问。 反之它是导出到外部的。 ~/go/src/a.go package a import “b” var name = b.lower // error var name = b.Upper // correct ~/go/src/b.go package b const lo...阅读全文

简书 2020-02-23 23:32:45 林晨chris

第四章 九析带你轻松完爆 go - 常量使用

1 单行声明 常量单行声明使用的语法如下。常量声明的位置可以是全局(所有函数外部)、局部(函数内部)。// PI is for math caculateconst PI = 3.142 批量声明 批量声明的方法跟变量声明类似,语法如下:const ( MON = 1 TUD = 2 WEN = 3 )3 iota 使用 iota 是常量的初始值定义符。默认值是 0。但是如果在批量常量定义的时候,出现在第几行,值等于“行号-1”。3.1 依次递增 代码如下:const ( t1 = iota t...阅读全文

51CTO博客 2020-02-23 18:43:12 九析

golang 测试gotests

如果没有安装gotests, 首先安装: go get -u github.com/cweill/gotests 为指定函数生成单元测试 gotests -only 函数名 待测函数所在文件 生成某一文件内的全部函数的单元测试 gotests -all 文件名称 这两个命令会将单元测试的代码输出到terminal终端上。 想输出到文件,可后接-w选项,会自动生成类似源文件名称_test.go这样的测试文件。 gotests -only 函数名 -w 待测函数所在文件 gotests -all -...阅读全文

简书 2020-02-23 18:32:54 金果儿

Go Web 编程--应用ORM

这篇文章我们主要探究下面这些内容。gorm的基本用法如何管理ORM的使用如何合理规划项目目录结构安装gorm包gorm是一个出色的,对开发人员友好的 Golang ORM 库,其支持的特性包括:全特性 ORM (几乎包含所有特性)模型关联 (一对一, 一对多,一对多(反向), 多对多, 多态关联)钩子 (Before/After Create/Save/Update/Delete/Find)预加载事务复合主键SQL 构造器自动迁移日志使用如下命令进行安装:go get -u github.com...阅读全文

简书 2020-02-23 18:32:54 Java天天