- 博客(37)
- 资源 (8)
- 收藏
- 关注
原创 一年读书记之2014
一年读书记之2014前言:换工作之后,这个blog基本没更新过,天天加班,也是懈怠了。 眼看他起朱楼,眼看他宴宾客,眼看他楼塌了。 攥不住时间,也抵不住这世界变化。一咋眼的工夫,一年又过去了。突然想起去年年底总结了2013年重要的读书清单,索性今年也照例来一篇。 印象中今年买书不算多,读的也一般,惰矣。Kindle也不在了,除了电脑上零星地扫扫博
2014-12-29 22:21:58
1603
原创 我们仨
古道驿上,我们仨失散了。 读了几十页杨绛的《我们仨》,悲伤一直伴随挥散不去。鼻腔和瞳孔分明有东西一直向外涌。谁能摆脱生老病死的命运,不知何时起,我一直对人生的终场怀着深深的恐惧。今日,我们送走了谁,明日,又是谁在送别我们。人生终究是一场别离,别离苦,若如此,又何必这徒劳的相聚。既有今日,何必当初。黛玉说,“人有聚就有散,聚时欢喜,到散时岂不冷清?既清冷则伤感,所以不如倒是不聚的好。比如那
2014-04-07 23:48:17
759
原创 SICP换零钱问题clojure改写版
scheme版见:http://blog.pengqi.me/2012/06/07/sicp-making-change/
2014-03-28 11:28:39
974
原创 历史的风
在都市的横流中,科技与道德、传统与新生等等在这泛起浪花,我也舶着船儿在上面飘。我臂膀无力,撑不起船篙,我却哼哼唧唧地吟着“杨柳岸,晓风残月”,幻回那千年之前。两宋风云,赵匡胤一根哨棒打下了赵宋江山,杯酒释兵权,自此,宋词唱响了“柳永”,却也唱衰了边塞。宋人象我一样无力的臂膀,没了大唐人的雄风,而只有“万般皆下品,唯有读书高”,没有了“十步杀一人,千里不留行”,而有了“凄凄惨惨戚戚”,遗忘了“骏马牡
2014-03-14 00:45:35
905
原创 高效且可伸缩的结果缓存
最近重新翻看《java并发编程实战》,现在读这本书还是挺轻松的。然而不得不说,java并发的坑儿还是太多了,不小心写出的程序要么伸缩性不够,要么安全性问题或者活跃性问题。譬如这个构建缓存的例子。先看,第一个伸缩性极差的代码public class Memoizer1 implements Computable { private final Map cache = new
2014-03-05 21:19:01
630
原创 clojure读取文件->转换Map
一月份的那篇博客http://blog.csdn.net/lrq1988/article/details/18091901处理数据,其大概意思是读取文件,并将其内容封装到MAP里,使外部能方便索引。当文件有修改的时候,可以使用执行器设置定时更新任务。当时用java写的,周末在家看clojure,就想用clojure重写一下这个程序,折腾了一会子,感觉又忘了这个clojure序列的惰性化,遂作罢
2014-02-24 11:25:47
1921
原创 谈编程中函数作为参数
再也不跟没接触过函数式编程的面向对象程序员谈函数式了,简直没法交流啊,要争红了脸呐。下班的时候看erlang,跟同事聊,我说函数式编程里面函数可以直接作为参数传递,而像java这样的面向对象语言不可以,结果立马被反驳。俩人争论不休啊,我可急死了,搞的我不想一起聊啊不想聊啊。也或许我水平还不够,心里没底吧。譬如函数式语言clojure,从http://qiujj.com/stat
2014-02-10 20:19:08
875
1
原创 多线程处理大数据(4)
多线程或者并发程序,总是不经意间带着陷阱,今天发现程序还是好多改进的空间。简直是一个程序引发的血案呐。另外,volatile boolean 可以用AtomicBoolean替换。AtomicBoolean是原子性的,而volatile只有可见性。package com.kong.trinet.util;import java.io.BufferedReader;import ja
2014-01-10 19:19:18
995
原创 多线程处理大数据(再续)
接前篇,前面的程序,是在自己的 mac 上跑的,几十万条数据速度还可以,但是今天用公司的电脑就变慢了。同样是开启了四条线程处理,但是公司电脑明显不给力。观察了一下CPU,开启四条线程,基本上CPU占用率就跑满了,可能阻塞的时间远大于计算的时间,从而导致变慢。于是,就写了个单线程的版本,明显快多了,大概不到1秒的样子。【注意】 started = true ;一定不要忘记写,不然调用的时
2014-01-07 14:56:11
1088
原创 多线程读取大数据文件(续)
昨天的程序有点错误,重新粘一个, 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
1211
原创 多线程读取大数据文件
工作之故,要读取一个几十万条的文本,就写了这个程序,倒腾了俩天,并不一定是最终版,姑且先记录下来。1、本地读取以后改为网络读取2、timer是为了作定时刷新3、容器启动时,首先加载MobileUtil.init()方法4、多核服务器,加载会更快,根据服务器内核切割获取的内容来组装map5、基于线程安全考虑,HashMap可能改为ConcurrentHashMapimport
2014-01-06 21:01:17
2713
原创 java并发编程设计
读完了Venkat Subramaniam的《java虚拟机并发编程》中文译本,对并发编程有了更进一步的认识。这本书,名字读来让人有些误解,以为是讲java虚拟机的,其实内容讲的是在jvm上的几种编程模型。这里权当作个笔记,梳理思路,回忆下书的大概内容。熟悉java的童鞋知道,java是实体与状态绑定的。所以在处理共享状态时,要考虑线程安全问题。虽然处理状态不可避免,但我们
2014-01-04 20:55:55
711
原创 《洗澡》之后
周末在家读完《洗澡》,读得很快,不是很细致。 书主要讲的建国后知识分子改造,以及改造前的故事。 统供三部分,第一部分乍读不明所以,其实是主要讲的各路人才、知识分子被聚集到一起,来到所谓的研究院。到第二部分人物脉络渐渐清晰,刻画人物、以及之间的故事。到第三部分,我就很喜欢了,尤其是每个人的“洗澡”检讨,不动声色地揭露出每个人的丑陋和恶俗。读来很好笑,想想却是那个时代真实的发生
2013-12-22 15:30:06
731
原创 MapReduce
第一次看见MapReduce的概念是hadoop书里,然后就是学习函数式编程clojure的时候,再后来发现storm中也存在。维基百科如是解释:MapReduce是Google提出的一个软件架构,用于大规模数据集(大于1TB)的并行运算。概念“Map(映射)”和“Reduce(化简)”,及他们的主要思想,都是从函数式编程语言借来的,还有从矢量编程语言借来的特性。下面整理比较一下,三种环境
2013-12-11 10:27:34
938
转载 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
909
原创 clojure复习
编译在学习Clojure过程中你会发现,很多时候你并没有执行过第一步、即先创建字节码。 而是直接让JVM执行Clojure源代码。这是怎么回事?JVM不是只能运行字节码的吗? 秘密就在于Clojure的核心库即 clojure.jar。它会在运行时先把 Clojure 源代码翻译成字节码供JVM执行。整体上这就相当于把前两步工作合并一起完成了,而且是在程序运行时完成的。当然你也可以在程序运
2013-12-03 16:30:29
786
原创 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
4149
原创 emacs+nrepl+clojure
最近因为项目任务在弄java的东西,然后把druid连接池应用到了开发中,感觉还不错哦。因为重装了系统,clojure的东西又重新装了一下,windows下的emacs+nrepl+clojure。1、emacs的安装配置,安装很简单,配置就比较讲究了。在emacs的menu bar选择options,进行任意操作,会在操作系统用户主目录(例如我的:C:\Users\lrq\)下生成.em
2013-11-26 17:51:46
1667
原创 在eclipse下的maven工程调试
普通的java工程在eclipse中有debug模式,maven则工程可以java远程调试来debug。1、菜单栏【run】->【External Tools】->【External Tools Configurations...】2、新建program,Main选项卡中Location:填入mvn路径、Working Directory:填入工程项目路径、Argument填写tomcat
2013-11-18 18:49:27
1010
原创 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
3469
原创 观察者模式
知识,还是要实际应用才印象深刻。看了很多书,当时记忆和理解还不错,但时间久了总会忘记。像设计模式这个东西,单纯的看书,觉得挺简单,但实际编码时,往往无所适从,忘记了这些知识。知识还是得多复习、多巩固,然后多练,我个人属于看多写少的,惭愧。所以决定还是用博客的形式记录一下,也还能常回头翻翻。以前在网易写非技术性博客,新浪的博客倒是技术的,但是记录不系统、漫无目的,有点像做备忘录随记一样。观察者模
2013-11-16 14:01:54
631
原创 装饰者模式与代理模式
昨天写了代理模式,今天就摘抄一段装饰者模式的对比,这俩实在是太像了。装饰模式:以对客户端透明的方式扩展对象的功能,是继承关系的一个替代方案;代理模式:给一个对象提供一个代理对象,并有代理对象来控制对原有对象的引用;装饰模式应该为所装饰的对象增强功能;代理模式对代理的对象施加控制,并不提供对象本身的增强功能。二者的实现机制确实是一样的,可以看到他们的实例代码重复是很多的。但就
2013-11-13 21:20:39
573
原创 代理模式
参考:《java程序性能优化》--葛一鸣代理模式,屏蔽用户对真实对象的访问,而用代理对象完成用户请求。好处:(1)安全,屏蔽客户端之间访问真实对象。(2)增加真实对象功能,比如spring的拦截器,利用代理模式,实现方法前和方法后等拦截。、(3)延迟加载角色:主题接口、真实主题、代理类、客户端主类1、普通代理模式public interface IQ
2013-11-12 22:18:22
724
原创 单例模式
单例模式是一种对象创建模式,用于产生一个对象的具体实例,并确保系统中这个类只产生一个实例。使用单例模式的好处:(1)对于频繁使用的对象,像数据库操作使用JDBC连接,可以省略创建对象所花费的时间,减少系统开销。import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;i
2013-11-12 21:19:06
720
原创 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
2632
原创 关于clojure个人博客
折腾了俩个多星期,零敲碎打,终于把这个博客系统弄到可以用了。上班一如即往地比较闲,于是就先写点东西。记得今年5,6月份,去书店看到一本编程书,具体是什么忘记了,反正讲的是一门我从未听说过的编程语言。我突然就对这种小众编程语言感兴趣起来了。回家上网查了挺久,包括go、haskell、lua、scala之类的,对比之下最终选择了一门叫clojure的语言学习。结果一发不可收拾,我是
2013-11-05 18:28:46
1203
1
原创 代码审查工具 FindBugs
介绍FindBugs是一款Java静态代码分析工具,与其他静态分析工具(如Checkstyle和PMD)不同,FindBugs不注重样式或者格式,它专注于寻找真正的缺陷或者潜在的性能问题,它可以帮助java工程师提高代码质量以及排除隐含的缺陷。有了静态分析工具,就可以在不实际运行程序的情况对软件进行分析。它可以简单高效全面地帮助我们发现程序代码中存在的bug,bad smell,以
2013-11-04 16:52:15
659
转载 clojure解构(clojure destructuring)
【转】http://rritw.com/a/JAVAbiancheng/JAVAzonghe/20130615/370731.html由于在clojure中如果只靠一些集合到操作函数如first、last、nth等函数,不能够简洁的获取一些嵌套集合中的元素,所以需要destructuring来使我们可以简洁快速的去获取集合中的元素。由于在clojure中如果只靠一些集合到操作函数如fi
2013-11-04 10:26:56
953
翻译 compojure-clojure
compojureCompojure是一个在Ring基础上开发出的小型路由库,可使得web程序由小而独立的部分组成。使用时,在project.clj文件添加依赖:[compojure "1.1.5"]Getting Started使用compojure最简单的方式是使用clojure构建工具leiningen。如果你还没有,那就先去下载安装leiningen。为了使得我
2013-09-29 14:23:34
1988
1
翻译 ring-clojure
翻译的是clojure的ring库文档,原文来自git:https://github.com/ring-clojure/ring/wiki。不知道这个之前是不是有人翻译过。初试牛刀,纰漏错误之处难免,请指正。Ring 是一个Clojure编程语言构建web应用程序的底层接口和库。它类似于Rack之于Ruby,WSGI之于Python,或者Java的Servlet规范。Get
2013-09-24 16:48:07
3003
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人