java
文章平均质量分 77
lrq1988
这个作者很懒,什么都没留下…
展开
-
观察者模式
知识,还是要实际应用才印象深刻。看了很多书,当时记忆和理解还不错,但时间久了总会忘记。像设计模式这个东西,单纯的看书,觉得挺简单,但实际编码时,往往无所适从,忘记了这些知识。知识还是得多复习、多巩固,然后多练,我个人属于看多写少的,惭愧。所以决定还是用博客的形式记录一下,也还能常回头翻翻。以前在网易写非技术性博客,新浪的博客倒是技术的,但是记录不系统、漫无目的,有点像做备忘录随记一样。观察者模原创 2013-11-16 14:01:54 · 631 阅读 · 0 评论 -
多线程读取大数据文件
工作之故,要读取一个几十万条的文本,就写了这个程序,倒腾了俩天,并不一定是最终版,姑且先记录下来。1、本地读取以后改为网络读取2、timer是为了作定时刷新3、容器启动时,首先加载MobileUtil.init()方法4、多核服务器,加载会更快,根据服务器内核切割获取的内容来组装map5、基于线程安全考虑,HashMap可能改为ConcurrentHashMapimport原创 2014-01-06 21:01:17 · 2718 阅读 · 0 评论 -
多线程处理大数据(4)
多线程或者并发程序,总是不经意间带着陷阱,今天发现程序还是好多改进的空间。简直是一个程序引发的血案呐。另外,volatile boolean 可以用AtomicBoolean替换。AtomicBoolean是原子性的,而volatile只有可见性。package com.kong.trinet.util;import java.io.BufferedReader;import ja原创 2014-01-10 19:19:18 · 999 阅读 · 0 评论 -
谈编程中函数作为参数
再也不跟没接触过函数式编程的面向对象程序员谈函数式了,简直没法交流啊,要争红了脸呐。下班的时候看erlang,跟同事聊,我说函数式编程里面函数可以直接作为参数传递,而像java这样的面向对象语言不可以,结果立马被反驳。俩人争论不休啊,我可急死了,搞的我不想一起聊啊不想聊啊。也或许我水平还不够,心里没底吧。譬如函数式语言clojure,从http://qiujj.com/stat原创 2014-02-10 20:19:08 · 879 阅读 · 1 评论 -
高效且可伸缩的结果缓存
最近重新翻看《java并发编程实战》,现在读这本书还是挺轻松的。然而不得不说,java并发的坑儿还是太多了,不小心写出的程序要么伸缩性不够,要么安全性问题或者活跃性问题。譬如这个构建缓存的例子。先看,第一个伸缩性极差的代码public class Memoizer1 implements Computable { private final Map cache = new原创 2014-03-05 21:19:01 · 633 阅读 · 0 评论 -
装饰者模式与代理模式
昨天写了代理模式,今天就摘抄一段装饰者模式的对比,这俩实在是太像了。装饰模式:以对客户端透明的方式扩展对象的功能,是继承关系的一个替代方案;代理模式:给一个对象提供一个代理对象,并有代理对象来控制对原有对象的引用;装饰模式应该为所装饰的对象增强功能;代理模式对代理的对象施加控制,并不提供对象本身的增强功能。二者的实现机制确实是一样的,可以看到他们的实例代码重复是很多的。但就原创 2013-11-13 21:20:39 · 574 阅读 · 0 评论 -
java回调方法
最近被人问到java实现回调方法d原创 2014-06-12 14:57:12 · 796 阅读 · 0 评论 -
This引用逸出
《java并发编程实战》里面有段代码,原来看的时候稍微you dian原创 2014-06-02 22:37:36 · 1788 阅读 · 0 评论 -
单例模式
单例模式是一种对象创建模式,用于产生一个对象的具体实例,并确保系统中这个类只产生一个实例。使用单例模式的好处:(1)对于频繁使用的对象,像数据库操作使用JDBC连接,可以省略创建对象所花费的时间,减少系统开销。import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;i原创 2013-11-12 21:19:06 · 720 阅读 · 0 评论 -
多线程处理大数据(再续)
接前篇,前面的程序,是在自己的 mac 上跑的,几十万条数据速度还可以,但是今天用公司的电脑就变慢了。同样是开启了四条线程处理,但是公司电脑明显不给力。观察了一下CPU,开启四条线程,基本上CPU占用率就跑满了,可能阻塞的时间远大于计算的时间,从而导致变慢。于是,就写了个单线程的版本,明显快多了,大概不到1秒的样子。【注意】 started = true ;一定不要忘记写,不然调用的时原创 2014-01-07 14:56:11 · 1092 阅读 · 0 评论 -
多线程读取大数据文件(续)
昨天的程序有点错误,重新粘一个, for循环终结括号括错了。另外新加了个destroy()方法package com.kong.trinet.util;import java.io.BufferedReader;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.IO原创 2014-01-07 10:58:17 · 1212 阅读 · 0 评论 -
java并发编程设计
读完了Venkat Subramaniam的《java虚拟机并发编程》中文译本,对并发编程有了更进一步的认识。这本书,名字读来让人有些误解,以为是讲java虚拟机的,其实内容讲的是在jvm上的几种编程模型。这里权当作个笔记,梳理思路,回忆下书的大概内容。熟悉java的童鞋知道,java是实体与状态绑定的。所以在处理共享状态时,要考虑线程安全问题。虽然处理状态不可避免,但我们原创 2014-01-04 20:55:55 · 713 阅读 · 0 评论 -
代码审查工具 FindBugs
介绍FindBugs是一款Java静态代码分析工具,与其他静态分析工具(如Checkstyle和PMD)不同,FindBugs不注重样式或者格式,它专注于寻找真正的缺陷或者潜在的性能问题,它可以帮助java工程师提高代码质量以及排除隐含的缺陷。有了静态分析工具,就可以在不实际运行程序的情况对软件进行分析。它可以简单高效全面地帮助我们发现程序代码中存在的bug,bad smell,以原创 2013-11-04 16:52:15 · 660 阅读 · 0 评论 -
tomcat下关闭应用,线程未终止
tomcat关闭时,有时候因为各种原因会报线程未关闭的错误。像这样 The web application [/Test] appears to have started a thread named [your Thread] but has failed to stop it. This is very likely to create a memory leak.我们可以原创 2013-11-18 12:07:13 · 3474 阅读 · 0 评论 -
代理模式
参考:《java程序性能优化》--葛一鸣代理模式,屏蔽用户对真实对象的访问,而用代理对象完成用户请求。好处:(1)安全,屏蔽客户端之间访问真实对象。(2)增加真实对象功能,比如spring的拦截器,利用代理模式,实现方法前和方法后等拦截。、(3)延迟加载角色:主题接口、真实主题、代理类、客户端主类1、普通代理模式public interface IQ原创 2013-11-12 22:18:22 · 724 阅读 · 0 评论 -
HttpClient学习整理 (一)
HttpClient是apache设计实现,用来简化http客户端与服务器端的网络通信编程接口。目前,有commons-httpclient和httpclient俩个版本,前者最后版本是3.1,后者分为HttpClient和HttpCore两个部分,同时包含server和client端的API,版本号从4.0开始。我们尽量优先使用最新版本的httpclient。commons-http原创 2013-11-12 17:00:05 · 2635 阅读 · 0 评论 -
HttpClient学习(二)
HttpClient4.3教程原创 2013-11-13 14:04:31 · 714 阅读 · 0 评论 -
log4j之DailyRollingFileAppender源码 重写文件名后缀
DailyRollingFileAppende每天(yyyy-MM-dd)生成一个日志文件,但是当天的文件没有日期后缀。试着重写了一下他的方法。/** * Copyright (C) The Apache Software Foundation. All rights reserved. * * This software is published under the terms of原创 2013-12-03 10:08:31 · 4151 阅读 · 0 评论 -
zookeeper工作原理
最近在云主机上安装storm,照着量子恒道博客又看了一遍http://blog.linezing.com/2012/12/storm%E5%85%A5%E9%97%A8%E6%95%99%E7%A8%8B-%E7%AC%AC%E4%B8%80%E7%AB%A0-%E5%89%8D%E8%A8%80其中,关于zookeeper又搜索学习了一下,下面是百度搜索研发部的博客h转载 2013-12-10 15:39:11 · 910 阅读 · 0 评论 -
MapReduce
第一次看见MapReduce的概念是hadoop书里,然后就是学习函数式编程clojure的时候,再后来发现storm中也存在。维基百科如是解释:MapReduce是Google提出的一个软件架构,用于大规模数据集(大于1TB)的并行运算。概念“Map(映射)”和“Reduce(化简)”,及他们的主要思想,都是从函数式编程语言借来的,还有从矢量编程语言借来的特性。下面整理比较一下,三种环境原创 2013-12-11 10:27:34 · 940 阅读 · 0 评论 -
java同步工具类
知识复习~~~tong原创 2014-06-02 23:05:52 · 721 阅读 · 0 评论