如何做情趣网站池州网站制作优化

bicheng/2026/1/25 0:28:47/文章来源:
如何做情趣网站,池州网站制作优化,网站开发说明文档,大连做网站建设golang的协程和通道#xff0c;之前就看过了#xff0c;一直没有很好的理解#xff0c;所以一直也没记录#xff0c;今天看书#xff0c;看到有一个总结的章节#xff0c;里面记录了一些注意事项#xff0c;因此写个文档#xff0c;记录一下#xff0c;避免以后自己忘… golang的协程和通道之前就看过了一直没有很好的理解所以一直也没记录今天看书看到有一个总结的章节里面记录了一些注意事项因此写个文档记录一下避免以后自己忘了或者是找不见资料 顺便吐槽下公司的业务自己负责的业务能啥也不知道开发完了给他们上线了完事还问你这个为什么会这样这不是你要求的吗UAT的时候业务全程参加都看过了没问题才上线过了一个月尽然能忘得一干二净。 出于性能考虑的建议 实践经验表明为了使并行运算获得高于串行运算的效率在协程内部完成的工作量必须远远高于协程的创建和相互来回通信的开销。 出于性能考虑建议使用带缓存的通道 使用带缓存的通道可以很轻易成倍提高它的吞吐量某些场景其性能可以提高至 10 倍甚至更多。通过调整通道的容量甚至可以尝试着更进一步的优化其性能。 限制一个通道的数据数量并将它们封装成一个数组 如果使用通道传递大量单独的数据那么通道将变成性能瓶颈。然而将数据块打包封装成数组在接收端解压数据时性能可以提高至 10 倍。 现在创建一个带缓存的通道ch : make(chan type,buf) 1如何使用 for 或者 for-range 遍历一个通道尽量使用这种或者是跟select配合使用 这种其实就是一个for循环遍历通道但是golang的机制这里会自动监测通道是否关闭而不需要开发二次判断通道是否关闭 但是这里有个坑需要注意会有死锁的问题因为你的通道中没有数据的时候for range ch 会发生阻塞但是无法解除阻塞发生死锁 for v : range ch {// do something with v }2如何检测一个通道 ch 是否关闭 //read channel until it closes or error-condition for {if input, open : -ch; !open {// 这里!open就是表示通道已经被关了break跳出循环不从通道里面获取数据了break}fmt.Printf(%s, input) }3如何通过一个通道让主程序等待直到协程完成信号量模式如果希望程序一直阻塞在匿名函数中省略 ch - 1 即可。 ch : make(chan int) // Allocate a channel. // Start something in a goroutine; when it completes, signal on the channel. go func() {// doSomethingch - 1 // Send a signal; value does not matter. }() doSomethingElseForAWhile() -ch // Wait for goroutine to finish; discard sent value.func compute(ch chan int){ch - someComputation() // when it completes, signal on the channel. }func main(){ch : make(chan int) // allocate a channel.go compute(ch) // start something in a goroutinesdoSomethingElseForAWhile()result : - ch }4通道的工厂模板以下函数是一个通道工厂启动一个匿名函数作为协程以生产通道 func pump() chan int {ch : make(chan int)go func() {for i : 0; ; i {ch - i}}()return ch }5通道迭代器模板 func (c *container) Iter () - chan item {ch : make(chan item)go func () {for i: 0; i c.Len(); i{ // or use a for-range loopch - c.items[i]}} ()return ch }for x : range container.Iter() { ... }6如何限制并发处理请求的数量 package mainconst MAXREQS 50var sem make(chan int, MAXREQS)type Request struct {a, b intreplyc chan int }func process(r *Request) {// do something }func handle(r *Request) {sem - 1 // doesnt matter what we put in itprocess(r)-sem // one empty place in the buffer: the next request can start }func server(service chan *Request) {for {request : -servicego handle(request)} }func main() {service : make(chan *Request)go server(service) }7如何在多核CPU上实现并行计算 func DoAll(){sem : make(chan int, NCPU) // Buffering optional but sensiblefor i : 0; i NCPU; i {go DoPart(sem)}// Drain the channel sem, waiting for NCPU tasks to completefor i : 0; i NCPU; i {-sem // wait for one task to complete}// All done. }func DoPart(sem chan int) {// do the part of the computationsem -1 // signal that this piece is done }func main() {runtime.GOMAXPROCS(NCPU) // runtime.GOMAXPROCS NCPUDoAll() }8如何终止一个协程runtime.Goexit() 9简单的超时模板 timeout : make(chan bool, 1) go func() {time.Sleep(1e9) // one second timeout - true }() select {case -ch:// a read from ch has occurredcase -timeout:// the read from ch has timed out }10如何使用输入通道和输出通道代替锁 func Worker(in, out chan *Task) {for {t : -inprocess(t)out - t} }11如何在同步调用运行时间过长时将之丢弃 // 注意缓冲大小设置为 1 是必要的可以避免协程死锁以及确保超时的通道可以被垃圾回收。 // 此外需要注意在有多个 case 符合条件时 select 对 case 的选择是伪随机的 // 如果代码稍作修改如下 // 则 select 语句可能不会在定时器超时信号到来时立刻选中 time.After(timeoutNs) 对应的 case // 因此协程可能不会严格按照定时器设置的时间结束。 ch : make(chan int, 1) go func() { for { ch - 1 } } () L: for {select {case -ch:// do somethingcase -time.After(timeoutNs):// call timed outbreak L} }12如何在通道中使用计时器和定时器定时器 (Timer) 结构体和计时器 (Ticker) 结构体 package mainimport (fmttime )func main() {tick : time.Tick(1e8)boom : time.After(5e8)for {select {case -tick:fmt.Println(tick.)case -boom:fmt.Println(BOOM!)returndefault:fmt.Println( .)time.Sleep(5e7)}} }

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

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

相关文章

建站网哪个好哈尔滨建设银行网站首页

推荐阅读100套最新项目 最新ssmjava项目文档视频演示可运行源码分享 最新jspjava项目文档视频演示可运行源码分享 最新Spring Boot项目文档视频演示可运行源码分享 目录 前台功能效果图 骑手功能模块 商家功能模块 管理员功能登录前台功能效果图 用户功能模块 系统功能设…

毕业设计代写网站wordpress 工单插件

文章目录 应用需求场景记录过程1. 准备数据2. 给数据根据姓名分组,加上序号.3. 根据name分组成map结构4. 拆分map 应用需求场景 准备的数据是这样的: 需要将每个人的成绩显示在一行上,需要的结果如下,但是我的情况是课程有非常…

设计网站定制公司百度收录申请

我们知道依赖注入(DI)是一种实现对象及其协作者或依赖关系之间松散耦合的技术。 ASP.NET Core包含一个简单的内建容器来支持构造器注入。我们试图将DI的最佳实践带到.NET Core应用程序中,这表现在以下方面:构造器注入注册组件DI i…

三亚学做网站培训wordpress 拍卖插件

题目描述 输入n个整数&#xff0c;将其中的奇数和偶数分别显示出来&#xff08;1 < n < 30&#xff09; 输入 第一行&#xff1a;一个整数n。第二行&#xff1a;n个空格隔开的整数。 输出 第一行&#xff1a;若干个奇数。第二行&#xff1a;若干个偶数。&#xff08…

自助建站免费申请徐州网站制作怎么做

1、Service的种类 按运行地点分类&#xff1a; 类别区别 优点缺点 应用本地服务&#xff08;Local&#xff09;该服务依附在主进程上&#xff0c; 服务依附在主进程上而不是独立的进程&#xff0c;这样在一定程度上节约了资源&#xff0c;另外Local服务因为是在同一进程因此不…

做网站快速排名软件wordpress 插件反复安装

安装electron时候&#xff0c;出现RequestError:socket hang up这样的错误&#xff0c;找了半天很多方式都是用旧淘宝源&#xff0c;导致根本安装不上去。 在项目的根目录下创建.npmrc文件&#xff0c;添加以下内容 # registryhttps://mirrors.huaweicloud.com/repository/np…

做静态网站工资多少wordpress 薄荷主题

射频前端芯片在模拟芯片中&#xff0c;属于进入门槛较高、设计难度较大的细分领域&#xff0c;由于国内射频前端芯片行业起步较晚&#xff0c;其市场份额主要被外企所占据&#xff0c;而在国产化浪潮的推动下&#xff0c;上游厂商的射频前端产品及技术逐渐具备领先的竞争优势。…

seo移动网站页面怎么做电子商务适合女生学吗

最近很多朋友留言问&#xff0c;ufs3.1是什么&#xff0c;很重要吗&#xff1f;下面就由小编来给大家介绍一下手机上的ufs3.1是什么&#xff01;ufs是高端安卓手机&#xff0c;常用的储存协议&#xff0c;就好像我们电脑里的固态硬盘一样&#xff0c;速度越快&#xff0c;打开软…

网站修改建议优设网app

这四个概念分别代表不同的工具和框架&#xff0c;它们的主要区别如下&#xff1a; Simple App&#xff1a;这通常指的是一个基础的、最小化的应用程序。它可能只包含最基础的功能&#xff0c;如用户界面、一些简单的交互等。这种应用程序通常用于学习和实验目的&#xff0c;或者…

宁波高新区做网站的公司网站建设找哪一家好

客户端注册临时实例&#xff0c;GRPC处理 客户端服务发现 及订阅处理

jw网站设计wordpress 调用文章 分页

前言 我们想一个问题&#xff0c;我们写的C语言代码都是文本信息&#xff0c;电脑能直接执行c语言代码吗&#xff1f;肯定不能啊&#xff0c;计算机能执行的是二进制指令&#xff0c;所以将C语言转化为二进制指令需要一段过程&#xff0c;这篇博客讲一下编译与链接&#xff0c;…

中国建设银行网官方网站焦作建设银行网站

int maxMemory (int) (Runtime.getRuntime().maxMemory() / 1024); Log.d("TAG", "Max memory is " maxMemory "KB"); 转载于:https://www.cnblogs.com/coderwjq/p/6501639.html

国际国内新闻最新消息今天seo经验是什么

目录 一、AlexNet卷积神经网络结构模型 1、数据库ImageNet 2、AlexNet第一层卷积层 二、AlexNet卷积神经网络的改进 1、非线性变化函数的改变——ReLU 2、最大池化&#xff08;Max Pooling&#xff09;概念的提出——卷积神经网络通用 1&#xff09;池化层 2&#xff0…

出售家教网站模板沈阳人流

咨询区 Stefan Steiger我有一个 Console 程序&#xff0c;它主要用来重启 IIS 以及删除临时文件&#xff0c;我现在期望它启动后隐藏自身&#xff0c;我在网上找了下面这段代码做了隐藏。static void Main(string[] args) {var currentProcess System.Diagnostics.Process.Get…

德阳市做网站店铺设计属于什么设计

1 从输⼊ URL 到⻚⾯展示到底发⽣了什么&#xff1f; 1. 先检查浏览器缓存⾥是否有缓存该资源&#xff0c;如果有直接返回&#xff1b;如果没有进⼊下⼀ 步⽹络请求。 2. ⽹络请求前&#xff0c;进⾏ DNS 解析 &#xff0c;以获取请求域名的 IP地址 。 3. 浏览器与服务器…

怎么做几个版面的网站做一个宣传网站要多少钱

题目 输入一个不含重复数字的数据集合&#xff0c;请找出它的所有子集。例如&#xff0c;数据集合[1&#xff0c;2]有4个子集&#xff0c;分别是[]、[1]、[2]和[1&#xff0c;2]。 分析 如果集合中包含n个元素&#xff0c;那么生成子集可以分为n步&#xff0c;每一步从集合中…

广州易网外贸网站建设成都网络维护

软考高级系统架构设计师系列论文真题六:论信息系统的安全性与保密性设计 一、论信息系统的安全性与保密性设计二、找准核心论点三、理论素材准备四、精品范文赏析1.摘要2.正文3.总结软考高级系统架构设计师系列论文之:百篇软考高级架构设计师论文范文软考高级系统架构设计师系…

重庆seo网站策划网站建设厃金手指花总十一

组了一套&#xff0c;不知道行不行 windows11GPURTX 4050python3.7.12tensorflow-gpu1.15.0cudatoolkit10.0.130cudnn7.6.5Keras2.3.1

模板网站建站代运营网站

项目地址&#xff1a; https://github.com/chatchat-space/Langchain-Chatchat 快速上手 1. 环境配置 首先&#xff0c;确保你的机器安装了 Python 3.8 - 3.11 (我们强烈推荐使用 Python3.11)。 $ python --version Python 3.11.7接着&#xff0c;创建一个虚拟环境&#xff…

wordpress网站mip改造静态网站制作模板

题解:LeetCode题解 解题思想&#xff1a; 通过创建辅助指针来解决该问题 当当前节点cur不为空的时候&#xff0c;创建辅助节点dummy&#xff0c;使其一直作为每一层的第一个节点的前一个节点。 创建辅助指针pre&#xff0c;pre初始指向dummy&#xff0c;之后通过pre来填充当前层…