WG
  • 2024-11-21第 24 章 -Golang 性能优化
    在Go语言中进行性能优化是一个多方面的过程,它涉及到代码编写、编译器优化、运行时系统调优以及对应用程序的深入理解。以下是针对Golang性能优化的一些关键点,包括性能分析工具、内存管理和并发优化等方面的内容,并附带一些简单的案例源代码。性能分析工具Go语言自带了强大
  • 2024-11-12Go语言并发编程:轻松驾驭多线程世界(九)
    Go语言并发编程:轻松驾驭多线程世界在这里插入图片描述在现代编程中,并发是让你的程序变得更强大、更高效的关键技能。幸运的是,Go语言提供了一种简单、直观的方式来处理并发任务,使用轻量级的Goroutine和Channel,让我们能够像指挥交通一样简单地处理多个任务。今天,我们将
  • 2024-11-06go语言进阶之同步原语
    同步原语资源竞争定义与实现在Go语言中,资源竞争指多个goroutine同时访问共享资源,导致程序的行为不可预测或者不一致。资源竞争通常发生在对同一变量进行读写操作时,如果没有正确的同步机制来控制访问可能会引发资源竞争packagemainimport("fmt""sync")
  • 2024-11-03Linux WireGuard搭建指南
    一、部署服务器1:安装WireGuardaptinstallwireguard2:生成密钥wggenkey|teeprivatekey|wgpubkey>publickeywggenkey|teeclient_privatekey|wgpubkey>client_publickey3:生成配置文件cat<<-EOF>wg0.conf[Interface]PrivateKey=$(catprivateke
  • 2024-10-28通过wireguard异地组网
    诉求希望通过wireguard建设自己的虚拟网络,完成节点之间的互访与路由转发。Cloud┌─────────┐public:1.2.3.4┌─────────────►│Relay│wg:10.0.0.1│└───────▲─┘
  • 2024-10-23在 Go 语言中,构造一个并发安全的 map 集合
    Map集合是Go中提供的一个KV结构的数据类型,对它的操作在实际的开发中应该是非常多的,不过它不是一个线程安全的。1、Map不是线程安全的编写下面的测试代码:funcTestUnsafeMap(t*testing.T){//创建一个线程不安全的mapmyMap:=make(map[int]int)
  • 2024-10-07wireguard进行组网
    logo成就你的写作梦想wireguard进行组网 it之承影含光 简书作者2024-06-1315:18IP属地:上海需求:在家中访问公司网络 1.在服务器中安装wireguard1.1下载脚本 curl-Ohttps://raw.githubusercontent.com/atrandys/wireguard/master/wg_mult.sh&&chmod+xwg_m
  • 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 ->同步
    通道并非用来取代锁,各有不同使用场景。通道解决高级别逻辑层次并发架构,锁则用来保护低级别局部代码安全。●竟态条件:多线程同时读写共享资源(竟态资源)。●临界区:读写竟态资源的代码片段。●互斥锁:同一时刻,只有一个线程能进入临界区。●读写锁:写独占(其他读写均被阻塞),读共享。●信号