Golang
是蛋筒啊
保持学习 保持热情
展开
-
聊聊golang中的panic和defer
聊聊golang中的panic和defer当数组越界、访问非法空间或者我们直接调用panic时,panic会停掉当前正在执行的程序,包括所有协程,比起exit直接退出,panic的退出更有秩序,他会他会先处理完当前goroutine已经defer挂上去的任务,执行完毕后再退出整个程序。而defer的存在,让我们有更多的选择,比如在defer中通过recover截取panic,从而达到try…catch的效果panic还可以接收一个参数,通常是字符串类型错误信息,执行到panic时,他会打印这个字符串和原创 2020-06-01 15:41:56 · 5978 阅读 · 3 评论 -
Golang中的nil
之前在学习C/C++时,我们知道有NULL在C中NULL是一个(void*)的指针,其定义如下:#define NULL ((void *)0)而在C++中,NULL直接可以和0划等号,定义:/* Define NULL pointer value */#ifndef NULL #ifdef __cplusplus #define NULL 0 ...原创 2019-07-25 15:32:32 · 2259 阅读 · 0 评论 -
Redis分布式锁
Redis的常见使用场景有这么几种:通用缓存计数器(点击量、下载量、pv、uv等)分布式锁这里我们主要谈Redis分布式锁的实现。分布式锁主要是为了解决以下几个问题:互斥性:多个机器不能同时获得锁,同一时刻只有一台机器占有锁安全性:保证加锁和解锁都是同一台机器,不能误释放别人的锁死锁:节点故障,但是一直占有锁未释放,其他节点一直加锁失败容错:一个节点故障,保证其他节点可以释...原创 2019-08-08 20:32:30 · 276 阅读 · 1 评论