Java开发熟手该当心的11个错误

生产过程中出现的问题正逐渐得到中层和最高管理层的重视。不管是身为开发人员还是架构师,下列的事项都应该得到你足够的重视以避免陷入未来的尴尬境地。你也可以把它作为排查问题的便签。

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个月。

image.png

欢迎工作一到五年的Java程序员朋友们加入Java架构交流:810589193
本群提供免费的学习指导 架构资料 以及免费的解答
不懂得问题都可以在本群提来出 之后还会有职业生涯规划以及面试指导

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,948评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,371评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,490评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,521评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,627评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,842评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,997评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,741评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,203评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,534评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,673评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,339评论 4 330
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,955评论 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,770评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,000评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,394评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,562评论 2 349

推荐阅读更多精彩内容

  • 这是人类从未涉足的神秘国度。 天边华丽的彩霞在云朵间若隐若现,金黄的落日光芒尚在天边显现,照亮了半边的云朵,燃烧了...
    易辙阅读 177评论 0 0
  • xLua的安装 首先从xLua的Github主页上下载资源包 https://github.com/Tencent...
    BlauHimmel阅读 6,940评论 0 9
  • 拿 button 和 linearlayout 来说在实际情况中,是先有布局接着在布局中写控件,例如在 linea...
    大王要我来巡山阅读 294评论 0 0