2013年8月8日

linux下ping的C语言实现(转)

摘要: 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #include 10 #include 11 #include 12 #include 13 #define PACKET_SIZE 4096 14 #define MAX_WAIT_TIME 5 15 #define MAX_NO_PACKETS 3 16 char sendpacket[PACKET_SIZE]; 17 char recvpacket[P... 阅读全文

posted @ 2013-08-08 17:04 千兵卫博士 阅读(1757) 评论(0) 推荐(0) 编辑

2013年7月8日

Linux内存调试工具初探-MEMWATCH(转)

摘要: C 语言作为 Linux 系统上标准的编程语言给予了我们对动态内存分配很大的控制权。这种自由可能会导致严重的内存管理问题,可能导致程序崩溃或随时间的推移导致性能降级。内存泄漏(即malloc()内存在对应的free()调用执行后永不被释放)和缓冲区溢出(例如对以前分配到某数组的内存进行写操作)是一些常见的问题,它们可能很难检测到。这一部分将讨论几个调试工具,它们极大地简化了检测和找出内存问题的过程1. Memwatch简介Memwatch是C语言的内存检测器。除了检测内存的功能外,它同样可以做其它的一些事情,而我们主要还是在于讲述它的基本功能。如果你真的想要知道所有相关的具体细节,可详细查看头 阅读全文

posted @ 2013-07-08 17:28 千兵卫博士 阅读(528) 评论(0) 推荐(0) 编辑

2013年6月7日

西西吹雪:从程序员到项目经理(一)

摘要: “从程序员到项目经理”,这个标题让我想起了很久以前一本书的名字《从Javascript到Java》。然而,从Javascript到Java充其量只是工具的更新,而从程序员到项目经理,却是一个脱胎换骨的过程。从Javascript到Java,是一个取巧的方法;而从程序员到项目经理,却并无捷径可走,必须从内而外的改变和提升。一.为什么要当项目经理1.问题本质如果我对一个老程序员说:“有必要转项目经理啦”,很多人第一反应是“为什么一定要当项目经理?!”,反问很给力,基至会让人哑口无言。但反问成功的结果可能只是使自己麻醉,暂时忘却现实中面临的烦恼和压力,这无异于把头埋进沙子中的鸵鸟。只有理智的分析,才 阅读全文

posted @ 2013-06-07 17:40 千兵卫博士 阅读(279) 评论(0) 推荐(0) 编辑

vector容器与iterator迭代器

摘要: vector容器vector是同一种类型的对象的集合,每个对象都有一个对应的整数索引值。和string对象一样,标准库负责管理存储元素的相关内存。我们把vector称为容器,是因为它可以包含其他对象。一个容器中的所有对象都必须是同一种类型的。使用vector之前,必须包含相应的头文件。#include <vector>using std::vector;vector是一个类模板(classtemplate)。模板允许程序员编写单个类或函数定义,这个类和函数定义可用于不同的数据类型上。因此,我们可以定义保存string对象的vector,或保存int值的vector,又或是保存自定义 阅读全文

posted @ 2013-06-07 16:54 千兵卫博士 阅读(667) 评论(0) 推荐(0) 编辑

2012年12月12日

中文编码

摘要: 经常我们打开外国网站的时候出现乱码,又或者打开很多非英语的外国网站的时候,显示的都是口口口口口的字符, WordPress程序是用的UTF-8,很多cms用的是GB2312。 ● 为什么有这么多编码? ● UTF-8和GB2312有什么区别? ● 我们在国内做网站是用UTF-8编码格式还是GB2312编码格式好? 一. 各种编码的来历 可能很多同学一直对字符的各种编码方式懵懵懂懂,根本搞不清为什么他们有这么多编码。 ANSI编码 其实在很久很久以前,有一群人,他们决定用8个可以开合的晶体管来组合成不同的状态,以表示世界上的万物。他们看到8个开关状态是好的,于是他们把这称为“... 阅读全文

posted @ 2012-12-12 16:58 千兵卫博士 阅读(324) 评论(0) 推荐(0) 编辑

2012年11月28日

双buffer与单buffer

摘要: 在嵌入式平台Linux,主要通过framebuffer来显示UI。FrameBuffer实际上就是嵌入式系统中专门为GPU所保留的一块连续的物理内存,LED通过专门的总线从framebuffer读取数据,显示到屏幕上。根据系统中framebuffer的数量,可以分成单buffer和双buffer两种。单buffer:CPU往framebuffer上写,LED从framebuffer读,这是两个同时进行的过程,需要在时间上配合,否则会出现问题。如果CPU往framebuffer上写的速度>LED从framebuffer读的速度,那么就有可能出现LED在一行一行的读取前一屏数据的时候,CPU 阅读全文

posted @ 2012-11-28 15:27 千兵卫博士 阅读(753) 评论(1) 推荐(0) 编辑

2012年8月31日

inittab文件介绍

摘要: init进程是系统中所有进程的父进程,init进程繁衍出完成通常操作所需的子进程,这些操作包括:设置机器名、检查和安装磁盘及文件系统、启动系统日志、配置网络接口并启动网络和邮件服务,启动打印服务等。Solaris中init进程的主要任务是按照inittab文件所提供的信息创建进程,由于进行系统初始化的那些进程都由init创建,所以init进程也称为系统初始化进程。 下面具体说明inittab文件的格式。 inittab文件中每一记录都从新的一行开始,每个记录项最多可有512个字符,每一项的格式通常如下:id:rstate:action:process,下面分别解释。 1.id字段是最多4个.. 阅读全文

posted @ 2012-08-31 13:19 千兵卫博士 阅读(1755) 评论(0) 推荐(0) 编辑

2012年8月23日

DBus在Hi3515中的移植

摘要: 1.基础环境:虚拟机:VMware Workstation8 操作系统:Ubuntu12.04 交叉编译工具 arm-hismall-linux以下为需要安装的库:DBus版本:1.6.4 glib版本:2.32.4 libxml2版本:2.6.8 gettext版本:0.18其中glib与gettext直接运行./configuire、make、make install进行安装DBus需要libxml2动态链接库的支持,所以libxml2需要交叉编译 ./configure --host=arm-hismall-linux 、make、 make install 来安装可能遇见的问题:... 阅读全文

posted @ 2012-08-23 17:10 千兵卫博士 阅读(6139) 评论(0) 推荐(0) 编辑

2012年8月9日

详解LMA(装载内存地址)与VMA(虚拟内存地址)

摘要: 关于LMA和VMA,这个问题,有点点小复杂,不过,此处,我会把我的理解,尽量通过通俗的方式解释出来,以方便理解。当然,鄙人水平有限,难免有错,希望各位批评指正。一般提及LMA和VMA,多数情况都是和ld,链接器相关的。在了解这两个名词的详细含义之前,有些基本知识和前提要说一下:1。从你写的源代码到执行你的程序,一般经历了这几个过程:源代码编辑 -> 编译 -> 链接 -> 装载 -> 执行2。编译,简单说就是用编译工具,将你的源码,变成可以执行的二进制代码,也叫做目标文件,当然只是对应某一种硬件平台,比如此处我用的是Intel的X86系列的CPU,编译出来的,就是针对X 阅读全文

posted @ 2012-08-09 13:33 千兵卫博士 阅读(1397) 评论(0) 推荐(0) 编辑

2012年8月8日

tmpfs介绍

摘要: 如果我必须一下子说清楚 tmpfs,我会说 tmpfs 就象虚拟磁盘(ramdisk),但不一样。象虚拟磁盘一样,tmpfs 可以使用您的RAM,但它也可以使用您的交换分区来存储。而且传统的虚拟磁盘是个块设备,并需要一个 mkfs 之类的命令才能真正地使用它,tmpfs 是一个文件系统,而不是块设备;您只是安装它,它就可以使用了。总而言之,这让 tmpfs 成为我有机会遇到的最好的基于 RAM 的文件系统。tmpfs 和 VM 让我们来看看 tmpfs 更有趣的一些特性吧。正如我前面提到的一样,tmpfs既可以使用 RAM, 也可以使用交换分区。刚开始这看起来可能有点武断,但请记住tmp... 阅读全文

posted @ 2012-08-08 11:10 千兵卫博士 阅读(483) 评论(0) 推荐(0) 编辑

导航