V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  dt2vba  ›  全部回复第 4 页 / 共 4 页
回复总数  78
1  2  3  4  
2019-06-28 13:18:23 +08:00
回复了 neroanelli 创建的主题 MySQL 几千列数据高速插入数据库设计
我用 goroutine 和 go-nsq,一个小时轻松插入百万条数据。很稳定。当然表的字段只有 11 个。
请问有没有 Golang 远程实习的职位?
2019-06-20 01:21:44 +08:00
回复了 lisicong 创建的主题 程序员 都 2019 年了,我还在写 VBA...
我一直在用 VBA,简单、高效。昨天刚写了一堆 VBA,下载 XML,然后导出节点内容。
2019-06-12 15:25:03 +08:00
回复了 astaxie 创建的主题 酷工作 积梦高薪大量招聘 Go 和 React 程序员
@astaxie 好的,谢谢你。
2019-06-12 15:23:28 +08:00
回复了 dt2vba 创建的主题 程序员 求助 go-nsq 消费者的问题
@lockerhyz 非常感谢你的帮助。
2019-06-12 15:12:59 +08:00
回复了 astaxie 创建的主题 酷工作 积梦高薪大量招聘 Go 和 React 程序员
大神,正在钻研《 Build web application with Golang 》,非常棒的一本书,内容浅显易懂。衷心感谢你的贡献。

另外,我想咨询一下,你们是否提供 Go 的远程实习职位?
支持,期待汇编、C++的教程
厉害,感觉方法的命名很不错,简洁、规范
2019-06-08 07:42:03 +08:00
回复了 dt2vba 创建的主题 Go 编程语言 请教如何使用 gorilla/sessions 实现多点登陆
@jedrek
我简单地试了一下,在已有四个客户端登录的情况下,复制任一有效的 jwt token,写入第五个客户端的 request header,的确可以登录。这时,已经有五个客户端处于在线状态。

我仔细地分析了一下,使用令牌和一次性口令,这个想法非常巧妙。似乎类似于 websocket 的心跳检测。

再次感谢你的帮助!
2019-06-07 21:43:34 +08:00
回复了 dt2vba 创建的主题 Go 编程语言 请教如何使用 gorilla/sessions 实现多点登陆
@jedrek 非常感谢你的帮助,借助 dgrijalva/jwt-go,基本实现了需求。以下是我的解决方案。如果你有空的话,并且愿意提出一些意见,那将是非常期待的。

首先定义一个结构体,存储用户的 token 信息

type TokenManager struct {
Lock sync.Mutex

//map[user] map[token]user
Token map[string]map[string]string
}

然后定义一个该结构体的方法,删除已经过期的 token

func (manager *TokenManager) DeleteTokenNotValid() {
//删除过期的 Token
...

return
}

定义一个全局的 TokenManager 结构体变量
var TokenStore=TokenManager{}

主函数

func main() {
//开启协程,删除已经过期的 token
go func() {
for true {
TokenStore.DeleteTokenNotValid()
}
}()

//业务处理函数
...
}

登录处理函数

func login(c echo.Context) error {
//如果请求携带有效的 token,则跳转至首页
...

//如果用户的 token 数量大于等于 4,则禁止登录
...

//创建用户的 token,并保存至 TokenStore.Token[user]
...
}

注销处理函数

func logout(c echo.Context) error {
//删除请求携带的有效 token
...
}
2019-06-07 17:17:27 +08:00
回复了 dt2vba 创建的主题 Go 编程语言 请教如何使用 gorilla/sessions 实现多点登陆
@jedrek
非常感谢你的详细的回复,尤其是关于令牌解释的部分,清晰地简述用户认证流程,令人印象深刻。

可能我对我的需求解释地不是很清楚。比如,在同一时刻,用户 A,在浏览器 1、2、3、4 登录在线。此时,用户 A 无法在浏览器 5 成功登录(因为最多允许 4 个)。如果用户 A 在浏览器 3 注销登录,那么用户 A 则可以在浏览器 5 成功登录。

但是对于用户注销登录状态,我不太确定令牌的方式是否可以实现。
2019-06-07 11:47:31 +08:00
回复了 dt2vba 创建的主题 Go 编程语言 请教如何使用 gorilla/sessions 实现多点登陆
@jedrek 你好,可以再解释一下吗?
2019-06-07 00:31:23 +08:00
回复了 dt2vba 创建的主题 Go 编程语言 请教如何使用 gorilla/sessions 实现多点登陆
@jedrek 非常感谢你的提醒,晚安。
@libook +1
2019-06-04 19:03:28 +08:00
回复了 dt2vba 创建的主题 程序员 求助 go-nsq 消费者的问题
@keepeye 你好,感谢提供帮助!
2019-06-04 18:55:51 +08:00
回复了 dt2vba 创建的主题 程序员 求助 go-nsq 消费者的问题
@lockerhyz

你好,如果你有时间的话,可以帮我看一下吗?以下是工作流程,

消息是 HTTP 请求表单数据

publishMessage.go 发布消息

consumeMessage.go 消费消息


FILE 1 main.go

package main

import (
"github.com/labstack/echo"
)

type User struct {Name string}

func main() {
e:=echo.New()
r:=e.Group("/api/v1/applicant/register/user")
r.POST("",createUserInNSQ)
e.Start(":1323")
}


FILE 2 publishMessage.go

package main

import (
...
"github.com/nsqio/go-nsq"
...
)

var tcpNsqdAddr="127.0.0.1:4150"

func publishMessage(topic string,command []uint8) error {
config:=nsq.NewConfig()
producer,_:=nsq.NewProducer(tcpNsqdAddr,config)
producer.Publish(topic,command)
return nil
}

func createUserInNSQ(c echo.Context) (err error) {
u:=new(User)

topic:="InsertUser"
command,err:=json.Marshal(u)
publishMessage(topic,command)

return c.String( http.StatusOK,"OK")
}


FILE 3 consumeMessage.go

package main

import (
...
"github.com/nsqio/go-nsq"
...
)

var tcpNsqdAddr="127.0.0.1:4150"

type NsqHandler struct {
}

func (s *NsqHandler) HandleMessage(message *nsq.Message) error {
//insert message into MySQL
...

return nil
}

func main() {
config:=nsq.NewConfig()
com,_:=nsq.NewConsumer("InsertUser","channel1",config)
com.AddHandler(&NsqHandler{NsqHandlerId:"one"})
com.ConnectToNSQD(tcpNsqdAddr)

var wg=&sync.WaitGroup{}
wg.Add(1)
wg.Wait()
}
2019-06-04 18:18:42 +08:00
回复了 dt2vba 创建的主题 程序员 求助 go-nsq 消费者的问题
@lockerhyz 谢谢关注。我试了一下,不能正常工作。
2019-06-01 21:45:07 +08:00
回复了 server 创建的主题 程序员 俺也想带几个小朋友,最多 4 人, go PHP
大佬,带我 Golang
1  2  3  4  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   887 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 22ms · UTC 21:44 · PVG 05:44 · LAX 13:44 · JFK 16:44
Developed with CodeLauncher
♥ Do have faith in what you're doing.