摘要
作为技术方案最常提到的组件:消息队列,它在我们的程序中起到了重要的作用。异步、解耦、削峰(缓冲)等特性正是我们选择它的原因。本文将会按自己的理解聊一聊消息队列的本质、使用场景、注意事项、以及介绍下主流的消息队列。
作为技术方案最常提到的组件:消息队列,它在我们的程序中起到了重要的作用。异步、解耦、削峰(缓冲)等特性正是我们选择它的原因。本文将会按自己的理解聊一聊消息队列的本质、使用场景、注意事项、以及介绍下主流的消息队列。
channel 是 goroutine 与 goroutine 之间通信的重要桥梁,借助 channel,我们能很轻易的写出一个多协程通信程序。今天,我们就来看看这个 channel 的常用用法以及底层原理。
channel 是一个通道,用于端到端的数据传输,这有点像我们平常使用的消息队列,只不过 channel 的发送方和接受方是 goroutine 对象,属于内存级别的通信。
在底层上, redis 使用了 IO 多路复用技术,像 select、epoll 等。能较好的保障吞吐量。而且 redis 采用了单线程处理请求,避免了线程切换和锁竞争锁带来的额外消耗。
Go语言最大的特色就是从语言层面支持并发(Goroutine),Goroutine是Go中最基本的执行单元。事实上每一个Go程序至少有一个Goroutine:主Goroutine。当程序启动时,它会自动创建。
计算机网络模型
通过通信来共享内存
;Go 在 runtime 运行时里实现了属于自己的调度机制:GPM,降低了内核态和用户态的切换成本。GPM 模型是 golang 自己的一个调度模型,它抽象出了下面三个结构:
之前查询端口是否被占用一直搞不明白,问了好多人,终于搞懂了,现在总结下:
1.netstat -anp |grep 端口号
如下,我以3306为例,netstat -anp |grep 3306(此处备注下,我是以普通用户操作,故加上了sudo,如果是以root用户操作,不用加sudo即可查看),如下图1:
前言
背着 Air,背了好长时间,挤地铁,背着感觉不仅仅是一个 Air,更是希望,压力以及动力。
随着项目一期差不多了,我的 MBP 也该派上用场啦。
早期 LZ 在 MBP 上只是简单配置了 Git 的名称,今天在 Clone Github 遇到如下问题: