
编程笔记
文章平均质量分 68
kernel_learner
这个作者很懒,什么都没留下…
展开
-
关于死锁产生的原因以及解决的办法
事实上图灵已经证明死锁问题无法避免(当然包括数据争夺),只能尽可能地减小死锁的发生死锁和数据争夺只能尽量避免一般来说,如果系统资源充足,进程的资源请求都能够得到满足,死锁出现的可能性就很低,否则就会因争夺有限的资源而陷入死锁。另外死锁有4个必要条件(要发生缺一不可) (1) 互斥条件:一个资源每次只能被一个进程使用。 (2) 请求与保持条件:一个进程因请求资源而阻转载 2012-03-09 11:05:03 · 1972 阅读 · 0 评论 -
Android应用中的组件功能简介
Android应用通常由一个或者多个组件组成,这些组件包括Activity,Service, BroardcastReceiver, ContentProvider等 Activity是Android应用中负责与用户交互的组件,为用户提供可视化的用户界面,如果应用需要多个用户界面,那么这个应用就需要多个Activity,多个Activity一起组成Activity栈,当前活动的Activi原创 2012-12-27 10:53:28 · 1283 阅读 · 0 评论 -
使用find和xargs完成查找任务
在使用find命令的-exec选项处理匹配到的文件时,find命令将所有匹配到的文件一起传递给exec执行。不幸的是,有些系统对能够传递给 exec的命令长度有限制,这样在find命令运行几分钟之后,就会出现溢出错误。错误信息通常是“参数列太长”或“参数列溢出” 。这就是xargs命令的用处所在,特别是与 find命令一起使用。find命令把匹配到的文件传递给 xargs命令,而xargs命令转载 2012-06-06 12:52:14 · 953 阅读 · 0 评论 -
C调试方法之--------Gprofile
一、GProfile简介 GProfile是gcc的一个工具,用于对应用程序的测试。 GProfile可以分析出函数的调用次数、函数的调用关系以及函数消耗的时间。 二、GProfile原理 在编译和链接你的程序的时候,gcc 在你应用程序的每个函数中都加入了一个名为mcount ( or "_mcount" , or "__mcount" , 依赖转载 2012-05-11 12:00:09 · 4162 阅读 · 0 评论 -
UPnP协议学习
UPnP协议具有下述特色: 1. 以网络为应用环境,不考虑“孤岛”中的计算机。 2. 以TCP/IP和整个Internet为基础。这样是“中立”的,不依附于任何操作系统或应用程序,不使用特定的API函数,不受程序设计语言的局限。可以无缝地接入传统网络。 3. 设备可以动态地进入网络中,随后获得IP地址,“学习” 或查找自己应当进行的操作和服务的信息;“感知”别的设备是否存在以转载 2012-05-03 09:27:15 · 2035 阅读 · 0 评论 -
IGMP技术总结(2)
5. 组播模型分类 根据接收者对组播源处理方式的不同,组播模型分为以下三类:· ASM 模型:Any-Source Multicast,任意信源组播在ASM 模型中,任意一个发送者都可以作为组播源向某组播组地址发送信息。众多接收者通过加入由该组播组地址标识的组播组以获得发往该组播组的组播信息。在ASM 模型中,接收者无法预先知道组播源的位置,但可以在任意时间加入或转载 2012-04-26 14:19:35 · 2698 阅读 · 0 评论 -
转:IGMP技术总结(1)
1. IGMP 简介 IGMP 是Internet Group Management Protocol(互联网组管理协议)的简称。它是TCP/IP 协议族中负责IP 组播成员管理的协议,用来在IP 主机和与其直接相邻的组播路由器之间建立、维护组播组成员关系。 IGMP 的版本到目前为止,IGMP 有三个版本:· IGMPv1(由RFC 1112 定义)转载 2012-04-26 14:06:21 · 1230 阅读 · 0 评论 -
SQLite适用的范围
SQLite不同于其他大部分的SQL数据库引擎,因为它的首要设计目标就是简单化:易于管理易于使用易于嵌入其他大型程序 易于维护和配置 许多人喜欢SQLite因为它的小巧和快速。但是这些特性只是它的部分优点,使用者还会发现SQLite是非常稳定的。出色的稳定性源于它的简单,越简单就越不容易出错。除了上述的简单、小巧和稳定性外,最重要的在于SQLite力争做到简单化。 简单化转载 2012-03-15 14:24:37 · 718 阅读 · 0 评论 -
敏捷宣言及其遵循的原则
敏捷宣言:个体和交互 胜过 过程和工具可以工作的软件 胜过面面俱到的文档客户合作 胜过合同谈判响应变化 胜过遵循计划敏捷所遵循的原则1、我们最优先要做的是通过尽早的、持续的交付有价值的软件来使客户满意;2、即使到了开发的后期,也欢迎改变需求。敏捷过程利用变化来为客户创造竞争优势;3、经常性的交付可以工作的软件,交付的间隔可以从几个星期到几转载 2012-03-13 21:51:47 · 810 阅读 · 0 评论 -
Gnu make的执行过程
make的执行过程如下:1. 依次读取变量“MAKEFILES”定义的makefile文件列表2. 读取工作目录下的makefile文件(根据命名的查找顺序“GNUmakefile”,“makefile”,“Makefile”,首先找到那个就读取那个)3. 依次读取工作目录makefile文件中使用指示符“include”包含的文件4. 查找重建所有已读取的makefile文件转载 2012-03-13 09:03:59 · 1167 阅读 · 0 评论 -
ptrace原理与使用(1)
你想过怎么实现对系统调用的拦截吗?你尝试过通过改变系统调用的参数来愚弄你的系统kernel吗?你想过调试器是如何使运行中的进程暂停并且控制它吗? 你可能会开始考虑怎么使用复杂的kernel编程来达到目的,那么,你错了。实际上Linux提供了一种优雅的机制来完成这些:ptrace系统函数。 ptrace提供了一种使父进程得以监视和控制其它进程的方式,它还能够改变子进程中的寄存器和转载 2012-03-09 11:10:10 · 3898 阅读 · 0 评论 -
gdb使用及原理
1、GDB对于基于GNU系统开发的程序员来说是最基本的东西,必须的。所以这篇学习总结中,不打算包括GDB的一般使用方法。因为这些东西必须是随手拈来的。所以也就不花时间来整理,我只把一些比较高级的应用在这里作一个整理。 2、在编译链接程序时需要使用"-ggdb"选项来生成可供GDB调试用的信息,否则GDB将失去作用,因此GDB和GCC联系的非常紧密。并且当-g和-O开关同时打开时,调试和优化转载 2012-03-09 11:09:42 · 7297 阅读 · 0 评论 -
Linux系统调用简介
操作系统的主要功能是为应用程序的运行创建良好的环境,为了达到这个目的,内核提供一系列具备预定功能的多内核函数,通过一组称为系统调用(system call)的接口呈现给用户。系统调用把应用程序的请求传给内核,调用相应的的内核函数完成所需的处理,将处理结果返回给应用程序,如果没有系统调用和内核函数,用户将不能编写大型应用程序。Linux系统调用,包含了大部分常用系统调用和由系统调用派生出的的函数。转载 2012-03-09 11:06:58 · 1131 阅读 · 0 评论 -
C递归实现单向链表的反转
#include #include //#include /*链表节点存储的数据*/ typedef char ElemType; /*链表节点结构*/ typedef struct LinkListNode { ElemType data; struct LinkListNode * next;转载 2012-03-09 11:06:29 · 2086 阅读 · 0 评论 -
V4L2 Linux驱动简介(2)驱动结构
这篇文章是LWN写V4L2接口的设备驱动系列文章的第二篇。没看过介绍篇的,也许可以从那篇开始看。这一期文章将关注Video for Linux驱动的总体结构和设备注册过程。开始之前,有必要提一点,那就是对于搞视频驱动的人来说,有两份资料是非常有价值的。•TheV4L2 API Specification . (V4L2 API说明)这份文档涵盖了用户空间视角下的API,但在很大程度上,V4翻译 2013-03-13 10:57:00 · 2681 阅读 · 0 评论