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

模拟浏览器登录操作

近来想用Go做一点事,以减轻工作上的负担。 我的工作中有几项工作是每日重复的,大致内容: 1、将数据收集到Excel中。 2、收集齐后,将Excel中的部分数据提交到办公系统中(网页上操作)。 3、再将提交过后的审批号码提取出来,存入Excel中。 我现在有两个问题: 1、现在,上面的第一步Excel操作,Go中不知有何现成的库,若没有,我有个效率不高的办法。这个问题倒还不算急。 2、第二个问题比较着急。向办公系统提交数据,得先登录。我的操作步骤如下: 2.1、先访问办公系统首页,获取Session的Cookie。 2.2、进行登录数据提交,将刚才获取的这个Session的Cookie一并提交上去。 2.3、进行业务数据提交。 我现在的...阅读全文

golang中net/http包用法

http包包含http客户端和服务端的实现,利用Get,Head,Post,以及PostForm实现HTTP或者HTTPS的请求. 当客户端使用完response body后必须使用close对其进行关闭.如下所示 resp, err := http.Get("http://example.com/") if err != nil { // handle error } defer resp.Body.Close() body, err := ioutil.ReadAll(resp.Body) // ... 变量: 以下错误是http server使用的 var ( ErrHeaderTooLong = &ProtocolError{"header too long"} ErrShortBo...阅读全文

博文 2015-03-25 11:46 msnsj

跨平台编译Go程序(交叉编译)

(1)首先进入go/src 源码所在目录,执行如下命令创建目标平台所需的包和工具文件。 $ cd /usr/local/go/src $ CGO_ENABLED=0 GOOS=linux GOARCH=amd64 ./make.bash 如果是 Windows 则修改 GOOS 即可。 $ CGO_ENABLED=0 GOOS=windows GOARCH=amd64 ./make.bash (2) 现在可以编译 Linux 和 Windows 平台所需的执行文件了。 $ CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build $ CGO_ENABLED=0 GOOS=windows GOARCH=amd...阅读全文

Golang中的error类型

Golang中的error类型 error类型本身就是一个预定义好的接口,里面定义了一个method type error interface { Error() string } 生成一个新的error并返回 一般有以下几种处理方式: package main import ( "errors" "fmt" ) type Customerror struct { infoa string infob string Err error } func (cerr Customerror) Error() string { errorinfo := fmt.Sprintf("infoa : %s , infob : %s , original err info : %s ", cerr.info...阅读全文

博文 2015-06-26 09:55 Goden

golang Socket编程

Socket基础知识 通过上面的介绍我们知道Socket有两种:TCP Socket和UDP Socket,TCP和UDP 通过上面的介绍我们知道Socket有两种:TCP Socket和UDP Socket,TCP和UDP是协议,而要确定一个进程的需要三元组,需要IP地址和端口。 IPv4地址 目前的全球因特网所采用的协议族是TCP/IP协议。IP是TCP/IP协议中网络层的协议,是TCP/IP协议族的核心协议。目前IP协议的版本号是4(简称为IPv4),发展至今已经使用了30多年。 IPv4的地址位数为32位,也就是最多有2的32次方的电脑可以联到Internet上。近十年来由于互联网的蓬勃发展,IP位址的需求量愈来愈大,使得IP位址的发放愈趋严格,目前基本上IPv4的地址很少了,我们公...阅读全文

博文 2014-08-18 19:48 zhjih123

golang 利用http.Client POST数据

package main import ( "fmt" "io/ioutil" "net/http" "net/url" "strings" ) func main() { v := url.Values{} v.Set("huifu", "hello world") body := ioutil.NopCloser(strings.NewReader(v.Encode())) //把form数据编下码 client := &http.Client{} req, _ := http.NewRequest("POST", "http://192.168.2.83:8080/bingqinggongxiang/test2", body) req.Header.Set("Content-Type"...阅读全文

博文 2014-11-24 10:59 别人说我名字很长

golang断言的使用(Type Assertion)

golang的语言中提供了断言的功能。golang中的所有程序都实现了interface{}的接口,这意味着,所有的类型如string,int,int64甚至是自定义的struct类型都就此拥有了interface{}的接口,这种做法和java中的Object类型比较类似。那么在一个数据通过func funcName(interface{})的方式传进来的时候,也就意味着这个参数被自动的转为interface{}的类型。 如以下的代码: func funcName(a interface{}) string { return string(a) } 编译器将会返回: cannot convert a (type interface{}) to type string: need type a...阅读全文

博文 2014-11-15 19:18 JonnyHsu

golang url encode

import ( fm "fmt" "net/url" rt "runtime" ) func main() { var urlStr string = "http://baidu.com/index.php/?abc=1_羽毛" l, err := url.ParseQuery(urlStr) fm.Println(l, err) l2, err2 := url.ParseRequestURI(urlStr) fm.Println(l2, err2) l3, err3 := url.Parse(urlStr) fm.Println(l3, err3) fm.Println(l3.Path) fm.Println(l3.RawQuery) fm.Println(l3.Query()) fm....阅读全文

博文 2014-01-17 10:51 the-moving-ear

GO使用SMTP发送邮件

核心代码:smtp.SendMail(host, auth, user, send_to, msg),auth := smtp.PlainAuth("", user, password, hp[0]) 可行方案:使用企业邮箱的SMTP发送邮件,host :="smtp.exmail.qq.com:25",因此需要一个企业邮箱的账号和密码 直接上代码: main.go package main import ( "fmt" "net/smtp" "strings" ) func SendToMail(user, password, host, to, subject, body, mailtype string) error { hp := strings.Split(host, ":") a...阅读全文

golang的net包

package net import "net" net包提供了可移植的网络I/O接口,包括TCP/IP、UDP、域名解析和Unix域socket。 虽然本包提供了对网络原语的访问,大部分使用者只需要Dial、Listen和Accept函数提供的基本接口;以及相关的Conn和Listener接口。crypto/tls包提供了相同的接口和类似的Dial和Listen函数。 Dial函数和服务端建立连接: conn, err := net.Dial("tcp", "google.com:80") if err != nil { // handle error } fmt.Fprintf(conn, "GET / HTTP/1.0\r\n\r\n") status, err := bufio.Ne...阅读全文

博文 2014-08-21 10:13 刘地

Golang中调用DLL示例—Win32 API

不断的会有人问:在go中可以调用dll么?如何做? 这里提供一个示例(获取当前Windows版本): package main import ( "syscall" ) func abort(funcname string, err error) { panic(funcname + " failed: " + err.Error()) } func print_version(v uint32) { major := byte(v) minor := uint8(v >> 8) build := uint16(v >> 16) print("windows version ", major, ".", ...阅读全文

golang和java的http性能对比

公司要重构一个统计项目,统计部分要提供一个web收数的接口,因为统计系统的日志量十分大,所以对web服务的性能要求很严格,在技术选择的背景下做了golang和java的性能对比. 测试环境: mac pro 13.4.0 golang: go version go1.3.1 darwin/amd64 java: 1.7.0_71, 基于tomcat容器 测试工具 apache Ab工具: http://httpd.apache.org/docs/2.2/programs/ab.html 测试流程 golang使用源生的net/http服务搭建http项目,接口输出hello world java使用servlet 搭建web项目,接口同样输出hello world ab工具使用 ab -c ...阅读全文

博文 2015-01-12 23:27 dandy

golang url解析

package main import "fmt" import "net/url" import "strings" func main() { //我们将解析这个 URL 示例,它包含了一个 scheme,认证信息,主机名,端口,路径,查询参数和片段。 s := "postgres://user:pass@host.com:5432/path?k=v#f" //解析这个 URL 并确保解析没有出错。 u, err := url.Parse(s) if err != nil { panic(err) } //直接访问 scheme。 fmt.Println(u.Scheme) //User 包含了所有的认证信息,这里调用 Username和 Password 来获取独立值。 fmt.Pri...阅读全文

博文 2015-04-20 11:20 benlightning

GO的TCP性能测试,优化结果

之前做过一次测试,没有任何优化的情况下C++(16Gbps)是GO(4Gbps)的4倍性能,参考http://blog.csdn.net/win_lin/article/details/40744175 这次针对TCP部分对go做了优化,测试结果令人满意。GO单进程(7Gbps)不输c++(8Gbps),是c++使用writev(16Gbps)的一半,GO多进程(59Gbps)完胜c++是c++的好几倍。 测试代码参考:https://github.com/winlinvip/srs.go/tree/master/research/tcp 备注:之前的测试是在虚拟机上,这次在物理机上,结果可能会略有不同。 Why TCP TCP是网络通讯的基础,而web则是基于HTTP框架,HTTP又基于T...阅读全文

博文 2014-11-22 13:18 winlinvip

Go使用全局变量要小心闭包

2015-03-16 Go使用全局变量要小心闭包 下面是一个简单复现: package main import ( "fmt" "net/http" ) type Logger struct{} func (this *Logger) Debug() { if this == nil { panic("fuck") } fmt.Println("hello world") } var __logger *Logger func AppLog() *Logger { return __logger } func InitConf() { __logger = &Logger{} } // ------内上内容应该是写在log包中,这里是方便演示------ var logger = AppLo...阅读全文

Golang Web编程的Get和Post请求发送与解析

Golang Web编程的Get和Post请求发送与解析 时间 2014-08-19 15:26:48 CSDN博客 原文 http://blog.csdn.net/typ2004/article/details/38669949 本文的是一篇入门文章,通过一个简单的例子介绍Golang的Web编程主要用到的技术。 文章结构包括: Client-Get 请求 Client-Post 请求 Server 处理 Get 和 Post 数据 在数据的封装中,我们部分采用了json,因而本文也涉及到Golang中json的编码和解码。 一、Client-Get package main import ( "fmt" "net/url" "net/http" "io/ioutil" "log" ) f...阅读全文

博文 2015-01-30 09:28 stephen830

Go语言TCP Socket编程

Golang的主要 设计目标之一就是面向大规模后端服务程序,网络通信这块是服务端 程序必不可少也是至关重要的一部分。在日常应用中,我们也可以看到Go中的net以及其subdirectories下的包均是“高频+刚需”,而TCP socket则是网络编程的主流,即便您没有直接使用到net中有关TCP Socket方面的接口,但net/http总是用到了吧,http底层依旧是用tcp socket实现的。 网络编程方面,我们最常用的就是tcp socket编程了,在posix标准出来后,socket在各大主流OS平台上都得到了很好的支持。关于tcp programming,最好的资料莫过于W. Richard Stevens 的网络编程圣经《UNIX网络 编程 卷1:套接字联网API》 了,书中...阅读全文

博文 十一月 17, 2015 bigwhite

go get 获得 golang.org 的项目

go get 用来动态获取远程代码包的,目前支持的有BitBucket、GitHub、Google Code和Launchpad。这个命令在内部实际上分成了两步操作:第一步是下载源码包,第二步是执行go install。下载源码包的go工具会自动根据不同的域名调用不同的源码工具,对应关系如下: BitBucket (Mercurial Git) GitHub (Git) Google Code Project Hosting (Git, Mercurial, Subversion) Launchpad (Bazaar) go get 的参数说明: -d 只下载不安装 -f 只有在你包含了-u参数的时候才有效,不让-u去验证import中的每一个都已经获取了,这对于本地fork的包特别有用 -...阅读全文

博文 2015-12-29 21:02 ghj1976

A list of Go projects

Indexes and search engines These sites provide indexes and search engines for Go packages: godoc.orggo-searchgowalkerSourcegraph Contributing To edit this page you must be a contributor to the go-wiki project. To get contributor access, send mail to adg@golang.org from your Google Account. Dead projects If you find a project in this list that is de...阅读全文

博文 2014-07-29 22:43 julong2011

Sublime Text 2搭建Go开发环境,代码提示+补全+调试

本文转自:http://blog.csdn.net/lvanneo/article/details/22681815,并做部分修改。 本文在已安装Go环境的前提下继续。 1、安装Sublime Text 2 2、安装Package Control。 运行Sublime,按下 Ctrl+`(`在Tab键上边),然后输入以下内容: import urllib2,os,hashlib; h = '7183a2d3e96f11eeadd761d777e62404' + 'e330c659d4bb41d3bdf022e94cab3cd0'; pf = 'Package Control.sublime-package'; ipp = sublime.installed_packages_path(); ...阅读全文

博文 2014-07-14 19:05 cceevv

golang 编译后文件变小的方法

总有人说Go程序“好大”,一个Hello World都1M多。其实,随着程序源码越来越大,编译后的文件并非那么快速的增长,这点大小真心没必要那么在乎,又不是软盘时代。但总有一些人非得想要小点。 首先我们看一下为什么会比其他语言大些: Go 编译的可执行文件都包含了一个运行时(runtime),和我们习惯的Java/.NET VM有些类似。 运行时负责内存分配(Stack Handing、GC Heap)、垃圾回收(Garbage Collection)、Goroutine调度(Schedule)、引用类型(slice、map、channel)管理,以及反射(Reflection)等工作。Go程序进程启动后会自动创建两个goroutine,分别用于执行main入口函数...阅读全文

go程序包源码解读——golang.org/x/net/contex

强烈建议读者先完成http://blog.golang.org/pipelines的阅读,此文对于go的channel的用法会让初学者有一种豁然开朗的感觉。 简介 context是一个在go中时常用到的程序包,google官方开发。特别常见的一个应用场景是由一个请求衍生出的各个goroutine之间需要满足一定的约束关系,以实现一些诸如有效期,中止routine树,传递请求全局变量之类的功能。使用context实现上下文功能约定需要在你的方法的传入参数的第一个传入一个context.Context类型的变量。我们将通过源代码的阅读和一些示例代码来说明context的用法。 文档在此:https://godoc.org/golang.org/x/net/context,另有一篇官方博客http...阅读全文

博文 2015-10-13 16:30 xiaohu50

用Go实现的简易TCP通信框架

接触到GO之后,GO的网络支持非常令人喜欢。GO实现了在语法层面上可以保持同步语义,但是却又没有牺牲太多性能,底层一样使用了IO路径复用,比如在LINUX下用了EPOLL,在WINDOWS下用了IOCP。 但是在开发服务端程序的时候,很多都是被动触发的,都是客户端发送来的请求需要处理。天生就是一个event-based的程序。而在GO下,因为并发是作为语言的一部分,goroutine, channel等特性则很容易的使程序员在实现功能时从容的在同步与异步之间进行转换。 因为自己的需要,我针对event-based场景的服务端做了简易的封装。具体代码见这里. 设计原则 因为GO的IO机制和并发原语的原生支持,再加上对网络API的封装,程序员可以简单的实现一个高效的服务端或者客户端程序。一般的实...阅读全文

博文 2014-10-22 15:26 concurrency

轻松搭建基于go1.5开发Android应用的环境

原文[https://blog.weizhe.net/?p=534](https://blog.weizhe.net/?p=534) 有兴趣的同学欢迎来一起玩:[https://github.com/vzever/gomobileapp](https://github.com/vzever/gomobileapp) go1.5beta2已经发布,正式版将在8月份发布.而早在go1.4就已发布了golang/mobile项目用以实现Android应用的开发.当前gomobile的环境部署已经相对成熟了.但项目声明必须基于go1.5,所以go1.4的同学必须要升级.因为在go1.4执行gomobile init的时候是不能通过的. 注:如果没有网络权限访问golang.org,请创...阅读全文

goproxy和msocks简介

goproxy是我个人写的,和shadowsocks同类的软件。当然,在设计之初我完全不知道shadowsocks的存在,goproxy的最初目标也不是成为shadowsocks的同类。只是我一直无法实现一个可靠的,能够达成目标的系统。最后想,那这样吧,我找一个跳一跳能够够到的苹果。大幅简化的结果就是goproxy——后来我才知道shadowsocks。 shadowsocks的基本原理 shadowsocks的基本概念,就是利用某种不同于SSL的协议,将本地的socks数据流转发到远程。这个协议,在默认版本中是一个凯撒变换,后来有了aes等加密算法。goproxy也采用了类似的做法,同样支持aes等加密算法。在每次连接时,客户端先用加密通道连接服务器端,然后完成整个连接通路。这样的设计鲁棒...阅读全文

golang使用sqlite

安装问题 在import sqlite的时候,golang build 出现以下错误, exec: "gcc": executable file not found in %PATH% 原因是sqlitle3是个cgo库,需要gcd编译c代码然后下载安装tdm-gcc即可(windosw版本)下载地址:http://tdm-gcc.tdragon.net/download 在golang中使用sqlite3 ````jspackage main import ( "database/sql" "fmt" _ "github.com/mattn/go-sqlite3") func main() { db, err := sql.Open("sqlite3", "./foo.db") check...阅读全文

博文 2015-07-19 22:53 spnt

Golang http 超时设置方法

c := http.Client{ Transport: &http.Transport{ Dial: func(netw, addr string) (net.Conn, error) { deadline := time.Now().Add(25 * time.Second) c, err := net.DialTimeout(netw, addr, time.Second*20) if err != nil { return nil, err } c.SetDeadline(deadline) return c, nil }, }, } c.Get("http://www.qq.com") ////////////////////////////////////////////// /...阅读全文

博文 2014-07-03 nulijiabei

golang rpc 简单范例

RPC(Remote Procedure Call Protocol)——远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。 它的工作流程如下图: golang 使用 RPC的例子如下: 服务器端代码: 这里暴露了一个RPC接口,一个HTTP接口 package main import ( "fmt" "io" "net" "net/http" "net/rpc" ) type Watcher int func (w *Watcher) GetInfo(arg int, result *int) error { *result = 1 return nil } func main() { http.HandleFunc("/ghj1976", Gh...阅读全文

博文 2015-02-17 15:33 ghj1976

用go语言模拟客户端对服务端发送get和post请求

client.go package main import ( // "bytes" "fmt" "io/ioutil" "net/http" "net/url" ) var client = &http.Client{} func Get() { //向服务端发送get请求 request, _ := http.NewRequest("GET", "http://192.168.1.35:9091/?publicKey=-----BEGIN+PUBLIC+KEY-----%0D%0AMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDZsfv1qscqYdy4vY%2BP4e3cAtmv%0D%0AppXQcRvrF1cB4drkv0haU24Y7m5qYtT52...阅读全文

博文 2015-01-08 11:16 秦思_li

[golang]内存不断增长bytes.makeSlice

golang写的一个图片服务器,在批量下载压缩时候发现内存不断增长。。。。 幸好golang自带内存占用日志结合分析工具可以方便看到内存分布。 详细可参考: http://blog.golang.org/profiling-go-programs 可以实时统计CPU\内存信息。 这里主要说一下内存怎么搞。CPU分析的参考之前的一篇文章。 //需要包含这个pprof包 import "runtime/pprof" //这里接收内存统计信息保存文件 var memprofile = flag.String("memprofile", "", "write memory profile to this file") //这里是判断是否需要记录内存的逻辑 if *memprofile != "" {...阅读全文

博文 2015-04-03 20:00 zhangqingping

[Golang]你处于使用Go语言的哪个层次,来测测吧

Francesc (@francesc) 是 Go 核心团队的一员, 是提倡 Google Cloud 平台的开发者. 他是一个编程语言的爱好者, Google的技术指导大师, Go tour的创造者之一. 这个讨论的灵感来自于另一个 Raquel Vélez 在 JSConf. Slides 的讨论,这个讨论已经发到了这里. Sourcegraph 是下一代编程协作工具, 用于搜索, 探索, 和审查代码. 我们参加GopherCon India 来分享我们是怎样使用 Go 并学习别人是怎样使用它的, 对配合liveblog的这次讨论我们深感荣幸. 作为Go团队的开发者之一,Francesc可能比世界上其他人接触到的Go语言程序员都要多。正因为有了这样的有利条件,他把Go语言的学习过程划分...阅读全文

博文 2015-03-11 10:39 abv123456789

Go http server

package main import ( "io" "net/http" "log" ) // hello world, the web server func HelloServer(w http.ResponseWriter, req *http.Request) { io.WriteString(w, "hello, world!\n") } func main() { http.HandleFunc("/hello", HelloServer) err := http.ListenAndServe(":12345", nil) if err != nil { log.Fatal("ListenAndServe: ", err) } } 上面是一个简单的go http服务器端程序。 ...阅读全文

博文 2015-09-21 14:51 kuipertan

golang+websocket

参考资料: 0. 浅谈websocket:http://www.cnblogs.com/whthomas/p/3801147.html 1. golang版websocket源码:http://code.google.com/p/go.net/websocket 2. golang版websocket文档:http://godoc.org/golang.org/x/net/websocket#ex-Handler 3. 测试浏览器是否支持websocket地址:http://www.websocket.org/echo.html 4. 简单的golang版的websocket server:http://www.xinze.me/%E5%9F%BA%E4%BA%8Egolang%E7%9A%...阅读全文

博文 2015-07-22 18:07 hezhixiong

Go 的快速 HTTP 包fasthttp

fasthttp 是 Go 的快速 HTTP 实现,当前在 1M 并发的生产环境使用非常成功,可以从单个服务器进行 100K qps 的持续连接。 HTTP 服务器性能与 net/http 比较 总而言之,fasthttp 比 net/http 快 10 倍 GOMAXPROCS=1 net/http: $ GOMAXPROCS=1 go test -bench=NetHTTPServerGet -benchmem PASS BenchmarkNetHTTPServerGet1ReqPerConn 100000 21211 ns/op 2407 B/op 30 allocs/op BenchmarkNe...阅读全文

Go语言获取外网和本地IP

package main import ( "flag" "fmt" "io" "net" "net/http" "os" ) var get_ip = flag.String("get_ip", "", "external|internal") func main() { fmt.Println("Usage of ./getmyip --get_ip=(external|internal)") flag.Parse() if *get_ip == "external" { get_external() } if *get_ip == "internal" { get_internal() } } func get_external() { resp, err := http.Get("h...阅读全文

博文 2015-07-13 17:01 冷絮

go语言网络编程之tcp

go语言网络编程之tcp go语言网络编程需要导入包 net如下 import ( "fmt" "net" ) 重要函数 func Listen(net, laddr string) (Listener, error) func Accept() (c Conn, err error) func Read(b []byte) (n int, err error) 好,我们先写一个go服务器端。 编程之前,先来了解下go语法,熟悉的跳过此段。 go的变量声明比较怪,和c的声明“相反” c语言的声明是这样的 int a; go语言的声明是这样的 var a int; 如果无视var这个标志,你会就是“相反”。 而且你声明不使用会报错,在go中。 go语言的多变量赋值, i:=1 等价于刚才说明的...阅读全文

博文 2015-01-28 09:26 bojie5744

go语言的urlencode编码使用方式

1,首先我们可以查看godoc.com下的net/url https://godoc.org/net/url 2,我们来看下演示代码 package main import ( "crypto/md5" "flag" "fmt" "net/url" "strings" "time" ) func main() { fmt.Println("./timetoken -t 3600 -key key -url url") var t int64 var key string var resUrl string flag.Int64Var(&t, "t", 0, "expire timestamp") flag.StringVar(&key, "key", "", "encrypt key") f...阅读全文

博文 2016-06-12 18:17 guoer9973

使用 Go 语言实现优雅的服务器重启

Go被设计为一种后台语言,它通常也被用于后端程序中。服务端程序是GO语言最常见的软件产品。在这我要解决的问题是:如何干净利落地升级正在运行的服务端程序。 目标: 不关闭现有连接:例如我们不希望关掉已部署的运行中的程序。但又想不受限制地随时升级服务。 socket连接要随时响应用户请求:任何时刻socket的关闭可能使用户返回'连接被拒绝'的消息,而这是不可取的。 新的进程要能够启动并替换掉旧的。 pseudo翻译于 3周前 2人顶 顶 翻译的不错哦! 原理 在基于Unix的操作系统中,signal(信号)是与长时间运行的进程交互的常用方法. SIGTERM: 优雅地停止进程 SIGHUP: 重启/重新加载进程 (例如: nginx, sshd, apache) 如果收到SIGHUP信号,优雅...阅读全文

博文 2014-12-20 09:00:00 pseudo, Garfielt, Ley

2015年web开发的预测。。go语言

本文中,我们将一同看看当今 Web 开发的发展趋势,给大家分享我对 2015 年及未来的一些看法、观察和预测。我从 2000 年就开始做 Web 技术方面的工作,而近几年主要是做云架构解决方案。作为一名 Web 开发者,我曾在 .Net、Node.js 和 Go 技术栈上开发 Web 应用和 Web 服务。最近,我将 Web 技术和开发趋势作为整体研究了一遍,在这里分享一下我的想法和观察结果。首先,让我分享一些我所观察到的可用性和体系结构目前的趋势。可用性的趋势如今,用户体验变得比以往更重要,响应式网页设计(RWD)也成为了网站必备的特性。RWD 能让最终用户在不同尺寸的设备上访问网站,包括手机和平板浏览器。有了 RWD 取代移动网站,我们便无需为移动用户单独开发额外的网站。特别是当我们需要...阅读全文

博文 2015-03-05 08:43 蘑蘑茶

Golang HTTP GET POST请求

package main import ( "fmt" "io/ioutil" "net/http" "os" "strings" ) func GET() { client := &http.Client{} reqest, err := http.NewRequest("GET", "http://www.baidu.com/", nil) //建立一个请求 if err != nil { fmt.Println("Fatal error ", err.Error()) os.Exit(0) } //Add 头协议 reqest.Header.Add("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;...阅读全文

博文 2015-05-18 14:20 dq4402935

golang http HandleFunc

golang http的handle模块(一般也称为钩子模块),通过高级语言的匿名函数很容易实现这种内嵌功能的handle 我们一般这样使用golang的http HandleFunc来为http的server端做相应的处理 /*********************************************/ http.HandleFunc("/", xxx_FUN) err := http.ListenAndServe(":8080", nil) if err != nil { log.Fatal("ListenAndServe: ", err) } /*********************************************/ 我们再深入源码仔细看看http.H...阅读全文

博文 2015-11-09 17:36 golang_yh

golang的net/http包

package http import "net/http" http包提供了HTTP客户端和服务端的实现。 Get、Head、Post和PostForm函数发出HTTP/ HTTPS请求。 resp, err := http.Get("http://example.com/") ... resp, err := http.Post("http://example.com/upload", "image/jpeg", &buf) ... resp, err := http.PostForm("http://example.com/form", url.Values{"key": {"Value"}, "id": {"123"}}) 程序在使用完回复后必须关闭回复的主体。 resp, err ...阅读全文

博文 2014-08-21 10:14 刘地

go 通过nginx代理后获取用户ip

go 如果使用自己的服务器,可以直接使用 net/http 来获取 func ip(w http.ResponseWriter, r *http.Request) { fmt.Println(r.RemoteAddr) } 另外,在net包中也有 func (c *IPConn) RemoteAddr() Addr 以上是获取用户的ip,是与用户直连的ip,如果走代理,会是代理的ip 如果通过nginx代理,上边方法获得的是nginx的服务器的ip,所以这里要设置nginx代理 proxy_set_header Remote_addr $remote_addr; nginx会 转发ip到go的服务器,在通过go获取header中的romote_adder 获取用户的ip func ip(w ...阅读全文

博文 2014-08-14 19:22 zggsdy

revel安装报错unrecognized import path "golang.org/x/net/websocket"

由于GFW的原因,无法下载websocket源码,其实该源码在git上也有,只要下载下来,然后再GOPATH中写上相应的路径就可以通过编译,具体步骤如下 : 1. clone git上的代码到本地,比如clone到了家目录(~/) git clone https://github.com/golang/net.git 2. 在GOPATH中创建相应的目录,比如GOPATH=~/test cd ~/test mkdir -p src/golang.org/x/net/ 3. 拷贝websocket源码到上面创建的目录 cd ~/test cp -r ~/net/websocket/ src/golang.org/x/net/websocket 4. 手动build revel cmd go b...阅读全文

博文 2015-06-05 15:26 a55569769

简单的Restful API例子(Golang)

RESTful API 这玩意不用多说了,用Go做了个很简单的例子: 服务端在被调用时返回JSON, 客户端解析得到相关JSON信息. 服务端源码: package main //简单的JSON Restful API演示(服务端) //author: Xiong Chuan Liang //date: 2015-2-28 import ( "encoding/json" "fmt" "net/http" "time" ) type Item struct { Seq int Result map[string]int } type Message struct { Dept string Subject string Time int64 Detail []Item } func getJ...阅读全文

博文 2015-02-28 16:51 xcltapestry

Go语言(golang)开源项目大全

内容目录 Astronomy 构建工具 缓存 云计算 命令行选项解析器 命令行工具 压缩 配置文件解析器 控制台用户界面 加密 数据处理 数据结构 数据库和存储 开发工具 分布式/网格计算 文档 编辑器 Encodings and Character Sets Games GIS Go Implementations Graphics and Audio GUIs and Widget Toolkits Hardware Language and Linguistics 日志 机器学习 Mathematics Misc Music 网络 Operating System Interfaces Other Random Toys, Experiments and Example Code P2...阅读全文

博文 2015-07-10 09:55 davygeek