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

1.golang 语言环境安装

Mac下安装go 基于Homerbrew安装,方便管理跟升级 brew install go 配置路径 vim ~/.bash_profile #export PATH export GOROOT=/usr/local/Cellar/go/1.8.1/libexec export GOBIN=$GOROOT/bin export GOPATH=/Users/antic/www/go export PATH=$PATH:$GOBIN 让配置立即生效 source .bash_profile 查看 go env antic:~ antic$ go env GOARCH="amd64" GOBIN="/usr/local/Cellar/go/1.8.1/libexec/bin" GOEXE="" ...阅读全文

博文 2017-10-23 07:03:27 antic

golang学习的点点滴滴:map使用

package main import "fmt" type Person struct { ID string Name string Addr string } func main() { var persons map[string] Person = make(map[string] Person) persons["123"] = Person {"123", "heihei", "haha"} p, ok := persons["123"] if ok { fmt.Println(p.Name) } fmt.Println("----") p2 := map[string] Person { "111" : Person {"111", "11111", "2222"}, } p...阅读全文

博文 2014-10-04 19:27:06 亓斌哥哥

Go内存优化(一)— struct

理 关于Golang同一struct中field的书写顺序不同内存分配大小也会不同。主要原因如下:struct内field内存分配是以4B为基础,超过4B时必须独占。 示例 type A1 struct { a bool b uint32 c bool d uint32 e uint8 f uint32 g uint8 } 计算一下A1所需要占用的内存: 首先第1个4B中放入a,a是bool型,占用1B,剩余3B 这时看b是uint32,占用4B,剩余3B放不下,所以offset到下一个4B空间,这时我们会发现3B没有放东西,被浪费了 依次往下,A1要占用28B的空间 根据1,2两个步骤很容易看出,有很多浪费空间。 优化: type A2 struct { a bool c bool e u...阅读全文

博文 2018-06-29 15:34:44 sipt

如何使用 go get 下载 gitlab 私有项目

据此 issue ,gitlab 7.8 就开始支持 go get private repo。 假设 gitlab 服务是: mygitlab.com 使用方式:http://www.zhuangxiuzhishi.com/e/space/?userid=212379?feed_filter=/XQ/2016/09/20/1983.html http://www.51xiaoba.com/e/space/?userid=1403190?feed_filter=/PN/2016/09/20/6831.html http://www.dingfengnet.com/e/space/?userid=1157469?feed_filter=/HU/2016/09/20/2481.html http:...阅读全文

博文 2016-09-20 17:00:02 lintingte

Go语言实现Fibonacci数列的两个算法(使用递归和不使用递归)

Fibonacci数列:1,1,2,3,5,8,13,21,,, (即从第三项起,每一项的值都等于前两项之后) 第一种,使用递归: func fibonacci(a int) int { if a == 1 || a == 2 { return 1 } return fibonacci(a-1) + fibonacci(a-2) } 第二种,不使用递归: func fibonacci_version2(index int) int { if index == 1 || index == 2 { return 1 } a, b := 1, 1 for i := 3; i <= index; i++ { a, b = b, (a + b) } return a + b } 经过检验,使用非递归算...阅读全文

博文 2015-06-17 23:02:39 books1958

Golang使用工具

go get -u -v github.com/nsf/gocodego get -u -v github.com/rogpeppe/godefgo get -u -v github.com/golang/lint/golintgo get -u -v github.com/lukehoban/go-find-referencesgo get -u -v github.com/lukehoban/go-outlinego get -u -v sourcegraph.com/sqs/goreturnsgo get -u -v golang.org/x/tools/cmd/gorenamego get -u -v github.com/tpng/gopkgs go get -u -v githu...阅读全文

博文 2016-04-10 11:00:12 northldk

Mac系统搭建Go语言Sublime Text 2环境配置

Go语言是谷歌自家的编译型语言,旨在不损失性能的前提下降低代码复杂率。其优势是让软件充分发挥多核心处理器同步多工的优点,并可解决面向对象程序设计的麻烦。 一、安装Golang的SDK 在官网http://golang.org/ 直接下载安装包安装即可。下载pkg格式的最新安装包,直接双击运行,一路按照提示操作即可完成安装。 安装完成后,打开终端,输入go,检测Golang SDK是否安装成功,如下显示,则表示安装成功: 你也可以输入go version 查看你所安装的Golang的版本 二、环境变量配置(GOPATH) GOPATH是用来告诉Golang命令和其他相关工具,在哪里可以找到你系统上的Go包目录。 GOPATH是一个路径列表,类似于PATH的设置: GOPATH=/home/US...阅读全文

博文 2016-03-16 03:00:01 wxd0108

Go语言Mysql简单使用.

查询: package main import ( "database/sql" "fmt" _ "github.com/go-sql-driver/mysql" "time" ) func main() { con, _ := sql.Open("mysql", "root:123456@tcp(localhost:3316)/mysql") defer con.Close() go query(con) time.Sleep(1e9) } func query(con *sql.DB) { Q, _ := con.Prepare("select user,host,password from user where user = ? and host = ?") defer Q.Close...阅读全文

博文 2015-06-17 23:06:59 fyxichen

go json转换

确定类型变换1234567891011121314151617181920212223242526272829303132333435package mainimport ( "encoding/json" "fmt")type F struct { H string K int}type A struct { B string C int D map[string]int E []int F F}func main() { txt := `{"b":"hello word","c":1,"d":{"a":1,"b":2},"e":[2,3,4,5],"f":{"h":"a","k":1}}` var ab A json.Unmarshal([]byte(txt), &ab) fmt.Pri...阅读全文

php

1、zval优化,大幅减少内存使用;Huge Pages;New memory manager ‣ Zend VM refactor ‣ Supper global registers ‣ Huge Pages ‣ File based opcache ‣ No refcount for scalar types ‣ Function calling convention improved ‣ zvals are always pre-allcocated or allocated in stack(no more MAKE_STD_ZVAL and ALLOC_ZVAL) ‣ Faster string comparing also ‣ New HashTable iteration AP...阅读全文

博文 2018-08-10 16:46:00 lobo

图解golang内存分配

前言 我们知道所有程序运行都需要使用内存,而内存的管理和分配又是非常重要的,它决定了你的程序能不能在有限的资源内跑的更快。可以设想一下,如果你自己来设计的一个内存分配的规则,会遇到什么问题呢?如果你有了一大块内存你要怎么去合理的分配和使用呢?今天我们通过几张图来看看golang中的内存分配是怎样的。 前置知识:对golang的GPM模型有所了解,对GC有一定的了解,有助于你理解下面的内容。 想一想 我们首先来想一下,如果我们自己来分配内存的时候可能会遇到什么问题。 我想要512G,你能给吗? 操作系统的内存不是你想要多少就给你多少的。比如我跟操作系统说我要512G内存,你赶紧给我,不给我我就掐死你,如果你是操作系统,是不是立马就想把我给结束了? 能随便分割吗? 如果我拿到一块内存,挺大的,你...阅读全文

博文 2019-11-09 16:32:51 更多精彩内容Go内存分配机制总结adrian920Go内存分配机制-TCMalloc链人成长chainerup(十一)golang 内存分析杰克慢图解Golang的内存分配RyuGou图解Go语言内存分配ddu_sw

golang context简单demo使用

package test import ( "testing" "time" "context" ) var ( ctxt context.Context cancel context.CancelFunc ) func TestEnum(t *testing.T) { ctxt, cancel = context.WithCancel(context.Background()) go show() go func() { time.Sleep(time.Second * 10) closeShow() }() time.Sleep(time.Second * 15) } func show() { for { select { case <-ctxt.Done(): println("do...阅读全文

博文 2017-10-27 06:04:52 承诺一时的华丽

Beego数据库操作及路由控制

beego入门体验通过beego自带bee工具bee run 创建完一个项目以后。那么便可以在这么目录结构上完成我的项目。其中,少不了数据库操作和路由。我们在原有的基础上新建一个数据库article的数据库表。结构如下: CREATE TABLE IF NOT EXISTS `article` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(200) NOT NULL, `client` varchar(200) NOT NULL, `url` varchar(200) NOT NULL, `notes` text NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFA...阅读全文

博文 2017-02-10 16:07:05 一拳打死你

golang协程进行同步方法

1、使用chanel func main() { done := make(chan bool) ticker := time.NewTicker(time.Millisecond * 1000) go func() { total := 0 for t := range ticker.C { fmt.Println("Tick at:", t) total += 1 if total > 10 { break } } done <- true }() <-done ticker.Stop() } 2 、使用waigroup func main() { var wg sync.WaitGroup wg.Add(1) ticker := time.NewTicker(time.Millisec...阅读全文

博文 2017-09-19 12:30:02 xiazh

golang 使用时间通过md5生成token

package main import ( "crypto/md5" "fmt" "io" "strconv" "time" ) func main() { crutime := time.Now().Unix() fmt.Println("crutime-->", crutime) h := md5.New() fmt.Println("h-->", h) fmt.Println("strconv.FormatInt(crutime, 10)-->", strconv.FormatInt(crutime, 10)) io.WriteString(h, strconv.FormatInt(crutime, 10)) fmt.Println("h-->", h) token := fmt.Sp...阅读全文

博文 2017-03-02 12:01:07 徐学良

指针的使用,在go里面看到了好多指针的使用,但是有时候也分不清什么情况用指针,希望各位帮助,谢谢。

// ps aux | grep "signal" | grep -v "grep" | grep -v "go run" | awk '{print $2}' cmds := []*exec.Cmd{ // 这里为什么用指针呢??? exec.Command("ps", "aux"), exec.Command("grep", "signal"), exec.Command("grep", "-v", "grep"), exec.Command("grep", "-v", "go run"), exec.Command("awk", "{print $2}"), ...阅读全文

golang互斥锁的两种实现

1. 用Mutex实现 package main import ( "fmt" "sync" ) var num int var mtx sync.Mutex var wg sync.WaitGroup func add() { mtx.Lock() defer mtx.Unlock() defer wg.Done() num += 1 } func main() { for i := 0; i < 100; i++ { wg.Add(1) go add() } wg.Wait() fmt.Println("num:", num) } 2. 使用chan实现 package main import ( "fmt" "sync" ) var num int func add(h chan in...阅读全文

博文 2019-02-28 18:34:41 无尽雷域

是否应尽可能少用interface{}作为返回类型?

在项目开发中遇到很多函数返回interface{}类型,其实很多时候是可以知道明确返回的类型的,但还是为了方便使用interface{},但是在解析数据的时候就不方便了,每次都要再使用封装的方法如utils.InterfaceToStr,utils.InterfaceToMapInterface,utils.InterfaceToInt等等再转换类型,这岂不是造成多余的类型转换吗,这种类型转换是否带来不必要的开销...阅读全文

Golang sync.Once使用

package main import ( "fmt" "sync" ) func main() { var count int increment := func() { count++ } var once sync.Once var increments sync.WaitGroup increments.Add(100) for i := 0; i < 100; i++ { go func() { defer increments.Done() once.Do(increment) }() } increments.Wait() fmt.Printf("Count is %d\n", count) } 程序输出如下, image.pn...阅读全文

博文 2019-06-08 17:32:39 FredricZhu

golang笔记之指针使用

Choosing a value or pointer receiver There are two reasons to use a pointer receiver. The first is so that the method can modify the value that its receiver points to. The second is to avoid copying the value on each method call. This can be more efficient if the receiver is a large struct, for example. package main import ( "fmt" "math" ) type Ver...阅读全文

博文 2019-05-07 13:35:10 月下独酌100

Golang与Mysql

mysql数据可使用 package database import ( "database/sql" _ "github.com/go-sql-driver/mysql" "log" ) var SqlDB *sql.DB func init() { var err error SqlDB, err = sql.Open("mysql", "root:diumxcom@tcp(localhost:3306)/students") if err != nil { log.Fatal(err.Error()) } err = SqlDB.Ping() if err != nil { log.Fatal(err.Error()) } ...阅读全文

博文 2019-10-13 23:02:46 aside section ._1OhGeD

Golang MSC 约定

分层结构 Model (模型) 可以包含少量方法; 不引用外部资源; 功能: 数据传输; 持久话; 校验信息; json、xml转换格式定义; 如无必要,转换json、xml格式时无需改变字段大小写,减少无谓的工作量; Service (服务) 提供被多方使用的公共方法; 名称以Service结尾; 会被多个Ctrl或Service调用; 可创建、输入、输出Model; 可调用其他Service; 不可调用Ctrl; 主要的单元测试对象,覆盖率要足够高; 提供一个New方法创建服务,方法的参数是需要引用的其他服务; Ctrl (控制器) 对外提供交互服务; 名称以Ctrl结尾; 包含一个路由方法(Party),说明RESTful调用名称、路径、模式参数等; Ctrl不能被Model和Serv...阅读全文

博文 2019-08-29 11:32:53 安德徐

利用阿里云容器服务实现自定义节点伸缩

摘要: 容器服务目前提供创建节点触发器的功能,调用节点触发器,并可以利用openAPI查看扩容出来的ECS节点方便管理和自动化的需求. 本文将向您介绍完成这一能力的步骤。 简介 阿里云容器服务很早就提供了基于集群CPU/内存的平均使用量触发节点自动伸缩功能,帮助许多客户自如应对业务压力的弹性变化。其原理是利用阿里云的云监控能力,在资源使用(cpu和memory)达到阈值时,触发节点伸缩。 同时还有一些企业级用户希望根据自身的监控数据和逻辑判断是否进行扩容和缩容操作,甚至可以按照固定时间进行节点扩容和缩容,针对这种场景,就需要调用的是扩容或者缩容触发器。 容器服务目前提供创建节点触发器的功能,调用节点触发器,并可以利用openAPI查看扩容出来的ECS节点方便管理和自动化的...阅读全文