作为一名 Java 程序员和软件开发人员,我从许多标题为What Every Programmer Should Know About..... 的文章中学到了很多东西,它们往往会提供有关特定主题的大量有用且全面的信息,而这些信息是很难通过其他方式获得的。发现。在我寻求知识的过程中,我遇到了一些非常有用的文章,我已将它们添加为书签以供重新阅读的参考信息。许多程序员可以从阅读本集合中受益的想法促使我写了这篇文章并与您分享所有这些“每个程序员应该知道的内容”文章。 在本文中,您将熟悉每个程序员都需要的经典知识集,主题包括内存、Unicode、浮点算术、网络、面向对象设计、时间、URL 编码、字符串等。该列表对于初学者和新人来说非常重要,因为他们往往缺乏实践知识。由于大多数文章都是基于现实生活中的例子,入门级和中级程序员可以从中学到很多东西。此外,在职业生涯早期学习基础知识将帮助您避免其他程序员和软件开发人员在学习过程中已经犯过的错误。不幸的是,并不是所描述的文章中的所有信息都能在第一次阅读时轻松消化。很可能,您可能无法立即理解有关浮点数的一些细节,或者您可能会对错综复杂的内存感到困惑,但重要的是将此集合放在手边并时不时地参考它以进行澄清。所以我祝你好运并享受阅读这些精彩的文章。顺便说一句,如果我们的列表中没有任何其他“每个程序员应该知道的内容”文章,请不要忘记分享。
每个程序员都应该了解的内存知识
这是一篇经典 文章,将指导您了解记忆的特征,其中有些是旧的,有些是新的,有些是著名的,有些则不太出名。尽管担任管理角色并且无处不在,但并不是每个程序员都对内存有足够的了解。如果您从事编写高性能应用程序的业务,那么熟悉现代系统中的内存就变得更加重要。硬件设计人员正在提出更复杂的内存管理模型和加速技术,例如 CPU 缓存,但如果没有程序员的帮助,这些技术就无法发挥最佳性能。我仍在阅读这篇文章,我无法告诉你我从中学到了多少关于 RAM、CPU 缓存(例如 L1 和 L2 缓存)、不同类型的内存、直接内存访问、内存控制器设计和一般内存的知识。简而言之,任何级别的程序员都必须阅读。每个科学家都应该了解的浮点运算知识
浮点运算的主题很棘手,不容易掌握。许多Java程序员甚至不知道用类型float
/double
运算符比较值时会出现什么问题==
。float
我们中的许多人在执行类型和的货币计算时经常犯错误double
。本文是本系列的另一篇文章,是所有软件开发人员和程序员的必读之作。随着经验的积累,您应该深入了解一般主题的复杂性,浮点运算就是其中之一。作为一名高级 Java 开发人员,您应该知道如何进行货币计算、何时使用float
或如何对浮点数进行舍入等等double
。BigDecimal
即使您对此主题有扎实的知识,阅读本文后您也可能会发现有关浮点运算的新知识。
每个开发人员都应该了解 Unicode 的知识
字符编码是许多程序员苦苦挣扎的另一个领域,“每个软件开发人员应该绝对了解 Unicode 和字符集的绝对最低限度(没有借口!)”旨在填补这一空白。郑重声明,是的,这就是本文的完整标题。它的作者是 Joel Spolsky, https://stackoverflow.com的创始人之一。乔尔大约 10 年前在他的博客上写了这篇文章,但它在现代世界中并没有失去意义。本文解释了什么是 Unicode、什么是编码、如何使用字节表示字符等等。这篇文章最好的地方之一就是语言和呈现方法,即使你对 Unicode 一无所知,理解它也不会有任何问题。简而言之,这是所有程序员、编码员和软件工程师必读的一本书。每个程序员都应该了解的关于时间的知识
除了字符编码之外,时间和日期(Time
和Date
)是许多程序员(包括我自己)遇到困难的另一个领域。即使是高级开发人员也会迷失在 GMT、UTC、夏令时和闰秒中。老实说,处理时区而不犯一些错误并不容易,而使用夏令时则更困难。如果你使用反复试验,问题会变得更糟,因为你永远无法通过这样做来解决你的问题。有很多事情可能会出错,也有同样数量的误解。日期是否包含时区之类的事情可能会让您感到困惑,将 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 等等。简而言之,这是所有 Web 开发人员和程序员的必读之作。每个程序员都了解哪些 Web 开发知识?
这篇来自程序员StackExchange 的有趣文章介绍了每个实现 Web 应用程序技术细节的程序员在向公众开放网站之前应考虑的内容。它包括界面设计和用户体验、安全性、Web 标准、性能、搜索引擎优化 (SEO)、所使用的技术和一些重要资源等领域的内容。当今世界在很大程度上依赖于互联网,程序员拥有个人网站或博客是很常见的。从本文中获得的经验不仅对您的专业活动有用,而且对您自己的项目也有用。您将了解所有关键技术,例如 HTTP、HTML、XML、CSS、JavaScript、浏览器兼容性、减少网站加载时间的技巧、XML 站点地图、W3C 规范和其他几个关键点。每个程序员都应该了解 SEO 的知识
这是另一篇对 Web 开发人员、程序员和博主非常有用的文章。SEO 太大而不容忽视,对于许多程序员和博主来说,了解搜索引擎优化的基础知识非常重要,以帮助 Google 找到他们的内容并将其展示给其他程序员。在当今的互联世界中,没有一家公司能够在没有网络的情况下生存,因此 SEO 变得更加重要。如果您有一家销售任何产品的初创公司,那么搜索引擎优化是您应该关注的事情。所有程序员,尤其是 Web 开发人员,都可以从本文中受益匪浅。请记住,搜索引擎优化范围广泛且非常动态,并且因不同的搜索引擎(例如 Google、雅虎等)而异。因此,要掌握这个主题,您必须不断更新您的知识。每个 C 程序员都应该了解关于未定义行为的知识 #1/3
C 编程语言有“未定义行为”的概念。未定义行为是一个广泛的话题,有很多细微差别,这也是我喜欢 Java 的原因之一:更少的未定义行为、更少的混乱、更多的稳定性和更多的和平。C 中许多看似合理的事物实际上具有未定义的行为,这是程序中错误的常见来源。此外,C 中任何未定义的行为都会允许(编译器和运行时)实现生成格式化硬盘驱动器的代码,从而执行完全意想不到的事情,甚至更糟。阅读这篇精彩的文章,深入了解不可预测的行为。每个程序员都需要了解的网络知识
从文章本身来看“你是一名程序员。你有没有想过多人游戏是如何运作的?从表面上看,这似乎很神奇:两个或更多玩家在线共享协作体验,就好像他们实际上一起存在于同一个虚拟世界中一样。但是,“程序员们,我们知道真相,实际发生的事情与您所看到的完全不同。事实证明,这都是幻觉。” 这是一篇为游戏程序员编写的关于网络的非常有趣的文章,但我认为每个程序员和开发人员都可以从中受益。每个 Java 开发人员都应该了解的关于字符串的知识
这是我的文章java.lang.String
,我个人认为每个 Java 程序员都应该了解它。字符串在日常 Java 编程中非常重要,这就是为什么任何 Java 开发人员都必须具备良好的知识。本文涵盖了字符串的许多重要方面,包括字符串池、字符串文字、将字符串与==
vs进行比较equals()
、将字节转换为字符串、为什么字符串是不可变的、正确的字符串连接等等。高级程序员可能已经了解所有这些功能,但即便如此,回顾一下也是一个好主意。
GO TO FULL VERSION