- 博客(96)
- 资源 (10)
- 收藏
- 关注

原创 博客迁移通知
起因:公司有个项目需要批量检查多个IP的网络质量,其中一个指标是丢包率,当然用ping是最合适的方法,但是使用ping命令性能太差,Golang又没有批量ping的包开发:目前github只有sparrc写的ping库,不过他的库不支持批量探测多个IP https://github.com/sparrc/go-ping 如果多个IP通知探测会出现串包的问题,请谨慎使用。 再他的启发下,我做了扩
2018-01-02 14:40:07
560

原创 优雅的终止docker容器
起因:本文受到参考资料1的启发 我们线上的服务有不少都是部署在docker中,部署涉及的机器多大几十台, 服务发布时,要求前一个版本的容器必须优雅的退出。 docker容器中的进程是一个任务消费者。不断得从任务队列中取任务,然后进行执行(执行时间较长)假定docker容器的name为test_v1 docker容器中的进程名为atm 也就是说不能简单的docker rm -vf test_
2017-10-10 15:52:34
4268
1

原创 Elasticsearch经验总结(持续补充)
重要 我的博客从今天起开始陆续迁移到 http://vearne.cc 敬请关注 本文新地址 http://vearne.cc/archives/65起因:ES在笔者所在的公司使用也有3年多了,集群的规模达到上百台,期间也有很多的经验,我这里总结出来分享给大家,技术水平有限,如有错误请指正。事项:这些事项,我把它们以问题的形式列出,并会持续补充1. 关于...
2017-03-18 11:50:19
1986
原创 golang中可变长参数的使用
起因: 使用的Redis的时候,需要使用LPUSH 往一个key中一次写入多个value 我使用的是garyburd/redigo 这个库 函数定义如下// Do sends a command to the server and returns the received reply.func Do(commandName string, args ...interface{}) (reply
2017-12-06 12:34:14
2630
原创 业务日志收集方案
起因:我们线上的业务通常会部署到10几台或者几十台机器上,线上的日志如果用salt执行命令远程的grep已经是越来越不方便了,所以我们决定对日志进行统一收集,管理1. 选择方案我们业务日志不算特别的多,因此不想方案过于复杂,并且公司内部已经有ES和kafaka集群 因此可以选方案有 1) rsyslog + kafka + elasticsearch 2)fleuntd + kafka +
2017-11-09 13:29:55
4152
原创 rinetd 在生产环境要谨慎使用
起因:购买了阿里云的redis节点,但是默认阿里云不提供公网IP,所以我在一台阿里云的机器启动了rinetd,做端口的转发服务,开始一切正常,一段时间以后,随着并发力度加大。我们发现redis连不上了,提示Connection reset by peer排查1. 排查Redis为什么会这样,首先我怀疑,是否redis有问题 首先我查看了redis的负载情况,使用INFO 命令# Clients
2017-09-29 14:01:03
12151
3
原创 用grequests实现并发http请求
重要 我的博客从今天起开始陆续迁移到 http://vearne.cc 敬请关注 本文地址: http://vearne.cc/archives/100起因要用http请求探测服务的有效性,多进程,多线程,感觉似乎没有必要,看看有没有协程的方案重要 我的博客从今天起开始陆续迁移到 http://vearne.cc 敬请关注 本文地址: http://ve...
2017-06-22 10:50:07
9180
原创 在一个Python脚本中加载2种不同版本的库
起因: 从ES集群A往ES集群B导数,然后比对2个ES的数据差异,逐个ID比对。由于ES集群A的版本是1.4.x,ES集群B的版本是5.3.x,所以无法使用同一个ES client包1. 加载不同版本的client包对比的过程是,取相同发布时间区间的文章ID,然后比对id的差异 伪码如下:es_A_ids = get_es_A_ids()es_B_ids = get_es_B_ids()dif
2017-06-13 11:12:43
2749
原创 kafka查看队列的消费情况
kafka-run-class.sh kafka.tools.ConsumerOffsetChecker --broker-info --group $group --topic $topic --zookeeper $zk_host:2181
2017-05-15 12:59:57
26289
原创 算法题(6)
题目:已知一个矩阵 matrix = [ ['A', 'P', 'H', 'S'], ['U', 'L', 'O', 'A'], ['O', 'M', 'L', 'K'], ['F', 'B', 'I', 'R'], ]在矩阵中查找多个字符串,字符串的数量可能很多["LFK", "HMM", "RPOOI"]对于字符串”LFK”
2017-03-10 00:44:29
2506
原创 requests 库的另类用法(stream)
重要 我的博客从今天起开始陆续迁移到 http://vearne.cc 敬请关注 本文链接 http://vearne.cc/archives/120起因: 同事让我帮他抓取一批URL,并获取对应URL的标签中的文字,忽略对应URL网站的封禁问题,这个任务并不是一个特别麻烦的事情。然后实际跑起来,却发现流量打的很高,超过10Mb/s。经过排查发现,是因为很多URL,实际...
2017-01-23 13:22:05
1954
原创 rtorrent初探--利用好你的云主机
重要 我的博客从今天起开始陆续迁移到 http://vearne.cc/archives/122 敬请关注起因:有了云主机以后,我常常想能够用它来做什么,当然可以用来挂网站,然后还能做什么,我想到可以把一些下载任务(BT)直接放到云主机来做,经过调研我选择了rtorrent。1. 简介rTorrent为一款纯文本环境BT客户端,具有占用内存小、频宽利用率高、支持 utf-...
2016-12-18 18:57:09
3958
原创 Percona监控工具初探
重要 我的博客从今天起开始陆续迁移到 http://vearne.cc 本文新地址: http://vearne.cc/archives/124 敬请关注起因: 一直找不到合适的MySQL监控工具,正好听同事无意中说起,Percona在2016年4月发布了一个监控套件,可以同时对多个MySQL、MongoDB实例进行监控参考资料: 1. https://www.perc...
2016-11-23 14:03:06
7201
原创 peewee 对象clone函数
起因: 我需要得到peewee对象的clone对象,写个简单的小程序def clone(instance): obj = instance.__class__() # print a._meta.fields data = getattr(instance, "_data") for key in a._meta.fields: # print key
2016-10-20 14:23:21
530
原创 docker 常用命令(持续更新)
删除imagedocker rmi myapp/base给image 打tagdocker tag 4424b58cae58 myapp/base
2016-08-26 15:33:38
690
原创 kingshard初探
起因:之前的相当长时间一直在寻找mysql的分布式解决方案,一直没有特别理想的答案,有同事给推荐了kingshard,所以决定一探究竟。
2016-08-15 08:49:08
4399
原创 gitlab安装
重要 我的博客从今天起开始陆续迁移到 http://vearne.cc 敬请关注 文章新地址 http://vearne.cc/archives/136安装gitlab社区版参考资料: 非常重要 https://about.gitlab.com/downloads/#ubuntu1404 我是直接在ubuntu14.04上安装的 PS:官方文档是最有价值的,我来当下搬运工...
2016-08-02 22:46:18
2092
原创 算法题(5)
题目: 已知一条线段从0 到 10000,给定一个L线段(x,y), 找出所有包含线段L线段 如下图所示,假定 (x, y) 为 (2,4) , 所有能否覆盖L线段的组合为 (0, 4) (0, 5) (0, 6) (1, 4) (1, 5) (1, 6) (2, 4) (2, 5) (2, 6) 接替思路: 观察线段可以看出所有能否覆盖L线段的组合(t1, t2), 左侧的坐标点t1
2016-08-01 14:04:07
547
原创 算法题(4)
题目: 有十个球编号分别为 0 ~ n - 1 ,放在袋中,任意抓2个,求所有可能的情况def choice2(n): ll = [] for i in range(n): for j in range(i+1, n): ll.append((i, j)) return llres = choice2(10)print len(res
2016-07-29 09:42:42
337
原创 《人月神话》读书总结
人月神话的说明,为落后项目增加人手,会导致额外的任务分配开销,协作开发的沟通成本。新分配的人员还需要重新熟悉项目。这就像5核CPU,并不能是5倍的单核CPU的性能。(资源竞争,互斥等等引起的)同样有2年经验且受同样培训的情况下,优秀的专业程序员可以是较差程序员的10倍。概念完整性是系统设计中最重要的考虑因素。要形成整个系统的概念完整性,就必须实施贵族式的专制。设计工作职能由一个或者具有共识的小型
2016-07-25 14:23:18
570
原创 算法题(3)
在不考虑闰年,润日的情况下计算某人的下一次生日from datetime import datetime, timedeltadef solve(birthday): now = datetime.now() now = datetime(now.year, now.month, now.day) year = (now.year - birthday.year) + bi
2016-07-15 10:50:54
593
原创 tornado 数据库初始化
起因: 在使用tornado构建的web服务中,我们常常需要对数据库进行访问,如何数据连接才是最为友好的方式,我们一般写法可能是这样的db.pyclass DB(object): def __init__(self): self.mysql_db = MySQLDatabase(host=mysql_conf['host'], user=mysql_conf['usernam
2016-05-18 11:59:41
2857
原创 我看过的好书推荐
C/C++ 篇 起因:以前一直想有人能给我介绍下有哪些好的计算机方面的书,却也一直没怎么得到高人的点拨,现在自己跌跌撞撞的走个5年职场生活,也算有了写读书经历,可以跟大家分享。我尽量按照体系或者编程语言分类: 公共篇: 书名: 《构建高性能web站点》 推荐理由: 跟web站点性能调优的常用思路和方法都能在这里找到。 书名:《数学之美》 推荐理由: 能使你建立起框架性的,提纲挈领的
2016-04-10 12:27:26
1322
原创 做了个工具类的小网站---tool.admaster.club
欢迎大家使用 http://tool.admaster.club/ 大家有什么工具类的需要,也可以给我评论,我会抽空往上加
2016-04-07 20:14:07
1214
原创 UTF8 encoding is longer than the max length 32766
重要 我的博客从今天起开始陆续迁移到 http://vearne.cc 敬请关注 本文地址: http://vearne.cc/archives/150
2016-04-07 18:19:36
4319
原创 利用redis实现分布式环境下的限频
redis 本身有计数器,并且可以做原子的增1操作,特别适合用来做分布式环境下的限频# coding:utf-8import timeimport threadingfrom redis import StrictRedisclass Counter(object): def __init__(self, redis_url): self.redis_client =
2016-03-30 13:53:52
1636
原创 java newFixedThreadPool 报错
前言: 最近在开发一个web服务 jersey + glassfish 服务的流程大致是这样,通过Restfull 接口接收请求,创建任务推给 由newFixedThreadPool() 创建的线程进行消费。运行一段时间后,发现程序报如下错误Exception in thread "pool-2-thread-161" java.lang.OutOfMemoryError: unable to c
2016-01-13 14:30:13
1452
1
原创 不要给产品不切实际的承诺
从事开发工作数年,时间管理依然是一个困扰我的大问题。 有的时候,产品的时间要求紧。为了能缓解对方的压力,我常常会答应下很大时间压力很大的工作,又或者在不加思索之后答应了某项工作。结果导致把自己搞的非常的累,有时候还会delay,使得对方很不愉快,而我充满愧疚感,也给我自己带来了很深的挫败感。这些天我一直在沉思,其实作为一个开发人员,不切实际的承诺是毫无意义,除了在排期的时候,让对方宽心以外,没有任
2016-01-10 09:01:46
646
原创 我在数据库方面踩过的"坑"
重要 我的博客从今天起开始陆续迁移到 http://vearne.cc 文章新地址 http://vearne.cc/archives/154 敬请关注前言:前段时间在公司内部做了一个分享总结了部分我在使用各种数据库方面的遇到的问题。也在这里分享给大家。强调一下,这里的坑,我是打了引号的,有些坑,不过是某种数据库的特点,或者因为我们错误的事情而引出了问题,并不一定完全就是这种数...
2015-12-20 15:29:50
1457
原创 滥用设计模式不如不用
引子: 想到这个话题,不得不吐槽一个亲身经历的故事要说设计模式,用的最多的莫过于java程序员,尤其是爱讲抽象和继承什么的,曾经有这样一个案例B类业务和C类 业务都会产生订单,然后B类业务和C类业务订单有某些共同字段,比如c1,c2 … …然后公司的老程序员是这样设计类的public class Common {}class B extends Common {}class C extend
2015-11-27 11:03:11
1219
原创 内存计数器实现限频
以分钟为单位计数,超过相应数值泽超频,很简单,不多解释import timeimport threadingclass Counter(object): def __init__(self): self.curr = 0 self.internal_dd = {} self.lock = threading.Lock() def in
2015-11-16 22:00:52
814
原创 redis 启动警告及处理
重要 我的博客从今天起开始陆续迁移到 http://vearne.cc 文章新地址 http://vearne.cc/archives/158 敬请关注 起因: 生产环境的一台redis机器Can't save in background: fork: Cannot allocate memory导致redis服务停止,但是当时机器的内存是64G,redis使用到的内存只...
2015-09-14 22:54:53
9585
原创 https 原理简析
起因:周四下午要在公司做关于https的分享,就顺便结合已经写好的PPT,在优快云 中也分享下。参考资料:加密与解密 电子工业出版社HTTP Over TLS RFC2818The Transport Layer Security (TLS) Protocol RFC5246https://en.wikipedia.org/wiki/Transport_Layer_Security
2015-07-29 10:04:34
974
原创 happybase put()操作默认使用批量?
起因:前段时间,我们把通过happybase向hbase 写数据的操作put() 操作换成了batch() 结果发现性能并没有提升阅读代码,我发现put() 实现使用的就是批量插入 table.py def put(self, row, data, timestamp=None, wal=True): """Store data in the table. Th
2015-07-27 12:12:39
3872
原创 对称加密算法和非对称加密算法速度对比
测试环境: CPU 1 核 Intel 2.2GHZ 内存 1GB 算法 种类 对称加密算法 AES CBC 模式 非对称加密算法 RSA 256加密明文长度为160 bytes 各运行10000次上代码 test_aes.pyfrom Crypto.Cipher import AESimport timeobj = AES.new('This is a key123
2015-07-21 19:39:06
12980
2
原创 python 使用multiprocessing需要注意的问题
重要 我的博客从今天起开始陆续迁移到 http://vearne.cc 敬请关注 本文新地址: http://vearne.cc/archives/166
2015-07-15 14:18:04
4677
原创 python 模块==命名空间?
起因: 想利用模块传递某个变量,修改某个变量的值,且在其它模块中也可见 于是我做了这样一个实验: git@github.com:vearne/test_scope.gitbase.pyvalue = 10b.pyimport basedef hello(): print 'scope base', base.value, id(base.value)main.pyfrom base i
2015-07-13 15:03:09
1748
原创 Delayqueue (python 实现)
起因:几年前为了开发一个监控系统,需要周期性的对系统状态进行检查,因此需要对检查任务进行添加,排队(按时间),移除等操作,无意中发现java jdk 中有DelayQueue,因此实现了一个python版本源码如下:# -*- coding:utf-8 -*-# python 版的 DelayQueue 类 和 Delayed 接口 # from Queue import PriorityQu
2015-07-07 13:24:51
2471
linux下 tree 命令的简易实现
2012-05-05
SGI的STL源代码实现
2012-04-15
SqlMap自动生成小工具SqlMapAutoGen1.0
2012-03-07
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人