`
378629846
  • 浏览: 212914 次
  • 性别: Icon_minigender_1
  • 来自: 哈尔滨
社区版块
存档分类
最新评论
文章列表
接上篇并行计算框架的Java实现--系列二   优化锁,之前的锁是采用一个static的Object实现的,这样会有一个问题,如果我创建了多个Executer,那么所有Job都会持有一把锁,既影响性能,也容易出现死锁的情况。所以,改成每个Executer持有一把锁。 Executer代码如下:  public class Executer { //存储任务的执行结果 private List<Future<Object>> futres = new ArrayList<Future<Object>>(); //条件队列锁,以及 ...
接上篇并行计算框架的Java实现--系列一 。 增加对结果的处理: 1、修改Job,实现Callable接口 public abstract class Job implements Callable<Object> { @Override public Object call() throws Exception { Object result = this.execute();//执行子类具体任 ...
最近的工作需要统计一些复杂的报表,为了提高效率,想用多线程去实现,但要在所有线程完成统计任务后,将结果汇总。所以在思考有没有什么办法解决,之所以是“系列一”是因为我想记录下我的思考过程。 1、首先设计一个Executer,负责任务的执行和汇总: public class Executer { //计算已经派发的任务数(条件谓词) public static int THREAD_COUNT = 0; //线程池 private Executor pool = null; public Executer() { this(1); } public Execut ...

ant初探

    博客分类:
  • java
前些天和同事交流,他说ant非常好用,他一直在用,学习资料共享后。这几天研究了一下,还真是不错,这里感谢河东的分享。 之前做过一个java的后台项目需要引入很多jar包,先是用fatjar的方式,将整个工程打成一个jar包进行发布的,一旦修改又要重新打包,上传服务器,费时费力。后来研究了一下MANIFEST.MF文件,可以将引用jar配置到这个文件里,虽然是成功了,但MANIFEST.MF的配置太过麻烦,格式要求过于严格。为此我还专门写了一段生成MANIFEST.MF的代码(见之前的文章MANIFEST.MF的应用以及如何读取jar包外的log4j.properties)。下面我们一步一步用a ...
JDK1.4 的 NIO 有效解决了原有流式 IO 存在的线程开销的问题,在 NIO 中使用多线程,主要目的已不是为了应对每个客户端请求而分配独立的服务线程,而是通过多线程充分使用用多个 CPU 的处理能力和处理中的等待时间,达到提高服务能力的目的。 多线程的引入,容易为本来就略显复杂的 NIO 代码进一步降低可读性和可维护性。引入良好的设计模型,将不仅带来高性能、高可靠的代码,也将带来一个惬意的开发过程。 线程模型 NIO 的选择器采用了多路复用(Multiplexing)技术,可在一个选择器上处理多个套接字,通过获取读写通道来进行 IO 操作。由于网络带宽等原因,在通道的读、写操作中是 ...
private HttpClient initHttpClient() { if(httpclient == null){ try { X509TrustManager tm = new X509TrustManager() { public void checkClientTrusted(X509Certificate[] arg0, String arg1) throws CertificateException { } public void checkServerTrusted(X509Certificate[] arg0 ...
String path = ""; URL url = Thread.currentThread().getContextClassLoader().getResource("/"); if(url != null)       path = url.getPath(); else       path = System.class.getResource("/").getPath(); path = path + "/sso-config.properties"; System.out.println(path); ...
如何防止代码腐烂 转自:http://sd.csdn.net/a/20111109/307179.html#postcomment 1.程序员的成长 新手的代码 新手的代码没有经验,基本不考虑代码设计,代码规模稍稍大一点则自己就乱了。 进阶者的代码 小规模的时候 大规模的时候 进阶者已经知道如何设计代码,懂得代码规则,但一般局限于一个模块。规模一大,模块间的调用就会比较混乱,难以维护。 有经验者的代码 有经验者的代码,模块内部代码整洁,模块之间层次清晰,有设计模式,有成熟的体系。可以保持长期的代码整洁。
转自:http://www.iteye.com/topic/470396 在开源java工具包里,最有名的当属apache commons。其中,以commons lang包最为开发者熟知。 但是它作为第三方包存在,或多或少给开发者带来一些不便利。 面包牛奶总是会有的,从java7开始,lang包中的一些优秀工具方法,将被正式引入JDK。 下面是各个已确定被引入的工具类或方法说明。 1, 新增类 java.util.Objects (JDK对工具类的命名一向是以s结尾,例如Collections, Arrays) A, 空指针安全的 equals, hashCode, toStrin ...
转:http://fly.b3log.org/articles/2012/01/30/1327919169428.html 引言:       CentOS自带的yum源中rpm包数量有限,很多时候找不到我们需的软件包,(例如:要安装网络连接查看软件iftop,默认设置下无法使用yum命令安装),下面教大家在CentOS 6.2中(以32位系统为例,64位系统安装方法一样),使用第三方yum源来安装更多软件包。 一、安装CentOS yum源优先级插件yum-priorities       yum install yum-priorities   #输入y安装 二、设置CentOS默认y ...
在有Apache做负载均衡的时候使用request.getRemoteAddr();获取的是Apache的IP ,可以通过如下方式获取,先记下来做个备忘。 String ip = request.getHeader("x-forwarded-for");     if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {          ip = request.getHeader("Proxy-Client-IP");     }    ...
MANIFEST.MF是jar文件的配置文件,在用eclipse或jar命令生成jar包,都会在jar文件里生成这个文件,默认的MANIFEST.MF对我们来说没有什么意义,需要手工的修改一下,简单的例子如下: Manifest-Version: 1.0 Main-Class: com.XMLTools Class-Path: lib/dom4j-1.6.1.jar lib/jaxen-1.1-beta-7.jar lib/log4j-1.2.14.jar lib/sitemesh-2.2.1.jar 一定要注意回车和空格。在这里我们指定该jar文件的main函数以及引入的第三方j ...
转自:http://www.diybl.com/course/3_program/java/javajs/20110826/558997.html 从hadoop框架与MapReduce模式中谈海量数据处理 前言 几周前,当我最初听到,以致后来初次接触Hadoop与MapReduce这两个东西,我便稍显兴奋,觉得它们很是神秘,而神秘的东西常能勾起我的兴趣,在看过介绍它们的文章或论文之后,觉得Hadoop是一项富有趣味和挑战性的技术,且它还牵扯到了一个我更加感兴趣的话题:海量数据处理。 由此,最近凡是空闲时,便在看“Hadoop”,“MapReduce”“海量数据处 ...
package telnet;   import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.Socket; import java.util.ArrayList; import java.util.List;     /**  * Telnet简单实现  *   * @author xueliang 2010.11.6  *   */ public class Telnet { private static f ...
可以反编译单个文件,也可以反编译整个jar
Global site tag (gtag.js) - Google Analytics