zoukankan      html  css  js  c++  java
  • 一个go的简单协程

    package main
    import(
        "database/sql"
        "fmt"
        _ "github.com/go-sql-driver/mysql"
        "bytes"
        "encoding/json"
        "io/ioutil"
        "net/http"
        "time"
    )
    type User struct{
        ID uint32 `json:"id"`
        // Username 用户名 [手机号]
        Username string `json:"username"`
        // Wxid 微信ID [unionid]
        Wxid string `json:"unionid"`
        // Openid 微信ID [openid]
        Openid string `json:"openid"`
    }
    func main(){
        ch := make(chan User, 100000)
        out := make(chan string, 100000)
        index := get_data(ch, 1, 100000)
        go request_test(out, ch)
        go request_test(out, ch)
        go request_test(out, ch)
        go request_test(out, ch)
        go request_test(out, ch)
        go request_test(out, ch)
        go request_test(out, ch)
        go request_test(out, ch)
        go request_test(out, ch)
        go request_test(out, ch)
        go request_test(out, ch)
        go request_test(out, ch)
        fmt.Println(index)
        for i := range out {
            fmt.Println(i)
        }



    }
    func get_data(ch chan User, firts int, limit int) int{
        db, err := sql.Open("mysql", "root:123456@tcp(127.0.0.1:33060)/test")
        checkErr(err)
        var index = 0;
        defer db.Close()
          //查询数据
          rows, err := db.Query("SELECT id, username, wxid, openid FROM xt_user limit ?,?", firts, limit)
          checkErr(err)
          for rows.Next() {
            var user User
            rows.Scan(&user.ID, &user.Username, &user.Wxid, &user.Openid)
            index = int(user.ID)
            ch <- user
        }
        return index
    }
    func request_test(out chan string, ch chan User){
        for it := range ch {
            m := map[string]string{
                "mobile": it.Username,
                "unionId":it.Wxid,
                "openId": "",
                "code": "1235",
            }
            url := "“
            res := Post(url, m, "application/json")
            out <- res
        }
    }
    // 发送POST请求
    // url:         请求地址
    // data:        POST请求提交的数据
    // contentType: 请求体格式,如:application/json
    // content:     请求放回的内容
    func Post(url string, data interface{}, contentType string) string {
        // 超时时间:5秒
        client := &http.Client{Timeout: 5 * time.Second}
        jsonStr, _ := json.Marshal(data)
        resp, err := client.Post(url, contentType, bytes.NewBuffer(jsonStr))
        if err != nil {
            panic(err)
        }
        defer resp.Body.Close()
        result, _ := ioutil.ReadAll(resp.Body)
        return string(result)
    }
    func checkErr(err error) {
        if err != nil {
            panic(err)
        }
    }
  • 相关阅读:
    iOS-SetNeedsLayout,layoutNeeded和layoutSubviews方法之间的关系
    iOS-基础知识-assign,copy,retain,strong,weak的区别
    iOS中单例的两种方法
    iOS-项目国际化
    iOS-项目分析,框架搭建
    iOS-项目远程推送1
    iOS-developer.Apple开发账号操作步骤
    iOS系统办公软件ppt等如何转换windows下可以打开的格式
    iOS-Senior18-第三方初级
    iOS-Senior23-科大讯飞语音识别2
  • 原文地址:https://www.cnblogs.com/huangguojin/p/13225219.html
Copyright © 2011-2022 走看看