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

在网上做国际快递淘宝网站做网站找哪个公司好

在网上做国际快递淘宝网站,做网站找哪个公司好,辽宁大连直客部七部电话,网站公司哪家好✍个人博客:Pandaconda-CSDN博客 📣专栏地址:http://t.csdnimg.cn/UWz06 📚专栏简介:在这个专栏中,我将会分享 Golang 面试中常见的面试题给大家~ ❤️如果有收获的话,欢迎点赞👍收藏…

 ✍个人博客:Pandaconda-CSDN博客

📣专栏地址:http://t.csdnimg.cn/UWz06

📚专栏简介:在这个专栏中,我将会分享 Golang 面试中常见的面试题给大家~
❤️如果有收获的话,欢迎点赞👍收藏📁,您的支持就是我创作的最大动力💪

25. G o goroutine 和线程的区别?

Go 的 goroutine 是一种轻量级的协程,与传统的操作系统线程相比,具有以下区别:

1、调度模型

Go 语言中的 goroutine 采用的是 M:N 调度模型,即 M 个 goroutine(协程)映射到 N 个系统线程上,这些线程由 Go 运行时进行调度。而传统的线程则是采用的 1:1 调度模型,即一个线程对应一个系统线程。

2、轻量级

Go 的 goroutine 比传统的线程更加轻量级,创建和销毁 goroutine 的代价比较小,且 goroutine 的初始栈大小只有几 KB,而线程的栈大小通常要大得多。

3、内存占用

由于 goroutine 的内存占用比线程更小,因此在同样的硬件资源下,Go 程序可以运行更多的 goroutine。

4、通信机制

在 Go 中,goroutine 之间的通信使用的是 Channel,Channel 可以避免传统线程中使用锁带来的复杂性和性能损失。

5、错误处理

在传统线程中,如果一个线程抛出异常或崩溃,那么整个进程都会被杀死。而在 Go 中,当一个 goroutine 抛出 panic 时,只有该 goroutine 会被终止,不会影响其他 goroutine 和整个进程。

综上所述,与传统的线程相比,Go 的 goroutine 更加轻量级,占用资源更少,拥有更好的并发性能和更容易处理错误。这也是 Go 语言在并发编程中的优势所在。

26. G o 如何查看正在执行的 goroutine 数量?

程序中引入 pprof pakage

在程序中引入 pprof package:

import _ "net/http/pprof"

程序中开启 HTTP 监听服务:

package main
import ("net/http"_ "net/http/pprof"
)
func main() {for i := 0; i < 100; i++ {go func() {select {}}()}go func() {http.ListenAndServe("localhost:6060", nil)}()select {}
}

分析 goroutine 文件

在命令行下执行:

go tool pprof -http=:1248 http://127.0.0.1:6060/debug/pprof/goroutine

会自动打开浏览器页面如下图所示:

  

 

在图中可以清晰的看到 goroutine 的数量以及调用关系,可以看到有 103 个 goroutine。

27. G o 如何控制并发的 goroutine 数量?

为什么要控制 goroutine 并发的数量?

在开发过程中,如果不对 goroutine 加以控制而进行滥用的话,可能会导致服务整体崩溃。比如耗尽系统资源导致程序崩溃,或者 CPU 使用率过高导致系统忙不过来。

用什么方法控制 goroutine 并发的数量?

 1. 有缓冲 channel

利用缓冲满时发送阻塞的特性。

package main
import ("fmt""runtime""time"
)
var wg = sync.WaitGroup{}
func main() {// 模拟用户请求数量requestCount := 10fmt.Println("goroutine_num", runtime.NumGoroutine())// 管道长度即最大并发数ch := make(chan bool, 3)for i := 0; i < requestCount; i++ {wg.Add(1)ch <- truego Read(ch, i)}wg.Wait()
}
func Read(ch chan bool, i int) {fmt.Printf("goroutine_num: %d, go func: %d", runtime.NumGoroutine(), i)<-chwg.Done()
}

输出结果:默认最多不超过 3(4-1)个 goroutine 并发执行。

goroutine_num 1
goroutine_num: 4, go func: 1
goroutine_num: 4, go func: 3
goroutine_num: 4, go func: 2
goroutine_num: 4, go func: 0
goroutine_num: 4, go func: 4
goroutine_num: 4, go func: 5
goroutine_num: 4, go func: 6
goroutine_num: 4, go func: 8
goroutine_num: 4, go func: 9
goroutine_num: 4, go func: 7

2. 无 缓冲 channel

任务发送和执行分离,指定消费者并发协程数。

package main
import ("fmt""runtime""sync"
)
var wg = sync.WaitGroup{}
func main() {// 模拟用户请求数量requestCount := 10fmt.Println("goroutine_num", runtime.NumGoroutine())ch := make(chan bool)for i := 0; i < 3; i++ {go Read(ch, i)}for i := 0; i < requestCount; i++ {wg.Add(1)ch <- true}wg.Wait()
}
func Read(ch chan bool, i int) {for _ = range ch {fmt.Printf("goroutine_num: %d, go func: %d", runtime.NumGoroutine(), i)wg.Done()}
}

http://www.shuangfujiaoyu.com/news/46416.html

相关文章:

  • 如何做生鲜配送网站生意baidu百度首页官网
  • 在安庆哪里可以做公司网站域名访问网站怎么进入
  • 为什么做的网站打开自动缩放石家庄关键词快速排名
  • 手机号交易网站源码百度推广优化师是什么
  • 楼凤网站怎么做的杭州seo培训
  • 网站用户注册页面怎么做沈阳百度seo关键词优化排名
  • 手机网站生成app客户端整合营销的概念
  • 个人soho要怎么做企业网站营销培训班
  • 做网站哪家公司好2024年4月新冠疫情结束了吗
  • 做网站和做电脑软件差别大吗宁波外贸网站推广优化
  • 塘厦企业网站推广公司百度账号登录入口官网
  • c 网站开发 vs2012网络营销平台排名
  • 制作网站首先做的工作海南百度总代理
  • 哪个网站财经做的最好关键词优化心得
  • 自己做网站需要什么软件下载做销售记住这十句口诀
  • ae有么有做gif的网站无代码网站开发平台
  • 做网站的前景百度广告运营
  • 汕头市php网站建设seo课程总结怎么写
  • 做国外夏令营的网站网络营销的四大基础理论
  • 东莞常平疫情seo智能优化软件
  • 企业平台网站制作360优化大师app下载
  • 南京网站排名软文推广哪个平台好
  • 电子商务书城网站建设方案关于进一步优化落实疫情防控措施
  • 家乡介绍网页设计短视频搜索优化
  • 中国疫情图片最新无忧seo博客
  • 网站推荐男生正能量2021天机seo
  • wordpress是建站工具 还是语言新网域名注册
  • 焦作建设网站哪家好在线推广
  • 网站开发的语言有什么软件门户网站怎么做
  • 暖通设计网站推荐杭州网站优化流程