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

技术分享之《Mysql快速讲义》

技术分享 648 views
前言:       前两天在望京一朋友公司做了一次技术分享,算是有点收获吧。 先前我在16, 17年就在那边做过几次分享,因为是互相交流,所以大家彼此也都能学到些东西。这次过来捧场的还是那几个韩国人和老乡。韩国人能听懂?他们在中国很多年了,中国通.       长话短说,...
阅读全文

技术分享之《Mysql快速讲义》

3-07 648 views

前言:       前两天在望京一朋友公司做了一次技术分享,算是有点收获吧。 先前我在16, 17年就在那边做过几次分享,因为是互相交流,...
阅读全文

扩展golang的sync mutex的trylock及islocked

Golang 743 views
前言:       golang sync mutex本身是很好好用,但我的业务逻辑里面需要 非阻塞模式的拿锁 及 非阻塞得知锁的状态。那么说这么复杂,简单说是什么个意思? trylock, 我可以用非阻塞的模型进行拿锁,要么拿到锁,要么锁被别人拿到。 islocked, 就是判断锁的状态。 该文章后续仍在不断更新中,...
阅读全文

扩展golang的sync mutex的trylock及islocked

2-27 743 views

前言:       golang sync mutex本身是很好好用,但我的业务逻辑里面需要 非阻塞模式的拿锁 及 非阻塞得知锁的状态。那么说这么复杂...
阅读全文

分析nginx upstream权重为0和删除节点

运维 722 views
前言:         nginx upstream是大家经常使用的东西,通过upstream方法可以轻易的实现服务的负载均衡。 但往往很多人不理解nginx upstream删除主机跟权重配置为0有什么细节上的区别,从官方的介绍里也只能简单得知,weight = 0 不转发新请求,删除主机用来下线。 但你要明白这类操作对于长连...
阅读全文

分析nginx upstream权重为0和删除节点

2-23 722 views

前言:         nginx upstream是大家经常使用的东西,通过upstream方法可以轻易的实现服务的负载均衡。 但往往很多人不理解nginx ...
阅读全文

深入研究golang net/http连接池可用性

Golang 926 views
前言:     又要重构一个高频的http访问服务了,前人留下的老代码实现过程太过诡异,调用链太长,不能达到高内聚低耦合的特性。总的来说,老代码不可触碰,对的,不可触碰 !!! 我想这种感觉大家都知道…  那么这跟我们的标题有什么关系?项目关键的维度就是高频的http访问,这里必然要涉及到...
阅读全文

深入研究golang net/http连接池可用性

2-10 926 views

前言:     又要重构一个高频的http访问服务了,前人留下的老代码实现过程太过诡异,调用链太长,不能达到高内聚低耦合的特性。总的来说,老代...
阅读全文

分析高并发下tcp连接数暴涨的原因

python 1,064 views
前言:         这节主要是聊聊怎么快速定位到问题,并解决问题的。 这次问题更多的是由于造了一个连接池轮子,然后自己坑自己。 事情是这样,一堆Ops找我,说我的任务派发系统连接数高达2w, 还都是established已经建立连接的,其他time-wait, close-wait 这类中间状态很少。 另外该系统是分布...
阅读全文

分析高并发下tcp连接数暴涨的原因

2-02 1,064 views

前言:         这节主要是聊聊怎么快速定位到问题,并解决问题的。 这次问题更多的是由于造了一个连接池轮子,然后自己坑自己。 事...
阅读全文

解决peewee的异步非阻塞和多进程问题

python 887 views
前言:        熟悉我的朋友大多是知道我喜欢python的peewee orm,因为他的源码简单,api使用简单,可扩展性强。可能这事都传出去,所以这段时间连续有两个老铁问我peewee的问题。我想这两个问题还有些代表性,所以干脆简单总结下发个文章。 该文章后续仍在不断更新中, 请移步到原文地...
阅读全文

解决peewee的异步非阻塞和多进程问题

1-29 887 views

前言:        熟悉我的朋友大多是知道我喜欢python的peewee orm,因为他的源码简单,api使用简单,可扩展性强。可能这事都传出去,...
阅读全文

golang channel提前close丢失数据?

Golang 1,096 views
前言:        很无聊,闲来无事看golang一些开源代码,发现有些人作为生产者把消息扔到channel就直接顺手给close掉了,也不等消费者消费完。有些惊奇,这不会丢数据么?按照字面上的意思,我既然close了,呢么消费者应该被唤醒退出。 但经过我的测试发了大量 ch <- data 之后,立马clo...
阅读全文

golang channel提前close丢失数据?

1-25 1,096 views

前言:        很无聊,闲来无事看golang一些开源代码,发现有些人作为生产者把消息扔到channel就直接顺手给close掉了,也不等消费...
阅读全文

探讨tcp服务端代码热更新的问题[上]

Golang 946 views
前言:        对于代码的热更新我想大家都感兴趣,这也确实显得更加的高大上。 那么问题来了,你真的需求代码热更新么?  真的有必要设计这么复杂么?  强制更新代码会扣你工资?  more ?   我想大家心里都有自己的答案。  作为一个技术及其时尚的coder,是有追求的,...
阅读全文

探讨tcp服务端代码热更新的问题[上]

1-21 946 views

前言:        对于代码的热更新我想大家都感兴趣,这也确实显得更加的高大上。 那么问题来了,你真的需求代码热更新么?  真的有...
阅读全文

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

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

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

1-19 1,441 views

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

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

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

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

1-11 1,691 views

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

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

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

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

1-03 1,498 views

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

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

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

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

12-08 1,988 views

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

技术分享之redis高级讲义

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

技术分享之redis高级讲义

12-02 1,720 views

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

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

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

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

11-25 1,577 views

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

设计不可更改的python常量类

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

设计不可更改的python常量类

11-21 1,730 views

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

Golang使用redis protocol实现pubsub通信

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

Golang使用redis protocol实现pubsub通信

11-15 2,272 views

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

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

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

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

10-22 1,827 views

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

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

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

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

10-17 1,987 views

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

golang双端链表list remove nil问题

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

golang双端链表list remove nil问题

9-27 1,766 views

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

python requests response值判断

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

python requests response值判断

9-15 2,431 views

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