阅读更多

3顶
0踩

编程语言

转载新闻 Java开发熟手该当心的11个错误

2015-03-18 09:51 by 副主编 mengyidan1988 评论(0) 有5831人浏览
生产过程中出现的问题正逐渐得到中层和最高管理层的重视。不管是身为开发人员还是架构师,下列的事项都应该得到你足够的重视以避免陷入未来的尴尬境地。你也可以把它作为排查问题的便签。

#1、不在属性文件或XML文件中外化配置属性。比如,没有把批处理使用的线程数设置成可在属性文件中配置。你的批处理程序无论在DEV环境中,还是UAT(用户验收测试)环境中,都可以顺畅无阻地运行,但是一旦部署在PROD 上,把它作为多线程程序处理更大的数据集时,就会抛出IOException,原因可能是JDBC驱动版本不同,也可能是#2中讨论的问题。如果线程数目 可以在属性文件中配置,那么使它成为一个单线程应用程序就变得十分容易了。我们不再需要为了解决问题而反复地部署和测试应用了。这种方法也同样适用于配置 URL、服务器和端口号等。

#2、测试中使用的数据集规模不合适。比如,生产过程中一个 典型的场景就是只使用1到3个账户进行测试,而这个数量本应是1000到2000个的。在做性能测试时,使用的数据必须是真实并且未经裁剪的。不贴近真实 环境的性能测试,可能会带来不可预料的性能、拓展和多线程问题。只有使用更大规模的数据集对应用程序进行测试,才能保证它正常运行并满足非功能属性的 SLAs(服务水平标准)。

#3、天真地认为应用程序中所调用的外部和内部服务是可靠的,并且是始终可用的。不允许出现服务调用超时和重试,将会对应用程序 的稳定性和性能造成不利地影响。需要进行适当的服务中断测试。这一点十分重要,因为如今的应用程序多是分布式并且面向服务的,都需要大量的网络服务。无限 地请求不可用的服务会损害应用程序。也需要对负载均衡器进行测试,以确保它能正常工作,使每个节点达到平衡。

#4、没有遵循最低限度的安全要求。正如上文提到,网 络服务随处可见,从而使得黑客可以轻易地利用它进行拒绝服务攻击。所以,在使用安全套接层时,必须完成基本的验证并使用Google skipfish等工具进行渗透测试。不安全的应用程序不仅会威胁其自身稳定性,还可能会因为数据完整性问题对公司的声誉造成负面影响,例如出现了客户 “A”可以浏览客户“B”数据的情况。

#5、没有进行跨浏览器的兼容性测试。如今的网络应用程序多是丰富的单页应用程序,它们使用JavaScript编程语言以及angular js这样的框架。为了使你建设的网站能够流畅地运行于不同的设备和浏览器之间,必须实现与之对应的设计。所以为了确保你的应用程序可以适用于所有设备和浏 览器,必须对其进行兼容性测试。

#6、没有外化可能经常发生变化的商业规则。例如税法、政府或行业相关要求、分类法等。可以使用像Drools这样的引擎来处理商业规则,它帮助你通过存入数据库或 excel的形式,来外化这些商业规则。企业掌握了这些商业规则,就能以最少的变化和测试完成对税法或相关要求地快速反应。

#7、没有提供下列文档

编写单元测试文档并使其拥有良好的代码覆盖率。
集成测试。
一个综合的或者百科全书式的页面列出了所有的软件构件,比如类、脚本、配置文件等,而这些构件要么是被修改了的,要么是新创建的。
高层次的概念图描述了所有的组件,交互和结构。
而基础文档则告诉开发者“如何结合数据源的详细信息来搭建开发环境”。
除了COS(满足的条件)这种由MindMap创建的形式之外,敏捷开发中还有1和2这两种主要的文档形式。

#8、没有适当的灾害恢复计划以及系统监视和归档策略。在项目截止日期来临之际,常常因为急于部署项目而遗漏了这些事项。没有通过Nagios和Splunk建立合适的系统监视机制不仅会威胁到应用程序的稳定性,还会妨碍目前的诊断和将来的改进工作。

#9、没有为数据库表设计方便整理的列,比如created_datetm、update_datetm、created_by、updated_by和时间戳,也没有提供有条理的删除记录列,如可以取‘Y’或‘N’的‘deleted’列或是可以取‘Active’或‘Inactive’的 ‘record_status’列。

#10、没有制定适当的回撤计划。导致在系统发生故障时,没有办法将系统恢复到部署前的稳定状态。这个计划需要反复推敲并有相关团队签字保证。计划包括了,退回到软件先前的版本,去除插入到数据库中的所有数据以及属性文件的所有条目。

#11、在项目开始前没有制定能力计划。现如今,在说明对平台的要求时,仅仅说“需要一台Unix计算机,一个Oracle数据库服务器,一个JBoss应用程序服务器”是远远不够的。你的要求必须精确到
  • 操作系统的特定版本,JVM等。
  • 有多少内存(包括物理内存,JVM堆内存,JVM栈内存和JVM永久代的空间)。
  • CPU(内核数)。
  • 负载均衡器,需要的节点数、节点类型,比如是active/active型还是active/passive型,以及聚类要求。
  • 文件系统要求,例如,你的应用程序可能会收集生成的报告并将其保存一年,之后 才进行归档。这样的话,你就需要有足够的硬盘空间。有些应用程序要求产生数据提取文件,并将它们暂时储存以供其他系统进程或数据仓库系统用来做多维分析报 告。还有些数据文件是基于安全文件传输协议的,它们或来自内部系统,或来自外部系统,并且在归档前需要被保存12到36个月。

下面的#12来自“David DeCesare”发自“java.dzone”的评论,

#12、“不在工作时使用最好的工具”。很多情况下,开发者会在生产系统中使用一门想要学习的语言或某种工具。通常这不是最好的选择。比如,为已经实际上是关系型的数据使用NoSQL数据库。请记住,无论你采用哪种工具,都需要在未来3到5年(甚至更长的时期)内维护你的产品。

#13、在16个关键技术领域缺少充足的知识储备。这些领域包括识别并修复1)“并发问题”、2)事务问题、3)性能问题。很多次面试中,我靠着这3个方面的知识拿到了新的合同。

本文由 ImportNew - rookie_sam 翻译自 dzone
3
0
评论 共 0 条 请登录后发表评论

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • Java开发熟手该当心的错误

    不管是身为开发人员还是架构师,下列的事项都应该得到你足够的重视以避免陷入未来的尴尬境地。你也可以把它作为排查问题的便签。 #1、不在属性文件或XML文件中外化配置属性。比如,没有把批处理使用的线程数设置...

  • java面试笔试题大汇总

    java面试笔试题大汇总     第一,谈谈final, finally, finalize的区别。  最常被问到。   第二,Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类,是否可以implements(实现)...

  • java面试笔试题总结

    第一,谈谈final, finally, finalize的区别。  最常被问到。   第二,Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类,是否可以implements(实现)interface(接口)?   第三,Static ...

  • java面试题

    第一种形式: 定义一个类,它的构造函数为private的,它有一个static的private的该类变量,在类初始化时实例话,通过一个public的getInstance方法获取对它的引用,继而调用其中的方法。 public class Singleton...

  • java面试大全

    第一,谈谈final, finally, finalize的区别。 最常被问到。 第二,Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类,是否可以implements(实现)interface(接口)? 第三,Static Nested Class 和 ...

  • 家庭支出与收入数据数据集,根据人口统计和地理指标进行了分类,加拿大为例,适用于数据分析、机器学习

    这个数据集提供了2010年至2021年间加拿大各省的家庭支出与收入数据,这些数据根据人口统计和地理指标进行了分类。每行代表了年份(REF_DATE)、省份(GEO)以及编码后的支出或收入类型的唯一组合(COORDINATE)。以下是该数据集的关键特点及包含的列信息: 关键特点: 支出数据:家庭支出按照收入五分位数和支出类别进行分类。 收入数据:家庭收入值根据家庭类型、较年长成年人的年龄组别和收入水平细分。 地理位置匿名化:为了保护隐私,原始的地理位置标识符被替换为如“Province 1”这样的标签。 时间序列:涵盖了超过十年的财务数据(2010–2021),适合用于纵向经济和社会趋势分析。 包含的列: REF_DATE:记录年份(2010–2021) GEO:省份标签(例如,“Province 1”) Statistic:度量类型(例如,平均家庭支出) Before-tax household income quintile:税前家庭收入水平分组 Household expenditures, summary-level categories:支出类别 UOM:计量单位 COORD

  • 【锂电池剩余寿命预测】GRU门控循环单元锂电池剩余寿命预测(Matlab完整源码和数据)

    1.【锂电池剩余寿命预测】GRU门控循环单元锂电池剩余寿命预测(Matlab完整源码和数据) 2.数据集:NASA数据集,已经处理好,B0005电池训练、测试; 3.环境准备:Matlab2023b,可读性强; 4.模型描述:GRU门控循环单元在各种各样的问题上表现非常出色,现在被广泛使用。 5.领域描述:近年来,随着锂离子电池的能量密度、功率密度逐渐提升,其安全性能与剩余使用寿命预测变得愈发重要。本代码实现了GRU门控循环单元在该领域的应用。 6.作者介绍:机器学习之心,博客专家认证,机器学习领域创作者,2023博客之星TOP50,主做机器学习和深度学习时序、回归、分类、聚类和降维等程序设计和案例分析,文章底部有博主联系方式。从事Matlab、Python算法仿真工作8年,更多仿真源码、数据集定制私信。

  • 【更新至2024年】2000-2024年各省专利侵权案件结案数数据

    2000-2024年各省专利侵权案件结案数数据 1、时间:2000-2024年 2、来源:国家知识产权J 3、指标:专利侵权案件结案数 4、范围:31省 5、用途:可用于衡量知识产权保护水平

  • HMTL+JS+CSS实现贪吃蛇游戏,包含有一般模式,困难模式,还有无敌模式

    - 使用`<div>` 容器组织游戏界面,包含得分显示、游戏画布和操作按钮 - 支持三种游戏模式选择(一般模式、困难模式、无敌模式) - 移动端和桌面端兼容,提供触摸和键盘两种控制方式 2. CSS样式 : - 采用Flex布局实现页面居中显示 - 使用Grid布局实现方向按钮的排列 - 定义了游戏容器的阴影、圆角等视觉效果 - 为按钮添加了hover效果和过渡动画 3. JavaScript逻辑 : - 使用Canvas API实现游戏渲染 - 实现了蛇的移动、食物生成、碰撞检测等核心游戏逻辑 - 支持三种游戏模式,不同模式对应不同的游戏速度和规则 - 使用localStorage保存最高分记录 - 实现随机颜色生成,使游戏更具趣味性 代码整体结构清晰,功能完整,具有良好的可扩展性和可维护性。

  • 附件2-5:台区智能融合终端入网专业检测送检样品主要元器件清单.docx

    台区终端电科院送检文档

  • 基于强化学习的飞机升阻力特性预测模型实现及应用(含详细可运行代码及解释)

    内容概要:本文详细介绍了一个基于强化学习(RL)的飞机升阻力特性预测模型的实现过程。首先,定义了飞机空气动力学环境,包括状态空间、动作空间以及目标——预测升力系数(Cl)和阻力系数(Cd)。接着,通过生成模拟数据并进行预处理,创建了用于训练的数据集。然后,构建了一个神经网络代理模型,用于联合编码状态和动作,并预测升阻力系数。最后,实现了PPO算法来训练强化学习代理,使其能够根据当前状态选择最优动作,并通过不断迭代提高预测精度。文中还提供了完整的代码实现和详细的注释。 适合人群:航空航天领域的研究人员、机器学习工程师、对强化学习感兴趣的开发者。 使用场景及目标:适用于需要预测飞机升阻力特性的应用场景,如飞行器设计优化、性能评估等。目标是通过强化学习方法提升预测模型的准确性,从而为实际工程提供可靠的理论支持和技术手段。 其他说明:本文不仅涵盖了模型的设计与实现,还包括了数据生成、预处理等多个环节,有助于读者全面理解整个建模过程。同时,提供的代码可以作为研究和开发的基础,方便进一步扩展和改进。

  • cmock ut aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

    cmock ut aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

  • lsm6d datasheet

    lsm6d datasheet

  • 风力发电机传动机构的设计(增速器).rar

    风力发电机传动机构的设计(增速器)

  • genesys-zu(5ev)配置petalinux(从安装到嵌入)

    genesys-zu(5ev)配置petalinux(从安装到嵌入)

  • django自建博客app

    django自建博客app

  • 基于android平台的学生选课系统的设计与实现.zip

    Android项目原生java语言课程设计,包含LW+ppt

  • 幼儿园预防肺结核教育培训课件资料.pptx

    幼儿园预防肺结核教育培训课件资料

  • STM32F103RCT6单片机控制气泵和电磁阀的开关,气泵和电磁阀的开和关均为开关量,使用mos管控制,mos管选择主要注意两个参数即可,一是导通的电流,二是耐压值,并且常用NMOS管

    STM32F103RCT6单片机控制气泵和电磁阀的开关 1、气泵和电磁阀的开和关均为开关量,实现控制方法有多种,比如继电器,但是继电器动作有噪声且体积较大,更好的方法为使用mos管。 2、mos管的选型:mos管选择主要注意两个参数即可,一是导通的电流,二是耐压值,并且常用NMOS管,根据要求,气泵和电磁阀供电电压为12V,所以选择的mos管耐压值要大于12V,这里选用耐压值为30V的MOS管,并且导通电流为5.8A。

Global site tag (gtag.js) - Google Analytics