zoukankan      html  css  js  c++  java
  • 每个程序猿都必须阅读的10篇文章

    原文:10 Atricle Every Programmer Must Read by Javin Paul

    作为一名Java程序猿和软件开发人员,我已经从那些名为《关于XXX。每一个程序猿都应了解的》的文章中学了非常多东西。这些文章倾向于提供很多关于某一个特定主题的实用的、有深度、难以发掘的信息。在我的学习过程中。我读到了不少非常实用的文章,我会收藏这些文章以便日后參考和再次阅读。我个人觉得全部程序猿能够从这些文章中获益,这也是促使我发帖,并与你们分享这些《关于XXX,每一个程序猿都应了解的》文章的原因。

    这些文章都来自我的收藏夹。

    在这篇文章中,你能够读到那些非常经典的《关于XXX。每一个程序猿都应了解的》系列文章,主题包含内存、Unicode、浮点运算、网络、面向对象设计、时间、URL编码、字符串等等。

    这份文章清单对于缺乏实践经验的新手来说十分重要。正由于这些帖子就是从实践经验为出发点写的。所以0基础和中级程序猿能够从中学到非常多东西。在职业生涯的初期就学习这些知识也能够避免其它程序猿和软件开发人员在他们的成长过程中所犯的错误。仅仅通读一次非常难掌握全部的知识要点。

    当中很多关于浮点数或内存的细节问题,你可能会感到不能理解或者困惑。但重要的是你的身边须要这样一份清单,当遇到文章中所描写叙述的情形时,能够多次查询參考。

    那么祝你们好运,好好享受阅读这些好文章的过程吧。对了,顺便说下,假设哪些《关于XXX,每一个程序猿都应了解的》文章不在这份清单中,不要忘了把它们拿出来分享给大家。

    《关于内存,每个程成员都应了解的》

    这是经典文章中的一篇,介绍了内存的很多方面。一些比較老的东西、一些比較新的、一些已知的、一些未知的。虽然这些非经常见。但不是每个程序猿都有足够的内存知识。假设你想要编写高性能的应用程序,那么当代系统中内存的知识就更为重要。

    硬件设计者设计了复杂的内存和加速技术——比方CPU的快速缓存——但仅仅有在程序猿的帮助下才干得到优化。

    直到如今我仍在阅读这篇文章,我从中学到了非常多关于RAM、CPU快速缓存的知识,比方L1和L2快速缓存、不同类型的内存、直接存储器訪问、存储控制器设计和通用内存。简而言之,这对不论什么水平的程序猿来说都是一篇必读的文章。

    《关于浮点运算,每个计算机科学家都应了解的》

    浮点运算是一个非常微妙的话题,一般非常难精通浮点运算。

    甚至很多Java程序猿都不知道当用==进行float/double类型对照时什么会出错。

    我们中的很多人常常在用float和double类型进行货币计算时犯错误。这篇文章是此系列中还有一篇精品,也是全部软件开发人员和程序猿都必需要读的文章。当你的经验慢慢的丰富起来的时候,你就期望着能学到一些常见事物的细小方面的知识,浮点运算就是当中一种。作为高级Java开发人员。你必须知道如何用float、double或BigDecimal类实现货币计算。如何四舍五入浮点数等。即使你已经知道了浮点运算的基础知识,你仍能够从中学到些新东西。

    《关于Unicode,每个开发人员都应了解的》

    字符编码则是还有一个令很多程序猿纠结的领域,《关于Unicode和字符集。每个软件开发人员至少绝对必需要知道的(不要找不论什么理由。绝对是必需要知道的。)》就是要填补这一领域的空白。

    需要注意的是,对了。那就是文章的标题。Joel Spolsky写的这篇文章,他是statckoverflow.com的创始人之中的一个。Joel大约十年前在他的博客里写了这篇文章,但直到今日,这篇文章仍然适用。这篇文章将教会你什么是Unicode、什么是字符编码、字符是如何通过字节来实现显示的等等。这篇文章最优秀部分是语言表达和流程图,即使对于Unicode你什么都不懂。也能非常easy学会Unicode。简而言之,又是一篇全部程序猿、编码员和软件project师必需要读的文章。

    《关于时间。每个程序猿都应了解的》

    除了字符编码,时间和日期又是还有一个令很多程序猿纠结的领域。也包括我。甚至一些高级开发人员都会对GMT时间、UTC时间、夏时令和闰秒感到迷惑。

    说实在的,不过处理时区时能保证不犯错就非常不easy了,更何况还要加上夏时令等其它一些影响。

    假设你使用试错法,问题会变得更严重,由于这么做永远解决不了你的问题。很多事情会让你犯错。还有同等数量的错误概念。比方说,日期是否包括时区,这问题将如地狱般折磨你。将UNIX时间转换成其它时区时间,这件事绝对会让你崩溃。忘了时钟同步和延时吧。我希望你能通过阅读这篇经典的文章来纠正很多关于时间的错误概念,并建立起关于时间的基础概念。

    《关于URL编码,每个网页开发人员必须知道的》

    这篇文章描写叙述了关于统一资源定位符(URL)编码的一些错误概念,在提出常见问题和解决方式前。还尝试着阐明HTTP编码。

    这篇文章不是针对于某种编程语言的,文章举了一些Java的样例。并通过解释怎样修复多个层次的Java和Web应用的URL编码问题来结束文章。

    你将学到URL语法的基础、HTTP等其它协议的通用URL语句。这篇文章也探寻了一些常见的URL缺陷,比方字符编码、URL不同部分的保留字符和URL编码/解码问题。

    假设你是一名Java程序猿。那么你也能够学到怎样正确处理Java应用程序中的URL、怎样架构URL和使用Apache通用HTTPclient库。

    文章的最后也提出了最佳范例或URL处理方式,比如,你应该在架构时就编码URL,保证你的URL重写过滤器正确的处理URL等等。简而言之,是一篇站点开发人员和程序猿必读的文章。

    《关于网页开发,每个程序猿应了解什么?》


    这是程序猿堆栈交换中的一个非常有趣的文章,在站点公布前,每个程序猿在实施站点应用的技术细节时应当考虑的问题。这包括了从接口设计、用户体验、安全、网页标准、性能、搜索引擎优化(SEO)、相关技术到几个相关的重要的资源。现在的世界极大程度的依赖于互联网。程序猿拥有自己的站点、博客是非经常见的。

    从这篇文章中学到的东西不会在你的专业工作上或私人工作上给予不论什么帮助。但你将学到全部关键技术,比如HTTP、HTML、XML、CSS、Javascript、浏览器兼容性、降低站点载入时间的小技巧、XML站点地图、W3C规格和其它一些关键细节。

    《关于SEO。每个程序猿应了解的》

    这是还有一篇对于网页开发人员、程序猿和博客作者来说都很重要的文章。SEO这个话题太大了,以致于我们无法忽略它,由于很多程序猿同一时候也是博客作者,学习些SEO的基础知识来帮助谷歌找到他们的文章并呈现给其它程序猿是很重要的。在当今这个互联世界里没有哪个公司能脱离互谅网而继续生存,所以SEO就变得更为重要。

    假设你创建了自己的公司,销售不论什么产品,那么SEO绝对是你须要关注的东西。

    全部程序猿。特别是网页开发人员,会受益匪浅。记住,搜索引擎优化是一个巨大的且动态的主题,并且不同的搜索引擎之间也有差异,比方谷歌、雅虎等。

    所以为了精通SEO。你须要不断的学习新知识。

    《关于没有定义行为,每个C语言程序猿应了解的》

    C语言有“没有定义行为”的概念。没有定义行为是一个很宽泛的题目,它包括了很多微妙之处,这也是我喜欢Java的原因。更少的没有定义行为、更少的困惑。更强的未定型和很多其它的祥和平静。在C语言里很多看似合理的事物实际上都有没有定义行为,这在程序里是一个常见的bug来源。

    除此之外,C语言的不论什么没有定义行为许可事实上施(编译器和执行时间)产生能够格式化硬盘的代码。做一些不期望发生的事情,或者更糟。细致阅读这篇精彩的文章,在“没有定义行为”的知识的海洋里遨游吧。

    《关于网络。每个程序猿须要知道的》

    文章中说到:“你是个程序猿。

    你有没有想过多人在线游戏是如何执行的?外行人看来这简直是奇迹:两个或很多其它的玩家通过网络共享同一体验,就像他们真的同一时候存在于这个虚拟世界一样。可是作为程序猿,我们知道其底层执行的真相和我们所示是很不一样的。

    这一切都是幻觉。”这一篇很有趣的关于网络的文章,尽管文章是写给游戏程序猿的,可是我觉得每一个程序猿和开发人员都能从中受益。

    《关于字符串。每个Java开发人员应该知道的》

    这是一篇我写的关于java.lang.string的文章。我个人觉得每个Java程序猿应当知道这些。字符串在Java日常编程工作中是很重要的,这也是每个Java开发人员都应该学习这些知识的原因。这篇文章涉及了字符串的很多重要领域,包含字符串池、字符串文字、对照==和equals()、将字节转换成字符创、为什么字符串是不可变的、正确连接字符串的方式等等。高级程序猿可能已经知道这些了,那么也能够利用这篇文章好好的复习一下。

    《关于安全,每个程序猿应该了解的是什么?》

    这个问题是StackOverFlow上的一个计算机编程学生提出的。

    我们学习了非常多通用编程概念,如操作系统、算法、数据结构、计算机系统结构等等,安全问题也是非常重要的。尽管安全是个非常宽泛的话题,它包括了加密/解密、SSL、网页安全、代码混淆、身份验证、授权等等。一系列程序猿至少必须知道的知识。我在刚刚開始工作时不了解太多关于安全的知识,但当我開始编写基于Servlet/JSP的Java网页程序的时候。我開始接触网页安全和一些安全风险,如SQL注入攻击、拒绝服务攻击、XML注入攻击、跨站脚本等。作为Java开发人员,如今我遵循fortify、PMP和其它静态代码分析提供商提供的安全Java代码实例。这篇文章是此主题和链接的非常好的汇总,不管你是否在做编码工作,你绝对都能从中受益。

    《每个程序猿都应知道的延迟数字》

    这是篇文章是额外附送的。可是每一个程序猿必需要读一读。为了编写出随意语言(Java或C++)的高性能应用。你应该知道些延迟数字的基础知识,比方从内存、L1快速缓存、L2快速缓存、SSD和硬盘中读取一个变量将花费多长时间。锁住/解锁mutex、从一个城市发送一个数据包到还有一个城市或一个数据中心的数据往返所需要多长时间。这些延迟数字独立于编程语言和核心知识,一个开发人员必须编写出高频低延迟的应用。

    这个链接提供了这些延迟数字这些年演化的对照分析。你能够看到2006年这些延迟数字是什么状态。如今是什么状态。

    这些就是《每一个程序猿必须阅读的文章》系列里的全部文章。

    通过阅读这些文章标题——“每一个程序猿或开发人员应当了解的”。能够获得某个特定话题的一些比較深层次的知识。

    实话实说。对于程序猿来说有太多的东西须要学习,而学习一门编程语言。比方Java。知识冰山一角。但我们不都是有学习激情的人吗。

    编程是个非常有挑战性的工作。唯一能够在你的职业生涯里一直帮助你的就是基础知识,比如内存、Unicode、浮点数、时间、安全。这对于程序猿来说,是非常重要的。

    仅仅有部分内容是针对某个编程语言的,比方我的关于Java字符串的帖子和《关于没有定义行为。每一个C语言程序猿应了解的》,可是这些对于新人和开发人员来说。还是值得学习的。


    本文经原作者许可翻译。未经许可禁止转载

  • 相关阅读:
    docker
    ibus
    看懂gradle
    tcp
    这丫头也的还真清楚,但是跑不通呢,换3.0.3的mybatis也不行
    lsb_release -a
    js中的整型都是用double存储的,有时候不精确,如,
    浏览器缓存及优化
    web即时通信技术
    css 变量
  • 原文地址:https://www.cnblogs.com/mengfanrong/p/5073410.html
Copyright © 2011-2022 走看看