Golang入门指南


  • 首页

  • todo

  • 思考

  • life

  • food

  • OS

  • lua

  • redis

  • Golang

  • C

  • TCP/IP

  • ebpf

  • p4

  • OpenVPN

  • IPSec

  • L2TP

  • DNS

  • distributed

  • web

  • OpenWRT

  • 运维

  • Git

  • 鸟哥的私房菜

  • IT杂谈

  • 投资

  • About Me

  • 友情链接

  • FTP

  • 搜索
close

CPU缓存体系对程序的影响

时间: 2021-04-28   |   分类: algorithm     |   阅读: 6361 字 ~13分钟

CPU缓存体系对Go程序的影响

小菜刀最近在medium上阅读了一篇高赞文章《Go and CPU Caches》,其地址为https://teivah.medium.com/go-and-cpu-caches-af5d32cc5592,感觉收获颇多。小菜刀在该文章的基础上做了些修改和扩展,整理出来分享给读者朋友们。

CPU缓存体系

现代计算机处理器架构多数采用对称多处理系统(Symmetric multiprocessing system,SMS)。在这个系统中,每一个核心都当成是独立的处理器,多处理器被连接到同一个共享的主存上,并由单一操作系统来控制。

阅读全文 »

Go的string与[]byte转换原理

时间: 2021-04-27   |   分类: go     |   阅读: 4338 字 ~9分钟

string类型和[]byte类型是我们编程时最常使用到的数据结构。本文将探讨两者之间的转换方式,通过分析它们之间的内在联系来拨开迷雾。

两种转换方式

阅读全文 »

Go工具之vet静态诊断器

时间: 2021-04-27   |   分类: go     |   阅读: 2056 字 ~5分钟

Go工具之vet——静态诊断器

go的vet工具是go代码静态诊断器,可以用以检查go项目中可通过编译但仍可能存在错误的代码,例如无法访问的代码、错误的锁使用、不必要的赋值、布尔运算错误等。

阅读全文 »

不能忽略GoRoutinue的启动时间

时间: 2021-04-27   |   分类: go     |   阅读: 2082 字 ~5分钟

不要忽略goroutine的启动时间

项目中需要将数据推给多个服务器,大致如下

 package main
 
 import (
     "fmt"
     "sync"
 )
 
 func mockSendToServer(url string) {
     fmt.Printf("server url: %s\n", url)
}

func main() {
    urls := []string{"0.0.0.0:5000", "0.0.0.0:6000", "0.0.0.0:7000"}
    wg := sync.WaitGroup{}
    for _, url := range urls {
        wg.Add(1)
        go func() {
            defer wg.Done()
            mockSendToServer(url)
        }()
    }
    wg.Wait()
}

请读者停来下思考一下,以上代码会得到什么样的输出。

阅读全文 »

深入理解sync.Once

时间: 2021-04-27   |   分类: go     |   阅读: 1384 字 ~3分钟

深入理解sync.Once

sync.Once是让函数方法只被调用执行一次的实现,其最常应用于单例模式之下,例如初始化系统配置、保持数据库唯一连接等。

sync.Once的单例模式示例

阅读全文 »

数据库连接池

时间: 2021-04-27   |   分类: algorithm     |   阅读: 1615 字 ~4分钟

数据库连接池

池(Pool)是指某类资源的容器,它是一种用于提高程序效率和降低系统开销的技术,比如线程池、连接池、内存池、对象池。但它们的核心理念一致:资源复用。

阅读全文 »

Go no copy 机制

时间: 2021-04-27   |   分类: go     |   阅读: 1917 字 ~4分钟

no copy机制

小菜刀读Go源码时,发现一个高频注释语句“XXX must not be copied after first use“。例如sync包下的Pool、Cond、WaitGroup、Mutex、Map和atomoic.Vaule、strings.Builder等,都有该句注释。

阅读全文 »

万能钥匙中间层

时间: 2021-04-26   |   分类: algorithm     |   阅读: 1648 字 ~4分钟

万能钥匙-中间层

最近小菜刀重读《程序员的自我修养》,里面提到过一句名言:计算机科学领域的任何问题都可以通过增加一个间接的中间层来解决。

上述名言概括了计算机系统软件体系结构的设计要点,整个体系结构从上到下都是按照严格的层次结构设计的。不仅是计算机系统软件整个体系是这样的,体系里面的每个组件比如操作系统本身,应用程序、软件系统甚至很多硬件结构都是按照这种层次的结构组织和设计的。

阅读全文 »
65 66 67 68 69 70 71 72 73

日志
分类
标签
RSS 订阅
GitHub
© 2009 - 2025
粤ICP备2021068940号-1 粤公网安备44011302003059
0%