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

defer的坑与return的理解

defer会经常用到,但是这个坑对于我并不会踩到,因为我通常不会用到命名返回参数,一则没有多少必要,二则增加了代码阅读难度。不过,这个坑能让人很好地理解return这个关键字,所以在此记录下。 func test() (res int) { res = 1 defer func() { res++ }() return 0 } 默默在心里运行这个程序,第一个返回值应该是0嘛,其实不然,return并不是个原子操作。分为了,赋值和返回两个操作,其实是等价于,而defer是在赋值操作后执行的,所以这个函数等价于: func test() (res int) { res = 1 res = 0 //赋值 func() { res++ /...阅读全文

博文 2018-08-13 12:35:04 Cedrus

golang 使用 protobuf 的教程

1、下载protobuf的编译器protoc 地址: https://github.com/google/protobuf/releases window: 下载: protoc-3.3.0-win32.zip 解压,把bin目录下的protoc.exe复制到GOPATH/bin下,GOPATH/bin加入环境变量。 当然也可放在其他目录,需加入环境变量,能让系统找到protoc.exelinux: 下载:protoc-3.3.0-linux-x86_64.zip 或 protoc-3.3.0-linux-x86_32.zip 解压,把bin目录下的protoc复制到GOPATH/bin下,GOPATH/bin加入环境变量。 如果喜欢编译安装的,也可下载源码自行安装,最后将可执行文件加入环境...阅读全文

博文 2017-07-20 04:00:03 jkko123

超级账本HyperLedger:Fabric Golang SDK的使用(附视频)

作者:李佶澳转载请保留:原文地址发布时间:2018/07/28 13:34:00说明HyperLedger Fabric的Golang SDK终于调通了,眼泪哗哗地。。 @2018-07-28 13:36:06操作演示、配置文件和代码讲解视频在网易云课堂《HyperLeger Fabric进阶实战课》第五章中。获取示例代码源代码托管在github:源代码地址,fabric-sdk-gogo get github.com/introclass/hyperledger-fabric-sdks-usagecd $GOPATH/src/github.com/introclass/hyperledger-fabric-sdks-usage/go准备msp和tls证书将你自己环境的crypto-conf...阅读全文

博文 2018-07-28 18:34:51 李佶澳

Golang解析xml

golang解析xml到struct func Xml() { xmlDoc := ` Tove Jani Reminder Don't forget me this weekend! ` type xmlStruct struct { XMLName xml.Name `xml:"note"` To string `xml:"to"` From string `xml:"from"` Heading string `xml:"heading"` Body string `xml:"...阅读全文

博文 2020-04-11 13:32:42 是个懒人

你不得不知道的sync.Map源码分析

sync.Map源码分析 背景 众所周知,go普通的map是不支持并发的,换而言之,不是线程(goroutine)安全的。博主是从golang 1.4开始使用的,那时候map的并发读是没有支持,但是并发写会出现脏数据。golang 1.6之后,并发地读写会直接panic: fatal error: concurrent map read and map write package main func main() { m := make(map[int]int) go func() { for { _ = m[1] } }() go func() { for { m[2] = 2 } }() select {} } 所以需要支持对map的并发读写时候,博主使用两种方法: 第三方类库 conc...阅读全文

博文 2018-06-10 19:34:36 梦朝思夕

在 Go 运行时中的 Strings

## 动机(Motivation) 可以认为这是对 [Rob Pike](https://ai.google/research/people/r) 的一篇关于 Go 字符串的[博客](https://blog.golang.org/strings)的解释。以 Go 程序员的思维来写。 在博客文章中,他说没有什么证据可以证明 Go 字符串是以 slices 的方式实现。我猜这不是他的疏忽,但起码可以证明一点,这不是这篇博客的核心。再说,任何想要自己研究的都可以在使用 Go 代码的过程中探索。我就是这样做的。所以在这篇文章中,我尽力解释 Go 字符串实现与 slice 实现的关系。 这里不讨论字符串编码。这不是在 runtime 中我想要探索的东西。但我模仿 slice 的常见字符串操作,如字符...阅读全文

博文 2018-10-13 23:04:08 gogeof

golang 通过channel控制并发数量

使用 go 关键字有时候需要控制一下并发的数量, 但不至于去修改 runtime.GOMAXPROCS 这个数值, 这里就用到了缓冲channel的特性 demo: package pool import ( "sync" ) // WaitGroup 一个异步结构体 type WaitGroup struct { workChan chan int wg sync.WaitGroup } // NewPool 生成一个工作池, coreNum 限制 func NewPool(coreNum int) *WaitGroup { ch := make(chan int, coreNum) return &WaitGroup{ workChan: ch, wg: sync.WaitGroup{}...阅读全文

博文 2020-01-09 20:34:38 只是一个id

go语言:linux 源码安装

首先下载源码:http://www.golangtc.com/download 解压后,进入src文件夹,执行 ./all.bash 等待安装结束后,把目录复制到/usr/local/里,设置两个环境变量: export GOROOT=/usr/local/goexport PATH=$PATH:$GOROOT/bin 然后就可以测试啦 Create a file named hello.go and put the following program in it: package main import "fmt" func main() { fmt.Printf("hello, world\n") } Then run it with the go tool: $ go run hell...阅读全文

博文 2015-05-15 03:00:01 xujinping

go语言常用函数

append append:在切片末尾添加元素并返回结果。append函数原型:func append(slice []T, elements...T) 。其中T表示任意类型。 示例1: 1 arr1 := []int{1, 2, 3} 2 arr2 := append(arr1, 4, 5, 6) 3 fmt.Println(arr2) // 输出:1,2,3,4,5,6 append不仅能在切片末尾添加普通元素,还能在切片末尾添加切片。 1 arr1 := []int{1, 2, 3} 2 arr2 := []int{4, 5, 6} 3 arr3 := append(arr1, arr2...) // 此处必须要有 ... 否则编译器会报类型错误 4 fmt.Println(arr3)...阅读全文

博文 2015-06-12 03:00:00 hezhixiong

内部排序算法(Golang版本)

package main import ( "fmt" ) func main() { //保存需要排序的Slice arr := []int{9, 3, 4, 7, 2, 1, 0, 11, 12, 11, 13, 4, 7, 2, 1, 0, 11, 12, 11} //实际用于排序的Slice list := make([]int, len(arr)) copy(list, arr) BubbleSortX(list) fmt.Println("冒泡排序:\t", list) copy(list, arr) QuickSort(list, 0, len(arr)-1) fmt.Println("快速排序:\t", list) copy(list, arr) //将arr的数据覆盖到li...阅读全文

博文 2015-11-23 03:00:00 achst

Ubuntu 13.04 golang开发环境配置

env: ubuntu 13.04 i386 go 1.0.3 sublime text 2 go/golang不错的IDE组合:gocode + sublime text 2 + gosublime 首先安装go,两种方法: 1. 自动:sudo apt-get install golang 配置环境系统帮你配置好了 2. 手动:下载go二进制包,解压到/usr/local/目录下(这个目录是go建议的,我安装到其它目录在配置gocode自动补全时出现问题·),然后配置go环境,在~/.bashrc文件最后添加如下: export GOROOT=/usr/local/go export GOBIN=$GOROOT/bin export GOOS=linux export GOARCH=38...阅读全文

博文 2014-10-04 19:26:10 Honghe

Go 的包与编译时的依赖包查找机制

包机制 同一目录下只能存在一个包;若同一目录下存在多个包,该目录被别的源文件导入时编译时会报错,不可同一路径导入两个包。 目录和目录下源文件的包命名可以不同,目录被导入时只是提供包的路径而已;若目录名称和目录下包名称不同,当目录被导入时不必为包起别名即可在下文中使用包,当然,使用方式不是以目录名为前缀,而是以目录下的包名为前缀,不过这会导致读代码时不知道该包是来自哪个路径。所以一般规范的写法是保持目录和目录下的包名称相同。 不同目录下若存在相同名称的包,若在一个源文件中需同时导入使用这些包,首先一定是需要导入多个目录路径的,所以这些来自不同路径的相同名称的包就被视为了不同的包,但因为名称一样,所以同时导入到一个源文件时会导致命名冲突编译不通过:redeclared as imported p...阅读全文

博文 2019-08-16 00:02:44 Xavier

Golang在windows7下搭建eclipse开发环境

一.下载安装go 这里有个下载地址:点击下载 下载安装完毕后,配置系统变量环境: (我默认安装在D:\Go,另外新建一个目录D:\go_workspace,并在此文件下新建三个目录,分别是bin,pkg,src) 然后打开cmd,输入go env 二.配置eclipse环境 打开goclipse的github地址:打开网址 点击打开插件加载地址:打开网址 注意此插件默认需要jkd8,否则安装了也不会显示 设置goclipse 编译gocode实现代码提示 打开gocode的github地址:打开网址 下载源代码到本地,解压后放在gopath下的src目录下 执行cmd 此时将会生成gocode.exe文件,将此文件复制到任一位置,然后再goclipse中配置如下 三,新建Go Projec...阅读全文

博文 2015-08-22 12:00:01 andyadc

go tool no such tool yacc

go1.8移除了yacc工具,使用goyacc,因此一些旧的编译脚本可能报错。这里有两个不太地道的解决方案: 方法 1.修改脚本使用goyacc 方法 2.如果文件不符合goyacc规范(goyacc工具,使用方法基本类似于贝尔实验室的yacc工具,但是还是有所不同),这时候想办法使用yacc更好些,避免修改源代码。这种方案需要以下几步: 1) strace go tool yacc,根据跟踪信息确定go 是在哪个目录下查找这个工具的。假设在/usr/local/go/pkg/tool/linux_amd64/yacc 2) 在旧版本的目录下找到yacc工具,复制到响应的目录下即可。 附带yacc的一个下载地址: yacc 链接: 访问连接 密码: 3ta3 相关阅读 https://git...阅读全文

博文 2017-07-20 17:00:11 dengshijun

Golang:切片

切片 切片(Slice)是一个拥有相同类型元素的可变长度的序列。它是基于数组类型做的一层封装。非常灵活,支持自动扩容。 切片属于引用类型,它的内部结构包含地址、长度和容量。切片一般用于快速地操作一块数据集合。 切片的定义 声明切片的基本语法: var name []T 其中: name表示变量名 T表示切片中的元素类型 func main() { // 声明切片类型 var a []string //声明一个字符串切片 var b = []int{} //声明一个整型切片并初始化 var c = []bool{false, true} //声明一个布尔切片并初始化 var d = []bool{false, true} //声明一个布尔切片并初始化 fmt.Println(a) //[] f...阅读全文

十二赞日志收集与报警系统一览

先快速介绍一下十二赞的日志收集系统:十二赞的日志收集系统,分为两块,一块是线上系统的各种报错、异常的日志收集,主要是各种线上代码运行期间产生,我们称之为log-collect,一块是用户行为操作的日志收集,主要是由各个业务系统根据用户的行为来上报,比如用户A访问了xx页面,用户B收藏了某某商品等,我们称之为eventdb。 基于这两块的日志收集,我们实现了一些自己非常自豪的特性。比如,基于log-collect,我们做到了能够主动去发现问题,抢在大多数客户发现异常之前,就把问题处理掉,从而做到不断地提高Saas系统的可用率和稳定性;基于eventdb,我们能做到非常完善的行为收集,将我们的返利模块、分销模块的准确度、实时性大幅度提高。 下面我们介绍一下系统的架构。 从需求上,我们认为log-...阅读全文

博文 2018-11-14 14:34:42 十二赞

从golang的垃圾回收说起(上篇)

本文来自网易云社区1 垃圾回收中的重要概念1.1 定义In computer science, garbage collection (GC) is a form of automatic memory management. The garbage collector, or just collector, attempts to reclaim garbage, or memory occupied by objects that are no longer in use by the program. Garbage collection was invented by John McCarthy around 1959 to simplify manual memory manage...阅读全文

博文 2018-08-28 21:30:00 163yun

go语言工程约定,分包和编译

go-lang已经发布了go1,前段时间看了一下go语言的教程,就喜欢上了这门语言,但使用多个文件编译是碰到一些麻烦,引用出错编译通不过,google之找到了这篇教程https://golang.org/doc/code.html,我按自己的理解记录一下,英文好的童鞋还是看原文吧! go语言可以用makefile,也可以按他的约定来直接编译。约定其实比较简单,go语言是这么来配置他的工程的 prjDir # 工程根目录 bin/ hello # 可执行文件,window下为hello.exe pkg/ # 包跟目录 linux_amd64/ # 执行平台 example/ # 分包目录 newmath.a # 包,类似java中的jar src/ # 源代码 example/ hello/ ...阅读全文

博文 2014-10-04 19:26:28 lavafree

go---agent 提高访问网站速度的方法

通过go--agent+谷歌浏览器插件SwitchyOmega,很多小伙伴们能跃出去看看外面的世界,那么问题来了:打开一个网站,速度实在是蛋蛋的忧伤。如下我介绍亲如何提高速度: Step1:工欲善其事,必先利其器,我们需要挑选一款找好用IP的工具,他的名字叫:GoGo Tester,有它的更新网址:https://code.google.com/p/gogo-tester/; Step2:把该工具放在go-agent的local目录下,运行之。先 随机测试,挑选10个ip,然后再 标准测试,挑选出稳定的ip; Step3:把挑选出的稳定且强悍的ip地址复制到go-agent的local目录下文件proxy.ini中[iplist]下的google_cn和google_hk中,注意了,以前的例...阅读全文

博文 2015-06-18 09:02:46 myspring_zheng

以io.Writer为例看go中的interface{}

阅读该文后的一些理解 1 io.Writer接口 io.Writer接口有如下定义 package io type Writer interface { Write(p []byte) (n int, err error) } //根据go中接口的特点,所有实现了Write方法的类型,我们都说它实现了io.Writer接口。 2 somepkg.abc类型实现了io.Writer接口 package somepkg type Abc struct { id int } func (a *Abc) Write(p []byte) (n int, err error){ //writing.... return 1,nil //模拟返回,n表示写了几个字节,err表示是否有错误 } //根据go...阅读全文

博文 2014-10-04 19:26:27 waynehu

Golang中的字节序列化操作

在写网络程序的时候,我们经常需要将结构体或者整数等数据类型序列化成二进制的buffer串。或者从一个buffer中解析出来一个结构体出来,最典型的就是在协议的header部分表征head length 或者body length在拼包和拆包的过程中,需要按照规定的整数类型进行解析,且涉及到大小端序的问题。1.C中是怎么操作的在C中我们最简单的方法是用memcpy来一个整形数或者结构体等其他类型复制到一块内存中,然后在强转回需要的类型。如: // produce int a = 32; char *buf = (char *)malloc(sizeof(int)); memcpy(buf,&a,sizeof(int)); // consume int b ; memcpy(&b,buf,siz...阅读全文

博文 2017-02-09 17:21:03 gotaly

Go读取大量数据,开启多协程,将读取的文件内容导入数据库,出现丢失数据现象

各位大佬,Go新人,昨天写了一个数据库导入工具,从本地文件并导入DbFileReadWriteChanel的数据是正确无缺少的,就在开启100协程写入数据,执行完毕后,发现导入后的数据表中缺少了100多条。
\ 清空数据表后,又运行,一次还是缺少,然后进行少量的数据测试,发现,还是丢失,但如果只是使用主线程,导入,则无问题。
初步思考,代码出现问题的范围为一下代码块,请各位大佬协助,帮忙找一下问题所在,谢谢帮助。
``` //将存入chanel中的数据导入到数据库表中 func (this *DbFileRead) ImportTable(DbFileReadWriteChanel chan DbFileRead, exitChan chan bool) error {...阅读全文

[golang把文件复制到另一个目录]

//本程序 主要功能是把A文件夹下的文件与B目录下文件对比,如果找到就覆盖到B相应的目录下。 // 用法: merge A目录 B目录 // merge.go package main import ( "flag" "fmt" "os" "path/filepath" "strings" "time" "github.com/Unknwon/com" ) const ( IsDirectory = iota IsRegular IsSymlink ) type sysFile struct { fType int fName string fLink string fSize int64 fMtime time.Time fPerm os.FileMode } type F struct ...阅读全文

博文 2016-09-10 12:00:02 zistxym

把别人的Tcl/Tk代码加入到Go语言里10 游戏3 简单的跑车

a 首先打开网页 http://wiki.tcl.tk/4364 【Car racing in TclUpdated 2011-08-25 01:30:05 by RLE】 b 把网页里提到的tcl/tk代码复制到如下go源代码的init_script字符串常量里 package main import "github.com/nsf/gothic" const init_script = ` #把Tcl/Tk源代码复制到这个常量里 ` func main() { ir := gothic.NewInterpreter(init_script) <-ir.Done } c 在LiteIDE里或命令行里go run go代码文件,运行效果如下 【使用wsad和上下左右键来控制车...阅读全文

博文 2015-05-13 08:00:00 名字不能长

Windows 下GCC编译C程序调用Golang静态库和C动态库

1. 编译golang 静态库 package main import ( "C" "fmt" ) //export Foo func Foo(a, b int) int { return a + b } //export Bar func Bar() { fmt.Println("Hello, I'm LiLei.") } func main() { } 使用命令编译得到静态库和头文件 go build -o main.a -buildmode=c-archive main.go 2. 编写C的动态库 demo.h int foo(); int bar(); demo.c #include "demo.h" #include int foo(){ int a[3] = ...阅读全文

博文 2018-02-06 22:33:04 hotkit

把别人的Tcl/Tk代码加入到Go语言里7 文本模式(终端)的进度条

a 首先打开网页 http://wiki.tcl.tk/16939 b 把网页里提到的第一段tcl/tk代码复制到go源代码的init_script字符串常量里 package main import "github.com/nsf/gothic" const init_script = ` #把Tcl/Tk源代码复制到这个常量里 ` func main() { ir := gothic.NewInterpreter(init_script) <-ir.Done } c 我们需要再增加几行tcl/tk代码到init_script字符串常量末尾 for {set i 0} {$i < 6200} {incr i 200} { progres $i 6200 after 200} d OK,可以...阅读全文

博文 2015-05-01 15:00:05 名字不能长

go语言六——连接mysql

自:Golang连接Mysql 首先go-driver-sql的mysql版本,我通过 go get code.google.com/p/go-mysql-driver/mysql 安装失败,貌似是git版本不够新的缘故,不过用不着这么麻烦,直接去github下载源代码即可,解压到/usr/local/go/src/pkg/mysql目录 package main // 导入sql包, 跟java.sql类似的 import "database/sql" import _ "mysql" import "encoding/json" import "fmt" // 定义一个结构体, 需要大写开头哦, 字段名也需要大写开头哦, 否则json模块会识别不了 // 结构体成员仅大写开头外界才能访问...阅读全文

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

go~漫漫学习路

突然间,回想起了以前的生活,想起了很多的事情,现在回想到的过去都是美好的,都是现在所想念的,人生就是这样,很多东西都要失去后才会懂得珍惜!现在想想现在的生活是不是等到以后又要开始想念了呢? 我决定了每周在这里写一篇雷记录我现在的生活、学习,记录我的点点滴滴。大学真的过的很快,回想起两年前刚到学校时的无目标,真是觉得可惜,大三了,什么都变了,个人的心态变得最厉害了,现在开始珍惜目前的生活了!在为自己的目标忙碌着,心理又有那么一丝丝的害怕,害怕自己学的知识不够。 在人生的道路上不断的摸索,同时也希望能够得到有经验的前辈帮助,少走些弯路!自己喜欢数据库,同时又是那么的崇拜冯大辉,现在只能通过不断的努力好好学习知识啦! 加油...阅读全文

博文 2014-10-04 19:26:38 cheng~ding

Go学习笔记之复合数据

个人理解的复合数据是由其他数据格式复合而成。 1、array 数组的类型格式为单个数据单元类型+长度构成,如 [2]int,其中 [2] 代表数组的长度,而 int 代表每个单元都是整形。 数组的元素操作也是通过操作下标,即 arr[1] ,取出数组 arr 中的第2个元素,数组下标从0开始算起。 数组的长度可以通过 len(arr) 获取数组 arr 的长度。 1-1 声明和初始化 数组声明格式为 var 数组名 [数组长度]元素类型 例如: var arr [2]int arr[0] = 1 // 声明以后,就可以使用index进行赋值 声明数组后,未进行初始化,则每个数据单元的初值是单元数据类型的默认值,例如 int 就是 0 ,string 是空 "" 声明的同时也可以初始化 var...阅读全文

博文 2015-06-17 20:08:20 hnxxwyq

golang的channel使用

channel sample1 close twice ch := make(chan bool) close(ch) close(ch) // 这样会panic的,channel不能close两次 读取的时候channel提前关闭了 ch := make(chan string) close(ch) i := <- ch // 不会panic, i读取到的值是空 "", 如果channel是bool的,那么读取到的是false 向已经关闭的channel写数据http://play.golang.org/p/vl5d5tkfl7 ch := make(chan string) close(ch) ch <- "good" // 会panic的 判断channel是否close i, ok ...阅读全文

博文 2014-10-04 19:26:45 go-skyblue

Kubernetes笔记(1)—— hyperkube

k8s中用到一个hyperkube模块,其功能如下: // Package hyperkube is a framework for kubernetes server components. It // allows us to combine all of the kubernetes server components into a single // binary where the user selects which components to run in any individual // process. // // Currently, only one server component can be run at once. As such there is // no...阅读全文

博文 2017-06-24 19:20:39 肖楠

golang编程之时间编程

本文转载于:http://blog.chinaunix.net/uid-24774106-id-4006530.html 编程离不开时间,时间管理,严格的说分成两块,一个是当前的时刻,对应的是一个点,还有是一段时间间隔。本文简单的讲讲go的时间相关的编程,比较简单,高手可以一笑而过。 golang对时间的支持,是package time做的事儿,里面有好多的函数,我就不一一举例学习,毕竟这是官方文档干的事情。我们初步的学习下常用的函数。 第一个是UNIX epoch time,确切的说就是自1970-01-01 00:00:00 GMT以来的秒数,不知道如何获取的,可以在shell下执行 date +%s manu@manu-hacks:~/code/go/self$ date +%s 13...阅读全文

博文 2014-10-04 19:26:10 yavobo

把别人的Tcl/Tk代码加入到Go语言里10 游戏3 简单的跑车

a 首先打开网页 http://wiki.tcl.tk/4364 【Car racing in TclUpdated 2011-08-25 01:30:05 by RLE】 b 把网页里提到的tcl/tk代码复制到如下go源代码的init_script字符串常量里 package main import "github.com/nsf/gothic" const init_script = ` #把Tcl/Tk源代码复制到这个常量里 ` func main() { ir := gothic.NewInterpreter(init_script) <-ir.Done } c 在LiteIDE里或命令行里go run go代码文件,运行效果如下 【使用wsad和上下左右键来控制车...阅读全文

博文 2015-05-13 16:00:07 名字不能长

golang sync map思考总结

一、核心结构体先贴一下 type Map struct { mu Mutex //互斥锁,用于锁定dirty map read atomic.Value //优先读map,支持原子操作,注释中有readOnly不是说read是只读,而是它的结构体。read实际上有写的操作 dirty map[interface{}]*entry // dirty是一个当前最新的map,允许读写 misses int // 主要记录read读取不到数据加锁读取read map以及dirty map的次数,当misses等于dirty的长度时,会将dirty复制到read } type readOnly struct { m map[interface{}]*entry amended bool // true...阅读全文

博文 2019-03-05 22:34:50 凯文不上班

切片的内部实现

最近比较忙也没有时间打理专栏,今天决定写一个关于切片的内部实现。 ---- 内部实现 ---- Go中的切片是一种数据结构,切片可以按照自己的方式增长或者减短,切片是一个很小的结构,在我的64位电脑上只有24字节,切片有三个字段如下: type slice struct { array unsafe.Pointer len int cap int } 阅读全文

博文 2017-08-10 00:54:32 诺唯

安全的Go语言从源数组构建目标Slice

今天在QQ群里聊到GO语言需要改进的地方,快乐的吐槽了一番。我之前最希望用数组构建slice的语法变更一下,因为现在流行的[start:end]方式并不严谨。后来不记得是哪个版本的时候,引入了三段式的[start:end:max]语法来创建slice。这样是安全了,但是确丑了很多。 如下例所示,二段式的定义在append操作后会污染到源数组: a := [5]int{1, 2, 3, 4, 5} s1 := a[1:3:3] s2 := a[1:3] _ = append(s1, 6) fmt.Println(a) //out:[1 2 3 4 5] _ = append(s2, 7) fmt.Println(a) //out:[1 2 3 7 5] 关于对new函数的改进,chai大帮我发...阅读全文

博文 2014-11-11 18:00:02 sz_Promi

EasyDoc,简单、快速生成文档的工具。

EasyDoc,简单、快速生成文档的工具。 可执行文件下载 从这下载可执行文件 仅一个可执行软件搞定,不用安装,更不用其它依赖,支持微软系统电脑,苹果系统电脑,Linux系统电脑。 模板目录基本结构 ├─dist //发布目录 ├─src //存放 .md 源文件及模板文件(必须,支持存放在此目录及其子目录) │ ├─static //静态文件目录,此目录会完整地复制到发布目录 │ ├─theme │ │ ├─template │ │ │ ├─doc.tpl //文档模板文件(非必须,没有则使用软件默认模板) │ ├─index.md //首页(非必须) │ ├─SUMMARY.md //生成菜单使用(必须) ├─easydoc //可执行文件。如 Windows 系统下的 easydoc....阅读全文

把别人的Tcl/Tk代码加入到Go语言里4

a 首先打开网页 http://wiki.tcl.tk/1270 b 把网页了提到的第一段代码【注意第一段只到wm resizable . 0 0结束】复制到go源代码的init_script字符串常量里 package main import "github.com/nsf/gothic" const init_script = ` #把Tcl/Tk源代码复制到这个常量里 ` func main() { ir := gothic.NewInterpreter(init_script) <-ir.Done } c 在LiteIDE里run ,运行效果如...阅读全文

博文 2015-05-01 14:00:00 名字不能长

Go1.3新特性 栈的全新实现—连续栈(1)

创文章,转载请注明出处:服务器非业余研究http://blog.csdn.net/erlib 作者Sunface 前言 在之前的Go1.3改动中提到过栈的实现从分段实现(segment stack)变为连续栈实现(Contiguous statck),这个改动不可谓不大,那会给我们带来什么影响呢?请参见下文 连续栈 给每个goroutine 都分配一块内存作为连续的栈,通过重新分配/复制来增长。 为什么需要连续栈 当前的栈分割技术有一个很大的问题:"hot split"(热分割)——如果栈快满的时候,一个额外的调用就会强制分配新的栈块(Stack chunk),当调用返回的时候,新分配的栈块就会被释放回收,这种情况下,如果同一个调用连续执行,过度的alloc/free会导致系统性能的显著降低...阅读全文

博文 2016-02-02 16:00:01 abv123456789

[Go] --- LiteIDE配置Go语言的代码智能补全

Email : hahayacoder@gmail.com 1 有一款叫做gocode的插件能帮助Go的代码智能补全,使用它能使开发更加高效 2 下载gocode,下载地址https://github.com/nsf/gocode/ 3 将下载好的gocode-master解压到任意目录下 4 打开cmd,切换到解压后的目录中,执行go install,执行成功后该目录下会生成一个gocode-master.exe(和该目录同名)的文件 5 将该exe文件重命名成gocode.exe,然后复制到go安装目录下的bin目录中 6 重启启动LiteIDE,体验代码补全功能吧...阅读全文

博文 2015-06-17 23:07:48 qiurisuixiang

Web流量复制和压力测试工具Gor

Gor概述Gor 是用 Golang 写的一个 HTTP 实时流量复制工具。只需要在 LB 或者 Varnish 入口服务器上执行一个进程,就可以把生产环境的流量复制到任何地方,比如 Staging 环境、Dev 环境。完美解决了 HTTP 层实时流量复制和压力测试的问题。 Image.png Gor的功能Gor 支持流量的放大和缩小、频率限制,这样不需要搭建和生产环境一致的服务器集群也可以正确测试。Gor 还支持根据正则表达式过滤流量,这意味着可以单独测试某个 API 服务。还可以修改 HTTP 请求头,比如替换 User-Agent, 或者增加某些 HTTP Header 。Gor 还可以把请求记录到文件,以备回放和分析。Gor 支持和 ElasticSearch 集成,将流量存入 ES...阅读全文

博文 2017-04-12 02:32:13 Lu离尘

go-oci8编译安装过程(有别于官方说明)

go-oci8下载地址以及说明地址:https://github.com/wendal/go-oci go-oci8官方说明 安装最新版的git,并设置可以从命令行直接调用git命令 这个步骤多一些 2.1 下载OCI最新版,存放于C:\instantclient_11_2 2.2 下载OCI SDK最新版,存放于C:\instantclient_11_2\sdk 2.3 下载MinGW最新版,安装在C:\mingw 2.4 下载pkg-config.exe和oci8.pc (已经存放在windows文件夹下) 2.5 将pkg-config.exe复制到C:\mingw\bin\下 2.6 将oci8.pc复制到C:\mingw\lib\pkg-config\下 修改系统环境变量,添加 P...阅读全文

博文 2017-02-09 08:11:31 阿修罗王

Go 实现的中国行政区划查询工具 Administrative Divisions

一个 Go 语言实现的中国行政区划查询工具。 介绍 最新中国行政区划,数据来源:[http://www.stats.gov.cn/tjsj/tjbz/xzqhdm/201608/t20160809_1386477.html](http://www.stats.gov.cn/tjsj/tjbz/xzqhdm/201608/t20160809_1386477.html) 安装

go get -v github.com/orivil/administrative-divisions
如果中国地区用户出现 `godoc.org/golang.org/x/net...阅读全文

开源项目 2016-08-29 04:00:07 orivil

把别人的Tcl/Tk代码加入到Go语言里15 游戏8 翻牌游戏

这次文章主要引用了网上的这篇教学http://www.cwflynt.com/TclForTeens/ 步骤a 下载第17课里提到的扑克图像包 http://www.cwflynt.com/TclForTeens/cards.zip 解压缩cards.zip内所有文件到c:\cards\目录下 【你可以放在桌面的cards目录里,随意】 步骤b 跳到第20课http://www.cwflynt.com/TclForTeens/lsn20.html 找到最后一段框起来的源代码,它的上一句是“And that's all the changes. Here's the complete game.” 把这段框起来的代码复制到如下go代码的字符串常量里 package main import "g...阅读全文

博文 2015-05-14 08:00:00 名字不能长

Creating a Metricbeat Module

https://www.elastic.co/guide/en/beats/devguide/current/index.html 一、本地正确安装golang yum install -y golang 或者https://golang.org/doc/install二、设置好GOPATH vim ~/.bash_profile export GOROOT=/usr/local/go export PATH=$PATH:$GOROOT/bin export GOPATH=/usr/local/go三、获取metricbeat源码 将beat克隆下来,目录为$GOROOT/$yourdirectory/src/github.com/elastic/beats git clonehttps:/...阅读全文

博文 2018-07-22 18:34:50 CadenOF

深圳年薪55万,西安20万,你会选择哪个城市?

最近联系上深圳某知名大厂的一哥们,是一位高级开发工程师,收入也不错,年薪55万。刚好深圳有一家不错的公司需要他这样的技术人才,便与他聊起来,但被他拒绝了,原因是他想回西安发展,不想待在深圳了。 我很好奇他为什么会做这样的选择,于是便开始问他。他的答案很简单,深圳房价太高了,而且在深圳想找到年薪100万以上的工作,也不是那么容易的事。这样想也不是没道理,于是我也帮他了解一下西安的就业行情,他如果回西安的话,薪资起码缩水60%。于是我劝他慎重考虑,但是他很坚定,说没什么好考虑的,留在一线城市也无非是给别人搬砖,并说他现在这点薪资也是靠拼命加班才有的,几乎每天都是十点钟以后下班,KPI还很重,总的来说就是很苦逼!所以他觉得在非一线城市,还能过得轻松一些,即使拿的钱比现在少很多。聊到这里,我也开始理...阅读全文

博文 2018-09-22 21:01:53 kelasong

go语言基础教程2

array 数组声明--var arr [10]int,array由[n]定义。n表示数组大小,type表示数组类型 声明且初始化--arr := [3]int{1,2,3}或者不写大小var arr := [...]int{1,2,3}或者var arr = [3]int{1,2,3},如果不写大小可以用三个点来表示,go会自动识别,var arr[3]int默认是初始化为0。 ps:记住:=和=之间的区别,如果是:=不需要var,如果是=需要var 二维数组初始化a := [2][2]int{ [2]int{1,2}, [2]int{3,4} },a := [2][2]int{ [...]int{1,2}, [...]int{3,4} },a := [2][2]int{ {1...阅读全文

博文 2014-10-04 19:26:42 GODYCA