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

上海网站开发公司外包做网站需要一些什么工具

上海网站开发公司外包,做网站需要一些什么工具,WordPress推荐主机配置,计算机网站建设策划书是什么?为什么? context时goroutine之间传递上下文消息,包括信号取消,储存数据。 为什么? Go通常写后端服务,启动一个HTTP请求会启动多个goroutine,可以共享token数据。 或者处理时间长,通过停止信号关联…

是什么?为什么?

context时goroutine之间传递上下文消息,包括信号取消,储存数据。

为什么?
Go通常写后端服务,启动一个HTTP请求会启动多个goroutine,可以共享token数据。

或者处理时间长,通过停止信号关联goroutine退出。

怎么用?共享数据,定时取消。

使用context共享数据  

// 使用context在不同goroutine中共享数据
func main() {ctx := context.Background() //初始化一个contextprocess(ctx)ctx = context.WithValue(ctx, "traceId", "5213") //给context添加数据process(ctx)
}func process(ctx context.Context) { // 在函数中传递contexttraceId, ok := ctx.Value("traceId").(string) // 获取context值if ok {fmt.Printf("process over. trace_id=%s\n", traceId)} else {fmt.Printf("process over. no trace_id\n")}
}
// 现实场景中可能是从一个 HTTP 请求中获取到的 Request-ID。
// requestIDKey 用作在 context 中设置和获取请求 ID 的键
// 定义一个特殊的类型可以避免在不同的包之间使用 context 时发生键的冲突
type contextKey stringconst requestIDKey contextKey = "requestID"// WithRequestID 是一个中间件,它将请求ID从请求头中提取出来,
// 然后将这个ID添加到当前请求的context中。
func WithRequestID(next http.Handler) http.Handler {return http.HandlerFunc(func(rw http.ResponseWriter, req *http.Request) {// 从请求头中获取请求IDreqID := req.Header.Get("X-Request-ID")// 使用context.WithValue创建一个新的context,// 其中包含了从请求头中提取出来的请求ID。// requestIDKey是用作在context中设置和获取请求ID的键。ctx := context.WithValue(req.Context(), requestIDKey, reqID)// 使用req.WithContext创建一个新的请求,// 其context已经包含了请求ID。req = req.WithContext(ctx)// 调用下一个处理器(或中间件),// 并将更新了context的请求传递给它。next.ServeHTTP(rw, req)})
}// 从Context中获取数据
func GetRequestID(ctx context.Context) string {return ctx.Value(requestIDKey).(string) // 从Context中获取Request-ID
}// 中间件处理函数
func Handle(rw http.ResponseWriter, req *http.Request) {reqID := GetRequestID(req.Context()) //从请求中的Context中获取Request-IDrw.Write([]byte(reqID))fmt.Println(reqID)
}
func main() {//type HandlerFunc func(ResponseWriter, *Request) 把func(ResponseWriter, *Request)函数转换成HandlerFunc类型实现了Handler接口handler := WithRequestID(http.HandlerFunc(Handle))err := http.ListenAndServe("127.0.0.1:8000", handler)if err != nil {fmt.Println("服务器启动失败")}
}

使用context定时取消 

// 使用context定时取消 
func main() {ctx, cancel := context.WithTimeout(context.Background(), 1*time.Second)defer cancel()ids := fetchWebData(ctx)fmt.Println(ids)}// 获取web数据
func fetchWebData(ctx context.Context) (res string) {select {case <-time.After(3 * time.Second):return "张三"case <-ctx.Done():return "超时"}
}

http://www.yayakq.cn/news/213738/

相关文章:

  • 企业做的网站开发费如何入帐网站建设合同简单
  • pc网站运营部门子网站建设领导小组
  • 具有价值的做pc端网站河南省百城建设提质工程官网网站
  • 建站模板wordpress制作软件的公司叫什么
  • 正规企业网站开发使用方法现在互联网有什么平台可以做
  • 上海做家纺的公司网站wordpress调整菜单栏距离
  • 做百度推广一定要有网站吗wordpress主题商品展示
  • 网站导航栏下拉菜单做视频网站玩什么配置
  • 网站做压测商城网站建设都需要多少钱
  • 网站建设相关问题企业名录联系电话
  • 西安网站制作首页石家庄酒店网站建设
  • 电子商务网站推广的方式有哪些百度域名地址
  • 企业网站新闻设计WordPress微博客主题
  • 做模具五金都是用的那个网站外贸展示型网站建设
  • 红色大气网站模板wordpress 媒体库设置
  • 重点实验室网站建设方案wordpress 页面归类
  • 用word做网站首页wordpress柒比贰主题破解版
  • 外部调用wordpress 热门文章西安seo优化顾问
  • 横沥镇仿做网站深圳品牌做网站公司
  • 记事本代码做网站钱网站制作
  • 注重网站内容维护软件推广app
  • 轴承外贸网站怎么做怎么进网站
  • 网站标题能改吗网站开发配置
  • 专业做商铺的网站企业宽带解决方案
  • php网站开发具体的参考文献企业网站的宣传功能体现在().
  • react怎么做pc网站搜索引擎优化策略有哪些
  • 衣服网站模板简述跨境电商网站的平台建设
  • 一起做玩具网站电子工程师在哪里报名
  • 建立个人网站视频教程wordpress的友情链设置
  • 创建官方网站汽车网站建设规划书