工欲善其事,必先利其器。要在Linux下写程序,首先要了解基本的工具gcc/g++/make。 用gcc/g++生成可执行的C或C++程序需要经过四步: 1.预处理程序对源文件(*.c, *.cpp, *.C, *.cxx)等进行宏扩展和条件处理,导入前导文件,生成.i文件(可用gcc -E filename生...
. !-- /* Font Definitions */ @font-face {font-family:宋体; panose-1:2 1 6 0 3 1 1 1 1 1; mso-font-alt:SimSun; mso-font-charset:134; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:3 135135232 16 0 262145 0;} @font...
概述 什么是 makefile ?或许很多 Winodws 的程序员都不知道这个东西,因为那些 Windows 的 IDE 都为你做了这个工作,但我觉得要作一个好的和 professional 的程序员, makefile 还是要懂。这就好像现在有这么多的 HTML 的编辑器,但如果你想成为一个专业人士...
Linux操作系统的Configure参数解释说明 Linux环境下的软件安装,并不是一件容易的事情;如果通过源代码编译后在安装,当然事情就更为复杂一些;现在安装各种软件的教程都非常普遍;但 万变不离其中,对基础知识的扎实掌握,安装各种软件的问题就迎刃而解了。...
一. 概述 汇编通过call指令调用C函数,call指令主要有两个功能:1.将下一条指令的地址保存在栈顶;2.设置eip指向被调用程序代码的开始处。汇编使用ret指令返回,ret的功能是把返回地址从桟里弹出,并转到该地址去执行。 汇编程序调用C函数时,函数的入口参数...
Linux内核和许多其他自由软件以及开放源码应用程序都是用 C 语言编写并使用 GCC编译的。 编译C++程序: -c 只编译不连接 g++ file1 -c -o file1.o g++ file2 -c -o file2.o g++ file1.o file.o -o exec g++ -c a.cpp 编译 g++ -o a a.o 生成可执行文件 也可以...
原文:http://www.jianshu.com/p/a6f35a48c075/comments/956260 细细整理了过去接触过的那些前端技术,发现前端演进是段特别有意思的历史。人们总是在过去就做出未来需要的框架,而现在流行的是过去发明过的。如,响应式设计不得不提到的一个缺点是:它只是将...
programming-books 编程是计算机科学中一个非常复杂且重要的任务。我们在计算机系统、移动手机或其他地方所享受的,都是程序员通过无尽的努力开发出来的。编程分两种类型:机器水平的和高级编程。大多数程序员都依赖于高级编程。编程就是利用一些预定义的规...
exec 系统调用执行新程序时会把命令行参数和环境变量表传递给 main 函数。 环境变量表是一组字符串char ** environ,主要成员有 PATH:可执行文件搜索路径。 SHELL:当前Shell TERM:当前终端类型,在图形界面终端下它的值通常是 xterm ,终端类型决定了一些程...
系统调用 是指操作系统提供给用户程序调用的一组 特殊 接口,用户程序可以通过这组接口来获得系统内核提供的服务。在 linux 中,为了更好的保护内核空间,将程序的运行分为 内核空间 和 用户空间 ( 即常说的内核态和用户态 ) ,他们在逻辑上是相互隔离的。 l...
经过多年的积累,我发现,下面这些基本的指导法则,可以帮助我成为一个更加高效的程序员。 程序设计法则,与设计和工程的原理密切相关。下面这些编程法则帮助我让我获益匪浅,所以我想分享给大家,希望也能帮助大家更高效,生产出的代码更容易维护,并且bug...
你有没有这样的经历:别人审查过你的代码之后给出的注释,你认为是没有必要的?注释代码是为了提高代码的可读性,目的是为了能让其他人更容易理解你的代码。 我特别讨厌这5种注释类型以及制造它们的 程序员 。希望你不是其中之一。 1.自以为很了不得的程序员...
代码就是程序员的孩子,给孩子取个好听的名字很重要! 我们在项目开发中,接触到的变量、函数、类多数都是项目自己定义的,往往都是为了解决一些特定的领域的问题,引入了各种各样的概念,代码里面的名字就对应着问题领域或方案领域的这些概念,所以,对于一...
每个软件开发人员都使用API。优秀的API设计就像魔法。不过,我不知道有多少人可以解释为什么有的API很复杂、很难学,而有的则干净、简单、使用起来堪称是一种快乐。关于这个问题,我将在文中回答,并提供优秀API设计的十条法则。 api-logo 1.只做你今天需要...
我们每天所玩的 app 或游戏,不是凭空生出来,而是有某些人在某些地方,呕心沥血,以一行一行程序写出来的。平台、网页、网络本身,都是起源于此。现在工程师写程序创造一个又一个便利的产品,也是站在巨人肩膀上的结晶。Business Insider列出 12 位至今仍在...
最近在向Linux内核提交一些驱动程序,在提交的过程中,发现自己的代码离Linux内核的coding style要求还是差很多。当初自己对内核文档里的CodingStyle一文只是粗略的浏览,真正写代码的时候在很多细节上会照顾不周。不过,在不遵守规则的程序员队伍里,我并不...
Jaromil在2002年设计了最为精简的一个Linux Fork炸弹,整个代码只有13个字符,在shell中运行后几秒后系统就会宕机: :(){:|:};: 这样看起来不是很好理解,我们可以更改下格式: :() { :|: }; : 更好理解一点的话就是这样: bomb() { bomb|bomb }; bomb 因为she...
我是一个倾向于生活在规则下的人。 现在,这些规则大部分是我本人为自己设立的-但它们依然是规则。 我发现为自己创建规则可以让我过得更好,因为这样做可以提前决定一些事情,而不是要在匆忙中做出所有的决定。 我今天早上应该去健身房吗? 我的规则告诉我说...
前言 我(@董伟明9)经常看到很多程序员, 运维在代码搜索上使用ack, 甚至ag(the_silver_searcher ), 而我工作中95%都是用grep,剩下的是ag。 我觉得很有必要聊一聊这个话题。 我以前也是一个运维, 我当时也希望找到最好的最快的工具用在工作的方方面面。...
我是一名黑客。在我还就膝盖那么高的时候就开始用一台古老的 Commodore 64 写代码了。直到今天,也没有什么比戴上耳机,破解东西更让我着魔的了。所以在我创建我的第一家企业时,我就已经知道了很多有关于编程的事情。是不是谬论,且听我下面一一道来: 1....
我喜欢钻研bash环境。很多时候,在使用bash编程中,有些问题一遍又一遍的重复遇到。每次我都需要重新思考这些问题的解决方法。直到有一天我无法忍受,于是坐下来,编写一个通用的函数,放入我的.bashrc文件中,部署到电脑上。 希望我的这些追求最大化命令行...
不论是服务器端编程还是客户端编程,编程中的同步和异步对程序员来说都应该不陌生,我们经常会用同步编程来解决顺序执行问题、用异步解决并行执行问题。然而,就是这样的常见的编程模式,有人却将其申请为专利。在谷歌专利查询网站上专利公开号为US 20140282...
Mac 在国外很受欢迎,尤其是在 设计/web开发/IT 人员圈子里。普通用户喜欢 Mac 可以理解,毕竟 Mac 设计美观,简单好用,没有病毒。那么为什么专业人士也对 Mac 情有独钟呢?从个人使用经验来看我想有下面几个原因: 1、Mac OS X 是基于 Unix 的。这一点太重...
我最近看了一本叫做《the 97 Things a Programmer Should Know》的书。书是一本好书。不过,下面我将我认为最值得我们了解的 20 件事情列举给大家: 1. 应用函数式编程原则 引用透明性是一个非常可取的特性。这意味着,不论何时调用它,对于同一组参数它永远...
如果你想要在Linxu中获得一个高效、自动化、高质量的科学画图的解决方案,应该考虑尝试下matplotlib库。Matplotlib是基于python的开源科学测绘包,基于python软件基金会许可证发布。大量的文档和例子、集成了Python和Numpy科学计算包、以及自动化能力,是作...
什么是Awk Awk是一种小巧的编程语言及命令行工具。(其名称得自于它的创始人Alfred Aho、Peter Weinberger 和 Brian Kernighan姓氏的首个字母)。它非常适合服务器上的日志处理,主要是因为Awk可以对文件进行操作,通常以可读文本构建行。 我说它适用于服务...
Memcached创建者Dormando很早就写过两篇文章[1][2],告诫开发人员不要用memcached存储Session。他在第一篇文章中给出的理由大致是说,如果用memcached存储Session,那么当memcached集群发生故障(比如内存溢出)或者维护(比如升级、增加或减少服务器)时,...
任何东西,只要真正透彻的理解,研究其究竟,才能成为自己的东西,才能知其然,所以然,++! 这几天抽时间研究了下epoll , 网上收藏,有空回味下。 介绍epoll的文章大多都详细介绍了epoll模型和select/poll模型之间的比较,这里就不再详细列举,只总结一下我...