Go操作etcd

etcd是近几年比较火热的一个开源的、分布式的键值对数据存储系统,提供共享配置、服务的注册和发现,本文主要介绍etcd的安装和使用。 etcd etcd介绍 etcd是使用Go语言开发的一个开源的、高可用的分布式key-value存储系统,可以用于配置共享和服务的注册和发现。 类似项目有zookeeper和consul。 etcd具有以下特点: 完全复制:集群中的每个节点都可以使用完整的存档 高可用性:Etcd可用于避免硬件的单点故障或网络问题 一致性:每次读取都会返回跨多主机的最新写入 简单
分类: 其他 发布时间: 09-13 20:05 阅读次数: 0

Go语言标准库之net_http

Go语言内置的net/http包十分的优秀,提供了HTTP客户端和服务端的实现。 net/http介绍 Go语言内置的net/http包提供了HTTP客户端和服务端的实现。 HTTP协议 超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络传输协议,所有的WWW文件都必须遵守这个标准。设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法。 HTTP客户端 基本的HTTP/HTTPS请求 Get、Head、Post和Pos
分类: 其他 发布时间: 09-13 20:05 阅读次数: 0

Go语言基础之变量和常量

变量和常量是编程中必不可少的部分,也是很好理解的一部分。 标识符与关键字 标识符 在编程语言中标识符就是程序员定义的具有特殊意义的词,比如变量名、常量名、函数名等等。 Go语言中标识符由字母数字和_(下划线)组成,并且只能以字母和_开头。 举几个例子:abc, _, _123, a123。 关键字 关键字是指编程语言中预先定义好的具有特殊含义的标识符。 关键字和保留字都不建议用作变量名。 Go语言中有25个关键字: break default func
分类: 其他 发布时间: 09-13 20:05 阅读次数: 0

LeetCode go

用Go语言刷LeetCode记录,只是为了练习Go语言,能力有限不保证都是最优解,只能在此抛转引玉了。 数据结构和算法 数据结构和算法是程序员的命根子,没了命根子也就没有了尊严。 1. 两数之和 题目描述 力扣(LeetCode)链接 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。 你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。 示例: 给定 nums = [2, 7, 11, 15]
分类: 其他 发布时间: 09-13 20:05 阅读次数: 0

Go语言标准库之fmt

fmt标准库是我们在学习Go语言过程中接触最早最频繁的一个了,本文介绍了fmtb包的一些常用函数。 fmt fmt包实现了类似C语言printf和scanf的格式化I/O。主要分为向外输出内容和获取输入内容两大部分。 向外输出 标准库fmt提供了以下几种输出相关函数。 Print Print系列函数会将内容输出到系统的标准输出,区别在于Print函数直接输出内容,Printf函数支持格式化输出字符串,Println函数会在输出内容的结尾添加一个换行符。 func Print(a ...inte
分类: 其他 发布时间: 09-13 20:05 阅读次数: 0

为什么你应该学习Go语言?

终于等到你!Go语言——让你用写Python代码的开发效率编写C语言代码。 为什么互联网世界需要Go语言 世界上已经有太多太多的编程语言了,为什么又出来一个Go语言? 硬件限制:摩尔定律已然失效 摩尔定律:当价格不变时,集成电路上可容纳的元器件的数目,约每隔18-24个月便会增加一倍,性能也将提升一倍。 换言之,每一美元所能买到的电脑性能,将每隔18-24个月翻一倍以上。 从上面的图表可以看出,近十年单线程性能和处理器频率保持稳定。我们不能像之前一样把添加更多晶体管当成是解决方案,因为在较小规
分类: 其他 发布时间: 09-13 20:05 阅读次数: 0

解决go get下载包失败问题

由于某些不可抗力的原因,国内使用go get命令安装包时会经常会出现timeout的问题。本文介绍几个常用的解决办法。 从github克隆 golang在github上建立了一个镜像库,如https://github.com/golang/net就对应是 https://golang.org/x/net的镜像库。 要下载golang.org/x/net包,可以在本地创建包的目录后使用git clone来拉取相应包的源代码文件,具体操作如下: mkdir -p $GOPATH/src/golan
分类: 其他 发布时间: 09-13 20:05 阅读次数: 0

Go操作kafka

Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模的网站中的所有动作流数据,具有高性能、持久化、多副本备份、横向扩展等特点。本文介绍了如何使用Go语言发送和接收kafka消息。 sarama Go语言中连接kafka使用第三方库:github.com/Shopify/sarama。 下载及安装 go get github.com/Shopify/sarama 注意事项 sarama v1.20之后的版本加入了zstd压缩算法,需要用到cgo,在Windows平台编译时会提示
分类: 其他 发布时间: 09-13 20:05 阅读次数: 0

Go语言基础之反射

本文介绍了Go语言反射的意义和基本使用。 变量的内在机制 Go语言中的变量是分为两部分的: 类型信息:预先定义好的元信息。 值信息:程序运行过程中可动态变化的。 反射介绍 反射是指在程序运行期对程序本身进行访问和修改的能力。程序在编译时,变量被转换为内存地址,变量名不会被编译器写入到可执行部分。在运行程序时,程序无法获取自身的信息。 支持反射的语言可以在程序编译期将变量的反射信息,如字段名称、类型信息、结构体信息等整合到可执行文件中,并给程序提供接口访问反射信息,这样就可以在程序运行期获取类型
分类: 其他 发布时间: 09-13 20:05 阅读次数: 0

妾多伤神伤身——惠妾

妾太多,就是伤神伤身,真的! 去年是苏妾(Surface),性子强,折腾了我好久,今年一直默不作声了两年的惠妾(HP)也闹起别扭来了。 事情的起因是惠妾穿上1903以后,各种发烧咳嗽,于是我到处求医,这时有人提醒我,可能不是1903的问题,而是硬盘出故障了~(是哪个乌鸦嘴说的赶紧自己粗来,我保证不打死你!) 我不信是硬盘问题,想着只要给惠妾把以前的衣服换回来就好了,结果换衣服时,遇到各种阻碍,好不容易换了个1703的,仍是各种发烧咳嗽,看来真的要检查硬盘了。于是我深入硬盘腹地,几番探查,果然有
分类: 其他 发布时间: 09-13 19:49 阅读次数: 0

Python程序中的进程操作--—--开启多进程

Python程序中的进程操作--—--开启多进程 之前我们已经了解了很多进程相关的理论知识,了解进程是什么应该不再困难了,刚刚我们已经了解了,运行中的程序就是一个进程。所有的进程都是通过它的父进程来创建的。因此,运行起来的python程序也是一个进程,那么我们也可以在程序中再创建进程。多个进程可以实现并发效果,也就是说,当我们的程序中存在多个进程的时候,在某些时候,就会让程序的执行速度变快。以我们之前所学的知识,并不能实现创建进程这个功能,所以我们就需要借助python中强大的模块。 一、mu
分类: 其他 发布时间: 09-13 19:49 阅读次数: 0

Go第三方日志库logrus

日志是程序中必不可少的一个环节,由于Go语言内置的日志库功能比较简洁,我们在实际开发中通常会选择使用第三方的日志库来进行开发。本文介绍了logrus这个日志库的基本使用。 logrus介绍 Logrus是Go(golang)的结构化logger,与标准库logger完全API兼容。 它有以下特点: 完全兼容标准日志库,拥有七种日志级别:Trace, Debug, Info, Warning, Error, Fataland Panic。 可扩展的Hook机制,允许使用者通过Hook的方式将日志
分类: 其他 发布时间: 09-13 19:49 阅读次数: 0

Go语言基础之文件操作

本文主要介绍了Go语言中文件读写的相关操作。 文件是什么? 计算机中的文件是存储在外部介质(通常是磁盘)上的数据集合,文件分为文本文件和二进制文件。 打开和关闭文件 os.Open()函数能够打开一个文件,返回一个*File和一个err。对得到的文件实例调用close()方法能够关闭文件。 package main import ( "fmt" "os" ) func main() { // 只读方式打开当前目录下的main.
分类: 其他 发布时间: 09-13 19:49 阅读次数: 0

Go操作MySQL

MySQL是常用的关系型数据库,本文介绍了Go语言如何操作MySQL数据库。 Go操作MySQL 连接 Go语言中的database/sql包提供了保证SQL或类SQL数据库的泛用接口,并不提供具体的数据库驱动。使用database/sql包时必须注入(至少)一个数据库驱动。 我们常用的数据库基本上都有完整的第三方实现。例如:MySQL驱动 下载依赖 go get -u github.com/go-sql-driver/mysql 使用MySQL驱动 func Open(driverName,
分类: 其他 发布时间: 09-13 19:49 阅读次数: 0

Go语言基础之结构体

Go语言中没有“类”的概念,也不支持“类”的继承等面向对象的概念。Go语言中通过结构体的内嵌再配合接口比面向对象具有更高的扩展性和灵活性。 类型别名和自定义类型 自定义类型 在Go语言中有一些基本的数据类型,如string、整型、浮点型、布尔等数据类型, Go语言中可以使用type关键字来定义自定义类型。 自定义类型是定义了一个全新的类型。我们可以基于内置的基本类型定义,也可以通过struct定义。例如: //将MyInt定义为int类型 type MyInt int 通过Type关键字的定义
分类: 其他 发布时间: 09-13 19:49 阅读次数: 0

二进制协议gob及msgpack介绍

本文主要介绍二进制协议gob及msgpack的基本使用。 最近在写一个gin框架的session服务时遇到了一个问题,Go语言中的json包在序列化空接口存放的数字类型(整型、浮点型等)都序列化成float64类型。 我们构造一个结构体如下: type s struct { data map[string]interface{} } json序列化的问题 func jsonDemo() { var s1 = s{ data: make(map[string]in
分类: 其他 发布时间: 09-13 19:49 阅读次数: 0

Go语言标准库之context

在 Go http包的Server中,每一个请求在都有一个对应的 goroutine 去处理。请求处理函数通常会启动额外的 goroutine 用来访问后端服务,比如数据库和RPC服务。用来处理一个请求的 goroutine 通常需要访问一些与请求特定的数据,比如终端用户的身份认证信息、验证相关的token、请求的截止时间。 当一个请求被取消或超时时,所有用来处理该请求的 goroutine 都应该迅速退出,然后系统才能释放这些 goroutine 占用的资源。 为什么需要Context 基本
分类: 其他 发布时间: 09-13 19:49 阅读次数: 0

Go操作NSQ

NSQ是目前比较流行的一个分布式的消息队列,本文主要介绍了NSQ及Go语言如何操作NSQ。 NSQ NSQ介绍 NSQ是Go语言编写的一个开源的实时分布式内存消息队列,其性能十分优异。 NSQ的优势有以下优势: NSQ提倡分布式和分散的拓扑,没有单点故障,支持容错和高可用性,并提供可靠的消息交付保证 NSQ支持横向扩展,没有任何集中式代理。 NSQ易于配置和部署,并且内置了管理界面。 NSQ的应用场景 通常来说,消息队列都适用以下场景。 异步处理 参照下图利用消息队列把业务流程中的非关键流程异
分类: 其他 发布时间: 09-13 19:49 阅读次数: 0

Go依赖管理及Go module使用

Go语言的依赖管理随着版本的更迭正逐渐完善起来。 依赖管理 为什么需要依赖管理 最早的时候,Go所依赖的所有的第三方库都放在GOPATH这个目录下面。这就导致了同一个库只能保存一个版本的代码。如果不同的项目依赖同一个第三方的库的不同版本,应该怎么解决? godep Go语言从v1.5开始开始引入vendor模式,如果项目目录下有vendor目录,那么go工具链会优先使用vendor内的包进行编译、测试等。 godep是一个通过vender模式实现的Go语言的第三方依赖管理工具,类似的还有由社区
分类: 其他 发布时间: 09-13 19:49 阅读次数: 0

从零开始搭建Go语言开发环境

一步一步,从零搭建Go语言开发环境。 安装Go语言及搭建Go语言开发环境 下载 下载地址 Go官网下载地址:https://golang.org/dl/ Go官方镜像站(推荐):https://golang.google.cn/dl/ 版本的选择 Windows平台和Mac平台推荐下载可执行文件版,Linux平台下载压缩文件版。 安装 Windows安装 此安装实例以 64位Win10系统安装 Go1.11.5可执行文件版本为例。 将上一步选好的安装包下载到本地。 双击下载好的文件 Linux
分类: 其他 发布时间: 09-13 19:49 阅读次数: 0
今日推荐