摘要:
修改默认opensuse12.3的默认启动项目(grub2)。vim /boot/grub2/grubenv里面有一条:saved_entry=openSUSE 12.3修改为saved_entry=Windows 7即可=后边的内容与grub启动界面的需要默认启动的条目一样修改默认启动等待时间:... 阅读全文
摘要:
最大堆是一种很有用的数据结构,它是一颗完全二叉树,并且如果一个节点有儿子节点,其关键字都不小于其儿子节点的关键字。(最小树反之:节点值不大于儿子节点的完全二叉树。) 最大堆使用的一个典型的地方就是找出无序数字中,最大的一个数字。比如100亿整数中找出最小的前100个数字,典型的解决方案之一就是... 阅读全文
摘要:
这里给出二叉树三种遍历方式的迭代实现代码。二叉树的递归实现使用系统栈入栈出栈,而非递归的迭代实现方法就是手动维护一个栈,来模拟递归的入栈出栈过程。 本文没有给出用户栈的代码,如果需要结合上篇的测试代码一起测试,则需要自己实现自己的栈,以及基本的pop、push等栈操作函数。 前序迭代遍历: ... 阅读全文
摘要:
在上一篇:二叉树基本操作 中,我们描述了二叉树的递归遍历函数。在这里主要是给出这些函数的测试代码,为了测试更加方便,我们实现了三个新的函数:建立二叉树、统计二叉树叶子节点数量、统计二叉树总节点数量。(二叉树的定义用上篇文章中的定义) 二叉树建立: 1 tree_pointer create_b... 阅读全文
摘要:
二叉树是最常见最重要的数据结构之一,它的定义如下: 二叉树(binary tree)是有限多个节点的集合,这个结合或者是空集,或者由一个根节点和两颗互不相交的、分别称为左子树和右子树的二叉树组成。 二叉树最基本的操作是遍历:一般约定遍历时左节点优先于右节点,这样根据根节点的遍历顺序可分为三种... 阅读全文
摘要:
Android应用调试时没有stdout和stderr的输出,网上看到的解释都是下面这个样子:#################################################Android系统在默认情况下,将stdout和stderr(Java中的System.out 和 System.err)重定向到/dev/null。如果一个进程运行了 Dalvik VM,那么就可以把上面两个输出拷贝到日志文件中去,这种情况下,系统会把stdout和stderr输出到标签为“stdout”和“stderr”的日志中。具体做法如下:$ adb shell stop$ adb shell s 阅读全文
摘要:
python 转换编码 GB2312_to_utf-8 阅读全文
摘要:
linux下面每个进程会维护一个printf/scanf的缓冲区。 以printf为例,调用printf的时候,当缓冲区满,或者带有'\n'时,才会输出(当然程序退出是即使没有这两个条件也输出)。 除此之外,当遇到scanf调用时,也会先刷新缓冲区,printf调用中的内容就会被输出。 最后,可以调用fflush函数强制刷新缓冲区来输出缓冲区中的内容。 在多线程程序中尤其值得注意,fork时,缓冲区也被fork,要是之前缓冲区没有被刷新过的话,缓冲区中的内容依然存在,在子进程中再次调用printf就会出现自己不想要的输出。 阅读全文
摘要:
离上篇一个简单的IPmsg程序源码分析(一)已经基本半个月(上篇最初发布在点点上面,后边纠结了一下还是选择了博客园),利用空闲的时间终于把源码的构架和一些细节基本都搞清楚了,总的来说是很简单的一个客户端。所以就只用这一篇文章全部说明吧。 整个程序的核心是几个全局变量: 1 typedef struct filenode filenode; 2 3 typedef struct command 4 { 5 unsigned int version; 6 unsigned int packetNo; 7 char senderName[NAMELEN]; 8 ... 阅读全文
摘要:
前段时间把IPmsg协议自己翻译了一遍,虽然对最新协议理解了不少,但是质量惨不忍睹。好在友人找到一个日语八级的朋友相助,总算把协议弄出了个样子。于是着手开始之前找到的一个IPmsg程序的源码分析,源码来自这里。这是一个功能很简单的linux下面的IPmsg客户端。命令行操作,完成了IPmsg的消息,文件和文件夹的传送功能,与windows下面的其他客户端经验证基本兼容,只有收文件夹的时候有一些问题(同是linux平台则没有问题)。基本操作方式如下:12"Commands: help(h) list(ls) talk(tk) sendfile(sf)\n"\"Com 阅读全文