Go里面如何写多行的字符串吗?

有问必答mintzhao 回复了问题 • 5 人关注 • 4 个回复 • 840 次浏览 • 2016-10-31 10:37 • 来自相关话题

为什么Go的编译那么快?

有问必答simple 回复了问题 • 4 人关注 • 2 个回复 • 600 次浏览 • 2016-10-30 22:12 • 来自相关话题

beego orm的资源释放问题

有问必答astaxie 回复了问题 • 3 人关注 • 1 个回复 • 569 次浏览 • 2016-10-30 21:14 • 来自相关话题

在反引号里怎么使用反引号

有问必答tupunco 回复了问题 • 3 人关注 • 2 个回复 • 591 次浏览 • 2016-10-30 17:17 • 来自相关话题

vscode 对于修改的过的函数在补全时立即生效是怎么设置的

有问必答tupunco 回复了问题 • 2 人关注 • 1 个回复 • 455 次浏览 • 2016-10-30 17:09 • 来自相关话题

golang 通过exec Command启动的进程如何关闭的解决办法

文章分享SuperFashi 回复了问题 • 4 人关注 • 1 个回复 • 852 次浏览 • 2016-10-30 16:25 • 来自相关话题

process release,kill等等方法提高性能么?

回复

技术讨论philosophia14 发起了问题 • 1 人关注 • 0 个回复 • 432 次浏览 • 2016-10-30 12:20 • 来自相关话题

竞争写文件

有问必答astaxie 回复了问题 • 2 人关注 • 3 个回复 • 386 次浏览 • 2016-10-30 11:33 • 来自相关话题

StartProcess,的标准输入?输出?

有问必答astaxie 回复了问题 • 3 人关注 • 4 个回复 • 618 次浏览 • 2016-10-30 11:32 • 来自相关话题

网速是怎么决定的?

技术讨论willee 回复了问题 • 4 人关注 • 4 个回复 • 420 次浏览 • 2016-10-30 00:14 • 来自相关话题

抛砖引玉一下,求问 Go 程序的动态插件(Plugin)方案

技术讨论cholerae 回复了问题 • 9 人关注 • 4 个回复 • 974 次浏览 • 2016-10-29 22:29 • 来自相关话题

go+lua的分布式计算工具--Gleam

文章分享themoonstone 发表了文章 • 0 个评论 • 861 次浏览 • 2016-10-29 21:04 • 来自相关话题

此处是一个通过Go和LuaJIT编写的快速和可扩展的分布式映射/缩减系统,很好的将Go的高并发性与Luajit高性能相结合,可独立运行或用于分布式计算。 Gleam是一个高性能和高效的分布式执行系统,具备高性能、简单,通用,灵活和易于定制的特点。它在Go... 查看全部

此处是一个通过Go和LuaJIT编写的快速和可扩展的分布式映射/缩减系统,很好的将Go的高并发性与Luajit高性能相结合,可独立运行或用于分布式计算。
Gleam是一个高性能和高效的分布式执行系统,具备高性能、简单,通用,灵活和易于定制的特点。它在Go中构建,用户定义的计算可以用Lua,Unix管道工具或其它任何流程序编写。下面是它的安装方式和具体使用实例:


安装方式:


1、安装go



2、安装luaJIT



3、将自定义的MessagePack.lua放在luajit可以找到的文件夹下。



4、 安装测试


如果出现以下问题,只需复制MessagePack.lua到其中一个路径。



  • luajit: (command line):1: module 'MessagePack' not found:

  • no field package.preload['MessagePack']

  • no file './MessagePack.lua'

  • no file '/usr/local/share/luajit-2.0.4/MessagePack.lua'

  • no file '/usr/local/share/lua/5.1/MessagePack.lua'

  • no file '/usr/local/share/lua/5.1/MessagePack/init.lua'

  • no file './MessagePack.so'

  • no file '/usr/local/lib/lua/5.1/MessagePack.so'

  • no file '/usr/local/lib/lua/5.1/loadall.so'


使用实例:


package main

import (
"os"

"github.com/chrislusf/gleam"
)

func main() {

gleam.New().TextFile("/etc/passwd").FlatMap(`
function(line)
return line:gmatch("%w+")
end
`).Map(`
function(word)
return word, 1
end
`).ReduceBy(`
function(x, y)
return x + y
end
`).Fprintf(os.Stdout, "%s,%d\n").Run()
}

通过以上内容、我们知道Geam的安装和使用都比较简单、而且基于golang和lua简单的语法规则和高效和并发性能、它也可以给用户带来更好的开发体验。希望有兴趣的同学可以享受到Gleam给大家带来的便利


源文链接:


https://github.com/chrislusf/gleam

golang windows程序获取管理员权限(UAC )

文章分享chenghuama 回复了问题 • 11 人关注 • 2 个回复 • 847 次浏览 • 2016-10-29 10:52 • 来自相关话题

go实现socks5代理

文章分享myml 发表了文章 • 3 个评论 • 612 次浏览 • 2016-10-28 22:10 • 来自相关话题

// go实现socks5代理 project main.go
package main

import (
    "bytes"
   ... 			查看全部
					
// go实现socks5代理 project main.go
package main

import (
"bytes"
"encoding/binary"
"fmt"
"io"
"log"
"net"
"time"
)

func main() {
log.SetFlags(log.Ltime | log.Lshortfile)
//监听1314端口
s, err := net.Listen("tcp", ":1314")
if err != nil {
log.Panic(err)
}
//接受客户端连接
for {
c, err := s.Accept()
if err != nil {
log.Panic(err)
}
go proxy(c)
}
}

func proxy(client net.Conn) {
defer client.Close()
var b [1024]byte

n, err := client.Read(b[:])
if err != nil {
log.Println(err)
return
}
var addr string
//sock5代理
if b[0] == 0x05 {
//回应确认代理
client.Write([]byte{0x05, 0x00})

n, err = client.Read(b[:])
if err != nil {
log.Println(err)
return
}
switch b[3] {
case 0x01:
//解析代理ip
type sockIP struct {
A, B, C, D byte
PORT uint16
}
sip := sockIP{}
if err := binary.Read(bytes.NewReader(b[4:n]), binary.BigEndian, &sip); err != nil {
log.Println("请求解析错误")
return
}
addr = fmt.Sprintf("%d.%d.%d.%d:%d", sip.A, sip.B, sip.C, sip.D, sip.PORT)
case 0x03:
//解析代理域名
host := string(b[5 : n-2])
var port uint16
err = binary.Read(bytes.NewReader(b[n-2:n]), binary.BigEndian, &port)
if err != nil {
log.Println(err)
return
}
addr = fmt.Sprintf("%s:%d", host, port)
}

server, err := net.DialTimeout("tcp", addr, time.Second*3)
if err != nil {
log.Println(err)
return
}
defer server.Close()
//回复确定代理成功
client.Write([]byte{0x05, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00})
//转发
go io.Copy(server, client)
io.Copy(client, server)
}
}

go实现http代理

文章分享myml 发表了文章 • 4 个评论 • 465 次浏览 • 2016-10-28 22:04 • 来自相关话题

// golang代理 project main.go
package main

import (
    "bytes"
    "fm... 			查看全部
					
// golang代理 project main.go
package main

import (
"bytes"
"fmt"
"io"
"log"
"net"
"net/url"
"strings"
)

func main() {
log.SetFlags(log.Ltime | log.Lshortfile)
//监听1314端口
s, err := net.Listen("tcp", ":1314")
if err != nil {
log.Panic(err)
}
//接受客户端连接
for {
c, err := s.Accept()
if err != nil {
log.Panic(err)
}
go proxy(c)
}
}
func proxy(client net.Conn) {
defer client.Close()

var b [1024]byte
n, err := client.Read(b[:])
if err != nil {
log.Println(err)
return
}
var methon, host, addr string
fmt.Sscanf(string(b[:bytes.IndexByte(b[:], '\n')]), "%s%s", &methon, &host)
u, err := url.Parse(host)
if err != nil {
log.Println(err)
return
}
//http代理https流量
if u.Opaque == "443" {
addr = u.Scheme + ":" + u.Opaque
} else {
if u.Host != "" {
if strings.Index(u.Host, ":") == -1 {
addr = u.Host + ":80"
} else {
addr = u.Host
}
} else {
addr = u.Path
}
}

//连接远程服务器
s, err := net.Dial("tcp", addr)
if err != nil {
log.Println(err)
return
}
if methon == "CONNECT" {
fmt.Fprint(client, "HTTP/1.1 200 Connection established\r\nConnection: close\r\n\r\n")
} else {
s.Write(b[:n])
}
//进行转发
go io.Copy(s, client)
io.Copy(client, s)
}