win7 iis建立网站正邦网站建设 优帮云

bicheng/2026/1/22 17:47:07/文章来源:
win7 iis建立网站,正邦网站建设 优帮云,网页设计代码信件怎么写,网站开发的常用流程Context 上下文context.Context 是用来设置截止时间、同步信号#xff0c;传递请求相关值的结构体。 context.Context 定义了四个需要实现的方法#xff1a; Deadline: 返回 context.Context 被取消的时间。Done: 返回一个 Channel#xff0c;这个 Channel 会在当前工作完…Context 上下文context.Context 是用来设置截止时间、同步信号传递请求相关值的结构体。 context.Context 定义了四个需要实现的方法 Deadline: 返回 context.Context 被取消的时间。Done: 返回一个 Channel这个 Channel 会在当前工作完成或者上下文被取消后关闭多次调用 Done 方法会返回同一个 Channel。Err: 返回 context.Context 结束的原因它只会在 Done 方法对应的 Channel 关闭时返回非空的值。 如果 context.Context 被取消会返回 Canceled 错误。如果 context.Context 超时会返回 DeadlineExceeded 错误。 Value: 从 context.Context 中获取键对应的值对于同一个上下文来说多次调用 Value 并传入相同的 Key 会返回相同的结果该方法可以用来传递请求特定的数据。 type Context interface {Deadline() (deadline time.Time, ok bool)Done() -chan struct{}Err() errorValue(key any) any }设计原理 在 Goroutine 构成的树形结构中对信号进行同步以减少计算资源的浪费是 context.Context 的最大作用。Go 服务的每一个请求都是通过单独的 Goroutine 处理的HTTP/RPC 请求的处理器会启动新的 Goroutine 访问数据库和其他服务。 如下图所示图片来自《go设计与实现》我们可能会创建多个 Goroutine 来处理一次请求而 context.Context 的作用是在不同 Goroutine 之间同步请求特定数据、取消信号以及处理请求的截止日期。 下层 goroutine 通过监听上层 goroutine context 的 Done 方法同步取消。 func main() {ctx, cancel : context.WithTimeout(context.Background(), 1*time.Second)defer cancel()go handle(ctx, 500*time.Millisecond)select {case -ctx.Done():fmt.Println(main, ctx.Err())} } func handle(ctx context.Context, duration time.Duration) {select {case -ctx.Done():fmt.Println(handle, ctx.Err())case -time.After(duration):fmt.Println(process request with, duration)} }默认上下文 context 包中有两个默认的 context context.Background、context.TODO这两个方法都会返回预先初始化好的私有变量 background 和 todo它们会在同一个 Go 程序中被复用。 这两个私有变量都是通过 new(emptyCtx) 语句初始化的它们是指向私有结构体 context.emptyCtx 的指针这是最简单、最常用的上下文类型。 type emptyCtx int var (background new(emptyCtx)todo new(emptyCtx) ) func Background() Context {return background } func TODO() Context {return todo } func (*emptyCtx) Deadline() (deadline time.Time, ok bool) {return } func (*emptyCtx) Done() -chan struct{} {return nil } func (*emptyCtx) Err() error {return nil } func (*emptyCtx) Value(key any) any {return nil }context.Background和context.TODO 没有差别只是在使用和语义上不同 context.Background 是上下文的默认值所有其他的上下文都应该从它衍生出来。context.TODO 应该仅在不确定应该使用哪种上下文时使用。 这两个是顶级Context其他内置Context都是由它们派生出来的。 取消 context.WithCancel 函数能够从 context.Context 中衍生出一个新的子上下文并返回用于取消该上下文的函数。一旦我们执行返回的取消函数当前上下文以及它的子上下文都会被取消所有的 Goroutine 都会同步收到这一取消信号。 图片来自《go设计与实现》 func WithCancel(parent Context) (ctx Context, cancel CancelFunc) {if parent nil {panic(cannot create context from nil parent)}c : newCancelCtx(parent)propagateCancel(parent, c)return c, func() { c.cancel(true, Canceled) } }context.newCancelCtx 将传入的上下文包装成私有结构体 context.cancelCtx。context.propagateCancel 会构建父子上下文之间的关联当父上下文被取消时子上下文也会被取消。 重点是 propagateCancel: func propagateCancel(parent Context, child canceler) {done : parent.Done()if done nil {return // parent is never canceled}select {case -done:// parent is already canceledchild.cancel(false, parent.Err())returndefault:}if p, ok : parentCancelCtx(parent); ok {p.mu.Lock()if p.err ! nil {// parent has already been canceledchild.cancel(false, p.err)} else {if p.children nil {p.children make(map[canceler]struct{})}p.children[child] struct{}{}}p.mu.Unlock()} else {atomic.AddInt32(goroutines, 1)go func() {select {case -parent.Done():child.cancel(false, parent.Err())case -child.Done():}}()} }propagateCancel 与父上下文相关的三种不同情况 当 parent.Done() nil也就是 parent 不会触发取消事件时当前函数会直接返回。当 child 的继承链包含可以取消的上下文时会判断 parent 是否已经触发了取消信号。 如果已经被取消child 会立刻被取消如果没有被取消child 会被加入 parent 的 children 列表中等待 parent 释放取消信号。children列表是一个map。 当父上下文是开发者自定义的类型、实现了 context.Context 接口并在 Done() 方法中返回了非空的管道时。 运行一个新的 Goroutine 同时监听 parent.Done() 和 child.Done() 两个 Channel。在 parent.Done() 关闭时调用 child.cancel 取消子上下文。 context.cancelCtx 实现了了 context.cancelCtx.cancel该方法会关闭上下文中的 Channel 并向所有的子上下文同步取消信号。 func (c *cancelCtx) cancel(removeFromParent bool, err error) {if err nil {panic(context: internal error: missing cancel error)}c.mu.Lock()if c.err ! nil {c.mu.Unlock()return // already canceled}c.err errd, _ : c.done.Load().(chan struct{})if d nil {c.done.Store(closedchan)} else {close(d)}for child : range c.children {// NOTE: acquiring the childs lock while holding parents lock.child.cancel(false, err)}c.children nilc.mu.Unlock()if removeFromParent {removeChild(c.Context, c)} }cancel 会关闭上下文中的 Channel同时会遍历children同步取消所有子上下文。如果 removeFromParent 为 true会把上下文从父上下文去除。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/87779.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

微信小程序怎么制作网页网站优化个人工作室

今年前前后后也遇到了不少软件项目,想来想去还是拒绝了其中的大部分项目,当然也有一部分是客户拒绝我的,把这些经验教训分享给大家,一起探讨探讨,接了项目很容易深陷泥潭,累得死去活来不值得。拒绝软件项目…

如何推广网站话术工业设计网站外网

一、简介 在文件中统计出现最多个数的单词,将其输出到hdfs文件上。 二、例子 (1)实例描述 给出三个文件,每个文件中都若干个单词以空白符分隔,需要统计出现最多的单词 …

做动画相册在哪个网站好织梦网站管理安装

image 标签添加 mode"widthFix" <image mode"widthFix" :src"detailData.coverImageURL" />image 标签添加样式 image {width: 100%;height: auto; }

如何建开发手机网站婚纱网站怎么做

工业显示器是智能制造领域应用比较广泛的电子产品&#xff0c;它广泛应用于工厂产线以及各种配套设备&#xff0c;在很大程度上提升了工厂的生产效率。 工业显示器按触摸方式分&#xff0c;可以分为工业触摸显示器和非触摸工业显示器两种;按使用环境分&#xff0c;又可以分为室…

网站模板上传工具建设网站的服务费是指什么

资源限制 内存限制&#xff1a;256.0MB C/C时间限制&#xff1a;1.0s Java时间限制&#xff1a;3.0s Python时间限制&#xff1a;5.0s 问题描述 在一个n*n的棋盘中&#xff0c;每个格子中至多放置一个车&#xff0c;且要保证任何两个车都不能相互攻击&#xff0c;有多少中…

网站如何做导航条下拉菜单公司名字大全不重名

近日&#xff0c;阿里云人工智能平台PAI与华东师范大学数据科学与工程学院合作在自然语言处理顶级会议EMNLP2023上发表基于双曲空间和对比学习的垂直领域预训练语言模型。通过比较垂直领域和开放领域知识图谱数据结构的不同特性&#xff0c;发现在垂直领域的图谱结构具有全局稀…

网站建设珠江摩尔免费商标设计网

金刚石工具就是以金刚石为增强体&#xff0c;以金属或聚合物为基体的一类功能复合材料。金刚石工具已经成为当今公认的、唯一有效的硬脆非金属材料加工工具&#xff0c;比如&#xff0c;只有用金刚石刀具能加工超硬的陶瓷&#xff0c;尚无其他代用品。金刚石工具根据其用途的不…

东方建设集团有限公司网站工程施工合同免费版

写在前面 最近想复习一下数据结构与算法相关的内容&#xff0c;找一些题来做一做。如有更好思路&#xff0c;欢迎指正。 目录 写在前面一、场景描述二、具体步骤1.环境说明2.代码 写在后面 一、场景描述 给你单链表的头节点 head &#xff0c;请你反转链表&#xff0c;并返回反…

昆明网站建设去出发科技公司wordpress图片搬到聚合图床

unicloud 获取集合collection并请求数据库 在unicloud 云数据库概念及创建一个云数据库表并添加记录(数据)这一篇文章中,我介绍了unicloud数据库以及如何新建表数据 如果没看过的话可以去看看,然后在看这篇文章,因为这篇文章讲解的是如何获取云数据库的数据集合,要想获取,你得…

网站开发模板下载以营销型网站为主要营销方式的案例

技术介绍 本系统运用了JSP技术、SSM框架、B/S架构和myspl数据库 MySQL 介绍 MySQL是一种关系型的数据库管理系统&#xff0c;属于Oracle旗下的产品。MySQL的语言是非结构化的&#xff0c;使用的用户可以在数据上进行工作。这个数据库管理系统一经问世就受到了社会的广泛关注…

如何更新单位网站怎么做网站在网上能搜到你

目录 前言 蓝桥杯大赛历届真题&#xff08;点击查看&#xff09; 一、第十四届比赛题目 1.比赛原题 2.题目解读 1&#xff09;任务要求 2&#xff09;注意事项 二、任务实现 1.NE555读取时机的问题 1&#xff09;缩短计数时间 2&#xff09;实时读取 2.温度传感器读…

温州网站排名优化东莞软件开发公司

1、创建MyMutexLED目录 输入“cd /home/zgq/linux/Linux_Drivers/回车” 切换到“/home/zgq/linux/Linux_Drivers/”目录 输入“mkdir MyMutexLED回车”&#xff0c;创建“MyMutexLED”目录 输入“ls回车”查看“/home/zgq/linux/Linux_Drivers/”目录下的文件和文件夹 2、…

团购机票网站建设免费的网页制作软件

有一个环形的公路&#xff0c;上面共有n站&#xff0c;现在给定了顺时针第i站到第i1站之间的距离&#xff08;特殊的&#xff0c;也给出了第n站到第1站的距离&#xff09;&#xff0c;小*想着沿着公路第x站走到第y站&#xff0c;她想知道最短的距离是多少&#xff1f; 输入描述…

wordpress数据库和网站文件下载wordpress后台开发

一、emptyDir存储卷 当Pod被分配给节点时&#xff0c;首先创建emptyDir卷&#xff0c;并且只要该Pod在该节点上运行&#xff0c;该卷就会存在。正如卷的名字所述&#xff0c;它最初是空的。Pod 中的容器可以读取和写入emptyDir卷中的相同文件&#xff0c;尽管该卷可以挂载到每…

怎么建设宣传网站黄冈论坛遗爱湖

一、安装目录介绍 其中&#xff1a;bin 目录下&#xff1a; 二、配置信息目录结构 这是 IDEA 的各种配置的保存目录。这个设置目录有一个特性&#xff0c;就是你删除掉整个目录之后&#xff0c;重新启动 IntelliJ IDEA 会再自动帮你生成一个全新的默认配置&#xff0c;所以很多…

深圳市城乡住房和建设局网站wordpress加载速度

连更&#xff01;&#xff01; 0 Abstract 先前的姿势引导图像合成方法简单的将人的外观与目标姿势进行对齐&#xff0c;这容易导致过拟合&#xff0c;因为缺乏对source person image的high-level semantic understanding&#xff1b;文章开发了一种新的训练范式&#xff1a;…

国内移动端网站做的最好的福田网站设计

您现在可以使用 MinIO 批处理框架执行 S3 删除操作&#xff0c;以通过单个 API 请求删除大量对象。借助 MinIO 批处理框架&#xff0c;可以快速轻松地在 MinIO 部署中执行重复或批量操作&#xff0c;例如批量复制和批量密钥轮换。MinIO 批处理框架处理所有手动工作&#xff0c;…

石家庄站列车时刻表wordpress数据库注入

RevCol&#xff1a;解决深度学习信息从低层&#xff08;输入&#xff09;传递至高层&#xff08;输出&#xff09;的过程中&#xff0c;信息会逐层丢失问题 学习解耦表示可逆列网络&#xff08;RevCol&#xff09;子特征1&#xff1a;多级可逆单元子特征2&#xff1a;可逆列架构…

400网站建设推广如何开一个微信公众号

本实验讲述ArcGIS Pro中人工智能深度学习应用之–汽车检测。 文章目录 一、学习效果二、工具介绍三、案例实现四、注意事项一、学习效果 采用深度学习工具,可以很快速精准的识别汽车。 案例一: 案例二: 下面讲解GIS软件实现流程。 二、工具介绍 该案例演示的是ArcGIS Pro中…

sae做的网站备份别人做的网站自己想更新

文章目录 概要背景解决方法技术细节小结 概要 关于kafka重平衡问题在实践工作的应用 背景 重平衡包括以下几种场景: 消费者组内成员发生变更&#xff0c;这个变更包括了增加和减少消费者。注意这里的减少有很大的可能是被动的&#xff0c;就是某个消费者崩溃退出了主题的分…