- 博客(90)
- 资源 (51)
- 收藏
- 关注
原创 漫谈Linux内核哈希表(2)
对照前面介绍过的内核通知链、链表,本章我们将要介绍的哈希表的初始化和定义也是如出一辙的: 点击(此处)折叠或打开 定义并初始化一个名为name的哈希链表表头 #define HLIST_HEAD(name) struct hlist_head name = { .first = NULL
2016-07-24 11:00:49 1614 2
原创 漫谈Linux内核哈希表(1)
关于哈希表,在内核里设计两个很重要的数据结构: 哈希链表节点: 点击(此处)折叠或打开 /*Kernel Version : 3.4.x [include/linux/types.h]*/ struct hlist_node {
2016-07-24 11:00:46 2370 1
原创 刨一刨内核container_of()的设计精髓
新年第一帖,总得拿出点干货才行,虽然这篇水分还是有点大,大家可以晒干了温水冲服。这段时间一直在整理内核学习的基础知识点,期间又碰到了container_of()这个宏,当然还包括一个叫做offsetof()的家伙。在这两个宏定义里都出现将“零”地址强转成目标结构体类型,然后再访问其成员属性的情形。如果有童鞋看过我之前的博文《Segmentation fault到底是何方妖孽》的话,估计此时心里会犯
2016-07-24 11:00:44 1434 1
原创 Linux内核【链表】整理笔记(2)
关于链表我们更多时候是对其进行遍历的需求,上一篇博文里我们主要认识了一下和链表操作比较常用的几个内核API接口,其入参全都是清一色的struct list_head{}类型。至于链表的遍历,内核也有一组基本的接口(其实都是宏定义的)供开发者调用。 首先是list_for_each(pos,head),参数pos是需要开发者在外部提供的一个临时struct list_he
2016-07-24 11:00:41 956 3
原创 Linux内核【链表】整理笔记(1)
我们都知道Linux内核里的双向链表和学校里教给我们的那种数据结构还是些不一样。Linux采用了一种更通用的设计,将链表以及其相关操作函数从数据本身进行剥离,这样我们在使用链表的时候就不用自己去实现诸如节点的插入、删除、遍历等操作了。当然,Linux也是从2.1.x内核开始才对链表进行了这样的统一,和我们目前看到的样子几乎差不多: 点击(此处)折叠或打开
2016-07-24 11:00:38 610 1
原创 Linux 内核通知链随笔【中】
关于内核通知链不像Netlink那样,既可以用于内核与用户空间的通信,还能用于内核不同子系统之间的通信,通知链只能用于内核不同子系统之间的通信。那么内核通知链到底是怎么工作的?我们如何才能用好通知链?内核源代码里随处可见的通知链身影,我们到底该如何理解呢?本片博文过后,您的这些疑问和顾虑将统统消除。 以前有个女神,超凡脱俗、出水芙蓉,不过在怎么滴也是人,是人就会有各种各样的需求,女神
2016-07-24 11:00:35 1009
原创 关于openssl几个API的一点小收获
今天心血来潮突然想搞搞openssl了,趁着端午小假,刚好有空可以鼓捣孤岛自己喜欢的东西,出去东奔西跑的实在太造孽了,还是宅起来给自己充充电吧。下载openssl最新代码1.0.1g,修复了“心血漏洞”那个版本。编译安装那些小儿科的东西就不再浪费笔墨了,如果出现头文件或者库文件之类的错误,请在本人博客里寻找相关文章,应该主要集中在动态库那几篇博文。反正我在自己虚拟机里安装的时候是妥妥滴。
2016-07-24 11:00:33 1739
原创 经典排序算法归纳笔记(4)
前面三篇博文我们分别回顾了冒泡排序、选择排序、插入排序、希尔排序、归并排序、堆排序和快速排序。关于排序算法有几种分类标准,稳定与非稳定、内部与外部。 所谓稳定的排序算法,意思是如果待排序序列有相同元素,经过排序算法处理后他们的相对顺序和排序前在序列里的相对顺序一样,这样我们就称该排序算法是稳定;否则就是非稳定的。 所谓内部排序算法,意思是待排序序列数据量规模较小,排序直接在
2016-07-24 11:00:30 705
原创 经典排序算法归纳笔记(2)
上一篇我们回顾了选择和冒泡排序、以及改进的冒泡排序两种算法,今天我们来看一下插入排序和希尔排序。插入排序 插入排序的本质是将待排序序列分成有序和无序两部分,通常情况下我们都认为序列的第一元素是有序的,所以插入排序一般是从序列的第二个元素(下标是1的位置)开始。插入排序的的思想是:从无序序列里取出一个元素,我们将这个元素叫做哨岗,然后用一个额外的存储单元将其值保存下来,然后再在有序
2016-07-24 11:00:28 383
原创 经典排序算法归纳笔记(1)
除了刚迈出校门找工作那会儿对基本排序算法还算“了然于心”,随着工作和时间的推移,当回头再来看这些基础的不能再基础的东西时,绝大多数人无法写出经典排序算法的核心代码,甚至连算法原理都忘了。我承认,自己就是这样的人,所以今天有空将常见的几种排序算法复习一下,写个笔记。一方面给自己一个“重新做人”的机会,另一方面也欢迎酷爱算法的朋友一起交流分享。 常见的排序算法有选择排序、冒泡排序、插入排序、希
2016-07-24 11:00:25 903 1
原创 从新版本系统调用学习宏定义的用法
这段时间又碰到系统调用这个家伙,结果在我当前用的3.0.x内核里全变样了。为了将这个问题弄明白,还得自己动手才行,这里非常感谢CSDN的"海风林影"兄弟提供的博文和相关参考文献,还是那句话“成果和荣耀归于前辈”。 很多人也都发现,在2.6.28及其之后的内核源码里,系统调用的写法发生了比较大的变化,出现了大量宏定义的代码。在源代码里,以前的诸如open()系统调用的sys_open()
2016-07-24 11:00:22 1136
原创 多媒体技术基础之---色彩空间
上一篇博文里,我们已经了解到图像是如何数字化的,但是关于数字图像的存储和显示问题还没提到,但在了解数字图像的存储和显示之前,我们先得弄明白数字图像里一个让很多人迷糊的概念:色彩空间。有的技术文献里也将其表述为颜色模型、颜色空间等,说的都是同一个东西。 关于色彩空间,我们最熟悉的就是RGB了,即数字图像的每个像素点用3字节表示,每个字节分别表示该像素点红、绿和蓝色的分量
2016-07-24 11:00:19 834
原创 多媒体技术基础之---图像
2012年11月13日,83岁的柯达公司退休工程师布赖斯·拜尔(Bryce Bayer)离开了这个世界,永远离开了我们,离开了爱戴他的人们,而他在数字图像领域的杰出成就不应该就这样被淹没在历史的洪流里,所以,谨以2014年第一篇博文献给伟大的布赖斯·拜尔先生。 图像的历史 根据维基百科的记载,世界上的第一张照片是法国人约瑟夫·尼塞福尔·涅普斯于1826年拍摄完成。182
2016-07-24 11:00:16 1613
原创 "2013":爱你不容易
2013对我来说确实像年初时曾给自己定义的那样,真的是非常不平常的一年。依稀记得去年年终时,BOSS和我深聊了1多钟头,谈到职业规划、人生还有家庭的林林种种。春节在家时也仔细考虑过2013自己该如何规划,现在站在2013的尾巴上回顾这一年的时候,虽然没有严格按照预定的计划进行开展,但在BOSS和领导们的悉心指点和安排下,自己的收获和成长还是挺不少,也同时有了颇多的感悟和心得: 1、工作
2016-07-24 11:00:14 897
原创 谈谈Linux下动态库查找路径的问题
学习到了一个阶段之后,就需要不断的总结、沉淀、清零,然后才能继续“上路”。回想起自己当年刚接触Linux时,不管是用源码包编译程序,还是程序运行时出现的和动态库的各种恩恩怨怨,心里那真叫一个难受。那时候脑袋里曾经也犯过嘀咕,为啥Linux不弄成windows那样呢,装个软件那个麻烦不说,连运行软件都这么恼火呢?如果那样的话就不叫Linux了。借用小米公司CEO雷军一句话:小米,为发烧而生。我认为:
2016-07-24 11:00:11 1137
原创 CentOS6.4完全安装FFmpeg手记
鼓捣媒体的人对FFmpeg应该不会陌生,它不仅功能强大,结构优美,灵活、易扩展,也是很其他多媒体播放器的基础,例如VLC,Mplayer等等,还有好多商业播放器都用了ffmpeg,但这些商业软件却没有遵守GPL公约,所以它们都被钉在了ffmpeg官网的“耻辱柱”上。关于ffmpeg还有一点题外话,那就是有一个叫做libav的开源项目。libav是从ffmpeg分化出来的一个项目,而这个项目诞生的原
2016-07-24 11:00:08 2108
原创 多媒体技术基础之---Come on!来点儿音乐吧
其实要说在Linux系统下播放音乐,确实是一件让人非常抓狂的事情,抛开各种音频格式的商业授权不说,即使提供给你相应的解码库,能玩儿得转的人那又是少之又少。可能有些盆友说ubuntu这方面确实做得不错,一旦默认安装好,几乎不用装任何其他东西,常见的是音频文件都可以正常播放了。因为我天生就有股喜欢折腾的劲儿,所以关于ubuntu确实不怎么感冒,只能说萝卜白菜各有所爱吧。今天我们以wav文件(也就是上一
2016-07-24 11:00:06 743
原创 多媒体技术基础之---重新认识声音
声音一个最基本的常识就是“它是一种能量”,初中物理课上我们也学过声音的三要素分别是音色、音调和响度。 音色:简单理解,就是一种声音的固有特征。比如,电子琴和小提琴发出的声音是有明显区别的,笛子和古筝也有各自的声音特征。有些声音模仿秀的选手可以通过训练,达到模仿不同人或者不同乐器的效果。 音调:也就是我们所说的频率,单位是赫兹Hz,频率越高听起来越刺耳、越尖锐,频率越低听起来越低沉
2016-07-24 11:00:03 1074
原创 深入理解C语言的函数调用过程
本文主要从进程栈空间的层面复习一下C语言中函数调用的具体过程,以加深对一些基础知识的理解。 先看一个最简单的程序: 点击(此处)折叠或打开 /*test.c*/ #include stdio.h>
2016-07-24 11:00:00 2263
原创 Segmetation fault你来的真不是时候
问题是这样的,今天一个简单的C程序,用gcc编译成汇编语言后,本来想在里面改点东西,结果运行时就报了“Segmetation fault”。它丫来的还真不是时候,刚好最近正好烦它呢,谁知自己倒送上门来了。OK,择日不如撞日,今儿就拿你开刀了。 源代码如下: 点击(此处)折叠或打开 /*littletrick.c*/
2016-07-24 10:59:57 1836
原创 Segmentation fault到底是何方妖孽
前两天和阿彬扯淡的时候(注意不是扯蛋),他说自己一个礼拜解决了三个Core dump,华丽丽之极,让我对其敬仰、膜拜之情如滔滔之江水,绵绵不绝。今天我也来谈一下Linux环境下开发时经常遇到的“Segmetation fault”的一点点个人看法,也算是抛砖引玉了。 (备注:我的glibc版本是2.12,GCC版本4.4.6,内核版本2.6.32-279) Linux上开发时最恼火
2016-07-24 10:59:54 14541
原创 一堂课玩转rpm包的制作
常见的Linux发行版主要可以分为两类,类ReadHat系列和类Debian系列,这里我们是以其软件包的格式来划分的,这两类系统分别提供了自己的软件包管理系统和相应的工具。类RedHat系统中软件包的后缀是rpm;类Debian系统中软件包的后缀是deb。另一方面,类RedHat系统提供了同名的rpm命令来安装、卸载、升级rpm软件包;类Debian系统同样提供了dpkg命令来对后缀是deb的软件
2016-07-24 10:59:51 1771
原创 Fedora 17下交叉编译vlc-2.0.6-win32小记
关于编译windows下的vlc网上的教程除了翻译N年前wiki官网的那些蚂蚁文之外,可以说基本没啥参考意义和价值。因为那些都是非常老的版本,0.8.x或者1.x.x,而我这个人有喜欢新鲜事儿,所以就冲着vlc-2.0.6来了。官网最新的是2.0.7,才发布没多久,在新鲜和稳定之间还是选了2.0.6,低一个版本的来调戏调戏。 首先说编译环境,网上很多人在windows下用MINGW+
2016-07-24 10:59:48 476
原创 CentOS6.3快速安装VLC小记
鉴于VLC这个播放器的牛X+V5,在windows下用起来确实很安逸,吃过晚饭突然想在CentOS上也安装一个来耍耍。网上搜罗半天,包括VLC官网都没找到对CentOS的指导教程,最接近的就是Fedora系统了。大家都知道Fedora和CentOS都是一个妈生的,那么它们应该有相同之处吧。顺着这个思路,打开久违的Fedora 16虚拟机,一条yum install vlc下来发现版本竟然是1.x.
2016-07-24 10:59:45 381
原创 下班后...
首先向大家致歉,快1个月没有更新博客了。当然这一篇文章纯粹是吹水的,和技术没啥关系。原因是最近工作上的事儿接踵而至,由于公司战略决策的调整,然后各种规划、各种需求、各种开发、各种测试、各种早会,真想学会“多重影分身术”,一个赚钱,一个学习,一个写博客,一个陪女朋友,那该多好,呵呵。 总的来说,由于种种原因,后期博客可能不能及时更新了,还有前面自己欠下的债,像“文件系统”,“协议栈”,“
2016-07-24 10:59:40 564
原创 时针、分针和秒针是群快乐的好伙伴
最近发现自己好久没有研究过算法了,达尔文坚持进化论,而拉马克则提出“用尽废退”理论。在学术领域我还是比较赞同拉马克的观点。程序设计道理也是一样的,只有多看优秀的代码的,学习优雅的设计框架和思想,经过充分的思考并将其移花接木般应用在自己的程序里才是学习的本质。以前我们的高中老师管这个技能叫做“能力迁移”。 曾经在哪儿看到过一道面试还是笔试题,具体及不太清楚了,当时没多想。这几天它突然从我脑
2016-07-24 10:59:37 991
原创 一个快速将十六进制串转十进制数的方法
今天看到一段将十六进制数的字符转十进制的代码,写得太精妙了。我就又占了前辈们的光,在其基础上扩充了一下,写了个将十六进制字符串转十进制数的接口,和大家分享分享。 点击(此处)折叠或打开 /******************************hex2digit.c****************************
2016-07-24 10:59:34 3421
原创 寻访x86处理器“实模式”和“保护模式”的前世今生
还是把博文“CPU的内部架构和工作原理”里的这个表搬出来,祭奠那些不应该在岁月的洪荒中被淹埋的荣耀: 8086的诞生,标志着Intel 正式进入了x86时代,这是个多么具有纪念意义的日子:1978-6-8。同时,8086的诞生也是处理器内存寻址技术的第一次飞跃。 对于一根实际的、实实在在的、物理的、可看得见、摸得着的内存条而言,处理器把它当做8位一个
2016-07-24 10:59:32 671
原创 CPU的内部架构和工作原理
一直以来,总以为CPU内部真是如当年学习《计算机组成原理》时书上所介绍的那样,是各种逻辑门器件的组合。当看到纳米技术时就想,真的可以把那些器件做的那么小么?直到看了Intel CPU制作流程及AMD芯片的制作流程的介绍不禁感慨,原来科技是如此的发达。 本文我们以Intel为例对CPU的工作原理做简单介绍,仅仅是简单介绍,那么AMD,ARM,MIPS甚至PowerPC你应该会触类旁通才
2016-07-24 10:59:29 6488
原创 戏说文件系统之ext3【上】
今天我们简单聊一哈ext3文件系统。ext3作为ext2的增强版,和ext2使用的superblock、inode、group descriptor等数据结构几乎一模一样,所以ext3前向兼容ext2。在不用备份ext2文件系统数据的情况下,可以用: tune2fs –j/dev/hdName 在不用卸载分区的状态下直接将ext2文件系统转换成ext3文件系统。
2016-07-24 10:59:26 608
原创 戏说文件系统之ext2【续】
通过前面两篇博文,我们对ext2fs应该有了一个宏观上的认识。但是这些所谓的superblock、block、group、group descriptor和ionde等等,它们到底有什么用呢?今天我们简单热个身,来研究一下在一个磁盘分区上如何根据文件的inode号来访问文件的内容? 在我们将某个分区格式化成ext2/ext3文件系统时,block的大小一定是确定的,即使用户没
2016-07-24 10:59:24 594
原创 戏说文件系统之ext2【下】
今天我们来认识一下superblock,inode,block,group,group descriptor,block bitmap,inode table这些家伙。为什么在上一篇博文开篇没详细介绍这些概念呢,因为任何关于文件系统的文章还是书籍一开始都是先说概念、说理论,让人一直有种雾里看花的感觉。纸上得来终觉浅,事必躬亲才印象深,所以我们以一块实际硬盘为例(当然是虚拟出来的,呵呵)来向大家展示
2016-07-24 10:59:21 572
原创 戏说文件系统之ext2【上】
前面说过,虚拟文件系统VFS是对各种文件系统的一个抽象层,抽取其共性,以便对外提供统一管理接口,便于内核对不同种类的文件系统进行管理。那么首先我们得看一下对于一个具体的文件系统,我们该关注重点在哪里。 对于存储设备(以硬盘为例)上的数据,可分为两部分: 用户数据:存储用户实际数据的部分; 管理数据:用于管理这些数据的部分,这部分我们通常叫它元数据(metadata)
2016-07-24 10:59:18 459
原创 硬盘的存储原理和内部架构
本来想写个文件系统的专题,结果发现对硬盘的内部架构和存储原理还是比较模糊,因为不了解“一点”硬盘的存储原理对文件系统的认识老是感觉镜花水月,不踏实。经过搜集整理资料就由了本文的问世。借用Bean_lee兄一句话:成果和荣耀归于前辈。首先,让我们看一下硬盘的发展史:1956年9月13日,IBM的IBM 350RAMAC(Random Access Method of Accounting and
2016-07-24 10:59:13 669
原创 用户空间和内核空间通讯之【Netlink 下】
关于Netlink多播机制的用法 在上一篇博文中我们所遇到的情况都是用户空间作为消息进程的发起者,Netlink还支持内核作为消息的发送方的情况。这一般用于内核主动向用户空间报告一些内核状态,例如我们在用户空间看到的USB的热插拔事件的通告就是这样的应用。 先说一下我们的目标,内核线程每个一秒钟往一个多播组里发送一条消息,然后用户空间所以加入了该组的进程都
2016-07-24 10:59:10 657
原创 用户空间和内核空间通讯之【Netlink 中】
今天我们来动手演练一下Netlink的用法,看看它到底是如何实现用户-内核空间的数据通信的。我们依旧是在2.6.21的内核环境下进行开发。 在文件里包含了Netlink协议簇已经定义好的一些预定义协议: 点击(此处)折叠或打开#define NETLINK_ROUTE 0 /* Routing/device hook */#def
2016-07-24 10:59:08 736
原创 用户空间和内核空间通讯之【Netlink 上】
引言 Alan Cox在内核1.3版本的开发阶段最先引入了Netlink,刚开始时Netlink是以字符驱动接口的方式提供内核与用户空间的双向数据通信;随后,在2.1内核开发过程中,Alexey Kuznetsov将Netlink改写成一个更加灵活、且易于扩展的基于消息通信接口,并将其应用到高级路由子系统的基础框架里。自那时起,Netlink就成了Linux内核子系统和用户态的应用
2016-07-24 10:59:05 816 2
原创 【翻译】动手动脑玩转Web游戏之五:Collada模型、多层创建
<div style="mso-element:para-border-div;border:none;border-top:solid white 2.25pt;padding:5.0pt 0cm 0cm 0cm;background:#BED4EB;mso-shading:windowtext;mso-pattern:solid #BED4EB">使用Collada
2016-07-24 10:59:02 318
原创 【翻译】动手动脑玩转Web游戏之三:人物动起来、敌人出现、自定义视角
<div style="mso-element:para-border-div;border:none;border-top:solid white 2.25pt;padding:5.0pt 0cm 0cm 0cm;background:#BED4EB;mso-shading:windowtext;mso-pattern:solid #BED4EB">让角色动起来<
2016-07-24 10:58:59 465
Visual_C++精彩实例详解.part2.rar
2010-03-23
Visual_C++精彩实例详解
2010-03-23
深入浅出MFC--教你看懂MFC的骨头.part5.rar
2010-03-19
深入浅出MFC--教你看懂MFC的骨头.part4.rar
2010-03-19
深入浅出MFC--教你看懂MFC的骨头.part3.rar
2010-03-19
深入浅出MFC--教你看懂MFC的骨头.part2.rar
2010-03-19
深入浅出MFC--教你看懂MFC的骨头
2010-03-19
仿淘宝网易多用户商城v4.0 asp 源码.part5.rar
2010-03-19
仿淘宝网易多用户商城v4.0 asp 源码.part4.rar
2010-03-19
仿淘宝网易多用户商城v4.0 asp 源码.part3.rar
2010-03-19
仿淘宝网易多用户商城v4.0 asp 源码.part2.rar
2010-03-19
仿淘宝网易多用户商城v4.0 ASP 源码
2010-03-19
动态论坛的PHP 源码
2010-03-19
ASP简单个人网站全站_v1.4(含Ajax版)--源码
2010-03-18
雨虹留言板YHPbook V1.8.1 源码
2010-03-18
HW美国某知名大学计算机博士家庭作业参考答案(仅供参考)
2012-02-09
2011华为编程大赛上机考试参考答案
2011-08-29
设计模式之禅----(全)最诙谐,幽默,有全面的讲解设计模式之作
2010-12-23
个人认为目前最完备的Struts2教程
2010-12-09
java入门普及专题讲座
2010-12-09
实例详解JSP内置对象--response对象
2010-12-09
实例详解JSP内置对象--request对象
2010-12-09
java 学习线路图,一步一步照着认真学下去,不成高手才怪
2010-12-09
第二届“中兴捧月”杯校园程序设计大赛复赛题目
2010-06-10
2010 “中兴捧月”校园程序设计大赛---俄罗斯套娃源码
2010-05-21
Netkeeper for Fedora 电信客户登录端 源码
2010-04-20
Netkeeper for Fedora 电信客户登录端
2010-04-20
Visual_C++精彩实例详解.part5.rar
2010-03-23
Visual_C++精彩实例详解.part4.rar
2010-03-23
Visual_C++精彩实例详解.part3.rar
2010-03-23
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人