Go 语言中的方法,接口和嵌入类型

本文为转载技术翻译,原翻译地址:http://se77en.cc/2014/05/05/methods-interfaces-and-embedded-types-in-golang/ 原文地址:http://www.goinggo.net/2014/05/methods-interfaces-and-embedded-types.html 概述 在 Go 语言中,如果一个结构体和一个嵌入字段同时实现了相同的接口会发生什么呢?我们猜一下,可能有两个问题: 编译器会因为我们同时有两个接口实现而报错...阅读全文

2014-05-16 07:38 kai_ding
阅读:5933 评论:1

go中方法的接收者是值或者指针有什么区别吗?

参考文章:http://studygolang.com/articles/1113 希望解决的问题如下 假设有两个方法,一个方法的接收者是指针类型,一个方法的接收者是值类型,那么: 对于值类型的变量和指针类型的变量,这两个方法有什么区别?如果这两个方法是为了实现一个接口,那么这两个方法都可以调用吗?如果方法是嵌入到其他结构体中的,那么上面两种情况又是怎样的? 值类型的变量和指针类型的变量 先声明一个结构体: type T struct { Name string } func (t T) M1(...阅读全文

2016-09-06 18:50 qq_35902556
阅读:879 评论:0

聊一聊goroutine stack

推送在外卖订餐中扮演着重要的角色,为商家实时接单、骑手实时派单提供基础的数据通道。早期推送是由第三方服务商提供的, 随着业务复杂度的提升、订单量和用户数的持续增长,之前的系统已经远远不能满足需求,构建一个高性能、高可用的推送系统势在必行。 今年上半年我们用go开发了一个hybrid push服务,用户在线则借助长连接下发消息,不在线则借助厂商或第三方通道下发消息。 在构建过程中遇到了些与 goroutine stack 相关的问题,这里就和大家扯一扯。 带着问题阅读,才能让阅读更加高效,首先让我...阅读全文

2017-07-29 00:00 coding & life
阅读:4651 评论:6

github上用golang写的项目

1.moby/moby docker的新马甲 2.kubernetes/kubernetes 分布式容器管理 3.grafana/grafana 一个可视化面板,有漂亮的仪表盘,多种数据来源,适合做系统监控 4.coreos/etcd 集群共享信息,服务与发现 5.astaxie/beego 一个快速开发Go应用的http框架 6.gin-gonic/gin 同上 7.prometheus/prometheus 系统监控和报警工具 8.drone/drone 用于CD(Continuous De...阅读全文

2017-10-18 21:44 wjx0912
阅读:3476 评论:0

Golang号称高并发,但高并发时性能不高

1.管道chan吞吐极限10,000,000,单次Put,Get耗时大约100ns/op,无论是采用单Go程,还是多Go程并发(并发数:100, 10000, 100000),耗时均没有变化,Go内核这对chan进行优化。 解决之道:在系统设计时,避免使用管道chan传递主业务数据,避免将业务流程处理流程分割到对个Go程中执行,这样做减少chan传输耗时,和Go程调度耗时,性能会有很大的提升。 案例分析:nsq和nats都是实时消息队列,nsq在客户端端和服务端大量使用chan转发消息,导致性能...阅读全文

阅读:10642 评论:1

内网穿透工具的原理与开发实战

-- 前言 -- 在我国,由于网民众多,运营商无法保证为每一个宽带用户提供全球唯一的公网IPv4地址。因此很多用户会发现通过路由器端查看到的WAN端IP与百度“IP”关键词所得到的IP不一致,并且前者的IP为一个私有IP。 而还有一些情况下,公网IP比较昂贵,企业虽然本身也持有少量的独立的公网IP,但是由于成本限制无法为企业内每一台主机都提供一个公网IP,或者内网并不是所有服务都需要暴露到公网中进行访问,那么企业有可能就会使用NAT技术将大量的内网IP通过一定规则映射到公网IP上。而最常见的...阅读全文

2017-10-23 16:31:06 昌维
阅读:12228 评论:1

Go 终极指南:编写一个 Go 工具

我之前编写过一个叫 **gomodifytags** 的工具,它使我的生活变得很轻松。它会根据字段名称自动填充结构体标签字段。让我来展示一下它的功能: ![在 vim-go 中使用 gomodifytags 的一个示例](http://upload-images.jianshu.io/upload_images/2192094-880be71ebd4d9610.gif?imageMogr2/auto-orient/strip) 使用这样的工具可以很**容易管理**结构体的多个字段。该...阅读全文

2017-10-27 09:53:11 oopsguy
阅读:6366 评论:7

用Go开发可以内网活跃主机嗅探器

文章关键词 go/golang gopacket 抓包 pcap/libpcap arp nbns mdns manuf 程序截图 效果图 说明 本文对于Go语言本身的讲解不会太多,想把更多的时间花在几个网络协议的讲解上,希望本文对打算或正在用Go进行TCP/IP编程和抓包的朋友带来帮助。 github地址:https://github.com/timest/goscan 程序思路 通过内网IP和子网掩码计算出内网IP范围 向内网广播ARP Request 监听并抓取ARP Response包,...阅读全文

2017.10.29 11:39 看山羊
阅读:4666 评论:0

微服务架构

微服务架构·基础篇 看到最近“微服务架构”这个概念这么火,作为一个积极上进的程序猿,成小胖忍不住想要学习学习。而架构师老王(不是隔壁老王)最近刚好在做公司基础服务的微服务化研究和落地,对此深有研究。 于是成小胖马上屁颠屁颠的跑过去向老王请教:“王哥,我看微服务架构这么火,我也想学,您给我讲讲啥是微服务架构呗?” 老王笑了笑说:“要想知道什么是微服务架构,你得先知道什么系统架构设计。” 成小胖的理想是成为一名架构师,平时积累了不少知识,因此对“系统架构设计”这个概念还是很熟悉的,因此他马上就给出了...阅读全文

阅读:5268 评论:4

Micro (1)

简单介绍 Micro是一个用来简化微服务开发的框架,提供了如下功能: Go Micro - 基于Golang的插件式RPC框架,提供服务发现,客户端负载均衡,编码,同步和异步通讯功能。 API - API Gateway(API 网关), 用来提供处理http请求。可以作为一个http的反向代理或者翻译相关的http请求到RPC服务。 Sidecar - 用来接入其他语言编写的应用到Micro中。 Web - 提供一个web dashboard,并且可以为Micro应用提供反向代理。 CLI -...阅读全文

2017.10.29 21:53* zouqilin
阅读:1048 评论:1

怎样用beego开发服务端应用?

怎样用beego开发服务端应用? 微信: lijiaocn 创建: 2017/10/23 14:01:13 说明 Quick Start 安装 创建应用 编译运行 打包发布 代码生成 开发文档 目录结构说明 使用配置文件 beego默认参数 路由设置 路由的表述方式 直接设置路由 以注册handler的方式设置路由 自动注册路由 通过注解注册路由 使用namespace管理路由 需要特别注意的NSAfter() 使用数据库 数据库迁移(migration) beego.Controller处理h...阅读全文

2017-10-23 14:01 www.lijiaocn.co 等
阅读:1816 评论:0

深入理解GO语言之内存分配

前言:开通专栏后的第一篇文章,接下来将会就GO语言的内存,GC,并发编程等,深入理解GO这门语言。 一,内存模型概述 首先明确几个概念:(1) cache:线程私有的,每次对象分配时候先从cache查询,小对象如果能获得空闲内存则不用加锁了。来看看cache的结构(省略了跟gc等相关的字段)type mcache struct { alloc [numSpanClasses]*mspan // 用于分配的span spanclass spanClass // size class and nos...阅读全文

阅读:1277 评论:0

GO语言的进阶之路-goroutine(并发)

GO语言的进阶之路-goroutine(并发) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任。 有人把Go比作21世纪的C 语言,第一是因为 Go语言设计简单,第二,21世纪最重要的就是并行程序设计,而GO 从语言层面就支持了并行。Go语言中最重要的一个特性,那就是 go 关键字。优雅的并发编程范式,完善的并发支持,出色的并发性能是Go语言区别于其他语言的一大特色。使用Go语言开发服务器程序时,就需要对它的并发机制有深入的了解。 一.并发基础 回到在Windows和Linux出...阅读全文

2017-11-02 12:26 yinzhengjie
阅读:1588 评论:0