自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Leo Zhang

追求的不仅仅是技术

  • 博客(142)
  • 资源 (5)
  • 收藏
  • 关注

转载 SPDY - Web网络协议

[核心提示] 当老迈的 HTTP 协议逐渐不能满足人们需求的时候,Google 的 SPDY 协议出现在面前,那么这个长期以来一直被认为是 HTTP 2.0 唯一可行选择的 SPDY 是什么呢?当下我们如何能部署上 SPDY 呢?左边是普通 HTTPS 加载,右边是 SPDY 加载。是不是很神奇?SPDY 是什么 ?SPDY 是 Google 开发的基于传输控制协议

2013-04-25 09:10:58 838

原创 List 转换成字符串

很多时候开发中会用到把 List  的内容拼接成以逗号分隔的字符串的形式:public String listToString(List list, char separator) { return org.apache.commons.lang.StringUtils.join(list.toArray(),separator);}

2013-04-24 17:33:58 662

转载 Java Web 高性能开发,第 2 部分: 前端的高性能

简介: Web 发展的速度让许多人叹为观止,层出不穷的组件、技术,只需要合理的组合、恰当的设置,就可以让 Web 程序性能不断飞跃。Web 的思想是通用的,它们也可以运用到 Java Web。这一系列的文章,将从各个角度,包括前端高性能、反向代理、数据库高性能、负载均衡等等,以 Java Web 为背景进行讲述,同时用实际的工具、实际的数据来对比被优化前后的 Java Web 程序。第一部分已

2013-04-16 22:54:03 1769

转载 Java Web 高性能开发,第 1 部分: 前端的高性能

简介: Web 发展的速度让许多人叹为观止,层出不穷的组件、技术,只需要合理的组合、恰当的设置,就可以让 Web 程序性能不断飞跃。所有 Web 的思想都是通用的,它们也可以运用到 Java Web。这一系列的文章,将从各个角度,包括前端高性能、反向代理、数据库高性能、负载均衡等等,以 Java Web 为背景进行讲述,同时用实际的工具、实际的数据来对比被优化前后的 Java Web 程序。第

2013-04-16 22:45:55 795

转载 为什么要用非关系数据库?

随着互联网web2.0网站的兴起,非关系型的数据库现在成了一个极其热门的新领域,非关系数据库产品的发展非常迅速。而传统的关系数据库在应付web2.0网站,特别是超大规模和高并发的SNS类型的web2.0纯动态网站已经显得力不从心,暴露了很多难以克服的问题,例如: 1、High performance - 对数据库高并发读写的需求 web2.0网站要根据用户个性化信息来实时生成动态页面和

2013-04-16 15:23:23 914

转载 Linux Netcat 命令——网络工具中的瑞士军刀

netcat是网络工具中的瑞士军刀,它能通过TCP和UDP在网络中读写数据。通过与其他工具结合和重定向,你可以在脚本中以多种方式使用它。使用netcat命令所能完成的事情令人惊讶。netcat所做的就是在两台电脑之间建立链接并返回两个数据流,在这之后所能做的事就看你的想像力了。你能建立一个服务器,传输文件,与朋友聊天,传输流媒体或者用它作为其它协议的独立客户端。下面是一些使用netcat的

2013-04-11 08:50:50 2515

转载 使用 Eclipse 调试 Java 程序的 10 个技巧

你应该看过一些如《关于调试的N件事》这类很流行的帖子 。假设我每天花费1小时在调试我的应用程序上的话,那累积起来的话也是很大量的时间。由于这个原因,用这些时间来重视并了解所有使我们调试更方便的功能。那能为你省下一些时间,也将会使你的生活更安逸、轻松。同时也表明其它关于此主题的帖子也是很有价值的。- 断点视图 : 条件断点如果你只对应用中的某部分感兴趣的话,这个功能非常有用。例如,如

2013-04-10 13:08:11 565

原创 Defining <uniqueKey> as a "long" or "int" type throws an error on startup

solr启动时候,报如下异常:SEVERE: org.apache.solr.common.SolrException at org.apache.solr.core.SolrCore.(SolrCore.java:600) at org.apache.solr.core.CoreContainer.create(CoreContainer.java:480

2013-04-03 16:38:43 2114 1

原创 StrutsPrepareAndExecuteFilter cannot be cast to javax.servlet.Filter

严重: Exception starting filter struts2java.lang.ClassCastException: org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter cannot be cast to javax.servlet.Filterat org.apache.catalin

2013-04-01 15:54:27 2461

原创 系统性能分析

当系统变慢时候,我们首先关注的可能是cpu的指标,有时候发现cpu使用率一点都不高,但是系统还是卡,这时可能就需要关心另外一个影响性能的东西–磁盘的IO性能。通过top命令中的%wa可以获取系统当前的io状态,如果该值居高不小,那磁盘的IO可能就有问题了。另外可以通过iotop命令来详细了解什么程序在读写磁盘,速度以及命令行,pid 等信息。如果系统不存在该命令,可以使用如下命令安装:yum

2013-03-27 10:01:02 708

原创 Linix lsof 命令

查看8082端口现在运行的情况  [zhanglei@localhost bin]$ lsof -i :8082COMMAND  PID     USER   FD   TYPE DEVICE SIZE NODE NAMEjava    3654 zhanglei   27u  IPv6  13426       TCP *:us-cli (LISTEN)查看所属zhang

2013-03-26 11:18:16 806

原创 Linux 常用命令

1. 清空文件内容,而不删除文件。比如日志文件 ===> log.txt ,在linux下的命令为:true > log.txt2. 在查看目录的使用情形时,我们可以将输出结果导到 sort 指令进行排序,以了解哪个档案用了最多的空间:   du /etc | sort -nr | more

2013-03-22 14:52:30 515

原创 Hadoop 安装

本机IP : 10.28.168.68前提条件: 安装java 与 ssh 环境 (安装过程这儿省略一万字...)/etc/init.d/sshd status倘若出现 openssh-daemon (pid  2607) is running...说明ssh已经启动了。倘若未启动,则执行:/etc/init.d/sshd start配置

2013-03-21 21:53:47 686

转载 struts2与urlrewrite的整合

UrlRewrite就是我们通常说的地址重写,用户得到的全部都是经过处理后的URL地址。关于为什么要把.jsp或者.do?param1=value1&param2=value2.......这样的链接地址修改成普通的html地址。优点一:提高安全性,可以有效的避免一些参数名、ID等完全暴露在用户面前,如果用户随便乱输的话,不符合规则的话直接会返回个404或错误页面,这比

2013-02-20 16:42:01 1570

原创 tcpcopy 从线上机器引流到测试环境

Tcpcopy(项目主页http://code.google.com/p/tcpcopy/)是一个请求复制(所有基于tcp的packets)开源的小工具,真的是非常小,用起来也非常地简单。它主要的原理就是将线上机器收到的用户请求copy一份,同时转发给目标机器(预发或测试机器),但只接收request,并不会产生response,因此对线上用户使用无影响。曾经应用于网易的广告投放系统,urs系

2013-02-04 11:29:15 879

原创 Linux 远程拷贝命令 scp

scp是linux下的远程拷贝命令:(1)将本地文件拷贝到远程:scp  本地文件名 用户名@计算机IP或者计算机名称:远程路径 (2)从远程将文件拷回本地:scp  用户名@计算机IP或者计算机名称:远程文件名 本地路径(3)将本地目录拷贝到远程:scp -r 目录名   用户名@计算机IP或者计算机名称:远程路径(4)从远程将目录拷回本地:scp -r   用户名@计算机IP或

2013-01-25 16:19:27 749

转载 多线程环境下使用 DateFormat

想必大家对SimpleDateFormat并不陌生。不过,你是否知道,SimpleDateFormat不是线程安全的(thread safe)。这意味着,下面的代码在多线程环境下运行结果并非如我们所愿 - 有时候,它输出正确的日期,有时候会输出错误的(例如.Tue Aug 11 00:00:00 CST 48201),有些时候甚至会抛出NumberFormatException!!!(当然,在

2013-01-18 13:40:25 2940

转载 共享锁与排它锁

共享锁【S锁】又称读锁,若事务T对数据对象A加上S锁,则事务T可以读A但不能修改A,其他事务只能再对A加S锁,而不能加X锁,直到T释放A上的S锁。这保证了其他事务可以读A,但在T释放A上的S锁之前不能对A做任何修改。排他锁【X锁】又称写锁。若事务T对数据对象A加上X锁,事务T可以读A也可以修改A,其他事务不能再对A加任何锁,直到T释放A上的锁。这保证了其他事务在T释放A上的锁之前不

2013-01-17 18:05:46 400

转载 Zookeeper使用和探究

zookeeper介绍zookeeper是一个为分布式应用提供一致性服务的软件,它是开源的Hadoop项目中的一个子项目,并且根据google发表的论文来实现的。  zookeeper安装和使用zookeeper的下载地址:http://www.fayea.com/apache-mirror/zookeeper/zookeeper-3.4.5/,这里主要介绍下部署一个集群的步骤。

2013-01-17 11:36:36 948

原创 Linux下解压命令

.tar 解包:tar xvf FileName.tar打包:tar cvf FileName.tar DirName(注:tar是打包,不压缩!)———————————————.gz解压1:gunzip FileName.gz解压2:gzip -d FileName.gz压缩:gzip FileName.tar.gz 和 .tgz解压:tar zxvf

2013-01-16 15:26:35 368

转载 HDFS读书笔记-了解NameNode(二)

朋友写的【HDFS系列】,觉得挺好。原文地址,点我     上篇文章中我们着重介绍了HDFS的基本架构和读写流程,本章主要来认识HDFS的NameNode,     简单来讲,NameNode就是HDFS的大脑,任何客户端或者DataNode的数据迁移、目录操作都是由NameNode来完成的。     再了解了NameNode会干什么事情之后,最好深入的办法就是来看

2012-12-17 11:07:55 3472

转载 HDFS读书笔记-总体介绍(一)

朋友写的【HDFS系列】,觉得挺好。原文地址,点我一直以来对hadoop相关系列的学习都是较为零散的,不成体系。没有经过自己总结和沉淀的资料也很难长久的消化和在工作中实际运用。故而也希望通过这样系列的方式对所学习,所了解的资料进行总结。HDFS(Hadoop Distributed File System)顾名思义,是hadoop的分布式文件系统。HDFS是hadoop的一

2012-12-17 10:20:57 1123

原创 solr/home 配置解析

众所周知,安装solr的时候需要配置一个solr/home参数,其实就是指定solr的根目录,solr在启动的时候会去这个根目录下加载配置信息。配置solr/home参数有如下几种方式:    基于web.xml(不推荐)           solr/home       ${the_path_to solr_home}       java.lang

2012-12-12 17:53:48 8448

原创 【代码块】防并发、防重复执行

有些时候,防止一段代码块正在执行的时候重复执行,或防止其并发执行,可采用以下手段进行限制:手段一:private volatile AtomicBoolean working = new AtomicBoolean(false); void doSomeThing() { if (working.getAndSet(true)) return;

2012-12-11 13:35:03 1230

原创 solr3.6.1源码构建

准备工作:(1)solr源码使用ant构建,所以需先安装ant环境。这里省略掉ant环境安装,下载地址:http://ant.apache.org/bindownload.cgi(2)构建solr源码时,还需要lvy(lvy是神马,自行百度吧),下载lvy,解压后将其中的lvy-xx.jar放置$ant_home$/lib/目录下面。下载地址:http://ant.apache.org

2012-12-08 23:53:39 755

转载 Java多线程之ThreadPoolExecutor

public ThreadPoolExecutor(int corePoolSize,                                       int maximumPoolSize,                                      long keepAliveTime,

2012-12-03 23:26:49 399

转载 Java多线程之CyclicBarrier

CyclicBarrier一个同步辅助类,它允许一组线程互相等待,直到到达某个公共屏障点 (common barrier point)。在涉及一组固定大小的线程的程序中,这些线程必须不时地互相等待,此时 CyclicBarrier 很有用。因为该 barrier 在释放等待线程后可以重用,所以称它为循环 的 barrier。CyclicBarrier 支持一个可选的 Runnable

2012-11-29 14:42:59 746

转载 Java多线程之CountDownLatch

CountDownLatch         concurrent包里面的CountDownLatch其实可以把它看作一个计数器,只不过这个计数器的操作是原子操作,同时只能有一个线程去操作这个计数器,也就是同时只能有一个线程去减这个计数器里面的值。 CountDownLatch的一个非常典型的应用场景是:有一个任务想要往下执行,但必须要等到其他的任务执行完毕后才可以继续往下执行。假如我

2012-11-29 13:23:07 420

转载 Java多线程之Condition接口的实现

【Condition】Condition可以用来实现wait、notify、notifyAll方法的线程间同步通信。但其有增强的地方。我们先看一下wait等方法的使用情况:我们先得到一个对象的监视器,进入同步代码块,发现有些条件限制,我们的线程就要wait在这个对象监视器上,如果我们有100个线程,这100条线程有可能会因为不同的条件限制而要wait,但结果是他们都wait在同一个对象监视器上

2012-11-29 11:03:42 442

转载 Bloom Filter算法

设想以下的一个问题:有一个keyword的集合,我们需要快速判定某个keyword是否包含在其中。最简单的方法是遍历,但是效率很差。我们马上想到了hash的方法,因为在Oracle内部,hash无处不在。比如在cache buffer中找到某个block,在shared pool中找到某个SQL等等。我们可以把keyword的集合build成一个hash table,然后根据keyword计算ha

2012-11-28 23:09:19 426

转载 一致性 hash 算法(consistent hashing)

consistent hashing 算法早在 1997 年就在论文 Consistent hashing and random trees 中被提出,目前在 cache 系统中应用越来越广泛;1 基本场景比如你有 N 个 cache 服务器(后面简称 cache ),那么如何将一个对象 object 映射到 N 个 cache 上呢,你很可能会采用类似下面的通用方法计算 object 的

2012-11-28 22:55:47 338

转载 Spring文件资源操作

Spring 不但提供了一个功能全面的应用开发框架,本身还拥有众多可以在程序编写时直接使用的工具类,您不但可以在 Spring 应用中使用这些工具类,也可以在其它的应用中使用,这些工具类中的大部分是可以脱离 Spring 框架时使用的。了解 Spring 中有哪些好用的工具类并在程序编写时适当使用,将有助于提高开发效率、增强代码质量。文件资源操作  文件资源的操作是应用程序中常见的功能

2012-11-28 21:46:19 758

转载 Java多线程之BlockingQueue

BlockingQueue如果BlockingQueue是空的,从BlockingQueue取东西的操作将会被阻断进入等待状态,直到BlockingQueue进了东西才会被唤醒,同样,如果BlockingQueue是满的,任何试图往里存东西的操作也会被阻断进入等待状态,直到BlockingQueue里有空间时才会被唤醒继续操作。       本例依旧使用的篮子程序,不过这个篮子中最多能放得

2012-11-28 18:22:16 583

原创 Java多线程之Callable接口的实现

口 * Callable是类似于Runnable的接口,实现Callable接口的类和实现Runnable的类都是可被其它线程执行的任务。 * Callable和Runnable有几点不同:  * (1)Callable规定的方法是call(),而Runnable规定的方法是run(). * (2)Callable的任务执行后可返回值,而Runnable的任务是不能返回值的。  * (3)call()方法可抛出异常,而run()方法是不能抛出异常的。 * (4)运行Callable任

2012-11-28 17:16:06 108

转载 Java多线程之Callable和Future接口的实现

Callable和Future    Callable接口定义了一个call方法可以作为线程的执行体,但call方法比run方法更强大:    A、call方法可以有返回值    B、call方法可以申明抛出异常     Callable接口是JDK5后新增的接口,而且不是Runnable的子接口,所以Callable对象不能直接作为Thread的target。

2012-11-28 17:15:57 2145

原创 freemarker三宗罪

:freemarker的变量必须有值,没有被赋值的变量就会抛出异常,那个黄黄的freemarker出错页面,真是让人看了太难过了。freemarker的FAQ上面冠冕堂皇的说,未赋值的变量强制抛错可以杜绝很多潜在的错误,如缺失潜在的变量命名,或者其他变量错误。但是实际的效果是:带来的是非常大的编程麻烦,程序里面几乎所有可能出现空值的变量统统需要加上${xxx?if_exists},有些循环条件还需要写if判断,这样不但没有杜绝应该杜绝的错误,反而极大增加了编程的麻烦。二宗罪:free

2011-06-27 16:53:51 74

原创 关于struts2中json返回值的参数问题

2011-06-21 19:25:18 118

原创 CopyOnWriteArrayList

常识:1、JAVA中“=”操作只是将引用和某个对象关联,假如同时有一个线程将引用指向另外一个对象,一个线程获取这个引用指向的对象,那么他们之间不会发生ConcurrentModificationException,他们是在虚拟机层面阻塞的,而且速度非常快,几乎不需要CPU时间。2、JAVA中两个不同的引用指向同一个对象,当第一个引用指向另外一个对象时,第二个引用还将保持原来的对象。 基于上面这个常识,我们再来探讨下面这个问题: 在CopyOnWriteArrayL

2011-05-31 10:33:45 54

原创 java web.xml listener filter servlet

2011-05-10 15:06:57 56

原创 input和img放同一行

性,这个方法似乎的确可行,但是不符合HTML标准。后来无意中发现同时给input和img添加vertical-align:middle就行:input,img{vertical-align:middle;}这样代码就会规规矩矩地水平对齐了。

2011-03-30 16:49:15 2655

JAVA对Excel操作

JAVA对Excel操作.rarJAVA对Excel操作.rarJAVA对Excel操作.rarJAVA对Excel操作.rar

2009-10-03

Java导出Excel文件.rar

Java导出Excel文件\Java导出ExceJava导出Excel文件.rarl文件.rar

2009-10-03

.net自制浏览器.

.net自制浏览器,模拟的ie,具有小巧的功能

2009-10-03

cvsnt-2.5.03.2382.msi

cvsnt-2.5.03.2382.msi项目管理

2009-10-03

mysql-connector-java-5.0.4.zip

mysql-connector-java-5.0.4.zip---mysql的驱动包,用于连接数据库

2009-10-03

空空如也

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

TA关注的人

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