1. 你需要精通面向对象分析与设计(OOA/OOD)、涉及模式(GOF,J2EEDP)以及综合模式。你应该了解UML,尤其是class、object、interaction以及statediagrams。

  2. 你需要学习Java语言的基础知识以及它的核心类库(collections、serialization、streams、networking、multithreading、reflection、event、handling、NIO、localization以及其他)。

  3. 你应该了解JVM、classloaders、classreflect以及垃圾回收的基本工作机制等。你应该有能力反编译一个类文件并且明白一些基本的汇编指令。

  4. 如果你将要写客户端程序,你需要学习Web的小应用程序(applet),必需掌握GUI设计的思想和方法,以及桌面程序的SWING、AWT、SWT。你还应该对UI部件的JavaBEAN组件模式有所了解。JavaBEANS也被应用在JSP中以把业务逻辑从表现层中分离出来。

  5. 你需要学习Java数据库技术,并且会使用至少一种persistence/ORM构架,例如Hibernate、JDO、CocoBase、TopLink、InsideLiberator(国产JDO红工厂软件)或者iBatis。

  6. 你还应该了解对象关系的阻抗失配的含义以及它是如何影响业务对象与关系型数据库的交互,和它的运行结果。还需要掌握不同的数据库产品运用,比如Oracle、MySQL、SQL server。

  7. 你需要学习Servlets、JSP,以及JSTL(StandardTagLibraries)和可以选择的第三方TagLibraries。

  8. 你需要熟悉主流的网页框架,例如JSF、Struts、Tapestry、Cocoon、WebWork,以及他们下面的涉及模式,如MVC/MODEL2。

  9. 你需要学习如何使用及管理Web服务器,例如tomcat、resin、Jrun,并且知道如何在其基础上扩展和维护Web程序。

  10. 你需要学习分布式对象以及远程API,例如RMI和RMI/IIOP。

  11. 你需要掌握各种流行中间件技术标准和与Java结合实现,比如Tuxedo、CROBA,当然也包括JavaEE本身。

  12. 你需要学习最少一种的XMLAPI,例如JAXP(JavaAPIforXMLProcessing)、JDOM(JavaforXMLDocumentObjectModel)、DOM4J或JAXR(JavaAPIforXMLRegistries)。

  13. 你应该学习如何利用Java的API和工具来构建WebService。例如JAX-RPC(JavaAPIforXML/RPC)、SAAJ(SOAPwithAttachmentsAPIforJava)、JAXB(JavaArchitectureforXMLBinding)、JAXM(JavaAPIforXMLMessaging)、JAXR(JavaAPIforXMLRegistries)或者JWSDP(JavaWebServicesDeveloperPack)。

  14. 你需要学习一门轻量级应用程序框架,例如Spring、PicoContainer、Avalon,以及它们的IoC/DI风格(setter,constructor,interfaceinjection)。

  15. 你需要熟悉不同的J2EE技术,例如JNDI(JavaNamingandDirectoryInterface)、JMS(JavaMessageService)、JTA/JTS(JavaTransactionAPI/JavaTransactionService)、JMX(JavaManagementeXtensions),以及JavaMail。

  16. 你需要学习企业级JavaBeans(EJB)以及它们的不同组件模式:Stateless/StatefulSessionBeans、EntityBeans(包含Bean-ManagedPersistence[BMP]或者Container-ManagedPersistence[CMP]和它的EJB-QL),或者Message-DrivenBeans(MDB)。

  17. 你需要学习如何管理与配置一个J2EE应用程序服务器,如WebLogic、JBoss等,并且利用它的附加服务,例如簇类,连接池以及分布式处理支援。你还需要了解如何在它上面封装和配置应用程序并且能够监控、调整它的性能。

  18. 你需要熟悉面向方面的程序设计以及面向属性的程序设计(这两个都被很容易混淆的缩写为AOP),以及他们的主流Java规格和执行。例如AspectJ和AspectWerkz。

  19. 你需要熟悉对不同有用的API和frame work等来为你服务。例如Log4J(logging/tracing)、Quartz(scheduling)、JGroups(networkgroupcommunication)、JCache(distributedcaching)、Lucene(full-textsearch)、JakartaCommons等等。

  20. 你应该熟练掌握一种JavaIDE例如sunOne、netBeans、IntelliJIDEA或者Eclipse。(有些人更喜欢VI或EMACS来编写文件。随便你用什么了)

  21. Java(精确的说是有些配置)是冗长的,它需要很多的人工代码(例如EJB),所以你需要熟悉代码生成工具,例如XDoclet。

  22. 你需要熟悉一种单元测试体系(JNunit),并且学习不同的生成、部署工具(Ant,Maven)。

  23. 你需要熟悉一些在Java开发中经常用到的软件工程过程。例如RUP(RationalUnifiedProcess)andAgilemethodologies。

  24. 你还需要紧跟Java发展的步伐,比如现在可以深入的学习Webwork2.0。

  25. 你必需要对实际项目的开发流程有所了解,至少要有两个有实际应用价值的项目,而不是练习项目!因为现在企业看重的是你有没有实际的开发经验,真正开发经验的体现就是你做的项目,也就是有实际应用的项目!

原文转自:Here


HashMap的工作原理是近年来常见的Java面试题。几乎每个Java程序员都知道HashMap,都知道哪里要用HashMap,知道Hashtable和HashMap之间的区别,那么为何这道面试题如此特殊呢?是因为这道题考察的深度很深。这题经常出现在高级或中高级面试中。投资银行更喜欢问这个问题,甚至会要求你实现HashMap来考察你的编程能力。ConcurrentHashMap和其它同步集合的引入让这道题变得更加复杂。让我们开始探索的旅程吧!

Read More

一:人们面临交替关系

“天下没有白吃的午餐。”为了得到一件东西,通常不得不放弃另一件东西。作出决策要求我们在一个目标与另一个目标之间有所取舍。

学生面临如何分配学习时间的交替,父母在购物,旅游和储蓄间面临交替,社会面临效率与平等的交替。

Read More

      昨夜,小读王小波的《黄金时代》,在其玩味的言语之间停不下来,只是未曾购得,只是才看了样章而已。今特查了他得生平和文集,也算很是青睐。知晓此人倒也很久,前段时间更也知道他对于计算机这块也是颇有研究,也算中国第一代程序员了;于现在的我而言,很是钦赞!

Read More

Lua实现闭包

1
2
3
4
5
6
7
8
9
10
11
12
--[[@Func :实现闭包
@Desc : 当一个函数内部嵌套另一个函数定义时,内部的函数体可以访问外部的函数的局部变量,这种特征我们称作词法定界]]
function fuck()
local i = 0
return function()
i = i + 1
return i
end
end
c1 = fuck()
print(c1())
print(c1())

Read More

Lua采用了基于垃圾收集的内存管理机制,因此对于程序员来说,在很多时候内存问题都将不再困扰他们。然而任何垃圾收集器都不是万能的,在有些特殊情况下,垃圾收集器是无法准确的判断是否应该将当前对象清理。这样就极有可能导致很多垃圾对象无法被释放。为了解决这一问题,就需要Lua的开发者予以一定程度上的配合。比如,当某个table对象被存放在容器中,而容器的外部不再有任何变量引用该对象,对于这样的对象,Lua的垃圾收集器是不会清理的,因为容器对象仍然引用着他。如果此时针对该容器的应用仅限于查找,而不是遍历的话,那么该对象将永远不会被用到。事实上,对于这样的对象我们是希望Lua的垃圾收集器可以将其清理掉的。见如下代码:

Read More

Git配置

1
2
3
4
5
6
7
8
9
10
git config --global user.name "robbin"
git config --global user.email "fankai@gmail.com"
git config --global color.ui true
git config --global alias.co checkout
git config --global alias.ci commit
git config --global alias.st status
git config --global alias.br branch
git config --global core.editor "mate -w" # 设置Editor使用textmate
git config -l # 列举所有配置
用户的git配置文件~/.gitconfig

Read More

自20日确立此行,21号下班便走,自深圳南山而始,一路众生大侃戏调,颇是馨悦。颠簸近七八小时,是夜两点余达取道之江西赣州信丰,我等入一馆而歇,人疲力竭,未管舒宜,速浴而寝。

入梦四时后即起,寡梳少洗,觅寻早餐,一阵折腾行驶时余,九点半方至广东韶关坪田: 因慕银杏之乡而来,俱以为能观银杏成林,杏果满枝,金黄漫野,曼妙无限。但见:一路尚在开发修缮,车过而生尘烟;边房兮待紧建。苦民多拾野物(不过瘦红薯老拐枣,松果花杏黄叶,另有干鸭杏仁及些许黄果,未曾识得,亦未食也)于道旁而售,其中不乏老人幼子。自朝而夕,行经坪田的坳背村,军营寨,冯屋。众人不过遇杏而拍罢了,一路来尽此为快。然,行之所至,未有杏群,更别杏林,不过皆是几株一簇,抑或平地起一支以独秀,美则美矣,秀清有余,然寡而独舞!偶也可遇几株清竹香樟,更杂万千翠木刺草于野,也算远尘嚣而静安。然,人流似洪,余也是毕今日之力,皆在思拍靓景。

午团餐,尚可食。下午行路,小车兼之,然游人如织,使步行亦有七八余里,期间亦是不曾安分,大秀凌波跳往。至冯屋,正值金屋西下,兼此处有两株六百年老银杏,颇有 “落叶与暖霞齐飞,秋杏共大地一色” 之势,质朴乡野,如身着黄衣女子般曼妙;落日与相机将馨林照耀,风乍起,但只美见而已;众人也是欣喜不已,拥树而显术,肆意闪光,唯人流铁通,难得佳境,如此盘桓至暮,小三轮大胖吧颠簸而归;于中国自是一番久堵,夜九点半又杀至赣州信封,觅而食,冲以澡,已是夜深,疲意褪去,唯脚掌大痛;当早寝明复往南雄至帽子峰,愿能不虚其行。

—2014-12-22日暮晚 于广州.南雄 至 江西信封路途—

如何创建一个线程

按 Java 语言规范中的说法,创建线程只有一种方式,就是创建一个 Thread 对象。而从 HotSpot 虚拟机的角度看,创建一个虚拟机线程
有两种方式,一种是创建 Thread 对象,另一种是创建 一个本地线程,加入到虚拟机线程中。

Read More