win10下golang使用protobuf

json与protobuf做数据传输对比: json用起来的确很方便。但相对于protobuf数据量更大些。做一个移动端应用,为用户省点流量还是很有必要的。正好也可以学习一下protobuf的使用 0、跟Json相比,protobuf 的优缺点: 优点: 性能更高,更加规范; 编解码速度快,数据体积小; 使用统一的规范,不用再担心大小写不同导致解析失败等问题。 缺点: 失去了一些便利性; 改动协议字段,需要重新生成文件; 数据没有可读性; 1、安装protobuf库文件 方法(1)使用go ge...阅读全文

简书 2017.09.21 17:37 Gospel元嘉

Golang视角下的设计模式

这篇文章想聊聊Golang语言下的设计模式问题,我觉得这个话题还是比较有意思的。Golang没有像java那样对设计模式疯狂的迷恋,而是摆出了一份“看庭前花开花落,望天空云卷云舒”的姿态。 单例模式: Gloang的单例模式该怎么写?随手写一个,不错,立马写出来了。但这个代码有什么问题呢?多个协程同时执行这段代码就会出现问题:instance可能会被赋值多次,这段代码是线程不安全的代码。那么如何保证在多线程下只执行一次呢?条件反射:加锁。。。加锁是可以解决问题。但不是最优的方案,因为如果有1W并...阅读全文

基于Go语言构建的万亿级流量大数据平台架构

党合萱 硕士毕业于西安电子科技大学,曾就职于阿里云存储部门,主要从事存储服务相关功能的设计与开发工作。于2016年加入七牛云,主要负责流式计算与离线计算服务pipeline的架构和开发工作。目前pipeline承载公司每天超过千亿、超过百TB的数据处理。 今天的分享主要围绕七牛在最近一年时间里面开发的大数据平台进行展开,目前我们的平台已经承载了公司核心业务的运营;关于我们的产品,主要会从一个场景展开进行介绍,当中包含了我们在设计过程中遇到的挑战以及解决方案。也欢迎大家基于这些问题和我们展开交流与...阅读全文

简书 2017.09.21 17:24 NewTech观察圈

golang slice

#slice append 实现 s2 := append(s1, *) 切片s1上记录的切片信息复制给s2, 1.如果s1指向的底层array长度不够,append的过程会发生如下操作:内存中不仅新开辟一块区域存储append后的切片信息,而且需要新开辟一块区域存储底层array(复制原来的array至这块新array中),最后再append新数据进新array中,这样,s2指向新array。 2.如果s1指向的底层array长度够, s2和s1指向同一个array,append的结果是内存中...阅读全文

开源中国博客 2017-09-21 17:33:13 1071954237

2017年编程语言排行

现在学会一门编程语言就可以得到一份不错的工作,可以得到不错的薪资,可以过不错的生活。所以越来越多的人选择学习计算机编程语言,今天Java视频教程的讲师就给大家分析一下2017年编程语言排行榜,让学编程语言的朋友在心里有个底。 有人说程序员知识更新速度要很快,这是因为编程语言很容易就过时。这句话虽然有点绝对,但是也说明了热门的编程语言排行版一直在变。那么我们就来看一看2017年编程语言排行,了解一下2017年究竟哪些编程语言最值得学习、更高薪?下面请看Java视频教程讲师分享的内容:1、Java就...阅读全文

简书 2017.09.21 16:51 扣丁学堂

angular系列学习笔记(一)-聊聊angular的基础

现前端框架情况, angular、vue(比较火)、react。react因前段时间license协议,百度要求内部停止使用react。新的框架层出不穷:它难吗?它写得快吗?可维护性怎样?运行性能如何?社区如何?前景怎样?好就业吗?好招人吗?组建团队容易吗?不管哪个,选择一个实践就好。一、Angular 基础 1、AngularJS核心 AngularJS 通过 指令 扩展了 HTML,且通过 表达式 绑定数据到 HTML。AngularJS核心是:MVVM、模块化、自动化双向数据绑定、语义化标...阅读全文

简书 2017.09.21 16:06* 枫之伊信

HTTP状态码302、303和307的故事

今日读书,无法理解HTTP302、303、307状态码的来龙去脉,决定对其做深究并总结于本文。 《HTTP权威指南》第3章在讲解30X状态码时,完全没有讲清楚为什么要有302、303、307,以及他们的关系,一句“问题出在HTTP/1/1”让我一头雾水,莫名其妙;而第五章在讲重定向响应时,没有说到现在很常见的302,反而是说我从没遇到过的303和307。很是迷惑,对于这3个状态码,WiKi和RFC文档都有详解,下面我以我的思维添油加醋的描述一遍。 一、状态码——302 RFC1945(http:...阅读全文

数据告诉你,胡歌的微世界

使用神奇的数据采集工具——造数,爬取男神的微博 昨天胡歌(35岁)生日刚刚过去,各位胡椒粉有什么想说的呢,一路走来,有多少人知道胡歌最早是这样的: 当胡歌说道要先把饥寒问题管制时,许多粉丝心伤到眼泪都进去了。 爬微博原因:过去的生日胡歌都会发微博,那时候微博上是这样的: 2015年(33岁) 2014年(32岁) 2013年(31岁) 然而在2016年,胡歌发了这样一条微博 造数君爬取了老大的微博,做了一个简单的分析,当然啦,数据采集不光要告诉你能够采集到什么,还要一并教你怎么采集: 选用的是微...阅读全文

Segmentfault 2017-09-21 10:34:47 造数科技

golang reflect

接口值到反射对象 package main import ( "fmt" "reflect" ) func main() { var x int = 1 fmt.Println("type: ", reflect.TypeOf(x)) } type: int TypeOf函数的定义如下,参数为接口类型,返回值为类型 func TypeOf(i interface {}) Type ValueOf函数的定义如下,参数为接口类型,返回值为Value var x int = 1 fmt.Println...阅读全文

开源中国博客 2017-09-21 10:03:22 1071954237

golang交叉编译笔记

GOOS:目标平台的操作系统(darwin、freebsd、linux、windows) GOARCH:目标平台的体系架构(386、amd64、arm) Mac 下编译 Linux 和 Windows 64位可执行程序 CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build Linux 下编译 Mac 和 Windows 64位可执行程序 CGO_ENABLED...阅读全文

golang:mgo剖析之Session

golang操作mongo使用的包是"gopkg.in/mgo.v2",coding过程中需要并发读写mongo数据库,简单观摩了下源码,记录下自己的一些理解,如有错误,敬请斧正。 一般来说,我们直接这样创建一个session: Session, err = mgo.Dial(URL) if err != nil { log.Println(err) } 来看看Dial这个函数做了什么: func Dial(url string) (*Session, error) { session, err...阅读全文

博客园 2017-09-20 14:41 chase-wind

Golang package

今天,灵感一现:不能一个文件干到底吧,那要是工程大了怎么办? 答案很简单,“包”啊 GO里的包,看起来很简单,但又不简单 一开始,我想当然的以为就是include 路径一样的问题 事实是,GO以GOPATH环境变量来管理的,其实,从你在应用标准包根本没有路径一说,就应该能猜到这个该死的结果了 好了,下边,我们以一个例子来说明,避免网上那些看似很仔细的说,但就是怎么也说不明白的症结吧! 一 找到你的GOPATH echo $GOPATH/root/gopkg //我的位置在这里,你自己的肯定不一样...阅读全文

博客园 2017-09-21 01:00:10 woodzcl

golang数据库错误

golang github.com/go-sql-driver/mysql 遇到的数据库,设置库设计不合理的解决方法,查询中报了以下这个错 Scan error on column index 2: unsupported Scan, storing driver.Value type 解决方案就是动态的把数据 字段前加一上一个COALESCE SELECT u.id,ta.title as 活动名 ,COALESCE(IFNULL(i.name,i.nickname) From Activit...阅读全文

博客园 2017-09-20 18:29 Dennis-mi

Golang第三方包安装

在新电脑上装了最新的go1.9和VSCode1.16.0,然后将之前的bin包放到项目下,不成想敲代码时智能提示没有了。 尝试了多种方案,环境变量、gopath、FQ、使用旧版本、系统从win10家庭版升级到专业版... 走了不少弯路,最后终于解决了,解决方法如下: 1. 从Golang中国需要的下载第三方包,下载链接https://www.golangtc.com/download/package 2. 解压后放到项目里,路径:项目名/src/存放位置 3. cmd执行go install *...阅读全文

博客园 2017-09-20 09:45 lvduanbing

gRPC服务发现与负载均衡

1)简介gRPC负载平衡的主要实现机制是外部负载平衡,即通过外部负载平衡器来向客户端提供更新后的服务器列表。gRPC客户端也内置对少量几种负载平衡策略API的支持,其中包括grpclb策略(该策略实现了外部负载平衡),但并不鼓励用户在gRPC中添加更多的策略。新的负载平衡策略应该在外部负载平衡器中实现。2)工作流负载平衡策略在名称解析和服务器连接方面与gRPC客户端相适应,以下是其工作方式: 1.首先,gRPC客户端会发出对服务器名称解析的请求,该名称会被解析为一个或多个IP地址,每一个地址会标...阅读全文

简书 2017.09.20 14:48 Jay_Guo

Go语言如何在没有实现功能的情况下写出完善的单元测试代码

背景 最近在研究用Go写一个自己的解释型语言,有一本书叫《Writing An Interpreter In Go》, 作者在讲解如何编写解释器的时候,都是从写一个_test.go开始的,也就是说作者习惯于先写单元测试,以测试驱动开发,其实这是一个非常好的习惯,不过,作者在写_test.go文件的时候,都是先假设这个结构体、函数已经存在了,并且没有把关键的对象抽象成接口,因此,作者在运行go test的时候,是无法完成测试的,因为连编译都过不了,必须一边完善代码,一边重复运行go test,一直...阅读全文

简书 2017.09.20 14:53 乱入的Zeal

Go入门

学习资料 http://docs.plhwin.com/gopl-zh/ A 开发环境搭建 0x1 安装GoSDK Windows系统下载 https://storage.googleapis.com/golang/go1.8.3.windows-amd64.msi 需要翻墙。 0x2 本地环境变量配 GOBIN=C:\Go\bin GOROOT=C:\Go GOPATH=C:\GoWrokspaces PATH= ;C:\Go\bin;C:\GoWorkspaces\bin GoWorkspa...阅读全文

简书 2017.09.20 13:49* 治平01

Go实战--golang中文件以及文件夹路径相关操作

生命不止,继续 go go go!!! 之前介绍过golang的标准库:path/filepath, os Go语言学习之path/filepath包(the way to go) Go语言学习之os包中文件相关的操作(The way to go) 今天就跟大家分享几个关于文件以及文件夹的相关操作。 获取目录中所有文件 使用包: io/ioutil 使用方法: ioutil.ReadDir 读取目录 dirmane 中的所有目录和文件(不包括子目录) 返回读取到的文件的信息列表和读取过程中遇到的...阅读全文

CSDN博客 2017-09-11 15:27 wangshubo1989

关于docker优雅退出的问题

容器信号使用 我们跑在容器中的程序通常想在容器退出之前做一些清理操作,比较常用的方式是监听一个信号,延迟关闭容器。 docker提供了这样的功能: ╰─➤ docker stop --help Usage: docker stop [OPTIONS] CONTAINER [CONTAINER...] Stop one or more running containers Options: --help Print usage -t, --time int Seconds to wait for ...阅读全文

Segmentfault 2017-09-20 09:34:47 fanux

goroutine和channel对tcp连接消息的收发

在看这篇文章之前,如果你没看过golang利用socket封装数据,那我建议你看下;同样,如果没看过goroutine和channel实现master-worker模式,同样建议你看下并理解之后再来看这篇文章。这篇文章主要是上两篇文章的结合使用。tcp消息的收发我们已经知道,socket是一个抽象层,其本质是编程接口(API),对TCP/IP的封装,TCP/IP也要提供可供程序员做网络开发所用的接口,这就是Socket编程接口。所以我们队tcp消息的收发即对socket中几个接口的配合使用来完成...阅读全文

简书 2017.09.20 00:25* 初级赛亚人