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

go语言常用函数:copy

数组切片内容复制 用于将内容从一个数组切片复制到另一个数组切片。如果加入的两个数组切片不一样大,就会按其中较小的那个数组切片的元素个数进行复制。 slice1 := []int{1, 2, 3, 4, 5} slice2 := []int{5, 4, 3} copy(slice2, slice1) // 只会复制slice1的前3个元素到slice2中 copy(slice1, slice2) // 只会复制slice2的3个元素到slice1的前3个位置 //http://www.cnblogs.com/osfipin...阅读全文

博文 2015-07-28 03:00:00 osfipin

go 切片:用法和本质

文: http://golang.org/doc/articles/slices_usage_and_internals.html中文: http://zh-golang.appsp0t.com/doc/articles/slices_usage_and_internals.html Go的切片类型为处理同类型数据序列提供一个方便而高效的方式。切片有些类似于其他语言中的数组,但是有一些不同寻常的特性。本文将深入切片的本质,并讲解它的用法。 数组 Go的切片是在数组之上的抽象数据类型,因此在了解切片之前必须要要理解数组。 数组类型由指定和长度和元素类型定义。例如,[4]int 类型表示一个四个整数的序列。数组的长度是固定的,长度是数组类型的一部分(int[4] 和 [5]int 是完全不同的类...阅读全文

博文 2016-01-31 05:00:00 yangyangye

golang IO COPY

使用golang实现 IO copy,测试程序如下: package main import ( "fmt" "io" "os" "syscall" ) func main() { var errCh chan error errCh = Go(func() error { return test_stdout() }) if err := <-errCh; err != nil { fmt.Printf("End io_copy: %s\n", err) //return err } } //异步执行 func Go(f func() error) chan error { ch := make(chan error, 1) go func() { ch <- f() }() return...阅读全文

博文 2015-10-30 19:00:03 golang_yh

用Go语言开发桌面应用--By TSL

【后天就是本地的”三月三“壮族民歌节了,心情大好就把私藏的东西拿出来分享给大家】 我的基本开发环境是win7 32位,go1.4 windows/386,LiteIDE X 27。其实开发环境不重要 首先我们来安装Go 的GUI库 ,我们即将用到的是Tcl/Tk的Go绑定,作者的Git主页是https://github.com/nsf/gothic ‍a 把第三方库下载到本地: 我们进入作者主页的_examples目录里,把任意一个go例子的代码复制到LiteIDE里作为一个新的go文件,接着 可以点LiteIDE的”编译“菜单,再选择”Get“,这时LiteIDE会自动下载github.com/nsf/gothic ,如果提示Out of path请检查GOPATH环境变量并确认你的文件是...阅读全文

博文 2015-04-19 11:00:05 名字不能长

golang数据类型-slice(切片)

slice介绍 数组的长度在定义之后无法再次修改;数组是值类型,每次传递都将产生一份副本。显然这种数据结构无法完全满足开发者的真实需求。在初始定义数组时,我们并不知道需要多大的数组,因此我们就需要“动态数组”。在Go里面这种数据结构叫slice,slice并不是真正意义上的动态数组,而是一个引用类型。slice总是指向一个底层array,slice的声明也可以像array一样,只是不需要长度,它是可变长的,可以随时往slice里面加数据。 初看起来,数组切片就像一个指向数组的指针,实际上它拥有自己的数据结构,而不仅仅是个指针。数组切片的数据结构可以抽象为以下3个变量: 1.一个指向原生数组的指针(point):指向数组中slice指定的开始位置; 2.数组切片中的元素个数(len):即sli...阅读全文

博文 2015-06-17 20:17:41 JesseYoung

golang slice分割和append copy还是引用

1. slice1:= slice[0:2] 引用,非复制,所以任何对slice1或slice的修改都会影响对方 data := []int{1, 2, 3, 4, 5, 6, 7, 8, 9, 0} data1 := data[0:2] data1[0] = 99 fmt.Println(data1) fmt.Println(data) [99 2] [99 2 3 4 5 6 7 8 9 0] 2.append append 比较特殊 声明: 源slice= src 添加slice = app 结果slice=tar 1)如果len(src) + len(app) <= cap(src) src和tar 是指向同一数据引用 ,即修改src或tar,会影响对方 2)否则 tar 是copy...阅读全文

博文 2014-10-04 19:27:07 咖啡伴侣

在Go里使用OpenCL,"下雨天压榨GPU更配哦"

文标题: 能在Go里用GPU运算的OpenCL语言绑定包 首先网页访问https://github.com/pseudomind/go-opencl/了解一下,然后下载它 C:\go\src\src>go get github.com/pseudomind/go-opencl/cl 再搜索一下你的OpenCL.dll文件,把它复制到gcc编译器的lib目录里比如我在c盘搜索出opencl.dll,把它复制到了C:\TDM-GCC-32\lib\里 用LiteIDE打开https://github.com/pseudomind/go-opencl/tree/master/examples/clinfo里面的例子,可以run了 examples/rotate里面的例子,要build后,在cmd窗...阅读全文

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

Golang复制结构体

Golang中复制结构体,可以使用赋值语句 package main import ( "fmt" ) type Dog struct { age int name string } func main() { roger := Dog{5, "Roger"} mydog := roger fmt.Printf("roger addr %p\n", &roger) fmt.Printf("mydog addr %p\n", &mydog) fmt.Println("Roger and mydog are equal structs?", roger == mydog) mydog.name = "piggie" fmt.Println("Roger and mydog are equal s...阅读全文

博文 2019-10-01 14:32:49 aside section ._1OhGeD

Golang 复制文件的三种做法

主要介绍三种复制文件的方法: 使用io.Copy()方法 一次性读取输入文件,然后再一次性写入目标文件 使用buffer一块块地复制文件 方法一 : 使用io.Copy func copy(src, dst string) (int64, error) { sourceFileStat, err := os.Stat(src) if err != nil { return 0, err } if !sourceFileStat.Mode().IsRegular() { return 0, fmt.Errorf("%s is not a regular file", src) } source, err := os.Open(src) if err != nil { return 0, err...阅读全文

博文 2019-03-11 11:34:42 Chole121

Go语言和Tcl/Tk GUI库的例子1 按钮

a 用vtcl建立一个新project,然后制作界面并保存 我自己做的 如图1 b 打开vtcl产生的main.tcl文件,我们即将进行提取关于界面的代码 复制如下匹配的n行代码, ################### # CREATING WIDGETS ################### 。。。此处省略Tcl/Tk代码n行 ################### # SETTING GEOMETRY ################### 。。。此处省略Tcl/Tk代码n行 ############################################################################### 我复制出来的大概100多行,接着要进行删除精简 1...阅读全文

博文 2015-04-30 18:00:00 名字不能长

go语言使用protobuf

网上为什么充斥着大量几乎一模一样而且不正确的教程??? 妈的打开一个关于golang和protobuf的教程,无非都是扯他妈的protobuf多么多么牛逼,xml多么多么傻逼,然后就是怎么安装protobuf,然后又是屎一样的示例。 安装过程没一个对的,我搜了那么多博客,全都是一个德行,我先写一下ubuntu的安装步骤,同时适用于mac和其他linux,而且保证是对的。 真的无力吐槽,先说正事,一会接着吐。 一、首先去 https://github.com/google/protobuf 下载protobuf,按照readme的步骤来编译安装。如果执行autogen.sh的过程中出现autoreconf not found的错误,说明没有安装automake,在ubuntu执行sudo ap...阅读全文

博文 2015-07-25 03:00:11 wolfred7464

Google Calendar(日历)设置农历生日提醒

Generate birthday dates base on lunar birthdays for google calendar import Can be used for notifying birthdays using google calendar根据农历生日生成可用于谷歌日历导入的csv文件, 然后导入谷歌日历就可以每年收到所有家人的生日提醒了 打开http://play.golang.org/p/pjHLGH_HjP http://play.golang.org/p/6pt7A7wi1g 修改const example的内容 点击Run 复制粘贴结果到Excel或文本编辑器 refer: https://code.google.com/p/genlunarbirthday...阅读全文

vim中go的语法高亮设置

测试环境:ubuntu 14.04 之kylin 版 vim本身不带golang的语法高亮 解决方案: 在 /usr/share/vim/vim74/ 中 有这么几个文件夹:syntax, ftplugin, indent, compiler等, 我们查看syntax可以看到有gcc.vim等其他语法文件,但是没有go.vim, 好在我们可以从源码下载 http://www.golangtc.com/download 下载 go1.3.3.src.tar.gzgo1.3.3 (source only),解压缩, 将下载目录的 go/misc/vim/中有对应的 syntax, ftplugin, indent, compiler 中的go.vim文件复制到/usr/share/vim/vim...阅读全文

notepad++支持go语言高亮与go语言插件

一、notepad++安装go语言插件 notepad++是十分流行的文本编辑器,而它拥有强大的功能,比如它可以支持go语言。当然这需要go语言相应的插件。 打开notepad++后,选择插件选项,在插件下选Plugin Manager-->Show Plugin Manager-->在Plugin中选择GOnpp选Install; 二、notepad++支持go语言高亮 1.在Go的安装目录下,找到misc文件夹,打开notepadplus文件夹,编辑userDefineLang.xml文件,将文件中的的注释去掉,注意是去掉注释,不是把它俩去掉。 2.将该目录(misc/notepadplus)下的go.xml复制到notepad++...阅读全文

go-mod 入门

Q群有人问go mod 问题,自己也忘了些.顺便再整理下. GO111MODULE可以设置为三个字符串值之一:off,on或auto(默认值)。 off 则go命令从不使用新模块支持。它查找vendor 目录和GOPATH模式”。 on 则go命令需要使用模块,go 会忽略 $GOPATH 和 vendor 文件夹,只根据go.mod下载依赖。 auto 或未设置,则go命令根据当前目录启用或禁用模块支持。仅当当前目录位于$GOPATH/src之外并且其本身包含go.mod文件或位于包含go.mod文件的目录下时,才启用模块支持。 如果需要查看go module的详细文档(非常长),可以在控制台输入 go help modules go mod命令 download download mod...阅读全文

博文 2019-01-09 11:34:47 名之白

golang之array

数组 √ golang数组包含的每个数据称为数组元素(element),数组包含的元素个数被称为数组长度(length)。 √ golang数组的长度在定义后不可更改,并且在声明时可以是一个常量或常量表达式(在编译期即可计算结果的表达式)。golang数组长度是一个内置常量,可以用len()函数来获取。 √ golang数组是一个值类型,在赋值和作为参数传递时都将产生一次复制动作,因此在函数体中无法修改传入的数组的内容。 • 数组声明和初始化 ▶ 数组声明 ▪ 语法如下 // 数组声明 var array [n]Type // 数组声明和初始化 var array [n]Type = [n]Type{v1, v2, ..., vn} var array = [n]Type{v1, v2, ....阅读全文

博文 2016-02-20 03:00:04 heartchord

emacs配置golang

昨天看到同事再用emacs,好强大的样子,让我这种伪emacser羡慕不已,回来之后就寻思着再折腾折腾emacs. 首先下载golang官方的emacs mode: http://golang.org/misc/emacs/go-mode.el 下载auto-complete http://cx4a.org/software/auto-complete/#Downloads 然后解压文件到任意目录:auto-complete cd auto-complete make make install 选择要安装到得目录 再emacs得配置文件中添加 (add-to-list 'load-path "INSTALLPATH/auto-complete") (require 'auto-complet...阅读全文

博文 2014-10-04 19:26:52 无量神通

还在为论文降重发愁吗?一款论文降重神器助你解决烦恼!!

image.png 1. 前言 大家好,我是Asong,今天不做知识分享,在这里给大家推荐一款论文降重神器,有了它,解决了我不少烦恼。这几天在忙论文,维普查询一次就花掉了我80大洋,想想心都在颤呀!!!重复率在27%,为了保险,只好降重,在查重,啊啊啊,我的银子!!!!好在这次降重通过了,只折腾了一次,我的一个同学折腾了4次,心疼!!! 但是今天Asong发现了一款论文降重神器 "MyEpoch论文降重系统" ,有了它,我们就不用在绞尽脑汁去想了,直接复制粘贴,完事,齐活!论文完美达到复制比检测! 2. 降重效果演示 asong去知网下载了一篇学术论文,在降重前后分别使用PaperPass进行了查重,降重前重复率为92%,降重后为19%,这效果杠杠滴呀!!!这里我就是把降重后的句段直接复制粘...阅读全文

博文 2020-05-27 19:33:02 sunsong1997

[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-07 12:00:02 zistxym

Go语言核心编程 3.2-slice切片

Slice(切片)代表变长的序列,序列中每个元素都有相同的类型。一个slice类型一般写作[]T,其中T代表slice中元素的类型;slice的语法和数组很像,只是没有固定长度而已。数组和slice之间有着紧密的联系。一个slice是一个轻量级的数据结构,提供了访问数组子序列(或者全部)元素的功能,而且slice的底层确实引用一个数组对象。一个slice由三个部分构成:指针、长度和容量。指针指向第一个slice元素对应的底层数组元素的地址,要注意的是slice的第一个元素并不一定就是数组的第一个元素。长度对应slice中元素的数目;长度不能超过容量,容量一般是从slice的开始位置到底层数据的结尾位置。内置的len和cap函数分别返回slice的长度和容量。多个slice之间可以共享底层的数...阅读全文

博文 2016-03-22 21:00:05 abv123456789

GO语言内存拷贝

package main import "fmt" func main() { slice1 := []byte{1, 2, 3, 4, 5} slice2 := []byte{5, 4, 3} copy(slice2, slice1) // 只会复制slice1的前3个元素到slice2中 fmt.Printf("%x\n",slice1) fmt.Printf("%x\n",slice2) copy(slice1, slice2) // 只会复制slice2的3个元素到slice1的前3个位置 fmt.Printf("%x\n",slice1) fmt.Printf("%x\n",slice2) var md5code [16]byte arybyte := md5code[0:16] ...阅读全文

博文 2016-09-19 09:00:22 henry3695

用go写windows系统服务

用go+nssm非常容易实现windows系统服务,先看下面的程序 package main func main() { //Call this function where the action happpens doStuff() } func doStuff() { for { //the actual stuff happens here. } } 下载nssm复制到c:\windows目录,执行 nssm install MyService d:\MyService.exe nssm下载地址:http://nssm.cc/description 参考http://sanatgersappa.blogspot.co.id/2013/07/windows-service-with-go...阅读全文

博文 2017-09-09 12:57:12 YiYou.Org

golang---vim语法高亮

下载   在http://www.golangtc.com/download上下载 go1.3beta2.src.tar.gz版本,高于这个版本中没有vim的配置了。 解压 tar zxf go1.3beta2.src.tar.gz 配置 方式一   将下载目录的go/misc/vim/中有对应的 syntax, ftplugin, indent, compiler 中的go.vim文件复制到/usr/share/vim/vim74/对应目录,ftdetect文件夹包括文件复制到vim74中 方式二(无需root权限)   go/misc/vim/目录下文件拷贝到~/.vim/目录下(如果没有该目录则新建) mkdir ~/.vim cp -r vim/* ~/.vim/   新建~/.vi...阅读全文

博文 2016-07-09 13:00:01 FreeApe

Go Modules使用教程

引入 https://talks.godoc.org/github.com/myitcv/talks/2018-08-15-glug-modules/main.slide#1 Go Modules介绍 Modules是Go 1.11中新增的实验性功能,基于vgo演变而来,是一个新型的包管理工具。 常见的包管理工具 govendor dep glide godep 这些包管理工具都是基于GOPATH或者vendor目录,并不能很好的解决不同版本依赖问题。Modules是在GOPATH之外一套新的包管理方式。 如何激活Modules 首先要把go升级到1.11。 升级后,可以设置通过一个环境变量GO111MODULE来激活modules: GO111MODULE=off,go命令行将不会支持mo...阅读全文

博文 2018-10-16 17:34:40 andyidea

并发map --- sync map分析

[TOC] 本文基于1.10源码分析 如之前的文章可以看到,golang中的map是不支持并发操作的,golang推荐用户直接用读写锁对map进行保护,也有第三方类库使用分段锁。在1.19版本中,golang基于原本的map,新增了一个支持并发操作的map,叫sync map。 下面我们先介绍一下它的用法,然后在介绍原理,最后详细看看代码。 用法 基本api有这几个 Store 写入 Load 读取,返回值有两个,第一个是value,第二个是bool变量表示key是否存在 Delete 删除 LoadOrStore 存在就读,不存在就写 Range 遍历,注意遍历的快照 sync map底层使用map[interface{}]* entry来做存储,所以无论key还是value都是支持多种数...阅读全文

博文 2018-11-10 13:34:40 123archu

go连接数据库,第三方包安装

以mysql为例,go没有实现连接数据库的驱动,只是提供了接口,供第三方实现 首先安装第三方包 cmd执行 go get 命令 在执行go get 命令之前,确保你的电脑配置了环境变量GOPATH,并且安装了git 执行: go get github.com/go-sql-driver/mysql 接下来就会自动安装了,安装成功之后,就可以使用了 package main import ( _"github.com/go-sql-driver/mysql" "database/sql" "fmt" ) type Users struct{ username string pwd string } func main() { db,err := sql.Open("mysql","yld:12...阅读全文

博文 2017-05-22 07:00:25 程序羊

[译文] 关于Golang的一个令我深深叹服的特性

自:http://golanghome.com/post/155 [译文] 关于Golang的一个令我深深叹服的特性 原文地址:这里 译文: 翻译By:@jemygraw 补充说明:一些评论的人对本文中的一些内容感到很困惑,但是我不想让大家感到我言语不清,所以在此澄清一下: 是的, 默认情况下,向一个hash表插入的元素是没有固定顺序的。但是因为很多原因,比如有一些帖子就指出了不是所有的map都是hash表(而且有些语言还有有顺序的hash表,比如java的TreeMap), 我还是能够了解为什么很多人(尤其是对Go map实现机制比较了解的人)会假定遍历map元素的顺序和向map插入元素的顺序是相同的。 我原来的例子是我自己想出来的,并没有演示出大多数版本的Go关于这方面的特点(尽管我听说...阅读全文

博文 2014-10-09 16:00:02 leonzhouwei

Go的GUI

在运行github.com/lxn/walk包里的demo的时候出现了一些问题,这里做一下记录。 1、先go get github.com/lxn/walk包,写一个简单的demo,go build 生成.exe文件,这里没问题,然后就去运行它发现无法运行。 2、根据readme 然后又去下载 github.com/akavel/rsrc包,在生成的rsrc.exe文件目录下 创建一个manifest文件命令:mkdir test.manifest。然后运行rsrc -manifest test.manifest -o rsrc.syso就不会出错啦。 3、然后将生成的 rsrc.syso复制到你的项目目录下。重新go build此时生成的.exe文件就可用啦...阅读全文

博文 2017-12-06 10:12:19 tytian

流量拷贝-gor

常见的 Web 应用的压力测试工具 Web 应用压力测试工具有很多,比如 Apache ab,node-ab,Apache JMeter, LoadRunner, httperf。但是这些工具都没能解决一个问题: 如何正确模拟生产环境的流量 如今 Web 应用的架构变得非常复杂,内部包含复杂的各种负载均衡、 服务和 RPC 调用关系,简单的发送 GET 请求到某些 URL 或者 API 接口完全无法模拟真实的流量。假如回放 HTTP 日志,操作又异常麻烦。Tcpcopy 虽然能够复制实时流量,但是操作也很复杂。之前的 亚马逊云平台的迁移 就用到了 Gor 这个工具。 Gor 是 Web 应用压力测试的完美方案 我一直在找一个简单又方便的解决方案,直到找到了 Gor 。Gor 是用 Golan...阅读全文

博文 2017-07-02 16:11:21 xingfei

Go Modules与GOPROXY三分钟学会

前言: 随着Go 1.13发布,GOPROXY默认值proxy.golang.org在中国大陆不能被访问。七牛云顺势推出goproxy.cn,以利于中国开发者更好使用Go Modules,它是非盈利性的项目,首先感谢七牛云。Windows下使用教程:(1)升级到Go1.13(2)运行 //开启mod(3)运行 //设置七牛云goproxy代理可以通过运行go env查看(2)、(3)步骤是否设置成功 (4)在项目跟目录下执行go mod init 执行成功后生成go.mod文件其他指令 go get -u /...阅读全文

Debian安装Mariadb记录

安装: sudo apt update sudo apt install mariadb-server sudo systemctl status mariadb 开启远程访问: #注释掉skip-networking开启远程访问. #注释bind-address允许所有远程的机器连接. vi /etc/mysql/my.cnf #进入数据库给账户授权远程访问. use mysql; GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'chaochao'; FLUSH PRIVILEGES; service mysql restart 下面顺便做个笔记 Golang代理: export GOPROXY=https://mirror...阅读全文

博文 2019-10-12 23:32:54 aside section ._1OhGeD

[翻译] go build 命令是如何工作的?

之前 Dave Cheney 已经为我们讲解过了 Go 是如何用 go 编译自己的。这里,他继续给大家讲解一下 go build 命令是如何工作的(原文)。 ————翻译分隔线———— go build 命令是如何工作的? 本文以 Go 的标准库为例,介绍了 Go 编译过程的工作原理。 gc 工具链 本文将关注 gc 工具链。gc 工具链的名字来自 Go 的前端编译器 cmd/gc,这主要是为了与 gccgo 工具链进行区分。当人们讨论 Go 编译器的时候,多半是指 gc 工具链。本文不关注 gccgo 工具链。 gc 工具链是直接从 Plan 9 的工具链剥离出来的。该工具链由一个 Go 编译器、一个 C 编译器、一个汇编器和一个链接器组成。可以在 Go 代码的 src/cmd/ 子目录找...阅读全文

博文 2014-10-09 16:20:10 mikespook

知乎日报 Web 版(GoLang 实现)

知乎日报 Web版(GoLang实现) 以前没做过Web开发,边写边学GoLang/Git/HTML/CSS/GAE ( ⊙o⊙ )哇,这么多 '/' 弱爆了有木有 域名、VPS都是蹭朋友的 太惨了 ( >﹏<。)~呜呜呜…… 源码在 https://github.com/Artwalk/GO-ZhihuDaily 感谢 @faceair,他做了最早的web版(PHP)(API就是从他的代码里找到的)SQLite存储API返回的JSON数据,减小访问官网次数每小时更新一次当天数据Martini 框架蹭朋友的VPS [貌似十分不稳定,动不动就502了,(好吧,是我的小程序不稳定)] 2014-02-24 图省事先用图片代替了 后面考虑用文字,这样复制粘贴也容易点 好吧,是我HTML/CSS不会...阅读全文

博文 2015-06-17 20:02:20 artwalk

图片优化管理系统tiny-site

现今的各类应用中,图片的使用越来越多,而且移动设备的各类高清屏,图片质量的要求也越来越高,在网站上图片类的使用带宽已基本达到60%,如果能减少图片的带宽占用,能更好的提升用户体验以及节约成本。 随着接入终端的种类繁多,以往一张图片所有终端使用的暴力做法已跟不上潮流,我更倾向于不同的终端选择更适合的图片(尺寸、质量甚至于更优的图片格式),Tiny主要用于对图片做压缩或尺寸调整以及格式转换,以及图片区域剪辑,更简单的方式适配更多的场景。下面是我日常是遇到比较多的场景: 图片自适应等比缩放 超长宣传banner,高度固定从中间截取图片展示 针对不同的终端使用不同的图片格式、图片质量 以往为了适应这些场景,基本都是生成了几种尺寸的图片,终端在使用时根据需要选择,此种方式需要预生成图片,也很...阅读全文

开源项目 2018-10-01 21:30:01 网友

FreeBSD go get 安装 iconv-go提示无 iconv.h 文件

go get github.com/djimenez/iconv-go 提示:../../github.com/djimenez/iconv-go/converter.go:8:19: error: iconv.h: No such file or directory 复制iconv.h至系统include目录,创建 libiconv 软连接,如果没有libiconv, 先执行 pkg install libiconv cp /usr/local/include/iconv.h /usr/include/ ln -s /usr/local/lib/libiconv.so.3 /usr/lib/libiconv.s...阅读全文

博文 2014-10-04 19:26:25 JSK

与科学上网相关的整理

前言 从我接触ShadowSockR到现在,已经大半年的时间了,那时候才刚接触Linux不久,只会 cd、ls之类简单的命令,所以只能根据别人写的教程一步步的走,按着里面的命令一个个的敲。可能你会问,难道连复制粘贴都不会吗?是的,我那时候用XShell连接的Vultr的VPS,复制粘贴并不是Ctrl+C和Ctrl+V,所以我真的连复制粘贴都不会,命令都是一个个敲的,很痛苦。(那时候也不知道为什么没想着去百度,后来才知道怎么复制粘贴的) 中间虽然也因为VPS给GWF墙了,所以也有安装过几次,但是都是用复制粘贴别人的命令,用的是一键安装脚本,所以对其中相关的原理什么都不太了解。后来慢慢的对网络协议方面有了一点了解,也看过了 <>,所以现在希望通过这篇笔记系统的整理与科学上...阅读全文

博文 2018-11-15 17:34:40 xiulu

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 李佶澳

你不得不知道的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

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