程序员文章
作为一名Java程序员和软件开发人员,我从标题为“每个程序员应该了解的...”的文章中学到很多东西,他们往往会提供有关特定主题的大量有用且深入的信息,否则这些信息将很难去探索。
在寻求学习的过程中,我遇到了一些非常有用的文章,将它们加为书签以供参考和阅读。 我个人认为,所有程序员都可以从阅读这些文章中受益,这使我写了这篇文章,并与大家分享了所有这些“每个程序员都应该知道”的文章。 这些来自我的个人书签。
在本文中,您将看到经典的内容,每个程序员都应该从诸如内存 , Unicode , 浮点算术 , 网络 , 面向对象的设计 , 时间 , URL编码 , 字符串等主题中了解文章。 对于那些缺乏实践知识的初学者和新手来说,此列表非常重要。 由于大多数这些帖子实际上都是由实践知识驱动的,因此初学者和中级程序员可以从中学到很多。
在职业生涯的早期就获得基本知识也有助于避免错误,这是其他程序员和软件开发人员在学习过程中所做的事情。 虽然很难一口气掌握这些文章中提供的所有知识。 您可能不会理解一些有关浮点数的细节,或者将其与内存的细微细节混淆,但是重要的是要使这些列表方便使用,并时不时地将它们与上下文相关联。 祝您好运,并喜欢阅读这些精彩的文章。 顺便说一句,如果该列表中没有该文章,请不要忘记分享任何“每个程序员应该知道的内容”。
这是经典文章之一,它将带您穿越各种可能的记忆通道,包括一些旧的,一些新的,一些已知的和未知的。 尽管如此,无处不在,但并不是每个程序员都对内存有足够的了解。 如果您要编写高性能应用程序,那么现代系统中的内存知识就变得尤为重要。 硬件设计人员提出了越来越复杂的内存处理和加速技术(例如CPU缓存),但是如果没有程序员的帮助,这些技术就无法最佳发挥作用。 我仍在阅读本文,我无法告诉您从RAM,CPU高速缓存(例如L1和L2高速缓存),不同类型的内存,直接内存访问,内存控制器设计以及一般的内存中学到了多少。 简而言之,所有水平的程序员都必须阅读。
浮点算术是一个棘手的话题,而且掌握起来并不容易。 甚至许多Java程序员都不知道将浮点数/双精度值与==运算符进行比较时会出什么问题。 我们中的许多人经常会犯错误的货币浮动和两倍计算。 本文是本系列的另一篇文章,所有软件开发人员和程序员都必须阅读。 随着经验的增长,您应该了解一些常见的细节,浮点算术就是其中之一。 作为高级Java开发人员,您必须知道如何执行货币计算,何时使用float,double或BigDecimal类,如何舍入浮点数等。即使您了解浮点算术的基础知识,也将学到一些有关浮点的新知识。通过阅读本文计算积分。
字符编码是另一个领域,许多程序员在其中奋斗, “每个软件开发人员绝对绝对要完全了解Unicode和字符集(没有借口!)”的目标是填补这一空白。 另外,是的,那是该文章的完整标题。 它由statckoverflow.com的创始人之一Joel Spolsky编写。 Joel将近10年前就在自己的博客上写了这篇文章,但在当今世界仍然有意义。 本文将教您什么是Unicode,什么是 字符编码 ,如何使用字节表示字符等等。 关于本文的最好的事情之一是语言和流程,即使您对Unicode一无所知,也可以轻松地遵循。 简而言之,所有程序员,编码人员和软件工程师都必须阅读一本。
除了字符编码外,时间和日期是另一个领域,包括我在内的许多程序员都在为此奋斗。 即使是高级开发人员,也无法在格林尼治标准时间(GMT),UTC,日光节约时间和seconds秒之间损失。 坦率地说,要处理时区而不犯任何错误,然后增加日光节约量和效果,是不容易的。 如果使用试错法,问题将变得更加严重,因为这样做将永远无法解决您的问题。 有太多事情可能出错,并且存在相同数量的误解。 诸如日期是否包含时区之类的东西都会使您感到困惑,将UNIX时间转换为其他时区会使您感到迷惑,忘记时钟同步和延迟。 我希望您对时间的许多误解会消失,并且通过阅读这篇经典文章,您将对时间有基本的了解。
每个Web开发人员必须了解的URL编码
本文介绍了有关统一资源定位器(URL)编码的常见误解,然后尝试在介绍常见问题及其解决方案之前阐明HTTP的URL编码。 尽管本文不是针对任何编程语言的,但它说明了Java中的问题,并通过解释如何在Java和Web应用程序中的多个级别解决URL编码问题来结束本文。 您将学习URL语法的基础知识,HTTP和其他协议中的常规URL语法。 本文还探讨了URL的常见陷阱,例如字符编码,URL不同部分的保留字符以及URL编码/解码问题。 如果您是Java程序员,那么您还将学习如何以正确的方式处理Java应用程序中的URL。 如何构造URL和使用Apache Commons HTTP客户端库。 最后,它还建议了最佳做法或处理URL,例如,在构建URL时应对URL进行编码,以确保URL重写过滤器可以正确处理URL等等。 简而言之,任何Web开发人员和程序员都必须阅读的文章。
这是程序员堆栈交换中的一篇有趣的文章,内容涉及在网站公开之前,每个实现Web应用程序技术细节的程序员应该考虑什么。 其中包括界面设计和用户体验 , 安全性 , Web标准 , 性能 , 搜索引擎优化(SEO) ,所涉及的技术以及一些重要资源。 由于当今世界极大地依赖于Internet和程序员拥有其个人站点,因此博客非常普遍。 从本文中学到的经验甚至对您的专业工作无济于事,对您的个人工作也无济于事。 您将了解所有关键技术,例如HTTP,HTML,XML,CSS,JavaScript,浏览器兼容性,减少网站加载时间的提示,XML站点地图,W3C规范以及其他一些关键细节。
每个程序员应了解的SEO知识
这是另一篇文章,对Web开发人员,程序员和博客作者非常重要。 SEO太大了,不容忽视,因为许多程序员也是博客作者,因此了解一些搜索引擎优化基础知识以帮助Google找到其内容并呈现给其他程序员是很重要的。 由于在当今的互联世界中,没有公司无法生存,因此没有SEO变得更加重要。 如果您是一家初创公司,销售任何产品,那么SEO就是您要关心的事情。 所有程序员,特别是Web开发人员,都可以从本文中受益匪浅。 请记住,搜索引擎优化是一个广阔而又充满活力的主题,并且在不同的搜索引擎(例如Google,Yahoo等)之间也有所不同。 因此,为了精通此主题,您将始终需要更新知识。
每个C程序员应该了解的未定义行为#1/3
C编程语言具有“未定义行为”的概念。 未定义的行为是一个涉及很多细微差别的广泛话题,这就是为什么我喜欢Java,更少的未定义行为,更少的混乱,更多的稳定性和更多的和平的原因之一。 C语言中许多看似合理的东西实际上具有未定义的行为,这是程序中错误的常见来源。 除此之外,C中任何未定义的行为都会向实现(编译器和运行时)授予使用许可,以生成格式化硬盘的代码,执行完全意外的事情,甚至更糟。 阅读这篇出色的文章,深入研究不确定行为的海洋。
从文章本身“您是一名程序员。 您是否想过多人游戏如何运作? 从外部看,这似乎很神奇:两个或多个玩家在网络上共享一致的体验,就像他们实际存在于同一个虚拟世界中一样。 但是,作为程序员,我们知道下面实际发生的情况与您所看到的情况大不相同。 事实证明,这全都是幻想。” 这是为游戏程序员撰写的有关网络的非常有趣的文章,但我认为每个程序员和开发人员都可以从中受益。
这是我关于java.lang.String的文章,也是我个人每个Java程序员都应该了解的内容。 在Java的日常编程中,字符串非常重要,这就是为什么任何Java开发人员都必须具备良好的知识。 本文涉及String的许多重要领域,包括字符串池,字符串文字,使用==与equals()比较String,将字节转换为String,为什么String是不可变的,正确连接String等等。 高级程序员可能已经知道所有这些内容,但是即使如此,对它们进行修改也还是不错的。
这个问题是由StackOverFlow中的一名计算机编程学生提出的。 就像我们学习了很多有关通用编程概念的知识一样,例如操作系统,算法,数据结构,计算机体系结构以及其他内容,了解安全性也很重要。 尽管安全性是涵盖加密/解密,SSL,Web安全性,混淆,身份验证,授权等范围广泛的主题,但每个程序员都必须具备基本的基本知识。 我个人从职业生涯开始就对安全性了解不多,当我开始编写基于Servlet / JSP的Java Web应用程序时,我并不了解安全性,我对Web安全性以及诸如SQL注入 , 拒绝服务 , XML注入 , 跨站点脚本编写和其他。 作为Java开发人员,现在我遵循Fortify,PMP和其他静态代码分析提供程序提供的安全Java编码实践。 本文很好地收集了有关安全性的主题和链接,无论您是否进行编码,您一定会从此资源中受益。
每个程序员都应该知道的延迟数
这是奖金文章,但必须为每个程序员阅读。 为了用任何编程语言(例如Java或C ++)编写高性能应用程序,您都应该知道基本的延迟数,例如从内存,L1缓存,L2缓存,SSD随机读取和从磁盘。 锁定互斥锁解锁,将数据包从一个城市发送到另一座城市或在同一数据中心进行往返需要花费多少时间。 这些等待时间数量独立于任何编程语言和核心知识的一部分,开发人员必须编写高频低等待时间的应用程序。 关于此链接的好处是,它还可以为您提供这些年来这些等待时间数量如何演变的比较分析。 您可以看到这些延迟数字在2006年是多少,现在又是什么。
以上就是每个程序员必须阅读的文章清单 。 通过阅读每个程序员或开发人员应了解的文章标题,您将获得对特定主题的深入了解。 坦白地说,对于程序员来说,有太多东西要学,学习像Java这样的编程语言只是冰山一角,但不是我们许多人都对学习充满热情。 编程是一项艰巨的工作,只有对您整个职业都有帮助的事情才是基础知识,例如有关内存 , Unicode , 浮点数 , 时间 , 安全性的知识对于任何程序员而言都是非常重要的。 很少有什么是特定于编程语言的,例如我关于Java String的文章以及每个C程序员应了解的未定义行为的知识,但对于许多初学者和开发人员而言,它们仍然是好东西。
翻译自: https://www.javacodegeeks.com/2014/05/10-articles-every-programmer-must-read.html
程序员文章