美文网首页
2019-07-23

2019-07-23

作者: 一叶舟遥 | 来源:发表于2019-07-23 20:59 被阅读0次
    • 北京 天气晴
    • leader上次说CSDN没逼格???👌,滚来简书写学习记录了。杂七杂八的日常放在日记本,有时间写些专题。坚持写作,好好学习。

    Go的json解析

    go语言本身提供encoding/json包

    json.Marshal 将数据转成json
    imap := map[string]string{"username":"vicky", "phone":"9527"}
    value, err := json.Marshal(imap)
    if err != nil {
        fmt.Println("json转换失败。")
    } 
    //转换之后是[]byte类型
    fmt.Println(string(value))
    
    {"phone":"9527","username":"vicky"}
    

    在实际项目中,编码成json串的数据结构,往往是切片类型。这个下午或者明天读源码的时候再记。

    json.Unmarshal解析json
    var imapGet map[string]string
    //1. 第一个参数是json byte[]类型的字符串,第二个参数是接收数据的数据结构
    //2. 第二个参数是个指针类型
    errShal := json.Unmarshal(valueGet, &imapGet)
    if errShal != nil {
        fmt.Println(err)
    }
    

    午间小记

    就莫名其妙一上班就很困,从10点困到吃饭的那种,mentor在我旁边看着我???我也莫得办法啊,我明明下班洗完澡就睡了,然后每天还是很困。就疯狂喝水,疯狂上厕所,掐手臂咬手指,强打精神敲代码。
    今天食堂有西瓜啊。好了好了,中午好好休息,下午晚上一定不玩不睡了。


    西瓜🍉.png

    redigo的基本使用

    连接redis和set/get基本操作
    /**
    * @Author: xiewenxin@songguo7.com
    * @Date: 2019-07-23 10:03
    * @File: LinkRedis.go
    **/
    package main
    
    import (
        "fmt"
        "github.com/garyburd/redigo/redis"
        "time"
    )
    
    func main()  {
        c, err := redis.Dial("tcp", "127.0.0.1:6379")
        if err != nil {
            fmt.Println("Connect to redis error", err)
            return
        }
        defer c.Close()
        //set, 定时1s
        _, err = c.Do("SET", "mykey", "superCX", "EX", "1")
        if err != nil {
            fmt.Println("redis set failed:", err)
        }
        //get
        username, err := redis.String(c.Do("GET", "mykey"))
        if err != nil {
            fmt.Println("redis get failed:", err)
        } else {
            fmt.Printf("Get mykey : %v \n", username)
        }
        //延时1s
        time.Sleep(1 * time.Second)
        //mykey没啦
        username, err = redis.String(c.Do("GET", "mykey"))
        if err != nil {
            fmt.Println("redis get failed:", err)
        } else {
            fmt.Printf("Get mykey: %v \n", username)
        }
        //exists
        _, err = c.Do("SET", "my_name", "vicky")
        is_key_exit, err := redis.Bool(c.Do("EXISTS", "my_name"))
        if err != nil {
            fmt.Println("error:", err)
        } else {
            fmt.Printf("exists or not : %v \n", is_key_exit)
        }
    
        //删除
        _, err = c.Do("DEL", "my_name")
        if err != nil {
            fmt.Println("redis delete failed:", err)
        } else {
            fmt.Println("my_name delete successfully")
        }
    }
    
    读写json
    /**
    * @Author: xiewenxin@songguo7.com
    * @Date: 2019-07-23 11:12
    * @File: ReadJson.go
    **/
    package main
    
    import (
        "encoding/json"
        "fmt"
        "github.com/garyburd/redigo/redis"
    )
    
    func main() {
        c, err := redis.Dial("tcp", "127.0.0.1:6379")
        if err != nil {
            fmt.Println("Connect to redis error", err)
            return
        }
        defer c.Close()
    
        key := "profile"
        imap := map[string]string{"username":"vicky", "phone":"9527"}
        //map转成json
        value, _ := json.Marshal(imap)
        //写入redis。NX是Not exists的缩写。set if not exist.
        n, err := c.Do("SETNX", key, value)
        if err != nil {
            fmt.Println(err)
        }
        if n == int64(1) {
            fmt.Println("success")
        }
        //从redis中读
        valueGet, err := redis.Bytes(c.Do("GET", key))
        if err != nil {
            fmt.Println(err)
        }
    
        //把json解析为map
        var imapGet map[string]string
        errShal := json.Unmarshal(valueGet, &imapGet)
        if errShal != nil {
            fmt.Println(err)
        }
        fmt.Println(imapGet["username"])
        fmt.Println(imapGet["phone"])
    }
    

    下午记录

    在认真工作,今天好忙,明天补充。

    第一次自己在源码里做开发,虽然做的是很简单的工作。上线的流程大致是,从master上拉最新的代码,然后开发,然后从master里开一个新分支,master pull同步一下。然后开发完的代码上传到新分支。mentor叫我写完压测一下,不过因为docker里gopath的原因没测上就下班了。

    相关文章

      网友评论

          本文标题:2019-07-23

          本文链接:https://www.haomeiwen.com/subject/eplolctx.html