Note & Try
RayChase
博客搬家了: https://www.raychase.net/
展开
-
看源码,解疑惑
看JDK源码,解疑惑 从SUN公司主页上搞下来JDK5.0的源码,可以好好研究了。开始吧。 1、Java定时器原理是怎么样的?解包jdk_sec-1_5_0-src-jrl,在/j2se/src/share/classes/java/util中找到Timer类。privateTaskQueuequeue=newTaskQueue(); privateTimer...2008-09-03 21:48:00 · 76 阅读 · 0 评论 -
过多if-else分支的优化
我想谈一谈这个话题是因为我的上一篇博客在ITEye上有一些朋友回复,说if-else过多的分支可以使用switch或者责任链模式等等方式来优化。确实,这是一个小问题,不过我们还是可以整理一下这个小问题的重构方式。为什么要优化?你没有看错。这是要放在第一条谈论的。有许多人会说,叠起来一堆if-else分支,代码就不优雅了。可是,怎样去定义“优雅”的概念呢?再退一步说,即便不“优雅”,又...2013-02-25 11:33:27 · 2163 阅读 · 0 评论 -
代码洁癖症的表现
有下列情形之一的,你患上了代码洁癖症。症状程度可轻可重,轻者帮助写出优雅整洁的代码,重者走火入魔,万劫不复。多余的空行、分号,没有使用的变量,见一个删一个。tab或者空格没有对齐的必须纠正过来,除了缩进用,不允许看到代码内连续两个空格。看到一个类某个方法没有注释,不由自主地加上,不管有没有意义。错误的拼写,无论是在命名还是注释必须纠正过来;不一致的大小写,必须要纠正过来;标点符...2013-02-23 11:17:37 · 376 阅读 · 0 评论 -
做产品的主人
产品经理怎样设计好产品?有很多回答,我曾经见过好些执着于界面美观的产品经理,见过执着于梳理用户需求的产品经理,甚至听说过化身为“用户邮件/文档分析师”的产品经理。我是程序员,是工程师,但我觉得这些人都很不靠谱。这三种不靠谱的产品经理中,第一种最不靠谱。产品经理最好懂技术,但是即便不懂技术,也绝不能化身成为界面设计师。如果我是产品经理,有人有一天对我说,产品经理不就是设计用户界面的人吗?我应该...2013-06-29 20:17:22 · 177 阅读 · 0 评论 -
互联网数据聚合
我们经常需要从互联网上获取数据,在很多情况下,你需要的是特定信息,或者说是符合某些条件的信息,比如:这条需求隐含着两个有普遍意义的步骤:从互联网上聚合符合特定条件的信息;当满足阈值条件时,以某种方式通知用户。事实上有太多做互联网数据聚合的网站了,比如酷讯机票,聚合了各大航空公司的机票信息:再比如一些博客聚合网站等等。现在想想这样的场景:每到一个新地方,自动给...2013-06-04 10:20:09 · 442 阅读 · 0 评论 -
《Rework》语句摘录
《Rework》是让我有所感触的一本书,推荐阅读。作者是37signals的创立人Jason Fried和DHH(没错,此人正是RoR的作者)。37signals有两本书,除了这本,还有一本叫做《Getting Real》。整本书都在做37signals价值观的宣扬,37signals是一家颇为特别的公司,小,但是非常酷,有一些想法令人叫绝。他们做的东西,用他们自己的话来说叫做“web-bas...2012-11-25 01:03:52 · 174 阅读 · 0 评论 -
EasyMock、EasyMock Class Extension和PowerMock
大多数同事都用JUnit做单元测试,JUnit中对方法调用打桩(Mock)是一个麻烦事。好在EasyMock可以帮我们完成。比如有这样一个简单的User类: public class User { private String id; private String name; //get、set方法略} 相应的,有这样一个被测类UserSer...2012-03-20 23:15:20 · 278 阅读 · 0 评论 -
reCAPTCHA项目
要说reCAPTCHA,就要先说一说CAPTCHA,全称是Completely Automated Public Turing test to tell Computers and Humans Apart,即全自动区分计算机和人类的图灵测试,也就是通常说的“验证码”,目的就是要把计算机和人区分开来。在互联网站上,为了防止不安全的、重复暴力的登陆密码破解等操作,需要使用验证码来将机器行为拒之门外...2013-03-14 01:02:43 · 362 阅读 · 0 评论 -
杂记:有关线程的同步和互斥
线程的同步和互斥:线程的同步:指多线程通过特定的手段(如互斥量)来控制线程之间的执行顺序。线程的互斥:实指对共享资源的约束访问。多线程环境中,某些资源只允许一个线程使用,这类资源成为临界资源,线程之间的关系就表现为互斥的。线程之间的同步和互斥是通过操作系统的信号量和PV操作原语来实现的。 互斥体(Mutex):表现互斥现象的数据结构,也被当作二元信号灯。一个互斥基本上是一个...2012-01-25 21:33:52 · 112 阅读 · 0 评论 -
Java的无锁编程和锁优化
在这篇文章里面已经提到了三件事情:1、Peterson 算法,2、ConcurrentHashMap,3、无锁编程的初识。 如果站在语言层面之上,仅从设计的层面看,可以避免锁的思路至少包括:1、单线程来主导行为,多线程池化操作避开状态变量。比如在一个WEB应用中,每一个Action都可以给相应的用户线程分配一个实例,线程之间互不干扰;但是到了业务逻辑Service内,避开Servi...2011-08-07 17:53:00 · 192 阅读 · 0 评论 -
自己编译JDK
注:还有问题,还没有成功,哪位能帮忙解答一下 -_-~||| 0、首先,要有耐心,相信会有够折腾的;如果你会提出“为什么要自己做编译JDK这样无聊的事情”这样的问题的话,还是别往下看了,浪费时间啊。我是参照openjdk的这个文档(README-builds.html)来做的,附件传不上去我就不传了,openjdk里面有。 1、我是再Windows上面编译的,肯定比Linux下...2011-10-05 20:53:43 · 149 阅读 · 0 评论 -
转:强引用、软引用、弱引用和虚引用
⑴强引用(StrongReference) 强引用是使用最普遍的引用。如果一个对象具有强引用,那垃圾回收器绝不会回收它。当内存空间不足,Java虚拟机宁愿抛出OutOfMemoryError错误,使程序异常终止,也不会靠随意回收具有强引用的对象来解决内存不足的问题。 ⑵软引用(SoftReference) 如果一个对象只具有软引用,则内存空间足够,垃圾回收器就不会回收它;如果内存空间不足了...2011-05-29 18:30:00 · 94 阅读 · 0 评论 -
HashMap还是ArrayList?
HashMap还是ArrayList,哪个速度快?ArrayList的contains方法,只会依次遍历元素,和目标元素调用equals比较;HashMap(HashSet也是通过HashMap实现的)的containsKey方法,首先算目标元素的hash值,然后算桶,再到桶里面去依次比较hash值,每个桶都是一个LinkedList;大数据量一定是HashMap快O(1),而Arra...2011-01-10 23:08:00 · 133 阅读 · 0 评论 -
动手实现随机验证码
动手实现随机验证码首先,来写一个画验证码图片的Java类:packagecom.XiongYi.validationCode;importjava.awt.Color;importjava.awt.Font;importjava.awt.Graphics;importjava.awt.image.BufferedImage;importjava.io.IOException;impo...2008-04-11 15:40:00 · 206 阅读 · 0 评论 -
简易socket客户端和多线程服务器实现
简易socket客户端和多线程服务器实现下午时间匆忙写的,尽量简化实现。客户端:packagecom.XiongYi.client;importjava.io.*;importjava.net.*;publicclassClient...{publicstaticvoidmain(String[]args)throwsIOException...{finalStringServe...2008-04-02 22:37:00 · 214 阅读 · 0 评论 -
自己尝试实现的文件上传功能
今天偶然想自己实现一下文件上传功能,但又不知从何入手,于是打算走一步算一步。获得request的输入流,将其完全输出,发现里面的内容格式是类似于这样的:-----------------------------7d81853a1055aContent-Disposition:form-data;name="first"FirstPara------------------------...2008-03-29 23:13:00 · 154 阅读 · 0 评论 -
使用堆外内存
有时候对内存进行大对象的读写,会引起JVM长时间的停顿,有时候则是希望最大程度地提高JVM的效率,我们需要自己来管理内存(看起来很像是Java像C++祖宗的妥协吧)。据我所知,很多缓存框架都会使用它,比如我以前使用过的EhCache(给它包装了个酷一点的名字,叫BigMemory),以及现在项目中的Memcached。在nio以前,是没有光明正大的做法的,有一个work around的办法是直接...2013-07-28 21:30:15 · 215 阅读 · 0 评论