Linux Kernel 代码艺术——编译时断言
    
            
摘要:Linux Kernel 代码艺术——编译时断言本系列文章主要写我在阅读Linux内核过程中,关注的比较难以理解但又设计巧妙的代码片段(不关注OS的各个模块的设计思想,此部分我准备写在“深入理解Linux Kernel” 系列文章中),一来通过内核代码复习一下C语言及汇编语言的语法,二来学习内核开发大牛们书写代码的风格及思路。在内核文件 include/linux/bug.h中,有下面两行的宏定义:123456/* Force a compilation error if condition is true, but also produce a result (of value 0 and 
        
阅读全文
摘要:配置sonar、jenkins进行持续审查本文以CentOS操作系统为例介绍Sonar的安装配置,以及如何与Jenkins进行集成,通过pmd-cpd、checkstyle、findbugs等工具对代码进行持续审查。一、安装配置sonar1、Sonar介绍Sonar是一个用于代码质量管理的开源平台,用于管理Java源代码的质量。通过插件机制,Sonar可以集成不同的测试工具,代码分析工具,以及持续集成工具,比如pmd-cpd、checkstyle、findbugs、Jenkins。通过不同的插件对这些结果进行再加工处理,通过量化的方式度量代码质量的变化,从而可以方便地对不同规模和种类的工程进行
        
阅读全文
摘要:组建一台计算机4_硬件4 单位存储器前言:放假有一周的时间,到家也有四五天的时间了,这几天把《code》好好的看了一遍。尽管之前也有草草翻过,但是把时候我就曾告诉自己,无论如何都是要把书中的这些东西都实现一遍的。于是说干就干,这几天基本上就在搞这些东西了。这些学习成果要感谢余富帅给我传的软件以及一些推荐。=========================================================================转载请遵循GNU开源宣言。Copyleft ! , 阅读此文,你需要拥有以下基础:1.小学代数相关知识;2.初中电路;3.高中门电路相关知识;4.二
        
阅读全文
摘要:MemoryMappedFile 在 Mono in Linux 的开发笔记前言MemoryMappedFile(简称MMF)类是.NET中对内存映射文件进行操作的类,内存映射文件是非常高效的本地IO方案,由操作系统提供内存与IO文件之间的映射转换,对内存映射文件的更改由操作系统自动与物理文件进行高效的数据交换。在大文件处理中一般都需要使用到它,同时它也被用来做高效的进程间通讯的底层技术。正因为它是如此的高效和便捷,所以在服务器程序开发中被广泛使用到。譬如,我们实现的基于Socket网络通讯程序中,在发送大数据时,需要对数据进行拆包组包的操作,这就往往需要对未接收完全的数据包进行缓存,在这个的
        
阅读全文
摘要:Centos 64位 Install certificate on apache 即走https协议一: 先要apache 请求ssl证书的csr 一下是步骤:重要注意事项 An Important Note Before You Start在生成CSR文件时同时生成您的私钥,如果您丢了私钥或忘了私钥密码,则颁发 证书给您后不能安装成功!您必须重新生成私钥和CSR文件,免费重新颁发新的 证书。为了避免此情况的发生,请在生成CSR后一定要备份私钥文件和记住私钥 密码,最好是在收到证书之前不要再动服务器。 By far the most common problem users have whe.
        
阅读全文
摘要:使用diff和patch指令生成文件差异和还原文件创建一个新的文件夹test然后进入testmkdir testcd test首先创建文件avim a.txt随便输入一段文字后保存不退出。稍微修改一下内容,另存为b.txt。使用以下指令生成文件差异diff -u a.txt b.txt > diff1.txt这是以a为原始文件,b为目标文件打开diff1.txt看看白色字体代表两个文件都一样的,其它不一样的额地方以-号开头(紫色字体)代表原始文件,以+开头(蓝色字体)代表目标文件。也可以以b为原始文件,a为目标文件。diff -u b.txt a.txt > diff2.txt打开
        
阅读全文
摘要:Mono on CentOS 6.3 安装笔记在网上找到篇关于yum的文章,写的很详细特此推荐下,在阅读本文之前建议先看看它:《CentOS yum源的配置与使用》如果用的是移动光驱,建议不要开启本地的yum 的本地repository库,即不要启用/etc/yum.repos.d/CentOS-Media.repo文件内的配置源。当然,如果您的CentOS不能连接互联网,而必须使用光盘或者移动存储进行更新的话,那就需要启用本地repository源。下载网易和搜狐的安装源:# cd /etc/yum.repos.d# wget http://mirrors.163.com/.help/Cen
        
阅读全文
摘要:Linux 学习 step by step (2)Linux,想要我说爱你真的不容易了,尽管,你是ubutun,尽管,你有蛮界面。但是,操作你,还是没有操作windows那么的如鱼得水了。为了更好的操作你你呀,我还是体验一把高手的感觉,用命令行的形式来操作你。 您基本文件结构如下图所示:bin 存放二进制可执行文件(ls,cat,mkdir等) 我们常用一些 ls命令,展示文件的命令,cat命令,创建一个空文件的命令,mkdir。创建文件夹的命令都在这个文件夹下等等这样shell命令也在这个文件夹下。至于这些命令 我们在以后的篇幅在讨论。boot 存放用于系统引导时使用的各种文件,开机的...
        
阅读全文
摘要:Linux 进程Linux 进程 在用户空间,进程是由进程标识符(PID)表示的。从用户的角度来看,一个 PID 是一个数字值,可惟一标识一个进程。一个 PID 在进程的整个生命期间不会更改,但 PID 可以在进程销毁后被重新使用,所以对它们进行缓存并不见得总是理想的。进程表示 在 Linux 内核内,进程是由相当大的一个称为task_struct的结构表示的。此结构包含所有表示此进程所必需的数据,此外,还包含了大量的其他数据用来统计(accounting)和维护与其他进程的关系(父和子)。struct task_struct { volatile long state; vo...
        
阅读全文
摘要:系统环境:Centos6.0 x641、确认搭建LAMP所需要的环境是否已经安装[root@centos6 ~]# rpm -q make gcc gcc-c++zlib-devellibaio备注:安装libpng时候需要zlib-devel安装mysql时候需要libaio2、如果没安装则yum安装[root@centos6 ~]# yum install make gcc gcc-c++zlib-devel libaio -y3、由于要使用编译安装,所以查看httpd、mysql、php是否安装,如果安装则卸载[root@centos6 ~]# rpm -q httpd mysql ph
        
阅读全文
摘要:Centos 上使用mmsh协议听猫扑网络电台 VLC播放器安装CentOS已经有一段时间了,但是由于在Linux下除了学习,其他是事情都干不了。今天想闲来无事开了CentOS就想听一下歌,突然想起应该可以在Linux下听网络电台。网络电台其实用的是mms协议。例如猫扑网络电台是 mms://ting.mop.com/mopradio . 由于CentOS默认安装的播放器听不了mms协议。所以就google了一下有什么播放器可以听mms协议。VLC media player 可以用。 1.先到/etc/yum.repos.d/目录下ls一下,看看它们长得是啥样子。 2.各种安装rpm软件...
        
阅读全文
摘要:一、准备工作1、安装编译工具gcc、gcc-c++注意解决依赖关系,推荐使用yum安装,若不能联网可使用安装光盘做为yum源——1)编辑yum配置文件:# mount /dev/cdrom /mnt/cdrom# vi /etc/yum.repos.d/CentOS-Media.repo[c5-media]name=CentOS-$releasever - Mediabaseurl=file:///mnt/cdrom * 修改为光盘挂载点 file:///media/cdrom/ file:///media/cdrecorder/gpgcheck=1enabled=1 * 改为1意为启用g..
        
阅读全文
摘要:mmap学习内存页:Linux是以页为单位来管理物理内存的,一页大小一般等于4096字节。页容量越大,系统中可能存在的内存碎片就越多。mmap将一个磁盘上的文件或者对象映射进内存。文件被映射到多个页上,如果文件的大小不是所有页的大小之和,最后一个页不被使用的空间将会清零。当使用mmap映射文件到进程后,就可以直接操作这段虚拟地址进行文件的读写等操作,不必再调用read,write等系统调用。采用共享内存通信的一个显而易见的好处是效率高,因为进程可以直接读写内存,而不需要任何数据的拷贝。比如像管道和消息队列,需要在内核和用户空间进行四次的数据拷贝。mmap的系统操作有两个:?12345#incl
        
阅读全文
摘要:shell中sed用法今天有个同学问我一个问题: 用shell命令将test.log文件中第3-5行的第2个”filter”替换成”haha”其实我对各种shell命令也不是特别熟,于是又现学了一个强大的sed命令。sed简单的介绍:sed命令可实现删除(delete)、改变(change)、添加(append)、插入(insert)、合并、交换文件中的资料行,或读入其它档的资料到文件中,也可替换(substuite)它们其中的字串、或转换(tranfer)其中的字母等等。例如将文件中的连续空白行删成一行、"local"字串替换成"remote"、&qu
        
阅读全文
摘要:[小技巧] 把虚拟机中的Linux系统安装到U盘中出于各种需求,很多用户可能经常会在Windows系统中安装虚拟机,然后在虚拟机中安装Linux系统。使用虚拟机的优点是可以同时使用多个系统,而缺点也是显然的,也就是程序运行效率较差。而实际上,Linux系统也可以完全安装到U盘中(注意这里不是用UltraISO、UNetBootin、Universal USB Installer那样的基于Live CD的安装,而是以在U盘中创建ext分区的方式进行安装)。顺便说一下,Windows系统(不包括PE)直到Windows 8才支持完全将系统安装到U盘上。而一个更好的消息是:我们可以将安装在虚拟机中的
        
阅读全文
摘要:【驱动】USB驱动·入门Preface USB是目前最流行的系统总线之一。随着计算机周围硬件的不断扩展,各种设备使用不同的总线接口,导致计算机外部总线种类繁多,管理困难。USB总线正是因此而诞生的。USB总线提供了所有外部设备的统一连接方式,并且支持热插拔,方便了厂商开发设备和用户使用设备。USB遵循原则 USB的设计目标是对现有的PC机体系进行扩充,但是目前不仅是PC机,许多的嵌入式系统都开始支持USB总线和接口标准。USB设计主要遵循下面几个原则:易于扩充外部设备:USB支持一个接口最多127个设备。灵活的传输协议: 支持同步和异步数据传输。设备兼容性好: 可以兼容不同类型的设备
        
阅读全文
摘要:linux下http服务器开发1.mystery引入 1)超文本传输协议(HTTP)是一种应用于分布式、合作式、多媒体信息系统的应用层协议 2)工作原理 1)客户端一台客户机与服务器建立连接后,会发送一个请求给服务器,请求方式的格式为:统一资源定位符(URL)、协议版本号,后边是MIME信息,包括请求修饰符、客户机信息和可能的内容。 2)服务器端 1)服务器接收到客户机的请求后,首先解析请求信息,根据不同的请求模式给予相应的响应信息。HTTP中规定了6种请求格式,但最常用到的是GET和POST请求 2)任何服务器除了包括HTML文件以外,还有一个HTTP驻留程序,用于响...
        
阅读全文
摘要:Linux操作系统学习_操作系统是如何工作的实验五:Linux操作系统是如何工作的?学号:SA1****369操作系统工作的基础:存储程序计算机、堆栈(函数调用堆栈)机制和中断机制 首先要整明白的一个问题是什么是存储程序计算机?其实存储程序计算机正是冯.诺依曼最初提出的计算机体系模型,现在我们一提到冯.诺依曼体系结构首先会想到的应该是包含输入设备、输出设备、存储器、控制器、运算器组成的经典模型,但是这里我们强调的存储程序计算机的主要特征实际上并非如此,存储程序计算机的概念相当于是褪去现代计算机华丽的外衣,所呈现出来的实实在在的计算机的本质。主要由处理器和存储器组成,中间以总线相连。CPU通过总
        
阅读全文
摘要:linux netstat 命令详解1.功能与说明netstat 用于显示linux中各种网络相关信息。如网络链接 路由表 接口状态链接 多播成员等等。2.参数含义介绍-a (all)显示所有选项,默认不显示LISTEN相关-t (tcp)仅显示tcp相关选项-u (udp)仅显示udp相关选项-n 拒绝显示别名,能显示数字的全部转化成数字。-l 仅列出有在 Listen (监听) 的服務状态-p 显示建立相关链接的程序名-r 显示路由信息,路由表-e 显示扩展信息,例如uid等-s 按各个协议进行统计-c 每隔一个固定时间,执行该netstat命令。提示:LISTEN和LISTENING的状
        
阅读全文
摘要:线上redis服务内存异常分析。项目中,新增了一个统计功能,用来统计不同手机型号的每天访问pv,看了下redis2.6有个setbit的功能,于是打算尝尝鲜把redis从2.4更新到了2.6因为是租了vps。服务器的内存只有4g可以用,最近发现系统 负载很大。发现是redis服务引起的。查了下redis的key db1 6w+。db1 不到2k。内存监控确有4.5g(这个很奇怪)。这是很不正常的。想了最近在db1加了很多bit。于是把db1 flushdb。发现内存占用一下就刷刷的降下来了。查了不少关于reids bit的资料。刚开始还坚信可能是redis的一个bug。昨天晚上找了凌晨2点多。
        
阅读全文