
简介
该用户还未填写简介
擅长的技术栈
可提供的服务
暂无可提供的服务
注意:1.这里安装的不是consul本身,而是consul包,就是go程序里要import的那个。2.安装方法适用于所有系统,包括linux,windows,mac,只需要机器上有gitconsul源码就是用go写的,所有使用go程序调用consul包,只需要把整个go项目从github上clone下来即可。其实用go get也可以安装,但是因为源在国外,非常慢,且go get看不到进...
之前写过一篇如何用pprof检测golang代码中的死锁,讲了下如何发现代码中的死锁,发现了死锁怎么办?自然是要解之。。最近刚好解决了两个死锁,分享一下心得,希望能帮助到大家~我把死锁分为两种,一种为简单死锁,另一种为并发场景下的死锁,接下来我们分别来说一说。简单死锁所谓简单死锁,就是写代码的时候粗心大意写出来的,比如说我们写了一个这样的函数:函数A会在获取锁之后调用函数B,而B也要获取这个锁,这
配置当我们第一次用goland打开一个工程时,右上角的运行还有调试按钮都是灰色的,就是点不了的。为什么点不了呢?如果是你打开的是一个文件,goland可能会默认你想go run这个go文件,但是一个工程里有一大堆go文件,goland并不知道你是想运行其中某一个go文件,还是想把这一堆文件编译成一个二进制文件然后再运行,我们通常要做的事是后者。这个时候,我们就要配置一下,告诉gol...
最近跟着黄健宏老师的《redis设计与实现》学习redis数据结构,看到跳跃表一节时,发现只有两节:如此简略,应该是很简单吧,嘿嘿,抱着这种想法,我打开了redis源码,查看了下跳跃表的插入函数,结果,完全看不懂啊。。。于是乎我又看了看网上的一些博文,虽然比起直接看源码更舒适了些,但还是不能完全理解。。。最终,自己硬啃了大半天,终于是彻底搞明白了,在此记录一下,以免自己以后忘记,也...
用golang做的后端项目,为了实现高性能,通常会在运行过程中开启多个goroutine,并行处理并发请求。并发处理请求提升效率的同时,也引入了资源并发读写的场景,这通常会带来一些问题,比如同时读写一个map会导致程序panic,为此,我们需要为那些不应被多个goroutine同时访问的资源加锁。一个复杂的后端项目,通常会包含很多很多的锁,我们很难保证我们写的程序不出现死锁,或者长时间的锁等待。锁
1.场景假设数据库中存储的日志数据是下面这样的timestampeventtrace_idnode15320123request_A123456client15320124request_B987654client15320125request_A123456access...
目标既然是学习使用consul实现服务注册发现,目标自然是实现一个程序,可以通过consul,发现另一个程序。为此我准备了3个机器:1.云服务器A(ubuntu):运行consul agent2.云服务器B(ubuntu):运行一个服务,并在服务启动时注册到consul上3.本机(mac):运行一个程序,可以通过云服务器A上的consul,发现云服务器B上的服务启动cons...
目录一、zookeeper安装(包括C库的安装)二、需要的头文件三、需要的动态库四、C API1.连接到zookeeper服务器2.创建节点3.订阅节点4.订阅子节点5.获取子节点列表6.获取节点数据附录一、zookeeper安装(包括C库安装)1.下载zookeeper包下载链接:http://archive.apache.org/dist...







