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

golang 里面指针符号的*和&

先看一段代码先放一段代码,人工运行一下,看看自己能做对几题?package main import "fmt" func main() { var a int = 1 var b *int = &a var c **int = &b var x int = *b fmt.Println("a = ",a) fmt.Println("&a = ",&a) fmt.Println("*&a = ",*&a) fmt.Println("b = ",b) fmt.Println("&b = ",&b) fmt.Println("*&b = ",*&b) fmt.Println("*b = ",*b) fmt.Println("c = ",c) fmt.Println("*c = ",*c) fmt....阅读全文

博文 2017-02-10 10:21:28 ohgenlong

Go计算运行的时间

函数time.Since() 计算golang运行的时间是非常有用的性能衡量指标,特别是在并发基准测试中。下面将介绍如何简单地使用Go语言来计算程序运行的时间。 简单地使用Golang的time.Since()函数即可。下面有一个完整例子展示这个用法。 package main import ( "fmt" "time" ) func StartCac() { t1 := time.Now() // get current time //logic handlers for i := 0; i < 1000; i++ { fmt.Print("*") } elapsed := time.Since(t1) fmt.Println("App elapsed: ", elapsed) } fun...阅读全文

博文 2016-05-20 11:00:00 GreatElite

go语言坑之for range

go只提供了一种循环方式,即for循环,在使用时可以像c那样使用,也可以通过for range方式遍历容器类型如数组、切片和映射。但是在使用for range时,如果使用不当,就会出现一些问题,导致程序运行行为不如预期。比如,下面的示例程序将遍历一个切片,并将切片的值当成映射的键和值存入,切片类型是一个int型,映射的类型是键为int型,值为*int,即值是一个地址。 package main import "fmt" func main() { slice := []int{0, 1, 2, 3} myMap := make(map[int]*int) for index, value := range slice { myMap[index] = &value } fmt.Println...阅读全文

博文 2017-04-13 07:18:17 songleo

Go Mvc的一个示例

下载 Go Mvc的一个示例,项目后台用户管理部分,包括用户的添加,修改,删除,分页,查询等操作。分享出来供大家参考。 data.sql 是表结构的创建SQL,运行前先创建数据表。DBConfig.xml是数据库连接字符串的设置,只所以独立出来一个文件,主要是方便程序里对文件进行修,力求简单,在程序运行前先设置Mysql连接信息。访问地址为:http://localhost:6080/Admin/AdminUser/Index 下...阅读全文

博文 2015-05-12 21:00:02 王岩0001

golang socket服务器

一、main.go该代码从项目中分离出来,自行修改后再运行) package main import ( "flag" "fmt" "log" "os" "runtime" ) var ( Port = flag.String("i", ":12345", "IP port to listen on") logFileName = flag.String("log", "cServer.log", "Log file name") configFileName = flag.String("configfile", "config.ini", "General configuration file") ) var ( configFile = flag.String("configfile"...阅读全文

博文 2014-10-04 19:27:01 liaojie

golang的垃圾回收(GC)机制

请先阅读 golang的goroutine调度机制 然后再到这里 golang的垃圾回收采用的是 标记-清理(Mark-and-Sweep) 算法 就是先标记出需要回收的内存对象快,然后在清理掉; 在这里不介绍标记和清理的具体策略,只介绍 GC过程是怎么调度的以及stw相关 这个算法,会导致 stw (stop the world) 的问题,中断用户逻辑 触发GC机制 1. 在申请内存的时候,检查当前当前已分配的内存是否大于上次GC后的内存的2倍,若是则触发(主GC线程为当前M) 2. 监控线程发现上次GC的时间已经超过两分钟了,触发;将一个G任务放到全局G队列中去。(主GC线程为执行这个G任务的M) 每当触发的时候,在主GC线程中就会走如下的GC流程: 1. stop the world,...阅读全文

博文 2016-11-12 08:00:01 liangzhiyang

Go 环境变量相关操作

Go语言中os包提供了一些环境变量的操作封装。包括: 设置环境变量:Setenv 获取环境变量:Getenv 删除指定的环境变量:Unsetenv 获取所有环境变量:Environ 清除所有环境变量:Clearenv 请看示例代码: package main import "os" import "fmt" func main() { os.Clearenv() os.Setenv("FOO", "1") fmt.Println("FOO:", os.Getenv("FOO")) os.Unsetenv("FOO") fmt.Println("FOO:", os.Getenv("FOO")) os.Setenv("hello", "1") os.Setenv("world", "2") fm...阅读全文

博文 2015-06-02 03:00:16 baiyuxiong

go1.11的module机制和dep/govendor机制问题

module机制和dep/govendor机制是否冲突? 自从go团队推出module机制后,go团队和dep社区发生了一些冲突,有一篇有名的争论《关于Go Module的争吵》,读后给人一种错觉,似乎module机制和dep/govendor机制是不相容的。但是仔细分析二者的运行机制,其实两者并无冲突,反而是互补性质的。 module机制由环境变量GO111MODULE控制,它有三个值:off、on、auto,默认值是auto。在auto模式下,在$GOPATH/src路径下build时,默认使用vendor、GOPATH导入第三方包,而在GOPATH之外编译时,默认使用go.mod设置导入项目。我们知道vendor机制只有在GOPATH路径之下才起作用,到了GOPATH之外就没用了。所以...阅读全文

博文 2018-08-26 11:34:54 从火星来

golang package整理(strconv)

//package strconv //与字符串相关的类型转换都是通过 strconv 包实现的 //任何类型 T 转换为字符串总是成功的 //将字符串转换为其它类型 tp 并不总是可能的,可能会在运行时抛出错误 parsing "…": invalid argument //获取程序运行的操作系统平台下 int 类型所占的位数 strconv.IntSize //**********数字类型转换到字符串**/ //返回数字 i 所表示的字符串类型的十进制数 strconv.Itoa(i int) string //将 64 位浮点型的数字转换为字符串,其中 fmt 表示格式(其值可以是 'b'、'e'、'f' 或 'g'),prec 表示精度,bitSi// ze 则使用 32 表示 fl...阅读全文

博文 2015-08-01 09:00:02 ivandong_qifan

Go学习笔记——go routine

Go routine indeed 本短结论引用自:goroutine背后的系统知识,让我了解为什么goroutine这么轻量级,以及其优势劣势。 Go语言通过goroutine提供了目前为止所有(我所了解的)语言里对于并发编程的最清晰最直接的支持,Go语言的文档里对其特性也描述的非常全面甚至超过了,在这里,基于我们上面的系统知识介绍,列举一下goroutine的特性,算是小结: (1) goroutine是Go语言运行库的功能,不是操作系统提供的功能,goroutine不是用线程实现的。具体可参见Go语言源码里的pkg/runtime/proc.c (2) goroutine就是一段代码,一个函数入口,以及在堆上为其分配的一个堆栈。所以它非常廉价,我们可以很轻松的创建上万个goroutin...阅读全文

博文 2015-06-17 23:08:16 qjpcpu

Go语言 goroutine一些常用技巧

1. 操作系统与运行库 “运行库”这个词其实不止包括用于和编译后的目标执行程序进行链接的库文件,也包括了脚本语言或字节码解释型语言的运行环境,譬如Python,C#的CLR,Java的JRE。 对系统调用的封装只是运行库的很小一部分功能,运行库通常还提供了诸如字符串处理、数学计算、常用数据结构容器等等不需要操作系统支持的功能,同时,运行库也会对操作系统支持的功能提供更易用更高级的封装,譬如带缓存和格式的IO、线程池。 1. 支持新的语义或语法,从而便于我们描述和解决问题。譬如Java的泛型、Annotation、lambda表达式。 2. 提供了新的工具或类库,减少了我们开发的代码量。譬如Python 2.7的argparse 3. 对系统调用有了更良好更全面的封装,使我们可以做到以前在这个...阅读全文

博文 2014-10-11 18:00:01 abv123456789

对比C, java, go 递归计算fibonacci(40) 的性能

// fibonacci.c #include int main() { printf("%d", fibonacci(40)); } int fibonacci(int n) { if (n < 2) { return 1; } return fibonacci(n - 2) + fibonacci(n - 1); } 编译: CFLAGS="-march=corei7-avx -O2 -pipe" && gcc fibonacci.c 运行:time ./a.out 结果:165580141 real 0m0.977s user 0m0.975s sys 0m0.002s // Fibonacci.java public class Fibonacci { publi...阅读全文

博文 2014-10-04 19:26:30 ZhouJunhua

go 服务监控指标(metric)上报open-falcon

1. 概述 指标统计是实现APM(Application performance management)的基础,通常通过一些指标的统计以及上报,我们可以了解程序的运行状况,及时发现程序的问题,提前预估系统瓶颈.指标(metric)目前的实现有metrics,这是java的实现,可以直接引入程序作为库使用.go语言的实现见go-metrics.另外,这里只是将指标在内存中进行处理及计算,如果我们想要展示,需要将数据抛出来,这里可以抛到日志里,也可以抛到时序数据库,最简单的做法就是直接抛到监控系统进行绘图或者报警.因此本文后面将讲解各指标的含义以及如何将计算好的数据抛到监控open-falcon 2.指标统计方式 2.1 Meters 用于计算一段时间内的计量,通常用于计算接口调用频率,如QPS...阅读全文

博文 2018-04-28 09:34:37 沐风

golang 扫雷

1.//实现前导零出错:sn:="7DC3"+fmt.printf("%05d", uint16(rawdata[2])&0xFF+uint16(rawdata[1])) &:[fmt.Printf返回的是一个int和一个error,不能与string用+号一起操作] sn := fmt.Sprintf("%s%05d", "7DC3", uint16(rawdata[2])&0xFF+uint16(rawdata[1]))或fmt.Sprintf("7DC3%05d",uint16(rawdata[2])&0xFF+uint16(rawdata[1])) 2.//fmt.Sprint不能输出 &:根据fmt包API描述,fmt.Sprint是返回字符串,与fmt.Print的标准输出不同....阅读全文

博文 2014-10-04 19:26:45 陈好

iNote单页博客发布

> iNote是在[beego(golang语言)](http://beego.me/ "beego")&[bootstrap](http://getbootstrap.com/ "bootstrap")等开源项目基础之上开发的 ## 功能简介 - 前后端完全分离 - 响应式布局 - 内嵌[markdown](https://pandao.github.io/editor.md/ "markdown")编辑器 - URL支持hash(#)+id 文章导航 - 支持更换首页banner大图背景 - 文章功能 - 文章内容照片墙预览 - 文章标签功能 - 文章留言功能 - 留言回复功能 - Web后台管理 ## Linux环境编译安装(OSX,Win环境类似...阅读全文

一个 golang 应用监控的 package,包括系统信息和业务信息监控

golang 编写的程序,在程序开发完成之后,我们更想做的是对程序运行的状态能够时刻了解,或者在业务上跑着的程序出现了 bug 我们想要更加快速方便的知道问题出在哪里?监控包括程序运行的 cpu ,内存等系统状态,还有我们可以根据自己的需要自定义需要的监控数据。例如某一个任务队列,某一个函数的执行情况,错误出在哪里等等 https://github.com/wgliang/goappmonito...阅读全文

为什么这段代码运行后进程会死掉?

package main import "fmt" const ( WHITE = iota BLACK BLUE RED YELLOW ) type Color byte func (c Color) String() string { fmt.Println(c) return "Ok" } func main() { var c Color c = WHITE c.String() } 上面的代码运行会死掉. 如果把method的String改成其它名字,例如Stringt则可以正常执行,或者去掉返回值,或者返回值类型改为其他类型就可以正常执行. 求指教...阅读全文

自己写的简单解数独的web程序

[https://github.com/gs272/Shudu][1] [1]: https://github.com/gs272/Shudu 上面是项目地址,有点乱,但主要是想大家帮我分析下关于net/http和html/template包的使用。 还想问下get和post的区别,go怎么实现想asp那样实现网页上的程序运行,并不是每次操作都要类似重新载入页面那样,是不是跟get和post有关系啊? 比如像flash网页应用那样,我的操作只限于flash内部,对页面没有影响。 这点希望大神帮我解释下...阅读全文

Gin实践 番外 Golang交叉编译

Golang交叉编译 项目地址:https://github.com/EDDYCJY/go... (快上车,支持一波) 原文地址:https://segmentfault.com/a/11... 前言 在 连载九 讲解构建Scratch镜像时,我们编译可执行文件用了另外一个形式的命令,不知道你有没有疑问? $ CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o go-gin-example . 说明 我们将讲解命令各个参数的作用,希望你在阅读时,将每一项串联起来,你会发现这就是交叉编译相关的小知识 也就是 Golang 令人心动的特性之一跨平台编译 一、CGO_ENABLED 作用: 用于标识(声明) cgo 工具是否可用 意...阅读全文

博文 2018-03-26 15:34:41 煎鱼

go在windows下连接oracle数据库

一、系统环境 1. win7 64位 2. go 1.8 3. oracle SDK版本 12.1 4. mingw64位 5. go-oci8 二、安装步骤 1. 安装go1.8,参照网上的教程 2. 下载oracle 的sdk和运行库 3. 安装mingw64和pkg-config.exe,将pkg-config拷贝到mingw64的bin目录,pkg-config是编译go-oci8的时候需要用到的。 三、配置 1. 修改oci8.pc文件,存入mingw64的lib/pkgconfig目录 2. 修改PKG_CONFIG_PATH为E:\mingw-w64\mingw-w64\x86_64-4.9.2-posix-seh-rt_v3-r...阅读全文

golang -- rpc

内置的gob rpcserver package main import ( "errors" "fmt" "net" "net/rpc" "os" ) type Args struct { A, B int } type Quotient struct { Quo, Rem int } type Arith int func (t *Arith) Multiply(args *Args, reply *int) error { *reply = args.A * args.B return nil } func (t *Arith) Divide(args *Args, quo *Quotient) error { if args.B == 0 { return errors.New("d...阅读全文

博文 2014-10-04 19:26:55 flyking

[转载] goroutine背后的系统知识

文: http://www.sizeofvoid.net/goroutine-under-the-hood/ 文章写的非常好, 对内部原理解释的非常清楚, 是我喜欢的风格, 感谢作者的精彩文章. ================================================== Go语言从诞生到普及已经三年了,先行者大都是Web开发的背景,也有了一些普及型的书籍,可系统开发背景的人在学习这些书籍的时候,总有语焉不详的感觉,网上也有若干流传甚广的文章,可其中或多或少总有些与事实不符的技术描述。希望这篇文章能为比较缺少系统编程背景的Web开发人员介绍一下goroutine背后的系统知识。 1. 操作系统与运行库2. 并发与并行 (Concurrency and Parallel...阅读全文

博文 2015-06-25 03:00:00 zhengran

libtask channel机理及调度理解

学习golang的时候libtask库的代码是一定要看的,需要深入理解chan和携程的运行机制,下面就结合libtask的源码说明下运行原理,如果理解的有偏差欢迎指正 下面是libtask中Channel的结构 1 struct Alt 2 { 3 Channel *c; 4 void *v; 5 unsigned int op; 6 Task *task; 7 Alt *xalt; 8 }; 9 10 struct Altarray 11 { 12 Alt **a; 13 unsigned int n; 14 unsigned int m; 15 }; 16 17 struct Channel 18 { 19 unsigned int bufsize; 20 unsigned int el...阅读全文

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

并发协程goroutine

1. 操作系统与运行库 “运行库”这个词其实不止包括用于和编译后的目标执行程序进行链接的库文件,也包括了脚本语言或字节码解释型语言的运行环境,譬如Python,C#的CLR,Java的JRE。 对系统调用的封装只是运行库的很小一部分功能,运行库通常还提供了诸如字符串处理、数学计算、常用数据结构容器等等不需要操作系统支持的功能,同时,运行库也会对操作系统支持的功能提供更易用更高级的封装,譬如带缓存和格式的IO、线程池。 1. 支持新的语义或语法,从而便于我们描述和解决问题。譬如Java的泛型、Annotation、lambda表达式。 2. 提供了新的工具或类库,减少了我们开发的代码量。譬如Python 2.7的argparse 3. 对系统调用有了更良好更全面的封装,使我们可以做到以前在这个...阅读全文

博文 2015-06-18 17:00:25 kjfcpua

**北京:年薪30个比特币,招募区块链开发,欢迎Golang来聊**

北京某区块链研究院,**年薪30个比特币**(100万)招聘技术负责人,要求精通GO语言 、区块链技术 **岗位职责描述**: 1、从事区块链产品的设计和研发工作,研究区块链的协议,运行机制和底层实现等; 2、搭建基于区块链的底层架构,能实现公链、侧链、私有链及多种逻辑,供应用层调度使用; 3、根据实际需求及应用场景,设计区块链运行机制,开发智能合约; 4、组织制定区块链产品的技术方案,指导项目团队成员的日常开发工作,解决开发中的技术问题。 **任职要求**: 1、**985或211院校**,计算机相关专业硕士及以上学历,**8年以上开发工作经验**; 2、熟悉一种区块链开源项目,有区块链项目的开发/实施经验; 3、熟悉各种数据结构和算...阅读全文

Go 应用程序构建浅析

要理解并灵活运用一个语言,我觉得有必要了解其构建应用程序的内部机制。经过这段时间对GO的接触,个人对GO构建程序的方式挺满意:简单、直接、灵活。下面就对GO语言构建应用程序的方法进行一个浅显的分析。 构建一个GO项目,我们只需设置好工程工作目录,并在该目录下新建名为src的文件夹,然后将你的源文件放到src下就行了。为便于理解,这里给出一个简单项目的例子进行具体说明。 环境变量:GOPATH =path/to/GoPro:$GOPATH GoPro/ bin/ hello pkg/ linux_amd64/ example/ mymath.a src/ example/ mymath/ sqrt.go //package mymath hello/ test.go //package mai...阅读全文

博文 2014-11-15 18:00:08 u013148156

《Go语言编程》calc.go的错误

最近看由人民邮电出版社许式伟 吕桂华等编著《Go语言编程》【第1章初识Go语言】【1.5 工程管理】时,发现了示例代码calc.go有几处错误,args := os.Args数组变量args[0]代表程序自身,3个if语句len(args)条件判断右值也都小了1,按照书本编写代码运行时将会一直执行匿名函数Usage(),显示如下: USAGE: calc command [arguments] ... The commands are: add Addition of two values. sqrt Square root of a non-negative value. 正确的calc.go代码如下: // calc.go package main import ( "fmt" "os"...阅读全文

博文 2014-12-09 16:00:02 董松

《Go语言编程》【1.5 工程管理】calc.go的代码错误

最近看由人民邮电出版社许式伟 吕桂华等编著《Go语言编程》【第1章 初识Go语言】【1.5 工程管理】时,发现了示例代码calc.go有几处错误,args := os.Args数组变量args[0]代表程序自身,3个if语句len(args)条件判断右值也都小了1,按照书本编写代码运行时将会一直执行Usage()指向的匿名函数,显示如下: USAGE: calc command [arguments] ... The commands are: add Addition of two values. sqrt Square root of a non-negative value. 正确的calc.go代码如下: // calc.go package main import ( "fmt" ...阅读全文

博文 2014-12-09 20:00:01 董松

家庭/企业网络的透明代理软件 kone

kone是一款把路由请求转发到http/sock5 proxy的软件(route2proxy),你可以把它应用到很多需要路由的场合,它同时实现了dns欺骗功能,并隐藏其中的代理服务器细节,实现透明穿越。特点如下: (1)实现了灵活的匹配模式 (2)实现了dns欺骗功能可以透明穿越 (3)实现了WEB status接口,方便查看运行状...阅读全文

windows下vscode在安装go工具包,绝对有用,点一下,看一年

首先在vscode中安装go插件然后再运行go文件的时候vscode会提示安装gopkgs,然后选择全部安装.有六个包会安装失败:golang.org/x/tools/cmd/gurugolang.org/x/tools/cmd/gorenamegithub.com/acroca/go-symbolsgithub.com/ramya-rao-a/go-outlinegithub.com/sqs/goreturnsgithub.com/golang/lint/golint原因是在src下的golang.org/x/tools文件夹下没有对应的文件例如:golang.org/x/tools/cmd/guru 对应 golang.org/x/tools/cmd/gurugolang.org/x/t...阅读全文

博文 2018-05-14 14:51:17 she-lovely