2019-07-23

  • 北京 天气晴
  • 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: [email protected]
* @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: [email protected]
* @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)