当前位置: 首页 > news >正文

自己怎么做视频网站网店推广分为哪几种类型

自己怎么做视频网站,网店推广分为哪几种类型,辰景青岛网站建设,做网站本溪概述 如果您没有Golang的基础,应该学习如下前置课程。 基础不好的同学每节课的代码最好配合视频进行阅读和学习,如果基础比较扎实,则阅读本教程巩固一下相关知识点即可,遇到不会的知识点再看视频。 视频课程 最近发现越来越多…

概述

如果您没有Golang的基础,应该学习如下前置课程。
在这里插入图片描述

基础不好的同学每节课的代码最好配合视频进行阅读和学习,如果基础比较扎实,则阅读本教程巩固一下相关知识点即可,遇到不会的知识点再看视频。

视频课程

最近发现越来越多的公司在用Golang了,所以精心整理了一套视频教程给大家,这个是其中的第3部,后续还会有很多。

视频已经录制完成,完整目录截图如下:
在这里插入图片描述

课程目录

  • 01 第一个Web程序.mp4
  • 02 默认的多路复用器.mp4
  • 03 自定义多路复用器.mp4
  • 04 配置读写超时时间.mp4
  • 05 httprouter库的介绍和安装.mp4
  • 06 httprouter的第一个使用案例.mp4
  • 07 使用httprouter提取路径参数.mp4
  • 08 复现浏览器跨域的问题.mp4
  • 09 使用httprouter分发二级域名.mp4
  • 10 使用httprouter挂载静态文件目录.mp4
  • 11 使用httprouter进行全局异常捕获.mp4
  • 12 将httprouter的代码下载到本地.mp4
  • 13 使用本地化的httprouter.mp4
  • 14 给本地化的httprouter打标签.mp4
  • 15 使用指定标签的本地化httprouter.mp4
  • 16 带参数的自定义处理器.mp4
  • 17 获取请求信息.mp4

每节课的代码

01 第一个Web程序.mp4

package mainimport ("fmt""net/http"
)func hello(w http.ResponseWriter, req *http.Request) {fmt.Fprintf(w, "hello world!")
}func main() {server := &http.Server{Addr: "0.0.0.0:8888",}http.HandleFunc("/", hello)server.ListenAndServe()
}

02 默认的多路复用器.mp4

package mainimport ("fmt""net/http"
)// 定义多个处理器
type handle1 struct{}
type handle2 struct{}func (h *handle1) ServeHTTP(w http.ResponseWriter, r *http.Request) {fmt.Fprintf(w, "handle1")
}
func (h *handle2) ServeHTTP(w http.ResponseWriter, r *http.Request) {fmt.Fprintf(w, "handle2")
}func main() {server := &http.Server{Addr:    "0.0.0.0:8888",Handler: nil, // 表示使用默认的多路复用器DefaultServerMux}// http.Handle 调用多路复用器的DefaultServerMux.Handle() 方法http.Handle("/handle1", &handle1{})http.Handle("/handle2", &handle2{})server.ListenAndServe()
}

03 自定义多路复用器.mp4

package mainimport ("fmt""net/http"
)// 定义多个处理器
type handle1 struct{}
type handle2 struct{}func (h *handle1) ServeHTTP(w http.ResponseWriter, r *http.Request) {fmt.Fprintf(w, "handle1")
}
func (h *handle2) ServeHTTP(w http.ResponseWriter, r *http.Request) {fmt.Fprintf(w, "handle2")
}func main() {// 自定义多路复用器mux := http.NewServeMux()mux.Handle("/handle1", &handle1{})mux.Handle("/handle2", &handle2{})server := &http.Server{Addr:    "0.0.0.0:8888",Handler: mux, // 表示使用默认的多路复用器DefaultServerMux}server.ListenAndServe()
}

04 配置读写超时时间.mp4

package mainimport ("fmt""net/http""time"
)// 定义多个处理器
type handle1 struct{}
type handle2 struct{}func (h *handle1) ServeHTTP(w http.ResponseWriter, r *http.Request) {time.Sleep(6 * time.Second)fmt.Fprintf(w, "handle1")
}
func (h *handle2) ServeHTTP(w http.ResponseWriter, r *http.Request) {fmt.Fprintf(w, "handle2")
}func main() {// 自定义多路复用器mux := http.NewServeMux()mux.Handle("/handle1", &handle1{})mux.Handle("/handle2", &handle2{})server := &http.Server{Addr:         "0.0.0.0:8888",Handler:      mux, // 表示使用默认的多路复用器DefaultServerMuxReadTimeout:  5 * time.Second,WriteTimeout: 5 * time.Second,}server.ListenAndServe()
}

05 httprouter库的介绍和安装.mp4

06 httprouter的第一个使用案例.mp4

package mainimport ("fmt""github.com/julienschmidt/httprouter""net/http""time"
)func Index(w http.ResponseWriter, r *http.Request, _ httprouter.Params) {fmt.Fprint(w, "Welcome!\n")
}
func Hello(w http.ResponseWriter, r *http.Request, ps httprouter.Params) {fmt.Fprintf(w, "hello, %s!\n", ps.ByName("name"))
}func main() {router := httprouter.New()router.GET("/", Index)router.GET("/hello/:name", Hello)server := &http.Server{Addr:         "0.0.0.0:8888",Handler:      router,ReadTimeout:  5 * time.Second,WriteTimeout: 5 * time.Second,}server.ListenAndServe()
}

07 使用httprouter提取路径参数.mp4

package mainimport ("fmt""github.com/julienschmidt/httprouter""net/http""time"
)func Index(w http.ResponseWriter, r *http.Request, _ httprouter.Params) {fmt.Fprint(w, "Welcome!\n")
}
func Hello(w http.ResponseWriter, r *http.Request, ps httprouter.Params) {fmt.Fprintf(w, "hello, %s!\n", ps.ByName("name"))
}func main() {router := httprouter.New()router.GET("/", Index)router.GET("/hello/:name", Hello)server := &http.Server{Addr:         "0.0.0.0:8888",Handler:      router,ReadTimeout:  5 * time.Second,WriteTimeout: 5 * time.Second,}server.ListenAndServe()
}

08 复现浏览器跨域的问题.mp4

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body>
<script src="https://unpkg.com/axios/dist/axios.min.js"></script>
<script>// const axios = require('axios');// 向给定ID的用户发起请求axios.get('http://127.0.0.1:8888/').then(function (response) {// 处理成功情况console.log(response);}).catch(function (error) {// 处理错误情况console.log(error);}).finally(function () {// 总是会执行});
</script>
</body>
</html>

09 使用httprouter分发二级域名.mp4

package mainimport ("github.com/julienschmidt/httprouter""log""net/http"
)// HostMap 域名映射字典
type HostMap map[string]http.Handlerfunc (hs HostMap) ServeHTTP(w http.ResponseWriter, r *http.Request) {//根据域名获取对应的Handler路由,然后调用处理(分发机制)if handler := hs[r.Host]; handler != nil {handler.ServeHTTP(w, r)} else {http.Error(w, "Forbidden", 403)}
}func main() {userRouter := httprouter.New()userRouter.GET("/", func(w http.ResponseWriter, r *http.Request, p httprouter.Params) {w.Write([]byte("sub1"))})dataRouter := httprouter.New()dataRouter.GET("/", func(w http.ResponseWriter, r *http.Request, _ httprouter.Params) {w.Write([]byte("sub2"))})//分别用于处理不同的二级域名hs := make(HostMap)hs["sub1.localhost:8888"] = userRouterhs["sub2.localhost:8888"] = dataRouterlog.Fatal(http.ListenAndServe(":8888", hs))
}

10 使用httprouter挂载静态文件目录.mp4

package mainimport ("github.com/julienschmidt/httprouter""log""net/http"
)func main() {router := httprouter.New()router.ServeFiles("/static/*filepath", http.Dir("c01_hello"))log.Fatal(http.ListenAndServe(":8888", router))
}

11 使用httprouter进行全局异常捕获.mp4

package mainimport ("fmt""github.com/julienschmidt/httprouter""log""net/http"
)func Index(w http.ResponseWriter, r *http.Request, _ httprouter.Params) {panic("error")
}func main() {router := httprouter.New()router.GET("/", Index)// 全局异常捕获router.PanicHandler = func(w http.ResponseWriter, r *http.Request, v interface{}) {w.WriteHeader(http.StatusInternalServerError)fmt.Fprintf(w, "全局异常捕获:%v", v)}log.Fatal(http.ListenAndServe(":8888", router))
}

12 将httprouter的代码下载到本地.mp4

13 使用本地化的httprouter.mp4

package mainimport ("fmt""github.com/zhangdapeng520/zdpgo_httprouter""net/http""time"
)func Index(w http.ResponseWriter, r *http.Request, _ zdpgo_httprouter.Params) {fmt.Fprint(w, "Welcome!\n")
}func main() {router := zdpgo_httprouter.New()router.GET("/", Index)server := &http.Server{Addr:         "0.0.0.0:8888",Handler:      router,ReadTimeout:  5 * time.Second,WriteTimeout: 5 * time.Second,}server.ListenAndServe()
}

14 给本地化的httprouter打标签.mp4

15 使用指定标签的本地化httprouter.mp4

16 带参数的自定义处理器.mp4

package mainimport ("fmt""net/http""time"
)type HelloHandler struct {Name string
}func (h HelloHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {fmt.Fprintf(w, "Hello, %s!", h.Name)
}func main() {mux := http.NewServeMux()mux.Handle("/", HelloHandler{"张三"})server := &http.Server{Addr:         "0.0.0.0:8888",Handler:      mux,ReadTimeout:  5 * time.Second,WriteTimeout: 5 * time.Second,}server.ListenAndServe()
}

17 获取请求信息.mp4

package mainimport ("fmt""net/http""strings"
)func request(w http.ResponseWriter, r *http.Request) {fmt.Println("HTTP方法 method", r.Method)fmt.Println("RequestURI是被客户端发送到服务端的请求的请求行中未修改的请求URI RequestURI:", r.RequestURI)// URL类型,下方分别列出URL的各成员fmt.Println("URL_path", r.URL.Path)fmt.Println("URL_RawQuery", r.URL.RawQuery)fmt.Println("URL_Fragment", r.URL.Fragment)// 协议版本fmt.Println("proto", r.Proto)fmt.Println("protomajor", r.ProtoMajor)fmt.Println("protominor", r.ProtoMinor)// HTTP请求的头域for k, v := range r.Header {for _, vv := range v {fmt.Println("header key:" + k + "  value:" + vv)}}// 判断是否multipart方式isMultipart := falsefor _, v := range r.Header["Content-Type"] {if strings.Index(v, "multipart/form-data") != -1 {isMultipart = true}}// 解析bodyif isMultipart == true {r.ParseMultipartForm(128)fmt.Println("解析方式:ParseMultipartForm")} else {r.ParseForm()fmt.Println("解析方式:ParseForm")}// body内容长度fmt.Println("ContentLength", r.ContentLength)// 是否在回复请求后关闭连接fmt.Println("Close", r.Close)// HOStfmt.Println("host", r.Host)// 该请求的来源地址fmt.Println("RemoteAddr", r.RemoteAddr)fmt.Fprintf(w, "hello, let's go!") //这个写入到w的是输出到客户端的
}func main() {http.HandleFunc("/", request)http.ListenAndServe(":8888", nil)
}

代码截图

在这里插入图片描述

总结

本套教程主要讲解Go Web开发的基础知识,特别是讲解了httprouter的用法以及本地化方法,比附上了完整的实战代码。

通过本套课程,能帮你入门Go Web开发,写一些简单的Web程序。

如果您需要完整的源码,打赏20元即可。

人生苦短,我用Python,我是您身边的Python私教~

http://www.hkea.cn/news/14575/

相关文章:

  • 中国公路建设招标网站某网站搜索引擎优化
  • 安徽省住房和建设执业资格注册中心网站百度账号注册
  • 网站建设基础百度自动搜索关键词软件
  • 中国建设银行网站登录不了服务营销策划方案
  • 静态网站的建设自己的网站怎么做seo
  • 狠狠做新网站爱站网关键词挖掘工具熊猫
  • 网站外链建设需要逐步进行适可优化即可推广方案应该有哪些方面
  • 各大网站主打文风北京seo人员
  • 企业网站建设推广实训报告网站友链查询源码
  • 网站皮肤样板站长工具站长之家
  • 我想看b站哪个平台可以免费打广告
  • 教育学校网站做成都关键词优化服务
  • 老网站不要了做新站需要怎么处理如何注册网址
  • 钟祥网站建设核心关键词举例
  • 做网站好吗百度资源搜索资源平台
  • 小榄做网站百度seo快速排名优化
  • 备案一个网站为什么需要域名搜索引擎优化seo方案
  • vps 网站 需要绑定域名吗青岛seo精灵
  • 产品介绍网站html源码网络推广公司哪家做得好
  • 网站 公安 也要备案吗青柠影院免费观看电视剧高清
  • ps毕业设计做网站界面免费制作logo的网站
  • 网站首页设计如何做google推广
  • 网站设置保存登录密码怎么取消郑州网站推广公司电话
  • 平面设计素材网站排名互动营销案例100
  • 我的网站为什么打不开seo指的是什么意思
  • 阿里网站年费续费怎么做分录广州谷歌seo公司
  • 百度推广关键词规划师免费的seo教程
  • p2p网上贷款网站建设方案.docx西安网站建设比较好的公司
  • 建设公司网站开发方案南京百度快速排名优化
  • 网站建设的作用有哪些方面网站建设方案书