首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
Golang
半芽湾
创建于2022-03-12
订阅专栏
Golang原理
等 1 人订阅
共17篇文章
创建于2022-03-12
订阅专栏
默认顺序
默认顺序
最早发布
最新发布
Golang之string实现原理与高效使用
字符串类型是现代编程语言中最常使用的数据类型之一。在Go语言的先祖之一C语言当中,字符串类型并没有被显式定义,而是以字符串字面值常量或以'\0'结尾的字符类型(char)数组来呈现的。 这给C程序员在
Go语言之RPC入门
RPC是什么 RPC(Remote Procedure Call,远程过程调用)是一种计算机通信协议,用于使一个计算机程序能够调用远程计算机上的服务或函数,就像调用本地函数一样。它允许不同的进程或计算
Go语言常见并发模型
Go语言最吸引人的地方是它内建的并发支持。 在并发编程中,对共享资源的正确访问需要精确地控制,在目前的绝大多数语言中,都是通过加锁等线程同步方案来解决这一困难问题,而Go语言却另辟蹊径,它将共享的值通
Golang编程之Channel
要想了解 Channel这种Go编程语言中的特有的数据结构,我们要追溯到 CSP 模型,学习下它的历史,以及它对 Go 创始人设计 Channel 类型的影响。 CSP 是Communicating
Golang之字符串
说一说标准库中的strings代码包。这个代码包也用到了不少unicode包和unicode/utf8包中的程序实体。比如,strings.Builder类型的WriteRune方法,又比如,stri
Golang之字符编码
Go 语言中的标识符可以包含任何 Unicode 编码可以表示的字母字符。虽然我们可以直接把一个整数值转换为一个string类型的值,但是被转换的整数值应该可以代表一个有效的 Unicode 代码点,
常见算法之栈
基础知识 栈是一种常用的数据结构,它最大的特点是“后入先出”,即后进入栈中的元素最先出来。为了确保“后入先出”的顺序,栈的插入和删除操作都发生在栈顶。 如果碰到的问题是读入的数据暂时用不上的情形,通常
Golang编程之Context
Context Go在1.7的版本中才正式把Context 加入到标准库中。在这之前,很多Web 框架在定义自己的 handler 时,都会传递一个自定义的 Context,把客户端的信息和客户端的请
Golang编程之Pool
Go 是一个自动垃圾回收的编程语言,采用三色并发标记算法标记对象并回收。和其它没 有自动垃圾回收的编程语言不同,使用 Go 语言创建对象的时候,我们没有回收 / 释放的 心理负担,想用就用,想创建就
Golang编程之Map
哈希表(Hash Table)这个数据结构。它实现的就是 key-value 之间的映射关系,主要提供的方法包括 Add、Lookup、Delete 等。因为这种数据结构是一个基础的数据结构,每个 k
Golang编程之Once
Once可以用来执行且仅仅执行一次动作,常常用于单例对象的初始化场景。 Once的使用场景 sync.Once 只暴露了一个方法 Do,你可以多次调用 Do 方法,但是只有第一次调用 Do方法时f参数
Golang编程之Cond
Go 标准库的 Cond Go 标准库提供 Cond 原语的目的是,为等待/通知场景下的并发问题提供支持。Cond 通常应用于等待某个条件的一组 goroutine,等条件变为 true 的时候,其中
Golang编程之WaitGroup
WaitGroup,我们以前都多多少少学习过,或者是使用过。其实,WaitGroup 很简单,就是package sync用来做任务编排的一个并发原语。它要解决的就是并发-等待的问题: 现在有个gor
Golang编程之RWMutex
我们使用 Mutex来保证读写共享资源的安全性。不管是读还是写,我们都通过 Mutex 来保证只有一个 goroutine 访问共享资源,这在某些情况下有点“浪费”。比如说,在写少读多的情况下,即使一
Golang之Mutex扩展
使用 Mutex 常见的错误场景有 4 类,分别是Lock/Unlock 不是成对出现Copy 已使用的 Mutex、重入和死锁。 Lock/Unlock 不是成对出现 Lock/Unlock 没有成
Golang之Mutex源码
把 Mutex 的架构演进分成了四个阶段。 “初版”的Mutex 使用一个 flag 来表示锁是否被持有,实现比较简单;后来照顾到新来的goroutine,所以会让新的 goroutine 也尽可能地
Golang编程之Mutex用法
在使用golang开发中,常常碰到一些并发问题,比如多个 goroutine 并发更新同一个资源,像计数器更新,如果没有互斥控制,就会出现一些异常情况,比如计数器的计数不准确。 这些问题怎么解决呢?