dlv
dlv 针对go语言的调试器,内部架构介绍 --headless package main import ( "fmt" ) func main() { m := 120 fmt.Printf("Hello world\n") fmt.Printf("m = %d\n", m) } 终端1 dlv debug »
dlv 针对go语言的调试器,内部架构介绍 --headless package main import ( "fmt" ) func main() { m := 120 fmt.Printf("Hello world\n") fmt.Printf("m = %d\n", m) } 终端1 dlv debug »
空指针和空接口不等价 package main import ( "fmt" ) type MyError struct{} func (p *MyError) Error() string { return "test error" } func returnsError() error { var p *MyError = nil return p } func »
现象 某服务A从晚上6点开始,监控一直出现mysql调用延迟超高,http接口500飙升 原因 经查发现是一条全局update整张表的sql引起的,全局lock表 最小化 使用下面操作进行最小化 建库 create databses test; 建表 CREATE TABLE `Record` ( `id` BIGINT NOT NULL, `count` BIGINT NOT NULL, PRIMARY »
难点 个人感觉信号量主要难在应用场景上; 同等对比,互斥量主要用来上锁,条件变量来优化多任务等待 其中互斥量正常场景下,都应该(最好都是遵从这样方式)保持上锁、解锁是同一个task; 在《评论迁移》里面,分布式锁redis的set NX 过程中,参数是key、requireId、expiration,其中requireId(多task环境下唯一ID)就是为了保证上锁、解锁是同一个task 综合来看,好像不需要信号量这类东西的存在 《UNIX »
函数即服务(faas),现在挺火的一个概念,不同于Iaas、Paas、Saas,颗粒度更细致; 看一下github.com一个开源的openfaas; minikube 按照官方推荐的教程流程,首先使用minikube启动单点的k8s 1.注意minikube启动的时候,会有一下几种情况: $ minikube start --vm-driver=virtualbox Starting local Kubernetes v1.10.0 cluster. »
2018.09.04 set nocompatible filetype off set rtp+=~/.vim/bundle/Vundle.vim call vundle#begin() Plugin 'VundleVim/Vundle.vim' Plugin 'vim-airline/vim-airline' Plugin 'vim-airline/vim-airline-themes' »
条件变量 互斥器用于互斥,条件变量用于等待 如果上例子中消费者和生产者同时并发,那么需要消费者需要轮询(polling)或者轮转(spinning) 查询buf状态,看是否满足消费条件 void comsume_wait(int i) { for( ; ; ) { pthread_mutex_lock(&shared.mutex); if (i < shared. »
锁 我们语境下的锁是一种同步机制,用于计算机在多任务环境下访问公共资源达到互斥作用。 临界资源 临界资源(Critical Resource)是一次仅允许一个进程(任务)使用的共享资源 临界区 每个进程(任务)中访问临界资源的代码块。每次只允许一个进程进入临界区(Critical Section) 互斥量 互斥量(mutex),用于保护临界区的。下面举个例子,三个task,其中两个生产者,一个消费者 以下代码有如下假定: »