• go 的day 10


    Day 10


    1. http 编程

      • Go 原生支持 http, import "net/http"
      • Go 的 http 服务性能和 nginx 比较接近
      • 几行代码就可以实现一个 web 服务
    2. 简单的例子

      package main
      
      import (
      	"fmt"
      	"net/http"
      )
      
      func Hello(w http.ResponseWriter, r *http.Request) {
      	fmt.Println("handle hello")
      	fmt.Fprintf(w, "hello")
      }
      
      func main() {
      	http.HandleFunc("/", Hello)
      	err := http.ListenAndServe("0.0.0.0:8888", nil)
      	if err != nil {
      		fmt.Println("Http Listen Failed. err:", err)
      	}
      }
      
    3. http client

      package main
      
      import (
      	"fmt"
      	"io/ioutil"
      	"net/http"
      )
      
      func main() {
      	res, err := http.Get("https://ismdeep.com/software")
      	if err != nil {
      		fmt.Println("Get err:", err)
      		return
      	}
      	data, err := ioutil.ReadAll(res.Body)
      	if err != nil {
      		fmt.Println("Get data err:", err)
      		return
      	}
      	fmt.Println(string(data))
      }
      
    4. http 常见请求方法

      • Get 请求
      • Post 请求
      • Put 请求
      • Delete 请求
      • Head 请求
    5. head 请求实例

      package main
      
      import (
      	"fmt"
      	"net/http"
      	"sync"
      	"time"
      )
      
      var urls = []string{
      	"https://www.baidu.com",
      	"https://www.google.cn",
      	"https://taobao.com",
      	"http://jw.jxust.edu.cn",
      }
      
      func main() {
      	var wg sync.WaitGroup
      	for _, url := range urls {
      		wg.Add(1)
      		go func(url string) {
      			client := http.Client{
      				Transport:     nil,
      				CheckRedirect: nil,
      				Jar:           nil,
      				Timeout:       2 * time.Second,
      			}
      			resp, err := client.Head(url)
      			if err != nil {
      				fmt.Printf("Head %s failed, err: %v\n", url, err)
      			} else {
      				fmt.Printf("Head successed {%s}, Status: %v, Length: %d\n", url, resp.Status, resp.ContentLength)
      			}
      			wg.Add(-1)
      		}(url)
      	}
      	wg.Wait()
      }
      
    6. http 常见状态码

      http.StatusContinue = 100
      http.StatusOK = 200
      http.StatusFound = 302
      http.StatusBadRequest = 400
      http.StatusUnauthorized = 401
      http.StatusForbidden = 403
      http.StatusNotFound = 404
      http.StatusInternalServerError = 500
      
    7. 表单处理

    8. 模板

      • 替换 {{.字段名}}
      • if-else 流程
      • 循环

    MySQL 编程

    1. 连接 MySQL

      database, err := sqlx.Open("mysql", "username:[password]@tcp(127.0.0.1:3306)/test")
      
    2. insert 操作

      r, err := Db.Exec("insert into person(username, sex, email) values(?,?,?)", "stu001", "man", "std01@qq.com")
      
    3. ...

  • 相关阅读:
    swift对比object-c
    Swift : missing argument label 'xxx' in call
    Swift: missing argument label 'xxx' in call
    Swift 闭包(六)
    求教贴,一个可能很白痴的问题,有时间又很闲的大神给解决下
    Swift “ambiguous use of operator '>'”
    swift 之嵌套的理解 func chooseStepFunction(backwards: Bool) -> (Int) -> Int
    苹果新的编程语言 Swift 语言进阶(七)--枚举、结构、类
    苹果新的编程语言 Swift 语言进阶(六)--函数和闭包
    触摸板PCB制作-TM12
  • 原文地址:https://www.cnblogs.com/heris/p/16197051.html
Copyright © 2020-2023  润新知