11.Go语言基础之接口

接口定义了一个对象的行为规范,接口只定义规范不实现,由具体的对象来实现规范的细节。 1.1接口类型 在Go语言中,接口(interface)是一种类型,一种抽象的类型。 interface是一组method的集合,是duck-type programming的一种体现。 接口做的事情就像是定义一个协议(规则),只要一台机器有洗衣服和甩干的功能,就是洗衣机。不关心属性(数据),只关心行为(方法)。 在Java中,也是有接口的概念的。 1.2为什么要使用接口 package main import ...阅读全文

51CTO博客 2020-02-06 13:16:57 DevOperater

基于Go博客wblog的理解和修改。

初衷 ​ 自学Go语言已经一段时间,想通过博客更深入理解go语言。最终通过Gin语言定位了wblog博客框架。wblog是基于基于gin+gorm开发的个人博客项目。 ​ 学习别人的博客是一个抓狂的过程,不仅要疯狂学习扩展的知识,比如gin框架,gorm,还要理解原作者的思想和构建过程。 ​ 原项目仅做了简单的英文注释。我则根据原项目增添了很多自己理解的注释和说明,方便其他后来人学习参考。同时更新原项目依赖,可以一键运行。 修改 增加了中文注释,更多的是我对原项目的理解,方便其他人理解和学习。 ...阅读全文

51CTO博客 2020-02-06 12:10:25 moakia

Prometheus vs Zabbix

一、开发语言zabbix 后端用 C 开发,界面用 PHP 开发,定制化难度很高。Prometheus 后端用 golang 开发,前端是 Grafana,JSON 编辑即可解决。定制化难度较低。二、集群规模zabbix 集群规模上限为 10000 个节点。Prometheus 支持更大的集群规模,速度也更快。三、能够监控的环境zabbix 更适合监控物理机环境。Prometheus 更适合云环境的监控,对 OpenStack,Kubernetes 有更好的集成。四、使用的数据库zabbix 监...阅读全文

简书 2020-02-06 17:32:46 聖桀

共抗疫情,教学不延迟:EasyDSS轻松开启线上视频学习平台

随着前端技术的不断发展,视频点播早已不再是IE6时代的浏览器嵌入式Windows Media Player,也不是后来的flash media player需要的rtmp点播流,现在能够唯一满足全终端、全平台、H5播放,这些条件的,可能只有HLS协议了(也就是大家熟悉的m3u8流)。尤其现在正处于疫情防控期间,由于严密的疫情防控,学生开课延迟,各大教育机构为了确保学生能够准时复课上学,纷纷启用了线上授课的教学方式。基于这样的大背景,线上课堂点播的发展也迎来了新的升级,在音视频点播/直播服务日渐发...阅读全文

golang 操作mysql示例(增、删、改、查、事务)

准备 go的系统包里是没有数据库驱动的,首先先从git上下载mysql包,golang下载资源包相当方便,打开命令行,输入命令:go get -u github.com/go-sql-driver/mysql (使用git命令下载资源包,需要先安装git,没安装git的同学可以手动下载后放入src目录下)。! 下载完成会在GOPATH下的src里多了资源包 下载完成后,在项目里import mysql包,用下划线_是表示我们只需要用到包里的init()函数,而不需要调用里面的方法。 import...阅读全文

Segmentfault 2020-02-11 18:32:33 叶子

Prometheus 折腾笔记

<h1 align="center">《 Prometheus 折腾笔记 》</h1> 最近以来都很想写写关于这段时间以来折腾 Prometheus 的心得,但是人总是有惰性的,拖延是会上瘾的。 正所谓,拖更一时爽,一直拖就一直爽 ????。 有时候人的动力来源就很迷,你也说不出为什么,就是突然地他就心血来潮开写了,像这样 ????! ### 目录 * [0x01-云原生的来源](https://github.com/chenjiandongx/prometheus...阅读全文

Go语言中文网 2020-02-06 12:22:48 chenjiandongx

使用 gorilla/mux 增强 Go HTTP 服务器的路由能力

今天这篇文章我们将会为我们之前编写的HTTP服务器加上复杂路由的功能以及对路由进行分组管理。在之前的文章《深入学习用 Go 编写HTTP服务器》中详细地讲了使用net/http进行路由注册、监听网络连接、处理请求、安全关停服务的实现方法,使用起来非常方便。但是net/http有一点做的不是非常好的是,它没有提供类似URL片段解析、路由参数绑定这样的复杂路由功能。好在在Go社区中有一个非常流行的gorilla/mux包,它提供了对复杂路由功能的支持。在今天这篇文章中我们将探究如何用gorilla/...阅读全文

掘金 2020年02月05日 kevinyan

leetcode 653 两数之和

跑次树的遍历,可添加到 hashmap 中维护,就变成两数之和I 了。我添加到了 list 中,应该换一下......列表中的话,应该也可以用双指针!!! Definition for a binary tree node. class TreeNode(object): def init(self, x): self.val = x self.left = None self.right = None class Solution(object): def findTarget(self, r...阅读全文

简书 2020-02-06 03:32:40 LukeRivel

使用gorilla/mux增强Go HTTP服务器的路由能力

今天这篇文章我们将会为我们之前编写的HTTP服务器加上复杂路由的功能以及对路由进行分组管理。在之前的文章《深入学习用 Go 编写HTTP服务器》中详细地讲了使用net/http进行路由注册、监听网络连接、处理请求、安全关停服务的实现方法,使用起来非常方便。但是net/http有一点做的不是非常好的是,它没有提供类似URL片段解析、路由参数绑定这样的复杂路由功能。好在在Go社区中有一个非常流行的gorilla/mux包,它提供了对复杂路由功能的支持。在今天这篇文章中我们将探究如何用gorilla/...阅读全文

Segmentfault 2020-02-11 09:32:33 Kevin

通过Nacos让Nginx拥有服务发现能力

背景 先来回忆一下, nginx 如何配置多个实例的负载均衡,配置如下: upstream serverList { server 172.17.0.111:9999; server 172.17.0.110:9999; } server { location / { proxy_pass http://serverList; } } 当我们的服务实例变化时,要手动修改 nginx.conf 然后 nginx -s reload 。 在微服务架构下,我们的服务均已经注册到 注册中心 例如(nac...阅读全文

简书 2020-02-05 19:32:47 冷冷gg

golang多协程顺序打印数字

思路: 利用原子性操作,实现一个自旋锁.实现多协程顺序打印数字 import ( "fmt" "sync/atomic" "time" ) //原子操作的变量. var Count int32 //实现一个自旋锁操作. func SpinLock(i int32, fn func()) { for { //一个死循环. //查看原子操作的值.如果相等则执行函数 if n := atomic.LoadInt32(&Count); n == i { fn() atomic.AddInt32(&Cou...阅读全文

简书 2020-02-05 19:32:46 百里江山

go代理设置转载https://www.cnblogs.com/lijiejoy/p/11520944.html

在Go 1.13中,我们可以通过GOPROXY来控制代理,以及通过GOPRIVATE控制私有库不走代理。 设置GOPROXY代理: go env -w GOPROXY=https://goproxy.cn,direct 设置GOPRIVATE来跳过私有库,比如常用的Gitlab或Gitee,中间使用逗号分隔: go env -w GOPRIVATE=*.gitlab.com,*.gitee.com 如果在运行go mod vendor时,提示Get https://sum.golang.org/...阅读全文

简书 2020-02-05 19:32:45 风洛神

Centos7 安装Go环境

下载最新版的SDK压缩包,传送门:https://golang.org/dl/ 点击下载Linux版本 使用WinScp软件将安装包上传到/opt/目录下,使用解压命令解压刚上传的压缩文件到/usr/loacl/下:tar -zxvf go1.13.7.linux-amd64.tar.gz -C /usr/local/,解压完之后进去该目录即可看到一个目录:go。 指定Go项目的存放路径,在/usr/loacl/下,键入命令:mkdir gocode即可。 配置环境变量。修改配置文件,键入命令:...阅读全文

简书 2020-02-05 19:32:42 immersive_world

golang 全能的模拟请求方法(含代理IP功能)

前言 我们在做一些自动化业务或者爬虫业务的时候常常要用到模拟请求,例如模拟登录,模拟购买,抓取页面内容等。如果抓取的页面是一个毫无权限校验的普通页面,那只用Get方法即可,但现实往往比较残酷,不是都那么轻易的被你采集。在一个有登录判断的页面,你可能要伪造cookie,header等;如果IP被限制了访问次数,你还需要使用到代理IP。 一个常规的请求如下图: 代码 方法代码: package utils import ( "bytes" "encoding/json" "fmt" "io/iout...阅读全文

Segmentfault 2020-02-11 09:32:32 叶子

go语言实现普通文件下载和带进度条的大文件下载,实时显示下载进度

### 普通文件下载 ** 文章转自go语言中文文档 [http://www.topgoer.com](http://www.topgoer.com/?from=studygolang "文章转自go语言中文文档http://www.topgoer.com") ** 本示例说明如何从网上将文件下载到本地计算机。通过io.Copy()直接使用并传递响应主体,我们将数据流式传输到文件中,而不必将其全部加载到内存中-小文件不是问题,但下载大文件时会有所不同。 ```go packa...阅读全文

Go语言中文网 2020-02-05 12:06:01 lu569368

浅谈协程和Go语言的Goroutine

0x00.前言前面写了一篇初识Go语言和大家一起学习了Go语言的巨大潜力、语言简史、杀手锏特性等,感兴趣的读者可以回顾一下。今天来学习Go语言的Goroutine机制,这也可能是Go语言最为吸引人的特性了,理解它对于掌握Go语言大有裨益,话不多说开始吧!通过本文你将了解到以下内容:什么是协程以及横向对比优势Go语言的Goroutine机制底层原理和特点0x01.聊聊协程大家对于进程、线程二位明星都很熟悉,但协程就没有火了,是协程不是携程哦!协程并不是Go语言特有的机制,相反像Lua、Ruby、P...阅读全文

掘金 2020年02月05日 后端技术指南针

Go 每日一库之 cast

简介 今天我们再来介绍 spf13 大神的另一个库cast。cast是一个小巧、实用的类型转换库,用于将一个类型转为另一个类型。 最初开发cast是用在hugo中的。 快速使用 先安装: $ go get github.com/spf13/cast 复制代码后使用: package main import ( "fmt" "github.com/spf13/cast" ) func main() { // ToString fmt.Println(cast.ToString("leedarjun...阅读全文

掘金 2020年02月04日 darjun

TS(JS)与 Go

编译原理 JavaScript 是一门解释型语言或即时编译型语言,在运行时通过编译生成二进制机器码,它的运行大致经过以下几个阶段(以 V8 引擎为例): 如果使用了 TypeScript,则在运行之前 TypeScript 将会编译成 JavaScript 代码。 v8 引擎首先会解析源码,生成抽象语法树(AST),基于 AST,解释器便可以开始工作生成字节码,经过编译器后生成可以运行的机器码。 Go 是一门编译型语言,在代码***运行之前***需要通过编译器生成二进制机器码。它的编译过程大致如...阅读全文

掘金 2020年02月05日 三毛丶