m2eclipse误报”Missing artifact”

m2eclipse报告"Missing artifact XXX:XXX",但实际上maven repository里却有这个artifact,这是为什么? 先说下后果:误报也可能意味着maven解析dependency失败,导致eclipse project的build path里丢失很多库,最终结果就是是在eclipse里无法运行main程序或jetty/tomcat. 而如果在eclipse外面通过maven命令来编译打包程序,却不会有问题,这是为什么? 以下两个因素结合起来可能导致这样的问题出现:    1. maven repository中某些artifact没有pom文件    2. 你的外部maven程序是maven2 maven2对"某些artifact没有pom文件"这种事比较能忍,所以打包仍能成功;但m2eclipse总是使用maven3来做依赖管理(即使你让它指向了外部的maven2),而maven3不能忍受“没有pom文件”. 当m2eclipse发现有东西让它不能忍时,就会乱报这个丢失那个没有之类的。 一个常见的“没有pom文件”的artifact是opensymphony-quartz, 官方maven repository中就没有这个pom. 临时的解决办法是搞一个pom文件丢到maven repository中,如 引用 I finally found a workaround. It is surely a bug in m2eclipse, however the problem disappeared when I added quartz-1.6.0.pom next to quartz-1.6.0.jar in .m2\repository\opensymphony\quartz\1.6.0\ The pom is not present at …

m2eclipse误报”Missing artifact” Read More »

eclipse里无法把一个包直接拖到另一个包下,怎么办?

eclipse里如果把一个包直接拖到另一个包下,它会提示你是不是要把包命名为“com.xxx.copy”;这根本不是我们想要的。 StackOverflow里有人给出了正确的做法:重命名包–把com.xxx改成com.yyy.xxx . 他说: 引用 Use the package explorer view and rename the package. It asks for renaming updating references, renaming sub packages, update textual references in comments and and also non-Java text files. Click on the preview and then ok.

头脑风暴:思考可能性的方案时先不要考虑约束

对一个问题,需要提出各种假设性的方案并进行评估。有一种本能是:在对某个方案还没想透时,你不禁会想到一些约束,让你马上这个方案的可行性。 顺着这个怀疑,你会陷入更多的怀疑,并且花很多脑力和时间来想证明或者推翻自己的怀疑。但由于你对方案本身没有想透,你的证明或推翻往往以失败告终。 接着你又开始回过头来想这个方案本身,然后又被约束所拦住,接着又陷入怀疑中。。。 这种做法本身并没有错,可能最终还是能想透。但由于它的反复、停滞,使得整个过程比较低效。 如果你先不管约束,先把方案本身想透,再来考虑约束对它的影响,效率会高得多。

同事教了一个评估所需qps的办法

互联网应用中,业务方最容易给出的评估指标是UV 我们就是要根据UV推导出系统应该具备的极限峰值 推导过程是:   1. 根据UV估计出PV,一般可以乘10   2. 确定峰值访问的时间长度(比如说中午那个小时),及这个时间段流量占全天流量的比例,从而得出这个时间段内的PV   3. 用这个PV数除于峰值时间段的跨度(单位秒),即得QPS 当然,QPS满足了要求未必就意味着性能达标了。你还要考虑并发数。经验上,可以使用25(当然未必普适)并发数作为极限并发数,然后再测一下在这个并发数QPS能否达到上面推导出的值。 p.s. 为了确定极限并发数,也可以逐渐提高并发数,依次进行性能测试;然后查看性能曲线(如qps,具体视情况而定),直到性能曲线下降为止。

Hadoop: 为什么报“Retrying connect to server: localhost/127.0.0.1:8020”

我明明把端口配成了8021,为什么客户端还会连8020? 很有可能是你的NameNode并没有起起来,可以jps看一下有没有这样一行: 引用 4245 NameNode 如果没有,去$HADOOP_INSTALL/logs里看一下相关的NameNode日志。按经验,如果你用的pseudo模式并且hadoop.tmp.dir没有显示设置,那很有可能是因为你的hdfs环境已经被破坏,因为hdfs默认把文件放/tmp目录下,/tmp很不可靠。 这种情况下,你应该重新格式化一下hdfs文件系统

HDFS NameNode的备份

据象书说,有两种模式:     1. 直接设置,将NameNode中的每一个改变都传达到其他存储系统中。这个可以保证强一致性。   2. 使用Secondary NameNode,定期复制数据。 由于是“定期”,所以在当机时一定会丢失数据。 更多细节待以后补充。