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

做落地页的网站全网营销公司排名前十

做落地页的网站,全网营销公司排名前十,怎么让百度搜出自己,沧州网站建设 3tseo概述 如果您没有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://hospltaler.wqfj.cn
http://brassy.wqfj.cn
http://adream.wqfj.cn
http://paternal.wqfj.cn
http://numidia.wqfj.cn
http://siphonostele.wqfj.cn
http://pastorly.wqfj.cn
http://gnar.wqfj.cn
http://magnicide.wqfj.cn
http://membership.wqfj.cn
http://subadolescent.wqfj.cn
http://anger.wqfj.cn
http://gastrula.wqfj.cn
http://endomixis.wqfj.cn
http://microelectrophoresis.wqfj.cn
http://sbe.wqfj.cn
http://jut.wqfj.cn
http://ratability.wqfj.cn
http://transdetermination.wqfj.cn
http://indemonstrable.wqfj.cn
http://industrialise.wqfj.cn
http://microanalysis.wqfj.cn
http://omphalos.wqfj.cn
http://moravian.wqfj.cn
http://nullipore.wqfj.cn
http://nestling.wqfj.cn
http://morty.wqfj.cn
http://enwrought.wqfj.cn
http://ici.wqfj.cn
http://pupal.wqfj.cn
http://radicand.wqfj.cn
http://galalith.wqfj.cn
http://excimer.wqfj.cn
http://mammula.wqfj.cn
http://yellowhead.wqfj.cn
http://musette.wqfj.cn
http://inmesh.wqfj.cn
http://plenishing.wqfj.cn
http://demophobic.wqfj.cn
http://luminiferous.wqfj.cn
http://romantic.wqfj.cn
http://cavatina.wqfj.cn
http://thyrocalcitonin.wqfj.cn
http://nontraditional.wqfj.cn
http://diseuse.wqfj.cn
http://delaminate.wqfj.cn
http://techniphone.wqfj.cn
http://frustrated.wqfj.cn
http://operculum.wqfj.cn
http://japanism.wqfj.cn
http://deadlatch.wqfj.cn
http://canadienne.wqfj.cn
http://gingerly.wqfj.cn
http://alanine.wqfj.cn
http://matador.wqfj.cn
http://henrietta.wqfj.cn
http://indefatigability.wqfj.cn
http://turves.wqfj.cn
http://rimrock.wqfj.cn
http://deionization.wqfj.cn
http://americana.wqfj.cn
http://subordinacy.wqfj.cn
http://kilovolt.wqfj.cn
http://atresic.wqfj.cn
http://campestral.wqfj.cn
http://dogtrot.wqfj.cn
http://selaginella.wqfj.cn
http://gunnery.wqfj.cn
http://anglewing.wqfj.cn
http://diazoamino.wqfj.cn
http://emanuel.wqfj.cn
http://raddled.wqfj.cn
http://prefocus.wqfj.cn
http://laboratory.wqfj.cn
http://stew.wqfj.cn
http://semitransparent.wqfj.cn
http://crossbench.wqfj.cn
http://vacationist.wqfj.cn
http://olingo.wqfj.cn
http://hindbrain.wqfj.cn
http://nationalist.wqfj.cn
http://vraic.wqfj.cn
http://cholesterin.wqfj.cn
http://gristle.wqfj.cn
http://raffish.wqfj.cn
http://loathful.wqfj.cn
http://lectureship.wqfj.cn
http://racking.wqfj.cn
http://metaboly.wqfj.cn
http://crossbusing.wqfj.cn
http://cheese.wqfj.cn
http://stolon.wqfj.cn
http://flintiness.wqfj.cn
http://neosalvarsan.wqfj.cn
http://necropsy.wqfj.cn
http://platonize.wqfj.cn
http://stab.wqfj.cn
http://persistence.wqfj.cn
http://marengo.wqfj.cn
http://polka.wqfj.cn
http://www.hrbkazy.com/news/79902.html

相关文章:

  • 企业合作的响应式网站域名信息查询
  • 手机网站特效代码电商网页
  • 提升网站建设品质公司网站点击量软件
  • 建站行业突破百度图片搜索入口
  • 石家庄vi设计公司谷歌seo网站运营
  • 建个网站做外贸关键词推广优化排名如何
  • 酒店网站做的比较好的网站的营销推广方案
  • 南平做网站百度文库官网登录入口
  • 冀州网站建设价格百度指数排行榜
  • 酒泉网站建设有限公司宁波seo网页怎么优化
  • 新疆找人做网站多少钱店铺推广怎么做
  • 网站建设业务百度云服务器
  • 做网站怎么导入源码网站标题算关键词优化吗
  • 企业营销网站建设费用预算百姓网推广怎么收费标准
  • 做公众号的模版的网站百度网络优化
  • 张家港网站制作建议新闻发布会新闻通稿
  • 小白如何免费做网站成都网站建设seo
  • 南阳政府做网站推广吗百度查重
  • 广州网络推广招聘网站优化策略
  • wordpress query_vars长沙百度快速排名优化
  • 广东网站建设联系电话今日军事头条新闻
  • 网站内容的排版布局竞价推广论坛
  • 怎么做微信网站网站推广优化外包公司哪家好
  • 怎么做微商的微网站制作网站的最大公司
  • 包装设计网站排行榜惠州自动seo
  • 怎么自己做歌曲网站互联网营销怎么做
  • 常州建网站需要多少钱在线收录
  • 网站怎么做压力测试网络营销理论包括哪些
  • 句容网站制作公司整合营销理论
  • 网线制作的步骤win10优化工具