Fork me on GitHub
摘要: 代理模式是最常用的一个设计模式之一,理解起来也是很简单,一张图足以说明了,LZ就不废话了。至于代理模式能干嘛也不是LZ今天想说的,今天主要想简单介绍下JAVA里面的动态代理。“动”当然是相对“静”来说的,那么什么是静,怎么就又动了呢?LZ想举个生活中常见的例子来说明,俗话说“谈钱伤感情”,但生活所迫... 阅读全文
posted @ 2014-05-15 22:40 zhanjindong 阅读(1155) 评论(1) 推荐(0) 编辑
摘要: xmind文件下载地址 阅读全文
posted @ 2014-05-11 16:26 zhanjindong 阅读(411) 评论(0) 推荐(0) 编辑
摘要: 上篇文章简单介绍了下基于Heartbeat的虚拟IP配置,个人觉得简单易用已经能够应付大部分场景了。但是既然花时间研究HA,如果仅限于一个虚拟IP飘来飘去未免有点糊弄任务了,因此这篇文章打算介绍下基于Pacemaker和CMAN如何构建高可用的TFS NameServer,之所以为什么没有采用Heartbeat+Pacemaker,是因为我花了好大功夫按照官方文档和这篇博客都没有搞定,最后寻思应该是使用的Heartbeat版本和环境不同,这篇文章作者也没对环境做过多交代,因此我一上来会先介绍下上下文环境,至于什么是Heartbeat、Pacemaker和CMAN打算另写一篇介绍。Linux-H 阅读全文
posted @ 2014-03-22 22:48 zhanjindong 阅读(4102) 评论(0) 推荐(0) 编辑
摘要: 对TFS的Nameserver做机器级别的HA通过虚拟IP机制就可以了,只需要一个Heartbeat就可以搞定,下面简单说下步骤。操作系统:CentOS 6.4 x86_64Heartbeat:[root@jdzhan1 ha.d]# rpm -q heartbeatheartbeat-3.0.4-2.el6.x86_64Step0: 安装Heartbeat yum安装和源码安装都可以,参看上一篇博客。Step1:Heartbeat配置虚拟IP1.修改Heartbeat的ha.cf主要配置:# 不采用2.x style的CRM,即Pacemakercrm off2.主备节点都如下修改hares 阅读全文
posted @ 2014-03-21 19:15 zhanjindong 阅读(2094) 评论(0) 推荐(0) 编辑
摘要: 接触Heartbeat主要是因为之前项目中使用了TFS,最近想给nameserver做HA,因为TFS官方用的Heartbeat,所以刚好了解下,参考了网络上很多内容,这里简单记录下。内容环境和软件包Heartbeat源码安装Heartbeat yum安装Heartbeat配置测试FAQ参考链接环境和软件包我的机器是两台64位的CentOS,其它Linux机器应该差不多可以参考官方的说明。从Heartbeat 2.1.4之后原先的项目被拆分成了三个子项目:cluster-glue、resource-agents和heartbeat,导致了配置更加复杂。下面列出了我使用的各个软件包版本并提供了下 阅读全文
posted @ 2014-03-21 00:48 zhanjindong 阅读(10567) 评论(4) 推荐(0) 编辑
摘要: 这几天随着客户端一个新版本发布,运维发现CDN的流量猛跌:话说流量就是金钱,流量就是工资。领导很生气,后果很严重。没什么好说的,赶紧查!一开始怀疑服务端有问题,先受伤的总是我们,当然这也是没错的,因为发出去的版本泼出的水,当然先排查能迅速解决的问题。屎劲查(IIS日志分析、CND日志分析……此处省略N个字),确实发现了个bug,但修复后发现流量并没有恢复。于是运营统计了下用户的意见反馈信息:发现大部分用户都是说cmwap下面有问题,于是赶紧在测试环境试了下,果然重现了,既然重现了按理说问题很好查了,其实这时我已经比较肯定是客户端的代码有问题了。于是开始排查客户端上传的错误日志,但不知道是错误信 阅读全文
posted @ 2014-03-13 21:18 zhanjindong 阅读(844) 评论(0) 推荐(0) 编辑
摘要: 自从项目中语言换成Java后就很久没有看C#了,但说实话我是身在曹营心在汉啊。早就知道.NET4.5新增了`async`和`await`但一直没有用过,今天看到[这篇文章][1]总算有了点了解,突然发现`Task`这个玩意不就是Java中`Future`这个概念吗? 阅读全文
posted @ 2014-03-08 22:43 zhanjindong 阅读(4018) 评论(7) 推荐(2) 编辑
摘要: ###redis实现区间查询在实际开发中经常遇到这样需求:服务端对于客户端不同的版本区间会做些不同的配置,那么客户端一个版本过来怎么快速的定位是属于哪个版本区间呢?可以利用`Sorted Sets`的`zrangebyscore`命令。```zadd myset 1011 v1_startzadd myset 1015 v1_endzadd myset 1018 v2_startzadd myset 1023 v2_end```如上我们像myset里插入了4条数据,代表的意思是版本区间v1是从1011-1015版本,版本区间v2是从1018-1023版本。注:redis的Sorted Sets 阅读全文
posted @ 2014-02-14 20:17 zhanjindong 阅读(9810) 评论(0) 推荐(0) 编辑
摘要: 今天给Eclipse安装UML插件,试了很多都不兼容,我用的Ecllipe版本是4.2最后终于找到一个叫做AmatersUML的插件还能用,不过还是不够顺手,比如对泛型支持不够,不能从图形直接跳到相应的代码,以及自动和代码相关联:修改代码图也随着改变。画简单的类图完全够用了,如果想生成整个项目的类图,最好还是使用其他更强大的工具,比如StarUML。效果大概如下: 阅读全文
posted @ 2014-02-11 22:17 zhanjindong 阅读(1463) 评论(0) 推荐(0) 编辑
摘要: ## 理解内存明天就要回家过年了,回家之前翻译了一篇比较基础的文章,英文太烂,各位看官见笑了。[原文地址](http://www.ualberta.ca/CNS/RESEARCH/LinuxClusters/mem.html)---这篇文章讨论基于的环境是AICT Linux集群,运行64位的GNU / Linux的AMD Opteron处理器。###内容* 简介* 程序和进程* 存储类别和作用域* 程序大小* 内存映射* 调用堆栈* 页表* 库* 内存限制* 内存分配* 实现细节* 参考文献-----###简介在Linux下,所有的程序都在虚拟内存环境中运行。如果有某个C程序员将指针的值打印 阅读全文
posted @ 2014-01-29 17:22 zhanjindong 阅读(1502) 评论(0) 推荐(0) 编辑
摘要: 最近项目中涉及到旧老项目迁移,需要在nginx上做些配置,所以简单学习了下,好记性不如烂笔头,先记下来。rewrite首先查看下nginx是否支持rewrite:./nginx -V不支持说明安装nginx时候缺少pcre,需要重新安装nginx:#安装pcrewget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.34.tar.gztar -zxvf pcre-8.34.tar.gzcd pcre-8.34./configuremakemake install#安装nginxcd nginx-1.0.12./conf 阅读全文
posted @ 2014-01-23 20:44 zhanjindong 阅读(65231) 评论(0) 推荐(1) 编辑
摘要: 什么是线程安全当多个线程访问某个类时,不管运行环境采用何种调度方式或者这些线程如何交替执行,并且在主调代码中不需要任何额外的同步或协同,这个类都能表现出正确的行为,那么就称这个类是线程安全的。竞态条件当某个计算的正确性取决于多个线程的交替执行时序时,那么就会发生竞态条件。换句话说就是正确的结果取决于运气。数据竞争数据竞争是指,如果在访问非final类型的域时没有采用同步来进行协同,那么就会出现竞争。重入由于内置锁是可以重入的,因此如果某个线程试图获得一个已由它自己持有的锁,那么这个请求就会成功。“重入”意味着获取锁的操作的粒度是“线程”,不是“调用”。(这与pthread互斥体的默认加锁行为是 阅读全文
posted @ 2014-01-17 19:21 zhanjindong 阅读(565) 评论(0) 推荐(0) 编辑
摘要: 如何正确停止一个线程1)共享变量的使用中断线程最好的,最受推荐的方式是,使用共享变量(sharedvariable)发出信号,告诉线程必须停止正在运行的任务。线程必须周期性的核查这一变量(尤其在冗余操作期间),然后有秩序地中止任务。当线程等待某些事件发生而被阻塞,又会发生什么?果线程被阻塞,它便不能核查共享变量,也就不能停止。这在许多情况下会发生,例如调用Object.wait()、ServerSocket.accept()和DatagramSocket.receive()时。2)Thread.interrupt()的理解Thread.interrupt()方法不会中断一个正在运行的线程。这一 阅读全文
posted @ 2014-01-17 19:21 zhanjindong 阅读(1047) 评论(0) 推荐(0) 编辑
摘要: 上一篇文章简单介绍了下EXPLAIN的用法,今天主要介绍以下几点内容:慢查询日志打开慢查询日志保存慢查询日志到表中慢查询日志分析Percona Toolkit介绍安装pt-query-digestpt-index-usagept-query-advisorSHOW PROFILEperformanc 阅读全文
posted @ 2013-12-14 14:35 zhanjindong 阅读(13815) 评论(6) 推荐(4) 编辑
摘要: 最近慢慢接触MySQL,了解如何优化它也迫在眉睫了,话说工欲善其事,必先利其器。最近我就打算了解下几个优化MySQL中经常用到的工具。今天就简单介绍下EXPLAIN。内容导航idselect_typetabletypepossible_keyskeykey_lenrefrowsExtra环境准备MySQL版本:创建测试表CREATE TABLE people( id bigint auto_increment primary key, zipcode char(32) not null default '', address varchar(128) not null def. 阅读全文
posted @ 2013-11-23 22:24 zhanjindong 阅读(24831) 评论(7) 推荐(8) 编辑
TOP