
Golang
文章平均质量分 88
Go语言学习
小厂程序员
https://fofcn.tech/
太阳会落山,但明天又会升起!
展开
-
微服务边车模式深度解析:赋能云原生应用的终极指南(自己搞一个简单SideCar?)
通过使用Sidecar模式,我们能够实现对微服务架构的强化,也就是关注点分离,让你专注于开车,开好车,开快车。它提供了一种有效的方式去分摊微服务的辅助功能(如日志记录、监控、配置管理、网络通信等),而无需改动微服务的核心业务逻辑。这带来了显著的优点,包括简化开发复杂度、增强服务的可维护性和可伸缩性,以及提供了横切关注点(cross-cutting concerns)的统一管理。原创 2024-04-14 17:10:32 · 3897 阅读 · 0 评论 -
逐步学习Go-Slice(切片还可以多挖一下)
原地算法(in-place algorithm,也称就地算法)是不需要额外的数据结构就能变换输入数据的算法。不过,分配少量空间给部分辅助变量是被允许的。不是原地就是非原地,非原地就是要分配额外的内存空间来存储数据。原创 2024-04-13 21:43:59 · 996 阅读 · 0 评论 -
Go 认证与授权(Authentication)
处理认证和授权是业务系统场景的问题,不论你是在云上还是哪儿,同事各种编程语言和框架都会提供相应的解决方案,如Python的Flask-JWT, Java的自定义注解或拦截器,.NET的Attribute等。无论使用哪种方法,都需要对相关的技术有深入的理解,并且在编程时要时刻注意,防止忘记使用注解,或者把注解放错位置。阅读包含大量注解的代码也会变得困难,找不到注解的定义,或者感觉控制流程被隐藏起来了。Go语言提供了更简洁清晰的解决方案。Go允许我们直接定义一个认证处理器并将其附加到注册路由上。原创 2024-04-13 21:42:34 · 701 阅读 · 1 评论 -
逐步学习Go-sync.RWMutex(读写锁)-深入理解与实战
Go中提供了读写锁:sync.RWMutex。sync.RWMutex是Go语言提供的一个基础同步原语,它是Reader/Writer Mutual Exclusion Lock的缩写,通常被称为"读写锁"。读写锁允许多个读锁同时拥有者,但在任何时间点只允许一个写锁拥有者,或者没有锁拥有者。原创 2024-04-10 13:24:05 · 2189 阅读 · 0 评论 -
逐步学习Go-sync.Mutex(详解与实战)
Go中提供了互斥锁:sync.Mutex原创 2024-04-08 18:08:55 · 1380 阅读 · 0 评论 -
强行让Java和Go对比一波[持续更新2024-04-10已更新]
很多Java开发如果想转Golang的话,比较让Java开发蛋疼的第一是语法,第二是一些思想和设计哲学的Gap,所以我这儿强行整理一波Java和Golang的对比,但是由于GO和Java在很多方面都有不同的设计,所以这些对比的项可以更好的让Java开发理解是什么。原创 2024-04-07 22:00:55 · 660 阅读 · 0 评论 -
逐步学习Go-WaitGroup(Goroutines协作的神器——Go WaitGroup浅析)
想象一下,你的应用程序启动了一大堆goroutines来处理各种任务,咱们的主goroutine需要等待它们都跑完才能继续进行。这时候,WaitGroup就登场了。简单来说,WaitGroup用来等待一组goroutines的结束。主goroutine会通过调用Add()方法来告知WaitGroup需要等待多少个goroutines。每当一个子goroutine完成任务后,就调用Done()方法表示它跑完了。主goroutine则可以通过Wait()方法阻塞自己,直至所有子goroutine都告一段落。原创 2024-04-05 20:16:28 · 782 阅读 · 0 评论 -
逐步学习Go-sync.Once(只执行一次)Exactly Once
sync.Once是一个会执行且仅执行一次动作的对象。该对象在第一次使用后不能再被复制。在 Go 内存模型的术语中,sync.Once的Do方法中的函数f返回的操作,相对于任何对once.Do(f)的调用返回的操作,都具有“同步优先”的顺序。简单来说,即使在并发环境下,函数f也只会在首次调用once.Do(f)时执行。每个sync.Once对象仅适用于执行一次动作。也就是说,如果多次调用了once.Do(f),仅第一次的调用会激发函数f的执行,即使每次调用once.Do(f)时函数f的值都有所不同。原创 2024-04-05 20:03:57 · 1169 阅读 · 0 评论 -
Java与Go的并发世界:理解Work Sharing与Work Stealing
Work stealing可以提升并发和并行,因为空闲的线程会主动窃取其他线程中任务队列的任务从而提升并行处理能力。原创 2024-04-01 21:41:42 · 1264 阅读 · 1 评论 -
在Windows上使用WSL 2和VS Code搭建Linux开发环境
最近在Windows下使用golang开发一个网络通信工具,网络库使用了字节开源的netpoll,这个网络库实现了高性能的RPC解决方案,但是有一个小点影响了我Windows开发:不支持Windows(Windows这么受嫌弃~)。我开发的这个小工具本来也不会运行在Windows上,运行在Linux上。但是它不支持Windows难免会影响我的开发,所以我就在Windows上使用WSL启动了一个Ubuntu,然后VS Code安装了WSL插件就可以在直接连Ubuntu进行开发了。原创 2024-03-30 16:47:10 · 1419 阅读 · 0 评论 -
逐步学习Go-Select多路复用
这里又有多路复用,但是Go中的这个多路复用不同于网络中的多路复用。在Go里,select用于同时等待多个通信操作(即多个channel的发送或接收操作)。原创 2024-03-28 21:06:10 · 1089 阅读 · 0 评论 -
逐步学习Go-并发通道chan(channel)
"Communicating Sequential Processes"(CSP)这个词组的含义来自其英文直译以及在计算机科学中的使用环境。var channel名称 chan channel类型// 类型自动推断channel名称 := make(chan channel类型, buffer数量(int可以为0))COPY// 定义了一个channel,还没有make,不确定是否为有缓冲和无缓冲channel// 定义了一个chnnel, 容量为0,无缓冲channel。原创 2024-03-27 21:02:02 · 1012 阅读 · 0 评论