
go
逆月林
区块链极客,技术栈:Java,Golang,Javascript;
展开
-
【golang】signal和chan结合使用
golang中对信号的处理主要使用os/signal包中的两个方法:一个是notify方法用来监听收到的信号;一个是 stop方法用来取消监听。 接下来举个signal和chan结合使用的例子func main() { shutdown := make(chan struct{}) go func() { select原创 2016-12-27 15:48:39 · 4676 阅读 · 0 评论 -
基于pinpoint改造的一种方式的思考(2)--collector 的数据处理
pinpoint 改造 collector原创 2017-09-25 16:13:49 · 3148 阅读 · 3 评论 -
基于pinpoint改造的一种方式的思考(3)--javascript/golang agent处理
前言在前一篇文章中,我们探讨了collector 的数据处理,这一篇中我们将讲讲如何构建javascript、golang agent。原创 2017-10-05 20:17:45 · 2728 阅读 · 0 评论 -
基于pinpoint改造的一种方式的思考(1)--agent 添加代理层
Pinpoint 改造原创 2017-09-22 08:47:18 · 4323 阅读 · 0 评论 -
golang有用的库及工具 之 zap.Logger包 使用
zap.Logger 是go语言中相对日志库中性能最高的。那么如何开始使用?不多说直接上代码:import ( "encoding/json" "fmt" "log" "go.uber.org/zap" "go.uber.org/zap/zapcore")var Logger *zap.Loggerfunc InitLogger() {原创 2017-10-25 13:32:56 · 16013 阅读 · 0 评论 -
graphql---go http请求使用
1. Graphql是什么?GraphQL是Facebook 在2012年开发的,2015年开源,2016年下半年Facebook宣布可以在生产环境使用,而其内部早就已经广泛应用了,用于替代 REST API。facebook的解决方案和简单:用一个“聪明”的节点来进行复杂的查询,将数据按照客户端的要求传回去,后端根据GraphQL机制提供一个具有强大功能的接口,用以满足前端数据的个性化需求,原创 2017-11-02 11:09:13 · 3921 阅读 · 1 评论 -
协程Vs线程
1、线程线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源。线程间通信主要通过共享内存,上下文切换很快,资源开销较少,但相比进程不够稳定容易丢失数据。2、协程协程是一种用户态的轻量级线程,协程的原创 2017-11-03 17:10:01 · 1128 阅读 · 0 评论 -
go语言工程制作dockerfile,并部署到docker
前言众所周知云计算时代,是docker,kubernetes的天下。学习使用docker和kubernetes是必选的。当然这两个应用都是基于go语言的。所以云计算时代使用go语言写服务也是极好的。那么如何将go语言服务部署到docker容器呢?1.首先使用go语言实现基本http服务使用echo标准库实现8080端口输出helloworld的服务。import ( ...原创 2018-01-11 17:15:38 · 21446 阅读 · 7 评论 -
go语言工程制作yaml文件,并部署到kubernetes
前言在前文中,笔者将了如何制作go语言的dockerfile,并部署到docker。链接地址是:http://blog.youkuaiyun.com/niyuelin1990/article/details/79035728在这篇文章中,笔者将讲下如何将go工程的docker镜像部署到kubernetes。1.制作yaml文件首先基于现有的docker镜像,制作出deployment和service。apiVe原创 2018-01-11 17:35:32 · 2133 阅读 · 0 评论 -
kubernetes 客户端client-go 使用及常用api
前言client-go 是kubernetes 的go语言客户端简单易用,但需要小心区分kubernetes的API版本。简单例子import ( "k8s.io/client-go/tools/clientcmd" "k8s.io/client-go/kubernetes" appsv1beta1 "k8s.io/api/apps/v1beta1"原创 2018-01-16 16:55:33 · 18072 阅读 · 6 评论 -
scylladb 安装及 golang 客户端gocql使用
前言ScyllaDB 是用 C++ 重写的 Cassandra,每节点每秒处理 100 万 TPS。ScyllaDB 完全兼容 Apache Cassandra,拥有比 Cassandra 多 10x 倍的吞吐量,降低了延迟。 ScyllaDB 是性能优异的 NoSQL 列存储数据库。 ScyllaDB 在垃圾收集或者 Compaction 的时候不需要暂停;在常规生产负载的时候可以添加和删除...原创 2018-03-20 14:02:57 · 2999 阅读 · 0 评论 -
以太坊系列---ipc实现方式---管道通信库npipe
背景以太坊rpc有4种实现方式分别是inproc,ipc,http,ws。inproc是进程内部调用,为console使用;http是以http接口方式提供访问;ws是以websocket的方式提供访问。ipc便是进程间通信,以npipe为底层实现,上层采用Json-Rpc为消息格式,并使用go的reflect包实现对内部Api的调用。 ipc通信是用于同一个主机间钱包等客户端与geth...原创 2018-04-27 15:21:49 · 3833 阅读 · 3 评论 -
Linux部署Jaeger
原文链接:https://imscc.io/posts/trace/install_jaeger_on_linux/ 原文作者: 聪少最近在折腾Jaeger,Jaeger官网都是介绍如何通过Docker部署,二进制部署文档基本没有(已咨询过作者,作者说没文档!你参考Docker自己部署好了!!!),所以打算写一篇Linux部署。JaegerJaeger是Uber推出的一款调用链追踪系...原创 2018-05-07 14:26:50 · 4403 阅读 · 2 评论 -
golang调用foundationDB
原文链接:https://imscc.io/posts/foundationdb/golang_api/原文作者: 聪少FoundationDB是苹果苹果公司早起闭源又重新开源的一款KV数据库(一开源就是5.x的版本6666),FoundationDB的核心提供了一个简单的数据模型和强大的事务处理,这种组合允许构建更丰富的数据模型和库,以继承数据库的可伸缩性,性能和完整性。数据建模的目标是设...原创 2018-05-07 15:20:42 · 876 阅读 · 1 评论 -
golang有用的库及工具 之 fasthttp客户端 最通用最有效最简单使用方式
fasthttp 是go语言中最常用性能最好的http请求库。那么如何使用fasthttp 客户端调用http请求。常用http kv请求://http请求func doTimeout(arg *fasthttp.Args, method string, requestURI string, cookies map[string]interface{}) ([]byte,原创 2017-10-31 16:20:04 · 7222 阅读 · 2 评论 -
docker CE/EE 原生支持Kubernetes 之我见
在今天的 DockerCon EU (2017) 上,Solomon 宣布 Docker 将原生支持 Kubernetes,也就是说 Kubernetes 将和 Swarm 一样作为 Docker 平台的编排管理系统。这包括 Docker EE、Docker CE 以及 Docker for Mac/Windows等全平台的支持。 这件事情标志着 容器编排大战宣告着 kuber原创 2017-10-22 15:07:44 · 1341 阅读 · 0 评论 -
golang有用的库及工具 之 sync.Pool改造
一个sync.Pool对象就是一组临时对象的集合。Pool是协程安全的。Pool用于存储那些被分配了但是没有被使用,而未来可能会使用的值,以减小垃圾回收的压力。如下是使用的两种方式:一:func main() { for index := 0; index 100; index++ { go sss() //go ssse()原创 2017-10-22 14:44:13 · 3194 阅读 · 0 评论 -
【golang】go-ConcurrentMap实现
用go实现ConcurrentMap// 泛化的Map的接口类型type GenericMap interface { // 获取给定键值对应的元素值。若没有对应元素值则返回nil。 Get(key interface{}) interface{} // 添加键值对,并返回与给定键值对应的旧的元素值。若没有旧元素值则返回(nil, true)。原创 2016-08-16 15:39:25 · 2357 阅读 · 1 评论 -
【golang】go-channel-goroutine实践2
需求:获取数组数据,对数据的原始数据逐个进行处理,后返回处理完的数据目标:对列表数据进行逐个goroutine并发处理,在用select整合type money_per struct{ id int name string money float64}type MoneyHandler interface { BatchDe原创 2016-08-16 15:30:11 · 593 阅读 · 0 评论 -
【golang】go-channel-goroutine实践1
某些信息从旧的资源池中取出来,经过一些加工处理,再放入新的资源池中,这个过程如果按传统的方式就是采用完全串行的方式效率会很低,粒度太粗了,具体的粒度可以细化以每次所取的单位资源为粒度。有一个资源池存储这person的信息,将每个person从中取出来,之后进行一些处理,再存到新的资源池中,这里用oldarray以及newarray来模拟旧的和新的资源池:代码如下:type原创 2016-08-16 14:06:03 · 560 阅读 · 0 评论 -
go获取协程(goroutine)号
func GetGID() uint64 { b := make([]byte, 64) b = b[:runtime.Stack(b, false)] b = bytes.TrimPrefix(b, []byte("goroutine ")) b = b[:bytes.IndexByte(b, ' ')] n, _ := st原创 2017-08-04 16:45:53 · 8545 阅读 · 0 评论 -
Service Mesh
什么是Service MeshService mesh 又译作 ”服务网格“,作为服务间通信的基础设施层。Buoyant 公司的 CEO Willian Morgan 在他的这篇文章 WHAT’S A SERVICE MESH? AND WHY DO I NEED ONE? 中解释了什么是 Service Mesh,为什么云原生应用需要 Service Mesh。如 Willian Morgan 所原创 2017-09-25 10:06:41 · 1068 阅读 · 0 评论 -
melody websocket 使用
melody websocket原创 2017-10-07 17:15:51 · 1665 阅读 · 0 评论 -
java,go语言 压缩 snappy 的使用
snappy原创 2017-09-22 13:31:36 · 4001 阅读 · 1 评论 -
uber log 使用
log原创 2017-09-22 10:00:18 · 1792 阅读 · 0 评论 -
go echo后端处理跨域的两种方式
跨域问题一般需要在后台解决会比较好。1.第一种方式当然是接受所有的跨域方式:func setAccessOriginUrl(c echo.Context) { c.Response().Header().Set("Access-Control-Allow-Origin", "*")}2.第二种接受指定地址的跨域请求:func setAccessOri原创 2017-09-19 17:00:27 · 3879 阅读 · 0 评论 -
tcp 服务端
1.新建TcpServer type TcpServer struct { // 记录每个IP的连接数量 perIPConnCounter ipmanager.PerIPConnCounter ln net.Listener}func (tc *TcpServer) Start() { var las原创 2017-09-06 17:48:36 · 416 阅读 · 2 评论 -
golang tcp 客户端
最近找了网上tcp客户端的例子,都不是很好,特今天写一个tcp 客户端案例。1.新建tcpclient结构体:type TcpClientModel struct { Conn net.Conn //发送chan SendChan chan []byte //心跳chan ClientPingChan cha原创 2017-09-06 17:27:29 · 5404 阅读 · 1 评论 -
golang有用的库及工具 之 缓存淘汰算法--LRU算法
1. LRU(Least recently used,最近最少使用)算法根据数据的历史访问记录来进行淘汰数据,其核心思想是“如果数据最近被访问过,那么将来被访问的几率也更高”。2. 实现最常见的实现是使用一个链表保存缓存数据,详细算法实现如下:1. 新数据插入到链表头部;2. 每当缓存命中(即缓存数据被访问),则将数据移到链表头部;3.原创 2017-10-27 13:54:53 · 2077 阅读 · 1 评论 -
golang有用的库及工具 之 字符串转换 获取32位 uint32位hash 方法 MurmurHash哈希
const ( c1_32 uint32 = 0xcc9e2d51 c2_32 uint32 = 0x1b873593)// GetHash returns a murmur32 hash for the data slice.func GetHash(data []byte) uint32 { // Seed is set to 37, same as C# versi原创 2017-10-19 18:44:52 · 6690 阅读 · 0 评论 -
golang有用的库及工具 之 一致性哈希(Consistent Hashing)算法
Consistent Hash 可用于 一致性哈希可用于解决服务器均衡问题。经配合 etcd使用git 库地址:https://github.com/stathat/consistentimport "stathat.com/c/consistent"type Hash struct { consistent *consistent.Consistent}f原创 2017-10-20 21:23:54 · 2704 阅读 · 0 评论 -
nsq学习使用
介绍NSQ 是实时的分布式消息处理平台,其设计的目的是用来大规模地处理每天数以十亿计级别的消息。NSQ 具有分布式和去中心化拓扑结构,该结构具有无单点故障、故障容错、高可用性以及能够保证消息的可靠传递的特征。组件介绍nsqd:一个负责接收、排队、转发消息到客户端的守护进程 nsqlookupd:管理拓扑信息并提供最终一致性的发现服务的守护进程(运行时发现消费者找到生产者服务) ...原创 2018-05-14 18:23:49 · 1382 阅读 · 0 评论