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. ...

标签智能推荐:

golang fmt格式“占位符”

golang 的fmt 包实现了格式化I/O函数,类似于C的 printf 和 scanf。# 定义示例类型和变量type Human struct { Name string}var people = Human{Name:"zha...

go语言从入门到删库的那些事

计划学习go语言已经是很久之前的事情了,写此博文纪念一下学习go语言的那些事情,希望给一路同行的你一些小小的帮助(长期更新)1.推荐的书籍及文档手册 Go语言设计与实现

Mac下go多版本切换

简介自己学习的时候,可能会使用go的最新版本,工作中可能会用其他的版本,怎么进行go版本的切换这是一个问题,本文编写针对MAC。前置条件安装Homebrew,官网地址:https://brew.sh/index_zh-cn。安装GO通过br...

django-apscheduler插件来实现Django中

1、前言在开发当中我们或多或少都会有某个需求需要定时去执行。在Django框架里我比较喜欢用django-apscheduler插件来实现Django中的定时任务。2、django-apscheduler 介绍它支持三种任务调度任务:1.固...

睿翼NBR6120-E(系统版本:NBR_RGOS 11.9

ACL规则屏蔽外网攻击的IP地址  黑名单IP1:45.92.161.68  黑名单IP2:188.234.148.238一、创建ACL访问列表,下图:二、通过acl访问列表添加黑名单IP地址,如下图: 添加后结果如下图: 三、绑定访问控制...

使用Django的auth模块内置的密码加密方法

使用auth模块实现自定义用户表的密码密文获取加密密码的方法from django.contrib.auth.hashers import make_password# 设置密码 res = make_password(‘lqz123...

golang使用go mod包含另一个文件的方法

新建test文件夹在这个文件夹下干活在根目录新建main.go文件main.gopackage mainimport ("test/modules")func main(){modules.Task()}在根目录下新建modules文件夹在...

R Works with Google Earth Engi

Date : 2022/04/24Intallation Tutorial - Reference : Introduction to rgee (r-project.org) Prerequisites :1. A registered ...

Django中间件小实例

需求:利用django中间件,当普通的键值对数据进来的时候,都能通过request.data中拿到实现:1.在子应用下创建一个py文件,自定义一个中间件,自定义中间件需要继承MiddlewareMixin的类,2.在该类下用process_...

Django大全1

一、python的三大主流框架 1 """ 2 django 3 特点:大而全 自带的功能特别特别特别的多 类似于航空母舰 4 不足之处: 5 有时候过于笨重 6 7 flask 8 特点:小而精 ...