|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
但是我同意你的观点,对于大型项目来说,应该是采用框架的一部分,根据功能的不同而改进,欢迎你能再提出些宝贵意见,我会多多学习的。说到jbuilder,我可能是个人感觉,用的时候确实没有vs爽,我最喜欢的IDE是net网页编程beans,谢谢。比来,在编写一个专门压测NameNode的工具(以下简称s4nn),它有两个难点:
- s4nn必要能够摹拟上万个DataNode;
- s4nn必要天真的撑持对NameNode会见举动的界说.
后者招致了本文的思索.
命令行参数和设置文件是最经常使用来设置体系的办法,前者用于设置项较少,后者则合适设置庞大情形.这两种体例都有配合使人疾苦的中央:
- 编写代码往载进->剖析->转换,一般好像处置协定般无聊(如果有个甚么变动,KMN!!);
- 关于庞大的设置文件编写而言,老是没有随手的编纂器撑持,写起来既累又易错.
如果用代码代替设置文件呢?
呃…这会很贫苦吧,像java如许的改了代码那还不要从头编译啊?
嗯,的确,但并没有设想中那末贫苦,一些技能可让它变得复杂(最少java是如许),如Btrace.
用代码代替自力的设置文件不是奇怪的做法,像Guice,Gant等已以InternalDSL的代码取代了XML.优点很分明:
- 优秀的DSL作风,简便易懂;
- 免除对设置文件的剖析转换;
- 最好的编纂器撑持,语法高亮,一键格局化,提醒补全,重构;
- 编译器匡助查错;
- 与代码无缝分离,可以简单在变更中坚持分歧性.
简言之两个字,“高效”!这却是挺合适s4nn的,无妨一试!
从需求的角度动身,设置应当可以完成:
- 界说一组ClientRPC挪用举动,其挪用参数,次数;
- 界说DataNode的运转时特性,个数.
为满意这两点,代码计划上大概会有:- classClientDriver{voidaddRpc(times,name,args)voidsetNameNode(address)}classDataNodeSimulator{voidsetCapacity(size)voidsetHeartbeatInterval(sec)voidsetBlockReportInterval(sec)voidsetNameNode(address)}
复制代码 那末其设置文件会是:- 1<configuration>2<client>3<rpctimes="100000"name="getFileInfo">4<arguments>5<paramname="src">/foo</param>6</arguments>7</rpc>8</client>9<namenode>10<address>host:port</address>11</namenode>12<datanode>13<simulatornum="10000">14<capacityunit="GB">200</capacity>15<heartbeatIntervalunit="SECOND">1</heartbeatInterval>16<blockReportIntervalunit="HOUR">1</blockReportInterval>17</simulator>18</datanode>19</configuration>
复制代码 复杂吗?复杂,那是由于这只是最基础的,实践的设置招考虑到:
java是一种面向对象的编程语言,优点是可移植性比较高,最初设计时就是本着一次编写到处执行设计的。可以开发各种应用程序和游戏,不过速度没有c++快,所以一般是不用java来编写应用程序和电脑游戏。 |
|