请注意,Zanblog并不支持低于IE8的浏览器,为了获得最佳效果,请下载最新的浏览器,推荐下载 Chrome

心路历程之我的阅读书单

文艺 10,792 views
      这些有序的书单是来自于我的印象笔记,京东,淘宝,亚马逊及一些在线pdf阅读列表整理出来的。  整理这些书单花了不少的时间,在整理的过程中还是很有趣的,   看到一些书名时, 会回想起以前读书的场景和当时的工作生活状态.   十分有趣 .      本来是想用爬虫的方...
阅读全文 15

心路历程之我的阅读书单

5-17 10,792 views

      这些有序的书单是来自于我的印象笔记,京东,淘宝,亚马逊及一些在线pdf阅读列表整理出来的。  整理这些书单花了不少的时间,在...
阅读全文 15

扩展go sync.map的length和delete方法

Golang 38 views
前言:        记得在sync.map出来之前,都是自己用map和rwlock读写锁实现的并发map。 后来,Golang官方在 1.9 加入了协程安全的 sync.map , 性能和安全得以保证,就是没有Length、Size 方法.   至于官方为什么不加Length方法原因,有兴趣的可以看看issue. 简单说官方认为 map这...
阅读全文 0

扩展go sync.map的length和delete方法

1-19 38 views

前言:        记得在sync.map出来之前,都是自己用map和rwlock读写锁实现的并发map。 后来,Golang官方在 1.9 加入了协程安全的&nb...
阅读全文 0

Golang logrus的高级配置(hook, logrotate)

Golang 318 views
前言:         这次聊下最近使用logrus的心得,没有高深的源码,只是一些相对高级的配置吧。golang默认的log模块略显简陋,连基本的info, warn, error 打印方法都没有,不是太适用。 在使用logrus模块之前,我先前都在使用自己封装的log模块,虽然比不上logrus那么多功能,够用是没问题的。&nb...
阅读全文 0

Golang logrus的高级配置(hook, logrotate)

1-11 318 views

前言:         这次聊下最近使用logrus的心得,没有高深的源码,只是一些相对高级的配置吧。golang默认的log模块略显简陋,连基本...
阅读全文 0

使用rpm打包上线部署golang代码

Golang,运维 483 views
前言:       经过一段时间的测试验证,决定使用RPM来做Golang服务的部署方式. 我们组关于代码的部署方式主要有这么几种,Python直接使用virtualenv + py code的方式来上线,Lua 是直接打包,Golang 是先编译生成二进制之后,联合配置文件直接打包。 但由于我们开发的Golang的代码很多是基础组件,需...
阅读全文 0

使用rpm打包上线部署golang代码

1-03 483 views

前言:       经过一段时间的测试验证,决定使用RPM来做Golang服务的部署方式. 我们组关于代码的部署方式主要有这么几种,Python直接使用...
阅读全文 0

基于golang rocksdb实现的高性能队列

Golang 550 views
前言:        高性能队列?  golang channel 可以理解为一个高性能的队列。但他毕竟是基于内存的,如果因各种情况堆积任务,可能会被oom,怎么办?  除去业务上的优化,看看是否有别的选择?  什么redis ?  redis3.x之后倒是有个虚拟磁盘技术,除去内存外,还可以使用磁...
阅读全文 0

基于golang rocksdb实现的高性能队列

12-08 550 views

前言:        高性能队列?  golang channel 可以理解为一个高性能的队列。但他毕竟是基于内存的,如果因各种情况堆积任务...
阅读全文 0

技术分享之redis高级讲义

python,redis,技术分享 680 views
前言:     有段时间没做技术分享了,这次抽时间给大家分享下redis的高级技巧。  记得两年前在公司做过一场redis的源码实现及设计。 这次想继续这个话题,讲下redis集群的具体实现。 但周边人对这个不敢兴趣,毕竟大家是开发人员,反而对redis应用层的使用更敢兴趣。      我...
阅读全文 0

技术分享之redis高级讲义

12-02 680 views

前言:     有段时间没做技术分享了,这次抽时间给大家分享下redis的高级技巧。  记得两年前在公司做过一场redis的源码实现及设计。 这次...
阅读全文 0

记一次内核参数引起的服务崩溃

内核 686 views
前言:     又被阿里云的ecs主机被坑了….  一开始被那个所谓的安全组坑,后来又被 nc 端口空洞坑。。。。 这次是被阿里云默认的内核优化参数给干了….   为啥要用阿里云主机,而不用实体服务器,主要原因在于,我司是自建的机房,且可用性相当的低…   总是网络...
阅读全文 0

记一次内核参数引起的服务崩溃

11-25 686 views

前言:     又被阿里云的ecs主机被坑了….  一开始被那个所谓的安全组坑,后来又被 nc 端口空洞坑。。。。 这次是被阿里云默认的内...
阅读全文 0

设计不可更改的python常量类

python 671 views
前言:       Python到现在也没出来个const方法,当然我们可以使用别的方法来实现。 比如,可以使用enum来定义const… 对的,python社区里不少人这么干的,居然在邮件列表里得到不少人的认同…        const  有什么好处?  最直接的好处是,防止被...
阅读全文 0

设计不可更改的python常量类

11-21 671 views

前言:       Python到现在也没出来个const方法,当然我们可以使用别的方法来实现。 比如,可以使用enum来定义const… 对的,python...
阅读全文 0

Golang使用redis protocol实现pubsub通信

Golang,redis 1,136 views
前言:        闲来无事,加工作不饱和,饱思淫欲的状态下,用golang实现了一个基于redis通信协议的pubsub通信服务端.  这个轮子实现的还很粗暴,内部实现主要用的是golang channel ,不仅可以高效的控制并发读写,而且可以跟tcp连接关联做事件通知。 至于持久化部分还没写完,我现在选用...
阅读全文 0

Golang使用redis protocol实现pubsub通信

11-15 1,136 views

前言:        闲来无事,加工作不饱和,饱思淫欲的状态下,用golang实现了一个基于redis通信协议的pubsub通信服务端.  这个轮...
阅读全文 0

golang基于redis lua封装的优先级去重队列

Golang,redis 898 views
前言:      前两天由于某几个厂商的api出问题,导致后台任务大量堆积,又因为我这边任务流系统会重试超时任务,所以导致队列中有大量的重复任务。这时候我们要临时解决两个事情,一件事情,让一些高质量的任务优先执行; 另一件事情, 要有去重。 rabbitmq不能很好的针对这类情况去重、分优先级。&nbs...
阅读全文 0

golang基于redis lua封装的优先级去重队列

10-22 898 views

前言:      前两天由于某几个厂商的api出问题,导致后台任务大量堆积,又因为我这边任务流系统会重试超时任务,所以导致队列中有大量的...
阅读全文 0

Golang基于redis实现的分布式信号量(semaphore)

Golang,redis 1,088 views
前言:     Semaphore是信号量,作用? 我想大家都知道。semaphore跟mutex的区别我想大家也知道了,我这里就不老生常谈,重复讲解了,有兴趣的朋友可以自行google相关的同步锁文章。 该文章后续会有更新, 原文地址, http://xiaorui.cc/?p=4822 像semaphore,mutex 可以支持多线程,也可以是...
阅读全文 0

Golang基于redis实现的分布式信号量(semaphore)

10-17 1,088 views

前言:     Semaphore是信号量,作用? 我想大家都知道。semaphore跟mutex的区别我想大家也知道了,我这里就不老生常谈,重复讲解了,有兴趣的...
阅读全文 0

golang双端链表list remove nil问题

Golang 1,004 views
我这个场景是做优先级的任务派发的,因为有几十个厂商,每个厂商还有不同的业务,每个业务也有10个优先级,这样算来整个任务缓冲池里最少又要几百个队列。 这里没用channel,因为channel通道太多,没法很好的做输出。  优先级肯定是有调度器主动去pop数据,这里选择了使用container/list提供的双端列表。  ...
阅读全文 0

golang双端链表list remove nil问题

9-27 1,004 views

我这个场景是做优先级的任务派发的,因为有几十个厂商,每个厂商还有不同的业务,每个业务也有10个优先级,这样算来整个任务缓冲池里最少又要几百个队列。 ...
阅读全文 0

python requests response值判断

python 1,414 views
好久没写文章了,前些日子在忙活婚礼的事情.  9 2 在韩国婚礼算是完美结束了。 一生的另一半算是妥当了,心轻松了,可以放荡了.  这段时间在技术上没太多的思考的,只是碰到几个虾米小问题。 往往问题不大,也会致使你花心思去排解。  今遇到一个reqeusts返回值的一个问题,花了不短时间调,后来发...
阅读全文 0

python requests response值判断

9-15 1,414 views

好久没写文章了,前些日子在忙活婚礼的事情.  9 2 在韩国婚礼算是完美结束了。 一生的另一半算是妥当了,心轻松了,可以放荡了.  这段时间在...
阅读全文 0

分析openresty redis的长连接问题

redis 1,242 views
前言:    为了避免被勿喷,标题中提到的openresty坑,其实是 resty库使用不当,或者业务逻辑导致的。  我这边的高频接口多使用openresty构建的api,  这次遇到性能上不去的问题。 通过不断的追加的日志和strace系统调用,发现openresty redis没有使用长连接,更没有连接池….  ...
阅读全文 0

分析openresty redis的长连接问题

8-26 1,242 views

前言:    为了避免被勿喷,标题中提到的openresty坑,其实是 resty库使用不当,或者业务逻辑导致的。  我这边的高频接口多使用open...
阅读全文 0

Python服务端内存泄露的处理过程

python 1,443 views
吐槽 内存泄露 ?  内存暴涨 ? OOM ? 首先提一下我自己曾经历过多次内存泄露,到底有几次? 我自己心里悲伤的回想了下,造成线上影响的内存泄露事件有将近5次了,没上线就查出内存暴涨次数可能更多。这次不是最惨,相信也不会是最后的内存的泄露。  以前写过一篇关于内存泄露的问题,...
阅读全文 0

Python服务端内存泄露的处理过程

8-20 1,443 views

吐槽 内存泄露 ?  内存暴涨 ? OOM ? 首先提一下我自己曾经历过多次内存泄露,到底有几次? 我自己心里悲伤的回想了下,造成线上影...
阅读全文 0

golang redigo lua解决性能问题

Golang,redis 1,611 views
前言:     我们知道使用redis计数可以使用incrby, hincrby 等计数指令,因为redis的工作线程只有一个,所以保证了并发原子的控制。  由于我们的业务的特殊性,有增有减,有各类状态值的判断,尤其在异常情况下,计数会减到0以下,负数是不能忍的。 所以,我们需要尽量保证各个计数器值是正整数。&nb...
阅读全文 0

golang redigo lua解决性能问题

8-16 1,611 views

前言:     我们知道使用redis计数可以使用incrby, hincrby 等计数指令,因为redis的工作线程只有一个,所以保证了并发原子的控制。  由...
阅读全文 0

多进程下gevent遇到管道冲突问题

python 1,723 views
前言: 在我的Python技术群里,有朋友问我一个gevent的问题,在multiprocessing 使用 gevent的时候,为什么会出现管道卡死的情况?   一听到这些字眼,我当时迅速回答出答案, 是由于 坑爹的 monkey.patch_all() 补丁引起的..   一般来说,盲目使用monkey.patch_all()的人,可以说对gevent的实现...
阅读全文 0

多进程下gevent遇到管道冲突问题

8-01 1,723 views

前言: 在我的Python技术群里,有朋友问我一个gevent的问题,在multiprocessing 使用 gevent的时候,为什么会出现管道卡死的情况?   一听...
阅读全文 0

慢系统调用引起的signal无效问题

python 1,331 views
前言: 前两天一同事说 遇到一个比较奇妙的问题,说是线程下信号居然无效…    哈哈,我一听注册的信号无效,我内心就知道是怎么个一回事了。 后来经过我的快速排查,也证实了我的想法,确实由于慢系统调用引起signal无效。  在python里,这类场景常见于线程做join阻塞等待的时候...
阅读全文 0

慢系统调用引起的signal无效问题

7-19 1,331 views

前言: 前两天一同事说 遇到一个比较奇妙的问题,说是线程下信号居然无效…    哈哈,我一听注册的信号无效,我内心就知道是怎么...
阅读全文 0

探讨可持久化高并发队列的实现

Golang,架构设计 1,565 views
探讨可持久化高并发队列的实现 … …  为什么会有这样的想法 ? 主流的持久化方案分两类: 实时持久化… 异步持久化…  Redis 的队列持久化是怎么实现的? Golang nsq消息队列的持久化是怎么实现的? ...
阅读全文 0

探讨可持久化高并发队列的实现

7-14 1,565 views

探讨可持久化高并发队列的实现 … …  为什么会有这样的想法 ? 主流的持久化方案分两类: 实时持久化… ...
阅读全文 0

使用dis opcode论证Python的线程安全

python 1,217 views
前言:     群里有不少的朋友来回的问我一个问题。 python线程不是有gil么? 为毛还说计数不是线程安全的么?  list, set, dict 是线程安全么?   先说下答案, 计数不是原子的, list, set, dict 在python里是原子操作。 那么什么是原子操作?硬件的原子说的是 cpu指令集, 软件的...
阅读全文 0

使用dis opcode论证Python的线程安全

7-09 1,217 views

前言:     群里有不少的朋友来回的问我一个问题。 python线程不是有gil么? 为毛还说计数不是线程安全的么?  list, set, dict 是线程安...
阅读全文 0

golang实现封装trycatch异常处理

Golang 1,387 views
社区不少人在谈论 golang 为毛不用trycatch模式,而采用苛刻的recovery、panic、defer组合….    从老外那整了一个trycatch包,感觉不错,拿出来分享下…  Python package main import ( "reflect" ) type TryCatch struct { errChan ...
阅读全文 0

golang实现封装trycatch异常处理

7-06 1,387 views

社区不少人在谈论 golang 为毛不用trycatch模式,而采用苛刻的recovery、panic、defer组合….    从老外那整了一个trycatch包,感觉不错,...
阅读全文 0

设计实现ringbuffer无锁队列(lock free queue)

架构设计 1,615 views
前两天跟同事交流了 无锁队列的问题,发现不少人对这个lock free的概念有些匮乏,这里就简单写个ringbuffer实现lock free的设计理念。  这里拿python举例子,ringbuffer其实就是个数组,单纯的数组结构肯定不能实现线程安全问题。 该文章写的有些乱,欢迎来喷 ! 另外文章后续不断更新中,请到原文地址查看更新...
阅读全文 0

设计实现ringbuffer无锁队列(lock free queue)

6-24 1,615 views

前两天跟同事交流了 无锁队列的问题,发现不少人对这个lock free的概念有些匮乏,这里就简单写个ringbuffer实现lock free的设计理念。  这里拿python...
阅读全文 0