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

漫画 | 一台Linux服务器最多能支撑多少个TCP连接?

时间: 2021-05-06   |   分类: cs   tcpip     |   阅读: 1842 字 ~4分钟

漫画 | 一台Linux服务器最多能支撑多少个TCP连接?

编者荐语:

这篇文章作者用通俗易懂的语言,图文并茂的为大家深入讲解了一台Linux服务器究竟能支撑多少个TCP,相信绝大多数读者对这个概念都或多或少有一定了解,但这篇文章会深入细节的每一个本质,非常值得大家一读。

阅读全文 »

Go内存分配器的核心思想

时间: 2021-05-06   |   分类: go     |   阅读: 2662 字 ~6分钟

1、内存分配器的核心思想

Go 的内存分配器核心思想是将内存使用多级管理,降低锁的粒度。每个线程都有自己的本地内存,使用时先从线程本地的内存池进行分配,当内存池不足时,才会从全局内存池中进行申请。

阅读全文 »

Go工具之generate

时间: 2021-05-06   |   分类: go     |   阅读: 1766 字 ~4分钟

Go语言提供了一系列强大的工具,灵活使用这些工具,能够让我们的项目开发更加容易,工具集包含如下。

bug         start a bug report
build       compile packages and dependencies
clean       remove object files and cached files
doc         show documentation for package or symbol
env         print Go environment information
fix         update packages to use new APIs
fmt         gofmt (reformat) package sources
generate    generate Go files by processing source
get         add dependencies to current module and install them
install     compile and install packages and dependencies
list        list packages or modules
mod         module maintenance
run         compile and run Go program
test        test packages
tool        run specified go tool
version     print Go version
vet         report likely mistakes in packages

工具的源码位于$GOPATH/src/cmd/internal,本篇文章主要讨论Go工具generate。

阅读全文 »

Go是如何设计Map的

时间: 2021-05-06   |   分类: go     |   阅读: 18410 字 ~37分钟

由于本文篇幅较长,故将目录整理如下

** **

img

什么是Map

img

  • 维基百科的定义

In computer science, an associative array, map, symbol table, or dictionary is an abstract data type composed of a collection of (key, value) pairs, such that each possible key appears at most once in the collection.

说明:在计算机科学中,包含键值对(key-value)集合的抽象数据结构(关联数组、符号表或字典),其每个可能的键在该集合中最多出现一次,这样的数据结构就是一种Map。

阅读全文 »

详解内联优化

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

详解内联优化

为了保证程序的执行高效与安全,现代编译器并不会将程序员的代码直接翻译成相应地机器码,它需要做一系列的检查与优化。Go编译器默认做了很多相关工作,例如未使用的引用包检查、未使用的声明变量检查、有效的括号检查、逃逸分析、内联优化、删除无用代码等。本文重点讨论内联优化相关内容。

阅读全文 »

Go精妙的互斥锁设计

时间: 2021-04-30   |   分类: go     |   阅读: 7454 字 ~15分钟

*Some people, when confronted with a problem, think, “I know, I’ll use threads,” and then two they hav erpoblesms.*

1. 竞争条件

多线程程序在多核CPU机器上访问共享资源时,难免会遇到问题。我们可以来看一个例子

阅读全文 »

Go中看似简单的WaitGroup源码设计,竟然暗含这么多知识?

时间: 2021-04-30   |   分类: go     |   阅读: 5609 字 ~12分钟

Go中看似简单的WaitGroup源码设计,竟然暗含这么多知识?

Go语言提供的协程goroutine可以让我们很容易地写出多线程程序,但是,如何让这些并发执行的goroutine得到有效地控制,这是我们需要探讨的问题。正如小菜刀在《Golang并发控制简述》中所述,Go标准库为我们提供的同步原语中,锁与原子操作注重控制goroutine之间的数据安全,WaitGroup、channel与Context控制的是它们的并发行为。关于锁、原子操作、channel 的实现原理小菜刀均有详细地解析过。因此本文,我们将重点放在WaitGroup上。

阅读全文 »

如何有效地测试Go代码

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

如何有效地测试Go代码

单元测试

如果把开发程序比作盖房子,那么我们必须确保所有的用料都是合格的,否则盖起来的房子就会存在问题。对于程序而言,我们可以将盖房子的砖头、钢筋、水泥等当做一个个功能单元,如果每个单元是合格的,我们将有信心认为程序是健壮的。单元测试(Unit Test,UT)就是检验功能单元是否合格的工具。

阅读全文 »
63 64 65 66 67 68 69 70 71

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