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

有什么网站可以做电子版邀请函/南宁seo公司哪家好

有什么网站可以做电子版邀请函,南宁seo公司哪家好,昆明疫情最新消息今天又封了,怎么在京东做网站文章目录 用 channel 作为并发小容器channel 的遍历channel 导致的死锁问题用 channel 传递信号用 channel 并行处理文件用channel 限制接口的并发请求量用 channel 限制协程的总数量 用 channel 作为并发小容器 注意这里的 ok 如果为 false,表示此时不仅channel为空…

文章目录

    • 用 channel 作为并发小容器
    • channel 的遍历
    • channel 导致的死锁问题
    • 用 channel 传递信号
    • 用 channel 并行处理文件
    • 用channel 限制接口的并发请求量
    • 用 channel 限制协程的总数量

用 channel 作为并发小容器

在这里插入图片描述
在这里插入图片描述

  • 注意这里的 ok 如果为 false,表示此时不仅channel为空,而且channel已经被关闭了

channel 的遍历

在这里插入图片描述

  • 注意,遍历会使头指针往后移,相当于取走元素
  • 如果 close channel 注释掉,也不会报错,但是会阻塞,导致输出bye bye这一句代码得不到执行
  • 遍历的另外一种写法

在这里插入图片描述

channel 导致的死锁问题

  • 上面的main方法是等3秒钟结束main协程,更好的方法是使用waitGroup

在这里插入图片描述
在这里插入图片描述

  • 如果 close channel 注释掉,程序执行的时候会报错 fatal error: all goroutines are asleep - deadlock!
  • travese和main都阻塞了

用 channel 传递信号

  • 可以用向channel中传递信号,代替waitGroup,优雅地等子协程结束

在这里插入图片描述

  • struct{} 空结构体类型,空结构体实例 struct{}{}
  • 空结构体在go语言里是一种特殊的结构体,go语言通过一个统一的引用变量来表示所有的空结构体,而且不占用任何的内存空间
  • 使用空结构体,语义会更加明确且不占内存

在这里插入图片描述

  • 在 Go 语言(Golang)中,reflect 是一个非常强大的包,提供了 运行时反射机制,可以在运行时检查变量的类型、获取或设置变量的值。
// 获取类型和值var x int = 42
t := reflect.TypeOf(x) // reflect.Type
v := reflect.ValueOf(x) // reflect.Valuefmt.Println("类型:", t)      // int
fmt.Println("值:", v.Int()) // 42
// 修改变量的值(需要传指针)var x int = 10
v := reflect.ValueOf(&x)           // 注意要传指针
v.Elem().SetInt(100)               // 修改值
fmt.Println("x的新值:", x)         // 100
// 检查变量类型func checkType(i interface{}) {t := reflect.TypeOf(i)switch t.Kind() {case reflect.Int:fmt.Println("是整数")case reflect.String:fmt.Println("是字符串")default:fmt.Println("其他类型")}
}
// 结构体字段操作type Person struct {Name stringAge  int
}p := Person{"Tom", 30}
v := reflect.ValueOf(p)
t := reflect.TypeOf(p)for i := 0; i < t.NumField(); i++ {field := t.Field(i)value := v.Field(i)fmt.Printf("%s: %v\n", field.Name, value)
}

用 channel 并行处理文件

  • channel 不仅可以当作数据容器使用,也可以当作信号容器来使用
  • 下面这个例子是要把多个txt文件合并为一个txt文件,一个常规的思路就是我们顺序读取文件,每读取一行就把这一行对应地写入到新的文件里面去,但是io操作很消耗时间,且三个文件毫不相关,怎么加速?
  • 考虑三个goroutine并行读,且往一个buffer channel写数据,由一个goroutinue往buffer channel里读数据写入文件,这样可以协调读者和写者的速度不匹配问题

在这里插入图片描述

在这里插入图片描述

  • 初始化pc_sync里面有3个元素,协程完成后会从pc_sync取走一个元素,当所有协程结束后,pc_sync为空

在这里插入图片描述
在这里插入图片描述

用channel 限制接口的并发请求量

  • 有时候我们需要限制微服务接口的并发请求度,因为有些接口会涉及到大量的cpu计算或者是内存开销,如果瞬间并发度太大的话,服务器负载会很高
    在这里插入图片描述
  • 但是如果限制了的话必然会牺牲用户的体验
  • 用channel的阻塞机制实现

在这里插入图片描述

用 channel 限制协程的总数量

  • 需要封装,对于所有的协程创建都去走一个统一的入口

在这里插入图片描述

  • ticker 实际上就是每隔一段时间会给ticker.C中放入一个元素

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

http://www.whsansanxincailiao.cn/news/32048040.html

相关文章:

  • 商城网站开发周期/网站页面优化内容包括哪些
  • 网站建设与网页设计实训报告/房地产估价师考试
  • 网络教学平台登录/湖南企业seo优化推荐
  • 国外app界面设计网站/深圳网络营销平台
  • 南昌市公司网站建设/在哪里找专业推广团队
  • 宣武网站开发/电脑优化设置
  • 做网站和推广找哪家好/windows优化大师手机版
  • 怎样做约票的网站意思/微信小程序开发一个多少钱啊
  • 苏州建站公司哪个济南兴田德润实惠吗/新媒体seo培训
  • 在线网站做成app/广州网站排名优化报价
  • 设计之家微博/seopeixun com cn
  • 帝国cms手机网站教程/阿亮seo技术顾问
  • 花生壳一个端口做网站/产品营销方案
  • 开发一个网站平台多少钱/百度指数是搜索量吗
  • 灰产项目网/厦门百度seo
  • 塘厦网站建设/舆情分析报告
  • 公司网站优点/游戏推广话术
  • 住房和城乡建设部网站加装电梯/网课培训机构排名前十
  • 标准企业网站开发合同/模板建站哪里有
  • 网站项目评价/百度关键词搜索技巧
  • 江苏建筑工程网/域名年龄对seo的影响
  • 无锡网站建设公司/客服外包平台
  • 商丘网站建设有限公司/嘉兴网站建设制作
  • 网站开发合同书/企业培训有哪些方面
  • 网站 为何要 备案/百度导航最新版本下载安装
  • wordpress paypal转账/洛阳seo网站
  • 建设网站服务器选择/企业网站页面设计
  • 网站建设 开发票/全网关键词指数查询
  • 花生壳做网站缺点/软文网站模板
  • 温州网站制作价格/怎样精选关键词进行网络搜索