2016-10-19 postgres over 用法

总结下postgres中over的用法。

  1. func() OVER( [PRITITION BY col1] ORDER BY col2 [DESC ] )

常用窗口函数汇总:

  1. row_number(): 从当前开始,不间断,如123456
  2. rank() :从当前开始,会间断,如122456
  3. dense_rank():从当前开始不间断,但会重复,如122345
  4. percent_rank():从当前开始,计算在分组中的比例,如00.250.250.75101 0-1不断地循环
  5. cume_dist():当前行的排序除以分组的数量,如分组有4行,则值为0.250.50.751
  6. ntile(num_buckets integer):从1到当前值,除以分组的的数量,尽可能使分布平均
  7. lag(value any [, offset integer [, default any ]]):偏移量函数,取滞后值,如lag(column_name,2,0)表示字段偏移量为2,没有则用default值代替,这里是0,不写默认是null
  8. lead(value any [, offset integer [, default any ]]):偏移量函数,取提前值,类上
  9. first_value(value any):返回窗口框架中的第一个值
  10. last_value(value any):返回窗口框架中的最后一个值
  11. nth_value(value any, nth integer):返回窗口框架中的指定值,如nth_value(salary,2),则表示返回字段salary的第二个窗口函数值
未分类
2016-10-16 Docker快速翻越GFW札记

记录了PPTP、L2TP、Shadowsocks、IKEv2借助docker的翻越方式。

gfw
2016-10-09 HBase golang初探

最近要进行大数据相关的任务,牛刀小试,先将最基础的HBase搭建并实践起来。本文借用docker,快速搭建HBase基础环境,并使用go结合thrift调用相关API进行数据操作。

hbase go
2016-09-06 基于grpc的微服务实践

简介

近一两年来,微服务架构已经成为热门话题(microservices.io),与传统的一体化应用架构相比,微服务架构在开发、测试、部署方面都有众多吸引人之处,越来越多没有历史包袱的新项目都启用微服务架构的模式来开发。

我们这个团队经过深入思考之后,决定在一起美这个APP的后端开发中,选择go作为开发语言,采用微服务模式来实现,经过近半年的实践,形成了一些心得,简单总结后分享出来,希望能够给大家一些帮助。

go grpc
2016-07-22 postgres主从配置

好久没有写文章了,由于生产需要,将postgres的主从配置研习了一遍。为了方便起见,使用docker来简化操作。物理机上的操作类同。

postgres db
2016-05-29 nsq的docker之旅

NSQ是用go语言开发的一款消息队列,本文记录了借助docker快速搭建开发过程。

1.docker network创建
docker network create nsq

2.运行docker容器nsqlookupd
docker run -d --net=nsq -p 4160:4160 -p 4161:4161 --name nsqlookupd nsqio/nsq /nsqlookupd

3.运行docker容器nsqd
docker run -d --net=nsq -p 4150:4150 -p 4151:4151 --name nsqd nsqio/nsq /nsqd --broadcast-address=192.168.99.111 --lookupd-tcp-address=nsqlookupd:4160

其中 broadcast-address 是公网地址

4.运行docker容器nsqadmin
docker run -d --net=nsq --name nsqadmin -p 4171:4171 nsqio/nsq /nsqadmin --lookupd-http-address=nsqlookupd:4161

然后就可以通过:4171来访问nsqadmin啦

赶紧发两条消息看看吧

  1. curl -d 'hello world 1' 'http://192.168.99.111:4151/put?topic=test'
  2. curl -d 'hello world 2' 'http://192.168.99.111:4151/put?topic=test'
go nsq
2016-04-26 Mac下为树莓派3安装Ubuntu Mate 16.04

应用于树莓派3的Ubuntu Mate 16.04出来啦,赶紧把官方自带的raspbian换掉吧😊

未分类
2016-04-13 go sql之Query

1、使用tx时,rows没有close是否会导致有未被释放的数据库连接?
当最后执行tx.Commit()或tx.Rollback()时,相应的连接会被关闭。不会存在未被释放的情况。但仍然建议养成关闭的好习惯。

2、rows.Err()的作用是什么?
Err()的相关注释是这样写的:Err returns the error, if any, that was encountered during iteration.
但请注意,这些错误,仅与迭代过程中rows错误相关,比如在下一个Next()时,数据库出问题了,或者tx已经结束,tx发生错误。
与Scan()处产生的错误没有任何关联。
所以,这两部分错误应该单独分别处理。

3、rows.Next()中进行tx.Exec(update)操作?
如果rows.Next()是由tx发起的,update语句中包含$1转译,则会报错。此时update相关,应该放到Next循环之外进行。
如果进行无转移update,则允许该操作。
如果rows.Next()是有DB发起的,则以上操作都是允许的。

go sql
2016-04-07 [go基础总结]——bytes包

总结下bytes包中的各操作。

go
2016-04-03 grpc over tls

grpc本身可以工作于常规的tcp模式,但出于数据交换的保密性及安全角度考虑,在其上加一层tls也是极好的。

go grpc
First
1
2
3
4
5
End