
C
文章平均质量分 83
vvuyve
主博客http://www.cnblogs.com/wuyuegb2312/
展开
-
内核线程优先级的设置
接上一篇,能正确启动内核线程,就可以进行进一步的使用了。这里介绍下更改内核线程调度策略和优先级的方法。 个人理解,内核级线程和进程是一样的,前者与POSIX线程(pthread)有很大的区别。因此,内核的进程调度策略和系统调用也适用于内核级线程。 调度策略有三种: 1.SCHED_NORMAL 非实时调度策略,默认情况下是100~139,由nice值决定; 2.SC原创 2013-05-22 21:01:10 · 2886 阅读 · 1 评论 -
《深入理解Nginx》阅读与实践(一):Nginx安装配置与HelloWorld
最近在读陶辉的《深入理解Nginx:模块开发与架构解析》,一是想跟着大牛练练阅读和编写开源代码的能力,二是想学学Nginx优秀的架构设计,三是想找一个点深入下Linux环境下网络编程的细节。读书的时候自然少不了实际地动手,这个系列的博文便是对学习过程的梳理和动手过程的记录。原书对实际动手时遇到的一些已有提及的细节问题不再赘述。原创 2013-08-13 20:29:04 · 1375 阅读 · 0 评论 -
《深入理解Nginx》阅读与实践(二):配置项的使用
以前文的HelloWorld为基础进行修改,将其变成读取nginx.conf配置项并输出的程序。帮助读者理清在读取配置项时,存储用数据结构ngx_http_mytest_conf_t、初值生成方法create_loc_conf()、解析方法数组ngx_command_s[]和合并方法merge_loc_conf()的工作方式和联系。原创 2013-08-14 21:53:57 · 983 阅读 · 0 评论 -
编程实践中C语言的一些常见细节
以《C程序设计语言》(K&R)为主线,把《C语言参考手册》和C99标准作为参考和补充,同时考虑到自身平台,对常见的C语言编程细节进行测试和总结,尽量不涉及过于边缘的内容,力图简洁并正确。原创 2013-09-16 20:29:22 · 2451 阅读 · 0 评论 -
unix的malloc/free函数的简单实现及思考
用于内存管理的malloc/free这对函数,对于使用C语言的程序员应该很熟悉。前段时间听说有的IT公司以“实现一个简单功能的malloc”作为面试题,正好最近在复习K&R,上面介绍了使用UNIX接口的实现,因此花了些时间仔细研究了一下。毕竟把题目做出来是次要的,了解实现思想、提升技术才是主要的。本文主要是对malloc/free实现思路的介绍,蓝色部分文字是在个人思考中觉得比较核心的东西;另外对原创 2013-05-25 12:42:05 · 2149 阅读 · 0 评论 -
《算法设计手册》杂题3道
《算法设计手册》上正文部分提到的一些有趣问题,由于所处位置与其章节关联不大,因此没有整理到之前的博文中。这里的3道问题是:归纳法找递归函数输出、动态数组的时间复杂度、最小堆第k小的元素与给定x的大小关系。原创 2013-10-05 11:24:11 · 1048 阅读 · 0 评论 -
笔试面试中常见的位运算用法
本文是在找工作的准备过程中关于位运算的一些积累和记录的整理。原创 2013-10-10 22:44:18 · 1206 阅读 · 3 评论 -
手把手教你编写一个具有基本功能的shell(已开源)
本文一步一步地教你如何编写一个具有基本功能的shell,特点是由简单到复杂,逐步添加新的特性,注重思路的展示而不是代码的堆砌,因而不会直接呈现一个完善的版本;同时练习相关的Linux的API,有助于破除对shell的神秘感。源码托管在:https://github.com/vvy/wshell原创 2013-11-03 13:12:11 · 2416 阅读 · 0 评论 -
编写一个make
本文介绍如何编写一个简单的make而非如何编写makefile。通过分析makefile的格式提取其中的文件依赖的处理并存放到数据结构,简单介绍了make使用的时间戳,并使用DFS完成是否存在环和是否需要重新编译的判断,从而提供make的基本功能。源代码已托管至https://github.com/vvy/wmake。原创 2013-11-22 17:40:10 · 1025 阅读 · 0 评论 -
二维数组作为函数参数传递剖析(C语言)(6.19更新第5种)
前言 很多文章不外乎告诉你下面这几种标准的形式,你如果按照它们来用,准没错://对于一个2行13列int元素的二维数组//函数f的形参形式f(int daytab[2][13]) {...}//以下两种可以忽略行数f(int daytab[][13]) {...}f(int (*daytab)[13]) {...} 甚至会有人告诉你多维数组作为参数传递原创 2013-06-14 17:17:12 · 1511 阅读 · 0 评论 -
malloc()参数为0的情况
问题来自于《程序员面试宝典(第三版)》第12.2节面试例题9,主要是结合原书代码和解析,讨论malloc(0)的行为,对原书没说清的地方进行补充。原创 2013-07-27 16:25:40 · 1580 阅读 · 0 评论 -
简单的RPC编程实践——HelloWorld的实现
近期课程的作业需要用到RPC编程,除了课堂上学到的知识,还得亲自动手。打算先写个简单的HelloWorld练习一下,顺便复习一下学到的知识。 RPC意为远程过程调用协议(Remote Procedure Call Protocol)。编制好单机应用程序,然后划分为两个或多个程序片,加入通信协议使得每片可以在单独的计算机上运行。从一个程序片调用另一个程序片的过程称为远程过程调用,即RPC。它是原创 2013-05-22 21:00:42 · 834 阅读 · 0 评论 -
红黑树的学习笔记
(学习的参考资料主要是《算法导论》。) 首先是红黑树的性质。一棵二叉查找树满足以下的红黑性质,则为一棵红黑树。 1)每个结点或是红的,或是黑的。 2)根结点是黑的。 3)每个叶结点(NIL)是黑的。 4)红结点的两个孩子都是黑的。 5)对任意结点,从它到其子孙结点所有路径上包含相同数目的黑结点。 初学时并不在意,但是仔细研究相关算法就会知道,算法都是围绕保原创 2013-05-22 21:01:23 · 632 阅读 · 0 评论 -
B-树的学习笔记与C实现
(学习的主要对象是《算法导论》上B-树章节)应用环境: 辅存和主存的矛盾,主存只能维持有限的页数,其他页存于辅存上,使用时调入内存。 B树的定义: 是一个具有如下性质的有根树: (1)每个结点x有以下域: (a) n[x],存放结点x的关键字数; (b) n[x]个关键字本身,以非降序存放; (c) leaf[x],1代表x是叶子,0代表原创 2013-05-22 21:01:26 · 675 阅读 · 0 评论 -
稀疏图上的Johnson算法
距离上一篇中间时间比较长,按照《算法导论》写了一些C语言实现,不过并没有一一贴上来的打算。这个算法融合了Bellman-Ford算法和Dijkstra算法,并且Dijkstra算法本身还使用了优先级数组(可用二项堆或斐波那契堆实现,这里用的是二项堆实现),性能比较好,达到了O(V2lgV+VE)的时间复杂度,在无负权回路图中是最快的,比较有代表性,因此把我参考自《算法导论》写成的C代码放在这里留档原创 2013-05-22 21:01:28 · 872 阅读 · 0 评论 -
以root权限运行自己所编译程序的方法
这几天照着UNP上提供的ping源码编写了一个用来学习。虽然编译后能运行,但由于使用了原始套接字,必须root权限运行,这与和Linux下真实的ping有差别:后者是不需要输入sudo或者切换到#才能运行的。linux中的ping源码没有找到,但是看到oschina上有一例自制的ping源码相似,作者提供的示意图中在$提示符下没有用sudo运行的。总之,希望能够使自己编写的程序以root权限运行而原创 2013-05-22 21:01:48 · 768 阅读 · 0 评论 -
再读UNPv1:复习、实践、小结
前言: 这算是第二次系统地阅读UNPv1,正如副标题,不希望写成书摘、缩写版,尽量多写写个人体会和获得的经验,因此很多地方都会从全书的角度来说明,而不仅仅限于某个章节内部。 SCTP、信号驱动I/O、广播和多播等内容不包括在内。准备工作: 为了适应在命令行界面编写代码,我先进行了vim环境的配置和Xshell的配置。在读书过程中还学习了gdb调试程序的方法(见这里)。(1原创 2013-05-22 21:01:51 · 1209 阅读 · 0 评论 -
内核线程的创建、使用和退出;关于延时宏的补充说明
启发主要来自于http://blog.youkuaiyun.com/newnewman80/article/details/7050090,基本是根据自己的习惯重组的。相关函数:kthread_create():创建内核线程struct task_struct *kthread_create(int (*threadfn)(void *data), void *data, const char原创 2013-05-22 21:01:08 · 696 阅读 · 0 评论 -
[珠玑之椟]位向量/位图的定义和应用
位向量/位图是一个很有用的数据结构,在充分利用小空间存储大量数据方面非常具有优势,Linux内核中很多地方都是用了位图。同时,它不但基础,而且用到了很多编程语言的知识,以及对细节的把握,常常作为面试题出现。这里将要介绍它的实现、操作、应用。 与位图(bitmap)比,我更倾向于用位向量(bit vector),前者比较容易与图形学里的名词混淆,其实提到位图,多指的是“是使用像素阵列来表示的图原创 2013-06-24 16:47:46 · 1314 阅读 · 0 评论 -
优化程序性能的几个方法(来自于《深入理解计算机系统》)
这部分的代码出自《深入理解计算机系统》(CS:APP)第五章,其目的是通过手工改变代码结构,而不是算法效率和数据结构优化,提高执行效率。有些编译器在某些优化选项下可能会做出类似的改动。 为了便于以后的查阅和使用,本文进行了摘录和简要分析,其中包含了一些个人理解。对于更深层次的原理如汇编、处理器结构等请参考原书。 大致地,越靠后的代码性能越好,版本6和7性能近似,版本6略好一些。二者均能原创 2014-04-10 17:44:27 · 1106 阅读 · 0 评论