Go语言中文网 为您找到相关结果 178

go get安装第三方包的前提条件和步骤

自:http://studygolang.com/articles/5796 首先,你要找到第三方类包所在的网址, 例如: http://github.com/go-sql-driver/mysql 分为命令行自动安装 和 手动下载 然后安装。 ( 欢迎加入go语言群: 218160862 ,群内有实践) 一、通过 go get github.com/go-sql-driver/mysql 命令安装第三方类库 要启用 go get github.com/go-sql-driver/mysql 命令, 首先必须设置环境变量GOPATH的路径、并且安装git for windows!!! 否则 go get 命令不起作用。 1. 设置 GOPATH 环境变量, 并且这个GOPATH 变量里面的路...阅读全文

博文 2016-01-28 19:00:01 bluehawksky

Golang 读写 Excel

Excelize 是 Golang 编写的一个用来操作 Office Excel 文档类库,基于微软的 Office OpenXML 标准。可以使用它来读取、写入 XLSX 文件。相比较其他的开源类库,Excelize 支持写入原本带有图片(表)的文档,还支持向 Excel 中插入图片,并且在保存后不会丢失图表样式。 安装 go get github.com/Luxurioust/excelize 创建 XLSX package main import ( "fmt" "os" "github.com/Luxurioust/excelize" ) func main() { xlsx := excelize.CreateFile() // Create a new sheet. xlsx.N...阅读全文

博文 2017-05-09 09:01:02 续日

golang实现接口类和多态的一种做法

package main import "fmt" type IMessage interface { Print() } type BaseMessage struct { msg string } func (message *BaseMessage) Print() { fmt.Println("baseMessage:msg", message.msg) } type SubMessage struct { BaseMessage } func (message *SubMessage) Print() { fmt.Println("subMessage:msg", message.msg) } func interface_use(i IMessage) { i.Print() }...阅读全文

博文 2015-04-14 11:00:00 miros

源中瑞区块链C2C承兑支付系统搭建

源中瑞区块链C2C承兑支付系统搭建 区块链支付系统有用户和商户两种版本。 用户:是对为数币资产有一定了解的普通消费者使用,除了管理数字资产外,通过对接合作的线上或者线下商户,直接可以用钱包进行支付。 商户:商家版主要是为加盟运营平台的商户提供结算管理,商户可以是线上商城或者线下实体店。 源中瑞科技拥有区块链技术核心研发工程师团队,区块链项目技术顾问微ruiec1688,区块链技术领域技术专家以及参与多年金融交易系统的研发工程师。在保障区块链系统的安全和稳定技术方面有大量经验。 区块链承兑支付如何解决行业痛点? 1.“币走通道,钱走线下”新模式,平台、商户不直接接触法币 2.以承兑商来做收款方,可实现资金分流处理解决入金问题? 3.承兑商采用账户轮询,可实现即时到账,T+0结算 4.数字资产作...阅读全文

golang技术随笔(一)深入理解interface

Go语言的主要设计者之一罗布·派克( Rob Pike)曾经说过,如果只能选择一个Go语言的特 性移植到其他语言中,他会选择接口。可见接口在golang中的地位,及其对gloang这门语言所带来的活力。 golang中的interface是什么 接口相当于是一份契约,它规定了一个对象所能提供的一组操作。要理解golang中接口的概念我们最好还是先来看看别的现代语言是如何实现接口的。 C++没有提供interface这样的关键字,它通过纯虚基类实现接口,而java则通过interface关键字声明接口。它们有个共同特征就是一个类要实现该接口必须进行显示的声明,如下是java方式: interface IFoo { void Bar(); } class Foo implements IFoo ...阅读全文

博文 2015-01-26 20:00:02 justaipanda

Go 语言读写 Excel 文档

https://raw.githubusercontent.com/Luxurioust/excelize/master/excelize.png Excelize 是 Golang 编写的一个用来操作 Office Excel 文档类库,基于微软的 Office OpenXML 标准。可以使用它来读取、写入 XLSX 文件。相比较其他的开源类库,Excelize 支持写入原本带有图片(表)的文档,还支持向 Excel 中插入图片,并且在保存后不会丢失图表样式。 项目主页 github.com/Luxurioust/excelize 安装 go get github.com/Luxurioust/excelize 创建 XLSX package main import ( "fmt" "os...阅读全文

博文 2017-05-15 02:40:39 xurime

Golang 在 Baidu-FrontEnd 的应用之路

百度资深工程师陶春华在 QCon 北京 2016 上分享了《Golang 在 Baidu-FrontEnd 的应用》这一话题,以 Baidu-FrontEnd 的重构历程为主线索,展示了在设计海量接入前端中的权衡以及对语言的考虑。百度日请求量在 700 亿以上,面对如此庞大的前端页面访问量,百度如何处理数据拥堵现象?本次分享以 Baidu-FrontEnd 的重构历程为主线索,展示在设计海量接入前端中的权衡以及对语言的考虑。首先要解决的就是 GO 语言难以克服的“先天不足”缺陷——GC(Gabage Collection)延迟造成的关键问题,其次就是如何合理的设计软件架构,来协调稳定性与可扩展性之间的矛盾。最后讨论采用 GO 语言 HTTP 类库所面临的协议一致性问题。作者介绍陶春华,百度资...阅读全文

博文 2016-11-18 05:00:01 u012798391

Golang把所有包括底层类库,输出到stderr的内容, 重新定向到一个日志文件里面?

不论应用是如何部署的,我们都期望能扑捉到应用的错误日志, 解决思路: 自己写代码处理异常拦截,甚至直接在main函数中写异常拦截。 stderr重定向到某个文件里 使用 syscall.Dup2 第一种方法比较简单, 我们这里主要看后两种: 使用 stderr替换的代码: package main import ( "fmt" "os" ) func main() { f, _ := os.OpenFile("C:\\tmp\\11.txt", os.O_WRONLY|os.O_CREATE|os.O_SYNC, 0755) os.Stdout = f os.Stderr = f fmt.Println("fmt") fmt.Print(make(map[int]int)[0]) } 这里的...阅读全文

博文 2015-02-07 03:00:01 ghj1976

Excelize - Golang 操作 Office Excel 文档类库

Excelize 是 Golang 编写的一个用来操作 Office Excel 文档类库,基于微软的 Office OpenXML 标准。可以使用它来读取、写入 XLSX 文件。相比较其他的开源类库,Excelize 支持写入原本带有图片(表)的文档,还支持向 Excel 中插入图片,并且在保存后不会丢失图表样式。 安装 go get github.com/Luxurioust/excelize 创建 XLSX package main import ( "fmt" "os" "github.com/Luxurioust/excelize" ) func main() { xlsx := excelize.CreateFile() // Create a new sheet. xlsx.N...阅读全文

博文 2017-03-20 08:39:16 xuri

Go语言面向对象编程

前段时间接触Go语言,感觉有很多新的理念,今天先转载一篇文章,以后有时间再慢慢学习。 本文转载自图灵社区http://www.ituring.com.cn/article/details/1339 作者许式伟 面向对象编程 Go 语言的面向对象编程(OOP)非常简洁而优雅。说它简洁,简介之处在于,它没有了OOP中很多概念,比如:继承、虚函数、构造函数和析构函数、隐藏的this指针等等。说它优雅,是它的面向对象(OOP)是语言类型系统(type system)中的天然的一部分。整个类型系统通过接口(interface)串联,浑然一体。 类型系统(type system) 很少有编程类的书籍谈及类型系统(type system)这个话题。但实际上类型系统是整个语言的支撑,至关重要。 类型系统(t...阅读全文

博文 2014-10-09 21:00:10 brave2211

更优雅的 Golang 错误处理

Golang 中的错误处理是一个被大家经常拿出来讨论的话题(另外一个是泛型)。其中泛型这个问题,rsc 在最近的计划中也提出了纳入他今年的考虑计划中,同时,泛型的提案在2016年也进行了一些更新,相信未来会有一些更好的方案提出。这个文章我们讨论一下如何在现行的 Golang 框架下提供更友好和优雅的错误处理。 从现状谈起 Golang 中的错误处理原则,开发者曾经之前专门发布了几篇文章( Error handling and Go 和 Defer, Panic, and Recover、Errors are values )介绍。分别介绍了 Golang 中处理一般预知到的错误与遇到崩溃时的错误处理机制。 一般情况下,我们还是以官方博客中的错误处理例子为例: func main() { f,...阅读全文

博文 2017-02-10 07:42:04 kevin

基于 Golang 的 xls 读取类库:xls

Golang 编写的 xls 读取类库,能够实现 xls 表格的读取功能 func (w *WorkBook) ReadAllCells() (res [][]string) { for _, sheet := range w.Sheets { w.PrepareSheet(sheet) if sheet.MaxRow != 0 { temp := make([][]string, sheet.MaxRow+1) for k, row := range sheet.Rows { data := make([]string, 0) if len(row.Cols) > 0 { for _, col := range row.Cols { if uint16(len(data)) <= col....阅读全文

博文 2015-10-24 03:00:00 zhuiluoyu

自制JVM -- 用GO语言实现JVM

虽然写了很多年的Java代码,但是基本上只把JVM当blackbox处理。介绍JVM的书也看过几本,但效果不佳。看OpenJDK代码?提不起兴趣。最近有几个礼拜的空闲时间,于是我决定用GO语言写了一个JVM,彻底征服JVM这头怪兽! 为什么选择GO 首先不想用动态语言来写。实现JVM的初衷就是想离机器更近一点,所以排除了JavaScript、Python、Ruby等语言。其次也不想用Java来写,原因基本同上。还有一个原因是自己对Java太熟悉了,用它来写,没挑战性。再次也不想用C/C++,原因是自己不喜欢这两个语言。C过于底层,C++过于复杂。所以最终选择了GO。 GO是Google发布的语言,编译型,接近底层,一定程度上可以充当系统语言来使用。GO的语法很简洁,学习曲线平滑,文档也比较详...阅读全文

博文 2015-02-09 13:00:01 SpiderDog

golang直接调用ffmpeg预编译类库(windows)

MinGW介绍 MINGW(Minimalist GNU on Windows)是一个可以在windows下编译Linux程序的仿真linux编译环境,他提供了linux下的C、C++头文件、系统库和一些linux下的编译工具集合,例如gcc、g++和make工具。使得编译出来的二进制可以在windows上运行。(此前的 cygwin 虽然也是 GNU 的 Windows 移植,但是 cygwin 是有版权的,不是 GNU) MinGW下载 【MinGW】 http://sourceforge.NET/projects/mingw/ 【MinGW环境变量配置】 http://jingyan.baidu.com/article/6b97984da0bd8a1ca2b0bf90.html 下载最...阅读全文

博文 2016-11-27 15:00:04 yang8023tao

5个理由让你选择Go,抛弃Python

Python和Go你会选择那个?如果对Go了解较深的小伙伴肯定会先Go,如果不深肯定会选Python,那么接下来我们来讨论一下,选择Python的小伙伴,5个理由就会让你选择Go,我们一起看文章吧! “ Python 是非常强大的,特别是 Python3 有了异步功能,但是 GO 将完全取代它在大企业中的存在…” 如果你真正理解了引号中的话,你可能会去尝试 Go 编程语言。我认为 Go 是很简单的编程语言,并且适应任何的应用环境,甚至比 Javascript 编程还要简单,这可能是 GO 编程语言能在这几年很快流行起来的原因吧。 我们在使用 Go 语言编程之前有什么呢? 网站 TreeScale.com 主页和 API 都是基于一些分析工具的网络应用。下面是我们的技术栈: React.js ...阅读全文

博文 2019-03-14 08:31:02 zyj66666

go get安装第三方包的前提条件和步骤

首先,你要找到第三方类包所在的网址, 例如: http://github.com/go-sql-driver/mysql分为命令行自动安装 和 手动下载 然后安装。 ( 欢迎加入go语言群: 218160862 ,群内有实践) 一、通过 go get github.com/go-sql-driver/mysql 命令安装第三方类库 要启用 go get github.com/go-sql-driver/mysql 命令, 首先必须设置环境变量GOPATH的路径、并且安装git for windows!!! 否则 go get 命令不起作用。1. 设置 GOPATH 环境变量, 并且这个GOPATH 变量里面的路径不能有分号; 否则会报错右键我的电脑——高级系统设置——环境变量,系统变量下 点...阅读全文

博文 2016-01-22 03:00:01 wangqishu

golang--零下线时间式重启

在Hacker News看到用Go达到Zero-downtime restarts,意思大概为零下线时间式重启,很早就知道nginx可以轻松做到平滑重启,一直都想用go来实现这样的功能。看了一下它的代码实现,所以有了这篇博文。 项目名字叫goagain,地址在:https://github.com/rcrowley/goagain。该项目是一个类库,也就是package,在go开发的程序中添加这个package就可以轻松地重启程序。 goagain会监控2个系统信号,一个为SIGTERM,接收到这个信号,程序就停止运行。另一个信号为SIGUSR2,接收到这个信号的行为是,当前进程,也就是父进程会新建一个子进程,然后把父进程的pid保存到一个名为GOAGAIN_PPID的环境变量;子进程启动的...阅读全文

博文 2014-10-04 19:26:11 getong

读 《我为什么放弃Go语言》 有感

最近又熟悉了下go语言,发现go语言还有许多设计不好的地方,然后又读到了《我为什么放弃Go语言》这篇文章, 对于某些方面,我还是比较认同的。 这篇文章总结了十六点,如下: 1.1 不允许左花括号另起一行 1.2 编译器莫名其妙地给行尾加上分号 1.3 极度强调编译速度,不惜放弃本应提供的功能 1.4 错误处理机制太原始 1.5 垃圾回收器(GC)不完善、有重大缺陷 1.6 禁止未使用变量和多余import 1.7 创建对象的方式太多令人纠结 1.8 对象没有构造函数和析构函数 1.9 defer语句的语义设定不甚合理 1.10 许多语言内置设施不支持用户定义的类型 1.11 没有泛型支持,常见数据类型接口丑陋 1.12 实现接口不需要明确声明 1.13 省掉小括号却省不掉花括号 1.14 编...阅读全文

博文 2016-04-05 10:00:10 simplelovecs

令人激动的微服务2.0技术栈

作者|Christian 编辑|禚娴静 当下市场瞬息万变,新技术不断涌现,而微服务持续火热。如果说2014年是微服务的元年,那么2015年和2016年则是微服务走下神坛的时刻,越来越多的开发者、架构师们探讨着如何落地,如何解决各种实际问题,而很多技术栈和工具也纷纷涌现。构建微服务时,我们真的深深进入了分析分布式系统 - 一个已经研究了40年以上的技术主题,复杂的自适应系统理论已经深入人心有很长的时间。从技术的角度来看,我们需要解决的事情如下:部署交付API版本控制合同缩放/自动缩放服务发现负载均衡路由/自适应路由健康检查配置熔断器bulk-headsTTL / deadlining延迟跟踪服务因果跟踪分布式日志度量操作与收集Netflix和一些互联网公司作为早期微服务的采用者在这些领域做了很...阅读全文

博文 2017-03-14 11:05:54 Christian

[golang note] 匿名组合

匿名组合 golang也提供了继承机制,但采用组合的文法,因此称为匿名组合。与其他语言不同, golang很清晰地展示出类的内存布局是怎样的。 • 非指针方式组合 ▶ 基本语法 // 基类 type Base struct { // 成员变量 } func (b *Base) 函数名(参数列表) (返回值列表) { // 函数体 } // 派生类 type Derived struct { Base // 成员变量 } func (b *Derived) 函数名(参数列表) (返回值列表) { // 函数体 } ▶ 继承规则 √ 在派生类没有改写基类的成员方法时,相应的成员方法被继承。 √ 派生类可以直接调用基类的成员方法,譬如基类有个成员方法为Base.Func(),那么Derived.F...阅读全文

博文 2016-03-10 09:00:01 heartchord

Go语言日趋成熟 运行速度接近C语言实现程序

Go将动态语言易于编写的特性和静态语言的高效性相结合,具备良好的易用性和极佳的执行效率。Go语言最初定位于网络服务器、存储系统和数据库的程序设计,同时在语言中包含并发构造体,以方便的帮助开发者创建并行任务。 Go语言具有效率极高的编译器,目前Go编译器能在Linux、FreeBSD以及Mac OS X平台下运行,但暂时没有对Windows环境提供编译支持。Go开发团队曾在博客中表示,编译完成的Go程序运行速度接近C语言实现的程序。 在今年五月份举办的Google I/O大会上,Go语言背后的工程师Rob Pike和Russ Cox两人一同为开发者带来了Go语言编程讲座,解释Go语言的灵活设计和独到之处。Go语言的主要设计者Rob Pike是Google公司的资深工程师,在分布式系统、程序语言...阅读全文

博文 2014-10-10 14:00:00 middle544291353

百度云推送——Go语言实现类库

#快速开始 ###下载安装 go get github.com/mnhkahn/BaiduYunPush ###创建文件pushtest.go package main import ( "fmt" "github.com/mnhkahn/BaiduYunPush" ) var apikey = "**************************" var seckey = "******************************" var method = "POST" var url_base1 = "channel.api.duapp.com/rest/2.0/channel/channel" func main() { push := BaiduYunPush.New(ap...阅读全文

博文 2017-02-09 12:21:44 Bryce

Go接口

Go语言的编程哲学因为有接口而趋近完美 1.其他语言的接口: C++,Java等主流编程语言中,接口主要作为不同组件之间的契约存在。对契约的实现是强制的,你必须声明你的确实现了该接口。 为了实现该接口,你必须从该接口继承 interface IFoo { void Bar(); } class Foo implements IFoo { // Java文法 // ... } class Foo : public IFoo { // C++文法 // ... } IFoo* foo = new Foo; Java中抽象类和接口的区别: 1.抽象类,子类继承时,有些方法可以不用重写,关系是is-a;而implement一个接口,则需要实现其全部方法,关系是has-a。 抽象类中的非abstrac...阅读全文

博文 2015-06-17 23:08:23 luan_tianjiao

go实现排序的链表

链表的数据结构比较线性数组,优点是 可以方便的对任意的位置进行插入和删除。 这一特性使得它很适合于应用在排序等场景下,由于golang目前类库还不是很完善,在java中可以很简单的使用api提供的支持完成对list或者map的排序,在使用go时就没有那么幸运了,可能需要自己去实现。 下面的例子就是使用go package 中的LinkedList实现的排序的链表。 有几个功能特性: 1.支持固定的长度 2.可自定义排序的规则 3.组合LinkedList功能 package codeforfun import ( "container/list" ) type SortedLinkedList struct { *list.List Limit int compareFunc func (o...阅读全文

博文 2014-10-04 19:26:24 mahang

go sync.Mutex 设计思想与演化过程 (一)

go语言在云计算时代将会如日中天,还抱着.NET不放的人将会被淘汰。学习go语言和.NET完全不一样,它有非常简单的runtime 和 类库。最好的办法就是将整个源代码读一遍,这是我见过最简洁的系统类库。读了之后,你会真正体会到C#的面向对象的表达方式是有问题的,继承并不是必要的东西。相同的问题,在go中有更加简单的表达。 go runtime 没有提供任何的锁,只是提供了一个PV操作原语。独占锁,条件锁 都是基于这个原语实现的。如果你学习了go,那就就知道如何在windows下高效的方式实现条件锁定(windows没有自带的条件锁)。 我想阅读源代码,不能仅仅只看到实现了什么,还要看到作者的设计思路,还有如果你作为作者,如何实现。这些才是真正有用的东西,知识永远学不完,我们要锻炼我们的思维...阅读全文

博文 2014-10-04 19:26:24 niniwzw

golang第三方类库(json)-jsoniter

概述 jsoniter(json-iterator)是一款快且灵活的 JSON 解析器;从 dsljson和 jsonparser 借鉴了大量代码。 Jsoniter 有三个不同的 api 用于不同的场合: iterator-api:用于处理超大的输入 bind-api:日常最经常使用的对象绑定 any-api:lazy 解析大对象,具有 PHP Array 一般的使用体验 一句话总结就是简单快捷方便,性能OK!并且完美兼容:encoding/json 性能 性能压测 对比 在不使用代码生成的前提下,Jsoniter 的 Golang 版本可以比标准库(encoding/json)快 6 倍之多。(提前给个赞行不行<_>)更多性能 使用 第一步: 引入jsonitor: go get git...阅读全文

博文 2018-12-06 19:34:55 神奇的考拉

说说c, c++ 和 go

今天接触到了Go语言, 请原谅我现在才接触到Go, 之前听云风大神说起过, 但我总把它和易语言混淆了, 导致我没有更早的了解到这个语言. 就在一年多前, 那个时候的我还是对C++无比的热爱, 认为c++是做后台服务器的不二选择. 那个时候总认为c 跟 c++是一家的, 所以我总爱标榜自己为c/c++程序员. C++虽然完全兼容了C(这是优点, 也是C++致命的缺陷), 但是C++跟C的设计思想可以说是很不一样的, 具体说起来可以参见云风关于C++和C的一些讨论. 对C++的认识随着自己做聚能推项目不断加深, 我了解几乎所有c++的特性, 但说实在的, 我能用上的特性真的不多. 我也试图研究那些神一般的模板元编程, 但我实在是研究不下去, 因为我觉得这么复杂的的实现, 只是为了那么一点点的效率...阅读全文

博文 2014-10-04 19:26:53 winkyao

Go语言中Interface的理念

Go语言中Interface淡化了面向对象中接口应具有的象征意义,接口在Go语言中仅仅只是“表现形式”上相同的一类事物的抽象概念。在Go语言中只要是具有相同“表现形式”的“类型”都具有相同的Interface,而不需要考虑这个Interface在具体的使用中应具有的实际意义。这样的话,就把Interface的成本交给使用者了,而不是交给设计者。 设计者只负责设计method,也就是Interface的构成元素,Interface在具体的使用中应该有的实际意义都是交给Interface的使用者去确定。举个最简单的例子: 跑假设有两种意思:一种是逃跑,英文叫escape;另一种是跑步,英文叫run。如果中文就一种,把他叫做pao。 type BadMan struct{ } func (badM...阅读全文

博文 2015-01-22 16:00:04 chanshimudingxi

阿里巴巴CDN平台急招Go程序猿

阿里巴巴-基础架构事业群-CDN平台研发工程师 岗位描述: 阿里云是国内最知名的云计算公司,CDN业务是阿里云的重要业务之一,拥有分布广泛的国内和海外节点,并在国内外都能提供高质量的CDN主流服务和增值服务。我们面临着世界级的流量带来的技术挑战,我们立志为客户提供最便捷、最快速的CDN服务。通过我们的努力为用户最大程度的实现商业价值。 1、负责CDN平台产品业务后端功能研发。 2、负责CDN平台自动化工具相关工作的设计及研发。 3、负责CDN平台产品架构优化,解决CDN产品服务效率问题。 岗位要求: 1、了解CDN加速技术,熟悉DNS、HTTP协议。 2、具有两年年以上开发经验,熟练Go,Python,Java其中一种语言高级特性和...阅读全文

基于类型系统的面向对象编程语言Go

(整理自网络) 面向对象编程 Go语言的面向对象编程(OOP)非常简洁而优雅。说它简洁,在于它没有了OOP中很多概念,比如:继承、虚函数、构造函数和析构函数、隐藏的this指针等等。说它优雅,是它的面向对象(OOP)是语言类型系统(type system)中的天然的一部分。整个类型系统通过接口(interface)串联,浑然一体。 类型系统(type system) 很少有编程类的书籍谈及类型系统(type system)这个话题。但实际上类型系统是整个语言的支撑,至关重要。 类型系统(type system)是指一个语言的类型体系图。在整个类型体系图中,包含这些内容: 基本类型。如byte、int、bool、float等等。 复合类型。如数组(array)、结构体(struct)、指针(p...阅读全文

博文 2015-03-12 03:00:01 x3d

蚂蚁金服大规模微服务架构下的Service Mesh探索之路

小蚂蚁说:本文是根据蚂蚁金服 Service Mesh 布道师敖小剑在 Service Mesher社区进行的第一次 Meetup 上分享的《大规模微服务架构下的 Service Mesh 探索之路》现场演讲内容实录整理编辑而成,希望能给关注 Service Mesh 产品的朋友们带来帮助和了解。讲师PPT下载地址:https://github.com/servicemesher/meetup-slides视频直播回放:http://www.itdks.com/eventlist/detail/2311 蚂蚁金服Service Mesh 布道师敖小剑 前言今天给大家带来的内容叫做Service Mesh探索之路,但是在前面加了一个定语:大规模微服务架构下。之所以加上这个词,是因为我们这个体系...阅读全文

博文 2018-07-05 14:34:47 阿里云云栖社区

Golang全接触

满打满算, 从好友推荐Golang至发文时, 使用Golang已经有1年多了. 这种时间对于C/C++ Java这些老者来说, 简直是菜鸟级别的经验 但作为新生代语言的特点就是实战. Golang这一年里, 已经为项目提供了稳定的服务器和强大的扩展能力, 与客户端的Unity3D里的C#一样, 都是强大, 极致开发效率代表的优秀开发语言. 用途篇 Golang到底拿来做啥? 我需要么? 高效(性能,开发)的服务器语言. 包括Web, 游戏, App 编写桌面级UI暂不是很适合 我需要把现在的C++, Python, Erlang等服务器改成Golang么? 性能有瓶颈, 开发效率低, 有钱有时间的话, 完全可以 评价篇 听过太多的人对Golang的评价, 大概分为这么几类: C/C++性能党...阅读全文

博文 2015-07-30 03:00:00 findumars

GoLang这个语言就语言本身而言,其实不怎么样

学习了一个礼拜的Go语言,感觉GoLang特别好用,有点爱不释手的感觉。但是只讨论语言本身,这个语言本身其实挺垃圾的,赶不上Java 8,语法糖太少,跟Scala那就更没有什么可比性了,但是Scala的编译太糟糕,语法因为太强大,反而搞得有些复杂,一段时间不用就忘了。 就语言本身而言,我最喜欢Scala,太强大了,可以自己造语法糖,想怎么写就怎么写。但是作为开发工具而言,我很喜欢大GoLang,什么都可以干,还可以随意和C互动,类库也足够多,简直就是无敌,一个字,赞...阅读全文

Golang 特点

Golang和java区别和特点: 主要优点:代码简洁(get、set、换行符都省了)、更好的支持高并发微线程、更多的基本类型对内存占用更精准(int8 uint8)、依赖更少更轻 共同点:都支持垃圾自动回收、静态类型(go支持自动推导类型)、反射 区别:Go支持接口,但是不支持继承,一般通过成员变量的方式实现类似的效果 其他:GQuery、Beego等框架,非常适合爬虫类项目,和后端高并发项目,有成熟的类库支持。 Golang核心: go 关键字、channel(类似于阻塞队列)、锁(互斥锁、读写锁) go语言中开启一个goroutine非常简单,go函数名(),就开启了个微线程:比如 go addTicket(); 支持高并发,隔离性、内存开销小、切换开销小。1个物理线程支持多个Goru...阅读全文

博文 2019-02-16 18:34:43 黄靠谱

GO 语言五步让你成为高手

这里是GO程序员的五个进化阶段: 第一个阶段(菜逼): 刚刚学习了这门语言。 已经通过一些教程或者培训班了解基本的语法,可以写短的代码片段。 第二个阶段 (探索者): 可以写一个完整的程序,但不懂一些更高级的语言特征,比如“channels”。还没有使用GO写一个大项目。 第三个阶段(大手): 你能熟练的使用Go, 能够用GO去解决,生产环境中一个具体和完整的问题。已经形成了一套自己的惯用法和常用代码库。在你的编码方案中Go是一个非常好用的工具。 第四阶段 (大神): 绝逼清楚Go语言的设计选择和背后的动机。能理解的简洁和可组合性哲学。 布道师: 积极地与他人分享关于Go语言知识和你对Go语言的理解。在各种合适的场所发出自己的声音, 参与邮件列表、建立QQ群、做专题报告。成为一个布道者不见得...阅读全文

博文 2016-09-07 03:00:47 yueguanyun

[译] CockroachDB GC优化总结

几周前我们分享了一个帖子讲述我们为什么选择Go语言编写CockroachDB,我们收到一些问题,询问我们是如何解决Go语言的一些已知问题,特别是关于性能、GC和死锁的问题。 本文中我们将分享几个非常有用的优化技巧用以改善许多常见的GC性能问题(接下来还将覆盖一些有趣的死锁问题)。我们将重点分享如何通过嵌套结构体、使用 sync.Pool、和复用后端数组减少内存分配和降低GC开销。 减少内存分配和GC优化 将Go与其他语言(比如java)区别开来的是Go语言能让你管理内存布局。通过GO语言,你可以合并碎片,而其他垃圾集合语言不能。 让我们看看CockroachDB中从磁盘读取数据并解码的一小段代码: metaKey := mvccEncodeMetaKey(key) var meta MVCC...阅读全文

博文 2015-11-26 17:22:53 Coldstar

Go语言的接口和实现类初探(一)

1.引入 接口泛指实体把自己提供给外界的一种抽象化物(可以为另一实体),用以由内部操作分离出外部沟通方法,使其能被修改内部而不影响外界其他实体与其交互的方式。(来源于百度百科) 2.其他语言的接口 java的接口 public interface Animal {//定义接口 void eat(); } public class Dog {//与接口里的方法名相同,但并未实现Animal接口 void eat() { } } public class Cat implements Animal {//实现了Animal接口,并且eat方法必须存在 @Override void eat() { } }3.Go语言的接口 package main import ( "fmt" ) //定义一个接...阅读全文

博文 2015-06-17 23:00:49 Libra412

再次验证golang与node.js的http模块性能对比测试

之前看过性能对比测试的文章,是关于node.js和golang的http模块,简单的helloworld功能,原文在此: http://www.cnblogs.com/QLeelulu/archive/2012/08/12/2635261.html#2447171 再此文章之后,node.js和golang都升级了,node.js现在已经到了0.10,而golang也到了1.1版本,因此突然想在前人的基础上再做一次性能测试。 具体代码仍然沿用引用文章里面的。 硬件:双cpu,型号为xeon E5620 2.40GHz,为4核cpu,因为支持超线程,所以系统显示逻辑cpu数为16个。 软件环境:centos6.0 。 node.js版本为0.8.15,没有使用现在最新的0.10.13 . go...阅读全文

博文 2014-10-04 19:27:03 dijin

美图互联网技术沙龙 第2期:Golang应用实践

【沙龙报名】美图互联网技术沙龙 第2期:Golang应用实践 【沙龙报名】美图互联网技术沙龙 第2期:Golang应用实践 2016-07-15 MTC美图培训中心 美图互联网技术沙龙 美图互联网技术沙龙 是由美图公司主办的线下技术交流系列活动,每期沙龙都将会邀请到美图内外部技术大咖莅临现场围绕着最热门的技术话题与大家进行交流和分享,努力为中高级技术人员打造一个高质量的技术交流圈。 ◆ ◆ ◆ 第2期主题:Golang应用实践 主题介绍:在越来越多场景中得到应用的Golang,正顺应市场需求不断快速发展,围绕Golang也正在形成相对成熟的生态体系。本期沙龙,我们希望通过三个充分凝聚实践性的议题,与各位Geek一起探讨下Golang在线上系统中的应用实践。 议题1: Golang在美图的应用...阅读全文

一周学会go语言并应用 by王奇疏

《一周学会go语言并应用》 by王奇疏 ( 欢迎加入go语言群: 218160862 , 群内有实践) 零、安装go语言,配置环境及IDE 这部分内容不多,请参考我的这篇安装环境《安装go语言,配置环境及IDE》 日常只有2条命令: go run 文件路径/xxx.go 运行go程序 go build 文件路径/xxx.go 编译为二进制文件或exe文件 如果你不想每次都敲这些命令,附送1个《一键编译go文件命令.bat》 只能windows下使用,( 一般情况下,ide也是用同样的原理,ide的运行/编译也是利用这2个命令集成到ide里面 ) go build 命令生成的exe文件(或二进制文件)还是很小的,5M左右。 比c++ c#等要大一些。 这边是Go的1个ide,叫做liteIde...阅读全文

博文 2016-01-22 03:00:01 wangqishu

jvm.go -- 设计和实现

jvm.go jvm.go是一个完全用Go语言实现的JVM,关于这个项目的发起原因和简单介绍可以看这篇文章。 最新进展和下一步计划 jvm.go的开发已经进行了一个半月了,除了HelloWorld和一些简单的Java代码以外,JUnit也可以正常运行了。下一步的计划是在jvm.go上把Jetty跑起来。下面介绍一下jvm.go的一些关键部分的设计和实现。 目录结构 jvmgo jvm的go语言实现 cmdline 这个包用来解析java命令行参数classfile 这个包把[]byte转化成ClassFile结构classpath 这个包实现了class文件查找native rt.jar里的本地方法实现jvm jvm核心功能 instructions 指令集rtda 运行时数据区(Runti...阅读全文

博文 2015-03-07 19:00:01 SpiderDog

Python开发工程师职业发展方向

随着Python的技术的流行, Python在为人们带来工作与生活上的便捷后,关注者们开始慢慢关心Python的发展前景与方向。 **从自身特性看Python发展** Python自身强大的优势决定其不可限量的发展前景。Python作为一种通用语言,几乎可以用在任何领域和场合,角色几乎是无限的。Python具有简单、易学、免费、开源、可移植、可扩展、可嵌入、面向对象等优点,它的面向对象甚至比java和C#.net更彻底。 它是一种很灵活的语言,能帮你轻松完成编程工作。强大的类库支持,使编写文件处理、正则表达式,网络连接等程序变得相当容易。能运行在多种计算机平台和操作系统中,如各位unix,windows,MacOS,OS/2等等,并可作为一种原型开发语言,加快大型程序的开发...阅读全文

评: 为什么我不喜欢Go语言式的接口

最近在Go语言的QQ群里看到关于图灵社区有牛人老赵吐槽许式伟《Go语言编程》的各种争论. 我之前也看了老赵吐槽许式伟《Go语言编程》的文章, 当时想老赵如果能将许大书中不足部分补充完善了也是一个好事情. 因此, 对老赵的后续文章甚是期待. 谁知道看了老赵之后的两篇吐槽Go语言的文章, 发现完全不是那回事情, 吐槽内容偏差太远. 本来没想掺和进来, 但是看到QQ群里和图灵社区有很多人甚至把老赵的文章当作真理一样. 实在忍不住, 昨天注册了帐号, 进来也说下我的观点. 这是老赵的几篇文章: Go是一门有亮点的语言,老许是牛人,但这本书着实一般为什么我认为goroutine和channel是把别的平台上类库的功能内置在语言里为什么我不喜欢Go语言式的接口(即Structural Typing) 补...阅读全文

博文 2015-12-15 01:00:09 jingmiaowill

golang 接口 参数

conn, err = ln.Accept() go handleConnection(conn) 看到这里我曾经有个疑问,为什么不是 handleConnection(&conn) ? package main import ( "fmt" ) type Interface interface { say() string } type Object struct { } func (this *Object) say() string { return "hello" } func do(i Interface) string { return i.say() } func main() { o := Object{} fmt.Println(do(&o)) fmt.Printf("CC...阅读全文

博文 2014-10-04 19:27:01 咖啡伴侣

golang 高性能定时器之最小堆实现

业务中有很多定时任务,在规定时间内,不管是否完成都需要回调,明显,这种需要实现定时器,比较好的是时间轮和最小堆。这里介绍最小堆实现,这里就是个变相的topN 问题。 该文章后续仍在不断的更新修改中, 请移步到原文地址http://www.dmwan.cc/?p=146 由于是项目中要使用,不能仅考虑最小堆就完事,需要添加几条特性,第一个是要用一个timer 实现计时功能,第二个是要有提前删除功能。特别提下第二点,在高并发的情况下,timer 不能让任务自动过期,业务成功的情况下,要能提前删除,否则,timer压力会越来越大; 项目github地址:https://github.com/caucy/timeloop。 调用示例: package main import ( "os" "fmt"...阅读全文

博文 2018-06-01 15:33:07 鼎铭

美图互联网技术沙龙 第2期:Golang应用实践

【沙龙报名】美图互联网技术沙龙 第2期:Golang应用实践 【沙龙报名】美图互联网技术沙龙 第2期:Golang应用实践 2016-07-15 MTC美图培训中心 美图互联网技术沙龙 美图互联网技术沙龙 是由美图公司主办的线下技术交流系列活动,每期沙龙都将会邀请到美图内外部技术大咖莅临现场围绕着最热门的技术话题与大家进行交流和分享,努力为中高级技术人员打造一个高质量的技术交流圈。 ◆ ◆ ◆ 第2期主题:Golang应用实践 主题介绍:在越来越多场景中得到应用的Golang,正顺应市场需求不断快速发展,围绕Golang也正在形成相对成熟的生态体系。本期沙龙,我们希望通过三个充分凝聚实践性的议题,与各位Geek一起探讨下Golang在线上系统中的应用实践。 议题1: Golang在美图的应用...阅读全文

博文 2016-09-18 16:00:03 screscent

golang游戏服务器开发

golang游戏服务器开发(服务器逻辑开发或者主程) 1、1年以上golang开发经验,熟练掌握golang,熟悉c/c++语言优先; 2、熟悉 Linux/Unix 开发环境,熟练掌握mysql等数据库操作;熟悉redis等nosql使用场景; 3、熟悉socket TCP/IP网络通讯相关知识; 4、诚实、踏实、积极主动、抗压能力强,喜欢挑战困难; 5、有休闲、棋牌类开发经验者优先。 待遇根据实际能力面议。 简历投递:pert.lei@foxmail.com 也可加微信咨询:thunder54007 ...阅读全文

go中接口与继承的选择

Go语言中没有继承,但是可以用结构体嵌入实现继承,还有接口这个东西。现在问题来了:什么场景下应该用继承,什么场景下应该用接口。 问题描述 这里从一个实际的案例出发。网游服务器中的一个例子。假设每个实体都有一个ObjectID,packet中都有使用到这个ObjectID,客户端与服务端之间通过这个ObjectID知道是一个什么实体。用面向对象的观点,就是有一个Object对象,里面有getObjectID()方法,所有对象都是继承自Object对象。 Creature继承Object,表示游戏中的生物。然后像Monster,NPC,都继承自Creature的。玩家分为三个种族,Slayer/Vampire/Ouster三个不同的类实现,继承自Creature。 Item也继承自Object,...阅读全文

博文 2017-06-01 02:03:26 徐学良