阿里为什么开源这么多项目
我时不时地读到有人对给定的开源框架的错误思考。 当我开始对Struts Web框架进行编程时,每个人都喜欢它。 但是后来,越来越少的人开始指责它,然后是仇恨。
然后人们开始指责Hibernate和最近的MongoDB。 我什至读过“ 我不应该使用MongoDB ”。 好吧,我在Struts,Hibernate和MongoDB上交付了项目,但这些都不是阻碍。
如果有人责怪通常是我们,而不是我们使用的框架。 如果下载并浏览给定开源项目的源代码,则代码质量会令人惊喜。 大多数时候,我发现它至少和我自己做的一样好。 许多开源项目是许多热情的开发人员无休止的工作时间的结果,那么我们为什么要怪他们的框架呢?
就像地球上的任何其他事物一样,所有这些都有优点和缺点,这是我们决定适合我们项目的功能,还是我们到底是否应该考虑采用该框架。
在学习Struts时,Spring或jQuery并不是那么困难,但是在数据库,Hibernate和现在的NoSQL方面则变得更加棘手。 Hibernate和MongoDB都是高质量的产品,我知道许多成功的项目都建立在它们之上,但这并不意味着它们易于使用。 如果您想雇用他们,请准备学习很多,没有其他方法。
当我开始使用Hibernate时,我对它的复杂性不知所措。 我很快了解到,如果不深入研究就无法掌握一切,这就是为什么我决定使用Hibernate完整阅读所有900页Java Persistence的原因 。 那仅仅是开始,即使现在我仍然不时地继续阅读并检查其源代码。
然后,MongoDB在我们的许多项目中都非常适合缝合,并且由于我对NoSQL一无所知,因此我不得不花很多时间才能提高工作效率。 幸运的是,MongoDB提供免费的在线课程 ,我不得不再次回到学习上。 如果您曾经使用过MongoDB聚合框架,那么您就会明白我的意思。
这只是我犯下的一个简单错误的简短示例,我花了两个小时的常规睡眠时间来解决它。
$match: {
"timestamp" : {
$gte: fromTimestamp
},
"timestamp" : {
$lt: toTimestamp
}
}
当我写这篇文章时,我想我可以通过匹配fromTimestamp和toTimestamp之间的所有文档来获得逻辑上的合取。 但这不是我得到的,因为此匹配选择的文档少于toTimestamp,因为第一个分配被第二个覆盖。
我想要的必须表示为:
$match: {
"timestamp" : {
$gte: fromTimestamp,
$lt: toTimestamp
}
}
但是那不是MongoDB的错,我的聚合性能很差。 我错过了指示它做一些与我最初意图完全不同的事情。
这就是为什么我不怪我使用的框架。 我们主要是因为使用不当而不是使用工具而遭受苦难。
翻译自: https://www.javacodegeeks.com/2013/11/why-i-never-blame-open-source-projects.html
阿里为什么开源这么多项目