我读过很多鸡汤文,从《心灵鸡汤》《智慧背囊》《时文选粹》到后来各种公共号,订阅号。很多文章写得都很棒:文笔优美,情节细腻。有的发人深省,有的暖人心脾。鸡汤和其他作品一样,不应当被如此嗤之以鼻。
go channel的常规用法
整理的channel常规用法
技术从业者的思考
自媒体时代中,知识和信息从来都没有像这样触手可及。
go的互斥锁只是一个君子协定
2018-11-22更新
这是我初学go的一篇笔记,在此之前并无并发相关的开发经验。
当时很好奇go的互斥锁如何生效。经过这个实验我了解到:对于这种可能造成竞态的代码,正常流程应该是 获取锁 -> 操作 -> 释放锁
。需要主动获取锁,这样锁才能生效。
而在mysql中,如果某条记录被加锁(比如select for update),其他写操作不需要主动获取锁,就会自动被阻塞无法进行。因为mysql中update 获取锁的操作是自动的,对用户透明。所以我之前一直误以为一个锁应当能保护变量或内存或代码段
,才有了这个笔记。
这个笔记想表达的是,锁的正确用法应当是获取锁 -> 操作 -> 释放锁
,开发需遵守这个约定,否则锁不会生效。仅此而已。
谢谢简书评论区各位指正。修改后正文如下:
golang中的互斥锁并不能锁定任何内存或代码或变量。
0001-两数之和
给定一个整数数列,找出其中和为特定值的那两个数。
0002-两数相加
给定两个非空链表来代表两个非负整数,位数按照逆序方式存储,它们的每个节点只存储单个数字。将这两数相加会返回一个新的链表。
Nginx做websocket反向代理[译][节选]
svn转向git
0026-从排序数组中删除重复项
给定一个有序数组,你需要原地删除其中的重复内容,使每个元素只出现一次,并返回新的长度。不要另外定义一个数组,您必须通过用 O(1) 额外内存原地修改输入的数组来做到这一点。
go限制请求次数——令牌池
抓数据的网站限定1秒只能有10次请求,因此设计了一个令牌管理机制来控制请求数量。
设计思路如下:
- 发请求前需要先获取令牌
- 限定某时间段内的发放的令牌数量
- 任务执行完成后不能归还令牌,只能使用定时器不断重置令牌
- 如果当前goroutine数量过多时也不重置令牌