WG
  • 2024-09-17go多线程
    1、简单使用(这个执行完成,如果进程执行比较久,这里不会等待它们结束)packagemainimport"time"funcmain(){ gofunc(){ println("Hello,World!") }() time.Sleep(1*time.Second)}2、wg.Add(数量)使用,这个会等待,直到全部完成funcmain(){wg:=sync.
  • 2024-09-14一个小例子,给你讲透典型的 Go 并发操作
    如果你有一个任务可以分解成多个子任务进行处理,同时每个子任务没有先后执行顺序的限制,等到全部子任务执行完毕后,再进行下一步处理。这时每个子任务的执行可以并发处理,这种情景下适合使用sync.WaitGroup。虽然sync.WaitGroup使用起来比较简单,但是一不留神很有可能踩到坑里。sync.
  • 2024-09-13常见的并非模型
    在并行编程中,处理循环迭代时常用的并发模型有几种:WorkerPool(工作池):描述:创建固定数量的工作goroutine,这些goroutine从共享的任务队列中获取任务并执行。优点:控制并发量,避免过多goroutine导致资源耗尽。示例:packagemainimport("fmt""sync")
  • 2024-09-12golang 中的 sync.WaitGroup
    sync.WaitGroup是Go标准库中的一个同步原语,用于协调多个goroutine的执行,确保它们在主线程或其他goroutine继续执行之前完成任务。sync.WaitGroup的用法1.创建WaitGroup实例在开始goroutine执行之前,需要创建一个WaitGroup实例。这个实例将用于跟踪正在运行的goro
  • 2024-09-09Python与Go在AIGC领域的应用:比较与分析
    1.引言AIGC(ArtificialIntelligenceGeneratedContent,人工智能生成内容)近年来在图像生成、自然语言处理、代码生成等多个领域取得了重大进展。无论是文本生成、图像创作,还是自动代码生成,AIGC都在推动内容创作进入一个全新的高度。Python凭借其简洁的语法和丰富的机器学习、深度学
  • 2024-09-08一个小例子,给你讲透典型的 Go 并发操作
    一个小例子,给你讲透典型的Go并发操作原创 訢亮 程序员新亮  2024年09月08日16:57 天津 听全文程序员新亮GitHub9K+Star|技术交流分享206篇原创内容公众号如果你有一个任务可以分解成多个子任务进行处理,同时每个子任务没有先后执行顺序的限制
  • 2024-08-30golang使用http客户端 多个协程同时请求接口
    packagemainimport( "encoding/json" "fmt" "io" "net/http" "net/url" "sync")typeApiResponsestruct{ Codeint`json:"code"` Msgstring`json:"msg&qu
  • 2024-08-05wireguard 安装配置
    1、安装sudoapt-getinstallwireguard2、生成私钥和公钥cd/etc/wireguardumask077wggenkey|teeserver_privatekey|wgpubkey>server_publickeywggenkey|teeclient_privatekey|wgpubkey>client_publickey3、开启内核IP转发echo"net.ipv4.ip_for
  • 2024-08-01wireguard安装和使用
    目录ServerInstall&ConfigUbuntu20.0.4installwireguard生成私钥&公钥开启内核IP转发配置文件启动&停止wg-quicksystemctlClientInstall&Config下载ConfigmacOSServerInstall&ConfigUbuntu20.0.4installwireguardsudoaptinstallwireguard生成私钥&公钥Wir
  • 2024-07-29【Golang 面试 - 进阶题】每日 3 题(三)
    ✍个人博客:Pandaconda-CSDN博客
  • 2024-07-24golang channel 和 mutex 及原子操作 用于并发控制的性能对比
    场景:对同个数加10w次,看耗费时间,这里没有用benchmark测试,在意的请略过。以下是测试代码:packagemainimport( "fmt" "sync" "sync/atomic" "testing" "time")funcTestCount(t*testing.T){ varcntint varwgsync.WaitGroup num
  • 2024-07-21智普ai的并发调用-----go编写
    //https://github.com/zhangbo2008/Concurrency_zhipuAI_callpackagemainimport( "bytes" "encoding/json" "fmt" "io" "net/http" "sync" "time")varzhipuapikey="xxxxxxxxxx
  • 2024-07-13计算一组整数的平方,并打印出来
    packagemainimport("fmt""sync")funcsquare(test*sync.WaitGroup,nint){//使用sync.WaitGroup来等待所有goroutine完成defertest.Done()//确保在square函数结束时减少WaitGroup的计数器值fmt.Printf("平方数:%d\n",n
  • 2024-07-08为啥 两个线程同时执行 ++i,可能会导致其中一个线程的自增操作被覆盖
    这是一个典型的并发编程问题,涉及到线程的同步和共享资源的访问问题。让我们详细来看一下为什么会这样:自增操作的细节++i 看起来是一个简单的操作,但实际上它包含了多个步骤:读取变量 i 的当前值。将读取到的值加1。将结果写回变量 i。在单线程环境中,这些步骤会顺序执
  • 2024-06-20golang 爬虫修炼02 ---协程、互斥锁、读写锁、waitgroup
    协程程序:为了完成特定任务,使用某种语言编写的一组指令的集合,是一段静态的代码进程:是程序的一次执行过程。正在运行的一个程序,进程作为资源分配的单位,在内存中会为每个进程分配不同的内存区域。进程是动态的,有产生、存在、消亡的过程线程:进程可进一步细分为线程,是一个程序
  • 2024-06-18Go并发相关
    map是并发安全的吗?首先我们写一段程序验证一下,创建两个goroutine,同时对一个map进行写操作,看看会发生什么吧!funcmain(){m:=make(map[string]int)m["foo"]=1varwgsync.WaitGroupwg.Add(2)gofunc(){fori:=0;i<1000;i++{
  • 2024-06-02Go语言之goroutine + channel 计算素数
    计算素数通道协程之间的关系并发的俩种思想:第一个通过共享内存,需要锁来保证并发安全。第二个通过通信来。go语言通过channel.channel是协程安全的。通道intchan来传递要计算的数通道primechan来传递结果是素数通道exitchan来保证计算的协程都完毕协程inttocha
  • 2024-05-11go channel ->同步
    通道并非用来取代锁,各有不同使用场景。通道解决高级别逻辑层次并发架构,锁则用来保护低级别局部代码安全。●竟态条件:多线程同时读写共享资源(竟态资源)。●临界区:读写竟态资源的代码片段。●互斥锁:同一时刻,只有一个线程能进入临界区。●读写锁:写独占(其他读写均被阻塞),读共享。●信号
  • 2024-04-26sync.WaitGroup
    sync.WaitGroup是Go语言标准库中提供的一个同步原语,用于在并发环境中协调多个Goroutine的执行顺序,确保所有并发任务完成后再继续执行后续逻辑。以下是sync.WaitGroup的使用方法:创建WaitGroup:使用sync.WaitGroup类型的零值创建一个实例,无需调用任何构造函数:varw
  • 2024-04-24Golang - 并发同步更新全局切片失败的原因以及解决方案
    当多个协程同时访问和修改同一个共享资源(如切片)时,如果没有适当的同步机制,可能会导致数据竞争和不一致的结果。packagemainimport("fmt""sync")funcprocessChunk(chunk[]int64,wg*sync.WaitGroup,failedList[]int64){deferwg.Done()fmt.Print
  • 2024-04-15Golang交替打印奇偶数
    packagemainimport( "fmt" "sync")varwgsync.WaitGroupfuncmain(){ evenCh,oddCh:=make(chanbool,1),make(chanbool,1) deferclose(evenCh) deferclose(oddCh) wg=sync.WaitGroup{} wg.Add(1) goprintNumbersSequent
  • 2024-04-11[学习笔记] LCA - 图论
    [NOIP2013提高组]货车运输最大生成树+LCA+倍增好家伙,这道题我写了一个晚上,调了两个晚上,对于这道题我颇有感触。但这道题确实好,实实在在的蓝题,让我发现了许多关于LCA的问题。首先,这个题给的是一个无向图,并不是个树,为了减少运算量,我们可以把它变成一个树。运用Kruskal算法生
  • 2024-04-09掌握Go语言:Go 并发编程,轻松应对大规模任务处理和高并发请求(34)
    并发是Go语言的一个重要特性,通过goroutine和channel,Go提供了简单而强大的并发编程模型。goroutine是轻量级的线程,可以在程序中并发执行任务,而channel则是用于goroutine之间的通信的管道。Go并发应用场景1.并行计算应用场景:在需要处理大量计算密集型任务时,可
  • 2024-03-29每个程序员都应该了解的内存知识(五): 代码优化
    代码优化多线程优化尽量使用顺序读写因为分支预测的关系,顺序读写通常能够带来更好的性能.共享变量将只读变量和读写变量分离有可能因为缓存行的原因导致读写变量的更新影响到读变量,进而影响了运行速度提升数据的局部性,将一起使用的读写变量分组到一个结构中缓
  • 2024-03-18Golang多线程打印ABC
    packagemainimport("fmt""sync")funcThreeG(){varch1,ch2,ch3=make(chanstruct{}),make(chanstruct{}),make(chanstruct{})varwgsync.WaitGroupwg.Add(3)gofunc(sstring){deferwg.Done