- 博客(44)
- 资源 (1)
- 收藏
- 关注

原创 BloomFilter应用与D-Lelft BloomFilter实现
此篇文章是开发过程中对BloomFilter应用场景的一些介绍,另外项目中实现了D-Left BloomFilter,相关实现时一些注意的地方,简单介绍下!首先看一些应用场景:1.海量的黑白名单。2.爬虫抓取时重复的URL处理。3.数据key是否存在检测4.(一些面试题几十亿不重复整数中判断其中一个整数是否存在的问题,BitMap/BloomFilter能很好的解决)。。。
2012-11-25 19:52:24
2566
5

原创 基于redis分布式缓存实现
简单说明下,写此文章算是对自己近一段工作的总结,希望能对你有点帮助,同时也是自己的一点小积累。一.为什么选择redis在项目中使用redis做为缓存,还没有使用memcache,考虑因素主要有两点:1.redis丰富的数据结构,其hash,list,set以及功能丰富的String的支持,对于实际项目中的使用有很大的帮忙。(可参考官网redis.io)2.redis单点
2012-11-17 20:59:36
40054
10

原创 java nio之数据读写时无限循环分析与解决
写这片文章是因为自己昨天刚解决了一个十个月前碰到的问题!当时苦于网上高手无人回答,也苦于自己当时没有时间去钻研为什么! 问题是:通过网上实例以及java网络编程这本书写java nio简单的测试服务器时发现,都是注册读写事件后然后分别处理相应的事件就行了,这样本没错,可对于后续对注册事件的操作,再也没有看到与之相关实例与说明。然而,就这样完事以后,服务器端要么是无限读事件与写事件有效,要么是客户端接收的数据是重复的好几条,在高并发时甚至上百上千。
2010-08-17 10:07:00
7036
原创 windows phone推送介绍(https)
windows phone的推送框架,可参考官网(http://msdn.microsoft.com/zh-cn/library/ff402558(v=vs.92).aspx),里面有详细的介绍,1.推送的基本流程客户端跟微软cloud service生成一个URI(分HTTP与HTTPS的,后面会有介绍),服务器拿到客户端生成的URI,服务器端给此用户发送推送消息,即给此URI发
2014-07-25 11:40:55
1137
原创 IOS push推送(javapns包与notnoop包的区别)
使用java进行IOS推送,开源的jar包比较有名的主要有两个,一个是javapns,一个是notnoop.对于javapns,之前有介绍过,内存泄漏。这个问题算比较严重,表现在:1.对于已推送的notify会一直保存,不会回收。2.默认情况下对应的Vertor保存notify,此数组会自动扩容,大批量时,也会有内存极增的问题。3.为了避免socket发送过程中,与苹果服务
2014-03-31 11:37:57
3290
1
原创 redis线上环境监控脚本(python脚本)
最近一个月没啥更新,身边发生太多事,毕业几年来霉运太多,虽然不信命,但我信有些人命的确好,有些人命的确差,其它不说也罢。(大家一定要注意身体啊,健康比任何东西都重要)本文要监控的这个脚本,是在一个月前左右,对于线上redis中项指令操作需要进行统计分析时写的一个工具:一.需求由于是其于client的分布式缓存,需要知道每个结点,当前每秒所处理的指令有哪些,主要集中在哪些操作,哪些操作过
2013-04-24 18:34:35
4890
1
原创 MongoDb学习
下周起,有个小项目中要使用MogoDb来进行存储,选用它,考虑到其面向对象存储,且业界表现不俗的口碑。另外一个为了以后更大的项目能应用,也算一点技术积累吧。周末无事,在官网文档的帮忙下,边看边写了一些测试用例,简单使用后,算是懂得如何使用了。官网上相关资料进行了简单的记录,对入门算是有个简单的帮忙:一.下载与安装下载地址:http://www.mongodb.org/dow
2013-03-24 22:03:39
2155
原创 基于javacc与基于java SQL解析器实现的一点心得
背景由于项目中mysql的日志格式只能选用MIXED格式(binlog存在一定的局限性,请参考),因此需要解析SQL语句。在查找的SQL语句处理器中,都有一定的局限性,而所选中,其中一个基于javacc实现的解析器JSqlParser,使用起来方便,而且代码结构模块很好,基于其重构也比较简单。虽然项目很久没更新与维护了,基于其改造也可以接受,因此选用了JSqlParser,而这也有了后
2013-03-16 17:36:27
7548
原创 redis server与client通信协议介绍
今天在整理以前开发相关时的一些资料,其中对于redis protocol的解析有些小记录,记录在此:一.reidis client-server协议是有如下特点1.实现简单2.能够被计算机快速解析。3.使用者也容易理解二.通信client与redis server建立TCP连接,每个命令与数据传送最后都以\r\n结尾。Redis跟据不同的命令进行不同的回复。
2013-01-16 19:13:36
7625
原创 记一次线上分布式redis服务BUG发现与修复过程
此博客为记录今天在线上发现分布式缓存服务的一个BUG的过程与相关解决。问题:收到线上服务报警,有更新失败的操作,与是上线环境查看相应日志(服务由于并发的原因,偶尔性失败,没有影响)但是发现服务所占资源比平时高一些,进行了一些排查!确认服务线程:top –c 指令查看如下:进程13603服务,使用CPU与MEM都比较大,保存其相应的堆栈信息快照:jstack
2013-01-11 19:09:08
2818
原创 linux系统性能监控
在去年12月,没更新什么博客,有点小遗憾。12月的工作都是在做一个迁移方案以及相关代码的编写,相关性能测试。这段时间对于linux的系统性能相关参数,以及相关的监控工具学到了很多,相关资料也看了不少,算是有些小理解了。在这段时间,其中oscon2009-linux-monitoring.pdf这个文档介绍的最详细,也比较系统,学到了很多。有需要的可下载相关英文文档供学习。性能调试是发现系统
2013-01-01 15:18:22
1356
原创 mysql的半同步机制介绍
mysql主从备份之间存在同步,半同步与异步的方式,对于同步与异步相对而言比较好理解,但是同步存在延迟比较大,效率不高,异步又不能百分百保证数据的一致性。而半同步方式正好是两者的兼容。 mysql半同步模式是在mysql5.5版本以后增加的,所谓半同步指当master事物提交后,等待slave接收日志后才返回给应用层表示成功,事物足够小,延迟较小的话,通过半同步的模式,牺牲较小的性能就能
2012-12-28 21:46:32
2317
原创 mysql主从同步延迟方案解决的学习心得
无意中看到2012华东架构师大会主页(http://atcc.mysqlops.com/#video_show),PS:现在架构师大会好多!在里面看了mysql异步延迟解决方案的PPT,对于提出的解决方案有些共鸣,分享下mysql 主从同步的目的应该有很多,有的是为了备份,有的是为了读写分离,看具体需求。但主从机制是一样的:mysql主从的实现是,mysql master被使用后,
2012-11-25 22:12:07
9687
原创 Mysql console整数time以及IP查询相关函数调用
这两天有个QA在询问说,数据库console,查看时间好麻烦,因为数据库存储的时间是BigInt,的确不知道是什么!印象中有相关函数转化,如下:mysql数据库存储时间,一般都会设计BigInt类型,10位,或者13位, 或者更大,其中13位是毫秒,但是在通过Console查询数据库时间时,bigint为整数不方便查看。mysql提供了对应日期转化的函数其中FROM_UNIXTIM
2012-11-20 20:04:12
1664
原创 RethinkDB介绍
无意中看到redis作者在博客中推荐了RethinkDB,早上来简单了解了下,记录下:RethinkDB是一个完全支持Memcached协议、数据可持久化的工业级key-value存储系统。RethinkDB官网介绍如下:RethinkDB is built to store JSON documents, and scale to multiple machines with v
2012-11-15 10:23:59
7976
原创 HornetQ异步消息系统介绍
一.介绍HornetQ(官网:http://www.jboss.org/hornetq)是一个支持集群和多种协议,可嵌入、高性能的异步消息系统。HornetQ完全支持JMS,HornetQ不但支持JMS1.1 API同时也定义属于自己的消息API,这可以最大限度的提升HornetQ的性能和灵活性。hornetq一直在更新,将会支持更多的协议。现在2.2.14为最新的稳定版本。项目中
2012-11-05 20:04:48
2893
原创 redis2.4与2.6 性能比较
今天在写基于Mysql Binlog刷新redis缓存的项目时,刚完成部分功能开发,整个流程走通了。突然发现测试机自己安装了redis2.4.2与redis2.6.2两个版本,因此顺手想在测试机上跑下redis相关性能,看有多大的提高:测试程序是redis自已的redis-benchmark, 参数为:src/redis-benchmark -h host -p port -c 10 -n
2012-10-31 19:33:01
1886
原创 淘宝tair的学习心得相关记录
晚上回家,想起前一阵子看淘宝Tair相关资料,其实去年tair开源时就有相关关注,但是印象不多,最近重新翻阅了相关资料,感觉很详细,受益非浅,表示感谢,小记了一下,供学习与参考:(http://www.oschina.net/p/tair)一.Tair的介绍Tair是由淘宝网自主开发的Key/Value结构数据存储系统.它默认支持基于内存和文件的两种存储方式,分别和我们通常所说的缓存和持久
2012-10-30 23:00:24
7156
1
原创 LevelDB 介绍
早上过来,微博上无意中看到有人转LevelDB相关实现的文章,突然脑海里对这个k/v数据库记得曾经有个印象,因为记得淘宝tair是基于此实现的,(有时间记录下阅读tair对其架构的简单记录笔记),为此上网查了相关资料,简单记录下,以备以后有需要可以快速的查看。以下为官网上介绍的简单翻译:一.LevelDB是一个高效的key/value存储库,由google开源,提供了基本的Sring类型的
2012-10-30 10:38:31
2741
原创 redis 2.6 新功能介绍及安装相关问题
redis2.6在前两天发布了(http://redis.io/download),当天下载的时候,在make时一堆编译错误,后来看issue,跟linux系统版本及位数有关。 昨天作者 antirez发布了2.6.2,此版本修复了一些linux版本不兼容导致make不通过的问题,可是下下来以后,发现在测试机编译还是有些问题,与是在issue上提出一个问题:(https://github
2012-10-29 13:09:56
4751
原创 Eclipse上安装ivy插件
Apache Ivy 是Apache Ant 下的一个子项目。Apache Ivy是一个优秀的管理(记录、跟踪、解析和报告)项目依赖的工具,提供了强大的依赖管理功能,可与Apache Ant紧密集成。项目 相关网址:(http://ant.apache.org/ivy/) 由于项目使用ant,所以项目中管理工具选用了Apache Ivy,还不是Maven. 本篇主要是介绍
2012-10-28 19:30:25
7514
原创 基于tungsten监测mysql数据修改系统介绍
一.项目背景项目中有个全文检索系统,此系统中需要知道应用中数据的实时更新情况,如增加,删除,这些对于索引与数据库数据的同步都很重要。针对于此处理的方式一般有两种,一种是应用层修改,直接发送消息给检索系统,此对系统的消耗是比较大的,一般不可取;另一种是应用系统跟检索系统之间有一种同步机制,可以通过计算ID checksum值的方式来保证数据的同步,此方式在公司相关的系统中都有应用,也是一种可行的
2012-10-23 10:30:19
3807
原创 Mysql Binlog三种格式介绍及分析
一.Mysql Binlog格式介绍 Mysql binlog日志有三种格式,分别为Statement,MiXED,以及ROW!1.Statement:每一条会修改数据的sql都会记录在binlog中。优点:不需要记录每一行的变化,减少了binlog日志量,节约了IO,提高性能。(相比row能节约多少性能与日志量,这个取决于应用的SQL情况,正常同一条记录修改或者插入row
2012-10-17 19:24:07
51475
1
原创 tungsten API 同步日志清除Binlog失败的BUG解决
在简单修改tungsten API实现日志解析完成后,切换到下一个日志前,会进行此日志清除操作。此操作的目的是防止RelayLog同步mysql master日志过多,引起磁盘空间占用过多的问题。此操作在BinlogPosition reset方法中增加了clearFile相关操作。 实现应用时发现一个问题:第一个解析的Binlog日志删除不了,以及中间偶尔会有一个binlog日
2012-10-13 12:48:16
1858
原创 基于tungsten API 同步mysql binlog出现EOF packet received的问题解决
tungsten是一个开源的数据库同步工具,详细可参考官网(http://en.wikipedia.org/wiki/Tungsten) 项目需要,需要实时知道mysql更新的数据,因此需要同步对应mysql结点的binlog日志数据并解析,对于同步与解析tungsten 相关API都能实现。其中日志同步主要是RelayClient类,还解析是MysqlExtractor类,对于
2012-10-09 22:34:51
2394
原创 redis事物介绍与应用
研究reids与使用已经有几个月的时间,中间自己总结了不少文档以及相关资料,接下来时间,会陆续分享一些相关资料,并且介绍其在我们应用中的使用情况。下面是redis事物的相关介绍(参考redis.io):一.事物的使用1.Redis事物通过MULTI命令开始。 这条命令总是返回OK。2.然后用户可以执行多条指令,redis不会马上执行这些指令,还只是放入到队列中。3.当执
2012-07-19 10:46:03
8712
原创 javamail发信带附件的问题
做过很长时间的邮件解析功能,对于javamail及邮件eml处理还是比较熟悉。今天有个需求实现发信,并带有附件。项目中对于文件上传,使用apache自带的DiskFileUpload类。发送邮件时可以得到InputStream流。对于一个附件,其即为一个bodypart,对于pa
2011-08-16 20:14:54
2344
原创 thrift介绍与学习
1.trhfit基本介绍Thrift是 一个跨平台,支持多语言的,通过定义IDL文件,自动生成RPC客户端与服务端通信代码的工具集合,也可以说是框架。与之相类似的还有google的protocolbuffer.2.thrift官网Thrift是由facebook开
2011-08-04 19:33:32
3724
原创 html5之文件与图片拖放上传
前一阵子听了前端的一个分享,其中介绍了HTML5中的一些新特性,特别感兴趣的是文件上传拖放上传:今晚前端同事提起,刚查了下资料,有些小失望,不过功能真的很实用。我的理解是: 对于图片他们是编码成了data:image/jpeg;base64,/9j/
2011-08-03 00:05:44
1710
原创 连接池未关闭问题的发现与解决
最近项目上线,但是大下午的客服反应项目登录页面很慢,SA发现后立马重启后项目访问速度恢复。 排查问题时,发现nginx的页面访问速度都是在十秒左右,有部分二十秒,这个时间很奇怪。日志显示,项目并没有什么特殊的错误异常。跟据经验立马确认了下连接池的maxwait时间为10000,
2011-08-02 22:11:01
10923
原创 PrintWriter write与println方法的区别
PrintWriter在以下以pw代替,在写client与server进行测试的通讯程序时,用pw.println(str)可以把数据发送给客户端,而pw.write(str)却不行!查看源码发现: pw.println(str)方法是由write方法与printl
2011-08-01 14:02:19
3692
原创 thrift,Protocol Buffer,avro基本介绍
接下来项目中会用到thrift:一个跨平台,支持多语言的,通过定义IDL文件,自动生成RPC客户端与服务端通信代码的工具(谈不上框架,后面学习中会记录下thrift学习相关的东西) 在查找thrift学习资料中,了解到与之类似的有google的protocol buff
2011-07-31 12:12:35
4670
原创 Hadoop简介
以下Hadoop的简介是从百度百科上搜索到的,完全是为了普及下概念知识,记录下!公司有DFS,看简介跟HDFS很项,呵,想了解下另外HBase,在09年第一个项目的数据库设计时当时老大建议我把表设成按属性例来存储,但是终究还是存储在数据库,当时我没有赞同! Hba
2011-07-30 22:23:54
1126
转载 mysql性能优化
在iteye上看到的个关于mysql优化的教程,还可以,有些地方表示赞同,转下,记录下,最近自己也在处理公司内部 关于连接的问题,下周会整理成章,记录一下:转载地址:http://cloudera.iteye.com/blog/1036353
2011-07-30 21:52:50
1146
原创 oracle jndi配制问题
<br /><br />在维护以前的项目中,一次JNDI的配制让我记忆犹新:<br /> <br />项目情况是,由于增加一个oracle的JNDI,我在META-INF中的context.xml中增加了相应的配制:<br /><Resource name="jdbc/orclogin" auth="Container" type="javax.sql.DataSource" maxIdle="30" maxWait="10000" <br />maxActive="100" username="xx" p
2011-02-18 18:01:00
1400
原创 数据牵移,存储过程的学习(mysql到oracle)
<br /><br />最近项目中牵涉到把mysql中一个表的数据牵移oracle上来,并只保存三个月的数据,由于此表的数据增加量比较大,现在是每个月三百万,以后会更多,所<br /> <br />以oracle表在实现时考虑到完整的增加与删除的策略!<br />下面将记录再实现过程中所遇到的所有问题:<br />1.对于数据量的不断增加,由于跟据时间特性,所以采用按时间进行分区的方式实现<br />2.对于增加与删除分区,采用存储过程来实现,采用定时执行的存储过程JOB,每月增加与删除一次分区。<br /
2011-02-18 17:50:00
1778
原创 mina框架源码阅读与分析
<br />Mina框架与源码的简单理解<br /> <br />一.Mina架构图:<br />其框架实现如下图所示:(图来自于网上:)<br /><br /><br /> <br />二.Mina 一个请求的主要实现流程:<br /> 服务器启动时,构造NioSocketAcceptor,服务器同时也会构造NioProcessor。<br /> client请求->NioSocketAcceptor建立连接,在bind监听端口后,调用startupAcceptor()方法->接收线程A
2010-08-19 12:38:00
4783
1
原创 Elicpse之几个小问题
1.The resource is not on the build path of a Java project 这是对应的jar包没有引入,只要引即可。2.查找某个文件被哪些类继续与使用。ctrl+h即可,如果只选择被继续也可以。3.elicpse中安装jad反编译很好
2010-08-18 13:56:00
2171
转载 转 java中引用及对象的clone
很长时间没写了,最近太忙,一直忙新服务器,刚看到一片不错的文章,想转到这来,供自己以后学习~ 转(http://www.ibm.com/developerworks/cn/java/l-jpointer/index.html) Java语言明确说明取消了指针,因为指针往往是在带来方便的同时也是导致代码不安全的根源,同时也会使程序的变得非常复杂难以理解,滥用指针写成的代码
2010-01-05 14:36:00
1371
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人