定位生产环境中间件的问题代码
经常遇到一种情况,就是程序上线了,随着访问量的增加,中间件服务器的负载急剧升高.这个时候服务器很卡,却不知道卡在哪里,调整代码更无从谈起.首先,先找到中间件的进程.[root@centos6 ~]# jps -l或者[root@centos6 ~]# top应该都可以找到中间件的进程号(PID)然后top -p pid 按下shift+h 查看线程信息[root...
过多if-else分支的优化
JAVA程序经常看到一个函数中包含了十几个if-else的分支判断比如 根据不同职位增加工资的例子public class Employee { private int salary = 10; public void addMoney(String str) { &nb...
网页主动探测工具(修改Bug)
http://blog.itpub.net/29254281/viewspace-1344706/程序的结构虽然定了,但是程序本身还有一些bug首先ParseHandler的解析有些问题,原来的程序是这样的路径中有冒号的被过滤掉了,这样会把绝对路径也过滤掉.其实最开始的本意是过滤如下的地址"mvboxmtv:url=http://d.mvbox.cn/util/getPlayer.htm?appId=9306"针对这个...
java的classpath通配符
先编译本目录下所有java文件,然后使用通配符增加一个指定目录的所有jar文件作为classpathalias java='javac -d . *.java;java -Xms512m -Xmx1024m -XX:MaxPermSize=64m -XX:PermSize=128M -cp .:/home/lihuilin/lib/*'这样写程序就有点脚本语言的感觉了
网页主动探测工具
单位的项目是IBatis做的,每个查询的SQL里面都有很多判断上次优化SQL之后,其中的一个分支报错,但是作为dba,不可能排查每一个分支.所以,干脆用爬虫爬过所有的网页,主动探测程序的异常.这样有两个好处1.可以主动查看网页是否异常 (500错误,404错误)2.可以筛查速度较慢的网页,从这个方向也可以定位慢SQL吧.(也有服务器...
外部排序优化
优化外部排序主要步骤重新拆分如下第一阶段1.将未排序的大文件切分(spilterReceiver)2.一个线程池专门接收byte[],并将其转化为long[] (prepareReceiver)3.一个线程池专门排序long[] (sortReceiver)4.一个线程池专门将已经有序的long[]写入文件 (writerReceiver)这个过程直接写long类型的数字到文件,因为写入文本占...
外部排序
外部排序如果需要排序的文件超过了内存的大小,就需要分块排序,按块写入文件,最后再归并已经有序的分块文件。第一阶段 切分排序1.将原始未排序的大文件,分为有序的小文件 1.1确定大文件切分的位置 1.2主线程按块读取原始文件,然后交给排序线程 1.3排序线...
JAVA栅栏
JAVA并发编程实践 83页栅栏与闭锁不同的是,栅栏可以重复使用。import java.util.concurrent.BrokenBarrierException; import java.util.concurrent.CyclicBarrier; public class Test { //一个同步辅助类,它允许一组线程互相等待,直...
JAVA闭锁
JAVA并发编程实践 79页 闭锁设置线程的集合点import java.util.*;import java.util.concurrent.*;public class TestHarness{ public long timeTasks(int nThreads,final Runnable task) throws Exception ...
JAVA信号量
JAVA并发编程实践 83页JAVA信号量实际用的并不多,书上的例子记录一下。若许可证不足,则线程阻塞import java.util.*;import java.util.concurrent.*;public class BoundedHashSet<T>{ private final Set<T> set;...
Java实现在控制终端显示的字符进度条
今天看到一个很有意思的小程序,记录一下import java.text.DecimalFormat;/** * 控制台字符型进度条。 * * @author 傲风 */public class ConsoleProgressBar { &n...
JAVA内存映射文件实现多线程下载
JAVA NIO内存映射文件可以实现多线程下载首先,使用firefox下载一个tomcatJAVA多线程下载程序import java.io.FileNotFoundException;import java.io.IOException;import java.io.InputStream;import java.io.RandomAccessFile;import java.net.HttpURLConnection;...
JAVA切分大文件
假设一个很大的文本文件,每行以\n结束。下面的代码,可以切分指定的大文件,并且保证每个文件都是\n结束。这是外部排序切分的前提条件。import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.File;import java.io.FileInputStream;...
Java使用Zip压缩
import java.util.zip.*;import java.io.*;public class ZipUtil { public static void main(String[] args) throws IOException { unzip("/home/lihuilin/桌面/src.zip", "/home/li...
ByteBuffer按行处理数据(readline)
NIO没有BufferedReader这样读取行的方法。可以查找ByteBuffer最后一个换行符,在换行符之后的数据,重新放回ByteBufferimport java.io.FileInputStream;import java.io.IOException;import java.io.UnsupportedEncodingException;import java.nio.ByteBuffer;import ...
使用jackson序列化对象
Spring MVC集成Jackson序列化对象非常方便,省去了自己手工映射的麻烦。其实单独使用Jackson也是非常的方便public class Test { private static ObjectMapper MAPPER = new ObjectMapper(); static {  ...
Spring 事务管理高级应用难点剖析
文章如下:http://www.ibm.com/developerworks/cn/java/j-lo-spring-ts1/http://www.ibm.com/developerworks/cn/java/j-lo-spring-ts2/http://www.ibm.com/developerworks/cn/java/j-lo-spring-ts3/因为数据库连接绑定到了线程,所以PROPAGATION_REQUIRED事务传播则很好理解。ThreadLocal有数据库连接,说明已经存在...
URIEncoding和useBodyEncodingForURI详解
之前关于编码的问题已经总结过两次了,有些地方写的很粗略。http://blog.itpub.net/29254281/viewspace-775925/http://blog.itpub.net/29254281/viewspace-1063133/Tomcat解决请求乱码可以使用URIEncoding和useBodyEncodingForURI.下面是两个参数的具体说明,参见ApacheTomcat官方手册。URIEncoding...
Apache配置反向代理、负载均衡和集群(mod_proxy方式)
Apache配置负载均衡和集群使用mod_jk的方式比较多。但是mod_jk已经停止更新,并且配置相对复杂。Apache2.2以后,提供了一种原生的方式配置负载均衡和集群,比mod_jk简单很多。1.Apache配置反向代理 正向代理一般是指PC连接到代理服务器,由代理服务器转发请求到网站。而反向代理指的是用户将请求发送...
在JAR包中内嵌页面资源
有时候使用JAVA写一些功能,封装为一个JAR包,提供给项目使用,这些项目最终发布为WAR包。但是有的时候,我提供的功能需要少许的页面,如JSP,JS,HTML和图片等。但是又不能侵入到项目的代码。当然,使用Servlet3.0可以实现在JAR中内嵌视图资源的功能。但是如果不使用Servlet3.0,可以写一个过滤器实现这个功能。过滤器...