自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

sunnydogzhou的专栏

坏坏的阳光狗

  • 博客(83)
  • 收藏
  • 关注

原创 Cannot modify header information - headers already sent by ...

This problem is actually listed in the "common problems" section of the installation instructions, but many users only seem to run into it when they start configuring their site after the initial se

2012-06-06 15:13:29 1847

原创 发现java程序cpu利用率100%的解决方法

最近发现一个java程序的cpu利用率总是在100%,开始没注意,以为是有负载在正常跑,后来发现不是这么一个情况,应该是程序里的某个线程在死循环中,只是程序里面n多线程,怎么知道是哪个线程把cpu占满了?1)先用top找出哪个线程占着cpushell下面用[engine@tempt145 /data/itnProduct/ds2]$ top -H -p 8969结果to

2012-03-22 17:58:13 17319 2

原创 升级到tomcat7.0碰到的问题

今天把tomcat从6.0.18升级到7.0.25,发现了两个问题问题1java.lang.ClassNotFoundException: org.apache.catalina.mbeans.ServerLifecycleListener发现居然找不到这个类,然后把catatina.jar下载下来反编译一看mbenas这个文件夹居然是空的解决办法6.0.18以前,conf/s

2012-02-17 14:05:17 23521 3

原创 常用设计模式总结--责任链模式

常用设计模式总结--责任链模式在多线程的编程模型中,责任链模式是一种常用的模式,责任链模式可以将一个任务分解成小的独立的任务单元,让整个任务一目了然。以一个爬虫爬取某个页面为例,假设url的调度不是有爬虫来管理,而是有专门的urldb模块来实现,那么一个网页的爬取可以分解为以下几个小的子任务。下载网页;解析网页;将当前页面新发现的链接写回urldb。将任务分解成小任务以后,每个小任务的输出

2012-02-07 00:04:15 1815

原创 常用设计模式总结--代理模式

代理模式就不废话了,这个模式在生活中很常见,打官司、租房子的都需要找个专业的人来替你处理不擅长的事。鉴于这个模式太常见,我觉得就不用废话,画图啥的统统免了吧,直接上代码父类package zl.study.designpattern.proxy;public interface Graphic { public void render(); public

2012-02-05 12:18:35 824

原创 linux下Mysql忘记密码咋办

在linux下忘记mysql的密码,咋整?有一种方法可以很快的重设密码。首先,关闭mysql.这个时候你用Mysqladmin shutdown来关闭mysql基本是不可能的,为啥,因为你不知到密码了么,用其它用户去连接mysql库,会提示你没有权限。其次,直接用ki

2011-10-01 01:08:41 4597

原创 给mysql赋予连接的权限

mysql服务器装好以后,默认只能在localhost上登录,如果你要是从另外的IP地址登录,即使是本机登录也会出现问题。mysql -h 192.168.2.48 -u root -pwow8;ERROR 1130 (00000): Host '192.168.2.48

2011-09-27 17:27:12 8060

原创 Mysql 局域网no route to host 解决

在vmvare里面配了两台mysql,发现用mysql连不上mysql服务器,用telnet登录mysql的3306端口,发现居然是no route to host;[zhoulei@localhost ~]$ telnet 192.168.2.48 3306Trying

2011-09-27 17:19:11 22103

原创 常用设计模式总结--装饰模式

常用设计模式总结—装饰模式在平时的编程过程中,我们可能会经常遇到这样一种情况,代码的输出是将输入层层包装以后来得到的。就好比我们装修的时候砌墙一样,先是刮水泥、然后是涂腻子,最近刷油漆,经过以上的步骤,我们就能够得到一面干净的墙了。在开发桌面应用程序的时候,会比较多的碰到

2011-08-03 20:59:28 1345

原创 投资意向书

甲方 (你的公司)和乙方 (VC)InvestmentTermsheet(投资意向书)20XX年01月01日被投公司简况XXXX公司 (以下简称“甲方”或者“公司”)是总部注册在开曼群岛的有限责任公司,该公司直接或者间接的通

2011-08-02 20:23:08 1762

原创 linux下ulimit命令

你是否曾遇到过在程序里面创建线程提示你资源不够,你是否曾遇到过在gcc中加入-g选项,程序崩溃时却没有任何core文件产生。如果就,那你就要注意到ulimit命令了。ulimit -a 查看全部资源的使用情况ulimit -H 设置硬资源描述限制,一旦设置,不能更改ulimit

2011-07-28 08:50:18 3079

原创 TCP连接中的TIME_WAIT状态

1 TCP关闭时的四次握手Tcp连接在关闭的的时候,执行的是一个四次握手的过程,下图是客户端发起的关闭时客户端和服务器的状态转换图具体过程如下:1、 客户端发送FIN报文段,进入FIN_WAIT_1状态。2、 服务器端收到FIN报文段,发送ACK表示确认,进入CLOSE_WAIT状态。3、 客户端收到FIN的确认报文段,进入FIN_WAIT_2状态。4、 服务器端发

2011-06-28 11:32:00 11595

原创 Java的多线程编程模型5--从AtomicInteger开始

AtomicInteger,一个提供原子操作的Integer的类。在Java语言中,++i和i++操作并不是线程安全的,在使用的时候,不可避免的会用到synchronized关键字。而AtomicInteger则通过一种线程安全的加减操作接口。来看AtomicInteger提供的接口。//获取当前的值public final int get()//取当前的值,并设置新的值 pu

2011-06-23 20:50:00 31609 9

原创 常用设计模式总结--组合模式

<!--v/:* {behavior:url(#default#VML);}o/:* {behavior:url(#default#VML);}w/:* {behavior:url(#default#VML);}.shape {behavior:url(#default#VML);}--> Normal 0 7.8 磅

2011-06-19 11:05:00 1517 1

原创 Java的多线程编程模型5--Java中的CAS理论

CAS,compare and swap的缩写,中文翻译成比较并交换。我们都知道,在java语言之前,并发就已经广泛存在并在服务器领域得到了大量的应用。所以硬件厂商老早就在芯片中加入了大量直至并发操作的原语,从而在硬件层面提升效率。在intel的CPU中,使用cmpxchg指令。在Java发展初期,java语言是不能够利用硬件提供的这些便利来提升系统的性能的。而随着java不断的发展,Ja

2011-06-18 22:09:00 8733 4

原创 Java的多线程编程模型4--synchronized

在Java1.5之前,synchronized应该是最常用的java支持并发手段。那synchronized是怎么做到的了,从java1.0开始,java中的每个对象就一个内部锁。如果一个类的方法被synchronized关键字所修饰,那么这个对象的锁将保护整个方法。举例来说:public synchronized void method(){    method body}等

2011-06-18 20:54:00 2145 3

原创 常用设计模式总结--桥接模式

Normal 0 7.8 磅 0 2 false false false EN-US ZH-CN X-NONE

2011-06-11 13:19:00 1243

原创 常用设计模式总结--适配器模式

Normal 0 7.8 磅 0 2 false false false EN-US ZH-CN X-NONE

2011-06-11 11:15:00 911

原创 Java的多线程编程模型3 -- 在1.5之前怎么并发

在java1.5之前,java在并发上面的建树不多,只提供了为数不多的方式来提供提高并发的效率。其中synchronized关键字是使用最多的,这个看似简单的锁方式,效率奇差,所以那会,java程序员对于c++程序员的在java并发上的诟病总是无力回击。 在1.5之前,java提供的并发容器Vector,我们来看下具体的实现java.util.Vector public cla

2011-06-10 00:32:00 1908 1

原创 Java的多线程编程模型2--怎样才线程安全

在Java多线程编程模型1里面讲到了为什么线程不安全,那怎样才能做到线程安全了? 先来看线程工作是跟内存是怎么打交道的。在并发的线程中,分为主内存和工作内存,主内存就是程序分配的内存,工作内存就是线程所占的内存。线程可能在工作内存中存储了某些主内存对象的副本。当线程操作某个主内存的对象时,先从主内存中将变量的值拷贝到工作内存中,然后在工作内存中改变这个值,最后将这个值刷到主内存中。

2011-06-10 00:00:00 1365

原创 个性化推荐系统入门

今天在csdn的主页上发现有个麦包包的总裁在麦包包的个性化推荐,一只对amazon的个性化推荐系统很感兴趣,发现麦包包这个哥们总结的也不错。 麦包包的个性化推荐主要是采用协同过滤技术。协同过滤(Collaborative Filtering,简称CF)技术,是推荐系统中应用最为广泛的技术之一。麦包包主要采用了三种协同过滤技术:基于用户(User)的协同过滤,经典用途是Als

2011-06-09 23:33:00 2251 1

原创 常用设计模式总结--单立模式

单立模式,singleton单立模式保证一个类只有一个实例,在java程序中,用static实现起来相对容易。public class ItnpSearcherDaoFactory {    ... ...     public static ItnpSearcherDaoFactory INSTANCE = new ItnpSearcherDaoFactory();}

2011-06-09 23:06:00 1302

原创 linux下检查内存泄露的工具--mtrace

最令linux程序员头疼的莫过于内存泄露了,即使你是在优秀的程序员,你也不能保证所以的malloc操作都有对应的free,那必要的工具就是必不可少的了。在一般的linux发行版中,有一个自带的工具可以很方便的替你完成这些事,这个工具就是mtrace。 下面是它的用法#include #include #include #include int main

2011-06-08 18:09:00 13502 2

原创 Cassandra的consistency level

在将cassandra的节点配置为互备以后,某天其中一个节点突然down机了,这个时候发现通过cassandra的thrift api往另外的节点写数据也没法成功了。研究了下thrift的api以后,推测估计是跟client的consistency level有关系。 consistency level即一致性级别,用来根据配置的副本因子(ReplicationFactor)来控制ca

2011-06-08 17:20:00 4943 1

原创 netstat下time_wait数过多引起的问题

<br />在做ministored 性能测试的时候,需要尽可能快的发送http请求给server端。因此做了一个循环,让client不停的发送,中间用usleep来控制发送的频率,最开始的时候usleep的值设置的很小,结果发现很快Server就不能给client正确的响应,client收不到数据,然后出现了coredump,用netstat -anp |grep 1314以后发现,处于time_wait的链接数太多了,有2-3只多。于是分析问题可能是被占用的套接字太多了,导致server创建不了新的套接

2011-06-02 14:57:00 12178

原创 常用设计模式总结--生成器模式

Builder,生成器模式。Builder模式将一个对象的创建与表示分离,从而使得相同的创建过程可以创建出不同的表示对象。仍以汽车工厂举例,一个汽车集团下面有许多工厂,每个工厂生产出不同的车型。站在集团的层面,其实集团只需要知道工厂造轮子,造引擎,而并不关心轮子的具体尺寸,引擎的具体马力,它只需要知道工厂最终返回的给它的是一辆完整的汽车,就一切ok类图在这个类图中,省略了Wheel,Engine,Vehicle。DasAuto为新引入的一个类,包含着一个对具体builder父类的引用。而VehicleBui

2011-05-24 23:34:00 1051

原创 常用设计模式总结--抽象工厂

Abstract Factory,抽象工厂抽象工厂是一种创建型方法,所谓工厂,顾名思义就是一个车间,里面生产各种各样的组件,既然是抽象的,对应到代码里面,就是定义一些抽象的方法,然后在集体的工厂里面实现。用传统的制造业来举例比较恰当,比如汽车制造业,现在的汽车制造业都已经集团化了,每家汽车制造商都有好多工厂,每个工厂用来生产某几个具体型号的轿车。站在集团的角度,每个工厂都生产引擎,轮胎,然后拼装成整车。从软件的角度抽象,引擎、轮胎都有统一的父类element,而每个工厂也有着统一的父类VehicleFact

2011-05-22 21:43:00 888

原创 基于libevent2.0的ministored的http框架--client端

协议啥的都在上一篇日志《基于libevent2.0的ministored的http框架--server端》说啦,client短还是废话少说,直接上代码吧!包含了put和get的操作以及部分的测试代码,gcc下编译可以直接通过!#include #include #include #include #include #include #include #include "base64.h"struct request_context{    struct evhttp_ur

2011-05-22 18:49:00 3607 1

原创 基于libevent2.0的ministored的http框架--server端

将Ministored从libevent1.4升级到2.0以后,花了两天额外的时间来做调试这个http的框架。按照开发的设想,这个ministored支持四个基本的操作put、get、delete、status;在经过几个版本的改动以后,协议如下:1)数据通过post的方式提交2)各个基本操作通过一个自定义的Http的头method来区分。而client和server之间的传送的二进制数据通过base64编码以后的字符串发送。数据附加在post操作提交的字符缓冲区中。     2.1 put操作需要的数据k

2011-05-22 18:31:00 3686 2

原创 C split函数

<br />前两天写ministored的时候,发现需要用到字符串的分割,花了点时间写了一个,后来发现不需要了,放在这个,留着以后备用。<br /> <br /><br />int count(char * str,const char * delim){<br />    int num = 0;<br />    while( NULL != ( str = strstr(str,delim) ) ){<br />        str ++;    <br />        nu

2011-05-22 18:00:00 9847

原创 switch引发的错误 a label can only be part of a statement and a declaration is not a statement

<br />用switch的时候发现一个错误<br />a label can only be part of a statement and a declaration is not a statement<br /> <br />仔细观察以后发现是没有正确的加大括号引起的。<br /> <br />出错的代码如下<br />swtch (a)<br />case 'a':<br />    ... ...<br />    ... ...<br />    break;<br />case 'b':<b

2011-05-22 15:52:00 7176

原创 从libevent1.4到libevent2.0碰到的问题,struct evhttp_uri在头文件只有声明

<br />最近做ministored的时候用libevent来搭建基于http的框架,手头的库是去年从官网上下来的1.4 stable的版本,开发完服务器端程序以后,发现libevent 1.4对于客户端程序的支持不尽如人意,于是手动写了一个tcp的客户端来发送http的协议。一切ok!<br /> <br />后来无意中跑去官网上看了看,发现libevent 2.0有stable了,忍不住下了一个下来看看,make install之后开始了我的一天的悲剧之旅。安装完以后,发现Libeve

2011-05-21 12:05:00 5934 2

原创 在http协议中传输二进制的数据--base64实现

<br />做Ministored的时候发现一个问题,用http传输二进制的数据时,需要将二进制做一下转化,出现了以下的问题。<br />简单概括如下:<br />1) 不知道传输字节的具体长度,如传输的int类型,将int类型之间转为char以后,丢失掉了长度的信息,如数字1234567,本来只有4个字节,但是转化成文本的“1234567”是有7个字节。在int类型的时候固然好办,但是一个数组的时候,经过转化以后,在转化回来就很麻烦了。<br />2) 对于一些数字,二进制传输Server是没法处理的。如

2011-05-18 20:22:00 17226 1

原创 Ministored--基于libevent的简单网络内存存储

<br />Ministore做完以后,一直有个想法,给ministore添加一个网络的接口,这样ministore就可以可以提供网络服务,从而能够提供更多的使用场景。去年写了一个大概的框架之后,忙于手头的各种工作,就放在这里。今年在做代码整理的的时候,发现以前ministore实现的功能最好拆分出来做成一个单独的服务。于是把尘封的代码拿出来,在去年的工作上继续。<br /> <br />在网络协议上打算采用http协议,为啥子是http,因为http简单,可以支持多种语言,c、java、php都可以。服务

2011-05-18 20:05:00 1370

原创 Java的多线程编程模型 1

<br />发现对于Java的多线程编程模型需要深入了解,打算<br /><br />Java多线程的类库封装在java.util.concurrent.*中,java1.4到1.5的变化就是引入了这个支持并发编程的类库。首先得感谢下大名鼎鼎人类库作者Doug Lea,牛人总是让人膜拜的。<br /><br />1 什么是线程安全<br />A class is thread-safe if it behaves correctly when accessed from multiple thr

2011-05-16 23:14:00 1959 1

原创 Cassandra的互备配置

<br />我们在做存储的时候,很多时候在都需要考虑灾备,一般都采用主备的模式。我们自己在做主备的时候,需要考虑主备直接的同步,这是一个比较头疼的问题。而利用cassandra做存储,可以利用cassandr的一些特性,刚好满足互备的需求。在数据存储量比较小的时候,<br /> <br />利用cassandra配置副本,可以做到互备。具体这么实现,将cassandra的副本配置为2。具体在schema.xml中的ReplicationFactor选项。同时把cassandra的节点配置为2。这样,每个节点

2011-05-15 22:26:00 1046

原创 Cassandra的数据整理

Life is full of accidence, just enjoy it!人生总是时时充满意外,在你某个不注意的角落,会给你突然来一下。做为一个程序猿,很多时候,你的工作就是排雷兵,很多时候,你去排雷,且会引爆新的雷。或者哪天你抵挡敌人进攻的雷却会变成自己撤退的雷区!前两天上线一个新版本的时候,发现一个针对老版本的优化出了问题,感受良多,代码往往跟不上产品策略的变化。这些雷好解决,大不了就是版本回退!但是有些雷却是太难解决了。这两天提供线上服务存储的cassandra节点出了问题,不知道某一天数据归

2011-05-11 16:02:00 837

原创 新的一年,需要更多的努力

<br />新的一年,在很多方面仍要继续努力!<br /> <br />1)算法仍旧需要深入学习<br />2)Java仍需努力提高,C/C++需要不停的回顾<br />3)设计模式需要通读一遍<br />4)一些开源的类库需要好好掌握,知其然,知其所以然。<br /> <br /> <br />2011,加油!

2011-02-10 17:00:00 714

转载 带你领略 Google Collections 2

<br />原贴地址:<br />http://jubin2002.javaeye.com/blog/471698<br /> <br />上篇讲到google collections的几个比较主要的点,今天我们来看看其提供的几个小的但是相当有用的东西。<br /> <br />1,Preconditions<br /> <br />Preconditions 提供了状态校验的方法。 <br /> <br />Before:Java代码 public Delivery createDelivery(Orde

2010-11-18 10:24:00 729

转载 带你领略 Google Collections 1

<br />原贴地址:<br />http://jubin2002.javaeye.com/blog/471661<br /> <br /> <br />    Java的集合框架是Java类库当中使用频率最高的部分之一,Google公司发起了一个项目,用来扩展Java的集合框架,提供一些高级的集合操作API。<br /><br />http://code.google.com/p/google-collections/<br /><br />这个项目叫做Google Collection,托管在G

2010-11-18 10:16:00 1600

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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