Not Only Algorithm,不仅仅是算法,关注数学、算法、数据结构、程序员笔试面试以及一切涉及计算机编程之美的内容 。。
你的位置:NoAlGo博客 »  2014年10月归档

CJSON

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它易于人阅读和编写,同时也方便机器解析和生成,成为一种理想的数据交换语言。
CJSON是一个用c写的JSON解析器,它非常小巧,只有单个文件,使用起来非常方便,本文将简单介绍CJSON的使用方法。

继续阅读»

Linux内核红黑树原理与使用

红黑树(Red-Black Tree,RBT)是一种平衡的二叉查找树,前面的红黑树原理与实现这篇文章中详细介绍了红黑树的细节。在Linux的内核源代码中已经给我们实现了一棵红黑树,我们可以方便地拿过来进行使用。
本文将参考Linux内核的源码和文档资料,介绍Linux内核中红黑树的实现细节及使用方法。

继续阅读»

do {…} while(0)

do {…} while(0)是很多项目,比如Linux内核源代码,中经常遇到的代码,表面上看毫无意义,但其中包含了一个巧妙的编程技巧。
本文将对这个问题做一个简单的分析。

继续阅读»

红黑树

二叉查找树可以方便地维护一个动态集合,实现快速的添加、删除以及查询操作。但仅仅当树的高度较低时执行速度较快,当树的高度增加甚至变得极度不平衡时,各种操作的性能急剧下降。红黑树(Red-Black Tree,RBT)是一种平衡的二叉查找树,能在最坏情况下仍然获得较好的时间复杂度。目前C++ STL中包括set、multiset、map、multimap等多种数据结构内部都使用了红黑树或者其变体进行实现。
本文参考算法导论中红黑树章节,将详细介绍红黑树的原理及其在C/C++中的具体实现代码。注意,红黑树的思想及实现跟普通的二叉查找树关系非常大,如果你对二叉查找树还不是非常熟悉,建议先阅读此文:二叉查找树 http://noalgo.info/603.html

继续阅读»

Debian下编译Linux内核

内核是操作系统的核心,负责管理系统的进程、内存、设备驱动程序、文件和网络系统,决定着系统的性能和稳定性。但是系统默认的内核可能带有许多我们并不需要的特性,或者需要的特性而又不支持,这时我们可以自己手动编译安装一个新的内核,完全定制一个专属的内核版本。
本文将介绍在Debian下编译Linux内核的方法。

继续阅读»

Debian的U盘安装及SecureCRT登录

Debian是开源操作系统Linux的一个发行版,而且历史最悠久的的非商业社区发行版,是最具有影响力的Linux发行版,目前仍然活跃的发行版中很大一部分是基于Debian的。而SecureCRT是一款支持SSH的终端仿真程序,是非常流行的在Windows下登录UNIX或Linux服务器主机的软件。
本文主要通过实际操作讲解如何使用U盘启动来安装Debian操作系统,并介绍之后如何使用SecureCRT进行登录。这里的操作并不是对Debian才有效,对其他的发行版也可以类似进行。

继续阅读»

短链接算法实现

短链接由于微博的流行变得应用非常广泛,短连接简单来说就是把一个很长的URL地址转化为相对简短的地址而且仍然可以正常使用,如把地址http://noalgo.info/转化为http://t.cn/R74gDvp,当然我这里本来就比较短,不过对于再长的地址也是转化成为相同长度的短链接。
本文将介绍短链接的简介及生成的算法原理,最后提供一个C++版本的短链接生成代码。

继续阅读»

二叉查找树

二叉查找树(binary search tree,又叫二叉搜索树或者二叉排序树)是一种非常重要的数据结构,许多高级树结构都是二叉查找树的变种,例如AVL树、红黑树等,理解二叉查找树对于后续树结构的学习有很好的作用。同时利用二叉查找树可以进行排序,称为二叉排序,也是很重要的一种思想。
本文主要参考算法导论,详细介绍二叉查找树的原理及具体的C++代码实现。

继续阅读»

MD5算法原理及实现

MD5(Message Digest Algorithm 5,消息摘要算法第五版)是计算机安全领域广泛使用的一种散列函数,经MD2、MD3和MD4发展而来,可以用于保护信息传输的完整一致性。本文将介绍MD5算法的原理及C++实现,并简单介绍其应用场景。
注意,虽然MD5算法是不可逆的,但是目前其已经被破解了,不再是认为安全的,因为通过多次尝试并进行对比,可能可以得到一个MD5刚好是给定MD5值的串,通过特殊的方法可以加速这种尝试,从而在较快的时间内对其进行破解。

继续阅读»

C/C++变长参数的原理与实现

C/C++语言可以支持参数个数可变及参数类型不定的函数,虽然实际编程中用到的可能不多,但深入研究下其细节还是有点意思的。
本文将主要介绍C/C++变长参数的原理与实现。

继续阅读»

我的博客

NoAlGo头像编程这件小事牵扯到太多的知识,很容易知其然而不知其所以然,但真正了不起的程序员对自己程序的每一个字节都了如指掌,要立足基础理论,努力提升自我的专业修养。

站内搜索

最新评论