Welcome 微信登录

首页 / 操作系统 / Linux

从Linux Kernel Coding Style看php代码规范

从Linux Kernel Coding Style看php代码规范

从Linux Kernel Coding Style看php代码规范Linux内核的编码是一种极端情况。需要清晰明朗以供全世界的开发者学习、修改,对代码的质量要求较高。相信linus大神在长期接触各种各式代码后脾气会变得更暴躁,就比如前段时间在某论坛痛斥C++。。。节选,去除不适合PHP程序员阅读的部分。如果你开发PHP程序的核心代码,比如框架,尤其建议好好思考。虽然,它和一些权威的代码规范比如discuz和zend的有所冲突,但是依然能从中受益。linu...
Linux2.6.29.6内核netfilter代码中SNAT的过程跟踪

Linux2.6.29.6内核netfilter代码中SNAT的过程跟踪

内核netfilter是通过iptables进行进行过滤规则设置的,因此snat方可通过IPtables工具设置一定的规则来实现。为了得到snat的工作原理,这里介绍一下它的流程:在挂钩点NF_IP_POST_ROUTING安装上钩子(?),首先将Packet钩住,而后调用nf_nat_rule_find来匹配iptables工具在内核设置的规则链。而具体的匹配算法是在ipt_do_table函数中实现的。Ip_do_table函数流程如下:开始:ipt_...
Linux内核动态加载模块

Linux内核动态加载模块

一、安装内核模块:一般步骤:(1) 在/usr/src/linux/下运行make menuconfig把需要编译成模块的项打上(M),保存并退出。(2) 运行make modules,这一步将在/usr/src/linux/下生成*.o或*.ko文件。(3) 运行make modeules_install来安装,这步会把生成的.o或ko文件拷贝到/lib/modules/`uname -r`/下。如果你只要编译某一个或几个模块,就可以用下面这个快速的方法...
Linux如何在系统启动时自动加载模块

Linux如何在系统启动时自动加载模块

为搞清楚如何在系统启动时自动加载模块,搜索了好久,网上有很多人提出这个问题,但都没有正确的答案,无论是中文社区还是英文社区,大家的回答都没有讲到点子上,无非是围绕 modprobe.conf、modprobe讲来讲去的,要不就是针对特定问题尝试不同的方法。有的还建议把modprobe modulename写入rc.local,却不曾想,rc.local的执行被放在整个启动顺序的很后面,而启动init.d下面定义的服务却在 rc.local前面,那么如果某个...
Linux2.6 内核的 Initrd 机制解析

Linux2.6 内核的 Initrd 机制解析

1.什么是 Initrdinitrd 的英文含义是 boot loader initialized RAM disk,就是由 boot loader 初始化的内存盘。在 Linux内核启动前, boot loader 会将存储介质中的 initrd 文件加载到内存,内核启动时会在访问真正的根文件系统前先访问该内存中的 initrd 文件系统。在 boot loader 配置了 initrd 的情况下,内核启动被分成了两个阶段,第一阶段先执行 initrd ...
Java字符串按字节数截取长度

Java字符串按字节数截取长度

/**/ /* * 题目: * 编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。 但是要保证汉字不被截半个,如“我ABC”4,应该截为“我AB”,输入“我ABC汉DEF”,6,应该输出为“我ABC”而不是“我ABC+汉的半个”。 * * 解释: * 此处的编码方式应该是操作系统默认的GB编码,即汉字占2个字节且第一个字节的最高位是1, * 如果理解为有符号数的话,就是负数;而英文占1个字节,符合ASC2码。 */...
Linux USB 鼠标驱动程序详解

Linux USB 鼠标驱动程序详解

USB 总线引出两个重要的链表!一个 USB 总线引出两个重要的链表,一个为 USB 设备链表,一个为 USB 驱动链表。设备链表包含各种系统中的 USB 设备以及这些设备的所有接口,驱动链表包含 USB 设备驱动程序(usb device driver)和 USB 驱动程序(usb driver)。USB 设备驱动程序(usb device driver)和 USB 驱动程序(usb driver)的区别是什么?USB 设备驱动程序包含 USB 设备的一...
Java多线程synchronized注意的地方

Java多线程synchronized注意的地方

今天用到java来实现多线程环境下的单件模式例子,才发现关于synchronized还是有一些地方需要比较小心的。 synchronized是对当前的实例进行加锁,要注意是“当前实例”,也就是说,假如你有两个实例化对象,那么可以同时访问这两个实例里面的synchronized块。但是,当访问一个实例里面的一个synchronized块时,其余的synchronized是不可同时访问的,原因是整个实例都被加了锁。 那假如说是static synchron...
Binutils与GCC配置选项简介

Binutils与GCC配置选项简介

==============================================版权声明本文作者是一位自由软件爱好者,所以本文虽然不是软件,但是本着 GPL 的精神发布。任何人都可以自由使用、转载、复制和再分发,但必须保留作者署名,亦不得对声明中的任何条款作任何形式的修改,也不得附加任何其它条件。您可以自由链接、下载、传播此文档,但前提是必须保证全文完整转载,包括完整的版权信息和作译者声明。其他作品本文作者十分愿意与他人共享劳动成果,如果你对我...
GCC编译优化指南

GCC编译优化指南

前言 网上关于编译优化的文章很多,但大多零零散散,不成体系,本文试图给出一个完整和清晰的优化思路,同时提供在实践中如何进行优化的详尽参考。但是,在介绍所有优化知识之前首先引用LFS-Book中的一句忠告:“使用编译器优化得到的小幅度性能提升,与它带来的风险相比微不足道”。你还要进行优化吗? OK, crazy guy! Let"s Go!! 在继续之前,作者还是奉劝各位:如果追求极致的优化,那么它将是一件既耗时又麻烦的事情,你会陷入无止尽的测试、测...
C++回调函数用法

C++回调函数用法

一、回调函数 我们经常在C++设计时通过使用回调函数可以使有些应用(如定时器事件回调处理、用回调函数记录某操作进度等)变得非常方便和符合逻辑,那么它的内在机制如何呢,怎么定义呢?它和其它函数(比如钩子函数)有何不同呢? 使用回调函数实际上就是在调用某个函数(通常是API函数)时,将自己的一个函数(这个函数为回调函数)的地址作为参数传递给那个函数。 而那个函数在需要的时候,利用传递的地址调用回调函数,这时你可以利用这个机会在回调函数中处理消息或完成一定的操作...
C++学习经典记录

C++学习经典记录

C++设计的主要焦点就是所定义的类类型的行为可以象内置类型一样自然。 buffer 一段用来存放数据的存储区域。IO设备通常存储输入或输出到缓冲区,并独立于程序动作对缓冲区进行读写。输出缓冲区通常必须显示刷新以强制输出缓冲区内容。默认情况下,读cin会刷新cout;当程序结束时,cout也会被刷新。 cerr 绑定到标准错误的ostream对象,这通常是与标准输出相同的流。默认情况下,输出cerr不缓冲,通常用于不是程序正常逻辑部分的错误信息或其他输出。 ...
<< 1181 1182 1183 1184 1185 1186 1187 1188 1189 1190 >>