软件开发的未来与优秀的工匠密不可分。
如今,几个知道自己在做什么的工程师可以提供完整的系统。在这篇文章中,我们讨论了软件工程师实现这一点应了解的十大概念。
一个成功的软件工程师知道并使用设计模式,积极地重构代码,编写单元测试,并虔诚地追求简单。除了基本方法之外,还有一些优秀的软件工程师都知道的概念。这些超越编程语言和项目的东西–它们不是设计模式,而是您需要熟悉的广阔领域。
十大概念是:
1.介面
2.约定和模板
3.分层
4.算法复杂度
5.散列
6.快取
7.并发
8.云计算
9.安全
10.关系数据库
随着黑客攻击和数据敏感性的提高,安全性至关重要。安全是一个广泛的主题,包括身份验证,授权和信息传输。
身份验证
是关于验证用户身份的。一个典型的 站会提示您输入密码。身份验证通常通过SSL(安全套接字层)进行,SSL是通过HTTP传输加密信息的一种方式。
授权与权限有关,在公司系统中尤其是定义工作流程的系统中很重要。最近开发的OAuth协议帮助Web服务使用户能够打开对其私人信息的访问。这就是Flickr允许访问单个照片或数据集的方式。
另一个安全领域是 络保护。这关系到阻止黑客的操作系统,配置和监视。不仅 络易受攻击,任何软件都易受攻击。
市场上最安全的Firefox浏览器必须不断地修补代码。要为您的系统编写安全代码,需要了解细节和潜在问题。
并发是工程师臭名昭著的一个问题,并且可以理解的是,并发问题是可以理解的,因为并发大脑同时处理很多事情,并且在学校中强调线性思维。然而,并发
在任何现代系统中都很重要。
并发是关于并行性的,但是在应用程序内部。大多数现代语言都有
内置的并发概念。在Java中,它是使用线程实现的。
一个典型的并发示例是生产者/消费者,生产者在其中生成数据或任务,并将其放置以供工作线程使用和执行。并发编程的复杂性源于以下事实:线程经常需要对公共数据进行操作。每个线程都有其自己的执行顺序,但是访问公共数据。
一个最复杂的并发库的已开发由Doug Lea的,现在的一部分核心Java。
背后的思想是快速访问 数据。如果数据是顺序存储的,则找到项目的时间与列表的大小成正比。对于每个元素,哈希函数都会计算一个数字,该数字用作表的索引。 给定一个良好的哈希函数,该函数沿表均匀分布数据,查找时间是恒定的。完善散列是困难的,并且要处理散列表实现支持冲突解决。
除了基本的数据存储,散列在分布式系统中也很重要。
所谓的统一哈希用于在云数据库中的计算机之间平均分配数据。
这项技术的一种特色是Google索引服务的一部分;每个URL都哈希到特定的计算机。
Memcached同样使用哈希函数。哈希函数既复杂又复杂,但是现代库具有良好的默认值。重要的是哈希如何工作以及如何对其进行调整以实现最大的性能收益。
软件中最重要的概念是界面。任何好的软件都是真实(或虚构)系统的模型。了解如何根据正确和简单的界面对问题建模是至关重要的。许多系统都受到极端的影响:
拥挤,冗长的代码,几乎没有抽象,或者设计过度的系统具有不必要的复杂性和未使用的代码。
在众多书籍中,Robert Martin博士撰写的《敏捷编程》之所以脱颖而出,是因为它专注于对正确的接口进行建模。
在建模中,有几种方法可以迭代到正确的解决方案。首先,永远不要添加
将来可能有用的方法。保持简约,尽可能少走远。其次,不要害怕今天认识到
您昨天所做的事情是不对的。乐于改变。第三,要有耐心,享受过程。
最终,您将获得一个感觉不错的系统。在此之前,请不断迭代,不要安顿下来。
结论
现代软件工程功能强大,功能强大,拥有数十年的经验,数百万行支持代码以及对云计算的意外访问。
如今,只有几个聪明的人可以创建以前需要数十个人努力的软件。但是,优秀的工匠仍然需要知道使用什么工具,何时以及为什么使用。
最后,开发这么多年我也总结了一套学习Java的资料与面试题,如果你在技术上面想提升自己的话,可以关注我,私信发送领取资料或者在评论区留下自己的联系方式,有时间记得帮我点下转发让跟多的人看到哦。

文章知识点与官方知识档案匹配,可进一步学习相关知识Java技能树使用JDBC操作数据库数据库操作91326 人正在系统学习中
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!