自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(34)
  • 资源 (22)
  • 收藏
  • 关注

原创 dd命令简介

先简要介绍dd的参数,后边通过几个实例介绍dd的应用,参考了其他网友的资料,在此一并感谢 小菜水平有限文中有什么错误请大家指正,关于dd还有什么好的使用方法,可以贴出来,小菜会及时更新 dd 是 Linux/UNIX 下的一个非常有用的命令,作用是用指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换。 1. 命令简介 dd 的主要选项: 指定数字的地

2013-10-08 23:16:14 646

原创 一个C语言程序被编译的全过程

编译的概念:编译程序读取源程序(字符流),对之进行词法和语法的分析,将高级语言指令转换为功能等效的汇编代码,再由汇编程序转换为机器语言,并且按照操作系统对可执行文件格式的要求链接生成可执行程序。编译的完整过程:C源程序-->预编译处理(.c)-->编译、优化程序(.s、.asm)-->汇编程序(.obj、.o、.a、.ko)-->链接程序(.exe、.elf、.axf等)1

2013-09-22 16:27:10 1628

原创 Linux Socket编程

“一切皆Socket!”话虽些许夸张,但是事实也是,现在的网络编程几乎都是用的socket。——有感于实际编程和开源项目研究。我们深谙信息交流的价值,那网络中进程之间如何通信,如我们每天打开浏览器浏览网页时,浏览器的进程怎么与web服务器通信的?当你用QQ聊天时,QQ进程怎么与服务器或你好友所在的QQ进程通信?这些都得靠socket?那什么是socket?socket的类型

2013-09-12 23:31:32 675

原创 c语言内存泄露示例

存在内存错误的 C 和 C++ 程序会导致各种问题。如果它们泄漏内存,则运行速度会逐渐变慢,并最终停止运行;如果覆盖内存,则会变得非常脆弱,很容易受到恶意用户的攻击。从 1988 年著名的莫里斯蠕虫 攻击到有关 Flash Player 和其他关键的零售级程序的最新安全警报都与缓冲区溢出有关:“大多数计算机安全漏洞都是缓冲区溢出”,Rodney Bates 在 2004 年写道。在可以

2013-08-27 19:57:42 1722

原创 Linux中的工作队列

工作队列(work queue)是Linux kernel中将工作推后执行的一种机制。这种机制和BH或Tasklets不同之处在于工作队列是把推后的工作交由一个内核线程去执行,因此工作队列的优势就在于它允许重新调度甚至睡眠。工作队列是2.6内核开始引入的机制,在2.6.20之后,工作队列的数据结构发生了一些变化,因此本文分成两个部分对2.6.20之前和之后的版本分别做介绍。I、

2013-08-27 18:29:29 579

原创 MAC地址与IP地址绑定策略的破解

1 引言  对“ip地址盗用”的解决方案绝大多数都是采取MAC与IP地址绑定策略,这种做法是十分危险的,本文将就这个问题进行探讨。在这里需要声明的是,本文是处于对对MAC与IP地址绑定策略安全的忧虑,不带有任何黑客性质。    1.1 为什么要绑定MAC与IP 地址    影响网络安全的因素很多,IP地址盗用或地址欺骗就是其中一个常见且危害极大的因素。现实中,许多网络应用是基于

2013-08-26 09:54:23 1143

原创 关于/usr/bin/env

在linux的一些bash的脚本,需在开头一行指定脚本的解释程序,如:#!/usr/bin/env python再如:#!/usr/bin/env perl#!/usr/bin/env zimbu但有时候也用#!/usr/bin/python和#!/usr/bin/perl那么 env到底有什么用?何时用这个呢?脚本用env启动的原因,是因为脚本解释器在li

2013-08-05 16:44:46 960

原创 C语言运算符的优先级

优先级运算符名称或含义使用形式结合方向说明1[]数组下标数组名[常量表达式]左到右 ()圆括号(表达式)/函数名(形参表) .成员选择(对象)对象.成员名 

2013-08-02 11:44:57 701

原创 gcov和lcov代码覆盖率工具

1.GCOV查看arm-linux代码覆盖率 一、           关于gcov工具gcov伴随gcc 发布。gcc编译加入-fprofile-arcs -ftest-coverage 参数生成二进制程序,执行测试用例生成代码覆盖率信息。1、如何使用gcov用GCC编译的时候加上-fprofile-arcs -ftest-coverage选项,链接的时候也加上。fprofi

2013-07-31 17:54:18 2675

原创 等待队列(二)

通过 前一篇文章 的介绍我们队等待队列有了一个比较具体的认识,本文将来分析一下等待队列是如何睡眠一个进程和如何唤醒一个进程的。使用等待队列前通常先定义一个等待队列头:static wait_queue_head_t wq ,然后调用wait_event_*函数将等待某条件condition的当前进程插入到等待队列wq中并睡眠,一直等到condition条件满足后,内核再将睡眠在等待队列wq上的

2013-07-31 14:35:18 678

原创 等待队列(一)

在Linux内核中等待队列有很多用途,可用于中断处理、进程同步及定时。我们在这里只说,进程经常必须等待某些事件的发生。等待队列实现了在事件上的条件等待: 希望等待特定事件的进程把自己放进合适的等待队列,并放弃控制全。因此,等待队列表示一组睡眠的进程,当某一条件为真时,由内核唤醒它们。等待队列由循环链表实现,其元素包括指向进程描述符的指针。每个等待队列都有一个等待队列头(wait queue h

2013-07-31 14:33:38 660

原创 编译Linux内核

内核,是一个操作系统的核心。它负责管理系统的进程、内存、设备驱动程序、文件和网络系统,决定着系统的性能和稳定性。Linux作为一个自由软件,在广大爱好者的支持下,内核版本不断更新。新的内核修订了旧内核的bug,并增加了许多新的特性。如果用户想要使用这些新特性,或想根据自己的系统度身定制一个更高效,更稳定的内核,就需要重新编译内核。本文将以RedHat Linux 6.0(kernel 2.2.

2013-07-31 10:57:13 849

原创 C语言中scanf/fscanf 的%[]和%n说明符的使用方法

标准输入输出函数%[]和%n说明符的使用方法    scanf fscanf,均从第一个非空格的可显示字符开始读起!        标准输入输出函数scanf具有相对较多的转换说明符,它常常作为入门级函数出现在各种教材中。但奇怪的是,[]和n这两种都为c89/c99所规定的标准说明符却鲜少在大多数教材中出现。虽然[]和n说明符的使用频率不及其它说明符,但两者在程序设计中的作用仍然不可小视,

2013-06-19 11:31:20 1744

原创 迪杰斯特拉算法--数据结构

Dijkstra(迪杰斯特拉)算法是典型的最短路径路由算法,用于计算一个节点到其他所有节点的最短路径。主要特点是以起始点为中心向外层层扩展,直到扩展到终点为止。Dijkstra算法能得出最短路径的最优解,但由于它遍历计算的节点很多,所以效率低。  Dijkstra算法是很有代表性的最短路算法,在很多专业课程中都作为基本内容有详细的介绍,如数据结构,图论,运筹学等等。其基本思想是,设

2013-06-18 22:44:07 1081

原创 arping命令

arping是用于发送arp请求到一个相邻主机的工具;arping使用arp数据包,通过ping命令检查设备上的硬件地址。语法:[root@ha01 ~]# arpingUsage: arping [-fqbDUAV] [-c count] [-w timeout] [-I device] [-s source] destination  -f : quit on firs

2013-06-18 16:02:21 1319

原创 汉诺塔--(数据结构)

我的数据结构学习从汉诺塔开始,这个简单的算法我可是整整想了一晚上,现在终于有点明白了,上机单步了几遍,有所了解,,还是写点什么以供以后参考,也希望能对正在学算法的盆友有所裨益······       总得来说汉诺塔就是层叠递归调用的典型例子,一直是利用A—>B  A-->C  B-->C这样的单个步骤。       具体来说,当盘数大于一时,不违背原则下(过程中总是大在下小的在上)

2013-06-18 15:39:09 975

原创 动态切换 Linux 使用的 CPU 数量

动态切换 Linux 使用的 CPU 数量摘要: 由于要测试一些代码,其运行结果会受到多核并行的影响,所以希望能够调整使用的 CPU 数量。网络上之前看到的方法是在内核的启动参数上添加一个 maxcpus,但是如果这样的话每切换一次都要重启一次,是在太麻烦了。想 ...由于要测试一些代码,其运行结果会受到多核并行的影响,所以希望能够调整使用的 CPU 数量。网络上之前看到的方法

2013-06-14 16:23:28 1519 1

原创 指定进程运行的CPU

coolshell最新的文章《性能调优攻略》在“多核CPU调优”章节,提到“我们不能任由操作系统负载均衡,因为我们自己更了解自己的程序,所以,我们可以手动地为其分配CPU核,而不会过多地占用CPU0,或是让我们关键进程和一堆别的进程挤在一起。”。在文章中提到了Linux下的一个工具,taskset,可以设定单个进程运行的CPU。同时,因为最近在看redis的相关资料,redis作为单进程模

2013-06-14 10:42:26 940

原创 perf event

Perf Event 是一款随 Linux 内核代码一同发布和维护的性能诊断工具,由内核社区维护和发展。Perf不仅可以用于应用程序的性能统计分析,也可以应用于内核代码的性能统计和分析。得益于其优秀的体系结构设计,越来越多的新功能被加入Perf,使其已经成为一个多功能的性能统计工具集 。本文将介绍 Perf 在应用程序开发上的应用。  Perf 简介  Perf 是用来进行软件性能

2013-06-12 21:59:32 875

原创 KMP匹配算法

在开发中,经常会遇到在一个字节数组中,查找一个子数组的问题。如果不是字节数组,而是字符串的话,直接通过 string.IndexOf 就可以解决,对于字节数组还是需要做一点功课。 因为字符串比较容易观察,所以,我们首先通过字符串来分析,然后,再在字节数组上实现。 问题:对于一个源字符串 source = "abababaababacb" 来说,查找其中包含子

2013-06-05 10:24:14 690

转载 linux内核的启动流程

Linux内核启动流程 arch/arm/kernel/head-armv.S 该文件是内核最先执行的一个文件,包括内核入口ENTRY(stext)到start_kernel间的初始化代码,主要作用是检查CPU ID, Architecture Type,初始化BSS等操作,并跳到start_kernel函数。在执行前,处理器应满足以下状态: r0 - should be 0 r1

2013-05-23 11:12:01 682

原创 ubuntu 10.04下的配置tftp服务器和开发板上tftp命令的使用方法

ubuntu 10.04下配置tftp服务器:第1步:安装tftp所需的软件。首先需要安装tftp-hpa,tftpd-hpa,前者是客户端,后者是服务程序,在终端下输入 sudo apt-get install tftp-hpa tftpd-hpa,安装tftp-hpa和tftpd-hpa。然后还需要安装xinetd,在终端下输入 sudo apt-get install xinet

2013-05-17 23:00:21 1190

原创 kermit的安装、配置、使用

根据网上查的资料和自己的亲身体验,minicom在linux下确实不好用,有时会不通信,我就碰到了这样的问题,minicom连接不上开发板。所以,根据网友的推荐,使用kermit作为超级终端。安装--------------------------------------    # apt-get install ckermit    修改kermit的配置文件配置

2013-05-17 22:30:46 697

原创 Linux内核定时器函数mktime

Linux源码中的mktime算法解析    我们知道,从CMOS中读出来的系统时间并不是time_t类型,而是类似于struct tm那样,年月日时分秒是分开存储的。    那么,要把它转化为系统便于处理的time_t类型,就需要算法进行转换。    我们都知道我们的公历还是比较复杂的,有大月小月,有闰年非闰年,处理起来会很麻烦。    但是Linux的源代码仅仅用了短短的几行就

2013-05-15 10:31:35 681

原创 linux下的inittab文件

inittab为linux初始化文件系统时init初始化程序用到的配置文件。这个文件负责设置init初始化程序初始化脚本在哪里;每个运行级初始化时运行的命令; 开机、关机、重启对应的命令;各运行级登陆时所运行的命令。基本格式id:runlevels:action:process 其中某些部分可以为空,下面我们逐一介绍。id1~2个字符,配置行的唯一标识,在配置文件中不能重复。r

2013-05-15 09:17:49 701

原创 ubuntu 10.04 配置tftp

第1步:安装tftp所需的软件。首先需要安装tftp-hpa,tftpd-hpa,前者是客户端,后者是服务程序,在终端下输入 sudo apt-get install tftp-hpa tftpd-hpa,安装tftp-hpa和tftpd-hpa。然后还需要安装xinetd,在终端下输入 sudo apt-get install xinetd,安装好xinetd。第2步: 配置相关

2013-05-10 10:18:29 599

原创 硬盘安装ubuntu

1.下载所要安装的ubuntu光盘到本地的一个不用的硬盘分区的根目录下面,将其进行挂在 例如:mount  ubuntu-12.04.1-desktop-amd64.iso /mnt     将挂载后的/mnt/casper/ 目录下面的 initrd.lz 和 vmlinuz 两个文件拷贝到一个硬盘分区的根目录下面2.在原有的linux系统的基础之上修改/boot/grub/grub

2013-05-09 14:59:33 557

原创 静态库和动态库的区别

库从本质上来说是一种可执行代码的二进制格式,可以被载入内存中执行。库分静态库和动态库两种。 静态库和动态库的区别1. 静态函数库    这类库的名字一般是libxxx.a;利用静态函数库编译成的文件比较大,因为整个 函数库的所有数据都会被整合进目标代码中,他的优点就显而易见了,即编译后的执行程序不需要外部的函数库支持,因为所有使用的函数都已经被编译进去了。当然这也会成为他的

2013-05-07 22:50:58 543

原创 Linux包管理器

使用 Linux 系统总是免不了要接触包管理工具。比如,Debian/Ubuntu 的 apt、openSUSE 的 zypp、Fedora 的 yum、Mandriva 的 urpmi、Slackware 的 slackpkg、Archlinux 的 pacman、Gentoo 的 emerge、Foresight 的 conary、Pardus 的 pisi,等等。DistroWatch 针对

2013-05-07 22:47:47 808

原创 mini2440 基于中断的按键驱动

Mini2440 具有6 个用户测试按键,它们都是连接到CPU 的中断引脚。在/linux-2.6.32.2/drivers/char/目录下创建一个新的驱动程序文件mini2440_buttons.c#include #include #include #include #include #include #include #include #includ

2013-04-26 21:52:29 663

原创 调整内核printk的打印级别

有时调试内核模块,打印信息太多了,可以通过修改/proc/sys/kernel/printk文件内容来控制。默认设置是6   4   1   7# cat /proc/sys/kernel/printk7       4       1      7该文件有四个数字值,它们根据日志记录消息的重要性,定义将其发送到何处。关于不同日志级别的更多信息,请查阅syslog(2)联机帮助。上

2013-04-24 16:23:44 11007

原创 linux驱动程序--led(tiny6410)

Tiny6410的linux驱动程序:#include#include#include#include#include#include#include#include#define DEVICE_NAME "tiny6410-led"#define LED_IOC_MAGIC 'l'#define LED_IOCGETDAT _IOR(LED

2013-04-17 10:06:14 851

原创 kprobe和systemtap

内核探测kprobekprobe(内核探测,kernel probe)是一个动态地收集调试和性能信息的工具,如:收集寄存器和全局数据结构等调试信息,无需对Linux内核频繁编译和启动。用户可以在任何内核代码地址进行陷阱,指定调试断点触发时的处理例程。工作机制是:用户指定一个探测点,并把用户定义的处理函数关联到该探测点,当内核执行到该探测点时,相应的关联函数被执行,然后继续执行正常的代码路径

2013-04-09 10:19:46 3879

原创 哈希表

哈希表结构:#include#include#include#define ok 1#define fail 0typedef struct Tnode        {                int data;                struct Tnode *next;        } Node;typedef stru

2013-04-02 10:29:46 514

linux内核源代码情景分析

linux内核源代码情景分析(毛德操)

2014-03-13

一些面试资料

一些相关的面试资料,对于应届生较为有帮助。

2013-09-21

string相关的操作

关于一个字符串截取其中以“/”为分割的最后的一个字符串。

2013-09-11

Linux鸟哥的私房菜

相当经典的linux入门书籍。学习linux必备的参考书。《linux鸟哥的私房菜》

2013-09-03

GIT手册(中文)

git相关的使用手册,非常详细。非常好的文档。

2013-09-02

H-JTAG用户使用手册(中英文)

H-JTAG用户使用手册(中英文)

2013-08-28

firefox os

关于最新的firefox操作系统的一些基本的知识。

2013-07-02

python中文教程

A byte of python.中文教程,高清的非扫描版。

2013-06-13

perf event相关介绍

关于perf event的相关的介绍,以及perf命令的使用方法等等

2013-06-13

数据结构--有向图

数据结构--有向图的深度遍历。打印遍历的过程。

2013-06-09

数据结构--遍历

数据结构C语言当中的深度遍历算法,数据结构

2013-06-08

Linux驱动开发详解(宋宝华)

Linux驱动程序开发详解,作者宋宝华。华清远见培训教材

2013-06-06

程序员面试题(100题)

100道经典的程序员面试试题,包括微软等知名企业。

2013-06-06

串口驱动程序分析

mini2440串口驱动程序分析,以及串口的工作原理。

2013-06-05

算法导论(第二版)

算法导论,机械工业出版社,第二版。高清的

2013-05-31

linux内核API

linux内核当中API函数,高清pdf版本

2013-05-21

mini2440 按键驱动(中断)

mini2440 按键驱动程序 基于中断方式的实现

2013-05-20

Source Insight 3.5

Source Insight 3.0 注册码是SI3US-361500-17409

2013-05-06

LInux C一站式编程

非常好的linux C教程,linux C一站式编程

2013-05-03

Tcp Udp小程序(linux下实现)

tcp和udp实现的聊天程序,在linux下编译和实现

2013-04-28

mini2440按键驱动程序button.c

用混杂设备驱动模型实现的中断mini2440按键驱动程序button.c

2013-04-27

最新yaffs2文件系统源码

截止到2013年4月26日为止最新的yaffs2文件系统源代码

2013-04-26

空空如也

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

TA关注的人

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