热门标签 | HotTags
当前位置:  开发笔记 > 数据库 > 正文

阅读linux,postgresql源代码的看法

阅读linux,postgresql源代码的看法--Linux通用技术-Linux编程与内核信息,下面是详情阅读。
  很多人开始学编程没多久就打算阅读linux的源代码,网上有不少高手都说真正掌握一个优秀都程序就是阅读它的源代码,linux又是如此的优秀,又是免费的,何不研究研究它的源代码。但真正动手到有点收获又谈何容易。

  像linux这样的操作系统,postgresql这样的数据库,不用说其源代码都是精髓,看源代码一定能获得不少的收获。但它们包括的知识面是非常广的,很多知识点是交错联系的,如果没有名师的指点,你又不是一个绝对的天才,看源代码绝对一个很苦的差事。linux作为一个操作系统,包括文件系统,进程管理,内存管理,设备管理,网络管理等一系列的东西,而每一个系统下面又有很多小系统,小系统下面分得很细,各个组织之间又相互联系。举个例,文件系统上层是VFS,VSF下面是EXT2,EXT3,XFS,reiserfs等,每种文件系统在一同的情况有不同的性能,有的适于存储大文件,有的适于存储小文件,有的适于存储常更改的文件,有的文件系统删了文件能恢复,有的不能,文件系统又与进程管理有着千丝万缕的联系,岂止与进程,在linux下,实行一切皆文件,文件系统与所有linux上的都瓜葛不少,虽说有统一的接口,但内部仍有一些联系,你若先研究文件系统,进程管理不熟,得先研究进程,还有内存管理,这些都掺杂得很紧,函数内部互相调用,结构内互相引用,linux系统里面又自义了很多规则,很多全局变量,全局函数,市面上的书这些都介绍得不够,当你看了书,你可能有个大概的了解,但当你放开书,看代码时,代码不尽然像书上讲的那样,书上只是给你理出了一根线,沿着这根线你可能能走通,这种可能性都不是很大,当你离开这根线的时候,会很茫然。书上介绍的往往有点陈旧,虽说思想,理论是一样的,但实际操作起来,困惑不小。当你研究一个系统时,系统内包含了很多函数,函数内又包含了许多函数,你若想搞懂一个函数,又牵涉了许多函数。对于这种系统级别的源代码,你就算看懂了一些,但当你实际写自己的代码来代替原来的代码以测试自己是否真的懂了的时候,你会发现这更难了,看懂了与自己来写又是不同级别的难度。像linux这样庞大的系统,内部涉及很多算法,设计模式,以及兼容性代码,你若要看代码,又得对这些有很深的了解。一个初学者,或者一个之前对linux内核不是很了解的人又没有资深专家的指点,一个人在网上收集资料来了解内核是一个很难的事,没有几年的时间,谈得了小有成就都是件容易的事。阅读linux源代码并不是网上的高手说的那样简单,看源代码会看得让人一头雾水。

  我建议普通程序员不要一动不动就说看linux源代码,也不要看见别人的文章写得那么有鼓动性,有文采就被鼓动去研究源代码,看源代码是件好事,但不是一件容易的事,可能裁在里面几个月没有一丝成就。

  开源代码是个宝藏,而且是个免费的宝藏,里面的代码是思想的精髓,是代码中的极品,是高手的结晶,但不要动不动就去看源代码,看别人的代码不是件简单的事,弄清里面的思路也不是光看代码就能解决的,代码是思想的体现,是理论的表现形式,先对理论有一定的认识然后结合代码理解是最佳途径。

  在这里我不是反对看源代码,看源代码的确有不少的好处,它能消除你对程序的漠生感,对程序设计,对理论知识有更深的领悟。我希望那些跟我一样,阅读程序源代码的人不要迷失在linux,postgresql如此庞大的系统的代码里面,当你找不到出路的时候,跳出这个圈,能看得更清楚。

  关于阅读源代码,不要过早的钻进代码的细节中,在开始的时候,对代码有个大体的感觉,形成总体印象,把它们的逻辑搞清楚,根据自己的需要,再做决定是否要深入研究。不要茫目的一头扎进去。
推荐阅读
  • 本文详细介绍如何使用Python进行配置文件的读写操作,涵盖常见的配置文件格式(如INI、JSON、TOML和YAML),并提供具体的代码示例。 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • 深入理解C++中的KMP算法:高效字符串匹配的利器
    本文详细介绍C++中实现KMP算法的方法,探讨其在字符串匹配问题上的优势。通过对比暴力匹配(BF)算法,展示KMP算法如何利用前缀表优化匹配过程,显著提升效率。 ... [详细]
  • 本文深入探讨了Linux系统中网卡绑定(bonding)的七种工作模式。网卡绑定技术通过将多个物理网卡组合成一个逻辑网卡,实现网络冗余、带宽聚合和负载均衡,在生产环境中广泛应用。文章详细介绍了每种模式的特点、适用场景及配置方法。 ... [详细]
  • 本文详细介绍了如何在 Linux 平台上安装和配置 PostgreSQL 数据库。通过访问官方资源并遵循特定的操作步骤,用户可以在不同发行版(如 Ubuntu 和 Red Hat)上顺利完成 PostgreSQL 的安装。 ... [详细]
  • 利用存储过程构建年度日历表的详细指南
    本文将介绍如何使用SQL存储过程创建一个完整的年度日历表。通过实例演示,帮助读者掌握存储过程的应用技巧,并提供详细的代码解析和执行步骤。 ... [详细]
  • 自学编程与计算机专业背景者的差异分析
    本文探讨了自学编程者和计算机专业毕业生在技能、知识结构及职业发展上的不同之处,结合实际案例分析两者的优势与劣势。 ... [详细]
  • MySQL缓存机制深度解析
    本文详细探讨了MySQL的缓存机制,包括主从复制、读写分离以及缓存同步策略等内容。通过理解这些概念和技术,读者可以更好地优化数据库性能。 ... [详细]
  • 本文探讨如何设计一个安全的加密和验证算法,确保生成的密码具有高随机性和低重复率,并提供相应的验证机制。 ... [详细]
  • 本文探讨了卷积神经网络(CNN)中感受野的概念及其与锚框(anchor box)的关系。感受野定义了特征图上每个像素点对应的输入图像区域大小,而锚框则是在每个像素中心生成的多个不同尺寸和宽高比的边界框。两者在目标检测任务中起到关键作用。 ... [详细]
  • 网络攻防实战:从HTTP到HTTPS的演变
    本文通过一系列日记记录了从发现漏洞到逐步加强安全措施的过程,探讨了如何应对网络攻击并最终实现全面的安全防护。 ... [详细]
  • 本文探讨了如何在给定整数N的情况下,找到两个不同的整数a和b,使得它们的和最大,并且满足特定的数学条件。 ... [详细]
  • 深度学习理论解析与理解
    梯度方向指示函数值增加的方向,由各轴方向的偏导数综合而成,其模长表示函数值变化的速率。本文详细探讨了导数、偏导数、梯度等概念,并结合Softmax函数、卷积神经网络(CNN)中的卷积计算、权值共享及池化操作进行了深入分析。 ... [详细]
  • 机器学习中的相似度度量与模型优化
    本文探讨了机器学习中常见的相似度度量方法,包括余弦相似度、欧氏距离和马氏距离,并详细介绍了如何通过选择合适的模型复杂度和正则化来提高模型的泛化能力。此外,文章还涵盖了模型评估的各种方法和指标,以及不同分类器的工作原理和应用场景。 ... [详细]
  • 2023年京东Android面试真题解析与经验分享
    本文由一位拥有6年Android开发经验的工程师撰写,详细解析了京东面试中常见的技术问题。涵盖引用传递、Handler机制、ListView优化、多线程控制及ANR处理等核心知识点。 ... [详细]
author-avatar
手机用户2502911627_202
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有