本书提供与C语言编程相关的全面资源和深入讨论。本书通过对指针的基础知识和高级特性的探讨,帮助程序员把指针的强大功能融入到自己的程序中去。 全书共18章,覆盖了数据、语句、操作符和表达式、指针、函数、数组、字符串、结构和联合等几乎所有重要的C编程话题。书中给出了很多编程技巧和提示,每章后面有针对性很强的练习,附录部分则给出了部分练习的解答。 本书适合C 语言初学者和初级C程序员阅读,也可作为计算机专业学生学习C语言的参考。
从2008年开始,基于Cortex-M3的单片机以其高性能、低成本及易于使用等诸多优势,已经取代ARM7,成长为32位微控制器的主流。Cortex-M4 在Cortex-M3的基础上增加了浮点单元及一些DSP指令,可以极大地提高数学运算的效率。由于其诸多特性,之前ARM9 +OS(如Linux等)的多种方案,目前可以由Cortex-M3或Cortex-M4+嵌人式OS的方式取代。 支持Cortex-M3/M4的芯片厂家也在日益增多,包括ST、TI、Atmel等在内的芯片巨头都有多款基于Cortex-M3/M4的微控制器产品,而且具有多种Flash及内存大小外设以及运行频率等,这也使得我们的选择更加广泛。利用一定的程序架构,可以开发出基于多种硬件平台的程序,为产品提供了更多的保障。
本书主要介绍系统软件的运行机制和原理,涉及在Windows和Linux 两个系统平台上,一个应用程序在编译、链接和运行时刻所发生的各种事项,包括:代码指令是如何保存的,库文件如何与应用程序代码静态链接,应用程序如何被装载到内存中并开始运行,动态链接如何实现,C/C++运行库的工作原理,以及操作系统提供的系统服务是如何被调用的。每个技术专题都配备了大量图、表和代码实例,力求将复杂的机制以简洁的形式表达出来。本书最后还提供了一个小巧且跨平台的C/C+运行库MiniCRT,综合展示了与运行库相关的各种技术。 本书对装载、链接和库进行了深入浅出的剖析,并且辅以大量的例子和图表,可以作为计算机软件专业和其他相关专业大学本科高年级学生深入学习系统软件的参考书。同时,还可作为各行业从事软件开发的工程师、研究人员及其他对系统软件实现机制和技术感兴趣者的自学教材。
[199]年,我写下《EfectioeC++》第一版。那本书几乎没有讨论template,因为它刚刚才被加入语言之中,我对它儿乎一无所知。为了书中包含的一点点template 代码,我曾通过电子邮件请别人验证,因为我手上的编译器都没有提供对template的支持。 1995 年,我写下《More Effective C++》。又一次,我几乎没有讲述template。这一次阻止我的,既不是对 template 知识的缺乏(在那本书的初稿中,我曾打算以一整章讲述template),也不是我的编译器在这方面有所缺陷。真正的理由是我担心,C++社群对tempiate的理解即将经历次巨大的变化,我对它所说的任何事情,也许很快就会被认为是陈旧的、肤浅的,甚至完全错误的。 我的担心出于两个原因。第一个原因和 John Barton 及 Lee Nackman 在C++ Report 1995年1月的一篇专栏文章有关。这篇文章讨论的是:如何经由template 执行型别安全的维度分析,同时做到运行期零成本。我自己也曾在这个问题上花了不少时间,而且我知道很多人也在寻找解答,但没有人成功。Barton 和 Nackman 的创新解法让我认识到,template 在太多的地方有用,不贝是用来生成“τ容器”。
什么是 makefile?或许很多 Winodws 的程序员都不知道这个东西,因 为那些 Windows 的 IDE 都为你做了这个工作,但我觉得要作一个好 的和 professional 的程序员,makefile 还是要懂。这就好像现在有这么 多的 HTML 的编辑器,但如果你想成为一个专业人士,你还是要了 解 HTML 的标识的含义。特别在 Unix 下的软件编译,你就不能不自 己写 makefile 了,会不会写 makefile,从一个侧面说明了一个人是否 具备完成大型工程的能力
所有结构良好的面向对象软件体系结构中都包含了许多模式。实际上,当我评估一个面向对 象系统的质量时,所使用的方法之一就是要判断系统的设计者是否强调了对象之间的公共协同关 系。在系统开发阶段强调这种机制的优势在于,它能使所生成的系统体系结构更加精巧、简洁和 易于理解,其程度远远超过了未使用模式的体系结构。 模式在构造复杂系统时的重要性早已在其他领域中被认可。特别地,Christopher Alexander 和他的同事们可能最先将模式语言(pattern language)应用于城市建筑领域,他的思想和其他 人的贡献已经根植于面向对象软件界。简而言之,软件领域中的设计模式为开发人员提供了一种 使用专家设计经验的有效途径。 在本书中,Erich Gamma、Richard Helm、Ralph Johnson和John Vlissides介绍了设计模式 的原理,并且对这些设计模式进行了分类描述。因此,该书做出了两个重要的贡献:首先,它展 示了模式在建造复杂系统过程中所处的角色;其次,它为如何引用一组精心设计的模式提供了一 个实用方法,以帮助实际开发者针对特定应用问题使用适当的模式进行设计。 我曾荣幸地有机会与本书的部分作者一同进行体系结构设计工作,从他们身上我学到了许多 东西,并相信通过阅读该书你同样也会受益匪浅。
本书针对最新发布的C++l1标准进行了彻底的更新和修改,其中对 C++语言权威而又全面的介绍将帮助你更快地学习这门编程语言,并且能以一种现代、高效的方式使用它。通过强调一 些现代C++编程的最佳方法,作者展示了如何使用核心语言特性和标准库来编写高效、易读、强大的代码。 《C++ Primer (第5版)》从一开始就介绍C++标准库相关内容,利用标准库功能和设施来帮助你编写有用的程序,而不要求你首先掌握每个语言细节。书中很多例子都已经修订过,以使用新的语言特性,以及展示如何更好地利用它们。本书是C++新特性的值得信赖的教程,是C++核心概念和技术的权威介绍。对有经验的程序员,特别是那些迫切希望一探C++11增强特性究竟的程序员, 本书也是很有价值的。
作者以自己1985年在Bell实验室时发表的一篇论文为基础,结合自己的工作经验扩展成为这本对C程序员具有珍贵价值的经典著作。写作本书的出发点不是要批判C语言,而是要帮助C程序员绕过编程过程中的陷阱和障碍。 全书分为8章,分别从词法分析、语法语义、连接、库函数、预处理器、可移植性缺陷等几个方面分析了C编程中可能遇到的问题。最后,作者用一章的篇幅给出了若干具有实用价值的建议。
身为C++标准库最重要的组成部分,STL(标准模板库)不仅是一个可复用组件库,而且是一个包罗算法与数据结构的软件框架(framework)。“框架”这个词,本身就 。 有庞大、稳定、完整而可扩展的涵义。软件框架,则是用一行行精细准确的源码,构造个庞大、稳定、完整而可扩展的软件架构。稍有软件开发经验的人都知道,要做到这些,谈何容易!STL在1994 年走人C++标准,使得原本即将推出的C++标准延迟4年问世而无怨无悔,并为之对内容做巨幅改进。而今STL不仅为千千万万C++程序员所日常运用,而且获得极高的学术赞誉,成为一个典范、一种境界。作为一个软件框架,STL所取得的成功,实在可以用“辉煌”来形容,其所内涵的软件思想和技术经验,更是无比的深厚与精致。 学习编程的人都知道,阅读、剖析名家代码乃是提高水平的捷径。源码之前,了无秘密。大师们的缜密思维、经验结晶、技术思路、独到风格,都原原本本体现在源码之中。在你仔细推敲之中,迷惑不解之时,恍然大悟之际,你的经验、思维、视野、知识乃至技术品位都会获得快速的成长。特别是面对STL这样优秀而普遍的作品,无论你是为了满足作为程序员第二天性的求知欲,还是在日常工作中解决实际问题,总有一天,你会打开一个叫做或者的头文件,想把STL背后的秘密看个究竟.英文里有一个常用短语,叫做“under the hood”,钻进魔术师的帐篷,屏住呼吸,瞪大眼睛,把那些奇妙的魔法看个通透,让自己的理解和技艺获得巨幅的提升,这种诱惑,任何一个程序员都无法抵挡!
作为UNIX 环境编程方面的经典著作,由著名技术专家W.Richard Stevens撰写的AdvancedProgramming in the UNIX® Environment 自 1992 年出版以来,受到专家和读者的普遍欢迎。由 StephenA.Rago作为共同作者,根据新的系统和规范进行了更新,2005年出版了第2版。2013年由Rago更新到了第3版,涵盖了70多个最新版POSIX.1标准的新增接口,删除了STREAMS相关接口的内容,并将使用的典型平台更新为Solaris10、Darwin10.8.0、FressBSD8.0和Ubuntu12.04。 目前UNIX版本不断涌现,例如广为使用的苹果MacOSX和iOS使用开源类UNIX操作系统Darwin,谷歌的Android采用Linux作为操作系统内核。尽管UNIX编程环境和C程序设计语言的标准化方面已经有不少工作,但系统接口不断增加,例如SingleUNIXSpecification第1版(SUSv1)1994年出版时大约包含了1170个接口(也被称为Spec1170),到2010年发布第4版时 (SUSv4),已经包括1833个接口。虽然系统调用接口和库函数可参见《UNIX程序员手册》第2、 3部分,但“手册中没有给出实例及基本原理,而这些正是本书所要讲述的内容”(第1版前言)。本书精选了常用的400多个系统调用和库函数,这些接口基本是UNIX系统软件的核心功能,涵盖了UNIX/Linux系统编程的方方面面。本书通过简明完整的例子来说明其用途,不仅仅说明了其基本用法,还反映了不同平台之间细微差异,有助于读者对整个编程环境有全面深入的了解。在翻译本书的过程中,译者也是收益良多,同时,一些经典的案例已经用于大学课堂教学和编程实践中。
本书是Git领域的集大成之作,是一本关于Git的百科全书,在广度、深度和实战性上让同类作品望尘莫及。作者是国内顶尖的版本控制专家和咨询顾问之一,本书得到了Git官方维护者JunioCHamano和ITeye创始人范凯(Robbin)先生等数位专家的高度认可和极力推荐,权威性毋庸置疑。 全书一共9篇,共41章和4个附录,内容儿乎涵盖了Git的所有方面。第I篇介绍了版本控制工具的演变历史、Git 的各种优点,以及它在3种主流操作系统中的安装与配置。第2篇和第3篇既是本书的基础,又是本书的核心,不仅介绍了Git 的操作和使用,而且还讲解了Git的原理。第2篇详细讲解了个,人用户如何使用Git,包括Git初始化、日常操作、暂存区、对象、重置、检出、恢复进度、历史变更、克隆、库管理等:第3篇详细讲解了Git协议和团队如何使用Git,包括Git支持的协议、冲突解决、里程碑、分支、远程版本库和补丁文件交互等。第4篇全面介绍了Git的协同模型,即它在实际工作中的使用模式,包括各种经典的Git协同模型、Topgit协同模型、子模组协同模型、子树合并、Android多版本库协同、Git与SVN协同模型等。第5篇介绍了Git服务器的架设,首先讲解了HTTP协议、Git 协议、SSH 协议的使用,然后讲解了Gitolite、Gitosis、 Gerrit 等服务器的架设方法,最后还讲解了Git版本库的托管。第6篇介绍了版本库的迁移,包括如何从CVS、SVN、Hg等版本库迁移到Git,以及Git版本库整理等方面的内容。第7篇讲解了Git的其他应用,包括etckeeper、Gistore 等的安装、配置和使用,以及补丁中的二进制文件和云存储等内容。第8篇介绍了Git的跨平台操作,以及它的钩子和模板、稀疏检出和浅克隆、嫁接和替换等重要特性。第9篇是附录,详细给出了Git 的命令索引以及CVS、SVN 和Hg与Git的比较与命令对照,方便读者查阅。
本书针对最新发布的C++11标准进行了彻底的更新和修改,其中对 C++语言权威而又全面的介绍将帮助你更快地学习这门编程语言,并且能以一种现代、高效的方式使用它。通过强调一些现代C++编程的最佳方法,作者展示了如何使用核心语言特性和标准库来编写高效、易读、强大的代码。 《C++Primer(第5版)》从一开始就介绍C++标准库相关内容,利用标准库功能和设施来帮助你编写有用的程序,而不要求你首先掌握每个语言细节。书中很多例子都已经修订过,以使用新的语言特性,以及展示如何更好地利用它们。本书是C++新特性的值得信赖的教程,是C++核心概念和技术的权威介绍。对有经验的程序员,特别是那些迫切希望一探C++11增强特性究竟的程序员,本书也是很有价值的。
本书主要介绍BootLoader的开发理论、流程与实例,以当前流行的ARM和Linux为蓝本,详细介绍了如何一步步实现可用的BootLoader。该书既对Linux开发环境、编译器使用、处理器架构以及编译和链接、链接脚本的细节做了较全面的理论介绍,又结合具体的环境向读者说明了BootLoader的原理和开发流程,使读者真正懂得 BootLoader是如何工作的,即便今后遇到其他处理器或者引导其他操作系统,也能熟知开发或者移植BootLoader 的思路。 本书是初涉BootLoader移植开发领域读者的一本不可多得的参考书。书中介绍的理论不仅仅对理解BootLoader有帮助,而且对理解计算机系统(嵌入式系统)也有启发意义,适合广大嵌入式系统爱好者和开发人员参考使用。
学习编程有几年了,感觉走了不少弯路,而不少的学弟学妹又在重蹈我当初的覆辙,不免有些痛心。最近在网 上也看了许多前辈们的经验建议,再结合自己的学习经历在这里谈谈基础的重要性,希望帮助大家少走些弯 路。 什么是基础呢?就是要把我们大学所学的离散数学,算法与数据结构,操作系统,计算机体系结构,编译原理 等课程学好,对计算机的体系,CPU本身,操作系统内核,系统平台,面向对象编程,程序的性能等要有深层次的掌握。 初学者可能体会不到这些基础的重要性,学习jsp,donet,mfc,vb的朋友甚至会对这些嗤之以鼻,但是一开始没学 好基础就去学jsp或donet会产生很坏的影响,而且陷入其中不能自拔。 我上大二的时候还对编程没什么概念,就上了门C++也不知道能干什么,老师说MFC也不知道是什么东西, 看别的同学在学asp.net就跟着学了,然后就了解到.net,j2ee,php是什么了,就觉得软件开发就是用这些了,而上 的那些专业课又与我们学的sqlserver啊,css啊,ajax啊,毫无关系,就感慨啊,还不如回家自学去就为一个文凭吗? 还不如去培训,浪费这么多钱.于是天天基本上没去上什么课,天天就在做网站,几个学期就做了三个网站。感觉做 这些网站就是学到些技巧,没什么进步,这些技巧就好比别人的名字,告诉你你就知道了,网上也都可以搜到。那时 候就觉得把.net学好就行了,搞j2ee的比较难,搞api编程就别想了,操作系统更是望尘莫及了。后来随着学习 的深入和看了网上许多前辈们的建议才对这些基础的重要性有所体会。
Buildroot is a tool that simplifies and automates the process of building a complete Linux system for an embedded system, using cross-compilation. In order to achieve this, Buildroot is able to generate a cross-compilation toolchain, a root filesystem, a Linux kernel image and a bootloader for your target. Buildroot can be used for any combination of these options, independently (you can for example use an existing cross-compilation toolchain, and build only your root filesystem with Buildroot). Buildroot is useful mainly for people working with embedded systems. Embedded systems often use processors that are not the regular x86 processors everyone is used to having in his PC. They can be PowerPC processors, MIPS processors, ARM processors, etc. Buildroot supports numerous processors and their variants; it also comes with default configurations for several boards available off-the-shelf. Besides this, a number of third-party projects are based on, or develop their BSP 1 or SDK 2 on top of Buildroot. 1BSP: Board Support Package
Buildroot 是一个简单高效、易于使用的可通过交叉编译来构建嵌入式 Linux 系统的工具。 它能够处理交叉编译工具链、根文件系统生成、内核镜像编译和引导加载程序编译等,还支持 数千种软件包,例如 Gtk3、QT5、GStreamer、Webkit 以及大量与网络相关、系统相关的实用工 具。Buildroot 采用类似于 linux 内核的 menuconfig、gconfig 和 xconfig 配置界面,因此使用 Bu ildroot 构建一个基本的系统是非常轻松的,这通常会花费 15-30 分钟。同时,Buildroot 是一个 开源项目,开发者可以对它做出贡献,来让 Buildroot 变得更加完善。 在正点原子 Linux 开发板相关教程中,详细讲解了如何使用 Buildroot 来构建一个基本根文 件系统,配置添加其他实用工具,并在板子上运行。为了让大家更加了解 Buildroot 使用方法、 Buildroot 工作机制以及 Buildroot 本身的开发方式等,正点原子 linux 团队对 Buildroot 官方用户 手册进行中文翻译,形成 Buildroot 中文用户手册,以供用户参阅。
目前很多程序语言都专注于帮你编写成千上万行的代码,所以此类型的语言所提供 的包、命名空间、复杂的类型系统及无数的结构,有上千页的文档需要操作者学习。 而 Lua 并不帮你编写大量的代码的程序,相反的,Lua 仅让你用少量的代码解决关 键问题。为实现这个目标,像其他语言一样 Lua 依赖于其可扩展性。但是与其他语言不 同的是,不仅用 Lua 编写的软件易于扩展,而且用其他语言比如 C/C++编写的软件也很 容易使用 Lua 扩展其功能。 一开始,Lua 就被设计成很容易和传统的 C/C++整合的语言。这种语言的二元性带 来了极大的好处。Lua 是一个小巧而简单的语言,因为 Lua 不致力于做 C 语言已经做得 很好的领域,比如:性能、底层操作以及与第三方软件的接口。Lua 依赖于 C 去做完成 这些任务。Lua 所提供的机制是 C 不善于的:高级语言、动态结构、简洁、易于测试和 调试等。正因为如此,Lua 具有良好的安全保证,自动内存管理,简便的字符串处理功 能及其他动态数据的改变
本站基于Calibre构建,感谢开源界的力量。所有资源搜集于互联网,如有侵权请邮件联系。
Github | Docker | Library | Project
本书提供与C语言编程相关的全面资源和深入讨论。本书通过对指针的基础知识和高级特性的探讨,帮助程序员把指针的强大功能融入到自己的程序中去。 全书共18章,覆盖了数据、语句、操作符和表达式、指针、函数、数组、字符串、结构和联合等几乎所有重要的C编程话题。书中给出了很多编程技巧和提示,每章后面有针对性很强的练习,附录部分则给出了部分练习的解答。 本书适合C 语言初学者和初级C程序员阅读,也可作为计算机专业学生学习C语言的参考。