自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

lmdyyh5722756的专栏

记录自己的点滴

  • 博客(26)
  • 收藏
  • 关注

原创 linux下socket编程:I/O模型

阻塞IO    缺省状态下,一个套接字建立以后所处的模式就是阻塞IO模式。这种模式比较好理解,直到有数据到达本地系统调用才返回。非阻塞IO    和阻塞IO相对应,不管有没有数据到达系统调用都立即返回。当应用程序采用非阻塞IO模式时,需要使用一个循环操作来不停地测试文件描述符是否可读,这是一个极度浪费CPU资源的操作。IO多路复用    IO多路复用是通过调用selec

2014-01-20 10:24:46 1357 2

原创 fedora17中subversion的安装及常用命令

今天有了想做个个人主页的想法,一大早就上网搜索如何制作一个免费的个人主页,看到有人推荐google app engine,但是有人说这个可能会被墙了,于是就决定还是使用sina的app engine吧!首先到

2014-01-19 10:52:53 1265

原创 linux下用gdb调试core文件

以前用C/C++写程序时,运行时经常会出现错误,而且shell上也会出现“段错误(吐核)”的错误输出,虽然好奇输出的到底是什么意思,觉得可能会不会是输出什么运行时错误信息之类的,就用ls看看目录下是否多了什么文件,可是没有出现什么异样的文件,于是也就没有再深究了。后来看Unix环境高级编程,在介绍Unix信号的时候,书上介绍了当进程收到某些信号的时候,会终止并且会core dump,又看到这个名词

2014-01-18 22:23:12 1839 2

原创 gdb调试中各种常见的命令

一般来说,GDB主要帮忙你完成下面四个方面的功能:         1、启动你的程序,可以按照你的自定义的要求随心所欲的运行程序。         2、可让被调试的程序在你所指定的调置的断点处停住。(断点可以是条件表达式         3、当程序被停住时,可以检查此时你的程序中所发生的事         4、动态的改变你程序的执行环境。

2014-01-18 18:44:49 1048

原创 linux正则表达式处理文本

Linux提供了许多用于文本处理的工具,像sed、awk、perl、python可以自动编辑多个文件,提供了广泛的文本处理能力。

2014-01-18 15:36:31 1054

原创 C指针解析及指针作为参数传递的应用

计算机内存中的每个位置都由一个地址标识,通常,邻近的内存位置合成一组,这样就允许存储更大范围的值,指针就是它的值表示内存地址的变量。指针变量的值并非它所指向的内存位置所存储的值。我们必须使用间接访问来获得它所指向位置存储的值。

2014-01-18 12:59:00 1120

原创 fork()调用中关于缓存区继承而引起的思考

题目:请问下面的程序一共输出多少个“-”?     1    #include      2    #include      3    #include      4    int main(void)     5    {     6      int i;     7      for(i=0; i     8         fork();     9

2014-01-18 00:11:48 1440 4

原创 精简双向链表的插入代码

在一个双向链表中,每个节点都包含两个指针—指向前一个节点的指针和指向后一个节点的指针。如下图所示:其类型声明为:typedef struct Node{   struct Node * prev;   struct Node * next;   int         value;}Node;

2014-01-17 22:00:07 1386

原创 利用二级指针插入和删除单向链表

单链表是一种我们很常见的数据结构,在每一门介绍数据结构的书本中都会详细介绍单链表的结构和性质,单链表由一系列形如下面结构的Node节点组成typedef struct Node{       struct Node *next;      int                   value;}Node;链表最后一个节点的指针字段的值为NULL。通常我们使用一个根指针

2014-01-17 12:58:22 1773 2

原创 Fedora17中systemd系统和服务管理器

systemd 是 Linux 下一个与 SysV 初始化脚本兼容的系统和服务管理器,使用 socket 和 D-Bus 来开启服务,提供基于守护进程的按需启动策略。         为了加速整个系统启动和并行启动更多的进程,systemd 在实际启动守护进程之前创建监听 socket ,然后传递 socket 给守护进程。在系统初始化时,首先为所有守护进程创建 socket ,然后再启动所有

2014-01-17 10:43:04 1651

原创 Fedora运行级别及其虚拟文件系统/proc

在现有的Linux系统中添加新硬件时,你希望知道当前系统的资源配置状态,那么应该如何查看呢?很方便,/proc文件系统中包含了内核关于资源分配的一些信息。

2014-01-16 20:55:26 1155

原创 linux动态链接库和静态库的生成及使用

一个epoll.c源文件,需要经过预处理器,编译器,汇编器和链接器的处理后输出可执行目标文件,然后由加载器把可执行文件加载到内存中执行。预处理器执行头文件和宏定义的简单替换,而编译器和汇编器生成可重定位目标文件(包括共享目标文件),链接器生成可执行目标文件。

2014-01-16 14:31:28 1505

原创 linux面试题[答案自己修订了下](网络,文件系统,OS,基础概念)

自己读了一遍,把里面个别自己觉得错误的地方用[XXXXX]的形式标出,如果觉得不对的地方还请指出!有些题目涉及文件路径的可能不同的版本路径不同,而且文件名也有可能不同。Linux基础(文件,磁盘,分区)1. 在Linux系统中,以 文件 方式访问设备

2014-01-15 12:50:33 3966 2

原创 linux-v0.11中管道的实现之-ring buffer

之前分析了pipe调用后,内核返回的几个数据结构,

2014-01-14 23:52:34 1861 2

原创 linux-v0.11中块数据延迟写磁盘分析

在block_dev.c程序中,主要包括块设备的读写操作,

2014-01-14 19:43:40 1637

原创 Linux文件系统-3个重要数据结构及相互间的关系

每个open调用都导致在用户描述表和内核文件表中分配一个唯一表项。但在内核的索引节点表中,对每个文件只有一个表项。文件项的引用数由于系统调用dup或fork的结果会大于1管道分为两种,无名管道和有名管道,其区别如下:1)无名管道调用pipe创建,有名管道调用open创建;2)只有相关进程,即发出pipe调用的进程的后代才能共享对无名管道的存取,而所有的进程都能按通常的文件许可权,存

2014-01-14 18:07:47 2280 2

原创 NDK中“找不到android.app.Activity的类文件"解决方法

今天跟实验室师兄聊天,得知通过NDK可以用C++给Android开发应用程序,于是下载了adt-bundle-linux-x86-20131030.zip和android-ndk-r9c-linux-x86.tar.bz2的最小版本,两个压缩包直接解压就可以了,JDK我是以前安装的1.7版本的。从网上搜索了一下NDK的入门程序,自己跟着步骤一点点做下去,顺利编译处理.class文件,但是在生成

2014-01-13 23:09:23 4552 1

原创 GNU C中的零长度数组(应用于伙伴系统算法)

在库壳上读了一篇关于Linux内存管理伙伴系统算法实现的文章,coolshell.cn/articles/10427.html,里面有个结构体很让我好奇,struct buddy2 {  unsigned size;  unsigned longest[1]; };(注:在GCC环境下你可以写成longest[0],不占用空间,这里是出于可移植性考虑)第一次看到长度为零的数组:long

2014-01-13 17:34:14 1268

原创 linux内核注释v0.11-超级块、inode索引节点和磁盘块(逻辑块)

linux中所有的设备都被看作是文件,每个文件都关联着一个称作索引节点的数据结构,索引节点以静态形式存在于磁盘上,其形式为struct d_inode ,当内核需要操作索引节点时,会把其对到内存的索引节点struct m_inode 数据结构中。文件的内容改变时需要将内容写到磁盘上,而改变文件内容、改变文件所有者、文件存取权限等时都要将内存中索引节点的内容更新到磁盘上。磁盘索引节点以数组的形式存储

2014-01-12 18:23:18 5031

原创 linux高速缓冲管理中的哈希队列、空闲链表以及延迟写和提前读策略

数据缓冲区高速缓冲在内核启动初始化是被划分成1024、2048块大小的双向链表形式而被内核管理的。同时还有一组哈希队列使得内核可以快速找到所需数据的缓冲块是否在高速缓冲中。一个哑节点free_list标记了空闲链表的头,虽然名字是空闲链表,并不代表链表中的节点都是空闲没有有效数据的节点。当内核需要读取磁盘数据时,首先通过哈希队列查找该磁盘块是否已经在缓冲区中,若在可直接返回,否则从空闲链表头部开始

2014-01-12 16:44:34 2656

原创 fedora17安装retext阅读md文件

由于需要阅读MD文件,于是安装retext,http://sourceforge.net/projects/retext/ ,解压缩后执行./setup install ,出现错误,发现需要python3才能安装,fedora17安装好后自带的python2.7,于是就要重新安装python3。直接执行yum install python3即可安装完毕。然后再执行./setup install

2014-01-11 18:44:51 2183

翻译 A Simple In-Place Algorithm for In-Shuffle 一种简单的原地洗牌算法

只是把这篇文章前3部分翻译了,由于是学通信的,很多计算机术语可能翻译的不对,对文章内容理解偏差也可能会导致翻译错误,若发现,请指正,方便我更正! 1引文 通过把一副牌均分为两半,让后一半交错插入前一半,并且以后一半牌的第一张作为洗牌后的第一张牌的方法可以完成洗牌任务。以2n张牌为例,这种情况下会出现如下的置换(permutation):         i → 2i mod (

2014-01-11 15:27:36 1974

原创 linux进程切换,进程上下文,thread_union数据结构(task_union V0.11)

进程是操作系统中很重要的一个抽象,是对程序的一次执行实例的抽象。每个进程运行在自己的上下中,其上下文包括被进程正文所定义的进程状态、进程的全局用户变量和数据结构、它使用的寄存器的值、存储在它的进程表项的值以及它的用户栈和核心栈的内容。当出现执行中进程发生中断或异常内核会执行中断或异常处理函数,此时若进程运行在用户态下,会发生执行态切换,但内核并不产生或调度其他进程来处理中断或异常。进程切换会发

2014-01-10 22:24:00 3455

原创 fedora17下用gdb和bochs调试linux-0.11内核

买了本赵炯博士>,开始学习内核源代码,首先就是动手搭建实验环境,所用操作系统为fedora17,首先下载安装bochs,root下用yum search bochs查看一下是否有bochs相关的安装包,发现有,则执行yum install bochs.i686,安装完毕。然后 根据www.oldlinux.org/oldlinux/viewthread.php?tid=3878中的步骤测试了htt

2014-01-10 14:41:58 1663

转载 extern C的影响编译器生成的符号表

extern "C"的主要作用就是为了能够正确实现C++代码调用其他C语言代码。加上extern "C"后,会指示编译器这部分代码按C语言的进行编译,而不是C++的。由于C++支持函数重载,因此编译器编译函数的过程中会将函数的参数类型也加到编译后的代码中,而不仅仅是函数名;而C语言并不支持函数重载,因此编译C语言代码的函数时不会带上函数的参数类型,一般之包括函数名。     这个功能十分有用处

2014-01-09 21:37:01 1841

原创 boost::noncopyable以及空基类在编程中的应用

今天开始学习muduo C++ 网络库>>,下载了书中在Github中的源代码,就好奇的开始阅读源代码,在/muduo/net/Socket.h中看到一个继承体系,class Socket : boost::noncopyable;看到boost::noncopyable后,首先想到Effective C++中曾经提到过,于是翻开书第6条款:若不想使用编译器自动生成的函数,就该明确拒绝。其中的一个

2014-01-09 10:35:54 1409

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除