Welcome 微信登录

首页 / 操作系统 / Linux

想要精通PHP吗?先学好Linux/Unix和C吧

想要精通PHP吗?先学好Linux/Unix和C吧

现在的IT市场很浮躁,充斥着各种各样的所谓“精通”,在求职简历上比比皆是。但是本文目的不在于讨论精通的标准,也不想去批评现在漫天的精通。就让我们暂且认同“精通”这两个字,来讨论下Linux/Unix(以下简称Linux)和C对精通PHP的帮助。另外要说明下的是,这里说的精通PHP只是纯粹对于PHP来说的,并不是指web开发,所以javascript,HTML或者Ajax,smarty,CSS这类都不在讨论范围。首先无论从哪个方面看,PHP和Linux都是最...
Ubuntu 下安装 QT 开发环境

Ubuntu 下安装 QT 开发环境

虽然网络上很多人使用 RedHat 或者Fedora 作为上位机操作系统,但是我觉得使用Ubuntu最为方便,因为需要的软件包大部分都可以通过 apt-get 方式来安装,而不必从源代码开始自己编译。要知道,自己编译源代码可不是一件轻松的事,因为在编译过程中经常会出现令人意外而且莫名其妙的错误。我们使用的操作系统是 Ubuntu 8.04,使用目前最新版本的QT 4.4.0,安装起来即为简单,只要运行以下命令就行:sudo apt-get install ...
Linux内核编译 CONFIG_MODVERSIONS 作用

Linux内核编译 CONFIG_MODVERSIONS 作用

关于Linux内核编译 CONFIG_MODVERSIONS 作用的两篇文章整理。一般情况下,如果没有选择CONFIG_MODVERSIONS,这些符号是正常的字串;如果选择了CONFIG_MODVERSIONS,这些符号就会在后面加一段校验字串。这样做的目的是避免模块不正确加载情况下,使得Linux内核崩溃。一、如果内核选择了CONFIG_MODVERSIONS选项,你的模块的Makefile要增加以下几行CFLAGS += -DMODVERSIONS ...
Linux C/C++开发环境

Linux C/C++开发环境

今天给大家写一个我的读书笔记:Linux C/C++开发环境(1)在Linux下玩过的朋友想必都知道gcc,gcc由很多组件组成:gcc,g++(c++的编译工具),cpp(C预处理程序),ld(gnu链接程序).gas(gnu Assembler 主要用于处理汇编代码),gdb(gnu调试工具),prof(gnu 配置工具).Linux 中的库:1.静态库:链接时生成一份可执行文件的拷贝。优点:每个可执行程序都有一份相同的拷贝以至于编译以后不需要库的支持...
在JDK 5.0中使用灵活的线程锁定机制

在JDK 5.0中使用灵活的线程锁定机制

JDK 5.0为开发人员开发高性能的并发应用程序提供了一些很有效的新选择。例如,java.util.concurrent.lock 中的类 ReentrantLock 被作为Java 语言中synchronized 功能的替代,它具有相同的内存语义、相同的锁定,但在争用条件下却有更好的性能,此外,它还有synchronized 没有提供的其他特性。这是否意味着我们应当忘记synchronized ,转而只用 ReentrantLock 呢?并发性专家 Br...
Linux中软中断机制分析

Linux中软中断机制分析

什么是软中断机制?Linux中的软中断机制用于系统中对时间要求最严格以及最重要的中断下半部进行使用。在系统设计过程中,大家都清楚中断上下文不能处理太多的事情,需要快速的返回,否则很容易导致中断事件的丢失,所以这就产生了一个问题:中断发生之后的事务处理由谁来完成?在前后台程序中,由于只有中断上下文和一个任务上下文,所以中断上下文触发事件,设置标记位,任务上下文循环扫描标记位,执行相应的动作,也就是中断发生之后的事情由任务来完成了,只不过任务上下文采用扫描的方...
详解Java多线程开发中的数据同步

详解Java多线程开发中的数据同步

Java中的变量分为两类:局部变量和类变量。局部变量是指在方法内定义的变量,如在run方法中定义的变量。对于这些变量来说,并不存在线程之间共享的问题。因此,它们不需要进行数据同步。类变量是在类中定义的变量,作用域是整个类。这类变量可以被多个线程共享。因此,我们需要对这类变量进行数据同步。数据同步就是指在同一时间,只能由一个线程来访问被同步的类变量,当前线程访问完这些变量后,其他线程才能继续访问。这里说的访问是指有写操作的访问,如果所有访问类变量的线程都是读...
Linux+C语言:数字图像处理源程序

Linux+C语言:数字图像处理源程序

这个是我将原来的用C语言写的数字图像处理改写在可以通过G++编译了。原来的程序是通过的VC++6的编译,但是没有通过GCC的编译,这次经过更改之后,已经完整的通过了VC6和GCC的编译,因此,可以用在Windows下和Linux下。我的Linux的C C++的编程环境是Code Blocks,很不错的。下面是更改之后的源程序,全部的源程序哦。随后,我会增加一些图像处理的算法上去的。现在,只是简单的读图和保存图。BMP.h的全部源程序:#ifndef BMP...
深度介绍Linux内核是如何工作的

深度介绍Linux内核是如何工作的

牛津字典中对"kernel"一词的定义是:"较软的、通常是一个坚果可食用的部分。"当然还有第二种定义:"某个东西核心或者最重要的部分。"对Linux来说,它的Kernel无疑属于第二种解释。让我们来看看这个重要的东西是如何工作的,先从一点理论说起。 广义地来说kernel就是一个软件,它在硬件和运行在计算机上的应用程序之间提供了一个层。严格点从计算机科学的角度来说,Linux中的Kernel指的是Linus Torvalds在90年代初期写的那点代码。 ...
Linux的初始内核自解压分析

Linux的初始内核自解压分析

概述 1)Linux的初始内核映象以gzip压缩文件的格式存放在zImage或bzImage之中,内核的自举代码将它解压到1M内存开始处.在内核初始化时, 如果加载了压缩的initrd映象, 内核会将它解压到内存盘中,这两处解压过程都使用了lib/inflate.c文件. 2)inflate.c是从gzip源程序中分离出来的, 包含了一些对全局数据的直接引用,在使用时需要直接嵌入到代码中.gzip压缩文件时总是在前32K字节的范围内寻找重复的字符串进行...
Linux-千兆网卡驱动实现机制浅析

Linux-千兆网卡驱动实现机制浅析

网卡作为一个PCI设备,其必须遵守相应的PCI规范,即必须为网卡定义相应的标识号,每个PCI外设由一个总线编号、一个设备编号及一个功能编号来标识。网卡驱动程序则需要定义相应的pci_device_id结构来表示其支持的PCI外设的标识…… 1.引言 本分析主要针对e1000网卡,驱动源码为7.3.20-k2。本文的目的不是为了讲述如何编写Linux驱动程序,主要是分析网卡驱动内部的实现机制。通过此分析,希望可以理解驱动程序中的各个部分的关系,对网卡发送...
如何在C++语言中对浮点数进行格式化处理

如何在C++语言中对浮点数进行格式化处理

本文章将讲解如何在C++语言中用最简单的方法来控制小数位,怎样对程序中的浮点数据进行"整齐"地格式化!下面接着往下看:问题的引出如有一个函数,其可接受一个long double参数,并将参数转换为字符串,结果字符串应保留两位小数,例如,浮点值123.45678应该生成"123.45"这样的字符串。表面上看来这是一个意义不大的编程问题,然而,如果真要在实际中派上用场,函数应设计为具有一定弹性,以允许调用者指定小数位数。另外,函数也应该能够处理各种异常情况,如...
实例讲解C++中CopyFileEx函数的简单用法

实例讲解C++中CopyFileEx函数的简单用法

复制文件可以用 CopyFile API 函数。CopyFileEx 函数的好处是:它提供了回调函数,程序员可以向用户显示复制的过程。这里我不打算介绍回调函数的详细参数,这个可以看MSDN;我说一些MSDN中没有说明的东西。1、多久回调一次?答案是:每传输 64KB 数据回调一次;2、回调原因第一次返回:CALLBACK_STREAM_SWITCH ,以后都返回:CALLBACK_CHUNK_FINISHED第一次表示开始复制,但还没有复制。3、回调函数返...
Linux内核模块编程入门

Linux内核模块编程入门

先说句正经的:其实我没资格写这篇文章,因为自己也就一两个月以来才开始有所领悟的。因此,这里与其说是关于Linux内核学习的经验,不如说是自己的教训吧,希望不要扔鸡蛋砸我^_^ 常常有人问:我想学习内核,需要什么基础吗?Linus Torvalds本人是这样回答的:你必须使用过Linux。 这个……还是有点太泛了吧,我想下面几个基础可能还是需要的,尽管不一定必需: 1, 关于操作系统理论的最初级的知识。不需要通读并理解《操作系统概念》《现代操作系统》等巨...
读Kernel感悟-Linux内核启动-开启页面映射

读Kernel感悟-Linux内核启动-开启页面映射

在setup的帮助下,我们顺利地从16位实地址模式过渡到32位段式寻址的保护模式。又在arch/i386/boot/compressed/head.S的帮助下实现了内核的自解压,并且从arch/i386/kernel/head.S中的startup_32开始。现在在线性地址0x100000(1M)处开始就是我们的解压后的内核了。而startup_32()的地址恰好是0x100000。由于还没有开启页面映射,所以必须引用变量的线性地址(即变量的虚拟地址-PA...
读Kernel感悟-Linux内核启动-内核解压缩

读Kernel感悟-Linux内核启动-内核解压缩

这得从vmliux.bin的产生过程说起。从Linux内核的生成过程来看内核的链接主要有三步:第一步是把内核的源代码编译成.o文件,然后链接,这一步,链接的是arch/i386/kernel/head.S,生成的是vmlinux。注意的是这里的所有变量地址都是32位页寻址方式的保护模式下的虚拟地址。通常在3G以上。第二步,将vmlinux objcopy 成arch/i386/boot/compressed/vmlinux.bin,之后加以压缩,最后作为数...
Linux下C++开发工具介绍

Linux下C++开发工具介绍

就C++开发工具而言,与Windows下微软(VC, VS2005等)一统天下相比,Linux/Unix下C++开发,可谓五花八门,各式各样。Emacs, vi, eclipse, anjuta,kdevelop等层出不穷。Windows下,开发工具多以集成开发环境IDE的形式展现给最终用户。例如,VS2005集成了编辑器,宏汇编ml,C /C++编译器cl,资源编译器rc,调试器,文档生成工具, nmake。它们以集成方式提供给最终用户,对于初学者而言十...
下载:Linux Kernel 2.6.29.1

下载:Linux Kernel 2.6.29.1

Linux是最受欢迎的自由电脑操作系统内核。它是一个用C语言写成,符合POSIX标准的类Unix操作系统。Linux最早是由芬兰黑客 Linus Torvalds为尝试在英特尔x86架构上提供自由免费的类Unix操作系统而开发的。该计划开始于1991年,这里有一份Linus Torvalds当时在Usenet新闻组comp.os.minix所登载的贴子,这份著名的贴子标志着Linux计划的正式开始。在计划的早期有一些Minix 黑客提供了协助,而今天全球无...
<< 1161 1162 1163 1164 1165 1166 1167 1168 1169 1170 >>