自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(96)
  • 资源 (10)

原创 博客迁移通知

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

2018-01-02 14:40:07 358

原创 优雅的终止docker容器

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

2017-10-10 15:52:34 3316 1

原创 Elasticsearch经验总结(持续补充)

重要 我的博客从今天起开始陆续迁移到 http://vearne.cc 敬请关注 本文新地址 http://vearne.cc/archives/65起因:ES在笔者所在的公司使用也有3年多了,集群的规模达到上百台,期间也有很多的经验,我这里总结出来分享给大家,技术水平有限,如有错误请指正。事项:这些事项,我把它们以问题的形式列出,并会持续补充1. 关于...

2017-03-18 11:50:19 1786

原创 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 1934

原创 业务日志收集方案

起因:我们线上的业务通常会部署到10几台或者几十台机器上,线上的日志如果用salt执行命令远程的grep已经是越来越不方便了,所以我们决定对日志进行统一收集,管理1. 选择方案我们业务日志不算特别的多,因此不想方案过于复杂,并且公司内部已经有ES和kafaka集群 因此可以选方案有 1) rsyslog + kafka + elasticsearch 2)fleuntd + kafka +

2017-11-09 13:29:55 3076

原创 rinetd 在生产环境要谨慎使用

起因:购买了阿里云的redis节点,但是默认阿里云不提供公网IP,所以我在一台阿里云的机器启动了rinetd,做端口的转发服务,开始一切正常,一段时间以后,随着并发力度加大。我们发现redis连不上了,提示Connection reset by peer排查1. 排查Redis为什么会这样,首先我怀疑,是否redis有问题 首先我查看了redis的负载情况,使用INFO 命令# Clients

2017-09-29 14:01:03 8174 2

原创 用grequests实现并发http请求

重要 我的博客从今天起开始陆续迁移到 http://vearne.cc 敬请关注 本文地址: http://vearne.cc/archives/100起因要用http请求探测服务的有效性,多进程,多线程,感觉似乎没有必要,看看有没有协程的方案重要 我的博客从今天起开始陆续迁移到 http://vearne.cc 敬请关注 本文地址: http://ve...

2017-06-22 10:50:07 8518

原创 在一个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 1691

原创 kafka查看队列的消费情况

kafka-run-class.sh kafka.tools.ConsumerOffsetChecker --broker-info --group $group --topic $topic --zookeeper $zk_host:2181

2017-05-15 12:59:57 23917

原创 算法题(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 2332

原创 requests 库的另类用法(stream)

重要 我的博客从今天起开始陆续迁移到 http://vearne.cc 敬请关注 本文链接 http://vearne.cc/archives/120起因: 同事让我帮他抓取一批URL,并获取对应URL的标签中的文字,忽略对应URL网站的封禁问题,这个任务并不是一个特别麻烦的事情。然后实际跑起来,却发现流量打的很高,超过10Mb/s。经过排查发现,是因为很多URL,实际...

2017-01-23 13:22:05 1643

原创 rtorrent初探--利用好你的云主机

重要 我的博客从今天起开始陆续迁移到 http://vearne.cc/archives/122 敬请关注起因:有了云主机以后,我常常想能够用它来做什么,当然可以用来挂网站,然后还能做什么,我想到可以把一些下载任务(BT)直接放到云主机来做,经过调研我选择了rtorrent。1. 简介rTorrent为一款纯文本环境BT客户端,具有占用内存小、频宽利用率高、支持 utf-...

2016-12-18 18:57:09 3628

原创 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 6908 4

原创 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 405

原创 docker 常用命令(持续更新)

删除imagedocker rmi myapp/base给image 打tagdocker tag 4424b58cae58 myapp/base

2016-08-26 15:33:38 586

原创 kingshard初探

起因:之前的相当长时间一直在寻找mysql的分布式解决方案,一直没有特别理想的答案,有同事给推荐了kingshard,所以决定一探究竟。

2016-08-15 08:49:08 4252

原创 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 1760

原创 算法题(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 447

原创 算法题(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 249

原创 《人月神话》读书总结

人月神话的说明,为落后项目增加人手,会导致额外的任务分配开销,协作开发的沟通成本。新分配的人员还需要重新熟悉项目。这就像5核CPU,并不能是5倍的单核CPU的性能。(资源竞争,互斥等等引起的)同样有2年经验且受同样培训的情况下,优秀的专业程序员可以是较差程序员的10倍。概念完整性是系统设计中最重要的考虑因素。要形成整个系统的概念完整性,就必须实施贵族式的专制。设计工作职能由一个或者具有共识的小型

2016-07-25 14:23:18 415

原创 算法题(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 515

原创 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 2308

原创 我看过的好书推荐

C/C++ 篇 起因:以前一直想有人能给我介绍下有哪些好的计算机方面的书,却也一直没怎么得到高人的点拨,现在自己跌跌撞撞的走个5年职场生活,也算有了写读书经历,可以跟大家分享。我尽量按照体系或者编程语言分类: 公共篇: 书名: 《构建高性能web站点》 推荐理由: 跟web站点性能调优的常用思路和方法都能在这里找到。 书名:《数学之美》 推荐理由: 能使你建立起框架性的,提纲挈领的

2016-04-10 12:27:26 1142 1

原创 做了个工具类的小网站---tool.admaster.club

欢迎大家使用 http://tool.admaster.club/ 大家有什么工具类的需要,也可以给我评论,我会抽空往上加

2016-04-07 20:14:07 1089

原创 UTF8 encoding is longer than the max length 32766

重要 我的博客从今天起开始陆续迁移到 http://vearne.cc 敬请关注 本文地址: http://vearne.cc/archives/150

2016-04-07 18:19:36 3729

原创 利用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 1425

原创 2016年在读的书

【持续】《编写可读代码的艺术》 【持续】《自制搜索引擎》

2016-03-15 23:43:19 585

原创 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 1025 2

原创 不要给产品不切实际的承诺

从事开发工作数年,时间管理依然是一个困扰我的大问题。 有的时候,产品的时间要求紧。为了能缓解对方的压力,我常常会答应下很大时间压力很大的工作,又或者在不加思索之后答应了某项工作。结果导致把自己搞的非常的累,有时候还会delay,使得对方很不愉快,而我充满愧疚感,也给我自己带来了很深的挫败感。这些天我一直在沉思,其实作为一个开发人员,不切实际的承诺是毫无意义,除了在排期的时候,让对方宽心以外,没有任

2016-01-10 09:01:46 540

原创 我在数据库方面踩过的"坑"

重要 我的博客从今天起开始陆续迁移到 http://vearne.cc 文章新地址 http://vearne.cc/archives/154 敬请关注前言:前段时间在公司内部做了一个分享总结了部分我在使用各种数据库方面的遇到的问题。也在这里分享给大家。强调一下,这里的坑,我是打了引号的,有些坑,不过是某种数据库的特点,或者因为我们错误的事情而引出了问题,并不一定完全就是这种数...

2015-12-20 15:29:50 1259 1

原创 滥用设计模式不如不用

引子: 想到这个话题,不得不吐槽一个亲身经历的故事要说设计模式,用的最多的莫过于java程序员,尤其是爱讲抽象和继承什么的,曾经有这样一个案例B类业务和C类 业务都会产生订单,然后B类业务和C类业务订单有某些共同字段,比如c1,c2 … …然后公司的老程序员是这样设计类的public class Common {}class B extends Common {}class C extend

2015-11-27 11:03:11 963

原创 内存计数器实现限频

以分钟为单位计数,超过相应数值泽超频,很简单,不多解释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 694

原创 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 5898

原创 我的监控世界观(5)--如何在监控中反映业务场景

重要 我的博客从今天起开始陆续迁移到 http://vearne.cc 敬请关注

2015-08-31 18:30:30 1014

原创 https 原理简析

起因:周四下午要在公司做关于https的分享,就顺便结合已经写好的PPT,在CSDN 中也分享下。参考资料:加密与解密 电子工业出版社HTTP Over TLS RFC2818The Transport Layer Security (TLS) Protocol RFC5246https://en.wikipedia.org/wiki/Transport_Layer_Security

2015-07-29 10:04:34 765

原创 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 3226

原创 对称加密算法和非对称加密算法速度对比

测试环境: 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 9341 1

原创 python 使用multiprocessing需要注意的问题

重要 我的博客从今天起开始陆续迁移到 http://vearne.cc 敬请关注 本文新地址: http://vearne.cc/archives/166

2015-07-15 14:18:04 4374

原创 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 1520

原创 Delayqueue (python 实现)

起因:几年前为了开发一个监控系统,需要周期性的对系统状态进行检查,因此需要对检查任务进行添加,排队(按时间),移除等操作,无意中发现java jdk 中有DelayQueue,因此实现了一个python版本源码如下:# -*- coding:utf-8 -*-# python 版的 DelayQueue 类 和 Delayed 接口 # from Queue import PriorityQu

2015-07-07 13:24:51 2092

python对象转json字符串小工具

代码中有例子,注意所有的unicode对象,都被转换成了utf-8的字符串,需要调整的,看下源码,自己改。

2012-12-21

linux下 tree 命令的简易实现

|--movie |--netdriver.rar |--MW150U 2.0 |--WPS-Setup.exe |--Driver Files |--Windows Vista 32bit |--athur.sys |--athurext.cat |--netathur.inf |--Windows Vista 64bit |--athurx.sys |--netathurx.inf |--athurextx.cat 输出形如以上格式的目录结构

2012-05-05

SGI的STL源代码实现

SGI的STL源代码 包括文档和代码。 The Standard Template Library, or STL, is a C++ library of container classes, algorithms, and iterators; it provides many of the basic algorithms and data structures of computer science. The STL is a generic library, meaning that its components are heavily parameterized: almost every component in the STL is a template. You should make sure that you understand how templates work in C++ before you use the STL.

2012-04-15

SqlMap自动生成小工具SqlMapAutoGen1.0

设计思路: 通过java原生的反射机制获取java类的私有字段 1)获取字段名转换成数据库字段名 注意这里有潜规则,默认是这样处理的 createDateTime --> CREATE_DATE_TIME car --> CAR 2)根据字段的java类型获取jdbc类型 我只定义了以下规则 // javaType --> jdbcType rules.put("java.lang.String", "VARCHAR"); rules.put("java.lang.Long", "DECIMAL"); rules.put("java.lang.Integer", "DECIMAL"); rules.put("java.math.BigDecimal", "DECIMAL"); rules.put("java.util.Date", "TIMESTAMP"); 在SqlMapAutoGen类的构造函数中,可以自行修改 3)预先定义了模板 temple.xml (请放在D:/test 目录下) temple.xml定义了insert、update和delete方法 模板中定义了一系列的特殊字符串,如#BASE_COLUMN_LIST# #BASE_COLUMN_LIST# #BASE_COLUMN_LIST#代表数据库字段列表 在SqlMapAutoGen类中,通过程序自动生成这些字符串,然后再做替换写入到文件中 生成的文件也存储在D:/test目录下 文件名 = 表名 + "_SqlMap.xml"

2012-03-07

java开发手册

阿里提供的Java开发手册,大厂出品,有参考意义。

2017-02-16

openssl 官方资料

如果想了解ssh 登陆的安全细节,以及https 证书的细节,非常有帮助

2015-10-10

nginx 官方指导手册

nginx 官方资料,nginx 实践指导手册

2015-10-10

TLS协议包抓包结果文件

使用wireshark抓到TLS 的协议包,参看我的博文《https 原理简析》

2015-07-30

topcoder客户端

用这个客户端登陆topcoder比赛,参与有偿项目的开发

2010-12-29

人脸识别程序(可以用)

可以用,请使用bmp格式的 源代码,程序

2008-10-16

空空如也

空空如也
提示
确定要删除当前文章?
取消 删除