Java 在处理大数据时,如何确保代码按预期工作?

Java 在处理大数据时,如何确保代码按预期工作?,java,spring,multithreading,Java,Spring,Multithreading,我编写了一些多线程批处理程序来处理数据 当我完成实现并再次测试不同的数据集时,每个数据集大约有100行,一切正常。但当它真正迁往珠江三角洲时,某些事情就会失败。死锁、空指针异常、DataContractsVolization和错误输出等 我的问题是如何确保代码正常工作?我用样本数据做了测试,但我真的无法对数百万数据进行测试,对吗,这太耗时了?但如果我不这样做,我的测试代码将失败,因为在测试过程中没有发生一些错误 是否有一些人们用来验证的实践,或者是常见的 在这方面需要一些指导。从我所看到的与包括

我编写了一些多线程批处理程序来处理数据

当我完成实现并再次测试不同的数据集时,每个数据集大约有100行,一切正常。但当它真正迁往珠江三角洲时,某些事情就会失败。死锁、空指针异常、DataContractsVolization和错误输出等

我的问题是如何确保代码正常工作?我用样本数据做了测试,但我真的无法对数百万数据进行测试,对吗,这太耗时了?但如果我不这样做,我的测试代码将失败,因为在测试过程中没有发生一些错误

是否有一些人们用来验证的实践,或者是常见的


在这方面需要一些指导。

从我所看到的与包括硅谷在内的世界各地的大公司和小公司合作的情况来看,我想说,从一开始就使用最佳实践并坚持下去,比如:

  • 了解并为工作选择合适的技术/语言-您可以使用C++03或使用Java、GO或Rust,您将获得完全不同的体验
  • 在该领域有昂贵的、熟练的程序员,选择语言或足够熟练的程序员,在一定的正常运行时间后处理每一项技术
  • 不要强迫他们,否则他们会做出妥协(记住质量-速度-价格三角)
  • 在团队中形成认真的同行代码审查文化
  • 运行静态代码分析(如果可用)并修复警告
  • 编写所有有意义的单元测试(在类/模块级别上,此级别上没有多线程,理想情况下基于SOLID的软件,使用mock进行测试)
  • 创建集成测试(多线程、真实文件、真实数据库、真实云、真实可伸缩性)
  • 让质量保证部门在实际生活条件下进行回归测试,并反复进行实际硬件设置
  • 如果可能的话,让QA和开发人员使用内存检查器(如valgrind)和/或评测(取决于语言和技术)进行测试
  • 让它在真实条件下运行也很重要(也就是在生产中测试…好吧,让我们称之为开放测试版)。用你所有的一切来攻击它。这包括你所有的黑客工具和一群野生猴子

    即使是那些在软件上投入巨资的大公司,也总会有一些隐藏的bug或安全问题(以及可能会在以后修复的已知问题)。因此,确保在发生类似堆栈跟踪、应用程序日志、系统日志、屏幕截图等情况时有一些事后检查程序


    在当今的软件复杂性中,正确性和稳定性是极其昂贵的。不过,对于小项目来说,少一点努力可能是可以的(取决于偶然事件的数量,或者今天更重要的金钱损失,如果指针为空,我会说)

    感谢您提供了详细的答案。现在我有了一些线索,知道下一步我应该去哪里,记住这些,我可以更好地估计我的工作。