golang的http请求

import ( "fmt" "io/ioutil" "net/http" "net/url" "strings" ) func httpGet() { resp, err := http.Get("http://www.baidu.com") if err != nil { // handle error } defer resp.Body.Close() body, err := ioutil.ReadAll(resp.Body) if err != nil { // handle erro...阅读全文

2015-08-17 11:47 webyh
阅读:3205 评论:0

golang中os包用法

os包中实现了平台无关的接口,设计向Unix风格,但是错误处理是go风格,当os包使用时,如果失败之后返回错误类型而不是错误数量. os包中函数设计方式和Unix类似,下面来看一下. func Chdir(dir string) error //chdir将当前工作目录更改为dir目录. func Getwd() (dir string, err error) //获取当前目录,类似linux中的pwd func Chmod(name string, mode FileMode) error /...阅读全文

阅读:54844 评论:0

Golang加密解密

package common import ( "crypto/md5" "crypto/rand" "encoding/base64" "encoding/hex" "io" "strings" ) const ( //BASE64字符表,不要有重复 base64Table = "<>:;',./?~!@#$CDVWX%^&*ABYZabcghijklmnopqrstuvwxyz01EFGHIJKLMNOPQRSTU2345678(def)_+|{}[]9/" hashFunctionHead...阅读全文

2014-08-23 17:03 zhifeiya
阅读:7289 评论:0

Go语言zip解压.

package main import ( "archive/zip" "fmt" "io" "os" ) func main() { r, err := zip.OpenReader(`server_update_20151020.zip`) if err != nil { fmt.Println(err) return } for _, k := range r.Reader.File { if k.FileInfo().IsDir() { err := os.MkdirAll(k.Name...阅读全文

2015-10-20 10:24 fyxichen
阅读:5922 评论:1

golang调用c++的dll库文件

最近使用golang调用c++的dll库文件,简单了解了一下,特作此笔记:一、DLL 的编制与具体的编程语言及编译器无关只要遵循约定的 DLL 接口规范和调用方式,用各种语言编写的 DLL 都可以相互调用。譬如 Windows 提供的系统 DLL (其中包括了 Windows 的 API ),在任何开发环境中都能被调用,不在乎其是 Visual Basic 、 Visual C++ 还是 Delphi 二、dll文件里面需要被其他程序访问的函数必须导出,有2种方法源文件如下:DllTestDef...阅读全文

阅读:17083 评论:0

GoLang反射的规则

反射的规则 在运行时反射是程序检查其所拥有的结构,尤其是类型的一种能力;这是元编程的一种形式。它同时也是造成混淆的重要来源。 在这篇文章中将试图明确解释在 Go 中的反射是如何工作的。每个语言的反射模型都不同(同时许多语言根本不支持反射)。不过这篇文章是关于 Go 的,因此接下来的内容“反射”这一词表示“在 Go 中的反射”。 类型和接口 由于反射构建于类型系统之上,就从复习一下 Go 中的类型开始吧。 Go 是静态类型的。每一个变量有一个静态的类型,也就是说,有一个已知类型并且在编译时就确定下...阅读全文

2015-08-17 11:14 duhf_think
阅读:1611 评论:0

golang 获取exe、dll、apk 版本号

通过go获取exe、dll、apk版本号,支持夸平台,可交叉编译。 换了个账号,审核下。我把另一个账号的文章都会删掉。</pre><pre name="code" class="plain">// golang 实现读取exe dll apk 版本号 package main import ( "flag" "fmt" "log" "os" "path/filepath" ) import ( "github.com/lunny/axmlParser" ) var ( file fileInfo...阅读全文

阅读:1870 评论:0

[笔记] Golang RPC(Remote Procedure Call Protocol)

1. 简介 Go 标准包中已经提供了对 RPC 的支持,而且支持三个级别的 RPC:TCP、 HTTP、 JSONRPC。 但 Go 的 RPC 包是独一无二的 RPC,它和传统的 RPC 系统不同,它只支持 Go 开发的服务器与客户端之间的交互,因为在内部,它们采用了 Gob 来编码。 2. 要求 函数必须是导出的(首字母大写) 必须有两个导出类型的参数 第一个参数是接收的参数,第二个参数是返回给客户端的参数,第二个参数必须是指针类型的 函数还要有一个返回值 error func (t *T)...阅读全文

2016-05-08 21:39 loveyx
阅读:2201 评论:0

Go: Readonly Variable

只读变量的缺失,应该算 Go 语言 “设计缺陷”。举例来说,默认以 error 实例来判断错误类别,但这些可导出全局变量实际可被外部修改,那么就存在隐性风险。 在实际开发中,有很多需设置访问权限的内存敏感数据,包括只读、只写,或不可操作等,好在可借助 syscall 实现。 使用示例: 当然,可以在此基础上实现更多功能,基本原理类似。对于敏感数据,还应增加如下功能: 身份验证:用 runtime.Caller 验证调用堆栈,仅允许指定函数调用。 内存锁定:用 syscall.Mlock 将数据锁...阅读全文

阅读:2895 评论:0

fasthttp 的 goroutine pool 实现探究

本文作者: 伯乐在线 - legendtkl 。未经作者许可,禁止转载!欢迎加入伯乐在线 专栏作者。 引言 fasthttp是一个非常优秀的web server框架,号称比官方的net/http快10倍以上。fasthttp用了很多黑魔法。俗话说,源码面前,了无秘密,我们今天通过源码来看一看她的goroutine pool的实现。 热身 fasthttp写server和原生的net/http写法上基本没有区别,这里就不举例子。直接找到入口函数,在根目录下的server.go文件中,我们从函数Li...阅读全文

阅读:2592 评论:0

TODO:字节的那点事Go篇

TODO:字节的那点事Go篇 (本文go version go1.7.3 darwin/amd64) 在Golang中string底层是由byte数组组成的。 fmt.Println(len(“dsd好”)) 输出的长度是6 fmt.Println(len(string(rune(‘好’)))) 输出的长度是3 fmt.Println(len([]rune(“好的2s”))) 输出的长度是4 所以用string存储unicode的话,如果有中文(中文是由3个字节组成 ),按下标是访问不到的,因为...阅读全文

阅读:1610 评论:0

go语言命令介绍

go语言相关命令: bulid命令: 编译文件或代码包,编译命令源码文件会生成可执行代码,编译库文件不会产生结果。 -a标记:强制编译所有涉及到的代码包 run命令: 运行命令源码文件(先编译再运行) 参数只能有一个命令源码文件 -n标记:打印编译过程中,所需要运行的命令,但不真正执行他们。 -p n标记:并行编译,n为数量。 -v标记:列出被编译的代码包的名称。 -a -v标记:列出所有被编译的代码包的名称。 -work标记:显示编译时创建的临时工作目录的路径,不删除它。 -x标记:打印编译过...阅读全文

阅读:1645 评论:0

Go 1.8的Plugins使用

Go 1.8为我们提供了一个创建共享库的新工具,称为Plugins!让我们来创建和使用一个插件。 目前的插件只能在Linux和Darwin上工作。 安装1.8beta1,不做说明. 创建一个插件方法到aplugin.go: package main func Add(x, y int) int { return x+y } func Subtract(x, y int) int { return x-y } 然后构建插件: 运行下面命令构建插件: go build -buildmode=plug...阅读全文

2016-12-06 20:00:02 vWay
阅读:8271 评论:4

Go 记录日志——log包

Golang's log模块主要提供了3类接口。分别是 “Print 、Panic 、Fatal ”,对每一类接口其提供了3中调用方式,分别是 "Xxxx 、 Xxxxln 、Xxxxf",基本和fmt中的相关函数类似,下面是一个Print的示例: package main import ( "log" ) func main(){ arr := []int {2,3} log.Print("Print array ",arr,"\n") log.Println("Println array",...阅读全文

2016-12-15 21:00:03 吃一堑消化不良
阅读:32638 评论:0