Golang|panic、recover
panic
结构体
panic 关键字在 Go 语言的源代码是由数据结构runtime._panic
表示的。每当我们调用 panic 都会创建一个如下所示的数据结构存储相关信息:
|
|
结构体中字段含义说明:
……mq|Kafka速度分析
Kafka的消息是保存或缓存在磁盘上的,一般认为在磁盘上读写数据是会降低性能的,因为寻址会比较消耗时间,但是实际上,Kafka的特性之一就是高吞吐率。
即使是普通的服务器,Kafka也可以轻松支持每秒百万级的写入请求,超过了大部分的消息中间件,这种特性也使得Kafka在日志处理等海量数据场景广泛应用。
……mq|kafka基础知识
kafka最初由Linkedin公司开发,是一个分布式、支持分区的、多副本的,基于zookeeper协调的分布式消息系统,用scala语言编写,Linkedin于2010年贡献给了Apache基金会并成为顶级开源项目。
……Golang|垃圾回收
垃圾回收
垃圾回收(Garbage Collection,简称GC)是编程语言中提供的内存管理功能。
通过引入了语言层面的自动内存管理,也就是语言的使用者只用关注内存的申请而不必关心内存的释放,内存释放由虚拟机(virtual machine)或运行时(runtime)来自动进行管理。这种对不再使用的内存资源进行自动回收的功能就被称为垃圾回收。
……树状数组BIT
redis|持久化存储
持久化流程
- 客户端向服务端发送写操作(数据在客户端的内存中)。
- 数据库服务端接收到写请求的数据(数据在服务端的内存中)。
- 服务端调用write这个系统调用,将数据往磁盘上写(数据在系统内存的缓冲区中)。
- 操作系统将缓冲区中的数据转移到磁盘控制器上(数据在磁盘缓存中)。
- 磁盘控制器将数据写到磁盘的物理介质中(数据真正落到磁盘上)。
redis提供了RDB和AOF两种持久化存储方案
……Golang|context
context意义
Go 中的 context 包在与 API 和慢处理交互时可以派上用场,特别是在生产级的 Web 服务中。在这些场景中,您可能想要通知所有的 goroutine 停止运行并返回。
context使用
context相关函数
|
|
context相关使用
Done方法取消
|
|
WithValue传值
|
|
WithTimeout超时取消
|
|
WithDeadline截止时间
|
|
参考
……Golang|channel
channel结构体
|
|
channel创建
|
|
创建channel实际上就是在内存中实例化了一个hchan的结构体,并返回一个ch指针,我们使用过程中channel在函数之间的传递都是用的这个指针,这就是为什么函数传递中无需使用channel的指针,而直接用channel就行了,因为channel本身就是一个指针。
……