Golang指针与unsafe
我们知道在golang中是存在指针这个概念的。对于指针很多人有点忌惮(可能是因为之前学习过C语言),因为它会导致很多异常的问题。但是很多人学习之后发现,golang中的指针很简单,没有C那么复杂。所以今天就详细来说说指针。 指针的使用123a := 1p := &afmt.Println(p) 输出:0xc42001c070 可以看到p就是一个指针,也可以说是a的地址。 1234a := 1var p *intp = &afmt.Println(p) 或者也可以写成这样,因为我知道,在很多人看来,看到*号才是指针(手动滑稽) 123a := 1p :=...
Golang 读写锁RWMutex 互斥锁Mutex 源码详解
Golang中有两种类型的锁,Mutex (互斥锁)和RWMutex(读写锁)对于这两种锁的使用这里就不多说了,本文主要侧重于从源码的角度分析这两种锁的具体实现。 引子问题我一般喜欢带着问题去看源码。那么对于读写锁,你是否有这样的问题,为什么可以有多个读锁?有没有可能出现有协程一直无法获取到写锁的情况?带着你的疑问来往下看看,具体这个锁是如何实现的。 如果你自己想看,我给出阅读的一个思路,可以先看读写锁,因为读写锁的实现依赖于互斥锁,并且读写锁比较简单一些,然后整理思路之后再去想一下实际的应用场景,然后再去看互斥锁。 下面我就会按照这个思路一步步往下走。 基础知识点 知识点1:信号量信号量是 Edsger Dijkstra 发明的数据结构(没错就是那个最短路径算法那个牛人),在解决多种同步问题时很有用。其本质是一个整数,并关联两个操作: 申请acquire(也称为 wait、decrement 或 P 操作)释放release(也称 signal、increment 或 V 操作) acquire操作将信号量减...
面向问题编程
面向问题编程Redis IO多路复用和多线程会影响Redis分布式锁吗? Redis 的 set nx 底层怎么实现的? Redis 主从复制是如何实现的? Redis 事件机制是如何实现的? Redis Sorted Set 实现与应用 Redis List 设计与实现 假如 Redis 里面有 1 亿个 key,其中有 10w 个 key 是以某个固定的已知的前缀开头的,如何将它们全部找出来? Go Golang 中 能否将 slice 作为 map 的 key? MySQL 什么是索引下推?
读书吃饭睡觉
读书吃饭睡觉 程序员真是一个活到老学到老的职业,读书的时候别忘记吃饭睡觉哦~ 《笨开发学习操作系统》 操作系统的学习总是让人觉得自己像个“笨蛋”,希望通过编写这个专栏来让自己变“聪明”一点 😂,希望你也可以 《笨开发学习操作系统》0 前言 《笨开发学习操作系统》1 启动 《笨开发学习操作系统》2 进程 《笨开发学习操作系统》3 内存 《笨开发学习操作系统》4 进程间通信 《笨开发学习操作系统》5 文件系统 《笨开发学习操作系统》6 输入输出系统 《笨开发学习操作系统》7 网络 《Go 单元测试指北》 Go 单元测试的小总结 《Go 单元测试指北》0 前言 《Go 单元测试指北》1 数据层 《Go 单元测试指北》2 逻辑层 《Go 单元测试指北》3 接口层 《Go 单元测试指北》4 其他小技 《一起读 kubernetes 源码》(WIP🚧) 学习读源码的方法和技巧,理解为什么要读源码 🤔 《一起读 kubernetes 源码》序 《一起读 kubernetes 源码》kubelet 如何创建 pod? 《一起读 kubernetes 源码》probe...
感谢您为本博客的长远发展做出的贡献
感谢您为本博客的长远发展做出的贡献 本博客不会悬挂任何广告,若发现评论中含有任何广告,请勿点击,长远发展源于我的热爱和你的投币~ 😄 本博客当前主要开销 云服务器 (约 300/年) 图床 CDN 存储和流量 (约 24/年) 域名 (约 72/年) 评论资源 (约 80/年) …. 赞助者 赞助时间 赞助者 金额 友链 2019 年 06 月 27 日 好大一瓶芬达 20 - 2022 年 06 月 14 日 李*双 1 - 2023 年 03 月 12 日 黄*博 66 - 2023 年 04 月 28 日 张*恒 72 - 2024 年 05 月 29 日 G*a 10 - 赞助方式 微信 支付宝 赞助时记得备注昵称或者友链 📮